본문 바로가기
혼공단

[혼공단 10기] 혼자 공부하는 컴퓨터 구조+운영체제 6주차

by ra388 2023. 8. 19.

14장 내용 정리

14-1 연속 메모리 할당

연속 메모리 할당 방식: 프로세스에 연속적인 메모리 공간을 할당하는 방식

 

스와핑: 입출력 작업의 요구로 대기 상태가 된 프로세스오랫동안 사용되지 않은 프로세스임시로 보조기억장치 일부 영역으로 쫓아내고, 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식으로 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시 실행할 수 있다.

  • 스왑 영역: 프로세스들이 쫓겨나는 일부 영역
  • 스왑 아웃: 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것
  • 스왑 인: 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것

메모리 할당 방식

  • 최초 적합: 운영체제가 메모리를 순서대로 검색하다 빈 공간을 발견하면 프로세스를 배치하는 방식.

  • 최적 적합: 메모리 내 빈 공간 중 가장 작은 공간에 프로세스를 배치하는 방식

  • 최악 적합: 메모리 내 빈 공간 중 가장 큰 공간에 프로세스를 배치하는 방식

 

외부 단편화: 메모리 내 공간이 남아있지만 프로세스를 할당하기 어려울 만큼 작은 공간으로 남아있어 용량이 큰 프로세스를 적재하기 어려운 상황을 초래하여 메모리가 낭비되는 현상

 

압축: 외부 단편화를 해결하는 대표적인 방안으로 흩어져 있는 빈 공간들을 하나로 모으는 방식으로 여러 단점이 있다.

  • 빈 공간들을 모으는 동안 시스템은 하던 일을 중지해야 한다.
  • 메모리에 있는 내용을 옮기는 작업은 많은 오버헤드를 야기한다.
  • 오버헤드를 최소화하며 압축할 수 있는지에 대한 명확한 방법을 결정하기 어렵다.

따라서 외부 단편화를 없애는 또 다른 해결방안으로 페이징 기법이 등장했다.


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

가상 메모리: 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술, 크게 페이징과 세그멘테이션이 있다.

 

페이징: 메모리의 물리 주소 공간프레임 단위로 자르고, 프로세스의 논리 주소 공간 페이지 단위로 자른 뒤 각 페이지를 프레임에 할당하는 가상 메모리 관리 기법

  • 페이지 아웃: 페이징 시스템에서의 스왑아웃
  • 페이지 인: 페이징 시스템에서의 스왑인

페이지 테이블: 프로세스를 이루는 페이지가 어느 프레임에 적재되어 있는지 찾기 쉽도록 페이지 번호와 프레임 번호를 짝지어 준다. 물리 주소상에서는 프로세스들이 분산되어 저장되어 있더라도 CPU입장에서 논리 주소는 연속적으로 보일 수 있다.

페이지 테이블 베이스 레지스터(PTBR): 각 프로세스의 페이지 테이블이 적재된 주소로 CPU내에 위치한다.

TLB: 페이지 테이블 베이스 레지스터는 CPU내에 위치해 있어 메모리 접근 시간이 두 배로 늘어난다는 문제가 있다. 이를 해결하기 위해 페이지 테이블의 일부를 저장한 캐시 메모리

  • TLB 히트: CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있는 경우
  • TLB 미스: TLB에 페이지 번호가 없어 페이지가 메모리 내의 페이지 테이블에 접근하는 경우

페이징에서의 주소 변환

페이지 테이블을 통해 논리주소 <페이지 번호, 변위> ➡ 물리 주소 <프레임 번호, 변위>로 변환된다.

ex) 논리주소 <2,3>에 접근할 경우

  1. 2번 페이지의 프레임 번호 확인 -> 2
  2. 물리 주소 공간 내 해당 프레임 번지 확인 -> 8번지
  3. 해당 번지 + 3 -> 11번지

