연속 메모리 할당
멀티 프로세스 환경에서 여러 프로세스를 메모리에 연속적으로 로드하는 방법
고정 분할 방식
- 고정 분할은 메모리 영역을 분할한 뒤 각 영역에 프로세스를 할당하는 방식이다.
- 분할된 영역의 크기는 서로 다를 수 있으며, 분할된 크기는 고정된다,
- 메모리에 올릴 수 있는 프로세스의 수와 각 프로세스의 크기가 제한된다는 단점이 있다.
- 단편화 문제가 발생할 수 있다.
외부 단편화 : 프로세스를 할당하기 어려울만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상
내부 단편화 : 분할된 크기보다 작은 프로세스가 할당되어 메모리 공간이 남는 경우
가변 분할 방식
- 할당할 프로세스의 크기에 따라 메모리 공간을 분할하는 방식
- 메모리 할당 알고리즘을 이용해 가용 메모리 공간에서 프로세스가 로드될 수 있는 메모리 공간을 찾는다.
- 최초 적합(first-fit) : 메모리 공간에서 프로세스의 크기만큼 비어 있는 메모리 공간을 찾아 차례대로 프로세스를 로드하는 방식
- 최적 적합(best-fit) : 할당하려는 프로세스 크기 이상인 가용 메모리 공간 중에서 가장 작은 공간에 프로세스 할당
- 가용 메모리 공간을 모두 탐색해야함
- 최악 적합(worst-fit) : 할당하려는 프로세스 크기 이상인 가용 메모리 공간 중에서 가장 큰 공간에 프로세스 할당
- 가용 메모리 공간을 모두 탐색해야함
버디 시스템
- 단편화를 해결하기 위한 방법
- 버디 시스템에서 일정 크기의 메모리 공간을 요청 받으면, 그 공간과 비슷한 크기의 메모리 공간을 마련
- 메모리 공간이 다 쓰이고 해제되면 인접한 두 개의 공간을 합치면서 큰 공간을 마련
스와핑
- 메모리에 올라온 프로세스으들을 임시로 보조기억장치 일부 영역으로 쫓아내고, 생긴 빈 공간에 다른 프로세스들을 적재하여 실행하는 방식
- 실제 물리 메모리보다 더 많은 프로세스를 수용할 수 있도록 물리 메모리가 초과 할당될 수 있다.
비연속 메모리 할당
프로세스의 메모리 영역을 나눠서 메모리 공간에 저장하는 방법
페이징
- 프로세스의 논리 메모리 영역과 물리 메모리 영역을 각각 일정한 크기의 페이지와 프레임으로 나눈다.
- 페이지와 프레임 크기는 동일하다.
- 페이지와 프레임에는 각각 번호를 할당해 프로세스의 페이지와 메모리의 프레임을 매핑한다.
- 페이지 테이블 : PCB에 저장되며, 프로세스의 페이지 정보와 페이지에 매핑하는 프레임의 주소 값을 저장
세그멘테이션
- 프로세스의 메모리 영역을 논리적 단위인 세그먼트로 분할해 메모리 할당
- 세그멘테이션 테이블을 사용하여 논리 주소를 물리 주소로 매핑
- 프로세스의 메모리 영역을 논리적 단위로 나눠 저장하므로 단위별로 데이터를 보호하기 쉽다.
- 세그먼트의 크기가 균등하지 않으서 프로세스의 할당/해제를 반복하는 과정에서 외부 단편화 문제가 발생할 수 있다.
- 메모리에 로드된 스택 세그먼트 영역에서 오버플로가 발생하면 다른 프로세스와 메모리 영역이 겹칠 수 있다.
가상 메모리
프로세스의 일부만 메모리에 로드하고, 나머지는 디스크에 둔 상태로 프로세스를 실행하는 방식
페이지 폴트
- 프로그램을 실행하다가 물리 메모리에 필요한 페이지가 없을 경우
- 페이지 폴트가 발생하면 디스크에서 필요한 페이지를 스왑인한다.
페이지 교체 알고리즘
- FIFO : 메모리에 가장 먼저 올라온 페이지부터 내쫓는 방식
- LRU : 가장 오랫동안 사용되지 않은 페이지를 교체하는 알고리즘
- 가장 많이 참조되었지만 가장 오래전에 참조되었던 페이지를 내쫓는 문제가 발생할 수 있다.
- LFU : 가장 적게 참조되었던 페이지를 교체하는 알고리즘
- 교체된 페이지가 미래에 많이 참조되는 경우가 있을 수 있다.
스레싱
동시에 일정 수 이상의 프로그램을 실행했을 때 오히려 CPU 이용률이 떨어지는 상황
페이지 부재 빈도 알고리즘
- 프로세스의 페이지 부재율을 주기적으로 조사하고 이 값에 근거해서 각 프로세스에 할당할 메모리 양을 동적으로 조절
'CS' 카테고리의 다른 글
[네트워크] 쿠키, 세션, REST (0) | 2023.10.14 |
---|---|
[운영체제] 기본개념, 커널, 시스템 (0) | 2023.10.14 |
[운영체제] 프로세스 동기화, 데드락 (0) | 2023.10.07 |
[네트워크] 네트워크 레이어, IP 프로토콜 (0) | 2023.10.07 |
[운영체제] CPU 스케줄링 (0) | 2023.10.06 |