我目前正在阅读Tanenbaum的“现代操作系统”,并有一个关于“帮”或“协同调度”的问题:
据说,操作系统代码被Mutexes划分为逻辑部分,允许在不同的CPU核上同时执行操作系统的不同部分(例如,文件系统代码可以与处理中断的代码并行运行)。这意味着操作系统中负责线程或进程调度的部分必须由互斥保护。
此外,如果两个进程A和B通信频繁,操作系统应该使用Gang协同调度,让这两个进程同时在不同的内核上运行。这是一个性能改进,因为这两个进程可能会因为等待相应的其他进程的答案而被阻塞。
现在我的问题是:
发布于 2015-09-22 11:54:15
在对称的多处理器体系结构上,所有CPU对所有内存都有相同的访问权限。线程的对象代码和数据对所有内核和处理器都是可访问的,因此很容易将线程/进程从核心“移动”到核心。内核只需实现一个调度方案,以确保所有需要运行的东西都尽可能地运行。一个在一个核心上被中断的线程/进程可以在另一个核上恢复,而不需要很小的惩罚。
确切地说,该调度方案是不同的。可以在单个核心上运行单个调度程序任务,该任务控制在所有其他内核上运行的内容。或者,每个核心都有一个迷你调度程序,负责该核心的调度,并与其同侪合作,以分散线程。我认为,这就是Linux所做的(更正欢迎)。
https://stackoverflow.com/questions/32697505
复制相似问题