-
프로세스(Process)란 무엇인가CS지식/운영체제 2021. 5. 28. 22:48
프로세스가 무엇인지 찾아보면 흔히 실행 중인 프로그램이라고 말한다.
이렇게 개념을 기억하고 넘어가기에는 부족하고 프로세스가 정확히 무엇인지 알고싶었다.
프로세스라는 단어가 나오게 된 배경은 모든 CPU 활동들을 어떻게 부를지에 대한 의문이 생겼고 그 해답으로 프로세스라는 말을 사용한 것이다.
우리가 사용하는 PC에서는 브라우저, 카카오톡, 워드 프로세서 등 여러 프로그램을 한 번에 실행할 수 있다.
이러한 상황 외에 다중 태스킹을 지원하지 않는 임베디드 장치에서도 내부 프로그램을 지원하며 동작한다.
여기서 CPU가 하는 모든 활동들을 프로세스라고 부르는 것이다
프로세스는 자신이 어떠한 활동을 하는지 현재 상태를 나타내기 위해 프로그램 카운터와 프로세서 레지스터를 사용한다.
프로그램 카운터는 다음에 실행될 명령어의 주소를 가지고 있어 실행할 기계어 코드의 위치를 지정하는 역할을 하고
프로세서 레지스터는 컴퓨터의 프로세서(CPU) 내에서 자료를 보관하는 아주 빠른 기억 장소로 일반적으로 현재 계산을 수행중인 값을 저장하는 데 사용된다.
하나의 프로세스가 메모리에 위치할 때에는 다음과 같은 영역으로 구분되어 있다.
텍스트 영역에는 실행 코드가 있고 데이터 영역은 전역변수 또는 static 변수 등이 저장된 공간이고
힙 영역은 프로그램 실행 중에 동적으로 할당되는 공간이고 스택 영역은 함수를 호출할 때 임시 데이터 저장장소이다.
텍스트 영역과 데이터 영역은 크기가 고정되어 있지만 힙 영역과 스택 영역은 크기가 동적으로 변경이 된다.
우리가 집고 넘어가야 할 것은 프로그램과 프로세스의 개념적인 차이이다.
프로그램은 단순히 디스크에 저장된 명령어(코드)를 내용으로 가진 파일, 즉 실행파일을 의미하며 수동적인 존재이다.
하지만, 프로세스는 다음에 실행할 명령어를 지정하는 프로그램 카운터와 같은 자원을 가지고 활동하는 능동적인 존재이다.
프로세스는 실행되면서 상태가 변하게 되고 다음 상태 중 하나에 있게 된다.
-new: 프로세스가 생성 중인 상태
- running: 프로세스의 명령어들이 실행 중인 상태
- waiting: 프로세스가 어떠한 이벤트를 기다리는 상태
- ready: 프로세스가 cpu에 할당되기를 기다리는 상태
- treminated: 프로세스의 실행이 종료된 상태
'CS지식 > 운영체제' 카테고리의 다른 글
CPU 스케줄러란 무엇인가 (0) 2021.06.03 스레드란 무엇인가(공룡책에서 귀여운 곰책으로 변경) (0) 2021.05.31 시스템 콜(System Call)이란 무엇인가 (0) 2021.05.25 인터럽트(Interrupts)란 무엇인가(공룡책 공부 시작!!) (0) 2021.05.22 15일차 - Disk Management and Scheduling (0) 2021.05.18