페이지 테이블 엔트리: 페이지 테이블의 각각의 행, 페이지 번호, 프레임 번호 외의 중요한 정보들이 담겨있다.

  • 유효 비트: 현재 해당 페이지에 접근 가능한지의 여부, 현재 페이지가 메모리에 적재되어 있는지 아닌지를 알려주는 비트로 페이지가 메모리에 적재된 경우 1, 적재되어 있지 않다면 0으로 표시되어 있다.
    • 페이지 폴트: 유효 비트가 0인 메모리에 적재되어 있지 않은 페이지로 접근하려고 하는 경우
  • 보호 비트: 페이지 보호 기능을 위해 존재하는 비트, 읽기만 가능한 페이지의 경우 0, 읽고 쓰기가 모두 가능한 경우 1로 나타내며 rwx(Read, Write, eXecute)로 더 복잡하게 구현 가능하다.
  • 참조 비트: CPU가 이 페이지에 접근한 적 있는지 여부, 적재 이후 CPU가 읽거나 쓴 페이지는 1, 적재 이후 한 번도 읽거나 쓴 적이 없는 페이지는 0으로 표시
  • 수정 비트(더티 비트): 해당 페이지에 데이터를 쓴 적 있는지 없는지 수정 여부, 변경된 적 있으면 1, 없으면 0으로 표시한다. 메모리에서 사라질 때 보조기억장치에 쓰기 작업을 할지 안할지 판단하기 위해 존재한다.

14-3 페이지 교체와 프레임 할당

요구 페이징: 프로세스를 메모리에 적재할 때 필요한 페이지만을 메모리에 적재하는 기법

순수 요구 페이징 기법: 아무런 페이지도 적재하지 않은 채 무작정 실행하는 경우로 프로세스의 첫 명령어를 실행하는 순간부터 페이지 폴트가 계속 발생하다 실행에 필요한 페이지가 어느 정도 적재된 이후부터 페이지 폴트 발생 빈도가 떨어진다.

 

페이지 교체 알고리즘: 페이지 폴트를 가장 적게 일으키는 알고리즘을 좋은 알고리즘으로 평가하기 때문에 페이지 폴트 횟수를 알 수 있어야 한다. 페이지 폴트 횟수는 페이지 참조열을 통해 알 수 있다.

 

FIFO 페이지 교체 알고리즘: 가장 먼저 올라온 페이지부터 보조기억장치에 내쫓는 방식

프레임이 3개, 페이지 참조열이 '2 3 1 3 5 2 3 4 2' 인 경우 페이지 폴트는 4번이 된다.

페이지
참조열
2 3 1 3 5 2 3 4 2
프레임 2 2 2 2 5 5 5 4 4
  3 3 3 3 2 2 2 2
    1 1 1 1 3 3 3
보조기억장치         2 3 1 5  

최적 페이지 교체 알고리즘: CPU에 의해 참조되는 횟수를 고려하는 페이지 교체 알고리즘으로, 사용 빈도가 가장 낮은 페이지를 보조기억장치로 내보낸다. 프레임이 3개 페이지 참조열이 '2 3 1 3 5 2 3 4 2'인 경우 페이지 폴트는 2번

페이지
참조열
2 3 1 3 5 2 3 4 2
프레임 2 2 2 2 2 2 2 2 2
  3 3 3 3 3 3 3 3
    1 1 5 5 5 4 4
보조기억장치         1     5  

앞으로 오랫동안 사용되지 않을 페이지를 예측하기 어렵기 때문에 실제 구현은 어렵다. 따라서 주로 다른 페이지 교체 알고리즘의 이론상 성능을 평가하기 위한 목적으로 사용된다.

 

LRU 페이지 교체 알고리즘(Least Recently Used): 가장 오랫동안 사용되지 않은 페이지를 교체하는 알고리즘

다음 예시를 보면 6번째 열에서 5번 페이지가 들어올 때 3번 페이지는 계속해서 사용되었기 때문에 교체하지 않고, 2번 페이지를 보조기억장치로 내보낸다. 프레임이 3개 페이지 참조열이 '2 3 1 3 5 2 3 4 2'인 경우 페이지 폴트는 3번

페이지
참조열
2 3 1 3 5 2 3 4 2
프레임 2 2 2 2 5 5 5 4 4
  3 3 3 3 3 3 3 3
    1 1 1 2 2 2 2
보조기억장치         2 1   5  

스래싱: 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제


15장 내용 정리

15-1 파일과 디렉터리

파일: 일상적으로 컴퓨터를 이용할 때 파일 단위로 이용하는데, 이는 하드 디스크나 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합을 의미한다. 즉, 의미 있고 관련 있는 정보를 모은 논리적 단위

  • 속성(메타데이터): 파일 이루는 부가 정보
  • 파일 유형: 운영체제가 인식하는 파일 종류, 확장자를 이용하여 파일 유형을 알린다.

 

