프로세스 생성(Creation)
- 프로세스는 create-process 시스템 호출을 사용하여 new 프로세스를 생성
> 부모 프로세스 - 자식 프로세스
- 생성된 프로세스들의 계속적인 프로세스 생성의 결과로 프로세스 트리(process tree)를 형성함
- 프로세스들은 프로세스 식별자(process identifier, PID)로 구분
부모프로세스와 자식프로세스 간의 여러 가지 자원 공유 방법
- 자식 프로세스가 OS에서 자원을 직접 얻음
> 부모와 자식 프로세스간에 자원을 공유하지 않음
- 자식 프로세스가 부모 프로세스 자원의 부분집합을 사용
> 자식 프로세스는 부모 프로세스의 모든 자원 또는 일부 자원 공유
> 부모 프로세스는 자식 프로세스들에게 자신의 자원을 분할 제공
전형적인 Linux 시스템의 프로세스 트리
프로세스 생성
실행 (Execution)
- 부모와 자식이 병행(concurrent)수행, or
- 부모가 모든 또는 일부 자식이 긑나기를 기다림(wait)
주소 공간 (Address space)
- 자식은 부모의 복사본(duplicate) or
- 자식은 새로 적재되는 프로그램을 가짐
UNIX
- fork() : new process 생성 (부모 프로세스의 주소공간의 복제본으로 구성됨)
- exec() : 프로세스 메모리 공간을 새 프로그램으로 대치하여 새로운 프로그램을 실행
Win32API
- CreateProcess() : 프로그램을 적재하여 자식프로세스를 생성하여 실행, 인수가 복잡함
UNIX에서의 프로세스 생성
프로세스를 생성하는 C 프로그램 (UNIX)
UNIX에서의 fork/exec/wait 동작
Windows에서의 프로세스 생성
프로세스 종료
프로세스의 정상 종료
- 프로세스가 마지막 문장의 실행이 끝나면 exit()시스템 호출을 하여 운영체제에게 자신을 삭제 요청 함
- 자식 프로세스는 부모에게 상태 값(대개 정수)을 반환할 수 있다.
> 부모는 Wait() 시스템 호출을 하여 이 값을 기다림
- 운영체제는 프로세스가 사용한 자원을 반납(deallocate)함
좀비(Zombie)프로세스
- 종료되었지만 부모가 Wait()를 아직 호출하지 않아서 남아있는 프로세스(terminated/zombie 상태)
- 짧은 시간 동안 이 상태에 머무름
프로세스의 비정상 종료
다음 경우에 부모가 abort() 시스템 호출을 하여 자식을 종료할 수 있음
- 자식 프로세스가 자신에게 할당된 자원을 초과하여 사용할 때
- 자식 프로세스에게 할당된 작업이 더 이상 필요 없을 때
- 부모 프로세스가 종료하는데, 운영체제가 자식 프로세스가 계속하여 실행하는 것을 허용하지 않을 때
> 연쇄적 종료 : 부모 프로세스가 종료되면 자식 프로세스도 종료되어야 한다.
부모 프로세스 종료 후에 자식 프로세스의 계속적인 실행을 허용하는 경우
- 모든 프로세스는종료 후 처리를 위하여 부모 프로세스가 있어야 함
- 자식 프로세스는 고아(orphan)프로세스가 되며, init 프로세스를 자식 프로세스의 새로운 부모 프로세스로 지정함
3.5 IPC 시스템사례 (0) | 2020.04.24 |
---|---|
3.4 프로세스간 통신 (Interprocess Communication) (0) | 2020.04.24 |
3.2 프로세스 스케줄링 (0) | 2020.04.17 |
3.1 프로세스 개념 (0) | 2020.04.17 |
2.10 시스템 부트 (0) | 2020.04.17 |
댓글 영역