운영체제

메모리 할당(3)

xodnek 2021. 8. 14. 00:32

세그먼테이션이 무엇인가요??

프로그램은 프로그래머가 작성한 명령어, 전역에서 사용한 공유 데이터, 작성된 프로그래밍 언어에서 제공하는 표준 라이브러리로 구성되어 있습니다.

페이징은 이러한 프로그램 구성요소들의 특징을 중요하게 생각하지 않으므로, 함수의 코드가 서로 다른 페이지로 분리 되는 불상사가 일어날 수 있습니다.

즉, 함수를 실행하려면 그 함수의 구성하고 있는 모든 페이지를 적재해야 합니다.

 

세그먼트는 서로 크기가 다른 논리적 단위인 세그먼트로 분할하고 메모리를 할당하는 기법입니다.

 

세그먼트 테이블 아시나요??

페이지와 마찬가지로 프로세스는 세그먼트 테이블을 유지합니다.

각 세그먼트는 세그먼트의 시작지점인 base와 limit인 세그먼트의 크기, read/write flag인 읽기전용 여부가 있습니다.

 

세그먼트 보호는 어떻게 이루어지나요??

세그먼트는 페이지와 비슷한 측면을 가지고 있습니다. 데이터를 요청할 때에는 세그먼트 번호, 변위의 조합을 사용하며, 올바르지 못한 요청이 생기면 트랩을 발생시킵니다.

e.g 읽기 전용 세그먼트에 쓰기, 세그먼트 크기를 넘어서는 변위, 자신의 것이 아닌 세그먼트에 접근할 때

세그먼테이션의 단점은 뭐라고 생각하시나요??

세그먼테이션은 가변 할당이기에, 외부 단편화가 발생하며, 데이터를 얻어 올 때에도 2번의 액세스가 필요합니다.

 

페이징된 세그먼테이션은 무엇인가요??

페이징과 세그먼테이션을 동시에 사용하는 것입니다.

페이징의 성질을 이용하여 외부 단편화를 막을 수 있으며,

세그먼테이션 성질에 의해 동일한 성질의 데이터가 서로 다른 페이지에 저장될 확률이 적어집니다.,

 

단점으로는 너무 길어지는 논리적 주소를 보유하게됩니다.(세그먼트 번호, 페이지 번호, 변위)

데이터를 얻어오려면 3번의 액세스를 해야합니다. (TLB가 히트하는 경우에도 2번을 해야합니다)

세그먼테이션 테이블 액세스하고 페이지 테이블 액세스(TLB캐싱으로 생략될 수 있습니다)하며 변환된 물리주소로 실제 데이터에 액세스하면 3번과 최소 2번이 됩니다.

'운영체제' 카테고리의 다른 글

가상 메모리  (0) 2021.08.14
메모리 할당(2)  (0) 2021.08.13
메모리 할당(1)  (0) 2021.08.13
주메모리의 관리  (0) 2021.08.13
데드락  (0) 2021.08.11