디렉터리: 파일들을 관리하기 위해 이용하며 윈도우에선 폴더라고 부른다

  • 1단계 디렉터리: 모든 파일이 하나의 디렉터리 아래에 있는 구조
  • 트리 구조 디렉터리: 컴퓨터 용량이 커지면서 여러 계층을 가진 디렉터리 구조
    • 루트 디렉터리: 최상위 디렉터리로 슬래시(/)로 표현한다. 
    • 현재 디렉터리 표현은 (.) 상위 디렉터리 표현은 (..)으로 나타낸다.
  •  경로: 디렉터리를 이용해 파일 위치, 파일 이름을 특정 짓는 정보
    • 절대 경로: 루트 디렉터리에서 자기 자신까지 이르는 고유한 경로
    • 상대 경로: 현재 디렉터리부터 시작하는 경로로 현재 디렉터리가 /home 이면 guest 디렉터리의 d.jpg 파일의 상대 경로는 guest/d.jpg가 된다.

15-2 파일 시스템

파일 시스템: 파일과 디렉터리를 보조기억장치에 저장하고 접근할 수 있게 하는 운영체제 내부 프로그램. 대표적으로 FAT 파일 시스템유닉스 파일 시스템이 있다

 

파티셔닝: 저장 장치의 논리적인 영역을 구획하는 작업

  • 파티션: 파티셔닝 작업을 통해 나누어진 영역 하나하나를 뜻함.

포매팅: 저장장치를 완전히 삭제하는 것으로 알고 있는데 정확한 표현은 아니라고 한다. 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지 결정하고 새로운 데이터를 쓸 준비를 하는 작업을 뜻한다. 포매팅할 때 파일 시스템이 결정된다.

 

파일 할당 방법

운영체제는 파일과 디렉터리를 블록 단위로 읽고 쓴다. 하드 디스크의 가장 작은 저장 단위는 섹터지만 운영체제는 하나 이상의 섹터를 블록이라는 단위로 묶은 뒤 관리한다. 연속 할당과 불연속 할당으로 나뉘며 불연속 할당은 연결 할당과 색인 할당으로 나뉜다.

 

연속 할당: 보조기억장치 내 연속적인 블록에 파일을 할당하는 방식 구현이 단순하지만 외부 단편화를 야기한다.

 

연결 할당: 각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당하는 방식으로 데이터를 연결 리스트로 관리한다. 불연속 할당의 일종이기에 파일이 여러 블록에 흩어져 저장되어도 무방하다. 외부 단편화 문제를 해결하지만 다음과 같은 단점이 있다. 대표적으로 FAT 파일 시스템이 있다.

  • 임의 접근 속도가 매우 느리기 때문에 반드시 첫 번째 블록부터 하나씩 읽어야 한다. 즉, 비효율적이다.
  • 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근 불가능하다.

색인 할당: 파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리하는 방식으로 대표적으로 유닉스 파일 시스템이 있다.

 

FAT 파일 시스템(File Allocation Table): 연결 할당 방식의 단점의 근본적인 원인블록 안에 다음 블록의 주소를 저장하였기 때문이다. FAT 파일 시스템은 다음 블록의 주소들을 테이블 형태로 관리하는 파일 할당 테이블을 이용하여 연결 할당의 단점을 상당 부분 해소한다. FAT는 파티션의 앞부분에 만들어진다. 옛날 MS-DOS에서 사용되었고 최근에는 USB 메모리, SD 카드 등 저용량 저장 장치에 사용된다.

 

유닉스 파일 시스템: i-node라는 색인 블록을 이용하여 파일 속성 정보와 열다섯 개의 블록 주소를 저장할 수 있다.

 


기본 미션

p.400의 확인 문제 1번 풀고 인증하기

  • 최초 적합: 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식
  • 최악 적합: 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식
  • 최적 적합: 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치하는 방식

선택 미션

ch.14(14-3) 프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참고열이 '2 3 1 3 5 2 3 4 2 3'일 때 LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기

페이지
참조열
2 3 1 3 5 2 3 4 2
프레임 2 2 2 2 5 5 5 4 4
  3 3 3 3 3 3 3 3
    1 1 1 2 2 2 2
보조기억장치         2 1   5  

총 3번의 페이지 폴트가 발생한다.