운영 체제 2: 프로세스 설명 및 제어

목차

1. 선구자 지도란?

2. 프로세스의 정의 및 설명

(1) 프로세스란?

(2) 프로세스의 기본 상태 및 전환

(3) Suspend 동작 및 프로세스 상태 전환

3. 프로세스 관리의 데이터 구조

(1) 공정 제어 블록 PCB의 역할

(2) 프로세스 제어 블록 PCB의 정보

(3) PCB 구성

3. 프로세스 제어

(1) 운영 체제 커널

(2) 프로세스 생성

(3) 프로세스의 종료

(4) 프로세스 차단 및 깨우기

(5) 프로세스의 중단 및 활성화


1. 선구자 지도란?

Precedence Graph 는 DAG(DirectedAcyclic Graph)로 기록될 수 있는 방향성 비순환 그래프를         말하며 프로세스 간의 실행 순서를 설명하는 데 사용됩니다 . // 도구 설명

선행 그래프에서는 루프가 허용되지 않습니다         . 그렇지 않으면 불가능한 선행 관계가 필연적으로 생성됩니다. 그림 2-1(b)에 표시된 선행 관계에는 주기가 있습니다. 한편으로는 S3가 실행을 시작하기 전에 S2가 완료되어야 하고 다른 한편으로는 S2가 실행을 시작하기 전에 S3가 완료되어야 합니다. 분명히 그러한 관계는 달성할 수 없습니다. // 선행 그래프는 루프를 허용하지 않습니다.

순차         프로그램 실행의 세 가지 특성: (1) 순차, (2) 폐쇄, (3) 재현 가능 // 디버그하기 쉬움

        동시 프로그램 실행 의 세 가지 특징 : (1) 간헐적, (2) 종료 손실, (3) 재현 불가능 

2. 프로세스의 정의 및 설명

(1) 프로세스란?

        프로세스 는 프로세스 엔터티의 실행 프로세스이며 시스템에서 자원 할당 및 스케줄링을 위한 독립적인 단위입니다.

        동시 실행에 참여하는 각 프로그램이 독립적으로 실행될 수 있도록 운영 체제에서 프로세스 제어 블록(PCB) 이라는 특수 데이터 구조가 구성됩니다 . 시스템은 PCB를 이용하여 프로세스의 기본 상황과 활동 프로세스를 기술한 후 프로세스를 제어하고 관리합니다 . 이러한 방식으로 프로세스 엔터티는 프로그램 세그먼트, 관련 데이터 세그먼트 및 PCB의 세 부분으로 구성됩니다 . 일반적으로 프로세스 개체를 줄여서 프로세스라고 하는데, 예를 들어 이른바 프로세스 생성은 본질적으로 프로세스 개체에 PCB를 생성하는 것이고, 프로세스를 취소하는 것은 본질적으로 프로세스의 PCB를 취소하는 것이다 .

(2) 프로세스의 기본 상태 및 전환

        1 - 프로세스의 세 가지 기본 상태

        일반적으로 각 프로세스는 다음 세 가지 기본 상태 중 적어도 하나에 있어야 합니다 .

  • 레디(Ready) 상태 : CPU를 제외한 모든 필요한 자원을 프로세스에 할당한 후 CPU를 다시 확보하기만 하면 즉시 실행할 수 있는 상태 . 시스템에 준비 상태에 있는 프로세스가 많으면 일반적으로 특정 전략(예: 우선 순위 전략)에 따라 대기열에 배치되며 대기열을 준비 대기열이라고 합니다 . // 실행을 위해 CPU 제공
  • 실행(실행 중) 상태 : 프로세스가 CPU를 획득하고 해당 프로그램이 실행 중인 상태를 말합니다 . 단일 프로세서 시스템에서는 한 번에 하나의 프로세스만 실행되지만 다중 프로세서 시스템에서는 여러 프로세스가 실행될 수 있습니다.
  • 차단(Block) 상태 : 실행 중인 프로세스가 이벤트(IO 요청 버퍼 어플리케이션 장애 등)로 인해 일시적으로 실행을 계속할 수 없는 상태 , 즉 프로세스의 실행이 차단된 상태를 말합니다. 이때 프로세스 스케줄링이 발생하여 OS는 프로세서를 다른 Ready 프로세스에 할당하고 차단된 프로세스는 Suspended 상태가 되는데 일반적으로 이러한 Suspended 상태를 Blocked State라고 하며 때로는 대기 상태라고도 한다. 또는 막힌 상태. 일반적으로 시스템은 차단 상태의 프로세스를 차단 대기열 이라고 하는 대기열에 넣습니다 . 실제로 더 큰 시스템에서는 대기열 작업의 오버헤드를 줄이고 시스템 효율성을 향상시키기 위해 다양한 차단 이유에 따라 여러 차단 대기열이 설정됩니다. // CPU에서도 실행할 수 없음

