1. 메모리 할당 방식에 대한 설명으로 올바른 것을 다음 보기에서 찾아 써 보세요.
[보기] 최초 적합, 최적 적합, 최악 적합
정답
①: 최초 적합, ②: 최악 적합, ③: 최적 적합
정답
페이지 폴트 3회 발생
- 스와핑 (swaping): 메모리에서 사용되지 않는 일부 프로세스를 보조기억장치로 내보내고 실행할 프로세스를 메모리로 들여보내는 메모리 관리 기법
- 최초 적합 (first fit): 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식
- 최적 적합 (best fit): 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치하는 방식
- 최악 적합 (worst fit): 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식
- 외부 단편화 (external fragmentation): 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상을 의미
기본적인 메모리 관리 기법 (연속 메모리 할당)
스와핑 (swapping)
메모리 할당 (메모리에 프로세스를 할당하는 방식)
-> 두 방식 모두 외부 단편화 (external fragmentation) 발생 (연속 메모리 할당의 부작용)
외부 단편화를 해결할 수 있는 대표적인 방안
- 페이징 (paging): 물리 주소 공간을 프레임 단위로 자르고 프로세스의 논리 주소 공간을 페이지 단위로 자른 뒤 각 페이지를 프레임에 할당하는 가상 메모리 관리 기법
- 페이지 테이블을 통해 페이지가 적재된 프레임을 찾을 수 있음. 페이지 테이블에는 페이지 번호와 프레임 번호뿐만 아니라 유효 비트, 보호 비트, 접근 비트, 수정 비트 등이 있음
- PTBR (Page Table Base Register): 각 프로세스의 페이지 테이블이 적재된 주소를 가리킴
- TLB (Translation Lookaside Buffer): 페이지 테이블의 캐시 메모리 역할을 수행하기 위해 페이지 테이블의 일부를 저장
페이징 (paging)
페이지 테이블
페이지 번호와 프레임 번호를 짝지어 주는 일종의 이정표
- 물리 주소에 불연속적으로 배치되더라도 논리 주소에는 연속적으로 배치하도록 함
-> 프로세스들이 메모리에 분산되어 저장되어 있어도, CPU는 논리 주소를 그저 순차적으로 실행하면 됨
내부 단편화 (internal fragmentation) 문제 야기
CPU 내의 페이지 테이블 베이스 레지스터 (PTBR: Page Table Base Register)는 각 프로세스의 페이지 테이블이 적재된 주소 가리킴
페이지 테이블을 메모리에 두면, 메모리 접근 시간이 두 배로 늘어남
-> TLB (Translation Lookaside Buffer)라는 페이지 테이블의 캐시 메모리를 둠
- TLB 히트 (TLB hit): CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있을 경우 (메모리 접근을 한 번으로 줄임)
- TLB 미스 (TLB miss): 메모리를 두 번 참조해야 함
페이징에서의 주소 변환
하나의 페이지 혹은 프레임은 여러 주소를 포괄하고 있음
-> 논리 주소는 페이지 번호 (page number)와 변위 (offset)로 이루어짐
-> 특정 주소에 접근 가능
논리 주소 <페이지 번호, 변위> → 물리 주소 <프레임 번호, 변위>로 변환
- 논리 주소의 변위 == 물리 주소의 변위 (페이지 크기와 프레임 크기가 같기 때문에)
페이지 테이블 엔트리 (PTE: Page Table Entry)
- 요구 페이징 (demand paging): 페이지가 필요할 때마다 메모리에 적재하는 기법
- 페이지 교체 알고리즘에는 FIFO, 최적, LRU 페이지 교체 알고리즘 등이 있음
- 스래싱 (thrashing): 지나치게 빈번한 페이지 교체로 인해 CPU 이용률이 낮아지는 문제를 뜻함
- 프레임 할당 방식에는 균등 할당과 비례 할당, 작업 집합 모델 기반과 페이지 폴트율 기반 프레임 할당 방식이 있음
요구 페이징 (demand paging)
물리 메모리의 크기는 한정되어 있기 때문에
페이지 교체 알고리즘
FIFO 페이지 교체 알고리즘 (First-In First-Out Page Replacement Algorithm)
최적 페이지 교체 알고리즘 (optimal page replacement algorithm)
LRU 페이지 교체 알고리즘 (LRU: Least Recently Used Page Replacement Algorithm)
스래싱과 프레임 할당
정적 할당 방식
동적 할당 방식
fork 시스템 호출을 하면 부모 프로세스의 복사본이 자식 프로세스로서 만들어짐
-> 부모 프로세스의 메모리 영역이 다른 영역에 자식 프로세스로서 복제.
각 프로세스의 페이지 테이블은 자신의 고유한 페이지가 할당된 프레임을 가리킴
-> 복사 작업은 프로세스 생성 시간을 늦추고 불필요한 메모리 낭비를 야기함
-> 쓰기 시 복사 (copy on write) 사용
계층적 페이징 (hierarchical paging)
페이지 테이블을 페이징하여 여러 단계의 페이지를 두는 방식
: 다단계 페이지 테이블 (multilevel page table) 기법
모든 페이지 테이블을 항상 메모리에 유지할 필요 없음 -> 메모리 낭비 줄이기
계층적 페이징을 사용하는 경우 CPU가 발생하는 논리 주소
바깥 페이지 번호 | 안쪽 페이지 번호 | 변위
- 바깥 페이지 번호: CPU와 근접한 곳에 위치한 (바깥에 위치한) 페이지 테이블 엔트리를 가리킴
- 안쪽 페이지 번호: 첫 번째 페이지 테이블 바깥에 위치한 두 번째 페이지 테이블, 즉 페이지 테이블의 페이지 번호를 가리킴
페이지 테이블의 계층이 늘어날수록, 페이지 폴트가 발생했을 경우 메모리 참조 횟수가 많아지므로 계층이 많다고 해서 반드시 좋다고 볼 수는 없음
- 파일은 의미 있고 관련 있는 정보를 모은 논리적인 단위
- 운영체제는 파일의 확장자를 통해 파일의 유형을 파악할 수 있음
- 파일의 속성에는 파일과 관련된 다양한 부가 정보들이 있음
- 디렉터리를 이용하면 여러 개의 파일 또는 디렉터리를 묶어 관리할 수 있음
- 경로: 디렉터리를 이용해 위치를 특징 짓는 정보
- 절대 경로: 루트 디렉터리부터 시작하는 경로
- 상대 경로: 현재 디렉터리부터 시작하는 경로
파일
디렉터리
- 파티셔닝 (partitioning): 하드 디스크나 SSD처럼 용량이 큰 저장 장치를 하나 이상의 논리적인 여러 단위로 구획하는 작업을 의미
- 포매팅 (formatting): 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고, 새로운 데이터를 쓸 수 있게 하는 작업을 의미
- 연속 할당 (contiguous allocation): 보조기억장치 내 연속적인 블록에 파일을 할당하는 방식
- 연결 할당 (linked allocation): 각 블록 일부에 다음 블록의 주소를 저장하여 블록들을 연결 리스트 형태로 관리하는 방식
- 색인 할당 (indexed allocation): 파일의 모든 블록 주소를 색인 블록 (index block)에 모아 관리하는 방식
- FAT 파일 시스템: FAT를 이용하는 연결 할당 기반의 파일 시스템
- 유닉스 파일 시스템: i-node를 이용하는 색인 할당 기반의 파일 시스템
파티셔닝 (partitioning)과 포매팅 (formatting)
파일 할당 방법
파일 시스템은 블록 단위로 파일을 읽고 씀
파일 시스템