프로세스란 실행중인 프로그램의 인스턴스이다.
프로그램 그 자체는 프로세스가 아니다.
프로그램은 실행 파일이며, 이 실행 파일이 메모리에 적재될 때 프로그램은 프로세스가 된다.
예를 들어, 실행 파일을 나타내는 아이콘을 더블 클릭하여 실행되면 프로그램은 프로세스가 된다.
프로세스의 구조
그림 출처: http://boanin.tistory.com/75
stack: 함수의 매개변수, 복귀 주소, 로컬 변수와 같은 임시 자료를 가진다.
heap: 프로세스 실행 중에 동적으로 할당되는 메모리이다.
data: 전역변수를 가진다.
text: 프로그램 코드를 가진다.
프로세스는 실행되면서 그 상태가 변한다.
프로세스 상태도
그림 출처: https://m.blog.naver.com/PostView.nhn?blogId=4717010&logNo=60207137085&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F
new: 프로세스가 생성되었지만 아직 OS에 의해 승인받지 못한 상태이다.
ready: 프로세스가 프로세서에 할당되기를 기다린다.
running: 명령어들이 실행되고 있다.
waiting: 프로세스가 입출력 완료나 신호의 수신 같은 이벤트가 일어나기를 기다린다.
terminated: 프로세스의 실행이 종료되었다.
프로세스는 OS에서 PCB(Process Control Block)에 의해 표현된다.
PCB는 프로세스마다 달라지는 모든 정보를 저장하는 저장소의 역할을 한다.
PCB 구조
그림 출처: http://gatsbyv.tistory.com/206
프로세스 상태: 앞서 말한 프로세스의 5가지 상태이다.
프로그램 카운터: 프로세스가 다음에 실행할 명령어의 주소를 가진다.
레지스터: 인덱스 레지스터, 스택 레지스터 등의 레지스터들과 상태 코드 정보를 가진다.
상태 코드 정보는 프로세스가 올바르게 실행되도록 인터럽트 발생 시에 저장된다.
CPU 스케줄링 정보: 프로세스 우선순위와 스케줄 큐에 대한 포인터와 매개변수를 가진다.
메모리 관리 정보: base 레지스터와 limit 레지스터 값, 페이지 테이블, 세그먼트 테이블 대한 정보를 가진다.
회계 정보: CPU 사용 시간과 경과되 실제 시간, 시간 제한 정보를 가진다.
입출력 상태 정보: 프로세스에게 할당된 입출력 장치들과 열린 파일의 목록 등을 가진다.
참고도서: Operating System Concepts 9th
'Development knowledge' 카테고리의 다른 글
라이브러리, 프레임워크, 아키텍처, 플랫폼이란 (0) | 2018.11.29 |
---|---|
컨텍스트 스위칭 (Context Switching) (0) | 2018.11.24 |
컴퓨터 시스템의 구성요소 및 운영체제(OS)란 (0) | 2018.11.24 |
함수 호출방식 (call-by-value, call-by-reference) (0) | 2018.11.21 |
메모리 구조 (Code, Data, Stack, Heap) (0) | 2018.11.21 |