// 연산 프로세스는 본질적으로 PCB의 연산이며, CPU에 의한 프로세스의 스케줄링은 본질적으로 한 큐에서 다른 큐로 PCB를 배치하는 프로세스입니다.

        다음 그림은 대기열에 있는 프로세스의 전환 다이어그램입니다.

        2 - 세 가지 기본 상태의 전환

        준비 상태의 프로세스는 스케줄러가 CPU를 할당한 후에 실행될 수 있으며 이에 따라 준비 상태에서 실행 상태로 상태가 변경된다 // 준비 -> CPU 가져오기 -> 실행

        실행 중인 프로세스가 CPU를 빼앗기고 할당된 타임 슬라이스가 만료되어 실행을 일시 중단하면 상태가 실행에서 준비 상태로 변경되고 이벤트가 발생하면 현재 프로세스의 실행이 차단됩니다(예: 프로세스가 중요한 리소스에 액세스하고 리소스가 다른 프로세스에 의해 액세스되고 있음) 계속 실행할 수 없도록 프로세스의 상태는 실행에서 차단으로 변경됩니다.

        아래 그림은 프로세스의 세 가지 기본 상태와 각 상태 간의 전이 관계를 보여줍니다. // Ready는 아직 실행되지 않았기 때문에 차단으로 전환할 수 없으므로 어떤 조건이 누락되었는지 알 수 없습니다.

        3 - 생성된 상태 및 종료된 상태

        생성 상태 : 프로세스 생성은 일반적으로 여러 단계를 거쳐 완료되는 매우 복잡한 프로세스입니다.

  • 예를 들어, 프로세스는 먼저 블랭크 PCB에 적용되고 프로세스를 제어하고 관리하기 위한 정보로 PCB를 채웁니다.
  • 그런 다음 프로세스를 실행하는 데 필요한 리소스를 할당합니다.
  • 마지막으로 프로세스는 준비 상태로 전환되어 준비 큐에 삽입됩니다.

        그러나 프로세스에 필요한 리소스를 충족할 수 없는 경우(예: 프로세스를 로드할 수 있는 메모리가 시스템에 충분하지 않은 경우) 현재 생성 작업이 완료되지 않았으며 프로세스를 예약할 수 없습니다. to run 이므로 이때 프로세스의 상태를 Create state라고 합니다. // PCB 신청 -> 자원 할당 -> Ready Queue로 이송

        종료 상태 : 프로세스 종료에는 두 단계가 있습니다. // Clear the PCB

  • 첫째, 운영 체제가 여파를 처리하기를 기다리고 있습니다.
  • 마지막으로 PCB가 제로화되고 PCB 공간이 시스템으로 반환됩니다.

        프로세스가 자연 종료점에 도달하거나 극복할 수 없는 오류가 있거나 운영 체제에 의해 종료되거나 종료 권한이 있는 다른 프로세스에 의해 종료되면 종료된 상태로 들어갑니다. // 종료 상태의 장면으로 진입

        종료된 상태에 들어가는 프로세스는 더 이상 실행할 수 없지만 운영 체제에는 여전히 레코드가 유지되어 다른 프로세스가 수집할 상태 코드와 일부 타이밍 통계를 저장합니다. 다른 프로세스가 정보 추출을 완료하면 운영 체제는 프로세스를 삭제합니다. 즉, PCB를 지우고 빈 PCB를 시스템에 반환합니다. // PCB 클리어링에는 프로세스가 있습니다.

        다음 그림은 생성 상태와 종료 상태를 추가한 후 프로세스의 5가지 상태와 전이 관계 다이어그램을 보여줍니다.

