首页 理论教育 操作系统实现之路-版本资源管理与设备调配

操作系统实现之路-版本资源管理与设备调配

时间:2023-10-21 理论教育 版权反馈
【摘要】:所谓系统资源,指的是IO端口、内存映射区域、中断引脚(向量)等被所有设备共享的资源。在系统范围内,这些资源的数量是有限的,比如针对IO端口资源,可使用的范围为0~65535,如果不对这些资源进行统一管理和分配,则可能会出现资源冲突的情况,比如,两个物理设备占用了同一范围的IO端口。因此,目前情况下,需要进行统一调配的资源只有IO端口资源。目前的实现中,完成对IO端口进行统一分配和管理的对象就是DeviceManager对象。

操作系统实现之路-版本资源管理与设备调配

所谓系统资源,指的是IO端口、内存映射区域、中断引脚(向量)等被所有设备共享的资源。有些CPU类型,比如PowerPC,没有IO端口的概念,这个时候的资源管理就只限于内存映射区域。

在系统范围内,这些资源的数量是有限的,比如针对IO端口资源,可使用的范围为0~65535(16bit范围内),如果不对这些资源进行统一管理和分配,则可能会出现资源冲突的情况,比如,两个物理设备占用了同一范围的IO端口。这样不但设备无法正常工作,严重情况下,还可能造成整个系统崩溃。因此,需要系统统一对这些资源进行调配,以保证资源的充分利用,并保证资源的分配不会出现冲突。

在Hello China的实现中,对于内存映射区域资源,由虚拟内存管理器(Virtual MemoryMgr)对象统一管理,设备如果想使用一段虚拟内存区域(内存映射区域),必须调用VirtualAlloc函数来进行分配,该函数可以保证资源不会出现冲突,因为如果设备申请的资源已经被占用,则该函数会返回NULL。对于中断资源,由于目前Hello China的中断机制支持中断嵌套,因此,如果驱动程序严格按照Hello China的中断机制定义的协议进行编写,则不会出现中断冲突的现象,即使不同的设备连接到了同一条中断引脚上也不会出现问题。因此,目前情况下,需要进行统一调配的资源只有IO端口资源。(www.xing528.com)

目前的实现中,完成对IO端口进行统一分配和管理的对象就是DeviceManager对象。在该对象中,定义了两个成员变量,FreePortResource和UsedPortResource,这两个变量分别把系统中可以使用的IO端口,以及已经使用的IO端口资源,以双向链表的形式串联在一起

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

我要反馈