본문 바로가기
정보처리기사/프로그래밍 언어 활용

프로세스 관리

by jhwannabe 2023. 8. 4.

프로세스

프로세스(Process)의 정의

  • 실행 중인 프로그램
  • 실행 가능한 PCB를 가진 프로그램
  • 프로세서가 할당되는 실체
  • 프로시저가 활동 중인 것
  • 비동기적 행위를 일으키는 주체

프로세스 제어 블록(PCB : Process Control Block)

  • 운영체제가 프로세스를 관리하기 위해 프로세스에 대한 중요한 정보를 저장해 놓은 곳
  • 프로세스가 생성될 때마다 고유의 PCB가 생성되며, 프로세스가 소멸되면 PCB도 소멸됨
  • PCB에 저장되어 있는 정보 : 프로세스의 현재 상태, 프로세스의 우선순위, 프로세스에 할당된 자원에 대한 정보, CPU 레지스터 정보

프로세스 상태 전이

준비 상태
(Ready State)
프로세스가 CPU를 할당받기 위해 준비하고 있는 상태
실행 상태
(Running State)
- 준비 상태의 프로세스가 CPU를 할당받아 실행 중인 상태
- 디스패치(Dispatch) : 우선순위가 가장 높은 프로세스가 준비 상태에서 실행 상태로 전환되는 것
- 할당 시간 종료(Time Runout) : 실행 상태의 프로세스가 할당 시간(타이머)이 종료되어 준비 상태로 전환되는 것
대기 상태
(Blocked State, Wait)
- 실행 상태의 프로세스가 종료되기 전에입출력 등의 다른 작업이 필요할 경우 CPU를 반납하고 작업의 완료를 기다리는 상태
- 블록(Block, Wait) : 실행 상태에서 대기 상태로 전환되는 것
- 웨이크 업(Wake Up) : 대기 상태의 프로세스가 웨이크업(조건 만족)되면 준비 상태로 전환됨

스레드(Thread)

  • 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위
  • 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있음
  • 한 개의 프로세스는 여러 개의 스레드를 가질 수 있음
  • 스레드의 구분
    • 커널 스레드 : 커널 레벨에서 생성되는 스레드
    • 사용자 스레드 : 라이브러리에 의해 구현된 일반적인 스레드

사용잦 수준 스레드의 장점

  • 높은 이식성 : 기본 커널을 변경할 필요가 없으므로 모든 운영체제에 적용할 수 있어 이식성이 높음
  • 오버헤드 감소 : 커널의 도움 없이 스레드 교환이 가능해서, 사용자와 커널 전환에 따른 오버헤드가 줄어듬

 

병행 프로세스와 교착상태

병행 프로세스(Concurrent Process)

  • 두 개 이상의 프로세스들이 동시에 실행 상태에 있는 것
  • 병행 프로그래밍 기법하에서 발생할 수 있는 오류에 대한 오류 방지 방법에는 임계구역, 상호배제, 동기화 기법이 잇음
임계 영역
(Critical Section)
- 어느 한 시점에서 하나의 프로세스가 자원 또는 데이터를 사용하도록 지정된 공유 영역
- 임계영역에서의 작업은 신속하게 이루어져야 함
- 임계영역 내의 프로그램에서는 교착상태가 발생하지 않도록 해야 함
- 임계영역 내의 프로그램에서는 무한 반복이 발생하지 않도록 해야 함
상호배제
(Mutual Exclusion)
- 공유 변수를 접근하고 있는 하나의 프로세스외에는 다른 모든 프로세스들이 공유 변수를 접근하지 못하도록 제어하는 기법
- 상호배제 구현 기법 : 데커 알고리즘, 피터슨 알고리즘, Lamport의 빵집 알고리즘, Test and set 명령어 기법, Swap 명령어 기법
동기화 기법
(Synchronization)
- 공유 데이터와 이 데이터를 처리하는 프로세저를 포함하는 병행성 구조
- 세마포어(Semaphore) : Dijkstra가 제안한 방법으로, 연산 P와 V를 통해서 프로세스 사이의 동기를 유지하고 상호배제의 원리를 보장함
- 모니터(Monitor) : 모니터의 경계에서 상호배제가 시행되며, 모니터 외부에서는 모니터 내부의 데이터를 직접 액세스 할 수 없음

교착상태(Deadlock)

  • 둘 이상의 프로세스들이 서로 다른 프로세스가 차지하고 있는 자원을 요구하며 무한정 기다리게 되어 해당 프로세스들의 진행이 중단되는 현상
  • 교착상태의 발생 조건
상호 배제
(Mutal Exclusion)
한 번에 한 프로세스만이 어떤 자원을 사용할 수 있음
점유 및 대기
(Hold and Wait)
프로세스는 다른 자원이 할당되기를 기다리는 동안 이미 확보한 자원을 계속 보유하고 있음
비선점
(Non-preemption)
자원을 보유하고 있는 프로세서로부터 다른 프로세스가 강제로 그 자원을 빼앗을 수 없음
환형 대기
(Circular Wait)
이미 자원을 가진 프로세스가 앞이나 뒤의 프로세스의 자원을 요구함
  • 교착상태의 해결 방법
예방 (Prevention) 교착상태가 발생하지 않도록 사전에 시스템을 제어하는 방법
(자원의 낭비가 가장 심한 기법)
회피 (Avoidance) 교착상태 발생 가능성을 인정하고 교착상태가 발생하려고 할 때, 교착상태 가능성을 피해 가는 방법 (주로 은행가 알고리즘(Banker Algorithm) 사용)
발견 (Detection) 교착상태가 발생했는지 검사하여 교착상태에 빠진 프로세스와 자원을 발견하는 방법
회복 (Recovery) 교착상태에 빠진 프로세스를 종료하거나 해당 프로세스가 점유하고 있는 자원을 선점하여 다른 프로세스에게 할당하는 기법
728x90
반응형

'정보처리기사 > 프로그래밍 언어 활용' 카테고리의 다른 글

기억 장치 관리  (0) 2023.08.05
프로세스 스케줄링  (0) 2023.08.05
운영체제의 개요  (1) 2023.08.04
스크립트 언어와 Python  (0) 2023.08.04
제어문  (0) 2023.08.04