(3) Suspend 동작 및 프로세스 상태 전환

준비, 실행차단 의 가장 기본적인 세 가지 상태         외에도 프로세스는 프로세스를 관찰하고 분석하기 위한 시스템 및 사용자의 요구를 충족하기 위해 프로세스에 중요한 작업인 일시 중단 작업을 도입합니다 . 이 작업이 프로세스에서 수행되면 프로세스가 일시 중단되며 이는 현재 프로세스가 정적 상태에 있음을 의미합니다. 프로세스가 실행 중인 경우 실행을 일시 중단합니다. 원래 준비 상태에 있었다면 현재 프로세스는 스케줄링을 수락하지 않습니다. 중지 작업에 해당하는 작업은 활성화 작업( suspend primitive Suspend 및  activate primitive Active )입니다.

3. 프로세스 관리의 데이터 구조

        컴퓨터 시스템에서 데이터 구조는 각 리소스각 프로세스가 엔터티를 나타내도록 설정됩니다. 리소스 또는 프로세스 식별, 설명, 상태 및 포인터 배치와 같은 정보를 포함하는 리소스 정보 테이블 또는 프로세스 정보 테이블 이라고 합니다 . // 리소스 표현은 데이터 구조를 통해 이루어지며, PCB는 비교적 복잡한 데이터 구조

        이러한 포인터를 통해 유사한 리소스 또는 프로세스의 정보 테이블 또는 동일한 프로세스가 차지하는 리소스 정보 테이블을 분류하고 다른 대기열로 연결할 수 있으므로 운영 체제가 검색하기 편리합니다.

        OS에서 관리하는 이러한 데이터 구조는 아래 그림과 같이 일반적으로 메모리 테이블 , 장치 테이블 , 파일 테이블 , 프로세스 관리를 위한 프로세스 테이블의 네 가지 범주로 구분되며 , 일반적으로 프로세스 테이블을 프로세스 제어라고도 합니다. 블록PCB .

(1) 공정 제어 블록 PCB의 역할

        PCB는 프로세스 엔터티의 일부로서 프로세스의 현재 상황을 기술하고 프로세스의 운영을 관리하기 위해 운영 체제에서 요구하는 모든 정보를 기록하며 , 운영 체제에서 가장 중요한 기록형 데이터 구조이다. // 프로세스에 대한 모든 정보를 기록합니다.

        PCB의 역할 : 다중 프로그램 환경에서 독립적으로 실행될 수 없는 프로그램(데이터 포함)을 독립적으로 실행될 수 있는 기본 단위로 만들어 다른 프로세스와 동시에 실행할 수 있는 프로세스. 자세한 내용은 다음과 같습니다.

  • 독립적으로 작동하는 베이스 유닛의 표시로 . PCB는 프로세스가 시스템에 존재한다는 유일한 신호입니다 .
  • 간헐적 작동을 실현할 수 있습니다 . 다중 프로그래밍 환경에서 프로그램은 간헐적으로 멈추고 가는 방식으로 실행됩니다. 시스템은 중단된 프로세스의 PCB에 CPU 사이트 정보를 저장하여 CPU 사이트를 복원하기 위해 프로세스가 다시 실행되도록 예약될 때 사용할 수 있습니다.
  • 프로세스 관리에 필요한 정보를 제공합니다 . 스케줄러가 실행할 프로세스를 예약할 때 프로세스의 PCB에 따라 프로세스에 필요한 모든 리소스만 찾을 수 있습니다. 프로세스 수명 동안 운영 체제는 항상 PCB에 따라 프로세스의 제어 및 관리를 구현합니다 .
  • 프로세스 스케줄링에 필요한 정보를 제공합니다 . 프로세스의 모든 상태 정보는 PCB에 보관됩니다. // 준비 -> 실행
  • 다른 프로세스와 동기화하고 통신합니다 . PCB에는 프로세스 통신을 위한 영역 또는 통신 큐 포인터, 동기화를 위한 세마포어 등이 있습니다.

