📌 프로세스 계층구조
Windows 운영체제에서는 프로세스가 계층 구조를 가지지 않지만,
다른 수 많은 운영체제는 프로세스가 계층 구조를 가지기 때문에 알아둬야 할 필요가 있다.
⚠️ 아래 내용은 Winsdows 운영체제는 해당 하지 않음
✅ 운영체제에서 부모-자식 관계를 기반으로 트리( Tree ) 구조를 형성하는 방식이다.
- 모든 프로세스는 부모 프로세스에 의해 생성되고, 새로 생성된 프로세스는 자식 프로세스가 된다.
- 최상위 부모는 init( 또는 systemd ) 프로세스( PID 1 )
- 계층 구조는 ps 명령어나 pstree 명령어를 사용해 확인이 가능하다.
- 부모 프로세스와 자식 프로세스는 엄연히 다른 프로세스라서 각기 다른 PID를 가진다. ( 일부 운영체제에서는 자식 프로세스의 PCB에 부모 프로세스의 PID인 PPID( Parent PID )가 기록되기도 한다.
📌 프로세스 생성 기법
부모 프로세스가 자식 프로세스를 어떻게 만들어 내고, 자식 프로세스는 어떻게 자신만의 코드를 실행하는지 알아보자
부모 프로세스를 통해 생성된 자식 프로세스들은 복제와 옷 갈아입기를 통해 실행된다.
📝 1. fork()를 이용한 계층 구조 유지( 복제 )
fork()는 현재 실행 중인 프로세스를 복제하여 새로운 자식 프로세를 생성한다.
- 부모 프로세스가 fork()를 호출하면, 자식 프로세스가 생성되며 부모-자식 관계가 유지된다.
- 자식 프로세스는 부모의 메모리 공간을 복사하지만, 독립적으로 실행된다.
- 자식 프로세스는 새로운 PID를 가지고, 부모의 PID를 PPID로 가진다.
📝 2. exec()을 이용한 새로운 프로그램 실행( 옷 갈아 입기 )
exec()는 새로운 프로그램을 실행하며, 기존 프로세스의 주소 공간을 새로운 프로그램으로 교체한다.
- fork() 후 exec()을 호출하면 새로운 프로세스를 생성하면서 새로운 프로그램으로 실행이 가능하다.
- 자식 프로세스는 기존 부모 프로세스와 계층 구조를 유지하지만, 실행 코드가 변경된다.
'CS > 혼공컴운' 카테고리의 다른 글
[CS] CPU 스케줄링 (0) | 2025.02.11 |
---|---|
[CS] 스레드 (0) | 2025.02.11 |
[CS] 프로세스 상태 (0) | 2025.02.11 |
[CS] 프로세스의 메모리 영역 (0) | 2025.02.10 |
[CS] 문맥 교환 (0) | 2025.02.10 |