[혼공학습단 9기] 혼공컴운 6주차

Pt J·2023년 2월 15일
0
post-thumbnail

학습 범위

운영체제의 메모리 관리 기법인 가상 메모리 관리, 그리고 파일 시스템에 대해 알아가는 시간이다.

가상 메모리

연속 메모리 할당

메모리 공간에 프로세스를 연속적으로 할당하는 방식을 연속 메모리 할당이라고 한다.

프로세스들을 실행하다보면 메모리 공간이 가득 차게 되는데 그러면 새로운 프로세스를 할당할 수 없게 된다.
이 때, 오랫동안 사용하지 않은 프로세스를 보조기억장치 일부 영역으로 임시로 쫒아내고
그렇게 마련된 빈 공간에 새 프로세스를 적재하곤 하는데 이릘 스와핑 swapping 이라고 한다.

  • 스왑 영역 swap space
    쫒겨난 프로세스를 임시로 보관하는 보조기억장치의 일부 영역
  • 스왑 아웃 swap out
    현재 실행되지 않는 프로세스를 메모리에서 스왑 영역으로 옮기는 것
  • 스왑 인 swap in
    스왑 영역에 있던 프로세스를 다시 메모리로 옮겨오는 것
    기존의 물리 주소와는 다른 곳에 적재될 수 있다

이를 통해 프로세스들이 요구하는 메모리 공간 크기가 실제 메모리 크기보다 큰 경우에도
문제 없이 프로세스를 동시에 실행할 수 있다.

메모리 내 빈 공간이 여러 개 있을 때 프로세스를 할당하는 방식은 여러 가지가 있지만
그 중 대표적인 세 가지를 알아보도록 하겠다.

  • 최초 적합 front fit
    운영체제가 메모리 내 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 배치
    검색을 최소화하여 빠른 할당 가능
  • 최적 적합 best fit
    운영체제가 메모리 내 빈 공간을 모두 검색해본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 배치
    잉여 공간의 최소화 가능
  • 최악 접합 worst fit
    운영체제가 메모리 내 빈 공간을 모두 검색해본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 배치

연속 메모리 할당은 단순하고 간편하지만 외부 단편화 external fragmentaion 문제를 내포하고 있다.
이것은 프로세스를 할당하기 어려울 만큼 작은 공간들로 인해 메모리가 낭비되는 현상이다.
이러한 잉여 공간들이 쌓이면 낭비되는 공간이 상당히 많기 때문에 반드시 해결해야 하는 문제다.

외부 단편화 문제를 해결하기 위해 메모리를 압축 compaction 할 수 있는데,
잉여 공간을 한 데 모으는 동안의 오버헤드가 크기 때문에 단점이 많다.

이 문제를 해결하는 다른 방법으로는 페이징 기법이 있다.

더 알아보기

[컴퓨터 공학 기초 강의] 】37강. 연속 메모리 할당

페이징을 통한 가상 메모리 관리

프로세스의 일부만 메모리에 적재하여 실제 물리 메모리보다 더 큰 프로세스를 실행할 수 있는 기법을
가상 메모리 virtual memory 라고 하며, 크게 페이징, 세그멘테이션의 두 가지 기법이 있다.
현재 대부분의 운영체제는 페이징 기법을 통해 가상 메모리를 구현한다.

페이징 paging 은 메모리와 프로세스를 일정한 단위로 자르고
프로세스를 메모리에 불연속적인 조각 단위로 할당하는 기법이다.

  • 페이지 page
    프로세스의 논리 주소 공간을 일정한 크기 단위로 자른 것
  • 프레임 frame
    메모리의 물리 주소 공간을 일정한 크기 단위로 자른 것

