커널이 프로세스 관리를 하기 위해서는 관리를 하기 위한 정보가 필요한데, 이를 메타 데이터라고 한다.
프로세스 관리를 위한 메타 데이터를 가지고 있는 곳을 프로세스 컨트롤 블락(Process Control Block, PCB)
라고 한다.
프로세스의 일련번호(process id, pid)
user id (프로세스를 누가 만들었는지)
-> 이 user id를 가지고 file open 등을 할 때 파일을 열 자격이 있는 사람인지를 확인할 수 있다.
binary program file info
scheduling priority
-> priority가 높은 프로세스가 CPU를 더 빨리 얻을 수 있다.
state (running, blocked, ready)
끝나기를 기다리는 event가 무엇인지(I/O, 메세지..)
open file table
-> 프로세스가 어떤 파일을 open해서 access하고 있는지 (0번은 키보드, 1번은 콘솔, 2번은 출력 모니터이기 때문에 사용자가 open하는 파일은 3번부터 할당된다.
resource allocated
-> 할당받은 자원은 사용 후 반드시 반납을 해줘야한다.
working directory
memory management info (프로세스의 주소 공간인 텍스트, 데이터, 힙 스택이 메모리 어디에 있는지)
machine context
pending signals(발생했지만 아직 처리되지 않은 시그널), signal handlers(리눅스에서 어떤 단축키를 누르면 어떤 시그널이 발생하는지를 바꿔줄 수 있는 핸들러)