쉽게 배우는 운영체제 10장 ~ 13장 정리

쉽게 배우는 운영체제 10장 ~ 13장 정리

Category
Computer Science
Tags
OS
Published
September 13, 2025
Last updated
Last updated November 11, 2025

C10 가상 메모리 관리

01 가상 메모리 시스템

  • 가상 메모리 시스템: 물리 메모리의 크기와 상관없이 큰 크기의 논리 주소 공간을 제공하는 메모리 관리 시스템
    • 가상 메모리 시스템에서는 물리 메모리와 더불어 보조 저장장치의 스왑 영역까지 물리 메모리처럼 사용한다
  • 스왑 영역: 하드디스크나 SSD같은 보조 저장장치에 위치
    • 물리 메모리가 가득차면 일부 페이지를 스왑 영역으로 보내고(스왑 아웃), 필요한 경우 스왑 영역의 페이지를 메모리로 가져온다(스왑 인)
    • 가상 메모리 시스템에서 메모리의 크기는 물리 메모리의 크기 + 스왑 영역의 크기로 정의한다
  • 가상 메모리 → 실제 메모리 주소 변환 작업을 동적 주소 변환(DAT, Dynamic Address Translation)라 부른다
 
  • 프로세스가 요구할 때만 페이지를 메모리로 가져오는 방법을 요구 페이징(demand paging)이라 한다
    • 이는 기본적으로 현대 OS에서 사용된다 → 물리 메모리 절약, 메모리 효율적 관리를 위해
    • vs 요구 페이징과 반대로 캐시는 pre-fetch 방식을 사용한다
 
  • 페이지 부채와 교체 과정
    • PTE: 페이지 순서대로 나열됨, 내부에는 프레임 번호가 저장되어 있음
    • 또한 프레임 번호 앞에는 플래그 비트 6개?가 존재함
      • 접근 비트(access bit): 페이지가 메모리에 올라온 후 사용된적이 있는지
      • 변경 비트(modified bit): 페이지가 메모리에 올라온 후 변경된적이 있는지
      • 유효 비트(modified bit): 페이지가 실제 메모리에 안있는지(스왑 영역에 있는지)
      • 읽기 비트(read bit), 쓰기 비트(write bit), 실행 비트(execute bit): 페이지에 대한 rwx 권한을 나타내는 비트
  • 유효 비트
    • 유효 비트가 0일 때 → 물리 메모리의 프레임 번호
    • 유효 비트가 1일 때 → 스왑 영역의 주소
notion image
 
  • page fault: 프로세스가 페이지를 요청했는데 메모리에 없을 때
    • → swap in을 실행, 유효 비트를 1 → 0으로 변경, PTE 주소도 변경
  • 페이지 교체: 메모리가 가득 찼을 때 page fault가 발생한 경우 실행 됨
    • → swap out으로 페이지 하나를 스왑 영역으로 내보냄, PTE를 갱신함
    • → swap in으로 가져옴, PTE를 갱신함

02 페이지 교체 알고리즘

  • 무작위 페이지 교체 알고리즘
  • FIFO 페이지 교체 알고리즘: 메모리에서 가장 오래된 페이지를 교체하는 방법
  • 최적(optimal) 페이지 교체: 미래의 접근 패턴을 살펴서 선택하는 방식
  • 최적 근접(optimal approximation): 과거 사용 패턴을 바탕으로 미래의 접근 패턴을 예측하는 지역성 이론을 따름
    • LRU(최근 최소 사용): 접근한지 가장 오래된 페이지를 교체
      • 접근 시각을 저장해야함
    • LFU(최소 빈도 사용): 참조 비트를 사용하고, 참조 비트를 일정 주기로 오른쪽으로 shift 한다
      • 추가 메모리가 필요함
    • NUR(최근 미사용): 최근에 참조되지 않은 페이지를 교체
      • 2개 비트(접근 비트, 변경 비트)만을 사용해 대상 페이지 결정
        • 각 비트는 읽기/실행, 쓰기/추가 연산이 일어날 경우 1로 바뀜
      • 접근 비트를 우선으로 고려해서 대상 페이지를 선정
      • 모두 (1, 1)이 되면 (0, 0)으로 초기화
  • FIFO 변형 알고리즘
    • 나중에 추가

03 프레임 할당

  • 스레싱: 보조 저장장치에 시간을 소비해서 작업이 멈춘 것 같은 상태
    • 스레싱이 일어나면 CPU 사용량은 줄어든다
  • 정적 프레임 할당: 사용하는 프로그램에 적절히 프레임을 나누는 정책이 필요하다
    • 균등 할당: 프로세스 별로 균등하게 할당
    • 비례 할당: 프로세스의 크기에 비례하여 프레임을 할당
      • 프로세스가 필요로 하는 프레임을 유동적으로 반영하기 어렵다
      • 사용하지 않는 메모리를 처음부터 할당해 낭비가 생김
  • 동적 프레임 할당
    • 작업 집합 모델
      • 나중에 추가
    • 페이지 부재 빈도
      • 나중에 추가
  • 전역 교체와 지역 교체
    • 페이지 교체가 일어날 때 모든 프로세스의 프레임을 대상으로 하는지, 현재 실행중인 프로세스의 프레임만을 대상으로 할지
    • 지역 교체: 다른 프로세스에 영향을 미치지 않음, 다른 프로세스에서 스레싱이 발생하지 않음
      • 자주 사용하는 페이지가 스왑 영역으로 옮겨져 시스템이 효율이 떨어질 수 있음
    • → 전체 시스템을 고려하면 전역 교체 방식이 지역 교체 보다 효율적이다

