首页 理论教育 操作系统实现之路:多CPU冲突关系处理

操作系统实现之路:多CPU冲突关系处理

时间:2023-10-21 理论教育 版权反馈
【摘要】:在多CPU的情况下,除了考虑上述竞争关系之外,还需要考虑多个CPU之间的冲突关系。Hello China当前版本对这几种可能的冲突情况都做了充分考虑,并实现了相应机制来处理这几种竞争关系。在当前版本的实现中,关键区段用于完成中断处理程序和应用程序之间的同步,而应用程序之间的互斥与同步,则用来实现事件对象、互斥体对象和信号量对象,这些对象可支持标准的同步或互斥语义,也支持超时等待机制。

操作系统实现之路:多CPU冲突关系处理

在操作系统的设计中,尤其是在引入多任务的情况下,需要考虑下列几种可能的“竞争”状态:

(1)中断处理程序和应用程序之间的竞争,比如一个共享的数据对象既可以被应用程序修改,也可以被中断处理程序修改,这时候就需要充分考虑应用程序和中断处理程序之间的竞争关系,因为中断随时可能发生。

(2)应用程序与应用程序之间的竞争,比如两个应用线程共享同一个数据结构,且可以任意修改,这样就需要充分考虑如何避免修改过程中出现的冲突(一个线程修改了一半被替换出去,另一个线程继续修改同样的数据结构)。

(3)在多CPU的情况下,除了考虑上述竞争关系之外,还需要考虑多个CPU之间的冲突关系。(www.xing528.com)

Hello China当前版本对这几种可能的冲突情况都做了充分考虑,并实现了相应机制来处理这几种竞争关系。虽然当前版本的Hello China只支持单CPU,但在设计的时候,对多CPU的情况也做了充分考虑,并在数据结构和代码的设计中留有余地,便于今后向多CPU系统平滑过渡。

在当前版本的实现中,关键区段用于完成中断处理程序和应用程序之间的同步,而应用程序之间的互斥与同步,则用来实现事件对象(Event Object)、互斥体对象(Mutex Object)和信号量对象(Semaphore Object),这些对象可支持标准的同步或互斥语义,也支持超时等待机制。本章仅对信号量对象的实现做详细描述,其他对象的实现与信号量对象的实现类似,读者可自行查阅代码。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