(2) 프로세스 제어 블록 PCB의 정보

        프로세스 제어 블록에는 주로 다음과 같은 네 가지 정보 측면이 포함됩니다.

        1 - 프로세스 식별자

        프로세스 식별자는 프로세스를 고유하게 식별하는 데 사용됩니다.

        프로세스에는 일반적으로 두 개의 식별자가 있습니다.

  • 외부식별자 : 주로 사용자 (프로세스)가 프로세스에 접근하는 편의를 위해 생성자가 제공하는 식별자로 보통 문자와 숫자로 구성된다.
  • 내부 식별자 : 주로 프로세스를 사용하는 시스템의 편의를 위해 내부 식별자는 각 프로세스에 고유한 숫자 식별자를 부여하며 일반적으로 프로세스의 일련 번호입니다.

        2 - 프로세서 상태/CPU 상태

        프로세서 상태 정보는 프로세서의 컨텍스트라고도 하며 주로 프로세서의 여러 레지스터의 내용 으로 구성 됩니다.

        이러한 레지스터에는 다음이 포함됩니다. (1) 일반 레지스터 (2) 명령어 카운터 (3) 프로그램 상태 워드 PSW (4) 사용자 스택 포인터 등 프로세스가 전환될 때 해당 PCB에 프로세서 상태 정보를 저장해야 프로세스가 다시 실행될 때 중단점에서 계속할 수 있습니다. // CPU 컨텍스트는 CPU 실행 중에 일부 데이터를 저장하는 것입니다.

        3 - 프로세스 일정 정보

        OS가 스케줄링할 때 프로세스의 상태와 프로세스 스케줄링에 대한 정보를 알아야 합니다. 이 정보에는 다음이 포함됩니다.

  • 프로세스 상태 : 프로세스 스케줄링 및 스와핑의 기준으로 프로세스의 현재 상태를 나타냅니다.
  • 프로세스 우선 순위 : 프로세스가 사용하는 프로세서의 우선 순위 수준을 나타내는 정수로, 우선 순위가 높은 프로세스일수록 프로세서를 먼저 받아야 합니다.
  • 프로세스 스케줄링에 필요한 기타 정보 : 프로세스가 CPU를 기다리는 시간의 합, 프로세스가 실행된 시간의 합 등 채택된 프로세스 스케줄링 알고리즘과 관련됩니다.
  • 이벤트 : 프로세스가 실행 상태에서 차단 상태로 바뀌기를 기다리는 이벤트, 즉 차단의 원인을 말합니다.

        4 - 프로세스 제어 정보

        다음을 포함하는 프로세스 제어에 필요한 정보를 나타냅니다.

  • 프로그램 및 데이터 주소 : 프로그램의 메모리 또는 외부 메모리 주소 및 프로세스 엔터티의 데이터로, 프로세스 실행이 예정된 경우 PCB에서 해당 프로그램 및 데이터를 찾을 수 있습니다.
  • 프로세스 동기화 및 통신 메커니즘 : 메시지 큐 포인터, 세마포어 등과 같이 PCB 전체 또는 일부에 배치될 수 있는 프로세스 동기화 및 프로세스 통신을 달성하기 위해 필요한 메커니즘입니다.
  • 리소스 목록 : 이 목록에는 프로세스가 동작하는 동안 필요한 모든 리소스가 나열되며, 프로세스에 할당된 리소스 목록도 있습니다.
  • 링크 포인터 : 이 프로세스(PCB)가 위치한 큐에서 다음 프로세스의 PCB의 첫 번째 주소를 제공합니다.

