프로세스 상태
Process state멀티태스킹 컴퓨터 시스템에서는 프로세스가 다양한 상태를 차지할 수 있다.이러한 개별 상태는 운영 체제 커널에 의해 인식되지 않을 수 있습니다.그러나 프로세스를 이해하는 데 유용한 추상화입니다.

프라이머리 프로세스 상태
다음과 같은 일반적인 프로세스 상태는 모든 종류의 컴퓨터 시스템에서 가능합니다.대부분의 경우 프로세스는 메인 메모리에 "저장"됩니다.
창조했다
프로세스가 처음 생성되면 프로세스가 "작성" 또는 "신규" 상태를 차지합니다.이 상태에서는 프로세스가 "ready" 상태로의 어드미션을 대기합니다.장기 또는 어드미션 스케줄러에 의해 어드미션이 승인 또는 지연됩니다.일반적으로 대부분의 데스크톱 컴퓨터 시스템에서는 이 승인이 자동으로 승인됩니다.그러나 실시간 운영 체제의 경우 이 승인이 지연될 수 있습니다.실시간 시스템에서 너무 많은 프로세스를 "ready" 상태로 허용하면 시스템 자원의 과잉포화와 과도한 경합이 발생하여 프로세스 기한을 준수하지 못할 수 있습니다.
준비가 되어 있습니다!
"ready" 또는 "waiting" 프로세스가 메인 메모리에 로드되어 CPU 상에서 실행 대기 중입니다(디스패처 또는 단기 스케줄러에 의해 CPU로 컨텍스트 전환됩니다).시스템 실행의 어느 시점에도 많은 "준비 완료" 프로세스가 존재할 수 있습니다.예를 들어, 1개의 프로세서 시스템에서 한 번에 실행할 수 있는 프로세스는 1개뿐이며, 다른 모든 "동시 실행" 프로세스는 실행을 대기합니다.
Ready Queue 또는 run 큐는 컴퓨터 예약에 사용됩니다.현대의 컴퓨터는 동시에 많은 다른 프로그램이나 프로세스를 실행할 수 있습니다.단, CPU는 한 번에 1개의 프로세스만 처리할 수 있습니다.CPU 준비가 된 프로세스는 "준비 완료" 프로세스를 위해 큐에 보관됩니다.하드 드라이브에서 정보를 로드하거나 인터넷 연결을 기다리는 등 이벤트 발생을 기다리는 다른 프로세스는 준비 대기열에 없습니다.
입니다.
프로세스가 실행 대상으로 선택되면 실행 상태로 이행합니다.프로세스의 명령은 시스템의 CPU(또는 코어) 중 하나에 의해 실행됩니다.CPU 또는 코어당 실행 중인 프로세스는 최대 1개입니다.프로세스는 커널 모드와 사용자 [1][2]모드 중 하나로 실행할 수 있습니다.
커널 모드
- 커널 모드의 프로세스는 커널 주소와 사용자 주소 모두에 액세스할 수 있습니다.
- 커널 모드에서는 특권 명령 실행을 포함하여 하드웨어에 제한 없이 액세스할 수 있습니다.
- 다양한 명령(I/O 명령 및 중지 명령 등)은 권한이 있으며 커널 모드에서만 실행할 수 있습니다.
- 사용자 프로그램에서 시스템 호출이 발생하면 커널 모드로 전환됩니다.
사용자 모드
- 사용자 모드의 프로세스는 자체 명령 및 데이터에 액세스할 수 있지만 커널 명령 및 데이터(또는 다른 프로세스의 명령 및 데이터)에는 액세스할 수 없습니다.
- 컴퓨터 시스템이 사용자 응용 프로그램을 대신하여 실행되고 있는 경우 시스템은 사용자 모드입니다.다만, 유저 애플리케이션이 operating system으로부터(시스템 콜을 개입시켜) 서비스를 요구하는 경우는, 유저로부터 커널 모드로 이행해, 요구를 만족시킬 필요가 있습니다.
- 사용자 모드를 사용하면 다양한 치명적인 장애를 방지할 수 있습니다.
- 사용자 모드의 각 프로세스에는 분리된 가상 주소 공간이 있습니다.
- 사용자 모드에서는 각 프로세스가 격리되어 실행되므로 다른 프로세스에 영향을 주지 않습니다.
- 하드웨어 디바이스에 대한 직접 액세스는 허용되지 않습니다.
차단됨
프로세스는 외부 상태 또는 이벤트 변경 없이 진행할 수 없는 경우 차단 상태로 전환됩니다.예를 들어 프린터가 없는 경우 프린터 등의 I/O 디바이스에 대한 호출이 프로세스에서 차단될 수 있습니다.또한 프로세스는 일반적으로 사용자 입력이 필요하거나 원자적으로 실행해야 하는 중요한 섹션에 대한 액세스가 필요할 때 차단됩니다.이러한 중요한 섹션은 세마포나 뮤텍스 등의 동기화 개체를 사용하여 보호됩니다.
종료됨
프로세스는 실행을 완료하거나 명시적으로 중지함으로써 "실행 중" 상태에서 종료될 수 있습니다.어느 경우든 프로세스는 "종료" 상태로 이행합니다.기본 프로그램은 더 이상 실행되지 않지만 프로세스는 상위 프로세스가 다음 명령을 호출할 때까지 프로세스 테이블에 좀비 프로세스로 남아 있습니다.wait
종료 상태를 읽기 위한 시스템 호출. 이 시점에서 프로세스가 프로세스 테이블에서 제거되고 프로세스의 수명이 종료됩니다.부모가 콜에 실패했을 경우wait
이로 인해 프로세스 테이블엔트리(구체적으로는 프로세스 식별자(PID))가 계속 소비되어 자원 누수가 발생합니다.
추가 프로세스 상태
가상 메모리를 지원하는 시스템의 프로세스에는 두 가지 추가 상태를 사용할 수 있습니다.두 상태 모두에서 프로세스는 세컨더리 메모리(일반적으로 하드 디스크)에 "저장"됩니다.
스왑 아웃하여 대기.
(일명 서스펜드 및 대기라고도 합니다.가상 메모리를 지원하는 시스템에서는 프로세스가 스왑 아웃될 수 있습니다.즉, 메인 메모리에서 삭제되어 스케줄러에 의해 외부 스토리지에 배치됩니다.여기서부터 프로세스를 대기 상태로 되돌릴 수 있습니다.
스왑 아웃하여 차단.
(일시정지 및 차단이라고도 합니다).차단된 프로세스는 스왑 아웃될 수도 있습니다.이 경우 프로세스는 스왑아웃 및 차단되며 스왑아웃 및 대기 프로세스와 동일한 상황에서 다시 스왑인할 수 있습니다(단, 이 경우 프로세스는 차단 상태로 전환되며 리소스를 사용할 수 있을 때까지 대기 중일 수 있습니다).
「 」를 참조해 주세요.
레퍼런스
- ^ Abraham Silberschatz; Peter Baer Galvin; Greg Gagne (2008-07-29). Operating System Concepts. ISBN 978-0470128725.
- ^ Maurice J. Bach (1986). The design of the UNIX operating system. Prentice-Hall, Inc. Upper Saddle River, NJ, USA ©1986. ISBN 0-13-201799-7.
- Stallings, William (2005). Operating Systems: internals and design principles (5th ed.). Prentice Hall. ISBN 0-13-127837-1.
- 특히 그림 3.9 "정지 상태를 포함한 프로세스 상태 전이"를 포함한 제3장 섹션 3.2 "프로세스 상태"