cpu는 하나인데 어떻게 여러 개의 프로그램이 동시에 실행 가능한 것인가?
cpu가 여러 개의 프로세스를 번갈아 가면서 실행하면 된다
프로세스의 cpu 할당 순서 및 방법을 결정짓는 일을 스케줄링 이라고 하고, 이때 사용되는 알고리즘을 스케줄링 알고리즘 이라 한다. 실제로 프로세스를 관리하는 운영체제 요소(모듈)를 스케줄러 라고 한다
Start -> Ready
프로세스 생성과 동시에 Ready 상태로 들어간다. 스케줄러에 의해서 선택되기를 기다린다
Ready -> Running
스케줄러 알고리즘에 의해 선택된 프로세스는 Running 상태가 되어 실행된다
Running -> Ready
프로세스A가 실행중에 운선순위가 더 높은 프로세스B가 실행되면 프로세스A는 Ready 상태로 진입하고 프로세스B는 Running 상태가 된다 (물론 Ready를 거쳐서 스케줄러에 의해 선택이 된 것)
프로세스A는 프로세스B가 종료되기를(양보해 주기를) 기다린다
Running -> Blocked
프로세스가 멈추는 상태로 진입한다
일반적으로 데이터 입출력에 관련된 일을 하는 경우 진행중인 프로세스는 잠시 내려오게 하고(Blocked 상태가 되게 하고), Ready 상태에 있는 프로세스 중 하나를 실행시킨다
Blocked -> Ready
Ready 상태 - 스케줄러에 의해 당장이라도 선택될 수 있는 상태
Blocked 상태 - 스케줄러에 의해서 선택될 수 없는 상태
입출력이 완료된 프로세스는 Ready 상태가 되고 실행되길 기다린다
반응형
'공부' 카테고리의 다른 글
VirtualAlloc 함수를 이용한 Dynamic Array Design (0) | 2020.08.15 |
---|---|
쓰레드 동기화 인터락 함수 (0) | 2020.08.06 |
쓰레드 동기화, 임계영역 접근 동기화 (0) | 2020.08.06 |
컨텍스트 스위칭 (Context Switching) (0) | 2020.08.04 |
비트맵 이미지블렌딩 프로그램 만들기 (c++ 연습) (0) | 2020.07.18 |