찬란

프로세스 관리(Process Managemenet) 본문

운영체제

프로세스 관리(Process Managemenet)

chan4 2023. 4. 14. 20:47

해당 블로그의 내용은 학교에서 배운 내용을 개인적으로 정리한 내용이므로, 잘못된 부분이 있을 수도 있습니다. 

작업(Job)

  • 실행 할 프로그램(Program) + 데이터(Data)
  • 컴퓨터 시스템에 실행 요청 전의 상태

 

프로세스 (Process)

  • 작업 관리자 켜면 나오면 작업 목록들
  • 실행을 위해 시스템(커널)에 등록된 작업
  • 시스템 성능 향상을 위해 커널에 의해 관리됨
  • 작업(Job) -> 프로세스(Process)

 

프로세스(Process)의 정의

실행중인 프로그램

  • 커널에 등록되고 커널의 관리 하에 있는 작업
  • 각종 자원들을 요청하고 할당 받을 수 있는 개체
  • 프로세스 관리 블록(PCB)을 할당 받은 개체
  • 능동적인 개체
  • 실행 중에 각종 자원 요구/할당/반납하여 진행

 

프로세스의 종류

역할에 따라

  • 시스템(커널) 프로세스
    • 모든 시스테 메모리와 프로세서의 명령에 접근할 수 있는 프로세스
    • 프로세스 실행 순서 제어
    • 다른 사용자 및 커널 영역을 침범 못하게 감시
    • 사용자 프로세스 생성
  • 사용자 프로세스
    • 사용자 코드 수행

 

병행 수행 방법에 따라

  • 독립 프로세스
    • 다른 프로세스와 독립적인 병행 프로세스
  • 협력 프로세스
    • 다른 프로세스에 영향을 주는 병행 프로세스

 

자원 (Resources)

  • 커널의 관리 하에 프로세스에게 할당/반납 되는 수동적 개체
  • H/W Resource
  • S/W Resource

 

프로세스 관리 블록(PCB, Process Control Block)

  • 커널 공간 내에 존재
  • 각 프로세스들에 대한 정보를 관리
  • OS가 프로세스 관리에 필요한 정보 저장
  • 프로세스 생성 시, 생성됨

PCB가 관리하는 정보

  • PID, Process Identification number
    • 프로세스 고유 식별 번호
  • 스케줄링 정보
    • 프로세스 우선순위 등
  • 프로세스 상태
    • 자원 할당, 요청 정보 등
  • 메모리 관리 정보
    • Page Table, segment table 등
  • 입출력 상태 정보
    • 할당 받은 입출력 장치, 파일 등에 대한 정보 등
  • 문맥 저장 영역
    • 프로세스의 레지스터 상태를 저장하는 공간 등
  • 계정 정보
    • 자원 사용 시간 등을 관리

 

프로세스의 상태 (Process State)

  • 프로세스 – 자원 간의 상호작용에 의해 결정

Create State

  • 작업(Job)을 커널에 등록
  • PCB 할당 및 프로세스 생성
  • 가용 메모리 공간 체크 및 프로세스 상태 전이(Ready or Suspended ready)

 

Ready State (Create State >> Memory Allocate)

  • 프로세서 외에 다른 모든 자원을 할당 받은 상태
  • 프로세서 할당 대기 상태
  • 즉시 실행 가능
  • Ready 상태를 가지는 여러 개의 프로세스 존재 가능

 

Running State (Ready State >> Dispatch(or Schedule))

  • 프로세서와 필요한 자원을 모두 할당 받은 상태
  • 명령어를 수행중인 상태
  • Preemption
    • Running 상태에서 Ready 상태로 돌아가는 것
    • time-out / priority change 같은 원인들..

 

Blocked/asleep State (Running >> sleep(block))

  • 프로세서 외에 다른 자원을 기다리는 상태 (ex. 입출력 대기 등)
  • 자원 할당은 시스템 호출에 의해 이루어 짐
  • 시스템 호출(System Call)
    • 사용자 모드에서 커널 모드로 변환하는 동작
  • wake-up (입출력이 완료되었을 경우)을 통해 Ready 상태로 돌아감

 

