본문 바로가기
서평활동

혼공 컴운 - 6주차 정리

by 디지털노마더 2023. 2. 19.


14장. 가상 메모리

14-1. 연속 메모리 할당

스와핑

  • 메모리에서 미사용 상태인 일부 프로세스를 보조 기억 장치로 보내고 실행할 프로세스를 메모리에 적재하는 메모리 기법
  • 스왑 영역 : 프로세스가 쫓겨나는 보조 기억 장치의 일부 영역
  • 스왑 아웃 : 사용되지 않는 프로세스들이 메모리에서 스왑 영역으로 보내지는 것
  • 스왑 인 : 스왑 영역에서 메모리로 적재되는 것.

메모리 할당

  • 비어있는 메모리 공간에 프로세스를 연속적으로 할당하는 방식

최초 적합 (First Fit)

  • 프로세스가 적재될 수 있는 공간을 발견하는 즉시 메모리를 할당하는 방식
  • 검색 최소화, 빠른 할당 가능

최적 적합 (Best Fit)

  • 운영체제가 메모리의 빈 공간을 모두 검색하고, 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스 배치

최악 적합 (Worst Fit)

  • 운영체제가 메모리의 빈 공간을 모두 검색하고, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스 배치

외부 단편화 (External Fragmentation)

  • 프로세스들이 메모리에 연속적으로 할당되고 종료되는 과정을 반복
  • 프로세스 사이에 빈 메모리 공간이 생김
  • 빈 메모리 공간을 합쳐서 보면 충분한 공간이지만, 프로세스를 적재할 수 없는 상황 : 외부 단편화
  • 메모리 낭비!

압축

  • 외부 단편화를 해결하는 방법. 메모리 조각 모음
  • 비어있는 공간들을 하나로 모으는 방식
  • 이 과정에서 시스템은 하던 일을 중지해야하고, 메모리의 내용 옮기는 과정에서 많은 오버헤드 야기
  • -> 가상 메모리 기법 중 페이징 기법이 등장

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

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

페이징

  • 프로세스의 논리 주소 공간을 페이지라는 단위로 자르고
  • 메모리 물리 주소 공간을 프레임이라는 페이지와 동일한 크기의 단위로 자르고
  • 페이지를 프레임에 할당하는 것이 페이징
  • 프로세스 단위가 아닌 프레임 단위로 페이지 아웃, 페이지 인

페이지 테이블

  • 프로세스가 메모리에 불연속적으로 적재되어 있으면 CPU는 순차적 실행 불가 : 다음에 실행할 명령어 위치 찾기 힘듦
  • 실제 메모리 물리 주소에서는 불연속적이더라도 CPU가 바라보는 논리 주소에는 연속적으로 배치되도록 하는 것이 페이지 테이블
  • 페이지 번호와 프레임 번호를 이어줌
  • 프로세스마다 프로세스 페이지 테이블이 있음
  • CPU에서 0, 1, 2를 페이지 테이블을 통해 물리 주소의 프레임 위치로 찾아 감
  • 내부 단편화 발생 가능
    • 프로세스를 페이지라는 단위로 자르는데, 남는 부분이 있음.
    • 프레임보다 작은 크기의 페이지를 넣게 되면, 메모리에 남는 부분이 생긴다. -> 내부 단편화
    • 일부 운영체제 (리눅스) 에서는 기본 페이지 크기보다 더 큰 페이지를 허용하여 메모리에 유지하는 경우도 있음 (대형 페이지 huge page) 라고 함
  • 페이지 테이블 베이스 레지스터 (PTBR : Page Table Base Register) : CPU 내에서 각 프로세스의 페이지 테이블이 적재된 주소를 가리킴
  • 메모리 접근 시간이 두 배로 늘어남
    • 메모리에 있는 페이지 테이블을 보기 위해
    • 페이지 테이블을 통해 알게 된 프레임에 접근하기 위해
  • CPU 곁에 (MMU 내에) TLB Translation Lookaside Buffer라는 페이지 테이블 캐시 메모리를 둠
    • 참조 지역성에 근거해 최근 사용된 페이지 위주로 저장
    • TLB 히트 : 논리 주소에 대한 페이지 번호가 TLB에 있는 경우
    • TLB 미스 : 논리 주소에 대한 페이지 번호가 TLB에 없는 경우 (메모리의 페이지 테이블에 접근해야 함)

페이징 주소 변환

  • 특정 주소에 접근하기 위해 필요한 정보
    • 어떤 페이지, 프레임에 접근하고 싶은지
    • 접근하려는 주소가 그 페이지, 프레임으로부터 얼마나 떨어져 있는지
  • 논리주소는 페이지 번호와 변위로 이뤄져있음
  • 논리주소 <페이지 번호, 변위> -> 페이지 테이블 -> 물리주소 <프레임 번호, 변위> (변위 값은 동일)

