CS
[CS] 세그멘테이션(Segmentation)
soom22
2023. 12. 3. 23:54
세그멘테이션이란?
돼지 한마리를 잘라서 보관
- 부위별로 자르기
- 세그멘테이션
- 모두 일정한 크기로 자르기
- 페이징
💡 물리적 ❌ 논리적 ⭕
- 프로세스를 논리적 단위인 세그먼트로 자르는 방법!
- 세그멘테이션은 프로세스를 세그먼트의 집합! 으로 생각한다.
- 프로세시를 어떻게 자르는가에 대한 방법 빼고 메모리에 할당하는 방법에 대해서는 페이징과 방법이 같음!
- MMU(Memory Management Unit, 메모리 연속 할당 장치) 내의 재배치 레지스터를 이용해서 논리 주소를 물리주소로 바꾸어 주는 방식을 취한다. → mmu는 세그먼트 테이블로 cpu에서 할당한 논리 주소에 해당 물이주소의 위치를 가지고 있어서 연속된 메모리 공간에 위치한다고 착각을 하게된다.
논리주소
- 각 프로세스마다 독립적으로 가지는 주소 공간
- 각 프로세스마다 0번지부터 시작
- CPU가 보는 주소
물리주소
- 메모리에 실제로 올라가는 위
세그멘테이션의 장점과 단점
- 장점
- 보호와 공유 면에서 효과적이다.
- 내부 단편화가 발생하지 않는다
- 단점
- 크기가 가변적이기때문에 외부 단편화가 발생할 수 있다.
- 그래서 페이징이라는 기법을 사용!
- 크기가 가변적이기때문에 외부 단편화가 발생할 수 있다.
💡 세그먼테이션의 문제점과 해결방안은 무엇인지 설명해 주세요.
💡 세그먼테이션은 무엇이고, 세그먼테이션으로 인해 어떤 장점이 있는지 설명해 주세요.
주소를 변환하는 방법
- 0~4는 세그먼트 번호
- base는 물리주소의 시작부분
- limit은 해당 세그먼트가 물리주소에서 차지하는 크기
논리주소 는 (세그먼트 번호, 세그먼트 내부에서의 위치) 로 나타내고
(2, 100) 은 물리주소로 4400
(1, 500) 은 범위 초과
💡 세그먼테이션으로 주소변환 하는 방법에 대해 설명해 주세요.
단편화
- 내부 단편화
- 프로세스의 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비되는 상황
- 외부 단편화
- 작은 메모리들의 합인 총 메모리 공간은 충분하지만 실제로 할당 가능한 공간은 부족하여 할당할 수 없는 상황
💡 단편화의 종류와 발생하는 이유에 대해 설명해 주세요.