프로세스
- 운영체제로부터 자원을 할당받은 작업의 단위.스레드
- 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.그림을 보면 이해가 더 쉽다.
여러 개의 프로그램을 동시에 실행하면서 각각의 프로세스를 갖는다.
프로세스는 code 영역
, data 영역
, heap 영역
, stack 영역
을 각각 할당한다.
프로세스 내부에 스레드가 할당된다.
하나의 프로세스 내의 code 영역
, data 영역
, heap 영역
을 스레드들이 공유하며 사용할 수 있다.
하나의 스레드는 레지스터와 stack영역
을 개별적으로 할당하여 사용한다.
즉, 프로세스의 작업을 내부의 여러 개의 스레드가 나눠서 처리한다.
dispatch
하여 실행 상태로 전환한다.대기(Waiting)
상태로 전환된다. 준비(Ready)
상태로 전환된다.멀티 프로세스 (다중 프로그래밍)
멀티 스레드
멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우, 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.
System Call - 프로세스를 생성하여 자원을 할당한다.
처리 비용 감소 및 응답 시간 단축
But, 멀티 스레드 환경에선 공유 자원이 존재하기 때문에 동기화 문제가 발생할 수 있다.
선점형 스케줄링
RR(Round Robin)
SRTN(Shortest-Remaining Time Next)
MLQ(Multi-level Queue)
MFQ(Multi-level Feedback Queue)
비선점형 스케줄링
FIFO(First In First Out)
SJF(Shortest Job First)
HRN(Highest Response-ratio Next)
선점, 비선점 둘 다 가능하다.
우선순위 스케줄링은 각 프로세스의 우선순위를 선정 후 그에 맞는 위치의 ready큐에 삽입되는 스케줄링 방식이다.
우선순위가 같은 경우 FIFO 방식으로 삽입된다.
내부적 우선순위 결정
CPU Burst
- 프로그램의 수행중에 연속적으로 CPU를 사용하는 단절된 구간I/O Burst
- 프로그램의 수행중에 I/O작업이 끝날때까지 block되는 구간외부적 우선순위 결정
CPU Burst
가 짧은 프로세스를 우선순위를 높게 두기도 한다.
Aging
기법을 적용했다.스레드 스케줄링 방식에는 두 가지 방식이 있다.