操作系统——第一章概论(下)

不忘初心,方得始终,初心易得,始终难守


1.4.1 操作系统体系结构

实现程序并发就一定离不开时钟管理
请添加图片描述
这些内核程序必须运行在内核态,与硬件关联较紧密的模块一定是放在内核态,若是不会涉及硬件的管理工作,有些操作系统则会将这些管理功能不放在内核中,而仅仅保留与硬件接触最紧密的部分,因此这就引出了两种截然不同的内核设计方法,所有的功能都包含在操作系统内核中的,这种叫做大内核,只保留与硬件功能最紧密的叫做微内核,若是使用微内核这种结构,则微内核的管理功能是运行在内核态,而类如进程管理等功能则是运行在用户态,
请添加图片描述
这会对系统的性能造成一定的影响,如下图若是使用大内核这种结构,当要进行进程管理等一系列操作的时候,CPU从用户态变为内核态开始运行这一系列的内核程序,若是使用微内核的,应用程序向操作系统提出服务的请求,而进程管理这个模块处理的时候也是需要得到内核的支持,所以每一个模块都需要从用户态转到内核态,服务完成之后又会从内核态转用户态,
请添加图片描述
知识回顾
请添加图片描述
从操作系统的内核架构来划分,可分为宏内核和微内核。
宏内核,也称单内核或大内核,是指将系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为用户程序提供高性能的系统服务。因为各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具有无可比拟的性能优势
随着体系结构和应用需求的不断发展,需要操作系统提供的服务越来越复杂,操作系统的设计规模急剧增长,操作系统也面临着“软件危机”困境。就像一个人,越胖活动起来就越困难。所以就出现了微内核技术,就是将一些非核心的功能移到用户空间,这种设计带来的好处是方便扩展系统,所有新服务都可以在用户空间增加,内核基本不用去做改动
从操作系统的发展来看,宏内核获得了绝对的胜利,目前主流的操作系统,如Windows.Android、iOS、macOS、Linux等,都是基于宏内核的构架。但也应注意到,微内核和宏内核一直是同步发展的,目前主流的操作系统早已不是当年纯粹的宏内核构架了,而是广泛吸取微内核构架的优点而后揉合而成的混合内核。当今宏内核构架遇到了越来越多的困难和挑战,而微内核的优势似乎越来越明显,尤其是谷歌的Fuchsia和华为的鸿蒙OS,都瞄准了微内核构架。
微内核
微内核构架,是指将内核中最基本的功能保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低内核的设计复杂性。那些移出内核的操作系统代码根据分层的原则被划分成若干服务程序,它们的执行相互独立,交互则都借助于微内核进行通信
微内核结构将操作系统划分为两大部分:微内核和多个服务器。微内核是指精心设计的、能实现操作系统最基本核心功能的小型内核,通常包含:①与硬件处理紧密相关的部分:②一些较基本的功能:③客户和服务器之间的通信。这些部分只是为构建通用操作系统提供一个重要基础,这样就可以确保将内核做得很小。操作系统中的绝大部分功能都放在微内核外的一组服务器(进程)中实现,(如用于提供对进程(线程〉进行管理的进程(线程)服务器、提供虚拟存储器管理功能的虚拟存储器服务器等),它们都是作为进程来实现的,运行在用户态客户与服务器之间是借助微内核提供的消息传递机制来实现交互的
在微内核结构中,为了实现高可靠性,只有微内核运行在内核态,其余模块都运行在用户态,一个模块中的错误只会使这个模块崩溃,而不会使整个系统崩溃。例如,文件服务代码运行时出了问题,宏内核因为文件服务是运行在内核态的,系统直接就崩溃了。而微内核的文件服务是运行在用户态的,只要把文件服务功能强行停止,然后重启,就可以继续使用,系统不会崩溃。
(2)微内核的基本功能
微内核结构通常利用==“机制与策略分离”的原理来构造OS结构,将机制部分以及与硬件紧密相关的部分放入微内核。微内核通常具有如下功能:
进程(线程)管理。进程(线程)之间的通信功能是微内核OS最基本的功能,此外还有进程的切换、进程的调度,以及多处理机之间的同步等功能,都应放入微内核中==。举个例子,为实现进程调度功能,需要在进程管理中设置一个或多个进程优先级队列,这部分属于调度功能的机制部分,应将它放入微内核中。而对用户进程如何分类,以及优先级的确认方式,则属于策略问题,可将它们放入微内核外的进程管理服务器中。
②低级存储器管理。在微内核中,只配置最基本的低级存储器管理机制,如用于实现将逻辑地址变换为物理地址等的页表机制和地址变换机制,这一部分是依赖于硬件的,因此放入微内核。而实现虚拟存储器管理的策略,则包含应采取何种页面置换算法,采用何种内存分配与回收的策略,应将这部分放在微内核外的存储器管理服务器中。
③中断和陷入处理。微内核OS将与硬件紧密相关的一小部分放入微内核,此时微内核的主要功能是捕获所发生的中断和陷入事件,并进行中断响应处理,在识别中断或陷入的事件后,再发送给相关的服务器来处理,故中断和陷入处理也应放入微内核。
微内核操作系统将进程管理、存储器管理以及IO管理这些功能一分为二,属于机制的很小一部分放入微内核,而绝大部分放入微内核外的各种服务器实现,大多数服务器都要比微内核大。因此,在采用客户/服务器模式时,能把微内核做得很小
(3)微内核的特点
微内核结构的主要优点如下所示。
扩展性和灵活性。许多功能从内核中分离出来,当要修改某些功能或增加新功能时,只需在相应的服务器中修改或新增功能,或再增加一个专用的服务器,而无须改动内核代码。
可靠性和安全性。前面已举例说明。
可移植性。与CPU和IO硬件有关的代码均放在内核中,而其他各种服务器均与硬件平台无关,因而将操作系统移植到另一个平台上所需做的修改是比较小的。
④分布式计算。客户和服务器之间、服务器和服务器之间的通信采用消息传递机制,这就使得微内核系统能很好地支持分布式系统和网络系统。
微内核结构的主要问题是性能问题,因为需要频繁地在核心态和用户态之间进行切换,操作系统的执行开销偏大。为了改善运行效率,可以将那些频繁使用的系统服务移回内核,从而保证系统性能,但这又会使微内核的容量明显地增大。
虽然宏内核在桌面操作系统中取得了绝对的胜利,但是微内核在实时、工业、航空及军事应用中特别流行,这些领域都是关键任务,需要有高度的可靠性。

1.4.2 操作系统体系

分层结构的操作系统
每一层只能调用相邻更低一层提供的接口,若是我们在原有的两层之间新加一层,我们只需要保证向上层提供的接口,以及对下层的使用,因此加层是比较容易的
请添加图片描述
分层法是将操作系统分为若干层,最底层(层0)为硬件,最高层(层N)为用户接口,每
层只能调用紧邻它的低层的功能和服务(单向依赖)。
分层法的优点:①便于系统的调试和验证,简化了系统的设计和实现。第1层可先调试而无须考虑系统的其他部分,因为它只使用了基本硬件。第1层调试完且验证正确之后,就可以调试第2层,如此向上。如果在调试某层时发现错误,那么错误应在这一层上,这是因为它的低层都调试好了。②易扩充和易维护。在系统中增加、修改或替换一层中的模块或整层时,只要不改变相应层间的接口,就不会影响其他层。
分层法的问题:①合理定义各层比较困难。因为依赖关系固定后,往往就显得不够灵活。②效率较差。操作系统每执行一个功能,通常要自上而下地穿越多层,各层之间都有相应的层间通信机制,这无疑增加了额外的开销,导致系统效率降低。

模块化的操作系统
因为模块间相互依赖,所以若是其中出了问题,则难以发现问题出现在哪
请添加图片描述
在划分模块时,如果将模块划分得太小,虽然能降低模块本身的复杂性,但会使得模块之间的联系过多,造成系统比较混乱:如果模块划分得过大,又会增加模块内部的复杂性,显然应在两者间进行权衡。此外,在划分模块时,要充分考虑模块的独立性问题,因为模块独立性越高,各模块间的交互就越少,系统的结构也就越清晰。衡量模块的独立性主要有两个标准;
内聚性,模块内部各部分间联系的紧密程度。内聚性越高,模块独立性越好。·
耦合度,模块间相互联系和相互影响的程度。耦合度越低,模块独立性越好。
模块化的优点:①提高了操作系统设计的正确性、可理解性和可维护性;②增强了操作系统的可适应性:③加速了操作系统的开发过程。
模块化的缺点:①模块间的接口规定很难满足对接口的实际需求。②各模块设计者齐头并进,每个决定无法建立在上一个已验证的正确决定的基础上,因此无法找到一个可靠的决定顺序。

外核
不同于虚拟机克隆真实机器,另一种策略是对机器进行分区,给每个用户整个资源的一个子集。这样,某个虚拟机可能得到磁盘的0至1023盘块,而另一台虚拟机会得到磁盘的1024至2047盘块,等等。在底层中,一种称为外核(exokernel)的程序在内核态中运行。它的任务是为虚拟机分配资源,并检查使用这些资源的企图,以确保没有机器会使用他人的资源。每个用户层的虚拟机可以运行自己的操作系统,但限制只能使用已经申请并且获得分配的那部分资源。
外核机制的优点是减少了映射层
。在其他的设计中,每个虚拟机都认为它有自己的磁盘,其盘块号从0到最大编号,这样虚拟机监控程序就必须维护一张表格以重映像磁盘地址(或其他资源),有了外核,这个重映射处理就不需要了。外核只需要记录已经分配给各个虚拟机的有关资源即可。这种方法还有一个优点,它将多道程序(在外核内)与用户操作系统代码(在用户空间内)加以分离,而且相应的负载并不重,因为外核所做的只是保持多个虚拟机彼此不发生冲突
请添加图片描述

1.5 操作系统引导

操作系统引导——开机的时候,怎么让操作系统运行起来?
按照操作系统之后
操作系统(如 Windows、Linux等)是一种程序,程序以数据的形式存放在硬盘中,而硬盘通常分为多个区,一台计算机中又有多个或多种外部存储设备。操作系统引导是指计算机利用CPU运行特定程序,通过程序识别硬盘,识别硬盘分区,识别硬盘分区上的操作系统,最后通过程序启动操作系统,一环扣一环地完成上述过程。
常见操作系统的引导过程如下:
激活CPU。激活的CPU读取ROM中的 boot程序,将指令寄存器置为BIOS(基本输入/输出系统)的第一条指令,即开始执行 BIOS的指令。
②硬件自检。启动BIOS程序后,先进行硬件自检,检查硬件是否出现故障。如有故障,主板会发出不同含义的蜂鸣,启动中止;如无故障,屏幕会显示CPU、内存、硬盘等信息
加载带有操作系统的硬盘。硬件自检后,BIOS开始读取 Boot Sequence(通过CMOS里保存的启动顺序,或者通过与用户交互的方式),把控制权交给启动顺序排在第一位的存储设备,然后CPU将该存储设备引导扇区的内容加载到内存中
加载主引导记录MBR。硬盘以特定的标识符区分引导硬盘和非引导硬盘。如果发现一个存储设备不是可引导盘,就检查下一个存储设备。如无其他启动设备,就会死机。主引导记录MBR的作用是告诉CPU去硬盘的哪个主分区去找操作系统。
扫描硬盘分区表,并加载硬盘活动分区。(MBR包含硬盘分区表,硬盘分区表以特定的标识符区分活动分区和非活动分区。主引导记录扫描硬盘分区表,进而识别含有操作系统的硬盘分区(活动分区))。找到硬盘活动分区后,开始加载硬盘活动分区,将控制权交给活动分区。
6)加载分区引导记录PBR。读取活动分区的第一个扇区,这个扇区称为分区引导记录(PBR),其作用是寻找并激活分区根目录下用于引导操作系统的程序(启动管理器)。
⑦加载启动管理器。分区引导记录搜索活动分区中的启动管理器,加载启动管理器。
⑧加载操作系统。
请添加图片描述

