[운영체제] 가상 메모리, 파일 시스템, 부팅

seonja kim·2021년 10월 15일
0

의미

폰노이만 구조 기반이므로 모든 코드는 실행을 위해서는 반드시 메모리에 있어야 함

  • 통상적으로 메모리는 8, 16GB이고 리눅스의 경우 하나의 프로세스가 4GB임
  • 그러나 실제 사용하는 메모리 자체는 작다는 점에 착안하여 고안된 기술
  • 프로세스 간 공간 분리로 프로세스 이슈가 전체 시스템에 영향을 주지 않을 수 있음

참고

  • 가상 메모리는 배치 처리 시스템과 같이 하나의 프로세스만 실행 가능한 시스템에서는 불필요
  • 여러 프로세스를 동시에 실행하는 시스템에서 메모리 용량 부족 이슈, 프로세스 메모리 영역 간에 침범 이슈를 해결하기 위해서 사용

작동 원리

  • virtual address (가상 주소): 프로세스가 참조하는 주소
  • physical address (물리 주소): 실제 메모리 주소

모든 프로세스는 0-4GB의 가상 주소를 가지게 되고 실제 실행되는 가상 주소만 물리 주소로 변환이 되어 메모리에 올라가게 되는데 해당 변환에도 시간이 소요되므로 MMU라는 하드웨어 장치의 도움을 받는다.

  • MMU (Memory Management Unit)
    - CPU에 코드 실행시, 가상 주소 메모리 접근이 필요할 때, 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치

작동방식

페이징 시스템

  • 페이징 개념
    - 크기가 동일한 페이지로 가상 주소 공간과 이에 매칭하는 물리 주소 공간을 관리
    - 하드웨어 지원이 필요
    - 예) Intel x86 시스템(32bit)에서는 4KB, 2KB, 1GB 단위로 지원
    - 리눅스에서는 4KB로 paging
    - 페이지 번호를 기반으로 가상 주소/ 물리 주소 매핑 정보를 기록/사용

