취업,면접 대비/cs 전공 공부

<운영체제> Thread Preemption

studying develop 2020. 3. 29. 17:10

Involuntarily suspending one thread to schedule another is called preemption. Scheduling methods that utilize preemption instead of run to completion are said to be preemptive, and operating systems that employ these methods are called preemptive multitasking operating systems.

 

스케줄러에 의해 한 스레드가 비자발적으로 중비되는 것을 선점이라한다. 작업을 완료시키기 전에 선점을 활용하는 스케줄러를 preemptive라 한다, 그리고 이런 방법을 채용한 운영체제를 preemptive multitasking operating system이라 한다.

 

Preemption relies on the kernel to periodically change the currently running thread via a context switch. The trigger for a context switch can be either a system timer (each thread is assigned a time slice) or a function call to the kernel itself. When a context switch is triggered, the kernel selects the next thread to run and the preempted thread is put back in line to run again at its next opportunity based on the scheduling method being used.

 

선점은 커널이 주기적으로 현재 실행중인 스레드를 context switch에 의해 발생시키는 것에 의존한다. context switch는 시스템 타이머 또는 커널 함수 호출에 의해 발생한다. context switch가 발생하면 커널은 다음에 실행할 스레드를 선택하고 선점된 스레드를 뒤로 보내 나중에 스케줄링에 의해 실행한다.

 

There are several advantages to preemptive multitasking, including the following:

 

preemptive multitasking에 대한 장점을 보자.

 

• It’s predictable—A thread can, within limits, know when it will likely run again. For instance, given the limits of kernel implementations, a thread can be set up to run once a second and the programmer can be reasonably certain that the thread will be scheduled to run at that interval.

 

preemptive multitakig의 장점, 예상이 가능하다 - 제한범위 내에서 한 스레드가 다시 실행될지 예상할 수 있다. 예를 들면, 커널 구현상 제한들이 들어가면, 한 스레드는 매초마다 스케줄되 일정간격으로 실행될 것임을 프로그래머는 예상할 수 있다. (내 주석, 아마 이 한 스레드가 우선순위가 높아서, 빠르게 다시 실행될 것이라 예상할 수 있다는 말 같다.)

 

• It’s difficult to break—No single thread can monopolize the CPU for long periods of time. A single thread falling into an endless loop cannot stop other threads from running.

 

중단하기가 힘들다 - 한 스레드가 특정 CPU를 장시간 독점하기 힘들다. 무한 루프에 빠진 한 단일 스레드는 다른 스레드들이 실행되는 것을 중지할 수 없다.

 

Of course, there are also disadvantages to preemptive multitasking, such as:

 

preemptive multitasking에 대한 단점을 보자.

 

• It’s less efficient than run-to-completion methods—In general, preemptive multitasking systems tend to switch contexts more often, which means the CPU spends more time scheduling threads and switching between them than it does with run to completion.

 

실행해서 완료시까지 실행되는 방법보다 비 효율적이다 - 일반적으로 , preemptive multitasking 시스템들을 context switch를 더 빈번히 하고, 그말은 cpu가 스레드를 스케줄링하고 switching 하는데 더 많은 시간을 소모한다는 말이다.

 

• It adds complexity to application software—A thread running on a preemptive system can be interrupted anywhere. Programmers must design and write their applications to protect critical data structures from being changed by other threads when preempted.

 

응용프로그램 소프트웨어가 복잡해진다. - preemptive system상에서 실행되는 스레드는 언제든 interrupted 될 수 있다. 프로그래머는 다른 여러 스레드들이 critical data 구조를 침해하지 않도록 설계해야 한다.

 

 

 


Cooperative vs. Preemptive: a quest to maximize concurrency power

[https://medium.com/traveloka-engineering/cooperative-vs-preemptive-a-quest-to-maximize-concurrency-power-3b10c5a920fe]