Объясните различия между моделями многозадачности с вытеснением и с конкуренцией?
Answer from AI
sobes.tech AI
Модели многозадачности с вытеснением (preemptive multitasking) и с конкуренцией (cooperative multitasking) отличаются способом переключения между задачами:
-
Вытеснительная (preemptive): операционная система или планировщик самостоятельно прерывает выполнение текущей задачи, чтобы дать время другой. Это обеспечивает более справедливое распределение ресурсов и предотвращает зависание системы из-за одной задачи.
-
Конкурентная (cooperative): задачи сами решают, когда уступить управление другим. Если задача не уступает, другие могут не получить процессорное время, что может привести к зависаниям.
Пример в Python:
import threading
import time
def task():
for i in range(5):
print(i)
time.sleep(1) # здесь происходит уступка времени другим потокам
thread = threading.Thread(target=task)
thread.start()
В Python потоки работают с вытеснением, так как интерпретатор периодически переключает выполнение между потоками.