Process Description and Control 2

sanghoon·2021년 4월 25일
0

운영체제

목록 보기
6/7

OS 수업 정리


Terminologies

Mode switch

user mode와 kernel mode를 서로 전환하는 것
프로세스 스위치 없이 일어날 수 있음

Proces switch(context switch)

한 프로세스에서 다른 프로세스로 전환하는 것

  • 과정
    • 현재 process의 processor 상태를 저장
    • PCB의 update(ready, blocked 등으로 상태 변경)
    • 해당 PCB를 적절한 큐에 enqueue
    • 실행할 process 선택
    • 해당 PCB의 update(to running)
    • TLB(주소변환캐시) update
    • 해당 process의 processor context 복구

Process switch overhead

  • PCB update 관련
    • PCB의 context를 save, restore
    • process의 state update
  • Scheduling 관련 : 다음에 실행할 process를 찾아야 함
  • cache 관련
    • TLB reload
    • cache locality의 손실(miss rate의 일시적 급등)

Exectuion Model of OS

Nonprocess kernel

전통적 접근방식. kernel이 분리된 entity로 다뤄짐

Execution within user process(Common in os)

각 process마다 분리된 kernel stack을 갖는 방식.

Process-based operating system(Modular os)

핵심적 function을 제외한 나머지 함수들을 process level로 올리는 방식.

Kernel Stack

kernel code를 실행함에 있어서 사용되는 stack(e.g. during system call)
user stack과 다른 별도의 영역을 갖는다.

  • 이점
    • user stack이 망가지더라도 kernel이 실행될 수 있음

Process Switch

context switch라고도 불림
system call, exeption, interrupt가 발생해 kernel이 실행권을 잡으면 process switch가 일어날 수있다.

  • 예시 : yield()함수를 통해 자발적으로 cpu 사용권을 내놓는 경우
    • in_process가 1이므로 return

Process Creation

Directed

  • 새로운 메모리 공간 할당
  • 해당 공간에서 a.out (load code, data and create call stack)
  • PCB 초기화(해당 방식은 첫 process를 만드는 데에 사용하므로 pid = 1, state <- new)
    (init process, super process, first process; responsible for forking all other processes)
  • 프로세스 실행(state <- ready)

Cloning

  • 부모 프로세스를 복제하는 방식
  • fork() system call로 일어나게 됨(process spawning이라고 불림)

UNIX에서는 sys_fork()를 통한 복제 후 각 process에 pid를 각각 전달함 (call once, return twice)

Copy on Write(COW)

Cloning 시 메모리는 같은 곳을 가르키고 있게 했다가, write 연산이 발생하면 별도의 공간을 할당해주는 방식(on demand)

Seperate processes(fork + exec)

전형적인 process를 생성하는 방식. fork와 exec 과정으로 나뉨(process에 따라 fork만 하는 경우, exec만 하는 경우도 있음)

fork는 부모의 코드와 데이터 등을 복제하지만, exec은 현재 코드를 자신의 코드로 transform 시킴

Execution options

  • 부모와 자식이 동시에 실행될 수 있음
  • 부모가 자식이 종료될 때까지 기다릴 수 있음(wait() system call)

Process Termination

종류

  • 자발적 종료 : exit()
    • 자식 프로세스에서 발생
    • 부모로 반환
  • 비자발적 종료 : kill(), abort()
    • 다른 process(부모)나 OS에 의해 발생

zombie and orphan process

  • zombie

    • 프로세스가 종료되었음에도 PCB 정보가 OS에 남아있는 경우를 지칭
    • 부모 프로세스가 자식 프로세스를 wait()할 때 발생함(자식 프로세스의 상태를 read)
    • read가 발생하지 않는 경우 영구적으로 남아있는 문제 발생 -> Reaper process를 통해 주기적으로 zombie process를 수거함
  • orphan

    • 부모 프로세스가 없는 경우를 지칭
    • 부모 프로세스가 자식보다 일찍 종료될 경우 발생
    • first process를 부모로 지정함으로써 해결

0개의 댓글