操作系统结构
随着操作系统的不断增多和代码规模的不断扩大,提供合理的结构对提升操作系统的安全与可靠性来说变得尤为重要。
1.分层法
指将操作系统分为若干层,最低层位硬件,最高层为用户接口,每层只能调用紧邻它的低层的功能和服务(类似于计算机网络高层使用低层的服务)
优点:
-
便于系统的调试和验证,简化了操作系统的设计和实现。我们可以从第一层开始向上进行调试,当我们发现到达某一层出现了错误的时候,那么这个错误大概就是在这一层的。
-
易扩充和易维护,在系统种增加,修改或替换一层种的模块或整个一层的时候,只要不改变相应层间的接口,就不会影响其他层
问题:
-
合理定义各层比较困难,系统不够灵活
-
效率较差,操作系统每执行一个功能,通常要自上而下的穿越很多层,效率较差
2.模块化
将操作系统按功能划分为若干个具有一定独立性的模块。每个模块都具有某方面的管理功能,并规定好各个模块之间的接口,使得各个模块可以互相通信。
还可以将一个模块进一步细分为具有一定功能的子模块,对于每个子模块同样规定好各个子模块之间的接口。
在模块划分的时候,如果将模块划分的太小,虽然能够降低模块本身的复杂性,但是会使得模块之间的联系过多,使得系统显得比较复杂;如果划分的太大,又会增加模块内部的复杂性。此外,在划分模块的时候,要充分考虑模块的独立性问题,因为模块独立性越高,各模块间的交互就越少,系统的结构也就越清晰。
衡量模块的独立性主要有两个标准:
-
内聚性:模块内部各部分间联系的紧密程度。内聚性越高,模块独立性越好
-
耦合度:模块间互相联系和互相影响的程度。耦合性越低,模块独立性越好
优点:
-
提高了操作系统设计的正确性,可理解性,可维护性
-
增强了操作系统的可适应性
-
加速了操作系统的开发过程
问题:
-
模块间的接口规定很难满足对接口的实际需求
-
各个模块设计者齐头并进,每个决定无法建立在上一个已验证正确的决定的基础上,因此无法找到一个可靠地决定顺序。(过于理想主义)
3.宏内核(大内核,单内核)
将系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为用户程序提供高性能的系统服务。
问题:随着体系结构和应用需求的不断发展,需要操作系统提供的服务越来越复杂,大内核的高性能优势由于不断扩大的内核变小了,这个时候就出现了微内核技术。
4.微内核
指将内核中最基本的功能保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低内核的设计复杂性。而那些被移出内核的操作系统代码根据分层的原则被划分成了若干个服务程序,它们之间的运行相互独立,而它们之间的交互则借助微内核进行。
微内核将操作系统划分为两大部分:微内核和多个服务器。
微内核是指能实现操作系统最基本功能的小型内核,通常包括:
-
与硬件处理紧密相关的部分
-
一些基本功能
-
客户与服务器之间的通信
操作系统中的绝大部分功能都放在微内核外的一组服务器中实现,运行在用户态,客户与服务器之间需要借助微内核提供的消息传递机制来实现交互。而这些服务器是作为进程来实现的。
微内核结构中,为了实现高可靠性,只有微内核运行在内核态,其余模块都运行在用户态,一个模块中的错误只会让这个模块崩溃,而不会让系统崩溃。
微内核通常具有以下的功能:
-
进程(线程)管理。进程之间的通信功能是微内核的OS最基本的功能,此外还有进程的切换,进程调度,以及多处理机之间的同步等功能。(机制放在核内,策略放在核外)
-
低级存储器管理。微内核中只配置最基本的低级存储器管理机制。
-
中断和陷入处理。微内核OS将与硬件紧密相关的一小部分放入微内核,此时微内核的主要功能是捕获所发生的中断和陷入事件,并进行中断相应处理,在识别中断或陷入的事件后,再发送给相关的服务器来处理。
微内核操作系统将进程管理,存储器管理以及I/O管理这些功能一分为二,属于机制的很小一部分放入微内核,而绝大部分放入微内核外的各种服务器实现。
优点:
-
扩展性和灵活性。由于许多功能从内核内分离出来,当我们想要修改某些功能的时候,只需要在相应的服务器中修改就可以了,或者再增加一个专用的服务器,而无需改动内核的代码
-
可靠性和安全性。模块崩溃只会影响到该模块,而不会影响到内核。
-
可移植性。与CPU和I/O硬件有关的代码都在内核里面,而其他的服务器都和硬件平台无关,所以将操作系统移植到另一个平台上要花的代价相对较少
-
分布式计算。客户和服务器之间,服务器和服务器之间的通信采用消息传递机制,这就使得微内核系统能很好的支持分布式系统和网络系统。
问题:性能问题,因为相对于宏内核,微内核需要在用户态和核心态之间来回的切换,操作系统的执行开销偏大。故宏内核适合那些对运行速度要求较高的领域,而微内核适合于需要高度可靠性的领域
5.外核
任务是为虚拟机分配资源,并检查这些资源的企图,以确保没有机器会使用他人的资源。
外核所作的只是保持多个虚拟机彼此之间不发生冲突
优点:
-
减少了映射层,虚拟机监控程序不需要维护一张用来重映像磁盘地址的表格。外核只需要记录已经分配给各个虚拟机的有关资源就好。
-
将多道程序(外核内)于用户操作系统代码(用户空间内)加以分离,而相应的负载并不重
相关文章:
操作系统结构
随着操作系统的不断增多和代码规模的不断扩大,提供合理的结构对提升操作系统的安全与可靠性来说变得尤为重要。 1.分层法 指将操作系统分为若干层,最低层位硬件,最高层为用户接口,每层只能调用紧邻它的低层的功能和服务(类似于计…...
[SSD科普] 固态硬盘物理接口SATA、M.2、PCIe常见疑问,如何选择?
前言犹记得当年Windows 7系统体验指数中,那5.9分磁盘分数,在其余四项的7.9分面前,似乎已经告诉我们机械硬盘注定被时代淘汰。势如破竹的SSD固态硬盘,彻底打破了温彻斯特结构的机械硬盘多年来在电脑硬件领域的统治。SSD数倍于HDD机…...
【Java学习笔记】3.Java 基础语法
Java 基础语法 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象ÿ…...
Python基础学习6——if语句
基本概念 if语句为条件判断语句,用来判断if后面的语句是真是假。if的用途有很多,比如作为条件测试可以判断两数是否相等与不等、进行数值笔记等等。例子如下: Lego_price (599, 799, 898) if Lego_price[0] 599:print("Correct!&quo…...
有免费的PDF转Word吗?值得收藏的7个免费 PDF转Word工具请收好
PDF 和 DOC 是人们在工作中广泛使用的两种最流行的文档格式。PDF 是 Adobe 的便携式文档格式,DOC 是 Microsoft 的 Word 文档格式。PDF 是一种更安全可靠的文件格式,因为它很难编辑 PDF 文件,但是有一些称为 PDF 编辑器的工具可用于编辑 PDF …...
Thinkphp6使用RabbitMQ消息队列
Thinkphp6连接使用RabbitMQ(不止tp6,其他框架对应改下也一样),如何使用Docker部署RabbitMQ,在上一篇已经讲了->传送门<-。 部署环境 开始前先进入RabbitMQ的web管理界面,选择Queues菜单,点…...
小成本互联网创业怎么做?低成本创业的方法分享
多数人都会有想法创业,尤其是在互联网上面创业,很多人看到了商机,但是因为成本的原因又放弃了,实际上,小成本也可以互联网创业!那么,小成本互联网创业怎么做?低成本创业的方法在这里…...
六、栈、栈的相关问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、栈 1.栈概述 2.栈的实现 2.1 栈的API 2.2 栈的实现 二、栈的括号匹配问题 1.问题描述 2.代码实现 三、逆波兰表达式求值问题 1.问题描述 2.代码 总结 前言 提…...
Java安全停止线程
Thread 类虽提供了一个 stop() 方法(已经被废弃),但由于 stop() 方法强制终止一个正在执行的线程,可能会造成数据不一致的问题,所以在生产环境中最好不要使用。 场景: 由于一些操作需要轮询处理ÿ…...
12 readdir 函数
前言 在之前 ls 命令 中我们可以看到, ls 命令的执行也是依赖于 opendir, readdir, stat, lstat 等相关操作系统提供的相关系统调用来处理业务 因此 我们这里来进一步看一下 更细节的这些 系统调用 我们这里关注的是 readdir 这个函数, 入口系统调用是 getdents 如下调试…...
Windows环境搭建Android开发环境-Android Studio/Git/JDK
Windows环境搭建Android开发环境-Android Studio/Git/JDK 因为休假回来后公司的开发环境由Ubuntu变为了Windows,所以需要重新配置一下开发环境。 工作多年第一次使用Windows环境进行开发工作,作次记录下来。 一、 Git安装 1.1git 标题软件下载 网址&…...
全国爱耳日丨听力受损严重有哪些解决办法
——【科学爱耳护耳,实现主动健康】随着数码电子设备使用越来越方便、日常使用时间越来越长,听力障碍、患上耳道疾病一系列问题也接踵而至,在当下我们必须重视听力健康,采取更科学的听音方式,保护听力健康,…...
【抽水蓄能电站】基于粒子群优化算法的抽水蓄能电站的最佳调度方案研究(Matlab代码实现)
👨🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...
【异常】因多租户字段缺少导致Error updating database. Column ‘tenant_id‘ cannot be null
一、报错内容 org.springframework.dao.DataIntegrityViolationException: ### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Column tenant_id cannot be null ### The error may exist in com/xxx/cloud/mall/admin/mapper/Goods…...
类和对象(上)
文章目录 面向对象的初步认知类的实例化this引用对象的构造及初始化封装static成员代码块内部类 对象的打印一、面向对象的初步认知 Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。在java中…...
Java经典面试题——谈谈 Java 反射机制,动态代理是基于什么原理?
典型回答 反射机制是 Java 语言提供的一种基本功能,赋予程序在运行时 自省(introspect,官方用语)的能力。通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法ÿ…...
19 客户端服务订阅机制的核心流程
Nacos客户端服务订阅机制的核心流程 说起Nacos的服务订阅机制,大家会觉得比较难理解,那我们就来详细分析一下,那我们先从Nacos订阅的概述说起 Nacos订阅概述 Nacos的订阅机制,如果用一句话来描述就是:Nacos客户端通…...
教师论文|科技专著管理系统
技术:Java、JSP等摘要:随着计算机和互联网技术的发展,社会的信息化程度越来越高,各行各业只有适应这种发展趋势,才能增强自己的适应能力和竞争能力,不断发展壮大。大学作为教育的基地,是社会进步…...
骨传导耳机是什么意思,骨传导耳机的好处具体有哪些
在这个全民都是手机的时代,各种蓝牙耳机,入耳式耳机,真无线耳机等各种款式琳琅满目。而骨传导耳机是一种全新的科技产物,顾名思义就是通过头骨振动将声音传至外耳内的耳机。由于无需入耳,不会对耳朵造成任何影响。那…...
elasticsearch—使用汇总
文档结构1、概念简介2、使用创景3、核心组件4、环境部署5、操作实践官方网站:https://www.elastic.co/cn/elasticsearch/ 官方手册:https://www.elastic.co/guide/en/elasticsearch/reference/8.6/getting-started.html 参考教程: Aÿ…...
聊一聊代码重构——我们为什么要代码重构
代码重构 事情的起因是在去年下半年,我们终于无法承受往年的历史包袱而决定开始进行代码重构。 在以前我们尝试过进行代码重构但是从来没有系统性的考虑过如何重构。在对代码重构的过程中很多经验都是来自《重构:改善既有代码的设计》这本书,…...
【Python学习笔记】第二十九节 Python2 和Python3发生了哪些变化
Python 版本分为两大流派,一个是 Python 2.x 版本,另外一个是 Python 3.x 版本,Python 官方同时提供了对这两个版本的支持和维护。2020 年 1 月 1 日,Python 官方终止了对 Python 2.7 版本(最后一个 Python 2.x 版本&a…...
[oeasy]python0099_雅达利大崩溃_IBM的开放架构_兼容机_oem
雅达利大崩溃 回忆上次内容 个人计算机浪潮已经来临 苹果公司迅速发展微软公司脱离mits准备做纯软件公司IBM用大型机思路制作的5100惨败 Commodore 64 既做计算机又做游戏机 计算机行业和游戏行业 跟随着底层技术不断迭代已经进入了战乱纷纷的年代最终又会如何呢?…...
学术论文投稿之同行评审过程中可能会遭遇哪些偏见?
同行评审过程的顺利进行,在很大程度上取决于学术界的积极参与和相互信任,以及需要参与各方都以负责任的态度行事。作为审稿专家,向作者提供公正、客观的评价是至关重要的。同行评审过程中,若有任何偏离客观性的行为,均…...
Python写一个自动发送直播弹幕的工具,非常简单
哈喽大家好,今天给大家用Python整一个可以在直播间自动发弹幕的工具,来为喜欢的主播疯狂扣6 ! 事情原由昨晚回家,表弟在看LOL直播,看得我气不打一处来,差点就想锤他。 身为程序员的表弟,看直…...
学生档案管理系统的设计与实现
技术:Java、JSP等摘要:本设计是为托普学院学生档案的管理实现电子化而设计的,系统开发采用J2EE技术,数据库采用了SQL Server 2005,因而系统具有很好的扩展性、可移植性,实现了教学资源的信息化管理。主要功…...
JavaEE学习笔记-SpringBoot快速上手、部分注解解释
SpringBoot快速上手 一、快速创建SpringBoot应用1.1利用IDEA提供的Spring Initializr创建Spring Boot应用1.2Spring Boot生成的项目结构介绍1.3初步测试后端是否OK(建立一个controll类)二、热部署2.1 添加依赖2.2 Setting处项目自动化设置2.3 具体项目设置2.4 待选步骤三、注…...
【Python学习笔记】第二十六节 Python PyMySQL
一、什么是 PyMySQL?PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库。可以用它来连接Python和MySQL。如果你追求速度,这是一个很好的选择,因为它比mysql-connector-python快。PyMySQL 遵循 Python 数据库 API v2.0 规范&#x…...
Android问题笔记 -关于Kotlin插件版本的问题
专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断…...
【同步工具类:Phaser】
同步工具类:Phaser介绍特性动态调整线程个数层次Phaser源码分析state 变量解析构造函数对state变量赋值阻塞方法arrive()awaitAdvance()业务场景实现CountDownLatch功能代码测试结果实现 CyclicBarrier功能代码展示测试结果总结介绍 一个可重复使用的同步屏障,功能…...
网站建设与管理是哪个软件/关键词seo优化软件
http://youngking999999.blog.163.com/blog/#m0&t1&cfks_087068084083085065085080083095085085085067085094094074087在一位博友那里看到这些经典屁话,觉得有意思,引用来给我自己看。原因很简单,它一部分为经典,一部分是…...
广东知名网站/网站流量分析报告
我写了一个bash脚本,它在指定的文件夹中找到CSV文件,并使用正确的配置文件将它们管道到logstash中.但是,当运行此脚本时,我遇到以下错误,说关闭进程停止,导致无限循环,直到我用ctrl c手动停止它:[2018-03-22T08:59:53,833][INFO ][logstash.runner ] Starting Logst…...
大连做网站的网络公司/seo哪个软件好
一、安装Java SE JKD A、下载 http://www.oracle.com/technetwork/java/javase/downloads/index.html?ssSourceSiteIdocomen 选择最新版本,当前最新版本 1.8.0 。下载 jdk-8u45-linux-x64.tar.gz 。 B、解压下载包,添加环境变量。 $ sudo vim ~/.bash…...
沧州有做网站的吗/有什么平台可以推广
问题:生成时提示 gl.h中出现一堆错误,如 error C2144: 语法错误 : “void”的前面应有“;” error C2182: “APIENTRY” : 非法使用“void”类型 error C2086: “int APIENTRY” : 重定义 error C2146: 语法错误 : 缺少“;”(在标识符“glClearStencil”…...
金泉网网站建设/网站优化入门
dva的思想还是很不错的,大大提升了开发效率,dva集成了Redux以及Redux的中间件Redux-saga,以及React-router等等。得益于Redux的状态管理,以及Redux-saga中通过Task和Effect来处理异步的概念,dva在这些工具的基础上高度封装,只暴露…...
施工企业上市公司/郑州seo网络推广
写这篇文章基于自己多年的研究(嘿嘿,开个玩笑) 本文属于翻译,但是是按照自己理解的意思翻译的 ,原文链接:http://www.mollypages.org/misc/js.mp 1.所有实例也就是对象 继承于 创建他们函数的 原型对象; 反…...