본문 바로가기
컴퓨터공학/운영체제

3. 프로세스의 개념

by meow0110 2024. 5. 26.

■ 프로세스는 작업과 같은 의미이나, 자세한 차이는 '커널'에 등록 유무에 따라 의미가 다르다.

 

■즉, 커널에 등록되어 관리가 되어야 프로세스가 된다.

 

■프로세스의 정의는 의미가 다양하다. 한번 읽어보자.

■PCB (프로세스 제어 블록) : 이 PCB를 갖고 있는 작업을 프로세스라고 한다.

■커널 : 운영체제의 핵심 기능이라고 생각하자

 

■ 프로세스 정의의 결론 :

-지금 실행중에 있는 프로그램을 말한다. 

-PCB를 갖고 있는 작업

 

■PCB

-커널 공간내에 존재. 

-커널에 등록된각 프로세스들에 대한 정보를 저장하는 영역

 

■ 자원은 본인 스스로 어떻게 할당, 반납되지 않는다. 오로지 커널에 의해서만 가능하다. 그래서 여기서는 피동적인 개체라고 소개하는 것이다.

■ 커널없이는 자원들은 아무것도 못한다고 생각하자.

 

 

■PCB안에는 뭐가 있는가? 윗 그림을 참고로 보자. 

■프로세스 고유 번호( PID) : 중복되지 않는 고유번호가 할당된다. 이 정보는 PCB내에 저장되어 있다.

■프로세스 우선순위 : 프로세스가 2개(P1,P2) 있다. 근데 동시에 CPU를 써야하는 상황이다. 그러면 P1과 P2내에 있는 PCB를 열어보면 우선순위가 있다. 만약 P2가 더 급하면 P2부터 자원을 할당받는 것이다.

■프로세스 현재 상태(Status) : CPU를 사용하는 상태인지? 대기인지? 아니면 정지인지 알 수 있다. 

■프로세스가 할당 받은 자원의 리스트 또는 이들에 대한 포인터 정보를 PCB내에 저장함

■문맥 저장 영역 (context save area) : 

-P2가 5초 CPU를 쓰고 싶었다. 근데 작업을 2초만하고 대기상태가 됨.(어떠한 스케쥴링에 의해) 그리고 P1이 쓰게 됨. (이러한 과정을 문맥 교환이라고 함)

-P2는 내가 2초밖에 못썼다는 정보들을 저장하는데 이를 PCB에 하게 됨.

-한마디로, 나 아직 작업 덜 됐음! 아직 CPU 3초 더 써야하니 기록해둬! 

 

■ 커널 프로세스 = 시스템 프로세스 = 운영체제 프로세스

 

■ 사용자의 코드를 수행하는 역할

■ 사용자의 코드?  직접 프로그래밍하게 되는 코드들을 수행하는 것

 

■ 독립 프로세스

-독립적으로 실행됨. 

-주어진 초기값에 따라 항상 같은 결과를 보여줌.

 

■ 협동 프로세스

-영향을 줄 수도 있고 받을 수도 있다. 그래서 값이 달라질 수 있다.

-프로세스 간의 협력을 해야해서 통신 기능이 필요하다.

 

 

 

■PCB 안에 여러가지 정보가 저장된다. (프로세스ID, 프로세상태정보 등)

■여기서는 PCB안의 프로세스 상태정보에 대해 알아보는 것이다.

■ 프로세스 상태 :  비실행 / 실행  으로 나눔

 

■생성 : 생성되었다고 바로 쓰는게 아니다. 즉 비실행 상태, 기다리는 대기 상태다. (사용할 수도 있다.)

■디스패치 : 비실행 프로세스를 실행상태로 만들어주는 과정

■인터럽트 : 실행을 잘하고 있는 프로세스를 비실행상태로 만드는 과정

■종료 : 프로세스의 일 끝! 

 

■아래에서 좀 더 위의 과정을 자세하게 보자.

 

■실행

-명령어가 실행되는 상태

-CPU 안에서 동작되는 과정을 말함.

-프로세스가 CPU를 점유하는 것이다.

 

■준비

-프로세스가 CPU의 자원을 사용하기 위해 기다리는 상태

 

■대기

-프로세스가 이벤트가 일어나서 대기하는 상태

■대기의 예시 (프로세스가 언제 대기가 되는가?)

-잘 실행되던 프로세스 P1이 있다.

-근데 P2가 프린트 작업을 하고 싶다고 한다.

-P1은 '준비'가 되는 것이 아니라 '대기'가 되는 것이다.

-CPU는 P2의 프린트 작업을 한다.

-CPU는 대기 상태에 있던 P1은 '준비' 상태가 된다.

-준비 상태의 P1은 다시 실행이 된다.

■대기의 결론

실행 > 대기 > 준비 > 실행      이 된다.     실행 > 준비 >실행이 아니다!

 

 

