※ 이 글 부터는 에디팅 양식이 변화합니다. 양해 부탁드립니다.
@ 앞에서 Process State에 어떤 Context가 존재하는 지 배웠던 것을 기억하시나요?
// Memory, H/W, System
// 우리는 이들 중 System Context를 제일 먼저 고려해야 합니다.
> OS는 정부고 우리가 Process라고 생각하면,
.. Data Structure : 주민등록증, 자원(부동산, 자동차 등)
// OS도 각 Process의 정보들을 유지합니다. (Time-Sharing OS)
> 그리고 이 정보들을 Process Control Block(PCB)이라고 얘기합니다.
.. Process ID
.. Process Scheduling(자원 할당에 유용한 정보)
@ Time-Sharing OS의 경우는 여러 Process가 존재하고, PCB또한 여러개 존재할 것입니다.
// 이들을 어떻게 관리하는 것일까요?
> Array로 만들게 됩니다.
.. 이를 Process Table이라고 부릅니다.
@ 우리가 많이 쓰는 linux는 UNIX에서 파생되었습니다.
// 그 UNIX는 이 PCB를 Array로 구성했습니다.
> 이렇게 한 이유는 다음과 같을 것이라 생각할 수 있습니다.
.. Easy to Manipulate
.. simple to Implement
// 이런 구조는 한계가 있습니다.
@ 이 때, shell programming, OS에게 명령을 제공하는 스크립트 프로그램에서
// 무한루프를 만들고, 프로세스를 생성하는 프로그램을 끼워두었다고 가정합시다.
> 이렇게 되면 빠르게 process table이 차게 됩니다.
.. array 방식을 사용하게 되면 OS가 제공하는 Process의 개수에 제한됩니다.
@ 극복법은 Linked List와 같은 것을 쓰면 될 것 입니다.
@ 따라서 기억할 것은 Process를 구현하기 위해 제일 필요한 자료구조는 다음과 같습니다.
// PCB
// Process table