페이지와 프레임은 동일한 크기로 설정되며, 이 크기 단위로 메모리 할당이 이루어진다.
(프로세스 크기가 페이지 단위의 배수로 나누어 떨어지지 않기에 마지막 페이지에는 잉여 공간이 생길 수 있는데
이를 내부 단편화 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 number
    접근하고자 하는 페이지가 무엇인지 나타내는 NN 비트
  • 변위 offset
    접근하고자 하는 주소가 페이지 내 어디에 저장되어 있느닞 나타내는, NN 비트를 제외한 나머지 비트

<페이지 번호, 변위>로 구성된 논리 주소는 페이지 테이블을 거쳐 <프레임 번호, 변위>로 구성된 물리 주소로 변환된다.

페이지 테이블의 각각의 행들은 페이지 테이블 엔트리 page table entry 라고 하는데
페이지 번호, 프레임 번호 외에도 유효 비트, 보호 비트, 참조 비트, 수정 비트 등의 정보가 포함되어 있다.

  • 유효 비트 valid bit
    현재 해당 페이지에 접근 가능한지 여부
    아직 적재되지 않았거나 스왑 아웃되었을 경우 0이 되며, 접근 시도 시 페이지 폴트 page fault 예외 발생
  • 보호 비트 protection bit
    읽고 쓰기가 가능한 페이지인지 여부
    쓰기가 가능하면 1, 읽기 전용일 경우 0의 값
    읽기/쓰기/실행하기의 3개 비트로 보다 상세한 권한을 설정하도록 구현할 수도 있다
  • 참조 비트 reference bit
    CPU가 접근한 적 있는지 여부
  • 수정 비트 modified bit
    해당 페이지에 데이터를 쓴 적 있는지 수정 여부
    더티 비트 dirty bit 라고도 한다
    메모리에서 사라질 때 보조기억장치에 쓰기 작업을 해야 하는지 결정

프로세스의 모든 테이블 페이지 엔트리를 메모리에 유지하는 것은 비효율적이기 때문에
계층적 페이징 hierarchical paging 을 통해 여러 단계의 페이지를 두기도 한다.

더 알아보기

[컴퓨터 공학 기초 강의] 38강. 페이징을 통한 가상 메모리 관리】
【↗[저자 GitHub] Intel 페이지 테이블】

페이지 교체와 프레임 할당

프로세스를 메모리에 적재할 때 모든 페이지를 적재하지 않고 필요한 페이지만 적재하는 기법을
요구 페이징 demand paging 이라고 한다.

그 중에서도 처음엔 아무 페이지도 적재하지 않은 채 실행부터 하고서
페이지 폴트가 발생할 때마다 하나씩 적재하는 방식을 순수 요구 페이징 pure demand paging 이라고 한다.

요구 페이징 시스템이 안정적으로 작동하려면 페이지 교체와 프레임 할당이 잘 이루어져야 한다.

요구 페이징 기법으로 페이지를 적재하다보면 메모리가 가득 차게 되어 스왑 아웃을 해야 하는데
어떤 페이지를 스왑 아웃 할 것인지 결정하는 방법을 페이지 교체 알고리즘이라고 한다.
페이지 교체 알고리즘은 페이지 폴트를 적게 일으킬수록 좋은 알고리즘이다.

페이지 교체 알고리즘의 성능 측정 지표가 되는 페이지 폴트 횟수는
페이지 참조열 page reference string 을 통해 알 수 있다.
CPU가 참조하는 페이지 중 연속된 페이지를 생략한 페이지열을 페이지 참조열이라고 한다.

대표적인 페이지 교체 알고리즘으로는 다음과 같은 것들이 있다.

  • FIFO 페이지 교체 알고리즘 First-In First-Out page replacement algorithm
    가장 단순한 방법으로, 메모리에 가장 먼저 올라온 페이지부터 교체 대상으로 삼는 방식
    초기에 적재된 페이지는 초반에만 실행되고 말 수도 있지만,
    프로그램 실행 내내 사용할 내용을 포함할 경우 비효율적일 수 있다
  • 2차 기회 페이지 교체 알고리즘 second chance page replacement algorithm
    FIFO 페이지 교체 알고리즘을 보완하여 두 번째 기회를 주는 방식
    교체 대상 페이지가 참조된 적 없는 페이지일 경우 그냥 교체하지만
    참조된 적 있는 경우 참조 비트를 0으로 만든 후 현재 시각을 적재 시각으로 설정하여
    오래되었지만 자주 쓰이는 페이지가 쫒겨나지 않도록 한다
  • 최적 페이지 교체 알고리즘 optimal page replacement algorithm
    CPU에 의해 참조되는 횟수를 고려하는 방식
    자주 사용될 페이지는 남기고 앞으로 오랫동안 사용하지 않을 페이지는 교체할 수 있도록 한다
    "앞으로 오랫동안 사용하지 않을 페이지"를 예측하기 어려워 실제적으로 사용되기 보다는 이론 상의 성능 지표
  • LRU 페이지 교체 알고리즘 least recently used page replacement algorithm
    최근에 사용되지 않은 페이지는 앞으로도 사용되지 않을 것이라고 예측하는 방식
    마지막 사용 시각을 토대로 사용한지 가장 오래된 페이지를 교체

비효율적인 페이지 교체 알고리즘을 사용할 때뿐만 아니라
프로세스가 사용할 수 있는 프레임 수가 적은 경우에도 페이지 폴트가 자주 발생한다.
이게 과해지면 프로세스 실행 시간보다 페이징에 더 많은 시간을 소요하여 성능 저하가 발생하는데
이러한 문제를 스레싱 thrashing 이라고 한다.

메모리에서 동시 실행되는 프로세스가 늘어 멀티프로그래밍의 정도 degree of multiprogrammming 가 높아지면
어느 정도까지는 CPU 이용률이 높아지며 성능이 좋아지다가 어느 순간 스레싱이 발생하여 성능이 저하된다.
그 근본적인 원인 각 프로세스가 필요로 하는 최소한의 프레임 수가 보장되지 않았기 때문이다.

  • 정적 할당 방식
    프로세스의 실행 과정은 고려하지 않고 단순히 프로세스 크기와 물리 메모리의 크기만 고려한 프레임 할당 방식
    • 균등 할당 equal allocation
      프로세스 개수에 따라 정확히 1/N1/N 하여 할당하는 방식
    • 비례 할당 proportional allocation
      프로세스 크기에 따라 비례하게 할당하는 방식
  • 동적 할당 방식
    프로세스의 실행을 보고 할당할 프레임 수를 결정하는 방식
    • 작업 집합 모델 working set model 을 이용하는 방식
      프로세스가 일정 기간 동안 참조한 페이지 집합을 기억하여 작업 집합 working set 을 만들고
      이 작업 집합의 크기에 따라 프레임을 할당하는 방식
    • 페이지 폴트 빈도 page fault frequency 를 이용하는 방식
      페이지 폴트율이 높으면 프레임 수가 적다고 판단하여 늘리고
      페이지 폴트율이 낮으면 프레임 수가 많다고 판단하여 줄이는 방식

더 알아보기

[컴퓨터 공학 기초 강의] 39강. 페이지 교체와 프레임 할당】
[컴퓨터 공학 기초 강의] 40강. 페이징의 이점과 계층적 페이징】

파일 시스템

파일과 디렉토리

  • 파일 file
    보조기억장치에 저장된 관련 정보의 집합
    의미 있고 관련 있는 정보를 모은 논리적 단위
    속성 attribute 또는 메타데이터 metadata 라고 불리는 부가 정보 포함
    생성, 삭제, 열기, 닫기, 읽기, 쓰기 등의 작업을 위해 시스템 호출을 사용해야 한다
  • 디렉터리 directory
    파일을 일목요연하게 관리하기 위한 개념
    Windows 운영체제의 경우 폴더 folder 라고 한다
    생성, 삭제, 열기, 닫기, 읽기 등의 작업을 위해 시스템 호출을 사용해야 한다
    많은 운영체제에서는 파일 속성 대신 디렉터리 내부 대상에 대한 정보를 가진 특별한 형태의 파일로 간주
    테이블 형태로 데이터를 가지며 각 엔트리는 디렉터리 이름과 보조기억장치 상의 위치를 알 수 있는 정보 등을 포함
    • 1단계 디렉터리 single-level directory
      모든 파일이 하나의 디렉터리 아래에 있는 구조
      옛날 운영체제에서 사용하던 방식
    • 트리 구조 디렉터리 tree-structured directory
      여러 계층으로 이루어진 디렉터리 구조
      최상위 디렉터리 아래에 서브 디렉터리가 부모-자식 관계를 이루고 있다
      최상위 디렉터리는 루트 디렉터리 root directory 라고 하며 /로 표현한다
  • 경로 path
    트리 구조 디렉터리를 사용하며 생긴 개념으로, 파일의 위치를 짓는 정보
    유닉스 계열의 운영체제에서는 계층적인 디렉터리 사이의 구분자로 /를 사용한다
    Windows 운영체제에서는 계층적인 디렉터리 사이의 구분자로 \를 사용한다
    • 절대 경로 absolute path
      루트 디렉터리에서 자기 자신까지 이르는 고유한 경로
      이름이 같아도 절대 경로가 다르다면 다른 파일
    • 상대 경로 relative path
      현재 디렉터리부터 특정 파일까지 이르는 상대적 경로
      주로 현재 디렉토리는 ., 상위 디렉토리는 ..로 표현한다

파일 속성은 운영체제마다 차이가 있지만 주로 다음과 같은 것들이 있다.

이름의미
유형운영체제가 인지하는 파일의 종류. 주로 확장자 extension 를 통해 파악.
크기파일의 현재 크기와 허용 가능한 최대 크기.
보호어떤 사용자가 해당 파일을 일고, 쓰고, 실행할 수 있는지 여부.
생성 날짜파일이 생성된 날짜.
마지막 접근 날짜파일에 마지막으로 접근한 날짜.
마지막 수정 날짜파일을 마지막으로 수정한 날짜.
생성자파일을 생성한 사용자.
소유자파일을 소유한 사용자.
위치파일의 보조기억장치상의 현재 위치.

더 알아보기

[컴퓨터 공학 기초 강의] 41강. 파일과 디렉터리】

파일 시스템

  • 파일 시스템
    파일과 디렉터리를 보조기억장치에 일목요연하게 저장하고 접근할 수 있게 하는 운영체제 내부 프로그램
    보조기억장치에 파일 시스템을 사용하려면 파티셔닝과 포매팅을 해야 한다
    • 파티셔닝 partitioning
      파일 시스템을 사용하려면 저장 장치의 논리적인 영역을 구획하는 작업
      파티셔닝을 통해 나누어진 논리적인 역역 하나하나를 파티션 partition 이라고 한다
    • 포매팅 formatting
      파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지 결정
      새로운 데이터를 쓸 준비를 하는 작업
      어떤 종류의 파일 시스템을 사용할지 결정
      파티션마다 다른 파일 시스템으로 포매팅할 수도 있다

운영체제는 파일과 디렉터리를 블록 block 단위로 읽고 쓴다.
(3주차 때 다뤘던, 섹터가 모여 있는 논리 단위 그 블록 맞다)
하드디스크 내에는 여러 개의 블럭이 있고 몇 번째 블록인지 주소를 통해 각각의 블록을 식별한다.
블록들에 파일을 할당하는 방식은 크게 연속 할당과 불연속 할당으로 나뉘며
현대의 운영체제는 불연속 할당 방식을 사용한다.

  • 파일 할당
    • 연속 할당 contiguous allocation
      보조기억장치 내 연속적인 블록에 파일을 할당하는 방식
      파일에 접근하기 위해서는 첫 번째 블록의 주소와 블록 단위의 길이만 알면 된다
      엔트리 구성: 이름, 첫 번째 블록 주소, 길이
      구현은 단순하지만 외부 단편화 발생 가능
    • 불연속 할당 noncontiguous allocation
      • 연결 할당 linked allocation
        각 블록 일부에 다음 블록의 주소를 저장하여 다음 블록을 가리키는 형태로 할당하는 방식
        연결 리스트 형태
        마지막 블록에는 다음 블록이 없다는 특별한 표시자 기록 (예를 들면 -1)
        첫번째 블록 주소만 알면 순차적으로 따라갈 수 있다
        엔트리 구성: 이름, 첫 번째 블록 주소, 길이
        순차적으로 접근해야 하며 중간에 오류 발생 시 그 이후로는 접근할 수 없다는 단점
      • 색인 할당 indexed allocation
        파일의 모든 블록 주소를 색인 블록 index block 이라는 하나의 블록에 모아 관리하는 방식
        색인 블록 주소만 알면 모든 블록에 임의 접근 할 수 있다
        엔트리 구성: 이름, 색인 블록 주소

다양한 파일 시스템이 존재하지만 대표적인 파일 시스템으로 두 가지를 언급할 수 있다.

  • FAT 파일 시스템
    USB 메모리, SD 카드 등의 저용량 저장 장치에서 사용되는 방식 (과거 MS-DOS에서도 사용했다)
    연결 할당의 단점을 보완한 파일 시스템
    각 블록에 포함된 다음 블록의 주소들을 한 데 모아 파일 할당 테이블(FAT) file allocation table 로 관리
    (색인 할당은 파일 내에 해당 파일의 모든 블록 주소; FAT는 전체 파일 시스템에 대한 모든 다음 블록 주소)
    FAT12, FAT16, FAT32 등으로 표현할 때 뒤의 숫자는 한 블록의 비트 수
    FAT는 파티션의 앞부분에 만들어지며 루트 디렉토리가 그 뒤를 잇고, 그 뒷부분에 다른 데이터들이 저장된다
  • 유닉스 파일 시스템
    유닉스 계열 운영체제에서 사용되는 방식
    색인 할당 기반으로 구현되어 있으며 색인 블록을 i-node 라고 한다
    i-node에는 파일 속성 정보와 열다섯 개의 블록 주소 저장
    파일마다 i-node가 있고 i-node마다 번호가 부여되어 있으며 i-node는 파티션 내 특정 영역에 모여 있다
    • 직접 블록 direct block
      파일 데이터가 저장된 블록
      i-node가 가진 열다섯 개의 블록 주소 중 처음 열두 개에 그 주소를 직접적으로 명시
    • 단일 간접 블록 single indirect block
      직접 블록의 주소들이 저장된 블록
      i-node의 열두 개의 블록으로 표현이 안될 때 열세 번째 주소에는 단일 간접 블록 주소 존재
    • 이중 간접 블록 double indirect block
      단일 간접 블록의 주소들이 저장된 블록
      i-node의 단일 간접 블록까지 사용해도 표현이 안될 때 열네 번째 주소에는 이중 간접 블록 주소 존재
    • 삼중 간접 블록 triple indirect block
      이중 간접 블록의 주소들이 저장된 블록
      i-node의 이중 간접 블록까지 사용해도 표현이 안될 때 열다섯 번째 주소에는 이중 간접 블록 주소 존재
      웬만한 파일은 여기까지 이용하면 다 표현 가능하다

다음은 FAT 파일 시스템과 유닉스 파일 시스템에서
각각 /home/minchul/a.ash 를 찾아가는 예시다.

그 외에도 Windows 운영체제에서 사용하는 NT 파일 시스템(NTFS) 이나
Linux 운영체제에서 사용하는 ext 파일 시스템
다양한 파일 시스템이 존재한다.

더 알아보기

[컴퓨터 공학 기초 강의] 42강. 파일 시스템】
【↗[저자 GitHub] 다양한 파일 시스템】

미션 수행하기

이번 주 미션

  • 기본 미션 | p. 400의 확인 문제 1번 풀고 인증하기
  • 선택 미션 | Ch.14(14-3) 프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2414523423' 일 때 FIFO, 최적 페이지, LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기

기본 미션

미션은 P.400의 1번 문제뿐이지만, 이왕 학습하고 확인 문제를 푸는 거 다 풀어보자.

P.400~401 [14-1 | 연속 메모리 할당] 확인 문제

  1. 메모리 할당 방식에 대한 설명으로 올바른 것을 다음 보기에서 찾아 써 보세요.
    [ 보기 | 최초 적합, 최적 적합, 최악 적합 ]
  • [① 최초 적합 ]: 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식
  • [② 최악 적합 ]: 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식
  • [③ 최적 적합 ]: 프로세스가 적재될 수 있는 가장 자은 공간에 프로세스를 배치하는 방식

(요것이 이번주 기본 미션!!)

  1. 외부 단편화에 대한 설명으로 옳지 않은 것으로 고르세요.
    ① 외부 단편화가 발생하면 메모리가 낭비됩니다.
    ② 가상 메모리 기법 중 페이징을 이용하면 외부 단편화를 해결할 수 있습니다.
    ③ 메모리 압축을 통해 외부 단편화를 해결할 수 있습니다.
    ④ 외부 단편화가 발생한 공간에 모든 프로세스를 배치할 수 있습니다. → 해당 메모리 공간보다 크지 않은 프로세스만 가능.
  1. 메모리 스와핑에 대한 설명으로 옳은 것을 고르세요.
    ① 메모리에서 보조기억장치로 프로세스를 내쫒는 것을 스왑 인이라고 합니다. → 그건 스왑 아웃.
    ② 보조기억장치에서 메모리로 프로세스를 적재하는 것을 스왑 아웃이라고 합니다. 그건 스왑 인.
    ③ CPU를 관리하는 기법입니다.→ 메모리를 관리.
    ④ 메모리에서 사용되지 않는 일부 프로세스를 보조기억장치로 내보내고 실행할 프로세스를 메모리에 적재하는 방식입니다.
  1. 연속 메모리 할당에 대한 설명으로 옳지 않은 것을 고르세요.
    ① 외부 단편화가 발생하지 않습니다. → 외부 단편화는 연속 메모리 할당에 내재된 이슈.
    ② 프로세스를 메모리에 연속적으로 할당하는 방법입니다.
    ③ 메모리 스와핑을 이용할 수 있습니다.
    ④ 최초 적합, 최적 적합, 최악 적합 방식으로 프로세스를 적재할 수 있습니다.

P.422~423 [14-2 | 페이징을 통한 가상 메모리 관리] 확인 문제

  1. 페이징에 대한 설명으로 옳지 않은 것을 골라보세요.
    ① 페이징은 가상 메모리 관리 기법이다.
    ② 페이징을 이용하면 물리 메모리보다 큰 프로세스도 실행할 수 있다.
    ③ PTBR은 각 프로세스가 적제된 페이지 테이블을 가리킵니다.
    ④ TLB 히트가 발생하면 CPU는 메모리에 두 번 접근해야 합니다. → TLB 미스 발생 시 두 번 접근.
  1. 다음 그림은 페이지 테이블 엔트리를 간략화한 표입니다. 그림에 대한 설명으로 옳지 않은 것을 골라보세요.
페이지 번호프레임 번호유효 비트보호 비트 r보호 비트 w보호비트 x참조 비트수정 비트
23111101

① 2번 페이지는 수정된 적이 있습니다.
② 2번 페이지는 CPU가 읽고 쓰고 실행할 수 있습니다.
③ 2번 페이지는 메모리에 적재되어 있지 않습니다. → 적재되어 유효 비트가 1.
④ 2번 페이지는 CPU에 의해 참조된 적이 없습니다.

  1. 페이지 테이블과 관련한 설명으로 옳지 않은 것을 고르세요.
    ① 프로세스마다 페이지 테이블을 가지고 있습니다.
    ② 페이지 테이블을 사용하는 컴퓨터는 페이징 기법을 사용하지 못합니다. → 그럼 그건 무얼 위한 페이지 테이블인가.
    ③ PTBR는 각 프로세스의 페이지 테이블을 가리킵니다.
    ④ 페이지 테이블은 특정 페이지가 어떠한 프레임에 적재되어 있는지 알려줍니다.
  1. TLB와 관련한 설명으로 옳은 것을 고르세요.
    ① 페이지 테이블의 캐시 메모리입니다.
    ② TLB 히트가 일어나면 메모리를 두 번 참조해야 합니다. → 그건 TLB 미스.
    ③ TLB 미스가 일어나면 메모리를 한 번만 참조해도 됩니다. → 그건 TLB 히트/.
    ④ TLB는 입출력장치의 일종입니다. → 캐시 메모리.

P.437 [14-3 | 페이지 교체와 프레임 할당] 확인 문제

  1. 프로세스가 사용할 수 있는 프레임이 세 개 있고, 페이지 참조열이 아래와 같다고 가정해보겠습니다. 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.
  1. 프레임 할당과 관련된 설명으로 옳지 않은 것을 고르세요.
    ① 균등 할당은 모든 프로세스에 동일한 프레임을 배분하는 방식입니다.
    ② 비례 할당은 프로세스 크기에 따라 프레임을 배분하는 방식입니다.
    ③ 작업 집합 모델 기반 프레임 할당은 작업 집합의 크기만큼만 프레임을 할당하는 방식입니다.
    ④ 페이지 폴트율 기반 프레임 할당은 페이지 폴트율의 상한선과 무관하게 프레임을 할당하는 방식입니다. → 상한선과 하한선 모두 고려.

P.450~451 [15-1 | 파일과 디렉토리] 확인 문제

  1. 파일과 관련한 설명으로 옳지 않은 것을 고르세요.
    ① 파일은 보조기억장치에 저장된 관련 정보의 집합을 의미합니다.
    ② 모든 파일에는 고유한 절대 경로가 있습니다.
    ③ 운영체제는 파일을 다루기 위한 시스템 호출을 제공합니다.
    ④ 확장자는 파일이 마지막으로 수정된 날짜를 나타내기 위한 정보입니다. → 파일의 유형을 나타내기 위한 정보.
  1. 다음 그림을 참고하여 질문에 답하세요.

① 현재 작업 디렉터리가 /home 일 때 c.tar의 상대 경로는 무엇인가요? minchul/c.tar
② 현재 작업 디렉터리가 /home 일 때 c.tar의 절대 경로는 무엇인가요? /home/minchul/c.tar

  1. 디렉터리와 관련한 정보로 옳지 않은 것을 고르세요.
    ① 디렉터리는 보조기억장치에 저장되어 있지 않습니다. → 그럼 어디에 있나.
    ② 디렉터리 엔트리에는 해당 디렉터리에 저장된 대상들에 대한 정보가 담깁니다.
    ③ 운영체제는 디렉터리를 다루는 다양한 시스템 호출을 제공합니다.
    ④ 최상위 디렉터리를 루트 디렉터리라고 합니다.

P.478~479 [15-2 | 파일 시스템] 확인 문제

  1. 파일 할당 방법에 대한 설명으로 옳지 않은 것을 고르세요.
    ① 연속 할당은 외부 단편화가 발생할 수 있습니다.
    ② 연결 할당은 파일에 보조기억장치 내에 파일을 연속적인 블록으로 할당하는 방식입니다. → 그건 연속 할당. 연결 할당은 연결 리스트처럼.
    ③ 색인 할당은 파일의 모든 블록 주소를 색인 블록에 모아 관리하는 방식입니다.
    ④ 파일 시스템은 블록 단위로 파일을 읽고 씁니다.

저 "파일에"는 빠지는 게 맞는 것 같은디
으앜 책에 문항 뒤에 마침표 빠졌는데 너무 사소한 이슈인가

  1. FAT 파일 시스템에 대한 설명으로 옳지 않은 것을 고르세요.
    ① 연결 할당 기반 파일 시스템입니다.
    ② FAT(파일 할당 테이블)를 사용하는 파일 시스템입니다.
    ③ 파일의 속성은 디렉터리 엔트리에 명시됩니다.
    ④ 블록마다 다음 블록의 주소를 저장합니다. → FAT에 모여 있다.
  1. 유닉스 파일 시스템에 대한 설명으로 옳지 않은 것을 고르세요.
    ① 연속 할당 기반 파일 시스템입니다. → 불연속 할당 중 색인 할당 기반.
    ② i-node는 파일의 데이터 블록 주소를 저장합니다.
    ③ 파일의 크기가 크면 i-node는 단일 간접 블록, 이중 간접 블록, 삼중 간접 블록을 가리킵니다.
    ④ 파일의 속성은 i-node에 명시됩니다.
  1. 파티셔닝과 포매팅에 대한 설명으로 옳지 않은 것을 고르세요.
    ① 파티셔닝과 포매팅 작업을 거치지 않고도 파일 시스템을 이용할 수 있습니다. → 어떤 파일 시스템을 이용하는지 알 수 없어 이용 불가.
    ② 파티셔닝은 보조기억장치에 논리적인 영역을 구획하는 작업을 의미합니다.
    ③ 포매팅 작업을 거치면 파일 시스템이 결정됩니다.
    ④ 파티션마다 각기 다른 파일 시스템을 이용할 수 있습니다.

선택 미션

가정

  • 프레임 수: 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.


여담

그리고 소소한 질의응답.

profile
Peter J Online Space - since July 2020

0개의 댓글