C11 파일 시스템

01 파일과 파일 시스템 이해하기

  • 파일은 HDD,SDD, USB 메모리, CD, DVD등과 같은 저장장치에 보관한다
  • 사용자는 OS의 파일 시스템을 이용해 생성, 수정, 읽기, 쓰기, 삭제의 작업을 수행할 수 있다
  • OS별로 다른 파일 시스템을 사용한다
    • 윈도우 XP 이전: FAT, 윈도우: NTFS, 유닉스: UFS/EXT
  • 파일 시스템은 파일 테이블을 이용해 파일 이름, 저장 위치, 접근 권한 등을 관리한다
  • 파일과 블록
    • 저장장치에서는 메모리보다 더 큰 데이터를 효율적으로 관리하기 위해 파일을 일정 크기로 묶어 관리하는데, 이를 블록이라 부른다
    • 즉 메모리의 주소단위가 바이트이듯, 파일 시스템에서는 블록을 쓴다
  • 파일의 속성
    • 파일은 실행 파일과 데이터 파일로 나뉜다
 
  • 파일 헤더
    • 파일 크기, 파일 제작 날짜, 접근 권한등이 os레벨에서 관리된다
      • 리눅스 - 아이노드, 윈도우 - mft?
    • 파일의 버전 번호, 크기, 특수 정보등은 파일 헤더에 위치한다
💡
정처기 책처럼 정리하지말고, 대졸자가 읽어도 아하! 느낌이 들게 정리해야함
 
  • 파티션과 포매팅
    • 하나의 저장장치를 여러개로 나눌때 각각의 구획을 파티션이라고 한다
    • 유닉스에는 여러개의 저장장치를 하나의 파티션으로 통합하는 기능이 존재한다
  • 파티션 정보의 위치
    • 컴퓨터 전원을 켜면: BIOS 하드웨어 검사 → MBR에 있는 부트로더를 실행해 OS를 메모리로 올리기
    • MBR 방식은 오래 됐고, 최대 4개의 주 파티션만 생성이 가능, 2TB 이상의 디스크를 인식할 수 없음
    • 그래서 나온게 GPT 펌웨어 → 128개 이상의 파티션, 8ZB 사용 가능
      • CRC 코드를 이용해 파티션 테이블을 안전하게 보호하고, 중요 데이터를 끝부분에 백업해 장애 복구가 가능하다
💡
BIOS 다음 UEFI에서 부트로더를 불러옴, 이게 GRUB이나 윈도우 부트매니저
파티션마다 guid가 생겨서 중복 체크를 한다
GPT 데이터를 crc를 함 → 이걸 secure boot라고 한다
  • 디스크 포맷
    • 저장장치의 파일 시스템을 초기화 하는 작업
    • 빠른 포맷 → 파일 테이블만 초기화
💡
zfs는 작동중에 배드섹터를 찾는다
  • 디스크 단편화
    • 블록크기는 일반적으로 4KB
    • 내부 단편화가 당연하게도 발생
    • 외부 단편화도 발생함 → HDD에서 디스크 헤더가 여러 위치를 이동해야 함 → 조각 모음
 
  • 파일 구조
    • 순차 파일 구조(일반적): 파일 내용이 하나의 긴 줄로 늘어선 모양
    • 인덱스 파일 구조
      • 현대의 파일 시스템 구조
      • 순차 구조에 인덱스 테이블을 추가해서 순차 접근과 직접 접근이 모두 가능
      • CD, ROM, HDD 보급과 함께 개발된 방식, ISAM 파일이라 부름
    • 직접 파일 구조
      • 인덱스 테이블을 탐색하는 오버헤드를 줄이는 방식 → 해시 테이블을 이용함
      • 해시 함수를 잘 찾아야 한다, 데이터 접근이 빠르다
 
  • 유닉스에서의 파일 접근 권한
    • 표시
      • - → 일반 파일
      • d → 디렉토리
      • l → 링크
    • 권한 비트 rwx
    • 소유자 - 그룹 - 기타 사용자

02 디렉터리

