2-2. Process Scheduling

개발 99·2025년 5월 3일

OS 면접대비용

목록 보기
1/2
post-thumbnail

1. Context Switch

  • Context란?
    CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보들로 PCB를 의미한다.

  • Context Switching?
    현재 실행 중인 프로세스나 스레드를 중단하고 다른 프로세스나 스레드로 전환하는 과정.
    이때, 이전 프로세스나 스레드의 PCB, TCB 같은 Context(상태)를 저장하고, 새로운 프로세스나 스레드의 상태를 복원한다.

컨텍스트 스위칭은 캐시 오염이라는 간접적인 영향이 발생한다.
따라서

  • 장점
    멀티 태스킹 즉, Concurrent하게 실행이 가능하다.
    또한 CPU 스케줄링을 통해서 우선순위가 높은 작업을 처리할 수 있다.

  • 단점
    CPU가 실제로 작업을 처리하는 것보다, 상태 저장 및 복원에 더 많은 시간을 소모한다.
    캐시의 효율이 저하된다.(캐시 미스 발생)

2. fork

가상 메모리는 분리되어 있으나(다른 프로세스), 서로 동일한 물리 메모리(frame)을 참조하고 있다.
fork를 해도 제어권은 여전히 parent가 가지고 있다.

  • execlp

현재 프로세스의 메모리 공간이 완전히 새로운 프로그램으로 대체됩니다.

이때 기존의 가상 주소 공간은 새로운 프로그램의 가상 주소 공간으로 덮어씌워지며, 이전에 사용되던 물리 메모리도 해제되고, 새로운 프로그램이 필요로 하는 메모리가 다시 할당됩니다.

Ex)
게임 laucher가 child로 복제한 다음, execlp를 통해서 하고자 하는 게임을 실행한다.

synchronized가 필요하다.

  • cow

두 프로세스는 동일한 페이지를 참조하고 있다가 하나의 프로세스가 해당 페이지를 수정하려 할 때, 그 페이지가 복사되고 부모와 자식이 각자 독립적인 메모리를 사용하게 됩니다.

Zombie and Orphan

  • Zombie
    자식 프로세스가 종료되었지만, 부모 프로세스가 wait() 또는 waitpid()로 자식의 종료 상태를 수거하지 않았을 때 발생합니다.

PID는 여전히 프로세스 테이블에 남아 있음 (exit code 등 상태 정보만).

부모가 자식 종료 후 상태를 수거하지 않으면, OS는 그 상태 정보를 유지해야 함 → 그래서 프로세스 테이블에 남아 있음.

🛠 해결:
부모가 wait()를 호출해야 함.

또는 SIGCHLD 시그널 핸들링을 통해 자동 수거 설정.

  • Orphan
    : 부모 프로세스가 먼저 종료되어 자식 프로세스가 부모를 잃은 상태.
    이 경우 자식 프로세스는 init 프로세스 (pid 1)가 자동으로 입양해서 관리합니다.

리눅스에서는 systemd나 init이 orphan을 관리하며, 종료 시 상태도 수거해줍니다.

🧠 특징:
Orphan은 위험하지 않음. OS가 처리함.

Zombie는 잘못 관리된 자식이고, Orphan은 부모가 먼저 죽은 정상 자식.

profile
구구구구구!

0개의 댓글