-> 멀티 스레딩 필요
스레드 (Thread)
cpu가 독립적으로 처리하는 하나의 작업 단위
스레드가 여러개일 떄의 문제점
여러 프로세스와 여러 스레드를 동시에 실행해야 하는 운영체제는 일정 시간마다 프로세스와 그 안에 있는 스레드를 번갈아가며 실행한다.
이 때 프로세스 및 스레드를 번갈아가며 실행할 때 컨텍스트 스위치 해야함
-> 성능에 좋지 않음
컨텍스트 스위칭
CPU에 실행할 프로세스를 교체하는 기술
- PCB(Process Context/Control Block)이라는 메모리 공간에 프로세스 상태값(PID, 메모리 정보, 프로세스 상태 등)을 저장
- PCB에 저장하고 불러오는 행위, 메모리 캐시를 플러싱하고 리로드, 다양한 테이블과 리스트 갱신 -> 이 과정이 많아지므로 오버헤드가 발생할 수 있음
- 다음 프로세스를 결정하는데에는 다양한 스케줄링 알고리즘이 있음
멀티 스레드 주의 사항
다수의 스레드가 동일한 값에 접근 시 예측할 수 없는 결과가 발생하는 경우가 있다.
이는 컨텍스트 스위치가 무작위로 일어나기 때문 -> 이를 막기위해 동기화(synchronize)라는 조작을 함
-> 대표적인 것이 뮤텍스(상호배제, mutual exclusion)