- 메모리 적재
- 분할 방법
- 단편화
- 페이징, 세그멘테이션
메모리 적재
연속 메모리 적재 방법
- 초기 컴퓨터 시스템에서 사용
- 직접배치, 중첩, 고정 분할 방법 등이 해당
- 크기가 다른 프로세스에 모두 같은 크기의 메모리를 할당하여 메모리 낭비 초래함
- 내부 또는 외부 단편화 문제가 발생할 수 있음
비연속(분산) 메모리 적재 방법
- 외부 단편화를 해결하고, 내부 단편화를 최소화하려고 소개한 새로운 방법
- 프로그램 하나가 물리적 주소의 여러 공간에서 분산해서 올라갈 수 있도록 하는 방법
- 고정 분할 방법
- 논리적 주소가 분할된 메모리보다 크면 오류가 발생하고, 작으면 내부 단편화(Internal Fragmentation)가 발생한다.
- 페이징(paging)
- 프로그램 하나를 분할하는 기준에 따라 동일한 크기로 나눠 메모리로 적재하는 방법
- 가변 분할 방법
- 세그먼테이션(Segmentation)
- 크기는 일정하지 않지만 의미 단위로 나눠 메모리로 적재하는 방법.
- 고정된 경계를 없애고 각 프로세스가 필요한 만큼 메모리를 할당하는 것
- 외부 단편화(External Fragmentation)가 발생한다.
- 최초 적합(First-fit)
- 프로세스를 사용 가능 공간 중 충분히 큰 첫 번째 공간에 할당한다. 공간활용률이 떨어지는 단점이 존재.
- 최적 적합(Best-fit)
- 프로세스를 충분히 큰 사용 가능 공간 중에서 들어갈 수 있는 가장 작은 공간에 할당한다. 할당 과정에 많은 시간이 소요될 수 있다.
- 최악 적합(Worst-fit)
- 프로세스를 가장 큰 사용 가능 공간에 할당한다.
- 최초 적합(First-fit)
단편화(Fragmentation)
- 외부 단편화(External Fragmentation)
총 공간을 계산해 봤을 때 요청을 만족할 충분한 메모리가 있음에도 가능한 공간이 연속적이지 않아서 외부 단편화가 발생합니다.
- 내부 단편화(Internal Fragmentation)
프로세스를 일정 크기인 페이지로 잘라서 메모리에 적재를 시켰지만 정확히 나누어 떨어지지 않을 때를 내부 단편화라고 합니다.
논리 주소를 동일한 크기로 자르고 물리 주소도 이와 동일하게 자르게 되면서 나타나는 단편화.
메모리 적재시에 비연속 메모리 적재 방법중에 고정 분할방법에 페이징과 가변 분할 방법에 세그먼테이션에 대해서 간략하게 알아보았고, 페이징 세그멘테이션에 대해서 조금 더 자세히 알아보겠습니다. (추후에 페이지 테이블, 세그멘테이션 테이블등에 대해서 적어야해요)
페이징(Paging)과 세그멘테이션(Segmentation)
가상 메모리를 관리하는 기법(가상메모리에 대해서도 써야한다!)
가상 메모리는 메모리에 적재(load)되니 즉, 실행중인 프로세스가 가상의 공간을 참조하여 마치 커다란 물리 메모리를 갖고
있는 것처럼 사용할 수 있도록 하는 것이다.
실제 메모리주소가 아닌 가상의 메모리 주소를 주는 방식이다.
페이징(Paging)
내부 단편화가 발생할 수 있으나, 메모리를 효율적으로 사용할 수 있고 작업 크기가 동일하여 다양한 알고리즘을 개발할 수 있다.
페이징이란?
- 작업을 크기가 동일한 페이지로 나눠 처리하는 방법
- 프로세스를 크기가 동일한 페이지로 나누고, 메인 메모리도 프레임이라는 고정 크기 블록으로 나눠 프레임에 페이지를 적재하는 방법이다.
- 물리적 주소가 없어도 큰 가상 주소 공간이 가능하게 쓰이기 위해 등장했다.
- 프로세스의 주소 공간을 동일한(고정된) 사이즈의 페이지 단위로 나누어 물리적 메모리에 불연속적으로 저장하는 방식
- 외부 단편화와 압축 작업 해소
- 메모리를 프레임(Frame)이라는 고정 크기로 분할, 프로세스는 페이지(Page)라 불리는 고정 크기로 분할된다.
세그먼텐이션(Segmentation)
- 프로세스 관점을 지원하여 메모리를 크기가 변할 수 있는 세그먼트로 나눔
- 각 세그먼트는 연관된 기능을 수행하는 하나의 모듈 프로그램으로 생각하며, 메모리의 연속된 위치에서 구성하되 서로 인접할 필요는 없다.
- 프로그램과 데이터를 논리적으로 독립된 주소 공간으로 나누고 쉽게 공유 보호 하기 위해 등장
- 외부 단편화가 발생할 수 있으나, 가변적인 데이터 구조와 모듈 처리 공유와 보호의 지원이 편리함
- 메모리의 사용자 관점을 지원하는 비연속 메모리 할당 방법, 논리적 영역을 세그먼트의 집합으로 인식
- 프로세스에 따라 세그먼트 크기가 달라 메모리를 크기가 일정한 페이지 프레임으로 나누지 않고 동적 분할(가변 분할) 방법으로 할당한다.
예상 질문
세그먼테이션과 페이징에 대해서 설명해주세요
페이징은 세그멘테이션과 가상 메모리를 고정된 크기로 나우어 메모리를 관리하는 것을 의미합니다.
세그멘테이션은 메모리를 서로 크기가 다른 논리적인 블록 단위인 세그먼트로 분할하고 메모리를 할당하여 물리주소를 논리 주소로 변환하는 것을 의미합니다.
'CS > 운영체제' 카테고리의 다른 글
멀티 태스킹과 스레딩과 프로세싱[Multi tasking & Threading & Processing] (0) | 2022.02.08 |
---|---|
어바웃 CPU Bound와 IO Bound (0) | 2022.02.03 |
CPU 스케줄링(CPU Scheduling) (0) | 2022.01.18 |
교착상태(Dead Lock)란???(feat.기아상태) (0) | 2022.01.17 |
시스템 콜(System Call)이 뭐야? (0) | 2022.01.15 |