Operating system 理解抢占式内核的困难

Operating system 理解抢占式内核的困难,operating-system,Operating System,抢占式内核如何导致竞争条件?如果进程被抢占,即未被踢出其关键部分。根据我的理解,竞争条件是当多个进程试图同时访问和操作资源时。我很难理解抢占式内核可以在任何时候启动和停止线程的概念。这意味着,不小心协调通过锁和关键部分的访问的线程最终会处于争用状态 多线程的另一种形式是协作多线程,线程只能在显式提供给处理器的点停止。这有助于防止争用情况,因为线程不会在其处理过程中的随机意外点中断 协作多线程的缺点是,编写为不产生的线程会占用处理器,这就是大多数现代操作系统使用抢占式多线程而不是协作式多线程的原因

抢占式内核如何导致竞争条件?如果进程被抢占,即未被踢出其关键部分。根据我的理解,竞争条件是当多个进程试图同时访问和操作资源时。我很难理解抢占式内核可以在任何时候启动和停止线程的概念。这意味着,不小心协调通过锁和关键部分的访问的线程最终会处于争用状态

多线程的另一种形式是协作多线程,线程只能在显式提供给处理器的点停止。这有助于防止争用情况,因为线程不会在其处理过程中的随机意外点中断


协作多线程的缺点是,编写为不产生的线程会占用处理器,这就是大多数现代操作系统使用抢占式多线程而不是协作式多线程的原因。

协作式多线程的主要缺点是I/O性能非常差,因为当线程先前请求的I/O可用时,线程无法“立即”准备好/运行。@warren谢谢。因此,非抢先性也会导致饥饿吗?@user3497437协作多线程可能会在运行的线程无法屈服时导致其他线程饥饿,是的。