[OS] 16장: Segmentation

2024. 6. 28. 01:28·🖥️ Computer Science/Operating System

16장: Segmentation

개요

세그먼트 = 임의의 길이의 연속된 주소 공간
여기서는 Code, Heap, Stack을 세그먼트라 침
주소변환 - 세그먼트 테이블

  • 물리 공간에 배치할 때, 세그먼트 단위로 배치함

    • 즉, 세그먼트마다 Base/Bounds 레지스터 필요

      → 일반화 Base/Bounds 기법

  • 하나의 프로세스는 여러 개의 세그먼트로 구성됨

세그먼트 주소 변환

물리주소 = OffSet + Base

OffSet = 세그먼트 내에서의 위치

가상 주소 공간에서 코드,힙,스택 별로 세그먼트가 있는데

그 세그먼트 시작 지점에서의 위치로 Offset을 따짐

Heap 주소 인코딩

4200 번지의 세그먼트에서 인코딩하기

4200 = 4096 + 104

⇒ 01 | 0000 0110 1000

Stack 주소 인코딩 (반대)

스택은 거꾸로 자라기 때문에,
추가 하드웨어가 필요함

세그먼트의 주소 증가 방향을 표시해줘야 함

  • 1이면 긍정적 (아래로)
  • 0이면 부정적 (위로)

Offset 계산

Offset - 최대 세그먼트 크기

ex) 15K 번지 = 11 1100 0000 0000

  • 세그먼트 = 11
  • offset = 1100 0000 0000 (3KB)
  • 방향 = 0 (스택, 위로)

물리주소 = 28K + (3K - 4K) = 27K

공유 지원

프로세스들이 세그먼트를 공유할 수 있음
보호비트 필요 (접근 권한 표시)

퀴즈

  1. Segment는 무엇인가 ?
    = 11
  2. Offset은 무엇인가 ?
    14KB = 14 * 1KB = 2^4 + 2^10 = 11 1000 0000 0000
    2K 임
  3. Direction은 어떻게 되는가 ?
    위로 진행 = Negative
  4. 물리 주소는 어떻게 되는가 ?
    28K + 2K - 4K = 26K

세그먼트 문제점

  • 잦은 할당과 회수로 인해 외부 단편화 발생

    → 압축을 통해 해결 가능

저작자표시 (새창열림)

'🖥️ Computer Science > Operating System' 카테고리의 다른 글

[OS] 18장: 메모리 가상화의 Paging  (0) 2024.06.30
[OS] 17장: Free-Space Management  (0) 2024.06.29
[OS] 15장: 주소 변환의 원리  (0) 2024.06.27
[OS] 13장: Memory Virtualization  (0) 2024.06.26
[OS] Cuncurrency: 동시성 개요  (0) 2024.05.06
'🖥️ Computer Science/Operating System' 카테고리의 다른 글
  • [OS] 18장: 메모리 가상화의 Paging
  • [OS] 17장: Free-Space Management
  • [OS] 15장: 주소 변환의 원리
  • [OS] 13장: Memory Virtualization
kyxxn
kyxxn
컴퓨터공학을 좋아하는 대학생의 공부 일기
  • kyxxn
    컴공 학부생의 공부 일기
    kyxxn
  • 전체
    오늘
    어제
    • 분류 전체보기 (156)
      • 📱 iOS (64)
        • Xcode (10)
        • Swift (17)
        • Swift Concurrency (12)
        • UIKit (21)
        • SwiftUI (0)
      • 🖥️ Computer Science (57)
        • 🏛️ Software Architecture Pa.. (2)
        • 👨🏻‍🎨 Design Pattern (3)
        • Data Structure (4)
        • Algorithm (10)
        • Computer Architecture (4)
        • Operating System (19)
        • Network (15)
      • ✍🏻 회고록 (9)
      • 🎸 기타 (25)
        • 해커톤 (1)
        • git (6)
        • 세미나 (1)
        • 책을 읽고 (1)
        • AOS, Kotlin (6)
        • Reinforcement Learning (9)
  • 블로그 메뉴

    • 링크

      • 깃허브
      • 일상 블로그
    • 공지사항

    • 인기 글

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    kyxxn
    [OS] 16장: Segmentation
    상단으로

    티스토리툴바