计算机操作系统体系结构

news2024/11/27 21:10:15

我是荔园微风,作为一名在IT界整整25年的老兵,今天给大家讲讲操作系统。

当今的操作系统趋向于越来越复杂,因为它们提供许多服务,并支持各种硬件和软件资源(请参见“操作系统思想:尽量保持简单”,以及“系统设计师与系统工程师”)。通过将操作系统的组件组织起来,并指定每一个组件的执行权限,操作系统体系结构能够帮助设计人员管理这些复杂性。在单内核设计中,操作系统的每一个组件都包含在内核中;在微内核设计中,只有必要的组件包含在内核中。(请参见“操作系统思想:体系结构”)。

操作系统思想:
尽量保持简单(Keep It  Simple,KIS)

复杂系统在设计、实现、测试、调试和维护等方面的费用都很昂贵。操作系统设计人员经常选择最简单的几种方法解决某一特定问题。尽管有时采用更复杂的方法可能会具有更好的性能,或者因为有一些其他改进值得采用这样一种方法。这种折中在计算方面是很普遍的。

对数组进行简单的线性搜索在程序中不算什么,但是与更精确和更复杂的二进制搜索相比,其运行速度要慢一些。树形数据结构比数组操作起来更复杂,但是它可以更容易、更快速地完成某些类型的插入和删除。

一般情况下,在解决操作系统问题和开发资源管理策略时,我们会交替考虑一些方法。当我们阅读这些讨论时,就会明白在简单性和复杂性之间的权衡折衷。当我们阅读这些解决方案时,可能倾向于喜欢某些方法。我们将来所使用的系统可能要求采用不同的方法。我们的原则是对普遍采用的一些方法从正反两方面列出其优缺点,帮助大家亲自做出业界最好的判断。

系统设计师与系统工程师

如果我们跻身于操作系统开发领域,并具有较高的地位,那么就可能会拥有一个头衔,例如系统设计师或系统工程师。几年前,在一次会议上,一名软件同行的专家作为来宾在会上进行演讲,他被介绍为系统设计师。他说道:“你们可能想知道系统设计师与系统工程师有什么区别”。

他用建筑做类比,谦逊地对这种差别做了解释,“当一名工程师建造一座大楼时,尽管它的构造非常棒,但却太难看,人们将其拆毁了;当一名设计师建造一座大楼时,虽然它的外观非常漂亮,但它却倒塌了!”

对操作系统设计者的启示:我们需要将体系结构和工程两方面综合起来考虑,这样才能确保系统既有好的构造,又有优美的外观。相比之下,前者更为重要。

操作系统思想:
体系结构

就像建筑师使用不同的方法设计大楼一样,操作系统设计人员也采用不同的方法来设计操作系统体系结构。有时,这些方法并不混杂使用,整个系统只使用一种体系结构方法。有时则混合使用这些方法,可以取几种体系结构风格的优点。设计人员所选择的方法在操作系统初始实现及演化中起着举足轻重的作用。以后进一步开发时再要改变采用的方法就会越来越困难,因此,在系统开发早期选择一个合理的方法是很重要的。一般地说,第一次就正确建造一座大楼比起造好之后再做修改要容易得多。

在软件系统中,比如操作系统,最常采用的体系结构方法之一是分层。采用这种方法,将软件分成模块,这些模块称为层,每一层都完成某些任务。每一层都调用它下一层所提供的服务,而这一层的实现却对它上面的一层隐藏起来。分层方法同时具有模块性和信息隐藏的软件工程技术的优点,为构建高质量的系统奠定了坚实的基础。整本书中都要讨论分层软件方法,我们先从计算机先驱 Dijkstra 曾经研制的THE系统谈起,接下来,分别介绍  Linux和 Windows XP 操作系统是如何使用分层方法的。

单内核体系结构

单内核操作系统(monolithic operating system)是最早出现的也是最常用的操作系统体系结构。在这种结构中,操作系统的每一个组件都包含在内核中,并能够直接与其他任何组件进行通信(即简单地通过函数调用来实现通信)。

