[OS] 9. Virtual Memory - Segmentation System

2022. 4. 19. 17:02· CS/OS
목차
  1. Segmentation system
  2. Segment Map Table(SMT)
  3. Address Mapping(Direct mapping)
  4. Segmentation system  - Memory management
  5. Segment sharing & protection
  6. Segmentation system - Summary

Virtual storage methods

  • Paging system
  • Segmentation system
  • Hybrid paging/segmentation system

Segmentation system

프로그램을 논리적 block으로 분할함 (분할된 블럭: segment)

  • Block의 크기가 서로 다를 수 있음
  • 예) stack, heap, main procedure, shared lib, Etc...

특징

  • 블록의 크기가 다를 수 있기 때문에 메모리를 미리 분할 하지 않음 (Variable Partition Multiprogramming과 유사)
  • Segment sharing/protection이 용이하다. 
  • Address mapping 및 메모리 관리의 Overhead가 큼 (크기가 다르기 때문에 복잡하다..)
  • 내부 단편화가 발생하지 않음 (필요한 만큼 페이지를 잘라서 주기 때문에) (외부 단편화는 발생가능하다)

 

프로세스가 segment 여러개로 나누어져 있는데 크기가 서로 다르다 (논리적으로 분할 했기 때문)

나누어진 segment들은 가상 메모리 시스템 안에 존재한다

필요한 것만 swap device에 유지되는 형태는 paging 시스템과 동일하다

 

Address mapping

  • Virtual address: v = (s , d)
    • s : segment number
    • d : displacement in a segment
  • Segment Map Table (SMT)
  • Address mapping mechanism  (Paging system과 유사)

 

Segment Map Table(SMT)

residence bit: 메모리에 있는지 확인

secondary storage address: swap device에 저장된 주소

segment address in memory: memory에 저장된 주소

segment length: 세그먼트의 길이

protection bits(R/W/X/A): 해당 세그먼트에 프로세스가 가지고 있는 권한을 나타냄

 

Address Mapping(Direct mapping)

page System에서 썼던 direct mapping 방법과 똑같다고 보면 된다. 

vitrual address가 s와 d로 주어짐

  1. 해당 프로세스의 SMT가 저장되어 있는 주소 b에 접근
  2. 해당 SMT에서 segment s에 대한 entry를 찾음 (S의 entry위치 = b+s*entrysize)
  3. 찾아진 entry의 존재를 검사함
    1. Residence bit = 0 (메모리에 없는경우) 실패, swap device에서 해당 segment를 메모리로 적재하고 SMT를 갱신 후 3-2 단계 이후 과정을 수행함
    2. Residence bit = 1인경우, 해당 entry에서 segment 주소번호 As를 확인
    3. 이때 변위(d)가 segment 길이보다 큰 경우(d>ls), segment overflow exception 처리 모듈을 호출
    4. 허가되지 않은 연산일 경우 (protection bit field검사), segment protection exception 처리 모듈을 호출
  4. As와 떨어진 거리 d를 사용하여 실제 주소 r 형성(r = as + d)
  5. 실제 주소 r로 접근하여 주기억 장치에 접근

 

Segmentation system  - Memory management

VPM과 유사함 (Segment 적재시, 크기에 맞추어 분할 후 적재함)

Partition table or State table

 

Segment sharing & protection

논리적으로 분할되어 있어, 공유 및 보호가 용이함

Segmentation system - Summary

  • 프로그램을 논리 단위로 분할(Segment) / 메모리를 동적으로 분할
    • 내부 단편화 문제 없음
    • Segment sharing/protection이 용이함
    • Paging System 대비 관리 Overhead가 큼
  • 필요한 Segment만 메모리 적재하여 활용 (메모리의 효율적 활용)
  • Segment mapping overhead
    • 메모리 공간 및 추가적인 메모리 접근이 필요
    • 전용 HW 활용으로 해결 가능
Paging System Segmentation System
간단함 관리 오버헤드가 큼
오버헤드 적음  
파티션시 logical한 컨셉이 없다 논리적으로 나눔
공유하거나 보호에 복잡하다 관리나 보호가 간단함

 


본 포스트는 KOREATECH의 HPC LAB. Duksu Kim 교수님 OS강의를 기반으로 정리한 내용입니다.

상업적 의도가 아닌 공부한 것을 정리해 놓은 목적으로 게시한 포스트입니다. 

아래의 출처에서 자세한 내용을 수강하실 수 있습니다.

https://www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN


 

'CS > OS' 카테고리의 다른 글

[OS]10. 가상 메모리 관리 - SW components  (0) 2022.04.25
[OS] 10. 가상 메모리 관리 - Cost model, HW components  (0) 2022.04.22
[OS] 9. Virtual Memory - Paging system  (0) 2022.04.17
[OS] 9. Virtual Memory - Non-continuous allocation  (0) 2022.04.15
[OS] 8. 메모리 관리 - Variable Partition Multi-programming  (0) 2022.04.13
  1. Segmentation system
  2. Segment Map Table(SMT)
  3. Address Mapping(Direct mapping)
  4. Segmentation system  - Memory management
  5. Segment sharing & protection
  6. Segmentation system - Summary
'CS/OS' 카테고리의 다른 글
  • [OS]10. 가상 메모리 관리 - SW components
  • [OS] 10. 가상 메모리 관리 - Cost model, HW components
  • [OS] 9. Virtual Memory - Paging system
  • [OS] 9. Virtual Memory - Non-continuous allocation
White Han
White Han
Software Developer
White Han
sudo apt-get happiness
White Han
전체
오늘
어제
  • 분류 전체보기 (195)
    • Language (47)
      • Java (17)
      • Java-Weekly-study (12)
      • Python (18)
    • BackEnd (11)
      • Server (2)
      • Spring (3)
      • Spring Security (0)
      • JDBC (1)
      • NodeJS (2)
      • LINUX (3)
    • DataBase (10)
      • MySQL (5)
      • MongoDB (4)
      • Oracle (1)
    • Infra (4)
      • Docker (4)
    • CS (38)
      • OS (38)
      • 아키텍쳐 (0)
    • Problem Solving (79)
      • Algorithm (8)
      • CT-Java (30)
      • CT-Python (41)
    • IDE (1)
      • eclipse (1)
      • vscode (0)
    • Etc. (3)
      • Git (1)
      • TDD, Refactor, CleanCode (1)
      • Conference (1)
    • 기록 (2)
      • 후기 (1)
      • 프로젝트 회고록 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

  • 방문해 주셔서 감사합니다.

인기 글

태그

  • Java this
  • 프로세스
  • Java Inheritance
  • 자바스크립트 개념
  • 싸피 합격
  • 싸피
  • 자바스크립트 식별자
  • javascript
  • 알파스캔 모니터
  • 운영체제 구조
  • Java super
  • 싸피 후기
  • javascript identifier
  • 자바 inheritance
  • 자바스크립스 식별자 종류
  • 알파스캔 AOC 24B1X
  • 사무용 모니터 추천
  • 사무용 모니터
  • java
  • 자바스크립트
  • 운영체제
  • AOC 24B1X
  • 운영체제 역할
  • SSAFY
  • 프로세서
  • 싸피8기
  • 자바 this
  • OS
  • 자바 super
  • 24인치 모니터 추천

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
White Han
[OS] 9. Virtual Memory - Segmentation System
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.