(3) PCB 구성

        시스템에는 종종 수십, 수백 또는 수천 개의 PCB가 있을 수 있습니다. 이를 효과적으로 관리하려면 이러한 PCB를 적절한 방식으로 구성해야 합니다. 일반적으로 사용되는 세 가지 구성 방법이 있습니다.

        1 - 선형 방식

        이런 식으로 시스템의 모든 PCB는 선형 테이블로 구성되고 테이블의 첫 번째 주소는 전용 메모리 영역에 저장됩니다. 이 방법은 구현이 간단하고 오버헤드가 적지만 검색할 때마다 전체 테이블을 스캔해야 하므로 프로세스 수가 적은 시스템에 적합합니다. // 배열

        다음 그림은 선형 테이블의 PCB 구성을 보여줍니다.

        2 - 링크 방법

        이러한 방식으로 동일한 상태의 프로세스가 있는 PCB는 PCB의 링크 워드를 통해 대기열에 연결됩니다. 이러한 방식으로 Ready Queue, 여러 개의 Blocked Queue 및 Blank Queue를 형성할 수 있습니다. // 여러 대기열

        다음 그림은 연결된 대기열의 구성을 보여줍니다.

        3 - 색인 방법

        이 방법은 모든 프로세스의 서로 다른 상태에 따라 여러 인덱스 테이블(예: 준비 인덱스 테이블, 차단 인덱스 테이블 등)을 설정하고 각 인덱스 테이블의 첫 번째 주소를 일부 특수 메모리 장치의 메모리에 기록합니다. 각 인덱스 테이블 항목에는 해당 상태의 특정 PCB의 PCB 테이블에 있는 주소가 기록됩니다. // 여전히 큐이지만 큐에 인덱스가 저장되고 중간에 인덱스 테이블이 추가됨

        다음 그림은 인덱스 모드에서 PCB 구성의 개략도입니다.

3. 프로세스 제어

        프로세스 제어는 프로세스 관리의 가장 기본적인 기능 으로 주로 새로운 프로세스 생성 , 완료된 프로세스 종료 , 비정상 상태로 인해 계속 실행할 수 없는 프로세스 배치, 프로세스 실행 중 상태 전이 담당 등의 기능을 포함합니다. 프로세스 제어는 일반적으로 OS 커널의 프리미티브에 의해 구현됩니다 . // 소위 프리미티브는 원자적 프로그램 명령문으로, 중단될 수 없고 별도로 실행될 수 없습니다.

        // Process control은 PCB를 특정 Queue에서 다른 특정 Queue로 옮기는 동작 과정이다.

(1) 운영 체제 커널

        최신 운영 체제는 일반적으로 OS를 여러 계층으로 나눈 다음 계층마다 OS의 다른 기능을 설정합니다.

        일반적으로 하드웨어와 밀접하게 관련된 일부 모듈(예: 인터럽트 핸들러 등), 일반적으로 사용되는 다양한 장치 의 드라이버 및 작동 빈도가 높은 모듈(예: 클럭 관리 , 프로세스 스케줄링 및 많은 모듈에 공통적인 일부 기본 작업)은 다음과 같습니다. 모두 하드웨어에 가까운 소프트웨어 계층에 배치되며 종종 OS 커널 이라고 하는 메모리에 상주합니다 . // 하드웨어 전용 소프트웨어 계층

        이 배열의 목적은 두 가지입니다.

  • 하나는 이러한 소프트웨어의 보호를 용이하게 하여 다른 응용 프로그램으로 인한 손상을 방지하는 것 입니다 .
  • 둘째, OS의 운영 효율성을 높일 수 있다 .

        이에 대응하여 OS 자체와 주요 데이터(예: PCB 등)가 응용 프로그램에 의해 고의 또는 우발적으로 손상되는 것을 방지하기 위해 CPU의 실행 상태는 일반적으로 시스템 상태와 사용자 상태의 두 가지 유형 으로 나뉩 니다 .

  • 시스템 상태 : 더 높은 권한을 가지며 모든 명령을 실행할 수 있고 모든 레지스터 및 스토리지 영역에 액세스할 수 있으며 기존 OS는 시스템 상태에서 실행됩니다.
  • 사용자 모드 : 낮은 권한을 가진 실행 상태로 지정된 명령어만 실행 하고 지정된 레지스터 및 저장 영역에 액세스할 수 있습니다. 일반적으로 응용 프로그램은 사용자 모드에서만 실행할 수 있으며 OS 명령을 실행할 수 없으며 OS 영역에 액세스할 수 없으므로 응용 프로그램이 OS를 파괴하는 것을 방지할 수 있습니다.

        1 - OS 커널의 두 가지 주요 기능

  • 지원 기능 : 이 기능은 이러한 모듈의 작업을 지원하기 위해 OS의 다른 많은 모듈에서 요구하는 몇 가지 기본 기능을 제공합니다. 가장 기본적인 지원 기능 중 세 가지는 인터럽트 처리, 클록 관리 (타임 슬라이스 회전) 및 원시 작업 입니다 .
  • 리소스 관리 기능 : 프로세스 관리, 메모리 관리, 디바이스 관리 등을 포함하는 기능입니다.

        2 - 프리미티브란 무엇입니까?

        소위 프리미티브(Primitive)는 여러 명령어로 구성되어 특정 기능을 완성하는 데 사용되는 프로세스이다. 일반 프로세스와 다른 점은 "원자적 작업(Action Operation)"이라는 것입니다. 소위 원 자성 작업은 작업의 모든 작업이 완료되거나 전혀 수행되지 않음을 의미합니다 . 즉, 나눌 수 없는 기본 단위입니다. 따라서 프리미티브는 실행 중에 중단될 수 없습니다. 원자성 작업은 시스템 모드에서 실행되며 메모리에 상주합니다. 연결 목록을 작동하기 위한 프리미티브, 프로세스 동기화 구현을 위한 프리미티브 등과 같이 커널에는 많은 프리미티브가 있을 수 있습니다.

