[OS] Process Control

정민경·2023년 4월 25일
0

Operating_System

목록 보기
3/8
post-thumbnail

- Objection

  1. Process Control 이란?
  2. Creation : 프로세스 생성
  3. Process switch ( = context switch )
  4. Terminataion
  5. Communication

1) Process Control 이란?

  • mode change : 실행 모드를 바꾸는 것
    ( user mode <-> system mode )
    -> 실행모드는 동시 실행 불가
  • context switch : 실행 프로세스를 바꾸는 것
    ( A process 실행 -> B process 실행 )
    -> 이때 지금까지 실행한 proces 의 정보를 PCB 에 저장
    -> 이제 실행될 process 의 PCB 값을 불러옴.
    -> context switch 는 OS 를 거쳐서 일어남.

2) Creation : 프로세스 생성

  • process 생성 과정
    1. 새로운 process 에 대한 PCB 생성
    2. 새로 생긴 process 에게 PID 할당
    3. PCB 각각의 data setting ( code, stack, data . . . )
    4. process 들 사이의 link 생성
    5. 다른 데이터 생성 및 확장
    6. parents context를 복사해서 현재 생성한 process의 user context 생성
      ( code 는 공유, data, stack은 부모것을 복사해 할당 )
      -> 1 ~ 5번의 과정에서는 부모 context 를 가리키고 있음.
    7. ready state 로 설정하고 ready queue 에 삽입
    8. 부모 프로세스에게는 자식의 PID를, 자식 프로세스에게는 0을 반환.
  • 6번과정에서 사용되는 mechanism
    • Copy on Write ( COW )
      -> 복사하는 과정을 내용이 변경될 때까지 최대한 뒤의 과정으로 미룸.
      ( 시간, 메모리 낭비를 줄이기 위해 )
      -> exec () 실행 시 cow 방법이 효과적임. (exec () : 완전히 다른 process 생성 ( 부모를 복사한 것이 아님. ) )
      -> exec () 만으로는 process 생성 불가. ( fork 와 exec 동시 사용 )

3) Process switch ( = context switch )

  • context switch : 실행하는 프로세스 ( = 프로그램 ) 을 바꾸는 것.
  • Process switch 가 일어나는 상황
    1. 실행하는 process 가 끝나는 경우 [ Release ]
    2. 어떠한 event 를 기다리는 경우 [ event wait ]
      ( e.g. file open, I/O request )
    3. 할당된 시간을 다 쓰는 경우 [ timeout ]
    4. I/O interupt : 우선순위가 더 높은 process 한테 CPU 를 뺏길 수 있음. [ event occurs ]
      -> 우선순위에 따라 일어날수도있고, 일어나지 않을 수 있음.
  • context switch 과정
    1. 중단될 process의 상태 저장
    2. PCB 값 update
    3. PCB 를 적절한 queue 로 옮김. ( e.g. ready queue )
    4. 어떤 process 를 실행할 것인지 결정 ( ready 상태 process 들중에서 )
    5. 선정된 process 로 update
    6. memory 정보 update
    7. CPU 에 있던 기존 process 에 대한 정보를 register 에 write

      -> 1, 2, 3 : 중단되어질 process 에 대한 조치
      -> 4 : process scheduling
      -> 5, 6, 7 : 새로 실행할 process 에 대한 준비작업

4) Terminataion

  • Process termination이 일어나는 상황
    1. exit () system call 이 불렸을 때
    2. 프로세스가 처리할 수 없는 signal 을 받았거나
    3. CPU error 발생했을 때 ( = program error )
    4. 부모 프로세스가 자식 프로세스를 kill 해달라고 요청했을 때
  • process 가 terminate 될 때 과정
    1. 할당받아 가지고 있던 resource release
    2. OS 가 프로세스를 terminated state 로 변환.
    3. wait () system call 이 불리기 전까지 terminated state 에서 대기
    4. wait () call 되면 PCB 도 없애며 프로세스 종료
  • 자식프로세스보다 부모프로세스가 먼저 종료되면 ( 사라지면 ) 자식프로세스들을 init process 의 양자로 보냄.

5) Communication

  • Inter-Process Communication ( IPC )
    -> 프로세스 간 통신방법
  • 독립된 process 간에 직접적으로 소통 불가
  • IPC 방법을 사용하면 소통 가능
    • Message Passing : OS 를 거쳐 메세지 전달
    • shared memory : OS 가 생성해주는 공유공간을 통해 소통
  • message passing 특징
    • 구현은 금방되지만, 실행 시 시간이 오래 걸림.
    • message 전달 시 send, receive 는 system call 에 구현
      -> 호출시 mode change 해서 OS 가 수행함.
    • queue 로 보내기 때문에 여러개의 메세지를 보내도 전부 저장됨.
  • shared memory 특징
    • 빠른 소통이 가능하지만, 충돌이 일어날 수 있음. ( 동시접근 시 )
    • fork () 하는 순간 자식 프로세스와 공간을 공유
  • IPC 의 장점
    • 정보를 공유할 수 있음.
    • 병행해서 작업하므로 속도 향상
    • reliability / availability : 같은 서비스를 2개이상의 컴퓨터에서 실행
  • IPC 사용 시 주의사항
    • 충돌이 일어나지 않도록 동기화 코딩을 해줘야 함.
    • 동기화코딩의 방법 ( IPC 의 type )
      -> signal, Semaphore, Lock
  • signal 이 발생되는 4가지 상황
  • signal : 프로세스가 다른 프로세스에게 event 가 발생했다고 알리기만 함.
    1. 프로세스가 kill 되었을 때 ( sigkill 발생 )
    2. 프로세스가 stop 되었을 때 ( sigstop 발생 )
    3. signal 이 무시되었을 때
    4. user level 에서 정의한 signal 사용 시
  • 혼동하면 안되는 개념
    • Signal : 프로세스가 다른 프로세스에게 event 발생 알림.
    • Interrupt : OS 가 프로세스에게 event 발생 알림.
    • System call : 프로세스가 OS 에게 event 발생 알림 + 서비스 요청

0개의 댓글