Nyong!

3. Scheduling (1) - system call, interrupt, context switching 본문

Study/Operating System

3. Scheduling (1) - system call, interrupt, context switching

신뇽! 2022. 2. 10. 23:33

CPU 가상화 

여러개의 프로세스들이 하나의 CPU를 공유(time sharing)

  • 최소한의 performance overhead를 가져야 함.
  • 프로세스를 실행하면서 시스템의 안전을 보장해야함.

CPU 가상화의 여러가지 방안을 차례로 살펴보면서 그 장단을 분석해본다.

Direct Execution (Unrestriced Execution)

말 그대로 프로그램이 CPU 상에서 아무 제약없이 실행된다.

시간 흐름에 따른 Direct Execution

장점 : CPU에서 프로그램이 natively 실행되기 때문에 가장 효율적이다.

단점 : 프로세스가 실행되는 동안 OS는 CPU의 control을 완전히 잃는다. 실행 중인 process가 악의적이거나 허용되지 않은 동작을 수행하여도 OS가 막을 수 없다.

 

User mode & Kernel mode

Direct Execution에서 확인한 단점을 해결하기 위하여, user program이 할 수 있는 행동에 제한을 둔다.

  • User mode : 프로세스는 hardware에 제한된 접근 권한을 갖는다. 허용되지 않은 access를 실행하면, exception이 일어나고 OS는 해당 process를 종료(kill)한다.
  • Kernel mode : OS가 hardware에 자유롭게 접근할 수 있다.

System Call

  • 유저 프로그램은 privileged opration을 요청하기 위해 system call을 invoke한다.
  • OS는 trap table을 이용하여 invoked된 system call을 확인하고, system call function으로의 pointer를 관리한다.
  • trap table은 boot time에 만들어진다.
  • 유저 프로그램은 system call을 invoke하기 위해 trap instruction을 실행한다.
  • trap이 호출되면, OS는 kernel mode로 바뀌고, CPU는 trap table의 메모리 주소로 점프한다.
    • system call은 trap table에서 확인되고, kernel모드에서 실행된다.
    • system call이 종료되면 OS는 return-from-trap instruction을 호출하여 user mode로 돌아가고, 실행되던 user program 계속 실행한다.

시간 흐름에 따른 system call

  • Boot time
    1. OS : trap table 초기화
    2. hardware : trap handler 주소 저장
  • Run time
    1. OS : 프로세스 생성
    2. program : main 실행, system call 호출, trap 실행
    3. hardware : 레지스터 kernel stack에 저장, kernel mode로 변경, trap handler로 jump
    4. OS : system call 실행, return from trap 호출
    5. hardware : kernel stack에서 레지스터로 읽어옴, user mode로 변경, return address로 jump
    6. program: main 함수 종료, exit() system call 호출
    7. OS : process memory 해제, memory에서 process 삭제

System call vs. Function call

system call 과 function call은 생긴건 유사하지만 다르다.

  • System call은 trap instruction을 이용하여, kernel mode로 전환하는 추가적인 과정이 필요한 반면. Fuction call은 user mode에서 실행된다.
  • System call은 I/O request와 같은 priciledged operation을 실행할 수 있다.
  • System call은 overhead가 더 크다.(느리다)
  • System call은 system call function을 실행하기 위해 kernel stack을 이용한다. Funtion call은 user stack을 이용한다.

Cooperative Switching

프로세스가 CPU에서 실행되고 있으면, OS는 CPU에 접근할 수 없다는 것이다.

Cooperative switching이란,

  • OS는 user process를 신뢰한다.
  • OS는 user process가 system call을 주기적으로 호출하여 CPU의 control을 OS에게 넘길 것이라고 가정한다.
  • 한 예시로, 컴파일러가 user program에 yield() system call을 집어 넣는다면, user program이 주기적으로 system call을 호출하여 OS에게 CPU를 넘겨줄 수 있게 된다.
  • OS가 user program이 system call을 호출하여 OS에게 CPU의 control을 넘겨주기를 기다리는 것을 cooperative switching이라고 한다. 

Misbehaving Applications(in cooperative switching)

  • Trap and kill
    • illegal operation은 (ex. user mode인 상태로 system memory 접근 시도) trap을 발동시킨다.
    • OS는 해당 프로세스를 죽인다
  • Undetected corner cases
    • user program이 무한 루프를 돈다면 OS는 user program으로부터 CPU control을 돌려받을 수 없다.

Timer Interrupt

Cooperative switching은 수동적인 접근 방식으로, corner case가 존재한다.

대신, timer interrupt를 이용하여 실행중인 프로세스를 멈추고 OS가 CPU control을 가져온다.

 

Interrupt handler를 이용하여 interrupt를 관리한다.

  • Boot time에, OS는 하드웨어에게 interrupt가 발생했을 때 어떤 동작을 할지 알려준다.
  • OS는 boot하면서 타이머를 초기화한다.
  • Timer interrupt가 발생하면, 하드웨어는 현재 실행되던 프로세스를 저장하여 return-from-trap instruction 이후에 프로세스가 계속 실행 될 수 있게 한다.

Trap vs. Interrupt

Trap Interrupt
user program에 의해 신호 발생 하드웨어에 의해 신호 발생
OS의 해당 trap의 기능을 발동 CPU에게 interrupt handle을 강제
Interrupt의 일부 Trap을 포함

Context Switching

  • Timer interrupt 혹은 system call이 처리되고 난 뒤, OS가 기존에 실행되던 프로세스를 실행하거나 새로운 프로세스를 실행할 수 있다.
  • 이때 새로운 프로세스를 실행하는 것을 context switching이라고 한다.
  • Context switching이 일어나면, 기존의 프로세스의 정보는 메모리에 저장하고 새로운 프로세스를 CPU에 올린다.

시간 흐름에 따른 timer interrupt와 context switching

  • Boot time
    1. OS : trap table 초기화
    2. hardware : trap table handler와 timer handler 주소 저장
    3. OS : interrupt timer 시작
    4. hardware : every x ms마다 interrupt
  • Run time
    1. program : Process A 실행
    2. hardware : timer interrupt 발생, process A의 레지스터 stack에 저장, kernel mode로 변경, trap handler로 jump
    3. OS : trap 처리, context switch 발생, return-from-trap 호출
    4. hardware : 레지스터에 process B의 정보 불러옴. user mode로 변경, process B의 PC로 jump
    5. program : Process B 실행

 

'Study > Operating System' 카테고리의 다른 글

8. Threads and Race condition  (0) 2022.02.17
5. Scheduling(0) - Long/Short/Medium scheduler  (0) 2022.02.11
4. Scheduling (2) - Job Scheduling  (0) 2022.02.11
2. Process  (0) 2022.02.09
1. Introduction  (0) 2022.02.09