일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Public
- OS
- 정보처리기사
- 이펙티브 자바
- spring
- package-private
- java
- 메모리
- CS
- github
- 개발
- 컴퓨터과학
- 신입사원
- IT
- 세마포어
- 알고리즘
- 스프링
- 깃
- 스터디
- 컴퓨터공학
- 공채
- Effective Java
- 뮤텍스
- 자바
- 프로그래밍
- 깃허브
- 디지털
- 운영체제
- 우리카드
- 신입
- Today
- Total
주니어 개발자 성장기
Memory Management(메모리 관리) 4 - 세그먼테이션 본문
Segmentation
- 세그먼테이션은 프로세스를 의미 단위로 분할하여 메모리에 적재하는 방식이다.
- Segment는 논리적 단위(Logical Unit)이다.
- 즉, 한 개의 함수, 스택, 힙 등 의미 단위로 분할할 수 있다.
논리적 주소
- 논리적 주소는
segment-number
와offset
으로 구성된다. - 각 프로세스는
Segment table
을 가지며base
와limit
로 구성된다. base
:segment-number
에 해당하는 세그먼트의 물리적 시작점(주소)limit
:segment-number
에 해당하는 세그먼트의 길이
STBR(Segment-table base register)
Segement table
자체의 물리적 주소를 나타내는 레지스터
STLR(Segment-table length register)
- 프로그램이 사용하는 segment의 수를 나타내는 레지스터
주소 변환 중 Trap
위의 그림에서 볼 수 있듯이 세그먼테이션에서 논리적 주소를 물리적 주소로 변환할 때 주로 2 가지를 검증한다.
- 프로세스의
segment-number
이STLR
미만인지 검증 offset
이 limit를 초과하는 지 검증
장점
세그먼트는 의미 단위로 분할되기 때문에 페이징과 비교해서 2 가지 측면에서 장점을 갖는다.
Protection(보안)
각 세그먼트 별로 Read/Write/Execution 권한을 설정할 수 있다. 메모리 공간이 의미 단위로 분할되었기 때문에 가능한 효과
Sharing(공유)
공유할 메모리 부분만을 세그먼트로 분리해서 프로세스간 메모리(세그먼트) 공유가 가능하다.
또한, 실질적인 관점에서 페이징은 일반적으로 페이지 수가 많고 세그먼트는 개수가 적다. 따라서, 세그먼테이션은 페이징에 비해 매핑 테이블에 쓰이는 메모리 용량을 절약할 수 있다.
단점
Allocation(할당)
페이징과 달리 세그먼트의 크기가 균일하지 않기 때문에 외부 단편화 문제가 발생한다.
Paged Segmentation
세그멘테이션 기법은 현실적으로 메모리 관리에 어려움이 있기 때문에 Paged Segmentation 기법을 주로 활용한다.
- Paged Segmentation은 먼저 의미 단위로 세그먼트를 나눈 뒤 각 세그먼트를 다시 페이징으로 분할하는 방식이다.
논리적 주소
- 논리적 주소는
segment-number
와offset
으로 구성된다. segment-table entry
세그먼테이션 기법과는 다르게segement length
와page-table base
로 구성된다.segment length
:segment-number
에 해당하는 세그먼트의 길이로서offset
과 비교한다.page-table base
:segment-number
에 해당하는 세그먼트의page-table
의 물리 주소이다.offset
을 물리 주소로 변환할 때 쓰인다.
장점
Allocation
(외부 단편화) 문제를 최소화하면서도 세그먼테이션이 Protection
과 Sharing
에서 얻는 이점을 취할 수 있다.
주소 변환(Address Binding)의 주체
운영체제 강의라서 오해할 수도 있으나, 주소 변환을 담당하는 주체는 OS가 아니라 하드웨어이다! 주소 변환할 때마다 OS가 개입한다면 오버헤드가 너무 크기 때문이다. 즉, 각 프로세스는 OS를 거치지 않고 하드웨어를 통해 논리적 주소를 물리적 주소로 변환한 뒤 접근한다.
*I/O 장치에 접근할 때는 OS에게 요청한다.
출처
반효경, "운영체제 2014-1", KOCW, http://www.kocw.net/home/cview.do?cid=3646706b4347ef09
'CS스터디 > 운영체제' 카테고리의 다른 글
Memory Management(메모리 관리) 3 - 페이징 (0) | 2024.04.08 |
---|---|
Memory Management(메모리 관리) 2 - 연속 할당 (0) | 2024.04.06 |
Memory Management(메모리 관리) 1 - 주소 바인딩, Swapping, Linking (0) | 2024.04.05 |
Deadlock(교착상태) 조건과 처리 (0) | 2024.04.03 |
Process Synchronization - Monitor (0) | 2024.04.02 |