본문 바로가기
책/혼공 컴퓨터구조+운영체제

운영체제 - 프로세스 상태, 프로세스 계층 구조(부모 프로세스, 자식 프로세스), 프로세스 생성 기법(fork,exec)

by 코딩하는 돼징 2023. 12. 15.
반응형

PCB에 기록되는 프로세스 상태


프로세스 상태

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

01생성 상태(new)

이제 막 메모리에 적재되어 PCB를 할당 받은 상태이다. 생성 상태를 거쳐 실행할 준비가 완료되었다면 곧바로 실행되지 않고 준비 상태가 되어 CPU의 할당을 기다린다.


02 준비 상태(ready)

당장이라도 CPU를 할당 받아 실행할 수 있지만 아직 자신의 차례가 아니기에 기다리고 있는 상태이다. 자신의 차례가 되면 CPU를 할당 받아 실행상태가 된다. 

 

준비 상태인 프로세스가 실행 상태로 전환되는 것을 디스패치(dispatch)라고 한다.


03 실행 상태(running)

CPU를 할당받아 실행 중인 상태를 의미한다. 할당된 시간 모두 사용시 (타이머 인터럽트가 발생하면) 다시 준비 상태가 되고 실행 도중 입출력 장치를 사용하면 입출력 작업이 끝날때까지 ]대기 상태가 된다.


04 대기 상태(blocked)

프로세스 실행 도중 입출력 장치를 사용하는 경우가 있다.  입출력 작업은 CPU에 비해 느리기에 입출력 작업이 끝낼 때까지(입출력 완료 인터럽트를 받을때까지) 기다려야 한다. 작업이 완료된다면 다시 준비상태로 CPU할당을 기다린다.


05 종료 상태(terminated)

프로세스가 종료된 상태이다. 프로세스가 종료되면 운영체제는 PCB와 프로세스가 사용한 메모리 영역을 정리하고 해제한다.


프로세스는 실행 도중 시스템 호출을 통해 다른 프로세스를 생성할 수 있다.

부모 프로세스(parent process)

새로운 프로세스를 생성한 프로세스이다. 자식 프로세스의 생성 및 실행과 관련하여 일종의 제어 권한을 가진다.

 

자식 프로세스(child process)

부모 프로세스에 의해 생성된 프로세스이다. 부모 프로세스와는 별개의 독립적인 실행 흐름을 가지며 새로운 작업을 수행할 수 있다.

 

부모 프로세스와 자식 프로세스는 별개의 프로세스이므로 각기 다른 PID를 가진다. 일부 운영체제에서는 자식 프로세스 PCB에 부모 프로세스 PID인 PPID(Parent PID)가 기록되기도 한다.


프로세스 계층 구조

부모 프로세스로부터 생성된 자식 프로세스는 실행과정에서 또 다른 자식 프로세스를 생성할 수 있고 그 자식 프로세스는 실행과정에서 또 다른 프로세스를 생성할 수 있다. 그러므로 운영체제는 프로세스를 낳는 계층적인 구조로써 프로세스들을 관리한다.


예를 들어 사용자가 컴퓨터를 켜고 로그인 창을 통해 성공적으로 로그인해서 bash 셸(사용자 인터페이스)로 Vim이라는 문서 편집기 프로그램을 실행했다고 가정해보자

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

1) 사용자가 컴퓨터를 켠 순간에 생성된 최초 프로세스는 로그인을 담당하는 프로세스를 자식 프로세스로 생성한 것이고

2) 로그인 프로세스는 사용자 인터페이스(bash 셸)프로세스를 자식 프로세스로 생성한 것이고

3) 사용자 인터페이스는 Vim 프로세스를 생성한 것이다.


그러면 최초의 프로세스가 뭐에요?

운영체제의 초기 부트스트랩 프로세스이다. 이는 시스템 부팅시에 자동으로 실행된다. 주요 기능으로 하드웨어 초기화 및 운영체제의 핵심 기능을 로드하여 시스템을 시작한다.

출처 :https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


프로세스 생성 기법

부모 프로세스는 자식 프로세스를 어떻게 만들어 내고 자식 프로세스는 어떻게 자신만의 코드를 실행할까?

복제와 옷갈아입기를 통해 실행된다.

 

01 fork 시스템 호출

부모 프로세는 fork 시스템 호출을 통해 자신의 복사본을 자식 프로세스로 생성한다. 즉 fork는 자기 자신 프로세스의 복사본을 만드는 시스템 호출이다. 자식 프로세스는 부모 프로세스의 복사본이기 때문에 부모 프로세스의 자원들 이를테면 메모리의 내용 열린 파일의 목록등의 자식 프로세스에 상속된다.

출처 :https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


02 exec 시스템 호출

자식 프로세스는 exec 시스템 호출을 통해 자신의 메모리 공간을 다른 프로그램으로 교체한다. 이때 메모리 공간을 새로운 프로그램으로 덮어쓰는 시스템 호출이다. 코드/데이터 영역은 실행할 프로그램 내용으로 바뀌고 나머지 영역은 초기화 된다.

출처 :https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 

 

 

 

 

참고 :  본 내용은개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제강의를 수강하여 작성하였습니다. https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 

 

 

 

반응형

댓글