(2) 프로세스 생성

        1 - 프로세스 계층

        OS에서는 프로세스가 다른 프로세스를 생성하는 것을 허용하는데, 일반적으로 프로세스를 생성하는 프로세스를 부모 프로세스, 생성된 프로세스를 자식 프로세스라고 합니다. 하위 프로세스는 계속해서 더 많은 하위 프로세스를 생성할 수 있으므로 프로세스의 계층 구조를 형성할 수 있습니다. //유닉스

        프로세스 간의 이러한 계층적 관계를 통해 자식 프로세스는 부모 프로세스가 소유한 리소스를 상속 할 수 있습니다. 예를 들어 부모 프로세스가 연 파일을 상속하고 부모 프로세스가 할당한 버퍼를 상속하는 등의 작업을 수행할 수 있습니다. 자식 프로세스가 철회되면 부모 프로세스에서 얻은 리소스를 부모 프로세스로 반환해야 합니다. 또한 상위 프로세스가 취소되면 모든 하위 프로세스가 동시에 취소되어야 합니다 . 프로세스 간의 패밀리 관계를 식별하기 위해 PCB에 패밀리 관계 항목이 설정되어 부모 프로세스와 모든 자식 프로세스를 나타냅니다. 프로세스는 자식 프로세스에 대한 상속 권한을 거부할 수 없습니다.

        // 참고: Windows에는 프로세스 계층 구조에 대한 개념이 없으며 모든 프로세스는 동일한 상태를 갖습니다. 다른 시스템은 다릅니다

        2 - 프로세스를 생성한 이벤트

        프로세스가 다른 프로세스를 생성하게 하는 일반적인 이벤트는 다음 네 가지 범주로 나뉩니다.

  • 사용자 로그인: 시분할 시스템에서 사용자가 터미널에서 로그인 명령을 입력한 후 로그인에 성공하면 시스템이 사용자를 위한 프로세스를 생성하고 준비 대기열에 삽입합니다.
  • 작업 스케줄링: 다중 채널 일괄 처리 시스템에서 작업 스케줄러가 특정 알고리즘에 따라 작업을 스케줄링하면 작업을 메모리에 로드하고 프로세스를 생성한 다음 준비 대기열에 삽입합니다.
  • 서비스 제공: 실행 중인 사용자 프로그램이 특정 요청을 하면 시스템은 사용자가 필요로 하는 서비스를 제공하는 프로세스를 생성합니다.
  • 응용 프로그램 요청: 위의 세 가지 경우에서 시스템 커널은 사용자를 위해 새 프로세스를 생성하는 반면 응용 프로그램 요청 이벤트는 사용자 프로세스 자체에서 새 프로세스를 생성하여 특정 작업을 동시에 완료할 수 있습니다.

        3 - 프로세스 생성 단계

        새 프로세스를 생성하라는 요청이 있을 때마다 OS는 프로세스 생성 프리미티브 Create를 호출하여 다음 단계에서 새 프로세스를 생성합니다.

  • 빈 PCB 요청 : 새 프로세스에 대한 고유 숫자 식별자를 요청하고 PCB 컬렉션에서 빈 PCB를 요청합니다.
  • 새 프로세스를 실행하는 데 필요한 리소스 할당 : 메모리, 파일, I/O 장치 및 CPU 시간과 같은 다양한 물리적 및 논리적 리소스를 포함합니다.
  • 프로세스 제어 블록(PCB)을 초기화합니다 .
  • 프로세스 준비 큐가 새 프로세스를 수용할 수 있으면 새 프로세스가 준비 큐에 삽입 됩니다 .

