CS/OS

[OS] Process (1) : 프로세스

JWonK 2023. 3. 28. 14:55
728x90
반응형

- Process는 Job 또는 User Programs or Task로 불릴 수도 있다.

- 현재 실행 중인 프로그램

- 항상 순차적으로 진행 / 한 번에 하나씩

 

[Process 구성요소]

  • Program Counter
  • Stack
  • Data Section

 

 

- text : Program Code를 칭함

- Data : Global variables(하나의 process 외 공유할 수 있는 전역변수)

- Heap : 추가적인 메모리 공간을 요청하거나 반환할 수 있음

- Stack : 추가적인 메모리 공간을 요청하거나 반환할 수 있음, 일시적인 지역변수를 할당할 수 있음

 

 

- Process는 다섯가지 상태를 가질 수 있음

  • new : 생성되었을 때
  • ready : CPU만 할당 받으면 바로 실행할 수 있도록 기다리는 상태
  • running : 실행중
  • waiting : 이벤트가 발생하는 것을 기다리는 상태
  • terminated : 끝난 상태

 

 

- 각각의 Process 상태 또는 가져야할 정보를 Process Control Block에 저장하고 있음

- 각각의 Process는 자신만의 PCB를 가지고 있음

  • Process state(상태)
  • PC
  • CPU registers 값
  • CPU scheduling information (우선순위, queue ptr, etc)
  • 메모리 관리 정보 (Base/Limit register, Page/Seg Table)
  • Accounting Information
  • I/O status Information

→ PCB는 메모리에 ID값을 유지하면서 저장되어있음

→ register에 저장되어있을 수도 있음 (성능 측면에서 memory보다 좋음 : 빠르기 때문에)

 

- Context Switch : 하나의 Process가 종료된 후 운영체제(=Scheduling)에 의해 다음 Process로 넘어가도록 하는 것

- 진행 중이던 PCB값 저장 → 다음에 load할 새로운 PCB값 load

- Context Switch Time은 Overhead이다. 따라서 많이 load할 경우 성능 측면에서 Overhead가 많이 발생하는 것과 동일하다.

 

- 진행 중이던 Process에 Interrupt or System call 발생

- PCB값 저장

- CPU Scheduling을 통해 다음 PCB값 load

- 다음 Process executing

 

- Job queue : 모든 system process 집합

- Ready Queue : 메모리 안에서 실행을 기다리고 있는 준비된 process

- Device queues : I/O device를 기다리고 있는 process queue

 

 

 

- Job Queue는 하드디스크에 존재하는 작업들이 들어오는 공간

- Ready State가 된 process를 ready queue에 push함

- CPU로 넘겨서 각각의 작업을 수행할 수 있음

  • I/O Request가 들어오면 I/O queue를 통해 작업을 수행하고 다시 해야할 경우 다시 ready queue로 넣을 수 있음
  • Time Slice Expired : CPU는 작업을 한 번에 다 처리하지 않고 정해진 시간만 할당함. 할당된 시간이 모두 끝나면 CPU는 관여하지 않음. 그럼 작업 재개를 위해 Ready Queue에 다시 넣어야 함
  • Fork a Child : Parent는 Child를 생성하여 작업을 부여할 수 있음
  • Wait for an Interrupt : Interrput / Signal을 기다릴 수 있음

 

 

- 맨 위 queue는 Ready Queue

- 그 아래들은 각각의 process or device가 가지는 queue

- head와 tail을 통해 작업의 연계 표현 가능

 

 

 

- Long-term : 존재하는 모든 process들 중 ready queue로 보낼 것을 선택

- Short-term : CPU를 할당해서 작업을 실행시킬 Process 선택

 

- CPU 이용량 효율성 증대를 위해 CPU는 작업 중이던 것을 한 번에 끝내지 않고 하드 디스크로 보내놓고 다른 작업을 수행한다. 약간의 시간이 흐른 후 다시 메모리로 작업을 올린 후 다시 CPU는 작업을 재개한다. 이런 식으로 CPU가 최대 효율로 여러 작업을 처리할 수 있도록 한다. 이게 Swap In/Out Memory/Disk이다.

→ Medium-Term Scheduling

 

 

 

 

- Short-term은 CPU 효율성을 위해 빠르고 보다 자주 일어난다.

- Long-term은 CPU와 직접적인 연관이 없기 때문에 덜 일어나고 비교적 느리게 일어난다. 

- Long-term은 Multiprogramming degree를 제어한다.

 

- Process는 두 가지 방식으로 표현할 수 있다.

  • I/O-bound process : I/O 작업이 주된 process
  • CPU-boubd process : 연산 작업 같이 CPU가 요구되는 작업이 주된 process

-> 시간 흐름에 따른 CPU 이용량을 통해 구분할 수 있다.

 

 

 

 

- Process는 Children Process를 만들어낼 수 있고, 이를 크게 보면 트리 형태로 보인다.

- 자원 공유 측면

  • Parent & Children가 모든 자원을 공유할 수 있다.
  • Parent & Children가 부분적으로 자원을 공유할 수 있다.
  • Parent & Children가 모든 자원을 공유하지 않는다.

- 실행 측면

  • Parent & Children 동시에 진행할 수 있다.
  • Parent Process는 Children Process가 끝날 때까지 기다릴 수도 있다.

 

 

 

- Address Space

  • Child와 Parent가 복제된 공간, 같은 메모리를 함께 사용하면 프로그램과 Data를 공유할 수 있다. fork() system call만 수행
  • Child가 새로운 공간에 할당하고 프로그램을 load한다. fork() 뿐만 아니라 exec() system call도 수행

 

 

- fork() System Call이 호출되는 sudo code

 

 

- 자연스럽게 종료하는 것

- 진행 중이던 작업을 parent에게 반납

- 자원을 parent에게 반납

 

- 강제 종료 (abort)

-> Child process가 할당된 자원보다 초과해서 사용하는 경우

-> Child process에게 부여한 작업이 더 이상 필요 없을 때

-> Parent Process가 종료되었을 때 (= cascading termination)

728x90
반응형

'CS > OS' 카테고리의 다른 글

[OS] - Thread  (0) 2023.04.12
[OS] Process (2) : 프로세스  (0) 2023.04.04
[OS] - OS Structure(2) : System Program, Virtual Machine  (0) 2023.03.21
[OS] - OS Structure(1) : System Call  (4) 2023.03.18
[OS] - OS 소개(2) : OS 구조 및 기능  (0) 2023.03.12