..

정글 - OS 강의 - 1 -

정주원 코치님 강의

 

OS를 배우는 이유

추상화(Abstraction)

  • 하드웨어의 복잡한 세부사항을 감춰서 프로그래머가 쉽게 프로그래밍할 수 있도록 함
  • 기계마다 설정을 따로 하지 않아도 됨 (이식성 확보) 자원 관리(Resource Management)
  • CPU, 메모리, I/O 장치를 효율적으로 관리
  • 여러 프로세스가 동시에 실행되도록 스케줄링, 동기화 제공 보안과 독립성
  • 각 프로그램을 보호하면서 독립적인 실행 단위를 제공 → 프로세스

 

메모리와 시스템 콜

mmap()

  • 파일/디바이스를 메모리 주소 공간에 매핑하는 시스템 콜
  • 2^20 = 1MB (메모리 크기 계산 예시)

memset()

  • 특정 메모리 영역에 값을 채움 (보통 힙 영역)

캐시 효과

  • CPU 캐시 히트 시 메인 메모리에 직접 접근하지 않아도 되어 속도가 빨라짐

페이지 폴트(Page Fault)

  • MMU가 주소 변환 시 해당 페이지가 없을 때 발생 → OS가 개입해서 페이지를 할당/매핑

 

메모리 관리

  • 세그멘테이션, 페이징, 세그먼트드 페이징 (추상화된 메모리 관리 방식)
  • CPU ↔ MMU ↔ Memory 구조
  • CPU는 가상주소를 발생 → MMU가 페이지 테이블 참조 → 실제 물리주소로 변환

페이지 테이블

  • OS가 생성 및 관리
  • 하드웨어(MMU)는 이를 읽기만 하며, 페이지 폴트를 던짐

페이지 할당 과정

  • 프로세스가 메모리 접근 시:
    • allocate page
    • free list에서 페이지 가져오기
    • zero-fill (초기화)
    • page mapping

 

예외와 인터럽트

  • Interrupt: 외부 장치가 CPU에 알림
  • Trap: 프로그램이 의도적으로 발생시킨 예외 (예: system call)
  • Fault: 수정 가능한 오류 (예: 페이지 폴트)
  • Abort: 복구 불가능한 치명적 오류

 

I/O 이벤트 처리

  • Interrupt
    • 장치가 CPU에 신호를 보내 이벤트를 알림
  • Polling

    • CPU가 장치를 주기적으로 확인
    • 인터럽트가 지나치게 자주 발생할 때 polling이 더 효율적일 수 있음
  • DMA (Direct Memory Access)
    • 장치가 CPU 개입 없이 메모리에 직접 읽기/쓰기

 

파일 시스템

  • Storage의 추상화

    • 파일은 이름 + offset → 실제 저장소 위치 로 매핑됨
    • 파일 = 데이터 + 메타데이터 + 이름
    • inode (index node) 구조로 물리 블록 관리
  • 블록 할당 시점: OS가 결정
  • Consistency (일관성)
    • Atomicity: 작업이 전부 수행되거나 전혀 수행되지 않아야 함
    • Durability: 완료된 작업은 시스템 장애 후에도 유지
    • 관련 함수: fsync()
      • 파일뿐 아니라 디렉토리(폴더)도 파일이므로 fsync 필요
    • atomicity, ordering, durability 모두 보장해야 함