코가손의 블로그
[운영체제] 프로세스의 이해 본문
Process
OS가 해야할 가장 기본적인 일은 프로세스를 관리하는 것이다.
Stroage 에 있는, 우리가 작성한 프로그램을 메모리에 올린 것을 프로세스 라고 말한다.
메모리에 올라간 프로세스는 CPU를 점유해야 하고 New/Running/Waiting/Ready/Treminated 의 상태를 가진다.
New : 프로세스가 만들어지는 과정의 상태
Ready : 실행되기 전, 언제든지 실행 될 수 있는 준비 상태
Running : CPU를 점유하는 실행 상태
Waiting : I/O나 다른 이벤트가 발생하기를 기다리는 상태
Terminated : 프로세스가 다 수행되어서 종료할 때 잠시 생기는 state
Running -> Waiting, Waiting -> Ready
현재 프로세스가 더 이상 수행이 안되서 어떤 이벤트가 발생하기를 기다린다.
고급 자원인 CPU는 낭비가 되면 안 되기 때문에 다른 ready 상태의 프로세스를 running하고 현재 프로세스를 waiting으로 바꾼다.
I/O or event 가 완료되면 Waiting -> Ready 과정이 일어난다.
Ready -> Running
ready 상태에 있는 프로세스들은 여러 개 존재한다. 여러 프로세스들 중 수행될 프로세스를 고르는 작업을 스케줄링(Scheduling)이라고 한다. 스케줄링은 운영체제의 역할이며 스케줄링한 프로세스를 CPU에 올리는 것을 dispatch 라고 하며 이 때 Running상태가 된다.
Running -> Exit
프로그램에서 exit(), return 0 와 같은 명령에 의해 프로세스를 끝내면 Terminated상태가 된다.
Terminated상태가 된 프로세스는 메모리, 자원을 회수한다.
zombie process : 자식 프로세스 종료되었지만 부모 프로세스가 자식 프로세스의 종료 상태를 회수하지 않았을 경우 자식 프로세스를 좀비 프로세스라고 함
orphan process : 부모 프로세스가 자식 프로세스보다 먼저 종료됨
=> 응용하여 백그라운드 프로세스, 데몬으로 활용
'운영체제' 카테고리의 다른 글
[운영체제] 프로세스간 통신, PIPE (0) | 2021.12.26 |
---|---|
[운영체제] 프로세스간 통신, IPC (0) | 2021.12.19 |
[운영체제] 프로세스 생성 실습 (0) | 2021.12.19 |
[운영체제] 운영체제 란? (0) | 2021.12.19 |
[운영체제] 프로세스 와 문맥 교환 (0) | 2021.12.04 |