..
정글 - 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 모두 보장해야 함