一个64位操作系统设计与实现

操作系统的组成结构

1.2 操作系统的组成结构一款功能完备、方便易用的操作系统,是由一套庞大的结构组成的,图1-1描述了操作系统的整体结构。从图1-1可以看出,操作系统由内核层与应用层两部分组成。内核层主要由引导启动、内存管理、异常/中断处理、进程管理、设备驱动、文件系统等模块组成,而系统API库和应用程序则属于应用层的范畴。之所以将内核层和应用层分开,是因为内核层主要负责控制硬件设备、分配系统资源、为应用层提供健全的接口支持、保证应用程序正常稳定运行等全局性工作。而应用层主要负责的是人机交互工作。下面将对各个模型逐一进行介绍。

        引导启动引导启动是指,计算机从BIOS上电自检后到跳转至内核程序执行前这一期间执行的一段或几段程序。这些程序主要用于检测计算机硬件,并配置内核运行时所需的参数,然后再把检测信息和参数提交给内核解析,内核会在解析数据的同时对自身进行配置。如图1-1所示,使用横线将引导启动模块与其他内核层模块分隔开,是考虑到引导启动模块只是为了辅助内核启动,而并非真正属于内核。一旦内核开始执行后,引导程序便再无他用。如果把内核比作卫星的话,那么引导程序就相当于运载火箭,卫星进入轨道后,火箭就完成了它的使命。引导启动程序曾经分为两部分——Boot和Loader,现在通常把两者的功能合二为一,并统称为BootLoader。

目前,比较流行的引导启动程序有Grub和Uboot等,它们的功能都比较强大,用户可以通过它们自带的终端命令行与之进行简单的交互,此举为控制内核的加载和使用提供了诸多便利。

 内存管理。内存管理单元是内核的基础功能,它的主要作用是有效管理物理内存,这样可以简化其他模块开辟内存空间(连续的或非连续的)的过程,为页表映射和地址变换提供配套函数。Linux内存管理单元的伙伴算法,算是一种稳定成熟的内存管理算法,它可以长时间保持内存的稳定分配,防止内存碎片过多。还有内存线性地址空间的红黑树管理算法,它将原有的线性地址结构转换为树状结构以缩短搜索时间,同时又在每次插入新节点时调整树的高度(或者深度),来维持树的形状进而保证搜索时间的相对稳定,该算法既兼顾搜索时间损耗又兼顾插入时间损耗。因此,Linux选择红黑树这种近似平衡树来代替之前的AVL树(绝对平衡树)也是出于这方面的考虑。

 异常/中断处理。此处的异常是指处理器在执行程序时产生的错误或者问题,比如除零、段溢出、页错误、无效指令、调试错误等。有的异常经过处理后,程序仍可继续执行,有的则不能继续执行,必须根据错误类型和程序逻辑进行相应的处理。而中断处理是指处理器接收到硬件设备发来的中断请求信号并作出相应处理操作。这部分内容与外围硬件设备关系非常密切,它的处理效率会影响操作系统整体的执行速度。通常,中断处理会被分为中断上半部和中断下半部。中断上半部要求快速响应中断,在取得必要的数据和信息后尽早开启中断,以使处理器能够再次接收中断请求信号。中断下半部被用来执行剩余中断内容,像数据解析、驱动程序状态调整等更耗时的内容均在这里完成。为了让更紧迫的进程优先执行,中断下半部还可将处理内容安放在一个进程中,以让更高优先级的进程得到快速执行。

❏ 进程管理。说到进程,想必会有人疑惑进程和程序的区别。程序是静静地躺在文件系统里的二进制代码,属于静止状态。一旦把这个程序加载到操作系统内运行,它就变成了进程。进程是程序的运行状态,所以它会比程序拥有更多管理层面的信息和数据。

                         说到进程管理功能,不得不提进程调度策略,一个好的进程调度策略,会提高程序的执行效率和反应速度。现代Linux内核的发展从早期的O(1)调度策略,到楼梯调度策略,再到现在的CFS完全公平调度策略,随着调度策略逐步升级,进程的执行效率也越来越高。进程管理的另一个重要部分是进程间通信。进程间通信有很多种方法,如SIGNAL信号、管道、共享内存、信号量等,这些通信机制各有特点,互相弥补不足。

❏ 设备驱动。随着硬件设备的不断增多,与之对应的设备驱动程序也渐渐占据了操作系统的很大一部分空间。为了给开发和使用设备驱动程序带来方便,不管是Linux操作系统还是Windows操作系统,它们都为驱动程序提供了一套或几套成熟的驱动框架供程序员使用。同时,为了便于驱动程序的调试、提高即插即用设备的灵活性及缩减内核体积,操作系统逐渐把驱动程序从内核中移出,仅当使用驱动时再将其动态挂载到内核空间,从而做到驱动程序即插即用。这样一来大大缩小内核体积,加快系统启动速度。

设备驱动程序会与内存管理、中断处理、文件系统及进程管理等多个模块共同协作。为了让硬件设备给应用程序提供接口,设备驱动程序几乎调用了内核层的所有资源。这也是开发操作系统的目的之一,即方便人们与设备交互。

