반응형
SMALL

오늘은 프로세스에 대해 포스팅해보려고 한다. 이러저러 블로그 찾아보고 OS책 따로보고 알게된 것들을 간추려서 써보려고 한다.


1. 프로세스란?

말그대로 실행중인 프로그램을 말한다. 프로그램 카운터의 값과 처리기 레지스터 내용으로 대표되는 현재 활동을 포함하고 있다.


2. 메모리상의 프로세스 구조


- 프로세스 스택: 함수의 매개변수, 복귀 주소, 로컬 변수와 같은 임시적인 자료를 가지는 공간이다.

- 데이터 섹션: 전역변수들을 수록하는 공간이다.

- 힙: 프로세스 실행중에 동적으로 할당하는 메모리 공간이다.



                    <메모리 상의 프로세스>


하나 더 말하자면 프로그램과 프로세스는 엄연히 다른거다. 가끔 이게 같다고 하는 사람들도 존재하는데-_-;; 어떤차이인지 좀 제대로 알고 말했으면 좋겠다.. 프로그램은 명령어 리스트를 내용으로 가진 디스크에 저장된 파일, 즉 실행파일   이라고 불리는 수동적인 존재이다. 반면 프로세스는 그 프로그램을 실행중인 것이다. 좀더 이야기하면 다음에 실행할  명령어를 지정하는 프로그램 카운터 및 관련된 자원의 집합을 가진 능동적인 존재이다.



3. 프로세스 상태


 프로세스는 실행되면서 상태가 변하게 되는데 5가지 상태가 있다.


- 새로운(new): 프로세스가 생성중이다.

- 실행(running): 명령어들이 실행되고 있는 중이다.

- 대기(waiting): 프로세스가 어떤사건이 일어나길 기다리고 있는 상태이다.

- 준비완료(ready): 프로세스가 처리기에 할당되기를 기다린다.

- 종료(terminated): 프로세스가 실행을 종료한다.


대강 이정도 5가지 상태가 있지만 운영체제마다 조금씩 다르므로 그건 OS에 따라 공부해 보면 될 것 같다. 하지만 이름만 다를뿐 전체적인 큰 그림은 거의 유사하다. 아래 사진은 프로세스가 어떻게 실행되는지에 대해 자세히 나타낸 그림이니 한번 참고하길 바란다.



4. PCB(프로세스 제어 블록)


이건 내가 컨텍스트스위칭 공부했을때 한번 포스팅 해놓긴 한거 같았는데 그래도 한번 더 포스팅 해보려고 한다. 컴퓨터공학과 전공자고 운영체제를 한번이라도 해봤으면 알겠지만 프로세스 제어블록은 특정 프로세스하고 연관된 여러정보를 수록하는 공간을 의미한다. 프로세스 제어 블록의 구조에 대해 조금 더 알아보겠다.


- 프로세스 상태: 새로운, 준비완료, 실행, 대기, 정지 상태를 의미한다.

- 프로그램 카운터: 이 프로세스가 다음의 실행할 명령어의 주소를 가리킨다.(학부때 컴퓨터구조론시간에도 배웠을꺼다)

- CPU의 레지스터: 누산기, 인덱스 레지스터, 스택 레지스터, 범용레지스터들과 상태코드의 정보가 포함되는 곳이다. 추가적으로 상태정보에 대해 좀 더 이야기하자면 인터럽트 발생시에 프로그램 카운터와 함께 저장어야 하고 처리후에는 프로세스가 중단된 지점으로부터 올바르게 실행할 수 있게 해야 한다.

- CPU-스케줄링정보: 프로세스 우선순위, 스케줄 큐에 대한 포인터와 다른 스케줄 매개변수들을 포함하는 곳이다. 말대로 스케줄링에 관련된 정보들을 포함하는 곳이다.

- 메모리 관련 정보: 여기에는 메모리 시스템에 따라 기준레지스터, 한계레지스터값, 세그먼트들과 같은 정보를 포함한다.

- 회계정보: CPU가 사용한 양과 사용된 실제시간, 시간제한, 잡 등을 포함하고 있다.

- 입출력 상태 정보: 이 프로세스에 할당된 입출력장치들과 열린 파일의 목록 등을 포함한다.


<PCB의 구조>

<사진참조: google>



반응형
LIST

'운영체제 ' 카테고리의 다른 글

CPU 스케줄링  (0) 2017.08.05
명령해석기  (0) 2017.01.30
운영체제서비스  (0) 2017.01.30
이중동작모드(Dual-Mode operation)  (0) 2017.01.15
멀티프로세싱(Multi Processing)이란?  (0) 2016.09.20
블로그 이미지

만년필석사

,