페이지 테이블 엔트리

  • 페이지 테이블 엔트리 PTE Page Table Entry : 페이지 테이블의 각 행
  • 페이지 번호, 프레임 번호, 유효 비트, 보호 비트, 참조 비트, 수정 비트

유효 비트 (Valid Bit)

  • 현재 해당 페이지 접근 가능 여부
  • 페이지가 보조기억장치(스왑 영역)에 있는 경우는 메모리에 적재되어 있기 않기 때문에 접근 불가
  • 메모리에 없는 페이지(유표비트가 0)로 접근하고자하면 페이지 폴트 예외 발생 - 하드웨어 인터럽트 처리 방식처럼 처리
  • CPU는 기존 작업 백업
  • 페이지 폴트 처리 루틴 실행
    • 페이지를 메모리로 가져오고 유효 비트를 1로 변경
  • CPU는 해당 페이지에 접근 가능

보호 비트 (Protection Bit)

  • 페이지 보호 기능. 읽고 쓰기가 가능한 페이지인지, 읽기만 가능한 페이지인지 표기
  • 접근권한을 제한하여 페이지 보호
  • 읽기, 쓰기, 읽기/실행, 읽기/쓰기/실행

참조 비트 Reference Bit

  • CPU가 이 페이지에 접근한 적 있는지

수정 비트 Modified bit,  더티 비트 Dirty bit

  • 데이터를 쓴 적이 있는지 없는지 수정 여부
  • 페이지가 메모리에서 사라질 때 보조기억장치에 쓰기 작업을 해야하는지, 할 필요가 없는지 판단

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

요구 페이징

  • 필요한 페이지만을 메모리에 적재하는 기법
  • 순수 요구 페이징 기법 : 메모리에 페이지 적재하지 않은 채로 시작. 초기에는 페이지 폴트 발생. 이후에는 페이지 폴트 빈도 줄음
  • 페이징 시스템이 안정적으로 작동하려면 페이지교체, 프레임할당이 원활히 이루어져야 함

페이지 교체 알고리즘

  • 메모리에서 쫓아낼 페이지를 결정하는 방법
  • 페이지 폴트 횟수를 알아야하며, 이는 페이지 참조열로 알 수 있음
    • 페이지 참조열 : CPU가 참조하는 페이지들 중 연속된 페이지를 생략한 페이지열

FIFO 페이지 교체 알고리즘

  • 메모리에 가장 먼저 올라온 페이지부터 내쫓음
  • 구현 간단. 효율 낮음
  • 2차 기회 페이지 교체 알고리즘 : FIFO 페이지 알고리즘 + 페이지의 참조 비트 참고

최적 페이지 교체 알고리즘

  • 앞으로 사용할 빈도가 가장 낮은 페이지를 내쫓음
  • 페이지 폴트율 제일 낮음
  • 구현 어려움

LRU 페이지 교체 알고리즘

  • 오랫동안 사용하지 않은 페이지를 내쫓음

스래싱과 프레임 할당

  • 스래싱 (Thrashing) : 프로세스가 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저하되는 문제
    • 값이 높으면 CPU 효율 높음
    • 값이 낮으면 CPU 효율 낮음
  • 멀티프로그래밍 정도 : 현재 메모리에 동시에 실행 중인 프로세스의 양
  • 멀티프로그래밍 정도를 지나치게 높이면 각 프로세스가 사용가능한 프레임수가 적어지고, 페이지 폴트는 빈번하게 발생. CPU 효율 저하
    • CPU 성능 좋아도 메모리에서 동시 실행 프로세스 수용 못하면 컴퓨터 성능 저하

프레임 할당 방식

  • 정적 할당 방식 : 프로세스 실행 과정 고려 없이 프로세스 크기, 물리 메모리 크기만 고려
    • 균등 할당 : 모든 프로세스에 균등하게 프레임 할당
      • 프로세스 크기가 각기 다르므로 비추천
    • 비례 할당 : 프로세스 크기 크면 많은 프레임을, 작으면 적은 프레임을 할당
  • 동적 할당 방식 : 프로세스 실행을 보고 할당할 프레임 수 결정
    • 작업 집합 모델 사용 방식
      • 작업 집합 : 실행 중인 프로세스가 일정 시간 동안 참조한 페이지의 집합
      • 스래싱은 빈번한 페이지 교체에 의해 발생
      • 프로세스가 일정 기간 동안 참조한 페이지 집합을 기억하여 빈번한 페이지 교체 방지
      • CPU가 과거에 주로 참조한 페이지를 작업 집합에 포함한다면, 운영체제는 작업 집합의 크기만큼만 프레임 할당
    • 페이지 폴트 빈도 (PFF) 사용 방식
      • 페이지 폴트율이 높으면 그 프로세스는 너무 적은 프레임을 갖고 있음
      • 페이지 폴트율이 낮으면 그 프로세스는 너무 많은 프레임을 갖고 있음
      • 페이지 폴트율에 상한선과 하한선을 정하고, 그 내부 범위 안에서만 프레임 할당

15장. 파일 시스템

1. 파일과 디렉터리