페이지 테이블

  • page table
    - 물리 주소에 있는 페이지 번호와 해당 페이지의 첫 물리 주소 정보를 매핑한 표
    • 가상주소 v = (p, d)라면
      - p: 페이지 번호
      - d: 페이지 처음부터 얼마 떨어진 위치인지 (변위라고 함)
  • paging system 동작
    - 해당 프로세스에서 특정 가상 주소 엑세스를 하려면
    - 해당 프로세스의 page table에 해당 가상 주소가 포함된 page 번호가 잇는지 확인
    - page 번호가 있으면 이 page가 매핑된 첫 물리 주소를 알아내고(p')
    - p' + d가 실제 물리 주소가 됨

페이징 시스템과 MMU (컴퓨터 구조)

  • CPU는 가상 주소 접근시 MMU 하드웨어 장치를 통해 물리 메모리 접근
  • 프로세스 생성시, 페이지 테이블 정보 생성
    - PCB 등에서 해당 페이지 테이블 접근 가능하고 관련 정보는 물리 메모리에 적재
    • 프로세스 구동시, 해당 페이지 테이블 base주소가 별도 레지스터에 저장(CR3)
    • CPU가 가상 주소 접근시, MMU가 페이지 테이블 base 주소를 접근해서 물리 주소를 가져옴

TLB 작동 방식

TLB은 최근에 사용된 page table entries를 담고 있는 cache이다.

  • TLB hit: TLB에 캐쉬된 page table entries가 있을 때 CPU는 TLB를 통해 즉시 물리주소 생성
  • TLB miss: TLB에 캐쉬된 page table entries가 없을 때, 주기억장치 페이지 테이블을 참조하여 TLB 갱신

다중 단계 페이징 시스템

  • 32bit 시스템에서 4KB 페이지를 위한 페이징 시스템은
    - 하위 12bit는 오프셋
    • 상위 20bit가 페이징 번호이므로 2의 20승개의 페이지 정보가 필요함
  • 페이징 정보를 단계를 나누어 생성
    - 필요없는 페이지는 생성하지 않으면 공간 절약 가능
  • 페이지 번호를 나타내는 bit를 구분해서 단계를 나눔 (리눅스는 3단계, 최근 4단계)

요구 페이징 (Demand paging 또는 Demanded paging)

  • 프로세스 모든 데이터를 메모리로 적재하지 않고 실행 중 필요한 시점에서만 메모리로 적재함
    - 선행 페이징(anticipatory paging 또는 prepaging)의 반대 개념: 미리 프로세스 관련 모든 데이터를 메모리에 올려놓고 실행하는 개념
    • 더이상 필요하지 않은 페이지 프레임은 다시 저장매체에 저장 (페이지 교체 알고리즘 필요)

페이지 폴트 (page fault) 인터럽트

- 어떤 페이지가 실제 물리 메모리에 없을 때 일어나는 인터럽트
- 운영체제가 page fault가 일어나면 해당 페이지를 물리 메모리에 올림

페이지 교체 알고리즘

  • FIFO page replacement algorithm
    - 가장 먼저 들어 온 페이지를 내리자
  • 최적 페이지 교체 알고리즘 (OPTimal Replacement Algorithm)
    - 앞으로 가장 오랫동안 사용하지 않을 페이지를 내리자
    • 일반 OS에서는 구현 불가
  • LRU(Least Recently Used) Page Replacement Algorithm
    - 가장 오래 전에 사용된 페이지를 교체
    - OPT 교체 알고리즘이 구현이 불가능하므로 과거 기록을 기반으로 시도
  • NUR(Not Used Recently) page Replacement Algorithm
    - LRU와 마찬가지로 최근에 사용하지 않은 페이지부터 교체하는 기법
    • 각 페이지마다 참조 비트(R), 수정 비트(M)을 둠 (R, M)
      • (0,0), (0,1), (1,0), (1,1) 순으로 페이지 교체

스레싱 (Thrashing)

  • 반복적으로 페이지 폴트가 발생해서 과도하게 페이지 교체 작업이 일어나 실제로는 아무일도 하지 못하는 상황

파일 시스템의 이해

  • 파일 시스템: 운영체제가 저장매체에 파일을 쓰기 위한 자료구조 또는 알고리즘

inode 방식 파일 시스템

  • 기본 구조
    - 수퍼블록: 파일 시스템 정보 (파일 시스템 정보 및 파티션 정보 포함)
    - 아이노드 블록: 파일 상세 정보 (PCB)
    - 데이터 블록: 실제 데이터를 가진 블록 (고정된 사이즈를 가짐)

inode와 파일

  • 파일: inode 고유값과 자료구조에 의해 주요 정보 관리
    - '파일이름: inode'로 파일이름은 inode 번호와 매칭
    - 파일 시스템에서는 inode를 기반으로 파일 엑세스
    - inode 기반 메타 데이터 저장

inode 구조

  • inode 기반 메타데이터 (파일 권한, 소요자 정보, 파일 사이즈, 생성 시간 등 시간 관련 정보, 데이터 저장 위치 등)
  • Direct Block은 4kb크기 데이터 12개, 최대 48kb 데이터를 핸들링
  • 더 큰 데이터의 경우 Indirect Blocks를 통해 indirect block이 여러개 연결된(double indirect, triple indirect) 블럭들이 마지막에 direct block과 연결된 형태로 구성하여 더 큰 용량의 데이터를 다룰 수 있게 된다.

inode구조와 파일 데이터

가상 파일 시스템 (Virtual File system)

  • network 등 다양한 기기도 동일한 파일 시스템 인터페이스를 통해 관리 가능
  • 예: read/write 시스템콜 사용, 각 기기별 read_spec/write_spec 코드 구현(운영체제 내부)

부팅의 이해

  • 컴퓨터를 켜서 동작시키는 절차
  • Boot 프로그램
    - 운영체제 커널을 Storage에서 특정 주소의 물리 메모리로 복사하고 커널의 처음 실행위치로 PC를 가져다 놓는 프로그램

과정

  • BIOS가 BIOS 코드를 RAM에 로드하고 부트 로더를 로드하면서 파티션 테이블에 접근할 수 있게 됨
  • MBR 내의 파티션 테이블 정보가 메모리에 올라가서 메인 파티션을 판별하고 메인 파티션 부트 섹터를 찾아들어가게 됨 (파티션마다 부트섹터를 가짐)
  • 부트섹터 내부의 부트코드를 읽어와 RAM에 부트코드를 올리고 해당 파티션 내의 커널 이미지(실행파일)의 주소를 알아내서 실행파일 내용을 RAM에서 읽어오는 과정이 부팅과정임

profile
Adventurer

0개의 댓글