操作系统体系结构

操作系统体系结构

image-20240316230420598

image-20240316230434959

时钟管理:利用时钟中断实现计时功能

原语:原语是一种特殊的程序,具有原子性。也就是说,这段程序的运行必须一气呵成,不可被“中断”

非内核功能:Ubuntu、Centos 的开发团队,其主要工作是实现非内核功能,而内核都是用了 Linux 内核

内核

内核是操作系统最基木,最核心的部分实现操作系统内核功能的那些程序就是内核程序。

注意:操作系统内核需要运行在内核态;操作系统的非内核功能运行在用户态

根据操作系统不同:大内核,微内核

image-20240316230554876

一个故事:

现在,应用程序想要请求操作系统的服务,这个服务的处理同时涉及到进程管理、存储管理、设备管理

image-20240316230747172

注意:变态的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能

大内核&微内核区别

image-20240316230831271

image-20240316230851316

分层结构

内核分多层,每层可单向调用更低一层提供的接口

image-20240316230942806

优点

  1. 便于调试和验证,自底向上逐层调试验证
  2. 易扩充和易维护,各层之间调用接口清晰固定

缺点

  1. 仅可调用相邻低层,难以合理定义各层的边界
  2. 效率低,不可跨层调用,系统调用执行时间长

模块化

将内核划分为多个模块,各模块之间相互协作。

image-20240316231515887

内核=主模块+可加载内核模块

主模块:只负责核心功能,如进程调度、内存管理可加载

内核模块:可以动态加载新模块到内核,而无需重新编译整个内核

image-20240316231458786

优点:

1,模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发

2,支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核) ,增强OS适应性

3,任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高

缺点:

1.模块间的接口定义未必合理、实用

2.模块间相互依赖,更难调试和验证

大内核(宏内核)

image-20240316231644807

所有的系统功能都放在内核里(大内核结构的OS通常也采用了“模块化”的设计思想)

优点:

1.性能高,内核内部各种功能都可以直接相互调用

缺点:

1.内核庞大功能复杂,难以维护

2,大内核中某个功能模块出错,就可能导致整个系统崩溃

微内核

image-20240316231909630

只把中断、原语、进程通信等最核心的功能放入内核,进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态

优点

1.内核小功能少、易于维护,内核可靠性高

2.内核外的某个功能模块出错不会导致整个系统崩溃

缺点:

1.性能低,需要频繁的切换用户态/核心态。用户态下的各功能模块不可以直接相互调用,只能通过内核的“消息传递“来间接通信

  1. 用户态下的各功能模块不可以直接相互调用只能通过内核的“消息传递”来间接通信

外核

内核负责进程调度、进程通信等功能,

外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全

什么叫未经抽象的硬件资源

磁盘/内存的存储空间

普通操作系统,想要申请使用内存空间,希望一片连续的。但是需要经过虚拟的。实际上内存里的东西是离散的,,,

但是,用外核的操作系统可以直接分配未经抽象的!

如果用户知道这个东西需要频繁的随机访问,可以申请连续的磁盘块!!!或者连续的内存空间!!

效果就是右边那个粉色箭头。

image-20240316232513548

优点:

1,外核可直接给用户进程分配"不虚拟、不抽象"的硬件资源,使用户进程可以更灵活的使用硬件资源

2.减少了虚拟硬件资源的“映射层",提升效率

缺点:

  1. 降低了系统的一致性
  2. 使系统变得更复杂
posted @   晓梦ペ  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示