[OS] 프로세스와 스레드 part 2

이름이름·2023년 8월 13일
0

OS

목록 보기
3/3
post-thumbnail

프로세스의 상태

운영체제는 프로세스의 상태를 PCB를 통해 인식하고 관리합니다
프로세스가 가질 수 있는 대표적인 상태는 다음과 같습니다.

생성 상태 (new)

프로세스를 생성 중인 상태를 생성 상태(new)라고 합니다.

생성 상태를 거쳐 실행할 준비가 완료된 프로세스는 곧바로 실행되지 않고 준비상태가 되어 CPU의 할당을 기다립니다.

준비 상태 (ready)

당장이라도 CPU를 받아 실행할 수 있지만 본인의 차례가 아니여서 기다리고 있는 상태입니다.

실행 상태 (running)

CPU를 할당받아 실행 중인 상태를 의미합니다.

프로세스는 일정 시간 동안만 CPU를 사용할 수 있어서 프로세스가 할당받은 시간을 모두 사용한다면 다시 준비 상태가 됩니다.

대기 상태 (blocked)

프로세스는 실행 도중 입출력장치를 사용하는 경우가 있습니다.

이때 입출력장치를 요청한 프로세스가 입출력장치의 다른 작업이 끝날 때까지 기다리는 상태를 대기 상태라고 합니다.

종료 상태 (terminated)

종료 상태는 프로세스가 종료된 상태입니다.

프로세스가 종료되면 운영체제는 PCB프로세스가 사용한 메모리를 정리합니다.

프로세스 계층 구조

프로세스는 실행 도중 시스템 호출을 통해 다른 프로세스를 생성할 수 있습니다.
이 때 새로운 프로세스를 생성한 프로세스부모 프로세스라 하고,
부모 프로세스에 의해 생성된 프로세스를 자식 프로세스라고 합니다.

자식 프로세스도 또한 자식 프로세스를 만들 수 있습니다.

운영체제는 이처럼 프로세스가 프로세스를 낳는 계층적인 구조로 프로세스들을 관리합니다.

fork

방금 말한 자식 프로세스부모 프로세스의 복제본입니다.

부모 프로세스는 fork라는 시스템 호출을 통해 자신의 복사본(자식 프로세스)를 생성합니다.

자식 프로세스는 복사본이므로 부모 프로세스의 자원들이 상속됩니다. (메모리의 내용, 열린 파일의 목록 등)

exec

exec는 자신의 메모리 공간을 새로운 프로그램으로 덮어씌우는 시스템 호출입니다.

exec를 호출하면 코드 영역과 데이터 영역이 실행할 프로그램으로 바뀌고, 나머지 영역은 초기화됩니다.

fork VS exec

  • fork는 본인의 복사본(자식 프로세스)를 위해 메모리를 할당하고 그 새로운 공간으로 모두 복사함 -> PID가 다름
  • exec는 메모리를 할당하지 않고 이 exec()를 호출한 프로세스의 메모리에 새로운 프로세스의 코드를 덮어버림 -> PID가 같음

스레드

profile
공부 정리

0개의 댓글