Operation System 3(스레드 1)
프로세스: 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
스레드: 프로세스 안에서 실행되는 여러 흐름 단위
커널: 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 된다. 이 때 메모리에 상주하는 운영체제의 부분을 커널이라고 함
💿 멀티 프로세스, 멀티 스레드
멀티 프로세스
하나의 컴퓨터에 여러 CPU 장착 > 하나 이상의 프로세스들을 동시에 처리(병렬)
- 장점: 안전성(메모리 침범 문제를 OS 차원에서 해결)
- 단점: 각각 독립된 메모리 영역을 가지고 있어, 작업량 많을 수록 오버헤드 발생, Context Switching으로 인한 성능 저하
Context Switching
CPU가 현재 실행하고 있는 프로세스의 문맥(상태)를 프로세스 제어블럭(PCB)에 저장하고 다음 프로세스의 PCB로 부터 문맥을 복원하는 작업
CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태를 문맥(context)라고 부르는데, 프로세스가 종료되지 않은 상태에서 선점 스케줄링 정책에 따라 CPU가 다른 프로세스에 할당되려면 문맥 교환이 필요하다.
멀티 스레드
하나의 프로세스에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것
즉 스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하고 하나의 목표를 수행하는 것
- 장점: 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소, 전역 변수와 정적 변수에 대한 자료 공유 가능
- 단점: 안정성 무제, 하나의 스레드가 데이터 공간을 망가뜨리면, 모든 스레드가 작동 불능 상태(공유 메모리)
- 멀티 스레드의 안정성에 대한 단점은 Critical Section 기법을 통해 대비
- 하나의 스레드가 공유 데이터 값을 변경하는 시점에 다른 스레드가 그 값을 읽으려 할 때 발생하는 문제를 해결하기 위한 동기화 과정
- 상호배제, 진행, 한정된 대기를 충족 해야함