一般情况下,内核执行可以不受限制地访问计算机系统。OS/360,VMS 和Linux 等操作系统明显地具有单内核操作系统的特性。由于组件之间直接进行通信,所以单内核操作系统效率很高。因为单内核操作系统将组件集合在一起,所以无论如何,要查出bug和其他错误的来源都不是一件容易的事。而且,由于所有代码的执行都可以不受限制地访问系统,所以单内核系统尤其容易受到错误代码或者恶意代码的破坏。

分层体系结构

随着操作系统变得越来越大,越来越复杂,完全使用单内核设计就不太适用了。对操作系统进行分层可以解决这一问题,这种方法将执行相似功能的那些组件分组成层。每一层都只能与其相邻的上层或相邻的下层进行通信。较低的层使用一个将其实现隐藏起来的接口为较高的层提供服务。

分层的操作系统比单内核操作系统具有更好的模块性,因为对每一层的实现进行修改时,都不需要修改其他层。模块化系统具有整个系统都可以重用的自含式组件。每一个组件都将其完成作业的具体方式隐藏起来,并提供了一个标准接口,其他组件可以使用此接口请求这一组件的服务。模块性使操作系统具有结构化和一致性。

但是,采用分层方法,一个用户进程的请求可能需要传过许多层才能得到服务;因为必须调用额外的方法,才能将数据从一个层传递到邻接的层,所以与单内核操作系统相比,其性能会有所降低。在单内核操作系统中,要为与此相似的请求提供服务,可能只需要执行一次调用。另外,由于所有的层都可以不受限制地访问系统,所以分层的内核也容易遭到错误代码或恶意代码的破坏。THE操作系统是分层式操作系统的一个早期范例。107今天的许多操作系统,包括 Windows XP 和 Linux,都在一定程度上实施了分层。

微内核体系结构

微内核操作系统(microkernel operating system)体系结构只提供少量的服务,力图使内核较小,且可伸缩。一般情况下,这些服务包括底层内存管理、进程间通信以及基本的进程同步(进程同步使进程能够协作完成任务)。在微内核设计中,大多数操作系统组件(例如,进程管理、网络连接、文件系统交互和设备管理)在内核的外部执行,它们具有较低的权限级别。

微内核展示了高度的模块性,这样的系统可扩展、可移植和可伸缩。而且,因为微内核的执行并不依赖于每一个组件,所以如果一个或多个组件发生故障,也不会引起操作系统故障。但是,这种模块性的获得是以增加模块间的通信级数为代价的,这就降低了系统性能。虽然当今流行的操作系统很少有完全基于微内核设计的系统,但是,Linux和Windows XP等操作系统都包含模块组件。

网络操作系统和分布式操作系统

电信技术的发展深刻地影响了操作系统。网络操作系统(network operating system)使其进程能够访问驻留在网络上的其他计算机上的资源(例如,文件)。许多网络操作系统和分布式操作系统的结构经常是基于客户机/服务器模型的。在这种网络中,客户机借助于合适的网络协议请求资源,例如,文件和处理器时间。操作系统设计人员在设计这样的网络时,必须仔细地考虑如何管理数据和计算机之间的通信。

有些操作系统具有明显的网络操作系统的特性。在网络环境中,一个进程可以在创建此进程的计算机上执行,或者也可以在网络中的其他计算机上执行。在有些网络操作系统中,用户可以精确地指定他们的进程在哪里运行;在另外一些网络操作系统中,则由操作系统确定进程在哪里执行。例如,系统可能确定,如果一个进程在具有轻负载的计算机上执行,则会有更高的效率。

网络文件系统是网络操作系统的一个重要组件。在最低层次上,用户获得另一台机器上的资源是通过显式地连接到那台机器并检索文件获得的。较高层的网络文件系统使用户能够访问远程文件,就好像这些文件在本地系统上一样。网络文件系统的范例包括 Sun公司的网络文件系统(Network File System,NFS)以及卡内基·梅隆大学(CMU)的 Andrew 和Coda 文件系统。

