메모리 관리
스와핑
일시적으로 메모리가 부족한 프로세스를 백업 저장소로 스왑하고 여유가 있을 때 메모리로 불러와 지속적인 실행이 가능하게 하는 것입니다. 하드 디스크를 통한 스왑 방식이기 때문에 상대적으로 속도가 느린 단점이 있습니다.
논리 주소와 물리 주소와의 차이
논리 주소는 물리적 주소와 매핑하는 주소로 CPU에 의해 생성된다. 물리 주소는 메모리 주소 레지스터에 의해서 실질적 할당되는 주소 체계이다. 논리주소를 물리적 주소로 매핑할 때 MMU를 활용한다.
고정 파티션과 가변 파티션의 차이
고정 파티션은 고정된 저장 공간을 가지는 것이며 가변 파티션은 초기 분할 이후에도 원하는 방식으로 분할할 수 있다. 그러나 고정 파티션은 메모리 사용이 비효율적이게 돼 내부 단편화가 발생할 수 있다. 불균일 사이즈로 나눠 파티션을 나눠 해결할 수 있다. 가변 분할 방식은 내부 단편화를 막을 수 있지만 동적 할당을 했기 때문에 오버헤드가 증가하게 된다. (컨텍스트 스위칭?)
💡 내부 단편화란 - 고정된 파티션이 1GB이고 한 프로세스의 메모리 사용이 100MB라고 가정할 때 빈 공간의 낭비가 발생하는 것을 내부 단편화라고 한다.
💡 외부 단편화는 할당된 파티션 메모리 공간이 적어 프로세스에 필요한 메모리보다 작아 메모리 위에 올릴 수 없을 때를 말한다. 빈 공간을 하나로 몰아 큰 공간을 만드는 압축이라는 방법으로 문제를 해결할 수 있다.
페이징
페이징은 불연속적이며, 외부 단편화를 피하고 메모리 사이즈가 다름에 따른 문제를 해결하기 위한 방법이다. 페이지 매핑을 통해서 놀고 있는 메모리들을 할당하는 것이다. 고정 분할 방식과 유사한 방법이며 외부 단편화는 없으나 내부 단편화가 존재할 수 있다.
💡 페이지 테이블 접근 시간을 줄이는 방법 : 테이블에 접근할 때 해당 테이블이 없다면 다른 테이블을 찾는 시간이 소요되기 때문에 유효한 페이지가 있을 확률이 높아야 한다. 또한 부재 시 메모리 Read 시간을 줄여야 한다.
일반 페이징 기법은 크기가 너무 커진다. 따라서 극복하기 위한 기법들이 있다.
계층적 페이징 | 페이지 테이블이 너무 커지는 것을 대비해 페이지 테이블을 다시 페이징하는 계층적 페이징 방식이 있다. |
해시 페이징 | 연결 리스트를 가지고 있는 해시 테이블을 이용한다. |
세그멘테이션
세그멘테이션은 메모리를 논리적 블록 단위인 세그먼트로 분할할당해 논리 주소로 변환하는 방식입니다. 외부 단편화가 발생할 수 있으나 내부 단편화는 발생하지 않습니다.
세그먼트 테이블을 가지고 있고 번호와 시작 주소, 세그먼트의 크기를 엔트리로 갖고 있다.
세그먼테이션을 실행하고 각 세그먼트별로 페이징을 실행하게 되면 코드 공유가 좋고 세그먼트 별로 권한 설정 또한 할 수 있다. 페이징의 단점인 내부 단편화가 제거되고 스와핑이 쉽다. 그러나 두 번의 기법이 들어가기 때문에 주소 변환 또한 두 번 진행하고 페이지 테이블에서도 주소 변환을 해야 해 많은 실행 과정을 거쳐야 한다
'기술면접 > 운영체제' 카테고리의 다른 글
[운영체제] 프로세스와 스레드 차이 (0) | 2022.02.25 |
---|---|
운영체제 10장 가상메모리 페이지 교체 알고리즘 (0) | 2022.01.19 |
운영체제 8장 정리 데드락 DeadLock 교착상태 (0) | 2022.01.19 |
운영체제 6장 정리 동기화 Race Condition Mutex Lock Semaphore (0) | 2022.01.19 |
운영체제 5장 정리 CPU 스케쥴링 (0) | 2022.01.19 |
댓글