운영체제[3.프로세스 관리(2)]

이유정·2023년 6월 4일
0

운영체제

목록 보기
7/49
post-custom-banner

목표

프로세스의 개념, 상태, 문맥과 운영체제가 프로세스를 큐에 넣고 관리하는 형태에 대해 알아본다.

프로세스의 개념

프로세스의 상태



운영체제는 pcb를 통해서 각 프로세스의 상태가 어떤 상태인지 관리한다.
queue를 사용해서 줄 세워놓고 처리하고 있다.
디스크에서 어떤 파일을 읽어오는 작업을 기다릴 때 disk의 i/o queue에서
blocked 상태에서 어떤 작업이 해소가 되면 ready queue로 옮길 수 있다.
blocked => ready는 어떤 과정을 통해서? 키보드 입력이 들어왔다 ? 키보드 컨트롤러가 cpu한테 인터럽트를 걸고, cpu가 운영체제한테 넘어가고, 키보드 입력을 기다리는 이 프로그램은 blocked에서 ready 상태로 바꾸면 되겠구나~~~

오래 걸리는 작업은 비단 이런 하드웨어 작업 때문에 오래걸리는 것만 있지 않다.
공유데이터 프로세스들끼리 같이 쓰는 데이터. 프로세스 하나가 쓰는 동안에 다른 프로세스는 기다리고(blocked상태)

여러 큐를 둬서, 프로세스 상태가 어떻고 이런걸 운영체제가 pcb를 통해서 관리하고 있다.

프로세스 상태도

온전하게 프로세스가 되면 ready가 된다.

PCB

  • 프로세스들한테 프라이어티를 계산하고 가장 높은 친구한테 CPU를 넘겨주게 되어있다. 시스템 관련 프로세스는 우선순위가 더 높고, 그렇다.
  • CPU수행과 관련된 하드웨어 값을 PCB에 보관하고 있다 : PCB는 어디에 있는가?=>
    운영체제 커널 주소공간에서 PCB를 하나씩 프로세스마다 가지고 있다. 실제로 하드웨어에 CPU에 PC(프로그램카운터)랑 레지스터가 있는데 각각의 프로세스마다 그 세개의 문맥들, 어디까지 수행했는가, 즉, 프로그램 카운터에 얼마 값을 가지고 있고 레지스터에 어떤 값을 넣고 있는가 이런 정보들을 PCB에 따로 저장을 한다는 것이다. 왜 가지고 있는가?=>CPU를 얻었다가 뺏겼다 하기 때문에 매번 CPU를 뺏길 때 그 프로세스가 어디까지 수행됐는지 문맥을 저장해놔야 다음 CPU를 얻었을 때 그 다음 부분을 실행할 수 있다.





어떨때 문맥교환이 일어나냐? 결과적으로 다른 프로그램한테 넘어가면 100프로 문맥교환
1) TIMER interrupt => 그 친구의 문맥을 pcb에 save, 새롭게 load

문맥교환할 때는 얼마나 더 오버헤드가 크냐하면? 캐시 메모리를 flush 할 때

프로세스를 스케줄링하기 위한 큐

운영체제들은 프로세스를 다 큐에다 넣고 관리한다.

Ready queue와 다양한 device queue

운영체제가 관리하는 자료구조다.

프로세스 스케줄링 큐의 모습

프로세스가 실행되면 ready queue => cpu를 쓰다가=> 프로세스 종료되거나 => 오래 기다리는 작업 i/o를 요청하면=> 다 끝나면 다시 ready queue

profile
강의 기록 블로그
post-custom-banner

0개의 댓글