공부기록
코타쿠
« 2024/11 »
일 |
월 |
화 |
수 |
목 |
금 |
토 |
|
|
|
|
|
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 |
관리 메뉴
공부기록
메모리 분할 - 세그먼테이션 본문
CS/OS
메모리 분할 - 세그먼테이션
코타쿠
2021. 5. 17. 15:01
- 세그먼 테이션
- 사용자 프로그램은 세그먼 테이션 기법을 이용하여 나누어 질 수 있고 프로그램과 그에 관련된 데이터들이 여러 세그먼트로 나누어짐
- 세그먼트의 크기는 각각 다를 수 있다.
- 세그먼테이션의 논리 주소 = 세그먼테이션 번호 + 오프셋
- 동적 할당과의 차이는 세그먼테이션은 하나 이상의 파티션을 차지할 수 있고 연속적일 필요가 없다는 점
- 외부 단편화를 초래할 수 있다. 하지만 프로세스보다 작은 크기로 쪼개지기에 상대적으로 단편화가 적은 편
- 프로그래머가 세그먼트를 지정할 수 있다.
- 프로그래머, 컴파일러는 프로그램과 데이터를 다른 세그먼트로 할당
- 구조적인 프로그래밍을 위해 프로그램, 데이터는 더 세분화 된 여러 세그먼트로 나뉠 수 있다.
- 세그먼트 기법의 단점
- 프로그래머가 세그먼트의 최대 크기를 알고 있어야함
- 논리주소와 물리주소간의 간단한 관계가 없다.
- 세그먼트 테이블은 시작 주소와 세그먼트 길이를 알아야한다. (base addr, size)
- 길이를 알아야 유효한 메모리 접근을 할 수 있다.
- 주소 변환 과정
- 논리 주소 왼쪽 n 비트를 세그먼트 번호로 추출
- n을 이 프로세스의 세그먼트 테이블 인덱스로 사용하여 세그먼트의 시작 물리주소를 찾음
- 오른쪽 m비트로 오프셋을 세그먼트 길이와 비교
- 만약 오프셋 보다 세그먼트 길이가 길다면 유효하지 못함
- 접근하고자 하는 물리주소는 세그먼트 시작 물리 주소와 오프셋의 합이다.