페이지 참조열
2 3 1 3 5 2 3 4 2 3
사용할 수 있는 프레임: 3개
LRU 페이지 교체 알고리즘: 가장 오랫동안 사용하지 않은 페이지 교체
2 → 3 → 1(프레임 충만) → 3(반복) → 5(페이지 폴트, 오랫동안 사용하지 않은 2 교체) → 2(페이지 폴트, 오랫동안 사용하지 않은 1 교체) → 3(반복) → 4(페이지 폴트, 오랫동안 사용하지 않은 5 교체) → 2(반복) → 3(반복)
페이지 폴트 발생 횟수: 3회
프로세스에 연속적인 메모리 공간을 할당하는 방식
적재된 프로세스 중 실행되지 못한 프로세스들은 임시로 보조기억장치로 쫓아내어 생긴 메모리의 빈 곳에 다른 프로세스를 적재하여 실행하는 방식
→ 실제 메모리 크기보다 큰 프로세스를 동시에 실행할 수 있음
메모리 공간에 프로세스를 연속적으로 할당하는 방식
연속 메모리 할당에서 다양한 크기의 프로세스 실행/종료 반복 시 발생하는 빈 곳으로 인해, 프로세스를 적재할 수 없는 메모리 낭비 상황이 발생하는 현상
→ 여유 공간이 있어도 쪼개져 있어 한 번에 큰 프로세스를 적재할 수 없음
※ 내부 단편화(internal fragmetation): 일정 크기의 페이지에 프로세스를 할당할 때, 페이지보다 프로세스의 크기가 작아서 발생하는 메모리 낭비 현상 (아래 14-2의 페이징 참조)
외부 단편화를 해결하기 위한 대표적인 방법
흩어진 텅 빈 공간을 하나로 모아서, 하나의 큰 공간으로 합치는 것(프로세스 재배치)
이러한 단점으로 오늘날에는 가상 메모리 기법 중 페이징 기법을 사용한다. (14-2)
실행하고자 하는 프로그램의 일부만 메모리에 적재하여 실제 물리 메모리의 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술
가상 메모리 관리 기법 → 페이징, 세그멘테이션 (참고 1, 참고 2)
프로세스의 논리 주소 공간을 페이지(page)라는 일정 단위로 자르고,
메모리 물리 주소 공간을 프레임(frame)이라는 페이지와 동일 크기 단위로 자른 뒤,
페이지를 프레임에 할당하는 가상 메모리 관리 기법
프로세스가 메모리에 불연속적으로 배치되면 CPU가 다음 실행할 명령어를 찾기 어려우므로, 물리 주소에서는 불연속적으로 배치되더라도 논리 주소에서 연속적으로 배치되도록 하는 표.
다시 말해, 페이지 번호와 프레임 번호를 짝지어 주는 이정표
페이지와 프레임은 여러 주소를 포함하고 있으므로, 특정 주소에 접근하기 위해서는 접근하고자 하는 페이지 번호와 그로부터 얼마나 떨어져 있는지 알기 위한 변위(offset)를 통해 접근할 수 있다.
페이지 테이블의 각각의 행(에 담기는 내용)
가상 메모리로 물리 메모리의 한계를 일부 극복했지만, 절대적인 물리 메모리는 부족하다. 따라서 운영체제는 메모리를 효율적으로 이용하기 위해 페이지 인/아웃을 통해 적절하게 메모리 자원을 할당해야 한다.
프로세스를 메모리에 적재할 때, 필요한 페이지만 메모리에 적재하는 기법
→ 페이지 교체 / 프레임 할당
메모리에 적재된 페이지 중 보조기억장치로 내보낼 페이지를 결정하는 알고리즘
페이지 폴트가 적은 알고리즘이 좋은 알고리즘이다.
페이지 폴트 횟수는 페이지 참조열(page reference string)을 통해 알 수 있다.
프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제
동시 실행되는 프로세스의 수(멀티프로그래밍의 정도)를 늘린다고 해서 CPU의 이용률이 비례해서 증가하는 것은 아니다. 물리적인 메모리의 한계로 CPU 성능과 무관하게 전체 컴퓨터의 성능이 하락할 수 있다.
페이지 폴트가 발생하는 근본적인 원인은 프로세스가 사용할 수 있는 프레임 수가 적기 때문이다. 이처럼 스레싱이 발생하는 근본적인 이유는 각 프로세스가 요구하는 최소한의 프레임 수가 보장되지 않기 때문이다.
보조기억장치에 저장된 관련 정보의 집합
컴퓨팅에서 파일을 분류하기 위해 사용하는 이름공간
파일들을 묶어서 관리하기 위한 특별한 형태의 파일
파일과 디렉터리를 보조기억장치에 할당하고 접근할 수 있게 하는 운영체제 내부 프로그램
저장 장치의 논리적인 영역(partition; 칸막이)을 구획하는 작업
사용할 파일 시스템을 결정하고, 새로운 데이터 쓰기를 준비하는 작업
운영체제는 파일, 디렉터리를 '블록' 단위로 읽고 쓴다.
블록 번호는 블록 위치를 식별하는 주소이며, 파일 크기에 따라 할당되는 블록의 수도 달라진다.
연속적인 블록에 파일을 할당하는 방식
파일의 첫 번째 블록 주소와 블록 단위길이를 통해 접근
단순한 구현 vs 외부 단편화
연결 할당의 단점을 보완한 파일 시스템
각 블록에 포함된 다음 블록의 주소를 테이블 형태로 관리(FAT)
파티션 영역 구성: 예약 / FAT / 루트 디렉터리 / 데이터
FAT는 파티션의 앞부분에 만들어지고, 메모리에 적재/실행되면 임의 접근에도 유리하다.
색인 할당 기반의 파일 시스템
유닉스 파일 시스템에서의 색인 블록 = index-node(= i-node)
파티션 영역 구성: 예약 / i-node / 데이터
i-node는 15개의 블록 주소를 저장할 수 있으므로 그 이상의 블록을 저장할 때는 다음과 같이 해결한다.
1. 첫 번째 ~ 열두 번째 주소에는 파일 데이터를 직접 저장한다 = 직접 블록(direct ~)
2. 1번의 내용으로 부족하면, 열세 번째 주소에는 단일 간접 블록(single indirect ~; 파일 데이터가 저장된 블록의 주소가 저장된 블록) 주소를 저장한다.
3. 2번의 내용으로 부족하면, 열네 번째 주소에는 이중 간접 블록(double ~; 단일 간접 블록 주소를 저장하는 블록)을 저장한다.
4. 3번의 내용으로 부족하면, 열다섯 번째 주소에 삼중 간접 블록(triple; 이중 간접 주소가 저장된 블록) 주소를 저장한다
※ 저널링(journaling) 파일 시스템
작업 로그를 통해 시스템 크래시가 발생했을 때, 로그 검사를 통해 빠르게 파일 시스템을 복구하기 위한 방법
※ 마운팅(mounting)
한 저장장치의 파일 시스템에서 다른 저장장치의 파일 시스템에 접근할 수 있도록 파일 시스템을 편입시키는 작업