일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 추상화
- 컴퓨터구조
- 백준
- Algorithm
- 페이지 대치
- 동기화
- 페이징
- PYTHON
- 운영체제
- 교착상태
- 우선순위
- fork()
- 스케줄링
- 페이지 부재율
- concurrency
- Oracle
- mutex
- 인터럽트
- ALU
- mips
- 부동소수점
- 세마포어
- 기아 상태
- 알고리즘
- 스레드
- 단편화
- 프로세스
- BOJ
- 가상 메모리
- 트랩
- Today
- Total
봉황대 in CS
[Chapter 8. 메모리 관리 전략] 세그먼테이션 본문
[Chapter 8. 메모리 관리 전략] 세그먼테이션
등 긁는 봉황대 2022. 8. 2. 20:21* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다.
결속 방식에 따른 메모리 경영 기법의 분류
분류 | 공간 크기 | 사상 단위 | 적재 단위 |
분할 방법 | 논리 = 물리 | 전체 프로그램 | 전체 프로그램 |
페이징 / 세그먼테이션 | 논리 = 물리 | 페이지 (세그먼트 기법은 가변 크기) |
전체 프로그램 |
가상 메모리 | 논리 > 물리 | 페이지 | 프로그램 일부 적재 |
세그먼테이션 (Segmentation)
세그먼테이션은 사용자의 메모리에 대한 관점을 그대로 지원해주는 메모리 경영 방식이다.

사용자들에게 메모리는 가변 크기를 가진 structure, 행렬, 테이블, 함수 등의 집합으로 인식되는데
이들 각각을 세그먼트라고 부른다.
프로그램이 컴파일될 때 입력 프로그램을 반영하여 컴파일러가 자동으로 다음의 세그먼트를 생성한다.
- 코드 (텍스트)
- 전역 변수
- 메모리 할당을 위한 heap
- 스레드를 위한 stack
- 표준 C 라이브러리
- 컴파일 타임에 링크되는 라이브러리 등
로더(loader)는 생성된 세그먼트를 받아서 세그먼트마다 번호를 매기게 된다.
논리 주소는 두 부분으로 구성된다.
1. 해당 세그먼트의 번호
2. 세그먼트 안에서의 변위(offset) : 0 ~ 세그먼트 크기 사이의 값
→ 논리 주소 : <segment-number(s), offset(d)>
세그먼트 테이블
세그먼테이션에서 주소 결속 방식은 페이징과 동일하지만
세그먼트 테이블에는 세그먼트 시작 주소뿐만 아니라 세그먼트의 크기 정보도 필요하다.

세그먼트 테이블은 기준 레지스터와 한계 레지스터의 쌍들로 이루어진 배열이다.
기준(base) 레지스터 : 물리 메모리 상 세그먼트의 시작 주소를 저장
한계(limit) 레지스터 : 세그먼트의 한계값 즉, 길이를 저장
먼저 논리 주소 <segment-number(s), offset(d)>가 주어지면
세그먼트 번호 s를 통해 세그먼트 테이블에 저장되어 있는 해당 세그먼트의 길이를 가져온다.
만약 offset이 세그먼트의 길이를 넘어가지 않는다면 offset에 세그먼트의 시작 주소를 더하여 물리 주소로 변환한다.
반대로 세그먼트의 길이를 넘어선다면 불법적인 메모리 접근으로 간주, 트랩을 발생시킨다.
(예시)

(예시 2)
세그먼트를 공유하는 것을 통해 메모리를 효과적으로 활용할 수 있다.

하지만 세그먼테이션 방법에서는 페이징에서 해결된 외부 단편화 문제가 다시 발생하게 된다.
이에 대한 해결책으로 Paged Segmentation 기법이 있다.
즉, 세그먼트 내에서는 페이징을 사용하는 방식으로, 세그먼트 테이블이 페이지 테이블의 시작 주소를 알려준다.
2단계 페이징 기법과 비슷하며, 바깥 테이블 역할을 세그먼트 테이블이 대신 수행한다고 생각하면 된다.
* MULTICS의 Paged Segmentation

* Intel의 Paged Segmentation

'Computer Science & Engineering > Operating System' 카테고리의 다른 글
[Chapter 9. 가상 메모리] 가상 메모리 (0) | 2022.08.03 |
---|---|
[Chapter 8. 메모리 관리 전략] 분할 방법, 페이징, 세그먼테이션 요악 (0) | 2022.08.03 |
[Chapter 8. 메모리 관리 전략] 페이징 (0) | 2022.08.01 |
[Chapter 8. 메모리 관리 전략] 분할 방법 (0) | 2022.07.31 |
[Chapter 8. 메모리 관리 전략] 주소 결속과 메모리 보호 (0) | 2022.07.30 |