contents
프로세스의 개념: 실행중인 프로그램, 운영체제의 관리 대상
프로세스 스케줄링: 운영체제 내부에서는 다양한 수준에서 프로세스에 대한 스케줄링이 일어남
프로세스에 대한 연산 : 운영체제의 프로세스에 대한 대표적인 연산인 생성, 종료, 대기 등
프로세스간 통신(IPC): 메지시 패싱, shared memeory
IPC의 사례
클라이어트 오버 시스템에서 프로세스 간 통신
운영체제마다 실행중인 프로그램을 부르는 용어가 차이가 난다.
job, user programs 등등, 우리는 앞으로 job이나 process로 부른다.
process: 실행중인 프로그램
multiple parts
프로세스의 개념에 제일 먼저 포함되어야 할 것 : 메모리상의 실행중인 프로그램 이미지
프로그램이 실행되기 위해서는 메모리에 load되어야한다. 그림은 실행중인 프로그램(프로세스)가 메모리에 load되어 있는 그림이다.
text: 프로그램의 명령들, 코드 부분, 코드가 실행중이기 때문에 실행과 관련된 프로그램 카운터를 포함한 각종 cpu레지스터도 함께 생각, 메모리 공간의 맨아래에 존재
data: 전역 변수들이 위치한 영역,
heap: 프로세스의 실행중에 동적으로 메모리가 할당되는 경우 사용되는 공간
stack: 프로그램이 실행하는도중에 함수와 관련된 동작의 내용들이 저장, 함수의 파라미터 복귀주소 지역변수 등. 함수가 호출될 때마다 이들이 스택에 푸시되고 함수가 종료되면 스택에서 팝이된다.
프로그램 그 자체는 프로세스가 아니다. 프로그램은 cpu명령들을 그 내용으로 가진 디스크에 저장되어 있는 executable file 즉, 실행 파일과 같이 수동적인 존재.
프로세스는 다음에 실행할 cpu명령을 지정하는 프로그램 카운터 레지스터와 실행에 필요한 자원 집합을 가진 능동적인 존재.
실행 파일의 형태인 프로그램이 메모리에 적재되어야만이 비로소 프로세스가 된다.
실행 파일을 메모리에 적재하는 두가지 방법
하나의 프로그램을 동시에 여러번 실행하는 경우를 가정해보면 실행을 시킬때마다 새 프로세스가 만들어지므로 프로그램은 하나지만 연관된 프로세스는 여러개가 될수있다. 이런 경우 앞장에서 본 사진처럼 프로세스 이미지가 메모리에 여거 개 생긴다고 보면 된다. 이 경우 프로세스의 이미지 마다 텍스트 부분의 내용은 동일하지만 데이터, 스택, 힙부분은 모드 프로세스마다 내용이 다를 것
프로세스는 실행을하면서 state가 변하게 된다.
멀티프로그래밍 하의 프로세스는 다음과 같은 상태중 하나를 가지게 된다
new: 프로세스가 만들어지고 있는 상태. 아직 정식 프로세스는 아닌 상태
ready: 프로세서(cpu)에 할당되기를 기다리는 상태, 프로세스에게 cpu가 주어지면 즉시 실행할 수 있는 상태, 실행을 위해 cpu를 기다리고 있는 상태