프로세스

개요

프로세스란 무엇이고 운영체제가 프로세스를 어떻게 다루는지에 대해서 알아보겠다.




프로세스


프로세스란 실행 중인 프로그램 Process is a program in execution

과거의 컴퓨터는 job을 수행하는 일괄 처리 시스템이었으나 현재는 다수의 프로그램이 적재되어 병행 실행된다. 따라서 프로세스의 개념이 나타났다.

프로세스의 현재 활동의 상태는 프로그램 카운터 값과 프로세서 레지스터의 내용으로 나타낸다.

cpu에 있는 pc(program counter)가 프로세스의 메모리 주소를 가리키면서 작동한다.

메모리 구조




프로세스 상태




New


프로그램이 생성중인 상태



Ready


메모리등 실행하기 위한 다른 조건을 다 만족한채로 CPU의 처리를 기다리는 상태



Waiting


CPU가 처리를 할 수 없는 상태

I/O의 완료나 신호의 수신과 같은 어떤 이벤트가 일어나기를 기다린다.



Running


CPU가 해당 프로세스의 명령어들을 실행중인 상태



Terminated


프로세스가 일을 다 마친 상태




PCB


Process Control Block으로 프로세스에 대한 여러 정보들을 가지고 있다.



프로세스 상태


위에서 살펴본 프로세스 상태에 대해서 담고있다.



프로그램 카운터


프로그램 카운터는 해당 프로세스가 다음에 실행할 명령어의 주소를 담고있다.



CPU 레지스터


EAX(RAX), EBX(RBX)등등의 레지스터 값들을 가지고 있다.



CPU 스케줄링 정보


이 정보는 프로세스 우선순위, 스케줄 큐에 대한 포인터와 다른 스케줄 매개변수를 포함한다.



메모리 관리 정보


base register, limit register등 메모리 관리에 필요한 레지스터 값들,

메모리 시스템에 따라 페이지 테이블, 세그멘트 테이블 같은 정보를 가진다.



Accounting 정보


이 정보는 CPU 사용 시간과 경과된 실시간, 시간 제한, 계정 번호, 잡 또는 프로세스 번호등을 포함한다.



입출력 상태 정보


프로세스에 할당된 입출력 장치들과 열린 파일의 목록