Process
a program in execution : 실행중인 프로그램, 다음과 같은 Resource들을 가진다
- Program Counter
- Stack
- Data Section
Process State
- New : Process가 새로 생겼을 때
- Running : Process가 실행중일 때
- Waiting : Process가 어떤 Event를 기다리는 상태 (ex. I/O Operations)
- Ready : Process가 CPU에 할당되기를 기다리는 상태
- Terminated : Process의 실행이 완료되고 종료됨.
Process Control Block(PCB)
프로세스의 정보를 저장하는 Block. 다음의 정보를 저장한다.
- Process State
- Program Counter ( 다음 Instruction의 주소를 저장하는 Register)
- CPU Register
- CPU Scheduling Information
- Memory-Management Information
- I/O Status Information
Process 하나 당 하나의 PCB를 할당받으며 PCB는 보통 Memory or Register에 저장된다.
Context Switching
CPU가 다른 Process로 Control을 넘기는 과정.
Old Process를 Save하고 New Process를 Load한다.
Context Switching은 Overhead. 즉 유용한 작업이 아니다 → Context Switching을 많이 할수록 Overhead가 많이 발생하고 ⬆️ , CPU의 효율이 감소한다. ⬇️
Context Switching의 속도는 Hardware에 의존한다. Register가 Memory보다 속도가 빠르다.
Process Scheduling Queues
- Job Queue : 새로 생성된 Process들이 저장되는 Queue. Job Queue안에 있는 Process는 New State이다.
- Ready Queue : Main Memory에 있음. Ready상태의 Process들이 CPU할당을 기다리는 Queue이다.
- Device Queue : I/O Device를 기다리는 Process들이 있는 Queue이다. Device Queue안에 있는 Process는 Waiting State이다.
Process들은 이 Queue들을 돌아다닌다.
Schedulers
- Long-term Scheduler (or Job Scheduler) : Job Queue에서 Process를 선택하여 Ready Queue에 넣는다. 아주 가끔, 느리게 일어난다. (infrequently, slow) JOB → READY
- Main Memory에 올라와 있는 Process의 갯수를 조절하여 Multiprogramming의 degree를 조절한다.
- Short-term Scheduler(or CPU Scheduler) : Ready Queue에서 다음 CPU에 할당될 Process를 선택한다. 아주 빠르고 자주 발생한다. (frequently, fast) READY → CPU
- Midium-term Scheduler : Swapping 을 담당한다. MEMORY → DISK
- Swapping (Swapped out) : Wait 상태의 Process들을 잠시 Memory에서 Disk로 내려보내는 작업
🔺 I/O Bound Process : I/O작업에 많은 시간이 소모되는 Process. CPU이용시간이 짧다.
🔺 CPU Bound Process : CPU를 많이 사용하는 Process
Process Creation
Parent Process는 Tree의 형태로 다른 Child Process를 생성한다.
Resource Sharing
자원 공유를 어떻게 할 것인가? 다음과 같은 방법이 있다.
- 모든 자원을 공유한다.
- 자원을 공유하는 비율을 정한다. (ex. 공유 80%, 공유하지 않음 20%)
- 자원을 전혀 공유하지 않는다.
Execution
어떻게 실행할 것인가? 다음과 같은 방법이 있다.
- Parent Process와 Child Process가 동시에 실행된다.
- Parent Process가 Child Process의 실행이 끝날 때 까지 기다린다.
Address Space
주소 공간을 어떻게 할 것인가?
- fork()라는 System Call을 사용한다. → 주소를 공유한다. 같은 프로그램과 Data를 사용한다 ⇒ Parent와 Child가 같은 일을 한다.
- fork() 를 호출한 뒤 exec()라는 System Call사용 → fork() + exec() ⇒ Child Process가 새로운 프로그램 작업을 한다.
🔺 Process가 생성되면 Process의 고유한 PID(Process ID)가 생기고 자식으로 내려갈 수록 PID가 커진다.
Process Termination
- 정상적으로 종료되는 경우 → Process가 마지막 명령을 수행하면 OS에게 Process를 종료할 것인지 물음.
- Parent Process에 Output을 전달 ( 실행 결과를 전달)
- Child Process's resources are deallocated by OS.( 자원을 회수한다 )
- Parent Process가 Child Process를 강제로 종료하는 경우 → Abort한다고 한다.
- Child Process가 할당된 자원을 초과하여 사용하는 경우. → Aborting
- Child Process가 더이상 해야할 작업이 없는 경우 → Aborting
- Parent Process가 종료된 경우. → Aborting
- 🔺 Cascading Termination : Parent Process가 종료되는 경우 Child Process가 전부 종료되는 것.
'Computer Science > OS' 카테고리의 다른 글
3강 연습문제 (2) | 2023.11.25 |
---|---|
Processes(2) (2) | 2023.11.24 |
운영체제 2강 연습문제 (0) | 2023.11.21 |
Operating System Structures(2) (0) | 2023.11.21 |
Operating System Structures (1) (0) | 2023.11.20 |