OS/Kernel
Interrupt
Interrupt
2016.10.07Interrupt가 발생하면 CPU는 ISR로 진입하게 되며 Interrupt를 적절히 처리해 주는 것은 OS의 역할이다.이는 Interrupt가 하드웨어적으로 CPU에 바로 입력되기 때문에 가능하다.* CPU pin 중에 Interrupt pin이 하나 존재한다.각각의 디바이스는 Interrupt Controller를 가지고 있는데, 여기서 CPU의 Interrupt pin으로 전기적 신호를 보내는 식으로 동작한다. Interrupt VS SignalInterrupts can be viewed as a mean of communication between the CPU and the OS kernel. Signals can be viewed as a mean of communication between..
System call / vDSO, vsyscall
System call / vDSO, vsyscall
2016.09.18System callsystem call은 user가 Software Interrupt를 걸 수 있도록 user process에 제공되는 인터페이스(API)다. 대부분의 kernel에서는 user 어플리케이션이 kernel space에 직접 접근하지 못하도록 `` addr_limit``를 설정해 놓았다.특정 프로세스가 kernel space를 수정하거나 하드웨어 디바이스를 직접적으로 조작하는 것을 막기 위해서다.따라서 어플리케이션이 상기 작업을 처리해야 하는 경우 kernel이 대신 작업을 수행하도록 요청하고 그 결과를 반환받는 수 밖에 없는데, 이를 위해 kernel에서 제공하는 인터페이스가 system call이다. 일반적으로 많이들 사용하는 glibc 등도 내부적으로는 system call을 사용하..
Preemptive / Non-preemptive ( 선점형 / 비선점형 스케줄링 )
Preemptive / Non-preemptive ( 선점형 / 비선점형 스케줄링 )
2016.09.18CPU schedulingCPU 스케줄링의 결정 시점은 다음과 같은 프로세스의 상태 변화가 있을 때이다.수행 → 대기 interrupt수행 → 준비 time-out대기 → 준비 wake-up수행 → 종료 * 대기 → 수행 dispatch Preemptive / Non-preemptive비선점형 스케줄링(Non-preemptive Scheduling)비선점형은 위의 결정 시점 중 1번과 4번의 상황에서만 스케줄링이 발생한다.어떤 프로세스가 CPU를 할당 받으면 그 프로세스가 종료되거나 IO request가 발생하여 자발적으로 대기 상태로 들어갈 때까지 계속 실행된다.일반적으로 선점형보다 scheduler 호출 빈도가 낮고 context switching overhead가 적다.즉, 어떤 프로세스가 작업을 ..