목표
멀티 쓰레드에 대한 학습
멀티 스레드 스케줄링 방식
- 하나의 프로세스에 2가지 이상의 작업을 처리하는 것
스레드
- CPU 스케줄링의 기본 단위
- PC (Program Counter), Register, Stack으로 구성
- 프로세스의 데이터 영역을 공유함
쓰레드의 이점
- 새로운 쓰레드를 만드는 데 시간이 적게 걸린다.
- register와 stack만 만들면 되기 때문
- 쓰레드를 없애는 데 시간이 적게 걸린다.
- context switch 하는데 시간이 적게 걸린다.
- 쓰레드간 통신하는 데 시간이 적게 걸린다.
User-level thread
커널 레벨 쓰레드보다 빠르다.
Kernel-Level Thread
스레드 스케줄링 방식의 종류
데드라인 스케줄링 방식은 데드라인을 지킬 수 없는 프로세스는 작동하지 않는다. 이때 주어진 프로세스들 중에서 최대의 이익을 뽑아낼 수 있는 프로세스를 실행하는데, 내 프로그램의 경우에는 실행 시간이 긴 프로세스가 짧은 프로세스보다 이익이 크다고 판단하여 이를 기준으로 설계하였다.
고정 우선순위 스케줄링의 경우 프로세스를 실행중에 다른 프로세스가 주어졌을 때, 새로 주어진 프로세스의 우선순위가 높다면 그 프로세스를 실행하게 된다. 내 프로그램의 경우 프로세스가 동시에 주어진다고 가정하여서 우선순위대로 프로세스를 먼저 처리해주도록 하였다.
라운드 로빈 스케줄링의 경우 FIFO로 동작을 하되, 시간을 쪼개서 공평하게 프로세스가 실행되도록 한다. 내 프로그램의 경우에도 동일하게 구현하였다.
스레드를 무제한으로 만들수 없다면, 프로세스가 많아질 때 성능 향상을 할 수 있는 방법이 무엇일까?
- 병렬 처리를 통해 하나의 프로그램을 처리하여 속도를 향상 시킬 수 있다.
- 여러개의 CPU를 사용하면 처리속도가 올라간다.
- 그러나 직렬연결로 작동하게 하면 큰 변화가 없다. 따라서 병렬 연결로 해야한다.
- TCB (Thread Control Block)을 사용한다.