일주일만에 훑어보는 운영체제
운영체제라는 과목은 대학교에서도 많은 시간을 들여 공부하는 분야입니다. 일주일 만에 마스터 할 수는 없겠지만, 운영체제의 기본 개념과 운영체제가 하는 일에 대해 간단히 알아보겠습니다.
일주일만에 훑어보는 운영체제
Day 1: 운영체제 개념 이해
-
운영체제 정의와 역할
- 운영체제란 무엇인가?
- 자원 관리(CPU, 메모리, 디스크, 네트워크)
- 사용자/커널 모드와 특권 명령
- 시스템 콜과 인터럽트
- 보안 및 보호 메커니즘, 메모리/CPU 보호
-
커널(Kernel) 구조 및 인터럽트 처리
- 커널 개념, 커널모드 vs 사용자모드
- 인터럽트(하드웨어/소프트웨어), IRQ
- 타이머를 통한 CPU 보호
-
메모리 계층 구조
- 레지스터, 캐시, 메인 메모리, 보 조기억장치
- 메모리 계층 활용과 성능 최적화
Day 2: 프로세스와 스레드
-
프로세스 개념
- 프로세스 상태(new, ready, running, waiting, terminated)
- PCB(Process Control Block), 컨텍스트 스위칭
-
프로세스 생성과 종료
- fork(), exec(), exit(), wait() 시스템 콜
- 부모-자식 관계, 자발적/비자발적 종료
-
스케줄러와 스케줄링 알고리즘
- 장기/중기/단기 스케줄러 개념
- FCFS, SJF, Priority, Round Robin, Multilevel Queue, Multilevel Feedback Queue
-
스레드(Thread) 개념 및 동기화 기법 소개
- 스레드와 멀티스레딩
- IPC(파이프, 메시지 큐, 공유 메모리 등) 및 동기화 기법(뮤텍스, 세마포어, 모니터)
Day 3: 메모리 관리
-
메모리 할당 기법과 단편화
- First-Fit, Best-Fit, Worst-Fit
- 내부/외부 단편화, 스와핑
-
가상 메모리(Virtual Memory)
- 요구 페이징(Demand Paging)
- 페이지 테이블, Valid-Invalid Bit
- 페이지 폴트 처리 과정
-
페이지 교체 알고리즘
- FIFO, LRU, LFU, Optimal
- Clock 알고리즘, Belady’s Anomaly
-
메모리 관리 기법 비교
- 논리/물리 주소, MMU
- 페이징(Paging), 세그멘테이션(Segmentation) 비교
Day 4: 프로세스 동기화와 데드락
-
동시성(Concurrency)과 경쟁 조건(Race Condition)
- 임계구역(Critical Section) 문제
- 상호 배제(Mutual Exclusion), 진행, 한정 대기 조건
-
동기화 도구
- 뮤텍스(Mutex), 세마포어(Semaphore), 모니터(Monitor)
- 조건변수(Condition Variable)를 통한 조건 대기/신호
-
데드락(Deadlock)
- 데드락 발생 조건(상호 배제, 점유 대기, 비선점, 순환대기)
- 데드락 예방, 회피(은행원 알고리즘), 탐지 및 회복 기법
Day 5: 파일 시스템
-
파일 시스템 구조
- 파일/디렉토리 개념
- 디렉토리 구조(단일, 2단계, 트리, 비순환 그래프)
- Inode 구조 및 파일명/인덱스 매핑
-
파일 접근 방식
- 순차 접근, 직접 접근, 인덱스 접근
-
디스크 스케줄링
- FCFS, SSTF, SCAN, C-SCAN, LOOK 등 디스크 접근 최적화 기법
day 1: 운영체제 개념 이해
운영체제 개념 이해
운영체제란? (Operating System)
운영체제란 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어를 말합니다.
- 컴퓨터 하드웨어: CPU, 메모리, 디스크, 네트워크 등 컴퓨터의 물리적인 부분
- 운영체제 역할: 컴퓨터 하드웨어를 관리하고, 응용 프로그램과 하드웨어 간의 인터페이스 역할을 합니다.
- 자원 관리: CPU, 메모리, 디스크, 네트워크 등의 자원을 관리
- 프로세스와 쓰레드 관리: 프로세스 생성, 스케줄링, 종료, 스레드 생성, 스케줄링, 종료 등
- 파일 시스템 관리: 파일 및 디렉토리 생성, 삭제, 읽기, 쓰기, 보호 등 + 케싱, 버퍼링, 저널링 등
- 메모리 관리: 메모리 할당, 해제, 보호, 주소 변환 등 + 가상 메모리, 페이지 교체, 메모리 단편화 등
- 입출력 관리: 입출력 장치와 컴퓨터 간의 데이터 전송 관리
- 보안 및 보호: 권한 체계를 설정해 특정 자원에 대한 접근을 제한하며, 유저 모드와 커널 모드로 구분해 시스템 자원을 오용하거나 침해하는 것을 방지
- 사용자 인터페이스 제공: 사용자와 컴퓨터 간의 상호작용을 위한 인터페이스 제공 + 시스템 호출, 그래픽 사용자 인터페이스(GUI) 등
위의 역할에 대한 내용들을 자세히 알아보겠습니다.
커널(Kernel)의 개념 및 구조
컴퓨터에서 프로그램이 실행되려면 메모리 상에 올라가야 합니다. 운영체제 또한 메모리 상에 올라가야하는데 모든 코드가 메모리에 올라가면 메모리가 부족해질 수 있습니다. 이를 해결하기 위해 운영체제는 커널이라는 핵심 부분만 메모리에 올려두고, 나머지 부분은 필요할 때만 메모리에 올립니다.
커널모드 vs 사용자모드
커널모드란 운영체제가 CPU의 제어권을 가지고 운영체제 코드를 실행하는 모드를 말합니다. 이때는 모든 종류의 명령을 다 실행할 수 있다. 반면 사용자모드는 응용 프로그램이 CPU의 제어권을 가지고 사용자 프로그램을 실행하는 모드를 말합니다.
모드비트가 0이면 커널모드, 1이면 사용자모드입니다. 사용자모드에서 커널모드로 전환할 때는 시스템 콜을 사용합니다.
사용자의 프로그램이 하드웨어에 자유롭게 접근한다면 보안에 문제가 생길 수 있습니다. 이를 방지하기 위해 사용자 프로그램이 하드웨어에 직접 접근하는 것을 막고, 운영체제가 대신 하드웨어에 접근하도록 합니다.
- 특권 명령: 사용자 프로그램이 하드웨어에 직접 접근하는 보안이 필요한 명령 (ex. 입출력 명령, 메모리 할당 명령)
- 일반 명령: 사용자 프로그램이 실행하는 명령
- 사용자 모드 to 커널 모드: 시스템 콜/인터럽트/예외 발생 시
- 커널 모드 to 사용자 모드: 요청된 작업이 완료되었을 때
메모리 보안과 CPU 보호
운영체제는 메모리 보안을 위해 메모리 보호를 제공합니다. 메모리 보호는 사용자 프로그램이 다른 프로그램이나 운영체제의 메모리 영역을 침범하지 못하도록 하는 것을 말합니다.
메모리 보호를 위해 Base, Limit Register를 사용합니다. Base Register는 프로그램이 메모리에 올라갈 때 시작 주소를 저장하고, Limit Register는 프로그램이 사용할 수 있는 메모리의 크기를 저장합니다. (기준 레지스터와 한계 레지스터)
- Base Register: 프로그램이 메모리에 올라갈 때 시작 주소를 저장
- Limit Register: 프로그램이 사용할 수 있는 메모리의 크기를 저장
두개를 통해 메모리 시작 주소 + 메모리 크기를 더한 값이 운영체제의 메모리 주소를 넘어가면 인터럽트를 발생시켜 프로그램을 종료시킵니다.
timer를 통한 CPU 보호는 프로그램이 무한 루프에 빠지거나, 다른 프로그램을 방해하는 경우를 방지하기 위해 사용됩니다. timer는 일정 시간이 지나면 인터럽트를 발생시켜 CPU의 제어권을 운영체제로 넘깁니다.