OS/프로세스 관리

프로세스

검정비니 2018. 10. 24. 11:24
728x90
반응형

프로세스





1. 프로세스란?



간단히 말해서 프로세스란 실행 중인 프로그램을 말한다. 프로세스는 현대의 시분할 시스템에서 작업의 단위이다.


프로세스는 일반적으로 함수의 매개변수, 복귀 주소와 로컬 변수와 같은 임시적인 자료를 가지는 프로세스 스택과 전역 변수들을 수록하는 데이터 섹션을 포함한다. 또한 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 힙을 포함한다.





2. 프로세스 상태 (Process State)



프로세스는 실행되면서 그 상태가 변한다. 프로세스 상태의 일부분은 프로세스의 현재 활동에 따라 결정된다.


각 프로세스는 다음 상태들 중 하나의 상태로 존재하게 된다:


1) new             : 프로세스 생성 중

2) running      : 명령어들을 실행 중

3) waiting       : 프로세스가 어떤 사건(I/O 완료나 signal 수신 등)이 일어나기를 기다리는 중

4) ready         : 처리기에 할당되기를 기다리는 중

5) terminated : 프로세스가 실행을 종료


이 상태의 이름들은 운영체제마다 다를 수 있다. 그렇지만, 이들이 나타내는 상태들은 모든 시스템에서 ㅂ라견할 수 있다. 또한, 어떤 운영체제는 프로세스 상태를 더욱 상세하게 묘사하여 구별한다.


아래의 이미지는 여러 프로세스가 준비완료 및 대기 상태에 있다가 실행되고 종료되는 멀티 프로세스 환경에서 각 프로세스의 상태를 보여주는 상태도(state diagram)이다.





이렇게 각각 알맞은 상태를 나타내기 위해서는 프로세스에 대한 모든 정보가 저장되어 있는 곳이 필요한데 그것이 PCB(Process Control Block - 프로세스 제어 블록)이다.






3. 프로세스 제어 블록 (Process Control Block)



각 프로세스는 운영체제에서 프로세스 제어 블록(PCB - Process Control Block, 태스크 제어 블록이라고도 함)에 의해 표현된다.


다음 이미지는 PCB를 나타낸다.



PCB는 특정 프로세스와 연관된 여러 정보를 수록하며, 다음과 같은 것들을 포함한다:


1) 프로세스 상태:


위에서 언급한 프로세스의 상태이다.


2) 프로그램 카운터:


프로그램 카운터는 이 프로세스가 다음에 실행할 명령어의 주소를 가리킨다.


3) CPU 스케쥴링 정보:


여기에는 프로세스 우선순위, 스케쥴 큐에 대한 포인터와 다른 스케쥴 매개변수들이 저장된다.


4) 메모리 관리 정보:


여기에는 운영체제가 사용하는 메모리 시스템에 따라 기준 레지스터(base register)와 한계 레지스터(limit register)의 값, 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함한다.


5) 회계(accounting) 정보:


이 정보에는 CPU 사용시간과 실제 사용시간, 시간제한, 계정번호, 작업(job) 또는 프로세스 번호 등이 포함된다.


6) 입출력 상태 정보:


이 정보에는 해당 프로세스에 할당된 입출력 장치들과 열린 파일의 목록 등이 포함된다.


7) CPU 레지스터들:


CPU 레지스터는 컴퓨터의 구조에 따라 다양한 수와 유형을 가진다. 이 칸에는 누산기(accumulator), 인덱스 레지스터, 스택 레지스터, 범용(general-purpose) 레지스터들과 상태 값이 저장되어야 한다. 이 저장 정보는 인터럽트 처리 후 프로세스가 중단된 지점에서부터 올바르게 실행할 수 있게 한다.


위와 같이 인터럽트나 시스템 호출 등에 의해 실행 중인 프로세스를 변경하는 과정을 문맥 교환(context switching)이라고 한다. 아래의 이미지는 문맥 교환에 대한 예시이다.









4. 스레드 (Threads)



스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다.

반응형