처리기에 할당되어 수행될 수 있는 개체로서, 디스크의 객체를 메모리로 로딩하여 프로그램이 생명력을 얻으면 프로세스가 됨.
프로세스마다 PCB 구조체를 가짐
문맥(Context)
문맥 교환
xv6에서 proc.h 파일에서 프로세스 구조체를 찾을 수 있음
struct proc {
uint sz; // Size of process memory (bytes)
pde_t* pgdir; // Page table
char *kstack; // Bottom of kernel stack for this process
enum procstate state; // Process state
int pid; // Process ID
struct proc *parent; // Parent process
struct trapframe *tf; // Trap frame for current syscall
struct context *context; // swtch() here to run process
void *chan; // If non-zero, sleeping on chan
int killed; // If non-zero, have been killed
struct file *ofile[NOFILE]; // Open files
struct inode *cwd; // Current directory
};
프로세스가 인터럽트되는 경우 : I/O 인터럽트, Time 퀀텀
보류 상태(swap-out 상태)