CS/운영체제

day03 - 프로세스 관리

수e 2022. 4. 15. 00:09

1. 프로그램의 실행(메모리 load)
physical memory와 virtual memory가 있음 

    1) virtual memory : code, data, stack으로 구성됨

                 스택 : 커널의 스택은 각 프로세스마다 별도로 두고 있음

2. 사용자 프로그램이 사용하는 함수
   라이브러리 함수 : 자신의 프로그램에서 정의하지 않고 갖다쓴 함수. 자신의 프로그램의 실행 파일에 포함됨
   커널 함수 : 운영체제 프로그램의 함수. 커널함수 호출=시스템 콜
                  내 프로그램 실행 코드에 포함되는 것이 아니라 커널에 포함되는 함수
                 ex) 내 함수 또는 라이브러리 함수를 실행할 경우 전부 내 프로그램 안에서 실행되는 것
                       but 디스크에서 파일을 읽어오는 함수를 호출하는 것은 커널에서 실행되는 함수를 호출하는 것
                -> 커널함수=가상메모리의 주소공간을 가로질러 cpu 제어권을 운영체제에 넘겨야 하는 실행

커널모드 = mode bit이 0일 때 = 운영체제가 cpu를 쓰고 있는 경우이기 때문에 뭐든지 다 할 수 있음

유저모드 = mode bit이 1일 때 = 운영체제가 사용자 프로그램에게 cpu를 넘겼을 때. 제한된 기계어만 실행 가능

 


3. 프로세스의 개념
    1) 프로세스의 문맥(context) 
       : cpu 수행상태를 나타내는 하드웨어 문맥
       : 프로그램 카운터
       : 각종 register
       : 프로세스의 주소공간 - code, data, stack
       : 프로세스 관련 커널 자료 구조 - PCB(Process Control Block), Kernal stack

PCB : 운영체제 커널의 주소공간(code, data, stack) 각각에서 하나씩 PCB를 가짐.

     2) 프로세스의 상태
       : running
       : ready - 메모리 등 다른 조건을 모두 만족하고 cpu를 기다리는 상태
       : blocked(wait, sleep) - cpu를 주어도 당장 instruction을 수행할 수 없는 상태,

                                     자신이 요청한 event가 즉시 만족되지 않아 기다리는 상태 등

                                    - 요청한 event가 만족되면 ready

       : suspended(stopped) - 외부 요인으로 프로세스 수행이 정지된 상태->프로세스는 통째로 디스크에 swap out됨

                                      ex) 사용자가 프로그램을 강제 정지시킨 경우.

                                    - 외부에서 resume해주어야 active됨

       : terminated - 수행(execution)이 끝난 상태

 

*blocked와 suspended의 차이점 - blocked는 시스템은 계속 돌아가는 상태. suspend는 모두 stop된 상태

 

    3) 문맥 교환(context switch)

문맥을 넘겨주는, 넘겨받는 프로세스의 상태를, 그 프로세스의 운영체제가 관리하고 있는 PCB에 저장.

(1) : 사용자 프로세스가 변경되지 않으므로 문맥교환이 아님