Programming/운영체제

프로세스 동기화

1. 쓰레드(Thread)

쓰레드(Thread)란 프로그램 내부의 흐름, 맥을 의미한다.

1) Multithreads

다중 쓰레드(Multithreads)란 한 프로그램에 2개 이상의 맥이 흐르는 것을 말한다.

맥이 매우 짧은 시간 간격으로 빠르게 스위칭 되면 여러 맥이 동시에 실행되는 것처럼 보인다. (concurrent vs simultaneous; 한번에 하나만 처리되지만 마치 동시에 처리되는 것처럼 보이는 것을 concurrent라고 한다.)

 

예1: Web browser ; 화면 출력하는 쓰레드 + 데이터 읽어오는 쓰레드

예2: Word processor; 화면 출력하는 쓰레드 + 키보드 입력받는 쓰레드 + 철자/문법 오류 확인 쓰레드

그외) 음악 연주기, 동영상 플레이어, Eclipse IDE

2) Thread vs Process

한 프로세스에는 기본적으로 1개의 쓰레드만을 갖고 있다. - 단일 쓰레드(Single thread) 프로그램

한 프로그램에 여러개의 쓰레드를 갖고 있는 경우를 다중 쓰레드(Multi thread) 프로그램 이라 한다.

3) 쓰레드 구조

- 프로세스의 메모리 공간 공유(code, data)

- 프로세스의 자원 공유(file, I/O, ...)

- 비공유: 개별적인 PC, SP, registers, stack(파라미터, 리턴어드레스를 stack에 담아서 관리하기에 공유X)

4) 프로세스 스위칭 vs 쓰레드 스위칭

현대 운영체제에서는 프로세스 단위의 스위칭이 아니라 프로세스 내의 쓰레드 단위의 스위칭이 일어난다. 그렇기 때문에 우리는 쓰레드에 대해 자세히 알 필요가 있다.