分布式操作系统(distributed operating system)是一个单一的操作系统,它管理多个计算机系统上的资源。分布式系统(distributed system)给人一种假像,将多台计算机视为单一的一台功能强大的计算机,这样一个进程可以访问所有的系统资源,而与进程在分布式系统的计算机网络内的位置无关。分布式操作系统常常很难实现,并且需要复杂的算法才能使进程进行通信和共享数据。分布式操作系统的范例有麻省理工学院(MIT)的Chord 操作系统和阿姆斯特丹自由大学(Vrije Universiteit in Amsterdam)的Amoeba 操作系统。

作者简介:荔园微风,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1708399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spark的简单学习二

一 spark sql基础 1.1 Dataframe 1.介绍: DataFrame也是一个分布式数据容器。然而DataFrame更像传统数据库的二维表 格,除了数据以外,还掌握数据的结构信息,即schema。同时,与Hive类似,DataFrame也支 持…

基于Python的k-means聚类分析算法的实现与应用,可以用在电商评论、招聘信息等各个领域的文本聚类及指标聚类,效果很好

以微博考研话题为例 思路步骤: 数据清洗: 使用pandas读取数据文件,并进行数据清洗和预处理,包括去除重复值、数据替换等。 数据处理实现: 数据处理的过程如下: 数据清洗主要包括去重和数据转换两个步骤…

安卓 view淡入淡出(fade in fade out) kotlin

文章目录 前言一、布局文件二、kotlin扩展方法1.fadeOutAnimation 淡出动画2.fadeInAnimation 淡入动画 三、使用总结 前言 好久没写文章了,简单码一个淡入淡出,我们先上效果图 那么接下来上代码 一、布局文件 我这边直接将activity_main.xml改为下列代码,可以看到其中包含一…

利用sql注入对某非法网站的渗透

本文仅用于技术讨论,切勿用于违法途径,且行且珍惜, 所有非经授权的渗透,都是违法行为 前言 这段时间一直在捣鼓sql注入,最近又通过一个sql注入点,成功进入某个非法网站的后台,拿到整个网站的…

具有固定宽度的盒子:\makebox, \parbox

makebox \makebox 是 LaTeX 中的一个命令&#xff0c;用于创建一个具有固定宽度的盒子&#xff0c;并在该盒子内放置内容。这个命令可以用于控制文本或对象的位置和对齐。 语法如下&#xff1a; \makebox[<width>][<alignment>]{<content>}其中&#xff1…

世界改变了我?还是我在改变着这个世界?-教育的魅力

目录 一、背景二、过程1.拥抱不确定性的心态2.应对变数的积极3.螺旋向上的能力4.突破自我的意志 三、总结 一、背景 现在这个时代唯一确定的就是不确定&#xff0c;社会发展太快了&#xff0c;尤其是中国的发展速度&#xff1b;大国生态人口生态。 有时候隐约中我自己也觉得和…

短剧解说一键生成原创文案的快速方法

如今短剧创作火的一塌糊涂&#xff0c;它们以其简洁明了的剧情、生动有趣的角色和紧凑的节奏&#xff0c;吸引了大量观众的关注。因此&#xff0c;它所带来的流量是非常巨大&#xff0c;不少人将流量的获取瞄准了短剧创作领域以及短剧解说领域。而对于短剧解说人员来讲&#xf…

FreeRtos进阶——消息队列的操作逻辑

消息队列&#xff08;queue&#xff09; 在不同的任务之间&#xff0c;如果我们需要互相之间通信&#xff0c;使用全局变量进行通信&#xff0c;是一种不安全的通信的方式。为保证线程安全&#xff0c;我们需要引入消息队列的通信方式。 粗暴的消息队列 为保证线程的安全&am…

数字化工厂怎么收集,处理数据?

数字化工厂的数据收集与处理 数字化工厂是现代化工厂&#xff0c;利用数字技术和数据分析提高效率和优化流程。数据分析作为数字化工厂的核心技术&#xff0c;对数据的获取与处理至关重要。在数字化工厂中&#xff0c;数据的来源包括企业内部信息系统、物联网信息以及外部信息&…

