3년만에 펼쳐보는 OS 필기 노트... 천천히 읽어보면서 개념을 정리해보겠다.

프로세스 vs 스레드
프로세스: 운영체제에서 자원을 할당받는 작업의 단위
스레드: 프로세스가 할당받은 자원을 이용하는 실행 흐름 단위
멀티스레딩
하나의 프로세스에서 동시에 여러개의 스레드 작업 수행
컨텍스트 스위칭
cpu가 현재 프로그램 실행 중지 > 다른 프로그램 실행, 현재 프로그램 메모리에 백업 > 다른 프로그램 복구
동기화
- Mutex
sleep waiting lock
락을 가질 때 까지 대기큐에서 휴식
- Semaphore
멀티 스레드 사이 자원 관리 기법
- Spin Lock
busy waiting lock
락이 풀릴 때 까지 계속 락을 검사하며 대기중
멀티코어에서 컨텍스트 스위칭보다 임계구역 실행시간이 짧을 경우 효과적
- Critical Section 임계영역
공유데이터의 일관성 보장을 위해 하나의 프로세스/스레드만 진입해서 실행 가능한 영역
데드락
교착 상태, 2개 이상의 PS가 다른 PS 작업으로 작업 진행 불가 상태
- 발생 조건 4개
1. Mutual Exclusion: 최소 하나의 자원은 상호 배제 요구
2. Hold and Wait: 스레드가 자원 점유 > 또 다른 자원 사용을 위해 대기하는 상황
3. No Preemption : 자원은 선점될 수 없음
4. Circular Wait: 스레드들의 자원 대기는 순환 구조를 이루어야 함(사이클)
- 해결방법
데드락 무시, 데드락 탐지 및 복구, 데드락 예방(발생 조건을 제거), 데드락 회피
CPU 스케줄링
- Round Robin
Time Slice만큼 스레드에 Cpu 코어 할당
스케줄러 레디큐 순환 > Cpu 코어 할당
- Priority
우선순위 기반 실행
Cpu Burtst Time이 낮으면 우선순위가 높.
끝이 없는 블록 발생(기아) > 해결: 에이징 > 우선순위를 높여줌
- SJF
Shortest job First.
Cpu Burst Time 짧은 순으로 처리, 스레드가 서로 다른 시간에 도착 > 비효율
메모리 관리
- Stack / Heap

아래로 내려갈수록 휘발성이 강함
- 가상 메모리
일반 코드들을 실행하면 가상 메모리에 적재.
HDD용량에서 가져와 사용
- Paging
고정 크기 페이지들로 프로세스를 분할 할당
- Segmentation
가변 크기의 세그먼트들로 프로세스를 분할 할당
- Cache locality 캐시 지역성
시간적 지역성: 최근에 접근한 메모리 위치는 앞으로도 다시 접근할 가능성이 높음
공간적 지역성: 현재 접근한 메모리 위치 근처에 있는 데이터는 가까운 미래에 접근할 가능성이 높음
Race Condition 경쟁 상태
공유 자원을 둘 이상의 스레드/프로세스가 읽거나 쓰면서 결과값이 의도와 달라질 수 있는 문제
https://velog.io/@yarogono/CS-Race-condition%EC%9D%B4%EB%9E%80
[CS] Race condition이란?
Race condition은 거의 모든 CS 책에서 나오는 개념입니다. 이런 Race condtion의 개념을 정리하고 문제점 그리고 다른 키워드와의 연결성을 정리해봤습니다.
velog.io
Atomic 연산
실행 도중에 중단되거나 다른 작업에 의해 방해받지 않고 한 번에 완전하게 수행되는 일련의 연산
전체가 성공 or 실패
경쟁 상태 방지, 데이터 일관성 보장
+
평소에 꾸준하게 서적을 읽으면 좋을 것 같다...
'CS' 카테고리의 다른 글
| 필기 테스트 대비 문제 (0) | 2026.05.19 |
|---|---|
| GPU 렌더링 파이프 라인 (2) | 2026.05.19 |