1. 프로세스
프로세스는 실행중인 프로그램입니다. 하드디스크나 SSD에 저장된 프로그램이 실행을 위해 메모리에 적제되었을 때를 말합니다.
프로그램은 실행파일이 메모리에 적제 되었을때 프로세스가 됩니다.
- text : text section은 프로그램 값으로 부터 표현되는 현재 활동을 포함하고, 다음으로 실행할 명령어를 가리키고 있는 주소값을 담은 프로그램 카운터와 프로세스의 레지스터에 대한 내용을 포함합니다.
- stack : stack은 함수의 파라미터값, 리턴 주소값, 지역 변수 등을 포함합니다.
- data: data section은 전역 변수를 포함합니다.
- heap: heap은 동적으로 할당된 값을 포함합니다.
2. 프로세스 상태
프로세스를 실행하면서 프로세스의 상태는 바뀌게 되는데 현재 진행 중인 활동에 의해 프로세스는 다음 5가지 상태중 한 상태가 됩니다.
- New: 프로세스가 생성 되었을때
- Running: 명령어들이 실행될 때
- Waiting: 일부 이벤트가 발생하길 기다릴 때
- Ready: 프로세스가 프로세서에 할당되길 기다릴 때
- Terminated: 프로세스가 종료 되었을 때
3. 프로세스 제어 블록(PCB: Process Control Block)
PCB는 프로세스와 관련된 다양한 정보를 저장하고 있습니다.
- 프로세스의 상태 : 프로세스의 상태는 new, ready, running, waiting, halted 등등으로 나타납니다.
- 프로그램 카운터 : 프로그램 카운터는 다음에 실행될 명령어를 저장하고 있는 주소를 가리킵니다.
- CPU 레지스터 : 누산기, 인덱스 레지스터, 스택포인터, 레지스터 등을 포함합니다. 프로그램카운터와 함께 이 상태정보는 인터럽트가 발생할때 저장되어 나중에 프로세스가 계속 실행할 수 있도록 해야 합니다.
- CPU 스케쥴링 정보 : 프로세스가 실행될 수 있는 우선순위를 저장합니다.
- 메모리 관리 정보 : 페이지테이블을 저장합니다, 세그먼트 테이블0
- 계정 정보: 계정정보는CPU의 실행시간, 시간 제한, 계정 ID, 프로세스의 숫자를 포함합니다.
- 입출력 상태 정보: 프로세스에 할당된 입출력 장치의 리스트를 포함합니다.