■프로세 스케줄러에는 여러가지가 있다. 그 중에 작업 스케줄러가 있다.

■ 프로세스(작업)와 프로세서(CPU)의 차이 주의!

 

■작업 스케줄러

-지금 CPU를 쓰고자 하는 프로세스들을 선정하고, 준비리스트에 쭉 삽입시켜준다.

 

■프로세 스케줄러

-선정한 작업의 상태를 변화시키면서, 프로세스의 생성에서 종료까지의 수행을 담당.

 

■결론

스케줄러 안에는 각자의 역할을 하는 또 다른 여러가지 스케줄러가 있다.

 

 

■ 프로세스가 어떠한 상태변화를 거치는지 보자.

 

■ 작업 스케줄러

- 생성 > 준비 를 담당하는 스케줄러

- 생성된 스케줄러중에 CPU를 사용해야할 프로세스들을 선별해서 준비리스트(대기Q)에 삽입함

 

■ 디스패치

- 준비 > 실행

 

■ 작업을 완료하면?

- 실행 > 종료

 

■ Timer Runout

- 실행 > 준비

- 주어진 시간 안에 작업을 하지 못할 경우다.

 

■ Block

- 실행 > 대기

-이벤트나 입출력 신호가 발생할 경우다.

 

■ Wake up

- 대기(보류) > 준비

-이벤트나 입출력 신호가 완료되면 이 상태로 전환된다.

 

■ 정리

5가지 상태 : 생성, 준비, 실행, 대기, 종료

4가지 전환과정 : 대스패치, Timer Runout, Block, Wakeup

 

 

■ 프로세스의 상태 변화에 대해 정리해보자.

■ 위와 동일 정리해보자.

 

■ 선점(Preemption)

- 실행 > 준비

- 너 CPU 사용시간 다 됐네? 내가 CPU 쓰러 가져갈게!  이를 선점했다고 생각하면 된다.

 

■ 블럭 (Block/Sleep) 

- 실행 > 대기

- 대기 상태는 프로세스(작업)가 프로세서(CPU) 외에 특정자원을 요청하고 기다리는 상태다.

 

 

 

■ 참고로 이러한 '대기'에서는 바로 '실행'이 아닌 '준비'를 거쳐야한다. (대기 > 실행으로 바로 안된다!)

 

■ 일 끝! 뒷정리(메모리 삭제, PCB도 폐기)해!

 

 

 

선생님의 학습 정리

■ PCB : 프로세스ID / 상태 / 우선순위 등

■ 상태 : 생성, 준비, 실행, 대기, 완료

■ 상태변화 : 디스패치, 타임아웃, 블럭, Wake up

 

 

학습정리

프로세스의 개념

  • 실행중인 프로그램(작업)이다.
  • 운영체제에 들어 있는 프로세스는 제어 블록 PCB 이다.
  • 커널에 등록되고 커널의 관리하에 있는 작업이다.
  • 각종 자원들을 요청하고 할당 받을 수 있는 개체이다.
  • 프로세스 관리 블럭을 할당 받은 개체이다.

 

 

프로세스의  종류

  • 운영체제 프로세스는 프로세스 상태 순서를 제어하거나 사용하고 있는 프로세스가 다른 사용자나 운영체제 영역을 침범하지 못하게 감시하는 기능을 담당한다.
  • 사용자 프로세스는 사용자 프로세스는 사용자 코드를 수행한다.
  • 병행프로세스는 서로 독립적으로 실행되는 독립 프로세스와 프로세스들이 서로 협력하며 수행되는 협동 프로세스로 구분된다.

 

 

프로세스의 상태변화

  • 프로세스의 상태 변화는 운영체제가 프로세서 스케줄러 이용하여 관리한다.
  • 각 프로세스는 생성, 준비, 실행, 대기, 종료 상태로 구분되고 실행하면서 상태가 변한다.
  • 생성 상태는 사용자가 요청한 작업이 커널에 등록되고 PCB가 할당되어 새로운 프로세스가 만들어지는 상태이다.
  • 준비상태는 프로세서를 할당 받으려고 기다리는 상태로 즉시 실행 가능한 상태이다.
  • 실행상태는 프로세서를 점유하여 명령어가 실행되는 상태이다.
  • 대기상태는 이벤트나 입출력 대기 신호 발생을 기다리는 상태이다.
  • 종료상태는 코드와 사용했던 데이터를 메모리에서 삭제하고 프로세스 제어 블럭을 폐기하는 단계이다.

'컴퓨터공학 > 운영체제' 카테고리의 다른 글

6. 스케쥴링 알고리즘  (0) 2024.06.25
5. 프로세서 스케쥴링  (0) 2024.06.12
4. 스레드의 개념  (1) 2024.05.26
2. 운영체제의 기능과 서비스  (1) 2024.05.22
1. 운영체제 개요  (2) 2024.05.21