文件系统。文件系统用于把机械硬盘的部分或全部扇区组织成一个便于管理的结构化单元。此处的扇区也可以是内存块,这样便组成了一个RAMDisk(内存式硬盘)。这样一个内存式硬盘单单在文件读写速度上就比普通机械硬盘高出一个数量级,其显而易见的缺点是掉电后数据全部丢失。不过与它的优点相比,这个缺点是完全可以忍受的,比如Linux内核的sys文件系统便是在RAMDisk中创建的。

文件系统的种类也是纷繁复杂的,像上面提到的sys文件系统,还有大家耳熟能详的FAT类文件系统,以及Linux的EXT类文件系统,它们对扇区的组织形式虽各具特色,却都是为了给原生操作系统提供方便、快捷的使用体验而设计的。

系统调用API库系统调用API库接口有很多规范标准,比如Linux兼容的POSIX规范标准。对于不同的接口标准来说,其定义和封装的函数实现是不一样的。不管怎么说,系统调用API库最终都是为了给应用程序提供简单、快捷、便于使用的接口。

❏ 应用程序。应用程序包括我们自己安装的软件和系统提供的工具、软件与服务。在众多应用程序中,比较特殊的一个应用程序是系统的窗口管理器,它主要用于管理图形界面的窗口,具体包括窗口的位置布局、鼠标键盘的消息投递、活动窗口仲裁等功能。

■ 窗口的位置布局负责控制窗口的比例大小、显示位置、标题栏及按钮等一系列与窗口的显示效果相关的功能。

■ 键盘鼠标的消息投递负责将键盘鼠标发送来的消息发往到活动窗口,这个过程会涉及窗口管理器对活动窗口的仲裁。

■ 活动窗口仲裁会依据鼠标采用的仲裁模式(包括鼠标跟随式、鼠标按下式等)来确定正在操作的窗口。

我给大家留了一些问题,请将答案打在评论区?

什么是Liunx操作系统?

操作系统组成结构是什么?

怎么调用系统的API库?

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
实验题目: 基于死锁避免动态策略的资源分配银行家算法的模拟实现 问题解析(对问题的分析、理解和解题方法): 对问题的分析: 并发进程共享系统时如处理不当可能发生死锁。要防止死锁的发生,必须保证系统状态是合理的。有效的避免死锁的算法必须能预见将来可能发生的事情的模式,以便在死锁发生之前就能察觉出它们潜在的危险的存在。这种预见类型的算法的代表是Dijkstra 提出法银行家算法。 银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。 对问题的理解和解决: 操作系统按照一定的规则为进程分配资源,当某个进程申请资源时,首先要测试该进程对资源的需求量是否与最大需求量冲突,如果超出最大需求量,则不予分配。其次如果系统的可用资源能满足当前的进程的需求,则尝试性的分配,并接下来今年进入安全性检查。 否则不予分配。 如果进入安全性检查,在为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,并释放所占用的资源。否则就推迟分配。进入下个进程的资源申请。直到所有的进程都能合理的分配资源并结束。则安全性检查通过。系统处于安全的状态。否则若有进程无法完成,始终无法获得所需的资源,即检查出潜在的死锁。此时系统处于不安全的状态。 处于不安全的状态的进程资源申请因当驳回。并恢复分配前的状态。
一个64位操作系统设计实现pdf主要是关于如何设计实现一个支持64位处理器架构的操作系统的指南。在设计实现这样一个操作系统时,需要考虑以下几个方面的因素: 1. 内存管理:64位操作系统支持更大的物理内存和虚拟内存地址空间。因此,内存管理方面需要考虑如何有效地管理这样大的内存空间,并设计相应的内存分配和回收算法。 2. 处理器架构:64位处理器架构不仅有更大的寄存器,还提供了更复杂的指令集和增强的并行处理能力。在设计实现中,需要考虑如何充分利用这些特性来提高系统的性能和效率。 3. 设备驱动程序:64位操作系统需要支持更多的硬件设备和驱动程序。在设计实现中,需要考虑如何与各种设备进行有效的通信和互操作,并实现对各类设备的驱动程序支持。 4. 系统安全:64位操作系统需要考虑更强大的计算能力和更大的存储空间,因此,系统安全性显得尤为重要。在设计实现中,需要考虑如何保护系统和用户的数据安全,并实现相应的安全机制和策略。 5. 用户界面:64位操作系统通常需要提供友好的用户界面,以便用户能够方便地使用系统和进行各种操作。在设计实现中,需要考虑如何设计易用的图形界面,并提供适用于64位操作系统的各种应用程序和工具。 总之,一个64位操作系统设计实现pdf会详细介绍在各个方面如何设计实现一个支持64位处理器架构的操作系统,涵盖了内存管理、处理器架构、设备驱动程序、系统安全和用户界面等关键因素。这份pdf可能会包括算法和代码示例,以帮助读者更好地理解和实践这些设计实现原则。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客云曦

你的鼓励就是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值