axnuo

[혼공단 / OS ] 가상 메모리와 파일 시스템 본문

CS/OS

[혼공단 / OS ] 가상 메모리와 파일 시스템

axnuo 2024. 2. 11. 23:06

Chapter 14. 가상 메모리

14-1. 연속 메모리 할당

스와핑

현재 실행되지 않는 프로세스를 쫓아내고 빈 공간에 또 다른 프로세스를 적재해 실행하는 방식

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

메모리 할당

  • 최초 적합⇒ 적재될 수 있는 공간을 발견하는 즉시 메모리를 할당하는 방식으로 검색 최소화 가능
  • 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식
  • 최적 적합
  • 운영체제가 빈 공간을 모두 검색한 후 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식
  • 최악 적합
  • 운영체제가 빈 공간을 모두 검색한 후 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식

외부 단편화

빈 공간보다 큰 프로세스를 적재하기 어려워 메모리가 낭비되는 현상

  • 해결방안
    • 압축 : 흩어져 있는 빈 공간을 하나로 모으는 방식

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) 사용 방식
      • 페이지 폴트율이 높으면 그 프로세스는 너무 적은 프레임을 갖고 있음
      • 페이지 폴트율이 낮으면 그 프로세스는 너무 많은 프레임을 갖고 있음
      • 페이지 폴트율에 상한선과 하한선을 정하고, 그 내부 범위 안에서만 프레임 할당

 

Chapter 15. 파일시스템

  • 파일: 하드 디스크나 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합
    • 이름과 파일을 실행하기 위한 정보, 파일 관련 부가 정보(속성, 혹은 메타데이터)
    • 파일 속성과 유형
  • 디렉터리(윈도우 운영체제에서는 폴더라고 부름)
    • 경로: 디렉터리를 이용해 파일 위치, 파일 이름을 특징짓는 정보
      • 절대 경로: 루트 디렉터리에서 자기 자신까지 이르는 고유한 경로
      • 상대 경로: 현재 디렉터리붜 시작하는 경로
  • 파티셔닝: 저장 장치의 논리적인 영역을 구획하는 작업
  • 포매팅: 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고, 새로운 데이터를 쓸 준비를 하는 작업
  • 파일 할당
    • 연속 할당: 보조기억장치 내 연속적인 블록에 파일을 할당
      • 외부 단편화 야기
    • 연결 할당: 각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당
      • 반드시 첫 번째 블록부터 하나씩 차례대로 읽어야 함
      • 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록 접근 불가
    • 색인 할당: 파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리
  • 파일 시스템
    • FAT 파일 시스템(File Allocation Table)
      • 디렉터리 엔트리에 파일 이름과 파일의 첫 번째 블록 주소가 명시됨
    • 유닉스 파일 시스템
      • 파일마다 i-node가 있고 파티션 내 특정 영역에 모여 있음
  • 저널링 파일 시스템: 작업 로그를 통해 시스템 크래시가 발생했을 때 빠르게 복구하기 위한 방법
  • 마운트: 한 저장 장치의 파일 시스템에서 다른 저장 장치의 파일 시스템에 접근할 수 있도록 파일 시스템을 편입시키는 작업

필수미션

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

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