기금넷 공식사이트 - 복권 조회 - 과정 내용
과정 내용
컴퓨터 시스템 프로세스는 다음 데이터를 포함(또는 "소유")합니다:
프로그램의 실행 가능한 기계어 코드의 메모리 이미지. 할당된 메모리(일반적으로 가상 메모리 영역)입니다. 메모리의 내용에는 실행 가능한 코드, 프로세스별 데이터(입력, 출력), 호출 스택, 스택(작업 중 실행 중에 생성된 데이터를 저장하는 데 사용)이 포함됩니다. 파일 설명자(Unix 용어) 또는 파일 핸들(Windows), 데이터 소스 및 데이터 터미널과 같이 프로세스에 할당된 리소스의 운영 체제 설명자입니다. 프로세스 소유자 및 프로세스의 권한 집합(허용되는 작업)과 같은 보안 기능입니다. 레지스터 내용, 물리적 메모리 주소 지정 등과 같은 프로세서 상태(컨텍스트) 프로세스가 실행 중일 때 상태는 일반적으로 레지스터에 저장되고 그렇지 않으면 메모리에 저장됩니다. 프로세스 전환은 실행 중인 프로세스에서 프로세서를 회수한 다음 대기 중인 프로세스가 프로세서를 차지하도록 하는 것입니다.
여기에서 특정 프로세스에서 프로세서를 회수한다는 것은 본질적으로 프로세스가 프로세서 레지스터에 저장한 중간 데이터를 저장할 장소를 찾아서 다른 프로세스를 위해 프로세서 레지스터를 확보한다는 것입니다. 프로세스 사용. 그렇다면 일시 중지된 실행 프로세스의 중간 데이터는 어디에 저장될 수 있습니까? 물론 이 장소는 프로세스의 프라이빗 스택이어야 합니다.
프로세스가 프로세서를 점유하도록 허용한다는 것은 본질적으로 프라이빗 스택에 있는 프로세스의 레지스터에 저장된 데이터(프로세스가 마지막으로 종료되었을 때의 중간 데이터)를 프로세서의 레지스터로 복원하는 것입니다. 실행될 프로세스의 중단점을 프로세서의 프로그램 포인터 PC에 보내면 실행될 프로세스가 프로세서에 의해 실행되기 시작합니다. 즉, 이 프로세스는 이미 프로세서 사용 권한을 점유하고 있습니다.
이것은 마치 여러 학생이 같은 책상을 서로 다른 시간에 사용하고 싶어하는 것과 같습니다. 소위 책상을 사용하고 있는 학생에게서 책상 사용권을 빼앗는다는 것은 본질적으로 그 학생에게 빼앗아 달라는 것입니다. 그 사람의 것이 무엇인지; 동급생에게 책상을 사용할 권리를 주는 것은 그에게 그의 물건을 책상 위에 올려놓으라고 요구하는 것입니다.
전환 중에 프로세스가 프로세서의 각 레지스터에 저장한 중간 데이터를 프로세스의 컨텍스트라고 합니다. 따라서 프로세스 전환은 본질적으로 실행이 중지된 프로세스의 컨텍스트와 프로세스 간의 전환입니다. 실행됩니다. 프로세스가 프로세서를 점유하지 않는 경우 프로세스의 컨텍스트는 프로세스의 개인 스택에 저장됩니다. 프로세스 실행의 간헐적인 특성으로 인해 프로세스가 여러 상태를 가질 수 있습니다. 실제로 실행 중인 프로세스에는 다음과 같은 세 가지 기본 상태가 있을 수 있습니다.
1) 준비 상태(Ready):
프로세스를 제외하고 프로세스가 필요한 리소스를 획득했으며 프로세스가 실행될 수 있는 프로세서 리소스 할당을 기다리고 있습니다. 프로세서가 할당됩니다. 준비된 프로세스는 여러 우선순위에 따라 대기열에 추가될 수 있습니다. 예를 들어, 프로세스가 타임 슬라이스 부족으로 인해 준비 상태에 들어가면 낮은 우선 순위 대기열에 배치되고, 프로세스가 I/O 작업 완료로 인해 준비 상태에 들어가면 해당 프로세스는 우선순위가 높은 큐.
2) 실행 상태(Running):
프로세스가 프로세서 리소스를 점유합니다. 이 상태의 프로세스 수는 프로세서 수보다 작거나 같습니다. 다른 프로세스를 실행할 수 없는 경우(예: 모든 프로세스가 차단됨) 일반적으로 시스템의 유휴 프로세스가 자동으로 실행됩니다.
3) 차단된 상태(Blocked):
프로세스가 특정 조건(I/O 작업 또는 프로세스 동기화 등)을 기다리고 있기 때문에 해당 조건이 충족될 때까지 실행을 계속할 수 없습니다. 만났다. 이 이벤트가 발생하기 전에 해당 프로세스에 프로세서 리소스를 할당하더라도 해당 프로세스를 실행할 수 없습니다. 프로그램
프로그램은 명령과 데이터의 순서화된 모음이며 실행 의미가 없으며 정적 개념입니다. 프로세스는 프로세서에서 프로그램을 실행하는 프로세스이며 동적 개념입니다.
프로그램은 일종의 소프트웨어 데이터로서 오랫동안 존재할 수 있지만 프로세스에는 일정한 수명이 있습니다. 프로그램은 영구적이고 프로세스는 일시적입니다.
프로세스는 동시성을 더 정확하게 설명할 수 있지만 프로그램은 그렇지 않습니다.
프로세스는 프로세스 제어 블록, 프로그램 세그먼트, 데이터 세그먼트의 세 부분으로 구성됩니다.
프로세스는 다른 프로세스를 생성할 수 있는 능력이 있지만 프로그램은 그렇지 않습니다.
동일한 프로그램이 여러 데이터 세트에서 동시에 실행되면 여러 다른 프로세스에 속하게 되며, 이는 동일한 프로그램이 여러 프로세스에 해당할 수 있음을 의미합니다.
기존 운영체제에서는 프로그램이 독립적으로 실행될 수 없으며, 자원 할당과 독립적인 운영의 기본 단위는 프로세스이다.
스레드
일반적으로 프로세스는 프로세스가 소유한 리소스를 활용할 수 있는 여러 스레드를 포함할 수 있습니다. 스레드를 도입하는 운영 체제에서 프로세스는 일반적으로 기본 단위로 할당됩니다. 스레드는 독립적인 작업과 독립적인 스케줄링의 기본 단위로 간주되며, 스레드는 프로세스보다 작고 기본적으로 시스템 리소스를 소유하지 않으므로 스케줄링에 드는 오버헤드가 훨씬 작아지고 효율성이 향상됩니다. 시스템의 여러 프로그램 간의 동시 실행 정도.
오늘 출시된 모든 범용 운영체제는 시스템의 동시성을 더욱 향상시키기 위해 스레드를 도입했으며, 이를 현대 운영체제의 중요한 지표로 여긴다. 프로세스 제어는 프로세스 관리의 가장 기본적인 기능입니다. 새로운 프로세스를 생성하거나, 완료된 프로세스를 종료하거나, 이벤트로 인해 실행할 수 없는 프로세스를 종료하는 데 사용됩니다. 또한 실행 중 프로세스의 상태 전환을 담당할 수도 있습니다.
프로세스 생성
1. 프로세스 생성을 유발하는 이벤트
다중 프로그래밍 환경에서는 프로세스만 (언제) 실행될 수 있습니다. 시스템에서. 따라서 프로그램을 실행하려면 해당 프로그램에 대한 프로세스를 만들어야 합니다. 하나의 프로세스가 다른 프로세스를 생성하게 하는 일반적인 이벤트는 다음 네 가지 범주로 나눌 수 있습니다.
1) 사용자 로그인
시간 공유 시스템에서 사용자가 로그인을 입력한 후 합법적인 사용자라면 시스템은 터미널에 대한 프로세스를 생성하고 이를 준비 대기열에 삽입합니다.
2) 작업 스케줄링
일괄 처리 시스템에서 작업 스케줄러는 특정 알고리즘에 따라 작업을 스케줄링할 때 해당 작업을 메모리에 로드하고 필요한 리소스를 할당합니다. 즉시 프로세스를 생성하고 준비 대기열에 삽입합니다.
3) 서비스 제공
실행 중인 사용자 프로그램이 특정 요청을 하면 시스템은 사용자가 요구하는 서비스를 제공하기 위한 프로세스를 특별히 생성합니다. 파일을 인쇄할 때 운영 체제는 해당 파일에 대한 인쇄 프로세스를 생성합니다. 이러한 방식으로 인쇄 프로세스가 사용자 프로세스와 동시에 실행될 수 있을 뿐만 아니라 인쇄 작업을 완료하는 데 소요되는 시간을 쉽게 계산할 수 있습니다. .
4) 애플리케이션 요청
위의 세 가지 경우에 시스템 커널은 이를 위한 새로운 프로세스를 생성하며 이러한 유형의 이벤트는 애플리케이션 프로세스의 요구 사항을 기반으로 합니다. 새 프로세스가 동시에 실행되어 특정 작업을 완료할 수 있도록 새 프로세스를 만듭니다.
2. 프로세스 생성 프로세스
운영 체제는 새 프로세스 생성이 필요한 이벤트를 발견하면 프로세스 생성 기본 요소인 create()를 호출하고 이에 따라 새 프로세스를 생성합니다. 다음 단계.
1) 빈 PCB를 신청하세요. 새 프로세스에 대한 고유 숫자 식별자를 요청하고 PCB 컬렉션에서 빈 PCB를 요청합니다.
2) 새 프로세스에 리소스를 할당합니다. 새로운 프로세스의 프로그램과 데이터, 사용자 스택에 필요한 메모리 공간을 할당합니다. 분명히 이 시점에서 운영 체제는 새 프로세스에 필요한 메모리 크기를 알아야 합니다.
3) 프로세스 제어 블록을 초기화합니다. PCB 초기화에는 다음이 포함됩니다.
①식별 정보를 초기화하고 시스템에서 할당한 식별자와 상위 프로세스 식별자로 새 PCB를 채웁니다.
② 프로세서 상태 정보를 초기화하고, 프로그램 카운터가 프로그램의 항목 주소를 가리키도록 하고, 스택 포인터가 스택의 맨 위를 가리키도록 만듭니다.
③프로세서 제어 정보를 초기화하고 프로세스 상태를 준비 상태 또는 정적 준비 상태로 설정합니다. 우선 순위는 사용자가 명시적으로 우선 순위를 올리지 않는 한 일반적으로 가장 낮은 우선 순위로 설정됩니다. 우선순위 요구사항.
4) 새 프로세스를 준비 대기열에 삽입합니다. 프로세스 준비 대기열이 새 프로세스를 수용할 수 있으면 새 프로세스를 준비 대기열에 삽입합니다.
프로세스 종료
1. 프로세스 종료를 유발하는 이벤트
1) 정상적인 종료
모든 컴퓨터 시스템에는 다음이 있어야 합니다. 프로세스 실행이 완료되었음을 나타냅니다. 예를 들어 일괄 처리 시스템에서 보류 명령이나 종료 시스템 호출은 일반적으로 프로그램 끝에 배치됩니다. 프로그램이 Hold 명령까지 실행되면 프로세스가 완료되었음을 OS에 알리기 위해 인터럽트가 생성됩니다.
2) 비정상 종료
프로세스 실행 중 특정 오류 및 실패로 인해 프로세스가 강제 종료됩니다.
이러한 비정상 이벤트에는 범위를 벗어난 오류, 보호 오류, 불법 명령, 특권 명령 오류, 실행 시간 초과, 대기 시간 초과, 산술 연산 오류, I/O 오류 등이 포함됩니다.
3) 외부 개입
외부 개입은 프로세스가 동작하는 중에 비정상적인 사건이 발생하는 것이 아니라, 외부 세계의 요청에 의해 프로세스가 종료되는 것을 의미한다. 이러한 개입에는 운영자 또는 운영 체제 개입, 상위 프로세스 요청, 상위 프로세스 종료가 있습니다.
2. 프로세스 종료 프로세스
시스템에서 프로세스 종료가 필요한 이벤트가 발생하면 OS는 프로세스 종료 프리미티브를 호출하고 다음 프로세스에 따라 프로세스를 종료합니다. 지정된 프로세스.
1) 종료된 프로세스의 식별자에 따라 PCB 컬렉션에서 프로세스의 PCB를 검색하고 프로세스 상태를 읽습니다.
2) 종료된 프로세스가 실행 상태인 경우 해당 프로세스의 실행을 즉시 종료하고 스케줄링 플래그를 true로 설정해야 합니다. 프로세스가 종료된 후 다시 예약되어야 함을 나타내는 데 사용됩니다.
3) 프로세스에 하위 프로세스가 있는 경우 모든 하위 프로세스를 종료하여 제어할 수 없는 프로세스가 되는 것을 방지해야 합니다.
4) 종료된 프로세스가 소유한 모든 리소스를 상위 프로세스나 시스템에 반환합니다.
5) 종료된 프로세스(해당 PCB)를 대기열(또는 연결 목록)에서 제거하고 다른 프로그램이 정보를 수집할 때까지 기다립니다.
Wake-up 차단
1. 프로세스 차단 및 Wake-up을 유발하는 이벤트
1) 시스템 서비스를 요청하는 경우
프로세스 요청 실행 운영 체제가 서비스를 제공할 때 어떤 이유로 운영 체제가 프로세스의 요구 사항을 즉시 충족하지 못하는 경우 프로세스는 요구 사항이 충족되면 차단 상태로만 변경되어 대기할 수 있습니다. .
2) 특정 작업 시작
프로세스가 특정 작업을 시작할 때 해당 작업이 완료될 때까지 프로세스를 계속할 수 없는 경우 해당 프로세스를 먼저 차단하고 해당 작업을 기다려야 합니다. 완료하고 작업이 완료된 후 프로세스를 깨우십시오.
3) 새로운 데이터가 아직 도착하지 않았습니다
서로 협력하는 프로세스의 경우, 프로세스 중 하나가 이전에 다른(협력) 프로세스에서 제공한 데이터를 얻어야 하는 경우 데이터를 처리하기 위해 실행할 수 있습니다. 필요한 데이터가 아직 도착하지 않은 경우 프로세스는 차단(대기)만 됩니다. 데이터가 도착하면 프로세스가 깨어납니다.
4) 새로운 작업을 수행할 수 없습니다
시스템은 종종 특정 기능을 가진 일부 시스템 프로세스를 설정합니다. 이러한 프로세스가 작업을 완료할 때마다 자체적으로 새로운 작업을 기다리게 됩니다. 작업이 도착하고 새로운 작업이 도착하면 프로세스가 깨어납니다.
2. 프로세스 차단 프로세스
실행 중인 프로세스가 위의 이벤트 중 하나를 감지하면 실행을 계속할 수 없으므로 프로세스는 차단 기본 블록()을 호출하여 자체적으로 차단됩니다. 프로세스 차단은 프로세스 자체의 능동적인 행위임을 알 수 있다. 블록 프로세스에 진입한 후 이때는 아직 프로세스가 실행 상태이므로 실행을 즉시 중지해야 하며 프로세스 제어 블록의 현재 상태를 실행에서 차단으로 변경하고 PCB를 블록 프로세스에 삽입해야 한다. 차단 대기열. 서로 다른 이벤트에 의해 차단된 여러 개의 차단 큐가 시스템에 설정되어 있는 경우 이 프로세스를 동일한 이벤트의 차단(대기) 큐에 삽입해야 합니다. 마지막으로 일정 변경을 위해 스케줄러로 전환하고 프로세서를 다른 준비된 프로세스에 할당하고 전환합니다. 즉, 차단된 프로세스(PCB에서)의 프로세서 상태를 유지한 다음 새 프로세스의 PCB에서 프로세서를 누릅니다. 상태는 CPU 환경을 설정합니다.
3. 프로세스 깨우기 프로세스
I/O가 완료되거나 예상한 데이터가 도착하는 등 차단된 프로세스가 예상하는 이벤트가 발생하면 해당 프로세스( 예를 들어, I/O 장치를 사용하고 해제한 프로세스)는 이벤트를 기다리고 있는 프로세스를 깨우기 위해 wakeup 기본 wakeup()을 호출합니다. wake-up 프리미티브를 실행하는 과정은 먼저 이벤트를 기다리는 차단 큐에서 차단된 프로세스를 제거하고 해당 PCB의 현재 상태를 차단에서 준비로 변경한 다음 PCB를 준비 큐에 삽입하는 것입니다.
프로세스의 스케줄링 알고리즘은 다음과 같습니다.
실시간 시스템: FIFO(First Input First Output, 선입선출 알고리즘), SJF(Shortest Job First, 최단 작업 우선순위 알고리즘), SRTF (가장 짧은 남은 시간 먼저, 가장 짧은 남은 시간 먼저 알고리즘).
대화형 시스템: RR(Round Robin, 타임 슬라이스 회전 알고리즘), HPF(Highest Priority First, 최고 우선순위 알고리즘), 다중 레벨 대기열, 최단 프로세스 우선, 보장된 스케줄링, 복권 스케줄링, 공정성 공유 일정. 프로세스는 프로세스 제어 블록, 프로그램 세그먼트 및 데이터 세그먼트의 세 부분으로 구성됩니다. 프로세스에는 여러 스레드(스레드)가 포함될 수 있으며 스레드는 애플리케이션이 동시에 여러 작업을 수행하는 데 도움이 될 수 있습니다. 예를 들어 한 스레드는 디스크에 파일을 쓰고 다른 스레드는 사용자의 키 작업을 받아 시간에 맞춰 응답합니다. 프로그램이 실행된 후 시스템이 가장 먼저 해야 할 일은 프로그램 프로세스에 대한 기본 스레드를 생성하는 것이며, 그런 다음 프로그램은 필요에 따라 관련 스레드를 추가하거나 삭제할 수 있습니다. 동시에 실행할 수 있는 프로그램입니다. 데이터 세트에서 실행되는 프로세스는 시스템의 리소스 할당 및 예약을 위한 독립적인 단위이며 활동, 경로 또는 작업이라고도 합니다. 활동과 동시성이라는 두 가지 속성이 있습니다. 프로세스는 실행 중, 차단됨, 준비됨의 세 가지 상태로 나눌 수 있으며 특정 조건에 따라 서로 변환됩니다: 실행 중, 실행 차단, 차단 준비.
프로세스는 애플리케이션의 실행 중인 인스턴스이며 애플리케이션의 동적 실행입니다. 심오해 보이지만 간단하게는 다음과 같이 이해할 수 있습니다. 현재 운영 체제에서 실행 중인 실행 프로그램입니다. 현재 시스템에서 실행되고 있는 실행 프로그램에는 시스템이 개별 컴퓨터를 관리하고 다양한 작업을 완료하는 데 필요한 프로그램, 사용자가 시작하고 실행하는 추가 프로그램, 물론 사용자 모르게 자동으로 실행되는 불법 프로그램(일 수도 있음)이 포함됩니다. 바이러스 프로그램).