본문 바로가기
운영체제

혼자 공부하는 운영체제 (3) - 프로세스의 실행

by 임동무 2022. 10. 22.

프로세스의 실행

1. 프로그램의 실행

CPU가 어떤 프로그램을 실행시킬 때 가상공간(virtual space) 을 각 프로그램마다 구성한다. 

이 가상공간에는 code, data, stack 가 저장되며 

프로그램을 실행할 때 실제 메모리에 올리기 위해서는 Address translation 을 통해 필요한 부분만 physical memory 에 올리며

나머지는 swap area 에 위치한다.

 

2. 운영체제 커널 주소공간

1. code

- code 에는 system call, interrupt 처리 관련 코드, 자원 관리 코드, 편리한 서비스를 제공하기 위한 코드 가 저장되어있다. 

 

2. data

- 각종 자료구조들이 저장되어 있으며, 각 프로세스 관리 자료구조인 프로세스 제어 블록 (Process Controll Block : PCB) 가 저장되어 있다. 

 

3. stack

- 커널 스택

 

 

3. 프로세스

1. 프로세스의 문맥

- 프로세스의 문맥 (context) 는 프로세스의 진행 상황을 나타내는 모든 요소를 의미한다. 

  • CPU 의 수행 상태 : register 에 있는 값, PCR 이 가리키는 값
  • 프로세스의 주소공간 (code,data,stack)
  • 프로세스 관련 커널 자료구조 : PCB(프로세스 제어 블록), 프로세스별 별도 kernel stack (code, data, stack)

- 프로세스의 문맥을 저장하지 않으면 멀티태스킹, 타임쉐어링 등에 대해 대처가 되지 않는다.

 

- PCB (프로세스 제어 블록)

  • OS 가 관리상 사용하는 정보 : process status, process ID, scheduling information, priority
  • 메모리 관련 정보 : code, data, stack 의 위치 정보
  • CPU 수행 관련 하드웨어 값 : registers
  • 파일 관련 : open file descriptions

 

 

2. 프로세스의 상태

  • Running : 현재 CPU의 제어권을 갖고 프로세스가 실행되고 있는 상태
  • Ready : CPU 를 넘겨받을 준비가 되어있으며 CPU 를 받기 위해 기다리고 있는 상태
  • Blocked : CPU를 줘도 instruction을 수행하지 않는 상태, process가 자신이 요청한 event가 완료되지 않아 기다리고 있는 상태 (I/O 요청 후 결과값을 받지 못해서 기다리는 상태 등)
  • new : 프로세스의 생성, admit 되면 Ready 상태로 진입
  • terminated : 프로세스가 종료되고 더이상 실행할 작업이 없어 제거된 상태
  • Ready queue : Ready status 인 모든 프로세스의 집합
  • Device queue : I/O 처리를 기다리는 (Blocked) 프로세스의 집합
  • Job queue : 모든 프로세스의 집합

 

- 전체적인 흐름

 

new 상태의 프로세스 admitted -> Ready 상태

Ready 상태의 프로세스가 CPU scheduling 에 의해 CPU 를 받음 -> Running 상태

Running 상태의 프로세스 -> 시간 초과시 다시 Ready 상태

                                        -> 프로세스 종료 (exit) 시 terminated

                                        -> I/O 요청 시 Blocked

Blocked 상태의 프로세스 -> event 종료 시 Ready 상태

                                       

 

3. 문맥교환 (Context Switch)

 - CPU 가 프로세스를 변경하는 과정에서 이전 프로세스의 진행 상황을 저장하고(kernel memory 에 저장)

CPU 를 얻은 프로세스는 저장된 이전 진행 상황의 이후 부터 실행한다. 

 

                      (System call, interrupt) 

User mode (프로세스 A) -> Kernel mode -> User mode (프로세스 A)

                                                                            - 일부 context 는 PCB 에 저장됨

 

                                                                      -> User mode (프로세스 B)

                                                                           - 위의 ocntext switch 보다 부담이 훨씬 큼( Cache Memory Flush)

                                                                     

 

댓글