(1) 파일

  • 파일 : 보조기억장치에 저장된 관련 정보의 집합, 의미 있고 관련 있는 정보를 모은 논리적인 단위
  • 파일은 이름, 파일을 실행하기 위한 정보, 파일 관련 부가 정보가 있으며 부가 정보를 속성(attribute) 또는 메타데이터(metadata) 라고 부름
  • 파일 연산을 위한 시스템
    • 파일을 다루는 모든 작업은 운영체제에 의해 이루어지며 어떤 응용 프로그램도 파일을 조작할 수 없고 운영체제에게 요청해야 함
    • 이를 위해 운영체제는 파일 연산을 위한 시스템 호출을 제공
    • 파일 생성 / 삭제 / 열기 /닫기 / 읽기 / 쓰기
  • 파일 속성과 유형
유형 운영체제가 인지하는 파일의 종류를 나타냄, 파일 이름 뒤에 확장자를 이용
크기 파일의 현재 크기와 허용 가능한 최대 크기를 나타냄
보호 어떤 사용자가 해당 파일을 읽고 쓰고 실행할 수 있는지 나타냄
생성 날짜 파일이 생성된 날짜
마지막 접근 날짜 파일에 마지막으로 접근한 날짜
마지막 수정 날짜 파일이 마지막으로 수정된 날짜
생성자 파일을 생성한 사용자를 나타냄
소유자 파일을 소유한 사용자를 나타냄
위치 파일의 보조기억장치 상의 현재 위치를 나타냄

(2) 디렉터리

  • 파일들을 일목요연하게 관리하기 위해 이용하며, 윈도우 운영체제에서는 디렉터리를 폴더라고 부름
  • 트리 구조 디렉터리
    • 최상위 디렉터리인 루트 디렉터리(/) 아래에 여러 서브 디렉터리가 존재
    • 윈도우 운영체제 ex) C:\로 표현
    • 경로(path) : 디렉터리를 이용해 파일 위치, 파일 이름을 특정 짓는 정보
  • 절대 경로와 상대 경로
    • 절대 경로(absolute path) : 루트 디렉터리부터 시작하는 경로
      • /->home->user 구조에서 user 디렉터리 내의 test.jpg -> /home/user/test.jpg
    • 상대 경로(relative path) : 현재 디렉터리부터 시작하는 경로
      • 위의 구조를 가진 상황에서 현재 디렉터리가 /home일 경우 test.jpg -> user/test.jpg
    • 상대 경로를 나타내는 또 다른 방법
      • 대부분의 운영체제는 현재 작업 디렉터리를 마침표(.)로 나타냄
      • 현재 작업 디렉터리의 상위 디렉터(부모 디렉터)는 마침표 두 번(..)으로 나타냄
      • 위에서 알아본 상대 경로를 다음과 같이 표현할 수 있음
        • ./user/test.jpg (home의 /user/test.jpg)
  • 디렉터리 연산을 위한 시스템 호출
    • 파일과 마찬가지로 운영체제는 디렉터리 연산을 위한 시스템 호출을 제공
    • 디렉터리 생성 / 삭제 / 열기 / 닫기 / 읽기
  • 디렉터리 엔트리
    • 디렉터리와 파일은 다른 별개의 존재가 아니며, 디렉터리는 그저 특별한 형태의 파일로 간주
    • 파일이 내부에 해당 파일과 관련된 정보를 담고 있다면 디렉터리는 내부 해당 디렉터리에 담겨 있는 대상과 관련된 정보를 담고 있으며 이는 테이블 형태로 구성됨
    • 즉, 디렉터리는 보조기억장치에 테이블 형태의 정보로 저장됨
    • 디렉터리 엔트리(행)에 담기는 정보는 파일 시스템마다 차이가 있으나, 공통적으로 디렉터리에 포함된 대상의 이름과 그 대상이 보조기억장치 내에 저장된 위치를 유추할 수 있는 정보가 담김

[ 기본 미션 ]

p. 400 - 확인 문제 1번

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

 

[ 선택 미션 ]

프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2414523423' 일 때 FIFO, 최적 페이지, LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는가?

 

FIFO 페이지 교체 알고리즘 (쌓인 순서대로 페이지를 교체)

 : 페이지 폴트 횟수 4번

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


최적 페이지 교체 알고리즘 (사용 빈도가 가장 낮은 페이지를 교체)

 : 페이지 폴트 횟수 2번

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

 

LRU 페이지 교체 알고리즘 (가장 오랫동안 미사용한 페이지 교체)

 : 페이지 폴트 횟수 4번

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

 

'서평활동' 카테고리의 다른 글

혼공 컴운 회고  (0) 2023.02.19
혼공 컴운 - 5주차 정리  (0) 2023.02.11
혼공 컴운 - 4주차 정리  (0) 2023.02.06
혼공 컴운 - 3주차 정리  (0) 2023.01.25
혼공 컴운 - 2주차 정리  (0) 2023.01.15

댓글