코가손의 블로그

[운영체제] 프로세스의 이해 본문

운영체제

[운영체제] 프로세스의 이해

Cogason 2021. 12. 19. 14:10

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상태가 된 프로세스는 메모리, 자원을 회수한다.

 

 

fork() 시스템 콜의 프로세스 생성, 종료 과정

 

zombie process : 자식 프로세스 종료되었지만 부모 프로세스가 자식 프로세스의 종료 상태를 회수하지 않았을 경우 자식 프로세스를 좀비 프로세스라고 함

orphan process : 부모 프로세스가 자식 프로세스보다 먼저 종료됨

 

=> 응용하여 백그라운드 프로세스, 데몬으로 활용

Comments