프로세스

연속적으로 실행되고 있는 컴퓨터 프로그램

프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다. 여러 개의 프로세서를 사용하는 것을 멀티프로세싱이라고 하며 같은 시간에 여러 개의 프로그램을 띄우는 시분할 방식을 멀티태스킹이라고 한다. 프로세스 관리운영 체제의 중요한 부분이 되었다.

htop을 통해 보이는 프로세스들의 목록.

프로그램과 프로세스 편집

프로그램은 일반적으로 하드 디스크 등에 저장되어 있는 실행코드를 뜻하고, 프로세스는 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리 상에서 실행되는 작업 단위를 지칭한다. 예를 들어, 하나의 프로그램을 여러 번 구동하면 여러 개의 프로세스가 메모리 상에서 실행된다.

프로세스의 상태 편집

 
다양한 프로세스 상태

커널 내에는 준비 큐, 대기 큐, 실행 큐 등의 자료 구조가 있으며 커널은 이것들을 이용하여 프로세스의 상태를 관리한다.

  • 생성(create) : 프로세스가 생성되는 중이다.
  • 실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있다.
  • 준비(ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있다. 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받는다.
  • 대기(waiting) : 보류(block)라고 부르기도 한다. 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태를 말한다.
  • 종료(terminated) : 프로세스의 실행이 종료되었다.

프로세스의 상태전이 편집

하나의 프로그램이 실행되면 그 프로그램에 대응되는 프로세스가 생성되어 준비 리스트의 끝에 들어간다. 준비 리스트 상의 다른 프로세스들이 CPU를 할당받아 준비 리스트를 떠나면, 그 프로세스는 점차 준비 리스트의 앞으로 나가게 되고 언젠가 CPU를 사용할 수 있게 된다.

  • 디스패치(dispatch)
준비 리스트의 맨 앞에 있던 프로세스가 CPU를 점유하게 되는 것, 즉 준비 상태에서 실행 상태로 바뀌는 것을 디스패치라고 하며 다음과 같이 표시한다.
dispatch (processname) : ready → running
  • 보류(block)
실행 상태의 프로세스가 허가된 시간을 다 쓰기 전에 입출력 동작을 필요로 하는 경우 프로세스는 CPU를 스스로 반납하고 보류 상태로 넘어 간다. 이것을 보류라고 하며 다음과 같이 표시한다.
block (processname) : running → blocked
  • 깨움(wakeup)
입출력 작업 종료 등 기다리던 사건이 일어났을 때 보류 상태에서 준비 상태로 넘어가는 과정을 깨움이라고 하며 다음과 같이 표시한다.
wakeup (processname) : blocked → ready
  • 시간제한(timeout)
운영체제는 프로세스가 프로세서를 계속 독점해서 사용하지 못하게 하기 위해 clock interrupt를 두어서 프로세스가 일정 시간 동안만 (시분할 시스템의 time slice) 프로세서를 점유할 수 있게 한다
timeout(processname) : running -> ready

윈도의 프로세스 편집

GUI 환경에서의 제어 편집

윈도 프로세스를 제어하려면 다음과 같은 과정을 거치면 된다.

  1. 먼저 작업 관리자로 들어간다. (Ctrl+⇧ Shift+Esc 단축키 조합을 사용할 수 있다.)
  2. 프로세스 탭에 들어가서 관리하려는 프로세스에서 마우스 오른쪽 단추를 누른다. 가장 흔히 사용되는 것으로 "프로세스 끝내기"와 "우선 순위 설정"이 있다.
  • 프로세스 끝내기: 프로세스와 그와 연결된 프로세스 트리를 모두 끝낸다.
  • 우선 순위 설정: "낮음"부터 "실시간"까지 우선 순위를 설정할 수 있다.

윈도우 비스타의 경우 "모든 사용자의 프로세스 표시"라는 버튼을 찾을 수 있다. 이 단추는 다음과 같은 동작을 담당한다.

  • 보이지 않는 모든 프로세스를 표시한다.
  • 우선 순위에서 "실시간"을 사용할 수 있도록 허용한다.

명령 프롬프트 편집

명령 프롬프트(cmd.exe)에는 프로세스를 제어하기 위해 다음과 같은 명령어를 제공한다.

  • TASKLIST: 프로세스의 목록을 나열한다.
  • TASKKILL: 프로세스를 일반적으로 종료하거나 강제 종료한다.

자세한 것은 도움말 매개변수 "/?"을 사용하여 명령어의 도움말 정보를 확인할 수 있다. "TASKKILL /F /IM explorer.exe"라고 입력하면 윈도우 탐색기 프로세스가 강제로 종료된다.

같이 보기 편집

외부 링크 편집