| 상태 | 설명 |
|---|---|
| 새로운(New) | 프로세스가 생성되었지만, 아직 실행되기 전의 상태. |
| 실행(Running) | CPU를 할당받아 명령어를 실행하고 있는 상태. |
| 대기(Waiting) | 프로세스가 어떤 이벤트(입출력 완료, 시그널 수신 등)를 기다리며 실행을 일시 중단한 상태. |
| 준비완료(Ready) | 실행을 위해 CPU를 할당받기를 기다리는 상태. |
| 종료(Terminated) | 프로세스의 실행이 완료되거나 강제로 종료된 상태. 자원과 메모리가 해제되고 OS에 의해 정리. |
| 정보 | 설명 |
|---|---|
| 프로세스 식별자(PID) | 각 프로세스를 고유하게 식별하는 식별자. |
| 프로세스 상태(Process State) | 프로세스의 현재 상태.(Ready, Running, Waiting 등) |
| 프로그램 카운터(Program Counter,PC) | 다음에 실행될 명령어의 주소를 가리킴. 프로세스가 중단되었다가 다시 실행될 때 이 주소로 돌아감. |
| 레지스터 정보 | 프로세스의 레지스터 상태. 실행 중인 프로세스의 레지스터 값(범용 레지스터, 스택 포인터, 상태 레지스터 등)을 저장. |
| 프로세스 우선순위(Priority) | 프로세스에 할당된 우선순위. 우선순위 스케줄링 알고리즘에서 사용됨. |
| 자원 할당 정보 | 프로세스가 사용하는 자원에 대한 정보. 할당된 메모리 공간, 열린 파일, 입출력 장치 등. |
| 계정 및 스케줄링 정보 | 프로세스의 계정 정보(사용자ID, 그룹ID 등)와 스케줄링 관련 정보(실행 시간, 대기 시간 등). |
#include <sys/type.h>
#include <stdio.h>
#include <unistd.h>
int main(){
pid_t pid;
pid = fork();
if(pid < 0){
fprintf(stderr, "Fork Failed");
return 1;
}else if (pid == 0){
execlp("/bin/ls","ls",NULL);
}else{
wait(NULL);
printf("Child Complete");
}
return 0;
}