프로세스란?
프로세스란?
프로세스는 컴퓨터에서 실행 중인 프로그램을 나타내는 용어이다.
각 프로세스는 메모리에 할당된 자원과 코드, 데이터, 스택, 힙 등의 구성요소를 포함하며, 독립된 실행 환경을 갖는다.
프로세스 메모리 구조
프로세스 구조는 코드, 데이터, 스택, 힙 영역으로 크게 나눌 수 있다.
1. 코드 영역(Text)
프로그램의 실행 코드가 저장되는 영역이다.
읽기 전용이며, 프로그램이 실행될 때 메모리에 로드되어 CPU가 해당 명령어를 실행한다.
프로그램의 명령어와 함수들이 여기에 저장된다.
2. 데이터 영역
전역 변수, 정적변수가 저장되는 영역이다.
초기값을 가지는 전역 변수와 정적 변수가 여기에 저장되며, 프로그램 시작 시 생성되고 종료 시 소멸된다.
3. 스택 영역
함수 호출과 관련된 지역 변수 및 함수 호출 정보를 저장하는 영역이다.
후입선출(LIFO) 구조를 가지며, 함수가 호출될 때마다 새로운 프레임이 스택에 추가되고, 함수가 종료될 때 해당 프레임이 제거된다.
4. 힙 영역
동적으로 할당된 메모리를 저장하는 영역이다.
프로그램 실행 중에 개발자가 직접 메모리를 할당하고 해제할 수 있다.
Process Control Block (PCB)
운영체제가 각 프로세스를 관리하기 위해 사용하는 자료구조이다.
PCB에는 프로세스에 대한 다양한 정보와 상태가 저장되어 있어, 운영 체제는 이 정보를 활용하여 프로세스를 효과적으로 관리한다.
PCB는 각 프로세스에 대해 하나씩 생성되며, 프로세스의 상태 변화 및 스케줄링에 필요한 정보를 유지한다.
PCB에는 다음과 같은 정보가 포함된다.
1. 프로세스 상태 (Process state)
프로세스가 현재 어떤 상태에 있는지를 나타낸다.
예를 들어, 실행 중인지, 대기 중인지, 준비 중인지 등의 상태가 포함된다.
2. 프로세스 식별자 (Process ID)
프로세스를 고유하게 식별하는 번호이다.
여러 프로세스가 동시에 실행될 때 각각의 프로세스를 식별하는 데 사용된다.
3. 프로그램 카운터 (Program counter)
현재 실행 중인 명령어의 주소를 나타낸다.
프로세스를 중단하고 나중에 재개할 때 사용된다.
4. 레지스터 상태 (Register State)
프로세스의 레지스터에 저장된 값들을 포함한다.
프로세스가 중단되었다가 재개될 때 레지스터의 내용을 복원하는 데 사용된다.
5. 메모리 관리 정보 (Memory Management Information)
프로세스가 사용하는 메모리에 대한 정보, 예를 들면 베이스 레지스터, 한계 레지스터 등이 여기에 속한다.
6. 프로세스 계정 정보 (Accounting Information)
CPU 시간, 사용된 자원 등과 같은 프로세스의 실행에 대한 통계 정보를 포함한다.
7. 입출력 상태 정보(I/O Status Information)
프로세스가 입출력 작업을 수행 중인 경우 해당 정보를 포함한다.
8. 우선순위 (Priority)
프로세스의 실행 우선순위를 나타낸다.
우선순위는 스케줄링 알고리즘에 의해 사용되어 어떤 프로세스를 다음에 실행할지 결정되는 데 영향을 미친다.
PCB는 프로세스가 생성되면 생성, 종료되면 파괴된다.
PCB의 존재는 운영체제가 여러 프로세스를 효과적으로 관리하고 스케줄링 결정을 내리는 데 중요한 역할을 한다.
참고
- https://velog.io/@curiosity806/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%9E%80
프로세스란?
리눅스의 `ps -ef`이라는 명령어는 현재 실행 중인 프로세스의 목록과 상태를 보여준다. 이 명령어를 통해서 지금 컴퓨터가 CPU자원을 어디에 쓰고 있는지 확인할 수 있다. 그렇다면 이 프로세스라
velog.io