[OS] Context Switch, Process Creation, Process Termination

Ko Hyejung·2021년 10월 11일
0

Operating Systems

목록 보기
8/26

Context Switch

The state of a process such as program counter (PC), the value of the CPU registers, the process state, and memory-management information, etc. is called a context of a process.

프로그램 카운터(PC), CPU 레지스터 값, 프로세스 상태, 메모리 관리 정보 등과 같은 프로세스의 상태를 프로세스의 context라고 합니다.

When CPU switches to another process, the system must save the state of the old process in its PCB and restore the saved state of the new process scheduled to run.

  • This task is known as a context switch.

CPU가 다른 프로세스로 전환되면, 시스템은 PCB에 이전 프로세스의 상태를 저장하고 실행하도록 예약된 새 프로세스의 저장된 상태를 복원해야 합니다.

Context-switch time is pure overhead (i.e., system does no useful work while switching) and its speed varies from machine to machine.

  • A typical speed is a several microseconds.
  • Time depends on hardware support.
    Some processors provide multiple sets of registers, which only requires changing the pointer to the current register sets.
    Existence of special instructions such as a single instruction to load or store all registers.

컨텍스트 전환 시간은 순수 오버헤드(즉, 시스템이 전환하는 동안 유용한 작업을 수행하지 않음)이며 속도는 기계마다 다릅니다.

  • 일반적인 속도는 몇 마이크로초입니다.
  • 시간은 하드웨어 지원에 따라 다릅니다.
    일부 프로세서는 여러 레지스터 집합을 제공하며, 이는 다음과 같습니다.
    현재 레지스터 세트에 대한 포인터를 변경해야 합니다.
    모든 레지스터를 로드하거나 저장하는 단일 명령과 같은 특수 지침이 존재합니다.

+) https://www.tutorialspoint.com/operating_system/os_process_scheduling.htm

A context switch is the mechanism to store and restore the state or context of a CPU in Process Control block so that a process execution can be resumed from the same point at a later time.

컨텍스트 스위치는 프로세스 제어 블록에 CPU의 상태 또는 컨텍스트를 저장하고 복원하여 나중에 동일한 지점에서 프로세스 실행을 재개할 수 있도록 하는 메커니즘입니다.

Using this technique, a context switcher enables multiple processes to share a single CPU.
Context switching is an essential part of a multitasking operating system features.

이 기술을 사용하면 컨텍스트 전환기를 통해 여러 프로세스가 단일 CPU를 공유할 수 있습니다.
컨텍스트 전환은 멀티태스킹 운영 체제 기능의 필수적인 부분입니다.

When the scheduler switches the CPU from executing one process to execute another, the state from the current running process is stored into the process control block.

스케줄러가 CPU를 한 프로세스 실행에서 다른 프로세스 실행으로 전환하면 현재 실행 중인 프로세스의 상태가 프로세스 제어 블록에 저장됩니다.

After this, the state for the process to run next is loaded from its own PCB and used to set the PC, registers, etc. At that point, the second process can start executing.

그 후, 다음에 실행할 공정의 상태는 자체 PCB에서 로드되어 PC, 레지스터 등을 설정하는 데 사용됩니다. 이 때 두 번째 프로세스의 실행을 시작할 수 있습니다.

Context switches are computationally intensive since register and memory state must be saved and restored.
To avoid the amount of context switching time, some hardware systems employ two or more sets of processor registers.
When the process is switched, the following information is stored for later use.

컨텍스트 스위치는 레지스터와 메모리 상태를 저장하고 복원해야 하므로 계산 집약적입니다.
컨텍스트 전환 시간을 피하기 위해 일부 하드웨어 시스템은 두 개 이상의 프로세서 레지스터 집합을 사용합니다.
프로세스가 전환되면 나중에 사용하기 위해 다음 정보가 저장됩니다.

  • Program Counter
  • Scheduling information
  • Base and limit register value 기준 및 제한 레지스터 값
  • Currently used register 현재 사용 중인 레지스터
  • Changed State
  • I/O State information
  • Accounting information

Example of Context Switch

Operations: Proces Creation

Process tree in a Linux program


Process is identified and managed via a process identifier (pid).
프로세스는 프로세스 식별자(pid)를 통해 식별 및 관리됩니다.