1.6 虚拟机

两个进程同时在一个操作系统之上可能会有安全隐患,也会相互争抢操作系统的这个管理资源,一种方法就是将其中一个进程放在另外一个物理机器上,但是这又会导致物理机器的极大浪费,因此有人发明了虚拟机
第一类会将物理机器虚拟化为多台虚拟机器,会将整个应用资源划分为多个部分,给每一台虚拟机使用,每一个虚拟机上可以按照各自的操作系统,CPU时间片进行划分,磁盘内存进行区域划分,只有虚拟机管理程序是运行在内核态,只有它可以使用特权最高的那些指令,而上层的操作系统和 应用程序是运行在用户态,但是上层的操作系统并不知道,所以依然会使用一些特权指令,但是只有虚拟机管理程序是在内核态,不能让操作系统使用这些特权指令,若是上层要使用特权指令,则会被虚拟机管理程序截获,会将这些特权指令进行一些等价的转化,给上层一种执行成功的感觉
第二类不是直接运行在硬件上,而是运行在宿主操作系统上,如VMware,这个虚拟机管理程序想要给虚拟机分配硬件资源,只能先请求宿主操作系统给他进行分配,然后虚拟机管理程序进行再分配

请添加图片描述
第一类虚拟机管理程序
从技术上讲,第一类虚拟机管理程序就像一个操作系统,因为它是唯一一个运行在最高特权级的程序。它在裸机上运行并且具备多道程序功能。虚拟机管理程序向上层提供若干台虚拟机,这些虚拟机是裸机硬件的精确复制品。由于每台虚拟机都与裸机相同,所以在不同的虚拟机上可以运行任何不同的操作系统。
虚拟机作为用户态的一个进程运行,不允许执行敏感指令。然而,虚拟机上的操作系统认为自己运行在内核态(实际上不是),称为虚拟内核态。虚拟机中的用户进程认为自己运行在用户态(实际上确实是)。当虚拟机操作系统执行了一条CPU处于内核态才允许执行的指令时,会陷入虚拟机管理程序。
在支持虚拟化的CPU上,虚拟机管理程序检查这条指令是由虚拟机中的操作系统执行的还是由用户程序执行的。如果是前者,虚拟机管理程序将安排这条指令功能的正确执行。否则,虚拟机管理程序将模拟真实硬件面对用户态执行敏感指令时的行为。
在过去不支持虚拟化的CPU 上,真实硬件不会直接执行虚拟机中的敏感指令,这些敏感指令被转为对虚拟机管理程序的调用,由虚拟机管理程序模拟这些指令的功能。
第二类虚拟机管理程序
第二类虚拟机管理程序。它是一个依赖于Windows、Linux等操作系统分配和调度资源的程序,很像一个普通的进程。第二类虚拟机管理程序仍然伪装成具有CPU和各种设备的完整计算机。VMware Workstation是首个X86平台上的第二类虚拟机管理程序。
运行在两类虚拟机管理程序上的操作系统都称为客户操作系统。对于第二类虚拟机管理程序,运行在底层硬件上的操作系统称为宿主操作系统。
首次启动时,第二类虚拟机管理程序像一台刚启动的计算机那样运转,期望找到的驱动器可以是虚拟设备。然后将操作系统安装到虚拟磁盘上(其实只是宿主操作系统中的一个文件)。客户操作系统安装完成后,就能启动并运行。
虚拟化在Web主机领域很流行。没有虚拟化,服务商只能提供共享托管(不能控制服务器的软件)和独占托管(成本较高)。当服务商提供租用虚拟机时,一台物理服务器就可以运行多个虚拟机,每个虚拟机看起来都是一台完整的服务器,客户可以在虚拟机上安装自己想用的操作系统和软件,但是只需支付较低的费用。这就是市面上常见的“云”主机。
有的教材将第一类虚拟化技术称为裸金属架构,将第二类虚拟化技术称为寄居架构。请添加图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值