프로세스의 개념, 상태, 문맥과 운영체제가 프로세스를 큐에 넣고 관리하는 형태에 대해 알아본다.
운영체제는 pcb를 통해서 각 프로세스의 상태가 어떤 상태인지 관리한다.
queue를 사용해서 줄 세워놓고 처리하고 있다.
디스크에서 어떤 파일을 읽어오는 작업을 기다릴 때 disk의 i/o queue에서
blocked 상태에서 어떤 작업이 해소가 되면 ready queue로 옮길 수 있다.
blocked => ready는 어떤 과정을 통해서? 키보드 입력이 들어왔다 ? 키보드 컨트롤러가 cpu한테 인터럽트를 걸고, cpu가 운영체제한테 넘어가고, 키보드 입력을 기다리는 이 프로그램은 blocked에서 ready 상태로 바꾸면 되겠구나~~~
오래 걸리는 작업은 비단 이런 하드웨어 작업 때문에 오래걸리는 것만 있지 않다.
공유데이터 프로세스들끼리 같이 쓰는 데이터. 프로세스 하나가 쓰는 동안에 다른 프로세스는 기다리고(blocked상태)
여러 큐를 둬서, 프로세스 상태가 어떻고 이런걸 운영체제가 pcb를 통해서 관리하고 있다.
온전하게 프로세스가 되면 ready가 된다.
어떨때 문맥교환이 일어나냐? 결과적으로 다른 프로그램한테 넘어가면 100프로 문맥교환
1) TIMER interrupt => 그 친구의 문맥을 pcb에 save, 새롭게 load
문맥교환할 때는 얼마나 더 오버헤드가 크냐하면? 캐시 메모리를 flush 할 때
운영체제들은 프로세스를 다 큐에다 넣고 관리한다.
운영체제가 관리하는 자료구조다.
프로세스가 실행되면 ready queue => cpu를 쓰다가=> 프로세스 종료되거나 => 오래 기다리는 작업 i/o를 요청하면=> 다 끝나면 다시 ready queue