티스토리 뷰

OS

[OS] process의 4가지 상태

SweetDev 2021. 11. 24. 15:56

process의 상태 - new, ready, running, waiting, terminated : 5-state process model

https://scanftree.com/operating-system/diagram-of-process-state.JPG

new: 프로세스가 만들어 지는 중

ready: 할당되기를 기다리는 상태

running: 인스트럭션이 실행되는 상태, 일 하는중

waiting: 어떤 event가 일어나길 기다리는 상태

terminated: 실행 끝, 프로세스가 다 수행되어서 종료할 때 잠시 생김

 

어떤 책에서는 waiting을 Blocked나 I/O bound라고 표현하기도 한다!!

 

ready와 waiting의 차이를 잘 알자

사용자의 행동을 기다릴 때 running에서 기다리지 말고 waiting으로 넘겨버리고

사용자가 행동을 해줬다면 waiting에서 ready로 넘기고 CPU의 스케줄러가 스케줄링을 해줄 때까지 기다린다. 

 

스케줄링: ready인 여러개 중에서 하나를 고르는 것

dispatch: 고른 애를 CPU에 올려놓는 것

 

 

Suspended Process를 추가한 경우

 

Swapping: ready상태의 process가 하나도 없다면, 너무 오랫동안 waiting 상태에 있었던 process를 메인메모리에서 디스크의 suspend queue에 넣어버린다. 

 

1개의 suspend state

2개의 suspend state

 

 

 

 

리눅스에서의 process state

Running

Interruptible

Uninterruptible

Stopped

 

예시

Producer-Consumer

 

리눅스에서 task creation 과정

fork(): caller task 모두 복사하기

clone(): caller task의 일부 공간을 share함

 

 

fork()->do_fork()->copy_process()를 콜 하는데 copy_process()에서 하는 일

  • copy_files()
  • copy_signal()
  • copy_mm() : address space를 복사.
    • 근데 모든 page frame을 복사하기에는 시간이 많이 드니까.. Copy-on-Write(Cow)를 한다!! owner중에 한명이 변경하기 전까지는 같은 곳을 참조하고 있다가 변경하면 그제서야 복사 하는것
    • 그 전에는 Page Table만 복사해둔다.
  • copy_namespaces()
  • copy_thread()

 

[출처]

https://jhnyang.tistory.com/7

https://jhnyang.tistory.com/103

 

'OS' 카테고리의 다른 글

[OperatingSystem] 스레드와 프로세스의 차이  (0) 2021.04.18
[OperatingSystem] 프레임, 페이지  (0) 2020.05.31
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함