Memory Management3
메모리 영역관련 정리글
https://box0830.tistory.com/150
메모리 영역(Code, Data, Heap, Stack)
이게 매번 헷갈려서 확실히 정리를 할 필요가 있겠네요. 프로세스가 차지하고 있는 메모리를 살펴보면 크게 Code, Data, Heap, Stack의 영역으로 나누어져 있습니다. 이들 각각을 segment라 불러요. - 메
box0830.tistory.com
page table에 엔트리마다 논리적 주소가 저장된 것 뿐만 아니라 valid/ invalid bit도 저장되어 있다. page table에는 존재하지 않는 page6,7번의 엔트리가 있다. 엔트리 개수는 프로그램이 최대로 가질 수 있는 사이즈만큼 만들어져야 한다.
때문에 사용되지 않는 6,7번 엔트리는 invalid bit정보가 들어있다. valid bit는 해당 엔트리가 실제 물리적 주소의 프레임에 올라와 있음을 의미한다.
invalid bit의 의미는 해당 주소를 사용하지 않거나 swap area에 있는 경우이다.
protection bit의 의미는 프로그램의 code부분을 담고 있을 수 있고, data나 stack내용일 수 있다. code는 read-only만의 권한을 가질 수 있다.
page들 중에는 다른 프로세스와 공유할 수 있는 shared page가 있다. shard code부분은 별도로 메모리에 올리는 것이 아니라 하나만 올려서 각각의 페이지 테이블에서 같은 프레임으로 논리적 주소에 매핑시켜준다.
shard code에 해당하는 page는 동일한 위치에 논리적 주소를 가져야 하고, read-only 권한만 가질 수 있다.
Segmentation
의미있는 code, data, stack과 같이 segment별로 나눠서 주소변환하는 기법
paging기법은 page마다 길이가 동일했지만 segmentation기법은 의미단위로 자른 것이기 때문에 table에 길이를 나타내는 limit이 저장된다.