Parent process creates children processes, which, in turn create other processes, forming a tree of processes.
상위 프로세스는 하위 프로세스를 생성하고, 하위 프로세스는 프로세스 트리를 형성합니다.

Process Creation Option

  1. Resource sharing option
    Parent and children share all resources.
    Children share subset of parent’s resources.
    Parent and child share no resources.

리소스 공유 옵션
상위 및 하위는 모든 리소스를 공유합니다.
자녀가 부모 자원의 부분 집합을 공유합니다.
부모 및 자식 간에 리소스를 공유하지 않습니다.

  1. Execution option
    Parent and children execute concurrently.
    Parent waits until children terminate.

실행 옵션
상위와 하위가 동시에 실행됩니다.
부모는 하위 항목이 종료될 때까지 기다립니다.

  1. Address space option
    Child is a duplicate of the parent.
    Child has a program loaded into it.

주소공간 옵션
하위 항목이 상위 항목의 복제 항목입니다.
하위 항목에 프로그램을 로드했습니다.

Process Creation in UNIX

fork(), execlp(), wait() 개념을 제대로 이해하기

UNIX examples

  • Parent process uses a fork system call to create a child process.

상위 프로세스는 fork 시스템 호출을 사용하여 하위 프로세스를 만듭니다.

  • The child process consists of a copy of the address space of the parent process.

하위 프로세스는 상위 프로세스의 주소 공간 사본으로 구성됩니다.

  • Both processes continue execution at the instruction after fork() with one difference: Returned pid values are different
    (i.e., parent : child pid (pid > 0), child : 0 (pid == 0)).
  • The exec system call is used after a fork to replace the process’ memory space with a new program.

exec system callfork 다음에 프로세스의 메모리 공간을 새 프로그램으로 바꾸기 위해 사용됩니다.

Example of a Process Creation (UNIX)

Operations: Process Termination

Process executes last statement and asks the operating system to delete it using the exit(status) system call.

  • Parent can get a status value from child (via wait(&status)).
  • Process’ resources are de-allocated by operating system.

Parent (or user) may terminate execution of children processes (or processes) via kill system call or via kill command.

부모(또는 사용자)는 kill 시스템 호출 또는 kill 명령을 통해 자식 프로세스(또는 프로세스) 실행을 종료할 수 있습니다.

  • Child has exceeded allocated resources.
  • Tasks are no longer required.
  • When parents (or processes) are terminated, some operating system does not allow child to continue if its parent terminates
    => Cascading termination.
    UNIX variants (including Linux) in general re-parent the child process to the init process.
  • 하위 항목이 할당된 리소스를 초과했습니다.
  • 작업이 더 이상 필요하지 않습니다.
  • 부모(또는 프로세스)가 종료되었을 때, 일부 운영 체제는 부모(또는 프로세스)가 종료되면 자식(자녀)이 계속되지 못하게 합니다.
    => 캐스케이딩 종료.
    일반적으로 UNIX 변형(Linux 포함)은 자식 프로세스를 init 프로세스로 다시 부모화합니다.

Zombie vs Orphan Processes


A zombie process or defunct process is a process that has completed execution but still has an entry in the process table.

zombie 프로세스 또는 defected 프로세스는 실행을 완료했지만 여전히 프로세스 테이블에 항목이 있는 프로세스입니다.

  • A process that has terminated, but its parent has not yet collected the status via wait
    -> usually because of bugs or coding errors.
    종료되었지만 상위 프로세스가 아직 wait를 통해 상태를 수집하지 않은 프로세스입니다.
    -> 보통 버그나 코딩 오류 때문
  • All processes can normally exist as zombies only briefly.
    모든 프로세스는 일반적으로 잠시 동안만 좀비로 존재할 수 있습니다.
  • When the parent calls wait, the child terminates normally.
    부모가 잠깐을 호출하면 아이는 정상적으로 종료됩니다.
  • Parent is executing, while the child is dead.

When a parent didn’t invoke wait and instead terminated, its children processes are orphan processes (i.e., still executing).

부모가 대기를 호출하지 않고 대신 종료되면 하위 프로세스는 orphan* 프로세스(예: 여전히 실행 중)가 됩니다.

  • The init process is assigned to the new parent of those processes.
  • The init process periodically invokes wait to collect the exit status of any orphan processes.
  • Parent (original) is dead, while the child is executing.

0개의 댓글