(3) 프로세스의 종료

        1 - 프로세스 종료를 초래한 이벤트

  • 정상 종료는 프로세스의 작업이 완료되어 종료할 준비가 되었음을 의미합니다.
  • 비정상적인 종료는 프로세스가 실행 중일 때 일종의 비정상적인 이벤트가 발생하여 프로그램을 계속 실행할 수 없음을 의미합니다.
  • 외부 개입은 외부 요청에 대한 응답으로 프로세스를 종료하는 것을 말합니다.

        2 - 프로세스 종료 프로세스

        시스템에서 프로세스를 종료해야 하는 이벤트가 발생하면 OS는 프로세스 종료 프리미티브를 호출하여 다음 프로세스에 따라 지정된 프로세스를 종료합니다.

  • 종료된 프로세스의 식별자에 따라 PCB 컬렉션에서 프로세스의 PCB를 검색하고 여기에서 프로세스의 상태를 읽습니다.
  • 종료된 프로세스가 실행 상태이면 프로세스의 실행을 즉시 종료해야 하며, 스케줄링 플래그는 true로 설정해야 하며, 이는 프로세스가 종료된 후 다시 스케줄링해야 함을 나타내는 데 사용됩니다.
  • 프로세스에 하위 프로세스가 있는 경우 제어할 수 없는 프로세스가 되지 않도록 모든 하위 프로세스도 종료해야 합니다 .
  • 종료된 프로세스가 소유한 모든 리소스를 부모 프로세스나 시스템에 반환합니다. // PCB를 반납하는 과정
  • 대기열에서 종료된 프로세스(PCB)를 제거하고 다른 프로그램이 정보를 수집할 때까지 기다립니다.

(4) 프로세스 차단 및 깨우기

        1 - 프로세스를 차단하고 깨우는 이벤트

        프로세스를 차단하거나 깨울 수 있는 여러 유형의 이벤트가 있습니다.

  • 공유 리소스에 대한 시스템 요청이 실패했습니다. 시스템에 충분한 리소스 할당이 없기 때문에 프로세스를 계속 실행할 수 없고 차단됩니다. 다른 프로세스가 프린터를 해제하면 요청 프로세스가 깨어납니다.
  • 작업이 완료될 때까지 기다리십시오. 프로세스가 작업을 시작할 때 프로세스가 계속하기 전에 작업을 완료해야 하는 경우 먼저 프로세스를 차단하여 작업이 완료될 때까지 기다려야 합니다. // I/O 작업 대기 등
  • 새로운 데이터가 아직 도착하지 않았습니다. 서로 협력하는 프로세스의 경우 한 프로세스가 데이터를 처리하기 전에 다른 프로세스에서 제공하는 데이터를 가져와야 하는 경우 필요한 데이터가 도착하지 않는 한 프로세스는 차단될 뿐입니다.
  • 새 작업이 도착할 때까지 기다립니다. 예를 들어, 네트워크 환경에서의 송신 프로세스에서 데이터 패킷을 보내는 것이 주된 작업인데, 기존 데이터 패킷을 모두 보내고 새로운 데이터 패킷을 보내지 않으면 송신 프로세스는 이때 스스로를 차단합니다. 데이터 패킷이 도착하면 전송 프로세스가 깨어납니다.

        2 - 프로세스의 차단 프로세스

        실행 중인 프로세스에서 차단 이벤트가 발생하면 프로세스는 차단 프리미티브 Block 을 호출하여 자체 차단합니다 . 차단은 프로세스 자체의 활성 동작입니다.

        차단 프로세스에 진입한 후 프로세스가 아직 실행 상태에 있기 때문에 즉시 실행을 중지하고 프로세스 제어 블록의 상태를 "실행"에서 차단으로 변경하고 PCB를 차단 대기열에 삽입해야 합니다 . 서로 다른 이벤트에 의해 차단된 여러 차단 큐가 시스템에 설정되어 있는 경우 이 프로세스는 동일한 이벤트가 있는 차단 큐에 삽입되어야 합니다. // 블로킹 큐에 PCB 삽입

        마지막으로 rescheduling을 위해 스케줄러로 전환하여 CPU를 다른 Ready 프로세스에 할당하고 전환함과 동시에 차단된 프로세스의 CPU 상태를 예약하고 CPU 상태에 따라 CPU 환경을 PCB에서 설정 새로운 프로세스. // CPU 해제 및 CPU 상태 저장

        3 - 프로세스 웨이크업 프로세스

        차단된 프로세스가 시작한 I/O 작업이 완료되거나 예상 데이터가 도착하는 등 차단된 프로세스가 예상하는 이벤트가 발생하면 해당 프로세스(예: 데이터를 제공하는 프로세스)가 Wakeup Primitive를 호출합니다. 이 이벤트를 기다리는 프로세스가 깨어납니다.

        Wakeup 실행 프로세스는 먼저 이벤트를 기다리는 차단 대기열에서 차단된 프로세스를 제거하고 PCB의 현재 상태를 차단에서 준비 상태로 변경한 다음 PCB를 준비 대기열에 삽입합니다. // 블로킹 큐에서 준비 큐로 이동

        Block 프리미티브Wakeup 프리미티브는 서로 반대되는 기능을 가진 한 쌍의 프리미티브이며 쌍으로 사용되어야 합니다. 차단된 프로세스를 깨울 수 있도록 프리미티브. 그렇지 않으면 차단된 프로세스를 깨울 수 없기 때문에 차단된 프로세스가 영구적으로 차단되고 계속 실행할 기회가 없습니다. // 차단 프리미티브와 웨이크업 프리미티브는 쌍으로 사용해야 합니다.

