2025-11-18
오늘 배운 것
- 운영체제(OS)
사용자·하드웨어·프로그램 사이에서 자원을 관리하고 추상화를 제공하는 시스템 소프트웨어다.
CPU·메모리·I/O·파일·네트워크를 스케줄링하고 보호하는 역할을 한다.
- 커널(Kernel)
OS의 핵심 부분으로, 프로세스 관리·메모리 관리·파일 시스템·I/O 제어를 담당한다.
사용자 모드와 커널 모드로 나뉘며 시스템 콜을 통해 접근된다.
- CPU
명령어를 수행하는 장치로, ALU·제어장치·레지스터로 구성된다.
CPU 스케줄러가 어떤 프로세스를 실행할지 결정한다.
- 메모리 / I/O 기기
메모리는 실행 중인 프로그램과 데이터를 저장하고, I/O 기기는 외부 세계와의 입출력을 담당한다.
CPU와 I/O 간 속도 차를 완충하기 위해 버퍼링과 캐싱을 사용한다.
- System Bus
CPU·메모리·I/O를 연결하는 통로로, 주소버스·데이터버스·제어버스로 구성된다.
- I/O 제어 방식(폴링, 인터럽트, DMA, 채널)
폴링: CPU가 주기적으로 I/O 상태 확인(비효율)
인터럽트: I/O 완료 시 CPU에 신호(효율↑)
DMA: 메모리↔I/O를 DMA 컨트롤러가 직접 전송(CPU 부담 ↓)
채널: 대형 시스템에서 I/O 연산을 전담하는 독립 프로세서
- 프로세스
실행 중인 프로그램 단위이며, 코드/데이터/스택/힙 등 메모리 공간을 가진다.
- 멀티프로세스
여러 프로세스를 병렬로 실행해 안정성은 좋지만 메모리 사용량이 크다.
- 프로세스 간 통신(IPC)
파이프, 메시지 큐, 공유 메모리, 소켓 등을 통해 독립된 프로세스끼리 데이터를 주고받는 방식이다.
- 스레드(Thread)
프로세스 내의 실행 단위로, 코드/데이터/힙은 공유하고 스택만 독립적으로 가진다.
- 멀티스레드
동일한 메모리 공간을 공유해 문맥전환 비용이 적고 효율적이지만 동기화 문제가 생긴다.
- Critical Section
여러 스레드가 동시에 접근하면 안 되는 공유 자원 영역이다.
- Mutex
상호배제를 강제해 한 순간 하나의 스레드만 진입하도록 하는 잠금 메커니즘이다.
- Semaphore
정수값 기반 스레드 접근 제어 도구로, 카운팅 세마포어는 여러 스레드 동시 접근도 허용한다.
- Monitor
조건변수 + 락이 함께 묶인 추상화 객체로, 고수준 동기화 구조를 제공한다.
- Deadlock(교착상태)
상호배제·점유대기·비선점·환형대기의 4조건이 모두 만족할 때 발생하며
예방, 회피(Banker), 탐지 후 복구 방식이 있다.
- Context Switching
실행 중인 프로세스 상태(레지스터, PC)를 PCB에 저장하고 다른 프로세스로 교체하는 작업이다.
- PCB(Process Control Block)
프로세스의 상태·레지스터 정보·메모리 위치·스케줄링 정보를 저장한 구조체다.
- Dispatcher
CPU를 사용할 다음 프로세스를 골라 실제로 실행을 넘겨주는 모듈이다.
- Scheduling Policy
- FCFS (First Come First Served)
먼저 도착한 프로세스부터 처리하는 가장 단순한 스케줄링 방식이며 비선점형이다.
- SJF (Shortest Job First)
CPU Burst가 가장 짧은 프로세스를 먼저 실행하며 기본 형태는 비선점형이다.
- SRTF (Shortest Remaining Time First)
SJF의 선점형 버전으로, 더 짧은 잔여 시간을 가진 프로세스가 오면 CPU를 선점한다.
- Priority Scheduling
우선순위가 높은 프로세스를 먼저 실행하는 방식이며,
구현에 따라 비선점형/ 선점형(Priority Preemptive) 모두 가능하다.
- Round Robin
프로세스에 동일한 시간 할당량(Time Quantum)을 주고 순환시키는 방식으로 선점형이다.
- Multilevel Queue
여러 큐(우선순위/작업 종류별)로 나누어 정해진 규칙대로 배분하며 기본적으로 비선점형이다.
(단, 큐 간 스케줄링은 선점 가능하지만 큐 내부는 비선점형이 일반적)
- Multilevel Feedback Queue (MLFQ)
실행 시간에 따라 큐를 이동시키며 우선순위를 동적으로 변경하는 방식으로 선점형이다.
- 메모리 관리
프로세스에 메모리를 할당/회수하는 기능이며, 내부 단편화/외부 단편화를 해결하는 전략이 필요하다.
- 동적 메모리 할당
malloc/free 방식이며 free list로 빈 공간을 관리한다.
- Garbage Collecting
필요 없는 객체를 자동으로 회수하는 메모리 관리 기법(Java, JVM).
- MMU (Memory Management Unit)
CPU 논리 주소를 실제 물리 주소로 변환하는 하드웨어 장치다.
- Segmentation
논리적 구조(코드/스택/데이터) 단위로 메모리를 분할하며 외부 단편화가 발생한다.
- Paging
고정 크기 페이지·프레임으로 나누어 외부 단편화를 제거하고, 논리주소→물리주소 매핑을 유지한다.
- Paged Segmentation
세그먼트를 페이지 단위로 다시 나누어 단편화와 보호를 동시에 해결하는 방식이다.
- Demand Paging
필요한 페이지가 있을 때만 메모리에 적재하는 방식으로, 페이지 부재(Page Fault)가 발생할 수 있다.
- File / File System
파일은 저장 단위이며 파일시스템은 디스크 공간을 관리하고 디렉터리·inode·저널링 등을 제공한다.
- Buffer Cache
디스크 접근 성능을 향상시키기 위해 OS가 유지하는 메모리 기반 캐시다.
- Thrashing
페이지 결함이 과도해 CPU보다 페이지 교체 작업이 더 많아지는 상태다.
워킹세트 조절로 완화할 수 있다.
- Cache / Register
레지스터는 CPU 내부 초고속 저장소, 캐시는 CPU와 메모리 속도 차를 줄이는 계층적 저장장치다(L1/L2/L3).
- 프로그램 컴파일 과정
전처리 → 컴파일 → 어셈블 → 링크 과정을 통해 실행파일을 생성한다.
- 스케줄링
CPU 자원을 어떤 프로세스가 사용할지 결정하는 작업으로,
선점/비선점 방식이 있으며 목표는 응답시간·처리율·공정성 최적화다.
- 가상 메모리(Virtual Memory)
프로세스마다 독립적인 주소공간을 제공하는 추상화로, 안전성과 확장성이 증가한다.
- TLB(Translation Lookaside Buffer)
페이지 테이블 매핑을 캐싱해 주소 변환을 빠르게 하는 하드웨어 캐시다.
- System Call
사용자 모드가 커널 기능을 요청하는 인터페이스다.
- CPU Burst / I/O Burst
프로세스는 CPU 작업과 I/O 작업이 번갈아 발생하며 이를 바탕으로 스케줄링에 활용된다.