03 파일 관리

  • 파일 시스템의 구조
    • 부트 영역: OS 부팅에 사용되는 영역
    • 파일 테이블 영역
    • 블록 영역
  • 블록 할당 방식
    • 연속 할당: 파일의 모든 블록을 연속된 블록에 배치
    • 불연속 할당: 비어 있는 블록에 데이터를 분산 저장, 파일 시스템이 이것을 관리
      • 현대에 대부분 사용
      • 연결 할당: 연결 리스트로 블록을 관리, 각 블록이 다음 블록에 포함
        • FAT32, 임의 접근이 비효율적
      • 인덱스 할당: 별도의 인덱스 블록에 저장, 파일 테이블에는 인덱스 블록의 위치 정보만 기록
        • UFS
  • 빈 공간 관리
    • 빈 공간 리스트를 사용
 
  • 윈도우와 유닉스 파일 시스템
    • FAT32
    • NTFS
    • UFS
 

C12 저장장치와 입출력 시스템

01 저장장치와 디스크 스케쥴링

  • HDD의 이동 헤드 방식
    • 플래터
    • 스핀들
  • 반도체 기반 저장장치: SSD
💡
SLC, MLC, TLC, QLC
셀이 덜 들어갔다 → 싸다
같은 용량이면 SLC가 셀이 많이 들어가 있다 → 피로도가 훨씬 적음
sequential read 속도는 QLC가 약간 더 빠를 수 있다. 그러나 random access는 느릴 것
 
  • 인터페이스: SATA(serial ATA) vs NVMe
    • 옛날에는 HDD와 같이 SATA를 사용했으나, 요즘은 NVMe를 사용
 
  • 단편화(Fragmentation)
    • HDD는 외부 단편화로 인한 속도 저하 발생
 
  • 광 디스크 저장장치: CD, DVD, Blu-ray
 
  • 디스크 스케쥴링 알고리즘
    • FCFS(First come, First service)
    • SSTF(Shortest Seek Time First)
    • 블록 SSTF
    • SCAN: 한 방향으로만 헤드가 이동
      • 제일 많이 씀 → 오버헤드가 적음
    • C-SCAN: SCAN에서 돌아갈때 그냥 무시하고 돌아감
    • LOOK: SCAN하다 더이상 앞에 없으면 반대 방향으로 이동
    • C-LOOK
💡
SSD는 CFQ BFQ

02 RAID

  • 디스크 장애에 대한 복구 기능과 성능 향상을 위해 RAID를 사용한다
    • 여러개의 디스크를 논리적으로 묶어서 사용한다
  • 미러링
    • 원본 디스크와 같은 크기의 백업 디스크에 같은 데이터를 동시에 저장
    • 저장 효율이 50%
  • 스트라이핑
    • 데이터를 여러개의 디스크에 분산하여 저장해 입출력 성능을 높임
    • 읽기/쓰기 속도 향상
    • 디스크 하나가 고장나면 전체를 복구할 수 없음
 
  • RAID 0: 스트라이핑
    • 순차 읽기/쓰기 성능 대폭 향상
  • RAID 1: 미러링
    • 디스크 장애시 복구 가능, 읽기 요청 분산 가능
    • 쓰기 성능 다소 저하
  • RAID 2: ECC 기반 오류 정정
    • ~
  • RAID 5: 분산 패리티 기반 고신뢰성 방식
    • notion image
    • 스트라이핑을 하면서 parity를 모든 디스크에 분산 적용해 쓰기 병목을 제거함
  • RAID 6: 이중 분산 패리티 기반 고신뢰성 방식
 
  • 복합 RAID
    • RAID 01 vs RAID 10
      • 10이 좋다 → 이유 알기
    • RAID 50 vs RAID 60

03 입출력 시스템

  • 저속 장치
    • 키보드 등
  • 고속 장치
    • 그래픽 카드, NVMe SSD, 네트워크 카드등
 
  • 버스
    • CPU, 메모리, 주변 장치를 연결
  • 채널
    • 버스를 분할하여 별도의 통로로 사용
 
  • 입출력 버스 구조
    • 초기 구조
    • 입출력 제어기
 
  • 그래픽 카드
    • 실수 연산(FP)를 빠르게 처리하도록 설계됨
  • 포트
    • 메인 버스
    • 그래픽 전용 버스(PCIe)
 
  • 직렬 통신
  • 병렬 통신
 
  • SATA
  • USB
 
  • 입출력 제어 방식
    • DMA(직접 메모리 접근)
    • MMIO(메모리 맵 입출력)
    • 인터럽트

C13 가상화와 보안

01 분산 시스템

  • 강결합 시스템
  • 약결합 시스템
 
  • 클라이언트 - 서버 구조
 
  • P2P 시스템
 
  • 클라우드 컴퓨팅
 
  • 네트워크 저장장치
    • DAS
    • NAS
    • SAN
 
  • 고 가용성 시스템
    • 이중화 구성
    • 클러스터링, 로드 밸런싱
    • 고가용성 시스템 유형

02 가상화

  • 자바와 가상머신
  • 가상화 관련 기술
  • 하이퍼바이저
  • cgroupd namespaced

03 보안과 암호화

  • 운영체제 보안
    • 암호화