
운영체제
- 사용자가 컴퓨터 자원을 사용할 수 있도록 환경을 제공해주는 체제
커널과 모드
커널
- 컴퓨터 하드웨어과 자원 등 중요한 것들을 관리하는 역할
사용자 모드
- 커널에 접근할 수 ❌ 모드
커널 모드
- 커널에 접근할 수 🅾️ 모드
시스템 콜
- 사용자 모드에서 컴퓨터 자원을 이용하기 위한 요청
프로세스
- 운영체제로 자원을 할당 받은 작업 단위
프로세스 구조

- 코드 : 사용자가 작성한 코드
- 데이터
- BSS (Block Stated Symbol): 초기화 되지 않은 전역 변수
- Data: 초기화가 된 전역변수
- 힙: 런타임시에 결정 / 사용자에 의해 동적할당이 이뤄짐
- 스택: 컴파일 시간에 결정 / 지역변수, return 값 등이 저장 됨
PCB
- Process Control Block
- 프로세스를 제어하기 위해 프로세스 정보 저장
- 아래와 같은 값들이 저장 됨
- PC(Program Counter / 명령어 주소 값)
- PID
- Stack Pointer 등
IPC
Inter Process Communication
- 프로세스 간의 데이터 전달 방식이다.
- 공유 메모리
- 소켓
- 파이프
- 메세지 큐
좀비 / 고아 프로세스
좀비 프로세스
- 부모가 자식 종료 회수를 안한 경우
고아 프로세스
- 부모가 먼저 종료된 경우 (root 프로세스가 자원을 나중에 회수 한다)
프로세스 상태도

CPU 스케쥴링
- 어떤 프로세스를 다음 작업에 올릴 것인지 결정하는 알고리즘
- 장기 (생성 → 준비)
- 준비 큐에 어떤 프로세스를 오릴 것인가?
- 중기 (중단 ↔ 준비/대기)
- 어떤 프로세스를 중단 설정/해제 시킬 것인가?
- 준비→중단 되었다면 반드시 중단→준비 로 돌아간다. 대기도 마찬가지
- 단기 (준비 ↔ 실행)
- 어떤 프로세스를 실행시키고 중단시킬 것인가?
- 비선점형(OS가 제어권을 강제로 회수하지 않는다)
- FCFS (First Come First Served)
- SJF (Shortest Job First)
- 선점형(OS가 제어권을 강제로 회수한다)
- R.R (Round-Robin)
- SRTF (Shortest Remain Time First)
- 멀티 레벨 스케쥴링
요약

스레드
- 프로세스 위에서 작동하면서 작업 흐름의 단위
Context Switch
프로세스의 Context Switch
- 코어 위의 프로세스 전체를 교체하는 작업
- PCB에 진행 중인 프로세스를 save / 진행 할 프로세스의 PCB를 load 한다.
스레드의 Context Switch
- Stack을 교체하는 작업
비교
- 스레드에 비해 프로세스 Context Switch는 교체해야 할 save/load 비용이 크다.
→ 즉, 오버헤드 비용이 크다.
동시성과 병렬성
동시성
- 하나의 코어에서 여러 작업을 번갈아 작업
병렬성
- 물리적인 시간으로 동시에 여러 코어에서 작업하는 것
멀티 프로세스
- 하나의 프로그램이 여러 프로세스로 구성하는 것
멀티 스레드
- 여러 스레드를 생성해 각자 다른 작업을 수행시키는 것
- 단점: 하나의 스레드가 멈춰 버리면 다른 스레드에도 영향을 준다.
+) 멀티 태스킹
- 하나의 코어가 여러 프로세스를 번갈아 작업을 수행하는 것
+) 멀티 프로세싱
- 여래 개의 코어에서 여러 프로세스가 병렬적으로 수행되는 것
Share article