프로세스 관리
프로세스 관리는 현대의 운영 체제 가운데 중요한 부분이다. 운영 체제는 자원을 프로세스에 할당하고, 프로세스가 정보를 공유하고 교환할 수 있게 하며, 각 프로세스 자원을 다른 프로세스로부터 보호하며, 프로세스 간 동기화를 가능하게 해야 한다. 이러한 요구를 충족하기 위하여 운영 체제는 각 프로세스를 위한 자료 구조를 관리하며, 이로써 프로세스의 상태와 자원 소유권을 기술하고 운영 체제가 각 프로세스를 제어할 수 있다.
다중 프로그래밍
편집현대의 수많은 운영 체제에서 하나 이상의 프로그램이 동시에 메모리에 적재된다. 이를테면 한 명 이상의 사용자가 같은 프로그램을 실행할 수도 있으며 여기서 각 사용자는 메모리에 적재된 프로그램의 개별 복사본을 점유한다. 어떠한 프로그램의 경우 메모리에 적재된 복사본 하나만을 생성할 수 있지만 여러 명의 사용자들이 이에 대한 공유 접근을 하여 각 사용자가 동일한 프로그램 코드를 실행할 수 있다. 이러한 프로그램을 재진입성이 있다고 한다. 프로세서는 즉시 한 프로그램으로부터 하나의 명령만을 수행할 수 있지만, 여러 개의 프로세스들은 나머지 프로세스들이 일시적으로 유휴 상태에 있는 동안 각 프로세스를 프로세서에 할당함으로써 한 동안 보유할 수 있다. 한꺼번에가 아닌 한 동안 수행하는 수많은 프로세스들은 동시 실행(concurrent execution, 여러 개의 프로그램을 하나의 컴퓨터에 실행하는 것을 뜻함)이라고 부른다.[1]
다중 프로그래밍 또는 멀티태스킹 운영 체제는 동시에 여러 프로세스를 실행하는 시스템을 말한다. 다중 프로그래밍의 요구 사항은 프로세서가 특정 기간 동안 각 프로세스에 할당되고 적절한 순간에 할당이 해제되는 것이다. 프로세서가 프로세스 실행 도중 할당이 해제되면 가능한 쉽게 나중에라도 다시 시작할 수 있도록 다음과 같은 방식을 수행한다.
- 프로세스는 시스템 호출을 일으킨다. (소프트웨어 인터럽트라고도 한다) 이를테면 입출력 요청은 하드 디스크의 파일 접근을 요청한다.
- 하드웨어 인터럽트를 일으킨다. 이를테면 컴퓨터 자판에 키를 누르거나 타이머가 소진된다. (선점 스케줄링에 이용)
프로세스 하나를 멈추고 다른 프로세스를 시작 및 다시 시작하는 것을 문맥 교환이라고 한다. 현대의 수많은 운영 체제에서 프로세스는 수많은 하위 프로세스를 포함할 수 있는데 이를 스레드라고 한다. 스레드는 하부 프로세스라고 생각할 수 있는데, 이는 하나의 프로세스 코드 안에 있는 개별적이고도 독립적인 실행 시퀀스이다. 스레드는 분산 및 클라이언트-서버 시스템 설계에서, 또 다중 프로세서 시스템에서 실행하는 소프트웨어에서 중요성이 커지고 있다.
프로세스 작성
편집운영 체제는 프로세스를 만들기 위하여 몇 가지 일을 한다. 하나의 응용 프로그램만 실행하는 매우 단순한 시스템(이를테면 전자레인지의 제어부)은 시스템이 구동할 때 필요한 모든 프로세스가 있을 것이다. 그러나 일반 목적의 시스템에서는 동작 중에 필요하면 프로세스를 만들고 끝내야 하는데, 이러한 방법이 몇 가지 있다. 프로세스를 만들게 하는 네 개의 주된 이벤트가 있다.
- 시스템 초기화
- 프로세스를 실행함으로써 프로세스 작성 시스템 호출 실행
- 새로운 프로세스를 만들어달라는 사용자의 요청
- 일괄 처리 시작
운영 체제가 시동될 때 일반적으로 몇 개의 프로세스가 만들어진다. 이 가운데 포그라운드 프로세스[1]는 사용자와 서로 소통하며 사용자를 위해 일을 수행한다. 백그라운드 프로세스는 특정 사용자와 연계하지 않지만 일부 특정한 기능을 수행한다.
프로세스 끝내기
편집프로세스를 끝내는 데에는 몇 가지 까닭이 있다.
프로세스 서술 및 제어
편집각 시스템 프로세스는 프로세스 제어 블록(PCB, 리눅스에서는 프로세스 서술자)로 불리는 자료 구조로 표현하며 이 PCB는 여행자의 여권과 같은 역할을 수행한다. PCB는 다음과 같은 기본 정보를 포함하고 있다:
- 프로세스의 위치
- 프로세스의 이동 경로
- 프로세스의 수행 정도
- 프로세스의 저장 위치
- 프로세스의 자원 점유량
- 프로세스 동일성: 각 프로세스는 서술자에 연계된 포인터와 사용자의 동일성을 그대로 고유하게 부여받는다.
- 프로세스 상황: READY, RUNNING, BLOCKED, READY SUSPEND, BLOCKED SUSPEND 가운데 프로세스의 현재 상황을 인지한다. (자세한 정보는 프로세스에 있음)
- 프로세스 상태: 작업의 현재 상태를 알려 주는 모든 정보를 포함한다.
- 측정: 성능 측정과 소요 목적에 주로 쓰이는 정보를 포함한다. 어떠한 종류의 자원이 프로세스가 사용하고 있는지, 또 얼마나 오래 사용하고 있는지를 알려 준다.
같이 보기
편집각주
편집- ↑ 다중 프로그래밍 및 프로세서 등과 같이 동시에 몇 개의 프로그램이 실행될 때 우선 순위가 높은 프로그램이 실행되는 상태
출처
편집- Operating System incorporating Windows and UNIX, Colin Ritchie. ISBN 0826464165
- Operating Systems, William Stallings, Prentice Hall, (4th Edition, 2000)
- Multiprogramming, Process Description and Control
- Operating Systems – A Modern Perspective, Gary Nutt, Addison Wesley, (2nd Edition, 2001).
- Process Management Models, Scheduling, UNIX System V Release 4:
- Modern Operating Systems, Andrew Tannenbaum, Prentice Hall, (2nd Edition, 2001).
- Operating System Concepts, Silberschatz, Galvin & Gagne, John Wiley & Sons, (6th Edition, 2003).