Suspended State (Ready or asleep State >> swap-out)

  • 메모리를 할당 받지 못한(빼앗긴) 상태
  • 프로세스 수행이 정지됨
  • memory image를 swap device에 보관
  • 빼앗기기 전 메모리 상태를 그대로 사진을 찍듯이 기억(저장)
  • 커널 또는 사용자에 의해 발생 (외부에서 재개시켜야 함)
  • Swap-out
    • 지연 (메모리 임시 반납)
  • Swap-in
    • 재개 (메모리 재할당)

 

* Blocked Suspeded의 차이?

  • Blocked는 잠시 중지되었다가 끝나면 Ready로 돌아감
  • Suspended는 잠시 중지되었다가 외부에서 재개시켜줘야 Ready로 돌아감

Terminated/Zombie State (Running >> Exit)

  • 프로세스 수행이 끝난 상태
  • 모든 자원 반납 후,
  • 커널 내에 일부 PCB 정보만 남아 있는 상태 (이후 프로세스 관리를 위해 정보 수집)

 

인터럽트 (Interrupt)

  • 예상치 못한, 외부에서 발생한 이벤트
  • Unexpected, external event
  • CPU 프로세서가 다른 여러 가지 원인에 의하여 현재 하는 일을 중단하고 발생된 일을 처리한 후
    다시 실행중인 작업으로 복귀하는 것

 

인터럽트 종류

내부 (소프트웨어)

  • 프로그램 내부에서 발생하는 것.
  • 잘못된 명령이나 잘못된 데이터를 사용할 때 = Trap
  • ex) 허용되지 않은 명령, 또는 공간 접근 / 계산결과에 따른 오버플로우,언더플로우 등

 

외부 (하드웨어)

  • 컴퓨터의 하드웨어에서 발생하는 것.
  • 전원의 이상, CPU의 기능 및 기계의 착오, 키보드 동작, 입출력 장치의 데이터 전송 등 

 

인터럽트 과정

1. 인터럽트 발생

  •  인터럽트 요청 발생
  •  운영체제가 제어권을 받음 

2. 프로세스 중단 (커널 개입)

  •  현재 수행중인 명령의 수행이 완료된 시점에서 중단  (현재의 주기억 장치 사이클이 끝나는 시점이 아님)
  •  현재의 프로세스 상태를 저장, PC에 기억되어 있는 주소를 안전한 곳에 기억시켜서 보존 (Context saving)
    = 상태 레지스터와 PC(현재 명령어 + 1의 주소) 등을 스택(Stack)에 저장한다. 

3. 인터럽트 전처리 실행

  •  원인 판단
  •  처리 루틴 (Interrupt Processing Routine)을 호출 

4. 인터럽트 서비스(Interrupt Servie Routine) 실행

  •  인터럽트 서비스 루틴은 인터럽트를 처리하는 프로그램  
  •  프로그램의 상태를 안전한 곳에 기억시켜 보존 
  •  인터럽트 해결

5. 프로그램 재개 

  • 저장하였던 프로세서와 PC의 주소를 복원하여 (Context restoring) 해당 PC 명령어부터 정상적으로 실행 

 

문맥 교환 (Context switching)

Context

  • 프로세스와 관련된 정보들의 집합

Context saving

  • 현재 프로세스의 register context를 저장하는 작업  

Context restoring

  • Register context를 프로세스로 복구하는 작업

Context switching

  •  실행 중인 프로세스의 context를 저장하고 (Context saving),
  •  앞으로 실행 할 프로세스의 Context를 복구하는 일 (Context restoring)
  •  * 커널의 개입으로 이루어짐 

Context Switch Overhead

  • Context switching에 소요되는 비용, OS마다 다르고, OS의 성능에 큰 영향을 줌
  • 불필요한 Context switching을 줄이는 것이 중요
 

 

Comments