Operating system 内核是非抢占的…如何?

Operating system 内核是非抢占的…如何?,operating-system,stack,linux-kernel,scheduling,Operating System,Stack,Linux Kernel,Scheduling,在内核模式下执行的进程不能被抢占 怎么可能呢 考虑一个进程在内核模式下执行并占用大量时间的情况。因此,其余进程将保持在就绪队列中 例如,进程如何响应计时器中断(如果它在内核模式下执行)?或者它将如何响应高温切断中断 如果有人能消除我的疑虑,请首先,你的假设是错误的:如果设置了配置选项config\u PREEMPT\u自愿或config\u PREEMPT,Linux内核确实提供有限的内核模式抢占 启用抢占后,如果任务持有锁,则任务不会被抢占;内核开发人员非常关注进程持有锁的时间,并试图减少持有

在内核模式下执行的进程不能被抢占

怎么可能呢

考虑一个进程在内核模式下执行并占用大量时间的情况。因此,其余进程将保持在就绪队列中

例如,进程如何响应计时器中断(如果它在内核模式下执行)?或者它将如何响应高温切断中断


如果有人能消除我的疑虑,请首先,你的假设是错误的:如果设置了配置选项
config\u PREEMPT\u自愿
config\u PREEMPT
,Linux内核确实提供有限的内核模式抢占

启用抢占后,如果任务持有锁,则任务不会被抢占;内核开发人员非常关注进程持有锁的时间,并试图减少持有锁的时间。(部分原因是抢占,部分原因是锁持有时间越长,如果多个处理器争夺同一个锁,系统的并发性可能越低。如果锁持有时间较短,争用越少,吞吐量可能更高。)

此外,内核开发人员试图限制进程在内核模式下可能花费的时间长度。毕竟,花在内核上的时间是没有花在应用程序上的时间,不管应用程序做什么


如果标准Linux内核不能为您提供足够好的硬实时性能处理中断,您当然可以使用一个系统,例如,它是可用的。

首先,您的假设是错误的:Linux内核确实提供有限的内核模式抢占,如果设置了配置选项
config\u PREEMPT\u
config\u PREEMPT

启用抢占后,如果任务持有锁,则任务不会被抢占;内核开发人员非常关注进程持有锁的时间,并试图减少持有锁的时间。(部分原因是抢占,部分原因是锁持有时间越长,如果多个处理器争夺同一个锁,系统的并发性可能越低。如果锁持有时间较短,争用越少,吞吐量可能更高。)

此外,内核开发人员试图限制进程在内核模式下可能花费的时间长度。毕竟,花在内核上的时间是没有花在应用程序上的时间,不管应用程序做什么


如果标准Linux内核不能为您提供足够好的硬实时性能来处理中断,您当然可以使用一个系统,例如,它是可用的。

一般来说,中断可以按照其名称执行,中断当时正在运行的任何东西,无论是在内核中运行的用户空间进程还是系统调用。

一般来说,中断都可以执行其名称所暗示的操作,中断当时正在运行的任何操作,无论是在内核中运行的用户空间进程还是系统调用。

您能否提供内核模式下此类操作的示例,由于进程仅在有限的操作集中进行内核模式转换,整个进程从不在内核模式下运行。假设一个用户进程运行4秒,在4秒时调用系统例程,并将模式转换为内核模式……现在处于内核模式……系统调用需要3秒……因此总计为4+3=7。假设时间片为5秒……那么进程是否会在5秒后被抢占。(请记住,在第5秒时,进程以内核模式运行)您能否提供一个内核模式下此类操作的示例,因为进程仅在有限的一组操作中进行内核模式转换,整个进程永远不会在内核模式下运行。假设一个用户进程运行4秒,在4秒时调用系统例程,模式转换为内核模式….现在处于内核模式..系统调用需要re 3秒…因此总计为4+3=7。让我们假设时间片为5秒…那么进程是否会在5秒后被抢占。(请记住,在5秒时,进程以内核模式运行)