운영체제의 여러가지 일을 도와주는 커널의 역할중 하나는 상태를 관리해주는 것이다.
프로세스의 상태전이(프로세스의 실행흐름)는 다음과 같다. (파워포인트로 부족하게나마 그려봤다, 프로세스를 작업이라고 표기했다)
실행이라 써진 화살표가 커널이다.
CPU는 여러개의 작업을 준비 리스트라는 곳에 쌓아두고 순서대로 처리한다.
우선, 준비리스트의 맨 앞에 있는 작업이 CPU를 점유해서 준비 상태에서 실행상태로 바뀐다. 이것을 디스패치라고 한다. 이때, 실행된 작업은 일이 너무 많아서 혼자만 CPU를 독점하면 안되니 시간제한을 둔다. 시간제한이 끝나면 CPU를 반납하고 준비 상태로 바뀐다. 헌데, 시간을 다 쓰기 전에 입/출력 동작이 있으면 CPU를 반납하고 보류상태(블록,block, 이라고도 한다)가 된다.
그후, 다음 준비된 작업이 CPU를 이어받아 같은 동작을 실행한다.
만약 입/출력 작업을 기다리던 보류상태의 작업이 기다리던 입/출력 사건이 일이나면 준비 상태로 돌아간다. 이를 깨움(wakeup)이라고 한다.
일을 다 마친 작업은 종료되어 준비 리스트에서 빠진다.
그림에 미처 담지 못했지만 생성이라 하여, 작업 실행되어 준비리스트에 들어가는 과정도 있다.
또, 여러개의 작업을 동시에 실행시키는 '멀티프로세싱(멀티태스킹)'은 사실 진정한 '멀티프로세싱'이 아닌 경우가 많다.
여러개의 프로세스를 동시에 틀어놓을 때, 컴퓨터는 한번에 한작업씩 하되, 우리가 알아볼 수 없을만큼 빨리 작업을 바꿔서 '동시에'하는 것 처럼 보일 뿐이다.
요즘은, CPU의 발달과 프로그램의 발달로 정말 한번에 여러개의 일을 처리하는 기술도 있다고 한다.
'Programming > Codeup.kr기초100제 && 컴퓨터 이야기' 카테고리의 다른 글
오픈소스 (0) | 2017.03.18 |
---|---|
프로세스 - 1 (0) | 2017.03.07 |
클립보드 (1) | 2017.03.06 |
복사 붙여넣기 (1) | 2017.03.05 |
확장자 (1) | 2017.03.03 |