Computer Science/OS

Processes(1)

박붕어 2023. 11. 24. 00:04

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

자원 공유를 어떻게 할 것인가? 다음과 같은 방법이 있다.

  1. 모든 자원을 공유한다.
  2. 자원을 공유하는 비율을 정한다. (ex. 공유 80%, 공유하지 않음 20%)
  3. 자원을 전혀 공유하지 않는다.

Execution

어떻게 실행할 것인가? 다음과 같은 방법이 있다.

  1. Parent Process와 Child Process가 동시에 실행된다.
  2. Parent Process가 Child Process의 실행이 끝날 때 까지 기다린다.

Address Space

주소 공간을 어떻게 할 것인가?

  1. fork()라는 System Call을 사용한다. → 주소를 공유한다. 같은 프로그램과 Data를 사용한다 ⇒ Parent와 Child가 같은 일을 한다.
  2. fork() 를 호출한 뒤 exec()라는 System Call사용 → fork() + exec() ⇒ Child Process가 새로운 프로그램 작업을 한다.

🔺 Process가 생성되면 Process의 고유한 PID(Process ID)가 생기고 자식으로 내려갈 수록 PID가 커진다.

Process Termination

  1. 정상적으로 종료되는 경우 → Process가 마지막 명령을 수행하면 OS에게 Process를 종료할 것인지 물음.
    1. Parent Process에 Output을 전달 ( 실행 결과를 전달)
    2. Child Process's resources are deallocated by OS.( 자원을 회수한다 )
  2. 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