섹션 & 세그먼트
프로세스 디스크립터
프로세스에 대한 정보
컨텍스트 스위칭
리눅스는 프로세스 단위가 아니라 Task(Thread) 단위로 관리한다.
그렇다면 프로세스 테이블 관점에서 fork()와 쓰레드 생성은 같은가?
task_struct가 할당된다는 점, 독립적인 스케쥴링의 대상이 된다는 점에서는 같다.
프로세스 디스크립터
리눅스 커널이 프로세스를 관리하기 위한 구조체이다.
PID, CPU 레지스터 정보(thread — context on XV6 kernel), 프로세스 상태 등이 저장된다.
컨텍스트
프로세스 실행 상태를 말한다.
프로세스의 실행 주체는 CPU이며, CPU는 실행 상태를 레지스터에 담기 때문에,
결과적으로 컨텍스트란 레지스터들의 상태이다.
이걸 메모리에 저장함으로써 프로세스(혹은 작업) 간 전환이 가능하다. (멀티 프로세싱)
컨텍스트 스위칭
CR3
Page Directory Base Pointer, PA가 지정됨
컨텍스트 스위칭 시 해당 Task에 맞는 페이지 디렉터리를 지정해줌