운영체제의 메모리 관리 기법인 가상 메모리 관리, 그리고 파일 시스템에 대해 알아가는 시간이다.
메모리 공간에 프로세스를 연속적으로 할당하는 방식을 연속 메모리 할당이라고 한다.
프로세스들을 실행하다보면 메모리 공간이 가득 차게 되는데 그러면 새로운 프로세스를 할당할 수 없게 된다.
이 때, 오랫동안 사용하지 않은 프로세스를 보조기억장치 일부 영역으로 임시로 쫒아내고
그렇게 마련된 빈 공간에 새 프로세스를 적재하곤 하는데 이릘 스와핑 swapping 이라고 한다.
이를 통해 프로세스들이 요구하는 메모리 공간 크기가 실제 메모리 크기보다 큰 경우에도
문제 없이 프로세스를 동시에 실행할 수 있다.
메모리 내 빈 공간이 여러 개 있을 때 프로세스를 할당하는 방식은 여러 가지가 있지만
그 중 대표적인 세 가지를 알아보도록 하겠다.
연속 메모리 할당은 단순하고 간편하지만 외부 단편화 external fragmentaion 문제를 내포하고 있다.
이것은 프로세스를 할당하기 어려울 만큼 작은 공간들로 인해 메모리가 낭비되는 현상이다.
이러한 잉여 공간들이 쌓이면 낭비되는 공간이 상당히 많기 때문에 반드시 해결해야 하는 문제다.
외부 단편화 문제를 해결하기 위해 메모리를 압축 compaction 할 수 있는데,
잉여 공간을 한 데 모으는 동안의 오버헤드가 크기 때문에 단점이 많다.
이 문제를 해결하는 다른 방법으로는 페이징 기법이 있다.
더 알아보기
프로세스의 일부만 메모리에 적재하여 실제 물리 메모리보다 더 큰 프로세스를 실행할 수 있는 기법을
가상 메모리 virtual memory 라고 하며, 크게 페이징, 세그멘테이션의 두 가지 기법이 있다.
현재 대부분의 운영체제는 페이징 기법을 통해 가상 메모리를 구현한다.
페이징 paging 은 메모리와 프로세스를 일정한 단위로 자르고
프로세스를 메모리에 불연속적인 조각 단위로 할당하는 기법이다.
페이지와 프레임은 동일한 크기로 설정되며, 이 크기 단위로 메모리 할당이 이루어진다.
(프로세스 크기가 페이지 단위의 배수로 나누어 떨어지지 않기에 마지막 페이지에는 잉여 공간이 생길 수 있는데
이를 내부 단편화 internal fragmentation 라고 하지만, 외부 단편화보다는 훨씬 적은 양이다.)
페이지 또한 스왑 인/아웃 될 수 있는데, 이 때는 프로세스 단위가 아닌 페이지 단위로 이동한다.
프로세스 단위의 이동과 구분하여 페이지 아웃 page out, 페이지 인 page in 이라고도 한다.
페이지를 사용하면 외부 단편화 문제를 해결할 수 있을 뿐만 아니라, 물리 메모리보다 큰 프로세스도 실행할 수 있다.
페이지는 메모리에 불연속적으로 적재되기 때문에 그대로 사용하기 어려운데
논리 주소의 연속성을 유지한 채 불연속적인 페이지와 맵핑하기 위해 페이지 테이블 page table 을 이용한다.
페이지 테이블은 페이지 번호와 프레임 번호를 맵핑해둠으로써
CPU가 페이지 번호만 보고 해당 페이지가 적재된 프레임을 찾을 수 있게 해준다.
이를 통해 CPU는 프로세스들이 메모리에 분산되어 있더라도 논리 주소를 통해 순차적으로 실행한다.
각각의 프로세스는 고유의 페이지 테이블을 메모리에 가지고 있으며
PCB의 페이지 테이블 베이스 레지스터(PTBR) page table base register 에 그 시작 주소가 담긴다.
페이지 테이블은 메모리에 저장되기 때문에, 이를 통해 페이지에 접근하면
메모리 접근을 두 번 해야 한다는 문제가 있어 참조 지역성에 근거한 일종의 캐시 메모리를 두는데
일반적으로 MMU 내에 존재하며 TLB translation lookaside buffer 라고 부른다.
캐시 메모리와 마찬가지로 참조하고자 하는 페이지 존재 유무를 TLB 히트/미스 TLB hit/miss 라고 하며
TLB 미스 시 페이지 테이블을 참조하기 위해 메모리에 접근한다.
특정 주소에 접근하기 위해서는 두 가지 정보가 필요한데,
이에 따라 페이징 시스템의 논리 주소는 두 부분으로 이루어져 있다.
<페이지 번호, 변위>로 구성된 논리 주소는 페이지 테이블을 거쳐 <프레임 번호, 변위>로 구성된 물리 주소로 변환된다.
페이지 테이블의 각각의 행들은 페이지 테이블 엔트리 page table entry 라고 하는데
페이지 번호, 프레임 번호 외에도 유효 비트, 보호 비트, 참조 비트, 수정 비트 등의 정보가 포함되어 있다.
프로세스의 모든 테이블 페이지 엔트리를 메모리에 유지하는 것은 비효율적이기 때문에
계층적 페이징 hierarchical paging 을 통해 여러 단계의 페이지를 두기도 한다.
더 알아보기
【↗[컴퓨터 공학 기초 강의] 38강. 페이징을 통한 가상 메모리 관리】
【↗[저자 GitHub] Intel 페이지 테이블】
프로세스를 메모리에 적재할 때 모든 페이지를 적재하지 않고 필요한 페이지만 적재하는 기법을
요구 페이징 demand paging 이라고 한다.
그 중에서도 처음엔 아무 페이지도 적재하지 않은 채 실행부터 하고서
페이지 폴트가 발생할 때마다 하나씩 적재하는 방식을 순수 요구 페이징 pure demand paging 이라고 한다.
요구 페이징 시스템이 안정적으로 작동하려면 페이지 교체와 프레임 할당이 잘 이루어져야 한다.
요구 페이징 기법으로 페이지를 적재하다보면 메모리가 가득 차게 되어 스왑 아웃을 해야 하는데
어떤 페이지를 스왑 아웃 할 것인지 결정하는 방법을 페이지 교체 알고리즘이라고 한다.
페이지 교체 알고리즘은 페이지 폴트를 적게 일으킬수록 좋은 알고리즘이다.
페이지 교체 알고리즘의 성능 측정 지표가 되는 페이지 폴트 횟수는
페이지 참조열 page reference string 을 통해 알 수 있다.
CPU가 참조하는 페이지 중 연속된 페이지를 생략한 페이지열을 페이지 참조열이라고 한다.
대표적인 페이지 교체 알고리즘으로는 다음과 같은 것들이 있다.
비효율적인 페이지 교체 알고리즘을 사용할 때뿐만 아니라
프로세스가 사용할 수 있는 프레임 수가 적은 경우에도 페이지 폴트가 자주 발생한다.
이게 과해지면 프로세스 실행 시간보다 페이징에 더 많은 시간을 소요하여 성능 저하가 발생하는데
이러한 문제를 스레싱 thrashing 이라고 한다.
메모리에서 동시 실행되는 프로세스가 늘어 멀티프로그래밍의 정도 degree of multiprogrammming 가 높아지면
어느 정도까지는 CPU 이용률이 높아지며 성능이 좋아지다가 어느 순간 스레싱이 발생하여 성능이 저하된다.
그 근본적인 원인 각 프로세스가 필요로 하는 최소한의 프레임 수가 보장되지 않았기 때문이다.
더 알아보기
【↗[컴퓨터 공학 기초 강의] 39강. 페이지 교체와 프레임 할당】
【↗[컴퓨터 공학 기초 강의] 40강. 페이징의 이점과 계층적 페이징】
/
로 표현한다/
를 사용한다\
를 사용한다.
, 상위 디렉토리는 ..
로 표현한다파일 속성은 운영체제마다 차이가 있지만 주로 다음과 같은 것들이 있다.
이름 | 의미 |
---|---|
유형 | 운영체제가 인지하는 파일의 종류. 주로 확장자 extension 를 통해 파악. |
크기 | 파일의 현재 크기와 허용 가능한 최대 크기. |
보호 | 어떤 사용자가 해당 파일을 일고, 쓰고, 실행할 수 있는지 여부. |
생성 날짜 | 파일이 생성된 날짜. |
마지막 접근 날짜 | 파일에 마지막으로 접근한 날짜. |
마지막 수정 날짜 | 파일을 마지막으로 수정한 날짜. |
생성자 | 파일을 생성한 사용자. |
소유자 | 파일을 소유한 사용자. |
위치 | 파일의 보조기억장치상의 현재 위치. |
더 알아보기
운영체제는 파일과 디렉터리를 블록 block 단위로 읽고 쓴다.
(3주차 때 다뤘던, 섹터가 모여 있는 논리 단위 그 블록 맞다)
하드디스크 내에는 여러 개의 블럭이 있고 몇 번째 블록인지 주소를 통해 각각의 블록을 식별한다.
블록들에 파일을 할당하는 방식은 크게 연속 할당과 불연속 할당으로 나뉘며
현대의 운영체제는 불연속 할당 방식을 사용한다.
다양한 파일 시스템이 존재하지만 대표적인 파일 시스템으로 두 가지를 언급할 수 있다.
다음은 FAT 파일 시스템과 유닉스 파일 시스템에서
각각 /home/minchul/a.ash
를 찾아가는 예시다.
그 외에도 Windows 운영체제에서 사용하는 NT 파일 시스템(NTFS) 이나
Linux 운영체제에서 사용하는 ext 파일 시스템 등
다양한 파일 시스템이 존재한다.
더 알아보기
이번 주 미션
- 기본 미션 | p. 400의 확인 문제 1번 풀고 인증하기
- 선택 미션 | Ch.14(14-3) 프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2414523423' 일 때 FIFO, 최적 페이지, LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기
미션은 P.400의 1번 문제뿐이지만, 이왕 학습하고 확인 문제를 푸는 거 다 풀어보자.
P.400~401 [14-1 | 연속 메모리 할당] 확인 문제
- 메모리 할당 방식에 대한 설명으로 올바른 것을 다음 보기에서 찾아 써 보세요.
[ 보기 | 최초 적합, 최적 적합, 최악 적합 ]
- [① 최초 적합 ]: 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식
- [② 최악 적합 ]: 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식
- [③ 최적 적합 ]: 프로세스가 적재될 수 있는 가장 자은 공간에 프로세스를 배치하는 방식
(요것이 이번주 기본 미션!!)
- 외부 단편화에 대한 설명으로 옳지 않은 것으로 고르세요.
① 외부 단편화가 발생하면 메모리가 낭비됩니다.
② 가상 메모리 기법 중 페이징을 이용하면 외부 단편화를 해결할 수 있습니다.
③ 메모리 압축을 통해 외부 단편화를 해결할 수 있습니다.
④ 외부 단편화가 발생한 공간에 모든 프로세스를 배치할 수 있습니다. → 해당 메모리 공간보다 크지 않은 프로세스만 가능.
- 메모리 스와핑에 대한 설명으로 옳은 것을 고르세요.
① 메모리에서 보조기억장치로 프로세스를 내쫒는 것을 스왑 인이라고 합니다. → 그건 스왑 아웃.
② 보조기억장치에서 메모리로 프로세스를 적재하는 것을 스왑 아웃이라고 합니다. 그건 스왑 인.
③ CPU를 관리하는 기법입니다.→ 메모리를 관리.
④ 메모리에서 사용되지 않는 일부 프로세스를 보조기억장치로 내보내고 실행할 프로세스를 메모리에 적재하는 방식입니다.
- 연속 메모리 할당에 대한 설명으로 옳지 않은 것을 고르세요.
① 외부 단편화가 발생하지 않습니다. → 외부 단편화는 연속 메모리 할당에 내재된 이슈.
② 프로세스를 메모리에 연속적으로 할당하는 방법입니다.
③ 메모리 스와핑을 이용할 수 있습니다.
④ 최초 적합, 최적 적합, 최악 적합 방식으로 프로세스를 적재할 수 있습니다.
P.422~423 [14-2 | 페이징을 통한 가상 메모리 관리] 확인 문제
- 페이징에 대한 설명으로 옳지 않은 것을 골라보세요.
① 페이징은 가상 메모리 관리 기법이다.
② 페이징을 이용하면 물리 메모리보다 큰 프로세스도 실행할 수 있다.
③ PTBR은 각 프로세스가 적제된 페이지 테이블을 가리킵니다.
④ TLB 히트가 발생하면 CPU는 메모리에 두 번 접근해야 합니다. → TLB 미스 발생 시 두 번 접근.
- 다음 그림은 페이지 테이블 엔트리를 간략화한 표입니다. 그림에 대한 설명으로 옳지 않은 것을 골라보세요.
페이지 번호 프레임 번호 유효 비트 보호 비트 r 보호 비트 w 보호비트 x 참조 비트 수정 비트 2 3 1 1 1 1 0 1 ① 2번 페이지는 수정된 적이 있습니다.
② 2번 페이지는 CPU가 읽고 쓰고 실행할 수 있습니다.
③ 2번 페이지는 메모리에 적재되어 있지 않습니다. → 적재되어 유효 비트가 1.
④ 2번 페이지는 CPU에 의해 참조된 적이 없습니다.
- 페이지 테이블과 관련한 설명으로 옳지 않은 것을 고르세요.
① 프로세스마다 페이지 테이블을 가지고 있습니다.
② 페이지 테이블을 사용하는 컴퓨터는 페이징 기법을 사용하지 못합니다. → 그럼 그건 무얼 위한 페이지 테이블인가.
③ PTBR는 각 프로세스의 페이지 테이블을 가리킵니다.
④ 페이지 테이블은 특정 페이지가 어떠한 프레임에 적재되어 있는지 알려줍니다.
- TLB와 관련한 설명으로 옳은 것을 고르세요.
① 페이지 테이블의 캐시 메모리입니다.
② TLB 히트가 일어나면 메모리를 두 번 참조해야 합니다. → 그건 TLB 미스.
③ TLB 미스가 일어나면 메모리를 한 번만 참조해도 됩니다. → 그건 TLB 히트/.
④ TLB는 입출력장치의 일종입니다. → 캐시 메모리.
P.437 [14-3 | 페이지 교체와 프레임 할당] 확인 문제
- 프로세스가 사용할 수 있는 프레임이 세 개 있고, 페이지 참조열이 아래와 같다고 가정해보겠습니다. LRU 페이지 교체 알고리즘으로 이 페이지들을 참조한다면 몇 번의 페이지 폴트가 발생하나요?
[ 2 3 1 3 5 2 3 4 2 3 ]
LRU 페이지 교체 알고리즘은 사용한지 오래된 페이지를 날리는 방식
시간에 따른 페이지 할당을 나타내보면
2 ⇒ [ 2, -, - ] (자리가 있으므로 그냥 삽입)
3 ⇒ [ 2, 3, - ] (자리가 있으므로 그냥 삽입)
1 ⇒ [ 2, 3, 1 ] (자리가 있으므로 그냥 삽입)
3 ⇒ [ 2, 3, 1 ] (이미 있으므로 유지)
5 ⇒ [ 5, 3, 1 ] (접근한지 가장 오래된 2 교체)
2 ⇒ [ 5, 3, 2 ] (접근한지 가장 오래된 1 교체)
3 ⇒ [ 5, 3, 2 ] (이미 있으므로 유지)
4 ⇒ [ 4, 3, 2 ] (접근한지 가장 오래된 5 교체)
2 ⇒ [ 4, 3, 2 ] (이미 있으므로 유지)
3 ⇒ [ 4, 3, 2 ] (이미 있으므로 유지)
따라서 페이지 폴트 발생 횟수는 3.
- 프레임 할당과 관련된 설명으로 옳지 않은 것을 고르세요.
① 균등 할당은 모든 프로세스에 동일한 프레임을 배분하는 방식입니다.
② 비례 할당은 프로세스 크기에 따라 프레임을 배분하는 방식입니다.
③ 작업 집합 모델 기반 프레임 할당은 작업 집합의 크기만큼만 프레임을 할당하는 방식입니다.
④ 페이지 폴트율 기반 프레임 할당은 페이지 폴트율의 상한선과 무관하게 프레임을 할당하는 방식입니다. → 상한선과 하한선 모두 고려.
P.450~451 [15-1 | 파일과 디렉토리] 확인 문제
- 파일과 관련한 설명으로 옳지 않은 것을 고르세요.
① 파일은 보조기억장치에 저장된 관련 정보의 집합을 의미합니다.
② 모든 파일에는 고유한 절대 경로가 있습니다.
③ 운영체제는 파일을 다루기 위한 시스템 호출을 제공합니다.
④ 확장자는 파일이 마지막으로 수정된 날짜를 나타내기 위한 정보입니다. → 파일의 유형을 나타내기 위한 정보.
- 다음 그림을 참고하여 질문에 답하세요.
① 현재 작업 디렉터리가
/home
일 때c.tar
의 상대 경로는 무엇인가요? minchul/c.tar
② 현재 작업 디렉터리가/home
일 때c.tar
의 절대 경로는 무엇인가요? /home/minchul/c.tar
- 디렉터리와 관련한 정보로 옳지 않은 것을 고르세요.
① 디렉터리는 보조기억장치에 저장되어 있지 않습니다. → 그럼 어디에 있나.
② 디렉터리 엔트리에는 해당 디렉터리에 저장된 대상들에 대한 정보가 담깁니다.
③ 운영체제는 디렉터리를 다루는 다양한 시스템 호출을 제공합니다.
④ 최상위 디렉터리를 루트 디렉터리라고 합니다.
P.478~479 [15-2 | 파일 시스템] 확인 문제
- 파일 할당 방법에 대한 설명으로 옳지 않은 것을 고르세요.
① 연속 할당은 외부 단편화가 발생할 수 있습니다.
② 연결 할당은파일에보조기억장치 내에 파일을 연속적인 블록으로 할당하는 방식입니다. → 그건 연속 할당. 연결 할당은 연결 리스트처럼.
③ 색인 할당은 파일의 모든 블록 주소를 색인 블록에 모아 관리하는 방식입니다.
④ 파일 시스템은 블록 단위로 파일을 읽고 씁니다.
저 "파일에"는 빠지는 게 맞는 것 같은디
으앜 책에 문항 뒤에 마침표 빠졌는데 너무 사소한 이슈인가
- FAT 파일 시스템에 대한 설명으로 옳지 않은 것을 고르세요.
① 연결 할당 기반 파일 시스템입니다.
② FAT(파일 할당 테이블)를 사용하는 파일 시스템입니다.
③ 파일의 속성은 디렉터리 엔트리에 명시됩니다.
④ 블록마다 다음 블록의 주소를 저장합니다. → FAT에 모여 있다.
- 유닉스 파일 시스템에 대한 설명으로 옳지 않은 것을 고르세요.
① 연속 할당 기반 파일 시스템입니다. → 불연속 할당 중 색인 할당 기반.
② i-node는 파일의 데이터 블록 주소를 저장합니다.
③ 파일의 크기가 크면 i-node는 단일 간접 블록, 이중 간접 블록, 삼중 간접 블록을 가리킵니다.
④ 파일의 속성은 i-node에 명시됩니다.
- 파티셔닝과 포매팅에 대한 설명으로 옳지 않은 것을 고르세요.
① 파티셔닝과 포매팅 작업을 거치지 않고도 파일 시스템을 이용할 수 있습니다. → 어떤 파일 시스템을 이용하는지 알 수 없어 이용 불가.
② 파티셔닝은 보조기억장치에 논리적인 영역을 구획하는 작업을 의미합니다.
③ 포매팅 작업을 거치면 파일 시스템이 결정됩니다.
④ 파티션마다 각기 다른 파일 시스템을 이용할 수 있습니다.
가정
- 프레임 수: 3개
- 페이지 참조열: 2 4 1 4 5 2 3 4 2 3
FIFO 알고리즘의 경우
2 ⇒ [ 2, -, - ] (자리가 있으므로 그냥 삽입)
4 ⇒ [ 2. 4. - ] (자리가 있으므로 그냥 삽입)
1 ⇒ [ 2, 4, 1 ] (자리가 있으므로 그냥 삽입)
4 ⇒ [ 2, 4, 1 ] (이미 있으므로 유지)
5 ⇒ [ 5, 4, 1 ] (적재된지 가장 오래된 2 교체)
2 ⇒ [ 5, 2, 1 ] (적재된지 가장 오래된 4 교체)
3 ⇒ [ 5, 2, 3 ] (적재된지 가장 오래된 1 교체)
4 ⇒ [ 4. 2, 3 ] (적재된지 가장 오래된 5 교체)
2 ⇒ [ 4, 2, 3 ] (이미 있으므로 유지)
3 ⇒ [ 4, 2, 3 ] (이미 있으므로 유지)따라서 페이지 폴트 발생 횟수는 4.
최적 페이지 교체 알고리즘의 경우
2 ⇒ [ 2, -, - ] (자리가 있으므로 그냥 삽입)
4 ⇒ [ 2. 4. - ] (자리가 있으므로 그냥 삽입)
1 ⇒ [ 2, 4, 1 ] (자리가 있으므로 그냥 삽입)
4 ⇒ [ 2, 4, 1 ] (이미 있으므로 유지)
5 ⇒ [ 2, 4, 5 ] (오랫동안 사용 안할 1 교체)
2 ⇒ [ 2, 4, 5 ] (이미 있으므로 유지)
3 ⇒ [ 2, 4, 3 ] (오랫동안 사용 안할 5 교체)
4 ⇒ [ 2, 4, 3 ] (이미 있으므로 유지)
2 ⇒ [ 2, 4, 3 ] (이미 있으므로 유지)
3 ⇒ [ 2, 4, 3 ] (이미 있으므로 유지)따라서 페이지 폴트 발생 횟수는 2.
LRU 페이지 교체 알고리즘의 경우
2 ⇒ [ 2, -, - ] (자리가 있으므로 그냥 삽입)
4 ⇒ [ 2. 4. - ] (자리가 있으므로 그냥 삽입)
1 ⇒ [ 2, 4, 1 ] (자리가 있으므로 그냥 삽입)
4 ⇒ [ 2, 4, 1 ] (이미 있으므로 유지)
5 ⇒ [ 5, 4, 1 ] (접근한지 가장 오래된 2 교체)
2 ⇒ [ 5, 4, 2 ] (접근한지 가장 오래된 1 교체)
3 ⇒ [ 5, 3, 2 ] (접근한지 가장 오래된 4 교체)
4 ⇒ [ 4, 3, 2 ] (접근한지 가장 오래된 5 교체)
2 ⇒ [ 4, 3, 2 ] (이미 있으므로 유지)
3 ⇒ [ 4, 3, 2 ] (이미 있으므로 유지)따라서 페이지 폴트 발생 횟수는 4.
그리고 소소한 질의응답.