프로세스(Process)란?
process는 실행 중인 프로그램을 의미합니다.
프로세스를 눈으로 확인해 볼까요?
윈도우의 경우 작업관리자를 확인하면 현재 실행 중인 프로그램, 즉 프로세스들을 확인할 수 있습니다.
프로그램과 프로세스
그럼 프로그램과 프로세스의 차이점은 무엇일까요?
아래와 같이 구분할 수 있습니다.
프로그램 : 동작을 하지 않는 정적 개체
프로세스 : 동작을 하는 능동적인 개체
다시 작업 관리자 창을 확인해 보겠습니다.
저의 경우 메모장이 실행 중인데요.
해당 프로세스를 클릭하면 아래처럼 Notepad.exe라는 실행파일을 확인할 수 있습니다.
우리는 저 실행 파일을 더블 클릭해 프로그램을 실행하게 됩니다.
프로그램이 프로세스로 동작하기 위해서는 운영체제로부터 필요한 자원을 할당받아야 합니다.
여기서 자원이란 CPU, 메모리, 입출력장치 등을 의미하고 동작은 CPU 가 프로세스의 명령을 실행하는 것을 말합니다.
프로그램이 실행되며 프로세스화 되고 메모리공간, CPU 등을 할당받아 동작하게 됩니다.
프로세스의 구성
프로세스는 어떤 구조로 구성되어 있을까요?
그게 메모리구조와 프로세스 제어블록으로 나뉘게 됩니다.
메모리구조
프로그램 실행에 직접으로 필요한 코드와 데이터들이 머무르는데요.
메모리구조는 크게 코드 영역과 데이터 영역으로 나뉩니다.
코드영역
코드, 즉 프로그램 자체가 머무르는 영역입니다.
저장장치에 있던 실행 프로그램이 기계어로 번역되어 코드 영역으로 올라왔다고 생각하시면 됩니다.
데이터 영역
프로그램 실행에 필요한 데이터가 저장되는 영역입니다.
상수나 변수의 값 또는 서브프로그램 호출 상태 등이 저장됩니다.
데이터영역은 다시 정적 데이터 영역, 스택영역, 힙 영역으로 구분이 가능합니다.
프로세스 제어 블록 (Process Control Block, PCB)
위의 데이터 영역만으로는 프로세스를 관리할 수 없습니다.
해서 프로세스 제어 블록이 존재하는데요.
운영체제가 프로세스를 관리하기 위해 필요한 정보를 가지고 있습니다.
대표적으로 아래의 정보를 가지고 있습니다.
- 프로세스번호(PID)
- 프로세스상태
- 프로그램 카운터(PC)
- 레지스터
- 메모리관리정보
- 우선순위
각각의 요소가 어떤 역할을 하는지 알아보겠습니다.
Process ID, PID
빨간 화살표로 실행 중인 메모장의 프로세스를 확인할 수 있습니다.
Notepad.exe라는 프로세스가 실행되어 있습니다.
또 PID라는 항목이 존재하는 것을 확인하실 수 있는데요. 바로 프로세스 아이디입니다.
프로세스 아이디는 왜 필요할까요?
Notepad.exe라는 프로세스는 저장장치에 있을 때는 Notepad.exe 라는 파일의 이름으로 존재했습니다.
프로세스 구분자를 파일 명으로 사용한다면 어떤 문제가 발생할까요?
해당 파일을 여러 번 실행한다면 같은 이름의 프로세스가 만들어질 수 있습니다.
해서 프로세스는 고유한 아이디인 PID를 가지고 있고 이 PID를 이용하여 프로세스를 관리합니다.
프로세스 상태
프로세스의 상태를 관리합니다.
프로세스는 생성, 준비, 실행, 대기, 종료의 다섯 상태 중 하나로 존재합니다.
또 상태가 변화하며 동작하죠.
자세한 내용은 프로세스의 상태 관리에서 설명하도록 하겠습니다.
프로그램 카운터(PC)
CPU가 사용하는 레지스터 중의 한 값은 현재 실행명령어의 바로 다음 명령어의 위치값을 가지고 있습니다.
레지스터
먼저 레지스터란 무엇인지 알아보겠습니다.
정확한 정의를 살펴보면 프로세서에 위치한 고속 메모리로 극히 소량의 데이터나 처리 중인 중간 결과와도 같은 프로세서가 바로 사용할 수 있는 데이터를 담고 있는 영역을 레지스터라 한답니다.
간단히 말해서 Register는 CPU내에 있는 메모리 장치로 CPU 가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 기억장치입니다.
프로세스가 작업을 하던 중 작업 완료 전에 잠시 CPU를 다른 프로세스에게 넘겨줘야 하는 경우가 있습니다.
해당 경우에 현재 상태의 레지스터 값들을 PCB에 저장해 둡니다.
프로세스가 다시 CPU를 받아오면 해당 값을 다시 레지스터에 복원하여 중단된 시점부터 다시 프로세스를 이어가게 됩니다.
저는 지금 음악을 들으며 블로그 글을 작성하고 있습니다.
또 피씨카톡을 통해 채팅을 하기도 하죠.
컴퓨터가 이렇게 많은 일을 동시에 하기 위해서는 프로세스의 교체수행이 필요합니다.
이처럼 여러 프로세스가 번갈아가며 실행되는 경우 PCB에 저장된 레지스터 정보가 필요한 것이죠.
메모리 관리정보
가상메모리 매핑 정보 등을 가지고 있습니다.
우선순위
스케줄링을 위한 우선순위를 가지고 있습니다.
이렇게 오늘은 프로세스의 기본 요소들에 대하여 알아봤습니다.
다음 포스팅에서는 운영체제가 프로세스를 어떻게 관리하는지 알아보고 스레드의 개념에 대해서도 알아보겠습니다.
'Computer Science > OS' 카테고리의 다른 글
[OS] 병행프로세스 (0) | 2023.04.17 |
---|---|
[OS] 프로세스 스케줄링 알고리즘 (0) | 2023.03.15 |
[OS] 프로세스 스케줄링 (0) | 2023.03.13 |
[OS] 프로세스 관리와 쓰레드 (0) | 2023.03.05 |
[OS] 운영체제 개요 (0) | 2023.02.26 |