모래성 말고 철옹성

Chapter3. 프로세스와 스레드 (1) 본문

Computer Science/운영체제

Chapter3. 프로세스와 스레드 (1)

JDhyeok 2022. 9. 6. 15:27

프로세스의 개요***

프로세스란?

프로세스란 메모리상에서 작업하고 있는 프로그램을 말한다.

 

*프로그램 vs 프로세스

   - 프로그램 : 저장장치에 존재하는 실행파일

   - 프로세스 : 해당 실행파일(프로그램)이 실행 되어 메모리상에서 작업되고 있는 단위

 

프로세스의 상태

현대 운영체제는 대부분 시분할 시스템이기 때문에 프로세스 상태를 두어 프로세를 관리한다.

프로세스는 다음과 같은 다섯 가지의 상태를 가진다.

 

상태 설명
New 프로그램을 메모리에 할당하고 PCB가 생성되는 생성 상태이다.
Ready 프로세스가 생성된 후 시작하기를 기다리고 있는 준비 상태이다.
Runing 프로세스가 time slice를 얻어 CPU에 할당되어 CPU자원을 사용하고 있는 실행 상태이다.
Waiting (Block) 실행 상태에 있는 프로세스가 특정 이벤트(I/O 완료신호, 특정 신호 등)를 기다리고 있는 상태이다. 이벤트를 받으면 준비 상태로 돌아간다.
Terminated 프로세스가 완전히 종료되어 모든 데이터가 종료된 종료 상태이다.

아래는 위 다섯가지 상태가 각 관계에서 어떻게 변화하는지 프로세스 상태 변화도를 나타내었다.

(a) 프로세스 상태 변화도

  • New Ready
    프로그램이 새로 할당된다고 무조건 큐에 들어가 Ready 상태가 되는 것은 아니다. 운영체제에 Admit(허가)가 떨어진 이후에 Ready상태를 부여받을 수 있다.

    메모리 자원 부족의 문제 혹은 CPU 점유율이 높을 때 해당 상태변화가 지연될 수도 있다.

  • Ready → Running
    Dispatcher가 대기중인 프로세스를 CPU에 할당해 Running 상태로 만든다.

  • Running → Terminated
    운영체제는 프로그램이 완전 종료시 Terminated 상태로 만들고 관련 데이터를 삭제한다.
  • Running → Ready
    CPU는 프로세스에 할당된 time slice를 다 사용하게 되면 timeout(pid) 실행으로 Ready 상태로 돌아가게 된다.

  • Running → Waiting
    프로세스가 Running 상태 중에 I/O가 발생하고나 다른 작업에 의해 이벤트가 발생하면 Waiting 상태로 변경된다.

  • Waiting → Ready
    CPU는 I/O 또는 이벤트가 완료되었다는 인터럽트 신호를 받고 다시 Running이 아닌 Ready 상태로 옮겨지게 된다.

프로세스 제어 블록과 문맥 교환

프로세스 제어 블록 (PCB)*

PCB는 프로세스를 실행하는 데 주요 정보들을 저장하고 있는 자료 구조이다. PCB의 구성은 아래와 같이 구성된다.

포인터 프로세스 상태
프로세스 구분자 (PID)
프로그램 카운터 (PC)
프로세스 우선순위
레지스터 정보
메모리 관리 정보
계계정 정보
PPID & CPID
.
.
.

 

문맥교환 (Context Switching)**

문맥교환(Context Switching)이란 CPU가 현재 점유하고 있는 프로세스를 잠시 중단하고 새로운 프로세스를 받는 작업이다.

 

프로세스의 연산

프로세스 구조

(b) 프로세스의 구조

프로세스가 생성이 되어 메모리에 올라가는 프로세스의 구조는 그림(b)와 같다. 

  • stack : local 변수, 함수 호출 등 임시 데이터가 저장되는 공간
  • heap : 동적할당으로 생긴 데이터가 저장되는 공간
  • data : global 변수, 초기화된 데이터가 저장되는 공간
  • text(code) 영역 : 소스 코드가 저장되는 공간

 

반응형
Comments