p.136 ~ 161
자식 프로세스를 만드는데 필요한 오버헤드(overhead)가 두가지가 있다.
이미지를 복사하는데 드는 오버헤드, PCB를 복사하는데 드는 오버헤드 두가지가 있다.
리눅스의 PCB는 task_struct 구조체 이다. 이 PCB의 크기는 수 KB로 작지 않은 크기이다.
task_struct는 6개로 나뉘어져 있는데, 각각의 리소스별로 task_struct가 포인터로 저장해서 사용한다.
그 이유는 부모 프로세스가 자식 프로세스를 만드는데, PCB 전체를 복사하기에는 크기가 크기 때문에, 부모와 자식이 똑같이 쓰는 자원들은 복사하지 않고 포인터로 지정해서 복사하는 크기를 줄인것이다.
프로세스는 PCB 전체를 복사하고,
쓰레드는 Task basic info 만 복사하고, 포인터로 연결되어 있는 5개의 자원들은 원하는 것만 복사하고, 포인터로 연결한다.
LWP(Light-weight Process) 경량 프로세스라고 부른다.
리눅스에서는 Thread = LWP 로 통용되지만, 다른 OS에서는 LWP는 프로세스, 쓰레드는 쓰레드로 보기도한다.
LWP를 만들어주는 시스템콜은 clone()이다.