(5) 프로세스의 중단 및 활성화

        1 - 프로세스 중단

        시스템에서 프로세스 중단을 유발하는 이벤트가 발생하면 OS는 일시 중단 프리미티브 Suspend를 사용하여 지정된 프로세스 또는 차단된 상태의 프로세스를 일시 중단합니다. Suspend의 실행 프로세스는 다음과 같습니다.

  • 먼저 중단된 프로세스의 상태를 확인하여 활성 준비 상태에 있으면 정적 준비 상태로 변경되고 활성 차단 상태에 있는 프로세스에 대해서는 정적 차단 상태로 변경됩니다.
  • 사용자 또는 상위 프로세스가 프로세스의 실행 상태를 쉽게 검사할 수 있도록 프로세스의 PCB를 지정된 메모리 영역에 복사합니다.
  • 마지막으로 일시 중단된 프로세스가 실행 중인 경우 스케줄러를 다시 예약하십시오.

        2 - 프로세스 활성화 프로세스

        시스템에서 프로세스를 활성화하는 이벤트가 발생하면 OS는 활성화 프리미티브 Active를 사용하여 지정된 프로세스를 활성화합니다.

        활성화 프리미티브는 먼저 프로세스를 외부 저장소에서 내부 메모리로 전송하고 프로세스의 현재 상태를 확인 하고 정적 및 준비 상태이면 활성 및 준비 상태로 변경합니다. 정적 차단이면 활성 차단으로 변경됩니다.

        선점형 스케줄링 전략을 사용하면 정적 ready 프로세스가 활성화되어 ready queue에 삽입될 때마다 Rescheduling이 필요한지 여부, 즉 활성화된 프로세스의 우선 순위를 확인해야 하며 현재 프로세스는 스케줄러에 의해 결정됩니다. 이에 비해 활성화된 프로세스의 우선순위가 낮으면 다시 스케줄링할 필요가 없으며 그렇지 않으면 현재 프로세스의 실행을 즉시 박탈하고 새로 활성화된 프로세스에 CPU를 할당합니다. // 프로세스 우선 순위에 따라 준비 프로세스의 CPU 사용 권한 할당

추천

출처blog.csdn.net/swadian2008/article/details/131222015