[06] UNIX Process Model
Process Creation in UNIX
-- 한 프로세스는 본 프로세스를 위한 다른 프로세스를 만들 수 있음
-- 기존의 프로세스는 'parent' 부모 프로세스라고 부름
-- 새로 생긴 프로세스는 'child' 자식 프로세스라고 부름
-- 자식은 부모의 복제본
-- 부모는 자녀가 완료될 때까지 기다리거나 자녀와 동시에 실행을 계속할 수 있음
-- fork() 라는 system call 을 사용하여 자녀 프로세스 만듦
-- fork() 를 통해 생성된 자식 프로세스는 0값을 return
-- 부모 프로세스는 새로 생긴 프로세스의 PId return
-- 자식 프로세스를 또 fork() 해서 또 다른 자식 프로세스 생성 가능
-- 자식 프로세스는 종종 exec() 을 사용하여 다른 프로그램 시작 ( 완전 다른 프로그램 )
Context Switching
-- context switching : 한 프로세스를 멈추고 다른 프로세스를 실행하는것
-- OS 가 프로세스를 멈추면 PCB( Process Control Block ) 에 해당 프로세스의 하드웨어 레지스터, PC, SP 등등의 상태 정볼르 저장
-- CPU가 기다리던 프로세스를 실행할 수 있을 때 PCB의 정보를 가져와 프로세스 상태를 복구
--context switching 은 비교적 비싼 산술연산
Scheduler
-- Long-term Scheduler
: 대기 중인 job 중에 선택해서 메모리에 부름
: 프로세스가 시스템을 떠날 때만 실행
: 현대에는 사용하지 않음
-- medium-term scheduler
: 시분한 시스템에서 long-term scheduler 가 수행하던 작업 중 일부 수행
: 일시적으로 process를 메모리 밖으로 swap
-- short-term scheduler
: 자주 실행되며 일초에 100 번 실행
: 실행되는 경우
: 1. 프로세스가 생기거나 없어질 때
: 2. 프로세스가 running -> blocked 로 상태 변화가 일어날 때
: 3. 인터럽트 걸릴 때
: Goal : 응답 시간을 최소화하고, 평균 반응 시간의 분산 최소화하며 성능을 최대치로 끌어올리는 것, CPU 를 공평한 방식으로 공유하는 것이 목표