VSCode安装platformio插件

文章目录 一、安装VSCode二、安装platformio&#xff08;一&#xff09;整理文件夹&#xff08;二&#xff09;整理Python环境&#xff08;三&#xff09;安装platformio 三、创建ESP8266项目四、使用命令行创建项目五、创建项目太久怎么办六、参考链接 一、安装VSCode VSCode…

探寻导师:2024年最新研究生导师评价汇总

随着考研热潮的不断升温&#xff0c;对于研究生导师的选择变得愈发重要。导师不仅关系到研究生的学术成长&#xff0c;还直接影响到未来的职业发展。然而&#xff0c;如何找到一位合适的导师成为许多考生头疼的问题。为了帮助广大考生更好地选择导师&#xff0c;整理了最新最全…

如何破解navicat16

先安装好没破解的navicat16 以管理员身份运行 ‘无限试用Navicat.bat’ 复制这个 点击属性 打开文件所属位置 把复制的文件粘贴进去 直接启动navicat16

提升(或降低)插入的内容的位置:\raisebox

\raisebox 是 LaTeX 中的一个命令&#xff0c;用于提升&#xff08;或降低&#xff09;插入的内容&#xff08;如文本、图像等&#xff09;的位置。该命令可以用于调整垂直位置&#xff0c;使内容相对于周围内容上下移动。 语法如下&#xff1a; \raisebox{<distance>}…

论文阅读笔记:Task-Customized Mixture of Adapters for General Image Fusion

论文阅读笔记&#xff1a;Task-Customized Mixture of Adapters for General Image Fusion 1 背景2 创新点3 方法4 模块4.1 任务定制混合适配器4.2 提示生成4.3 提示驱动融合4.4 互信息正则化MIR4.5 任务定制化损失 5 实验5.1 VIF任务5.2 MEF任务5.3 MFF任务5.4 消融实验5.5 性…

设计模式19——观察者模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 观察者模式&#xff08;Observ…

Java程序员必备技能之MySQL数据库 图解整理/快速入门

恭喜大家来到全新的篇章——MySQL数据库,这一篇我们将学会MySQL数据库的原理、使用sql对数据库的增删改查操作、以及对MySQL数据库的权限管理和用户管理等内容。请大家耐心看下去,相信大家在看完这篇文章后,一定可以学会MySQL数据库(不会Java也可以学会!)。 ps:想要补充…

AAA实验配置

一、实验目的 掌握AAA本地认证的配置方法 掌握AAA本地授权的配置方法 掌握AAA维护的方法 1.搭建实验拓扑图 2.完成基础配置&#xff1a; 3.使用ping命令测试两台设备的连通性&#xff1a; 二、配置AAA 1.打开R1&#xff1a;配置AAA方案 这两个方框内的可以改名&#xff0c…

5.26 基于UDP的网络聊天室

需求&#xff1a; 如果有人发送消息&#xff0c;其他用户可以收到这个人的群聊信息 如果有人下线&#xff0c;其他用户可以收到这个人的下线信息 服务器可以发送系统信息实现模型 模型&#xff1a; 代码&#xff1a; //chatser.c -- 服务器端实现 #include <stdio.h>…

php TP8 阿里云短信服务SDKV 2.0(跳大坑)

安装&#xff1a;composer require alibabacloud/dysmsapi-20170525 2.0.24 官方文档&#xff1a;短信服务_SDK中心-阿里云OpenAPI开发者门户 (aliyun.com) 特别注意&#xff1a;传入参数获得值形式 这样也不行 $sendSmsRequest new SendSmsRequest($addData); 还有一个大坑…

PLC远程调试

随着工业自动化的快速发展&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09;已经成为现代工业生产线的核心控制设备。然而&#xff0c;传统的PLC调试方式往往受限于地理位置和物理连接&#xff0c;使得工程师在调试过程中面临诸多不便。在这个背景下&#xff0c;HiWoo …