프로세스의 실행
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)
'운영체제' 카테고리의 다른 글
혼자 공부하는 운영체제 (5) - Thread (0) | 2022.10.24 |
---|---|
혼자 공부하는 운영체제 (4) - Scheduler (0) | 2022.10.24 |
혼자 공부하는 운영체제 (2) - 운영체제의 구조 (0) | 2022.10.18 |
혼자 공부하는 운영체제 (1) - 운영체제란 무엇인가? (0) | 2022.10.13 |
댓글