计算机操作系统核心组件

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

操作系统核心组件

用户借助于一个或多个应用程序与操作系统进行交互,常常是通过一个称为shell的特殊应用程序进行的,shell也叫作命令解释器。105今天的大多数shell,其实现或者是基于文本的接口,使用户能够从键盘发送命令;或者是GUI,允许用户单击和拖放图标,以便向操作系统请求服务(例如,打开一个应用程序)。

例如,微软公司的Windows XP提供了一个GUI,用户可以通过此GUI发送命令,但用户也可以采用另一种方法,打开一个接受输入命令的命令提示窗口。

包含操作系统核心组件的软件称为内核。典型的操作系统核心组件包括:

进程调度程序(process scheduler),它确定什么时候在处理器上执行进程以及执行多长时间。

内存管理程序(memory manager),它确定什么时候将内存分配给进程以及如何分配,同时也确定当主存储器变满时该怎么办。

I/O管理程序(I/O manager),分别为来自硬件设备或到硬件设备的请求提供输入和输出服务。

进程间通信(IPC)管理程序(interprocess communication manager),它允许进程之间互相通信。

文件系统管理程序(file system manager),它将存储设备上赋予名称的数据集组织起来,并为访问这些设备上的数据提供接口。

几乎所有的现代操作系统都支持多道程序设计环境,在这种环境中,多个应用程序可以同时执行。操作系统最基本的职责之一就是确定哪个处理器执行进程以及进程执行多长时间。

程序可以包含若干元素,这些元素共享数据,且可以同时执行。例如,Web浏览器可以包含若干单独的组件,分别用来读取Web页面的HTML,检索页面的媒体(例如,图像、文本和视频),在浏览器窗口中显示页面。这种程序组件称为线程(thread),它们独立地执行,但在公共内存空间中完成它们的任务。

一般情况下,许多进程竞争使用处理器。进程调度程序可以根据若干标准做出其决策,例如,可以根据进程的重要性、估算的进程运行时间或者它已经为获得处理器等待了多长时间等标准。

内存管理程序为操作系统和为进程分配内存。为了确保进程不妨碍操作系统和确保进程之间不互相干扰,内存管理程序阻止还没有为其分配内存的每一个进程访问内存。当今几乎所有的操作系统都支持虚拟内存。

操作系统的另一个核心功能是管理计算机的输入/输出(I/O)设备。输入设备包括键盘、鼠标、麦克风和扫描仪等,输出设备包括显示器、打印机和扬声器等。存储设备(例如,硬盘、可擦写光盘和磁带)和网卡既起着输入设备的作用,也起着输出设备的作用。当一个进程期望访问一个I/O设备时,它必须向操作系统发出系统调用。随后由设备驱动程序(devicedriver)来处理此系统调用,设备驱动程序是一个直接与硬件交互的软件组件,它常常包含设备专用的命令,以及用来完成请求的输入/输出操作的一些其他指令。

大多数计算机系统能够永久性地存储数据,即计算机关机之后数据仍能存留。因为相对来说主存储器较小,且计算机关机时主存储器中的数据会丢失,所以使用永久性的辅助存储设备,最常用的就是硬盘。当一个进程请求访问磁盘设备上的信息时,就发生了磁盘I/O,这是最常见的I/O 形式之一。

但是,辅助存储器比处理器和主存储器慢得多。操作系统的磁盘调度程序(diskscheduler)组件负责对磁盘I/O 请求重新排序,以便获得最佳性能,使进程等待磁盘I/O的时间最小。独立磁盘冗余阵列(Redundant Array of Independent Disk,RAID)系统通过一次使用多个磁盘为I/O请求提供服务,试图减少进程等待磁盘I/O的时间。

操作系统使用文件系统来组织并有效地访问存放在存储设备上的指定数据集,这些数据集称为文件。

进程(或线程)经常是互相协作来完成一个共同的目标,因此,许多操作系统都提供了进程间通信(IPC)和同步机制,以便简化这种并发程序设计。进程间通信使进程借助于进程(和线程)之间发送的消息进行通信,通过使用同步机制所提供的结构,可以确保进程(和线程)合适地共享数据。

操作系统目的

用户一定期望操作系统具有某些特性,例如:

效率(efficiency)

健壮性(robustness)

可伸缩性(scalability)

可扩展性(extensibility)

可移植性(portability)

安全性(security)

交互性(interactivity)

易使用性(usability)

高效的操作系统(efficient operating system)具有高吞吐量(throughput)和低平均周转时间。吞吐量是指在一定时限内处理器能够完成的工作量。由前述可知,操作系统的一个作用就是为多个应用提供服务,效率高的操作系统提供这些服务所花费的时间较短(请看下面“操作系统思想:性能”)。

健壮的操作系统(robust operating system)具有容错功能和可靠性,这样的系统不会由于单独的应用程序或硬件错误而发生故障,即使发生故障,也会很适度(即将工作损失减到最小,阻止损坏系统硬件)。这样一个操作系统将向每一个应用提供服务,除非它所依赖的硬件发生故障。

可伸缩的操作系统(scalable operating system)能够使用添加的资源,如果一个操作系统不是可伸缩的,那么它们很快就无法充分地利用补充的资源。可伸缩操作系统能够容易地调整其多道程序设计的道数。对多处理机系统来说,可伸缩性是特别重要的一个属性。如果向系统中添加更多的处理器,理想情况下,处理能力应该与进程数量成比例地增加,虽然实际上这种情况并不会发生。

可扩展的操作系统(extensible operating system)能很好地适应新技术,并提供对操作系统进行扩展的能力,以便完成原先设计时所不能完成的任务。

可移植的操作系统(portable operating system)设计时要使它能够运行于许多种硬件配置上。应用程序的可移植性也很重要,因为开发应用程序很昂贵,所以同样的应用程序应该运行于各种硬件配置中,这样就可以减少开发成本。要达到这种可移植性,操作系统起着至关重要的作用。

安全的操作系统(secure operating system)可以阻止用户和软件未经授权而访问服务和资源。保护(protection)指的是实现系统安全策略的一种机制。

交互式操作系统(interactive operating system)允许应用程序快速响应用户动作或者事件。

易使用的操作系统(usable operating system)有这样一种潜在的可能性,可以服务于相当大的用户群。这些操作系统一般都提供易于使用的用户界面,例如Linux、Windows XP和MacOSX等都是具有易使用特性的操作系统,因为它们每一种操作系统都支持大量的应用程序集,并提供标准的用户界面。许多实验用的和理论研究用的操作系统并不支持大量的应用程序集,或提供友好的用户界面,因此,就不能认为这些操作系统是易使用的操作系统。

操作系统思想:

性能

操作系统最重要的目标之一就是尽量使系统性能最优。在日常生活中,我们都会接触到性能,例如,我们测量汽车的汽油里程,我们记下各种速度记录,教授给学生评定成绩,雇员接受老板的绩效评估,公司总裁的业绩由公司的利润来衡量等。

高性能是操作系统成功必不可少的条件。但是,性能到底高不高,常常要看由谁来评判——有多种方法可以对操作系统性能进行分类。例如,如果是批处理系统,则吞吐量就是一个很重要的测量标准;如果是交互式分时系统,则快速响应显得更为重要。

有许多提高性能所采用的技术。例如,将处理器时间分配给进程,以提高按照交互性和吞吐量来衡量的系统性能。将内存分配给进程,以减少进程的执行时间。着重介绍通过对I/O请求重新排序来提高磁盘性能。根据若干重要的性能标准对系统进行评估。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL——SELECT相关的题目

目录 197、上升的温度 577、员工奖金 586、订单最多的客户 596、超过5名学生的课 610、判断三角形 620、有趣的电影 181、超过经理收入的员工 1179、重新格式化部门表 1280、学生参加各科测试的次数 1068、产品销售分析I 1075、项目员工I 1084、销售分析III 1327、列出指…

Qt 报错总结 No suitable kits found

目录 “No suitable kits found” 解决 解决方法参考: chatGPT辅助解决QT构建报错error: multiple target patterns 我的解决方法:把语言设置为空 “No suitable kits found” 解决 没有找到合适的kits套件,在安装Qt Creator时没有安装Min…

程序员做推广?我劝你别干

关注卢松松,会经常给你分享一些我的经验和观点。 这是卢松松会员专区,一位会员朋友的咨询,如果你也有自研产品,但不知道如何推广,一定要阅读本文!强烈建议收藏关注,因为你关注的人,决定你看到的…

Ubuntu切换内核版本

#安装内核安装工具 sudo apt-get install software-properties-common sudo add-apt-repository ppa:cappelikan/ppa sudo apt-get update sudo apt-get install mainline#安装指定内核版本(有些版本并不能安装成功) mainline install 5.14.10#更新GRUB配置 sudo update-grub#查…

Linux 软件包管理器 yum的下载、功能介绍及使用

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:青果大战linux 总有光环在陨落,总有新星在闪烁 Linux下的三种软件安装方…

burpsuite抓包响应报文乱码

1、响应报文中的中文信息乱码 2、解决办法 3、设置成功后重新发起请求

储油罐智控:ThingsBoard网关实现液位温度精准监测

储油罐是采油、炼油企业储存油品的重要设备,对储油罐液位、温度的实时数据监测对企业的库存和安全管理有着重大意义。 场景 对于企业,尤其是加油站来说,高效的罐体液位、温度监测对于优化燃油库存、防止短缺或过剩至关重要。不准确的燃油液位…

05Django项目--前端公共文件和其他html文件的适配

对应视频链接点击直达 Django项目--前端公共文件和其他html文件的适配 对应视频链接点击直达前端页面准备Pubilc页面设置 OVER,不会有人不会吧不会的加Q1394006513结语 接着上一节 前端页面准备 为了方便大家更好的复制,我把整个项目及templates文件夹和…

RabbitMQ(一)概述第一个应用程序

文章目录 概述AMQP和JMS官网安装开始第一个程序 概述 消息队列是实现应用程序和应用程序之间通信的中间件产品 AMQP和JMS 工作体系 官网 https://www.rabbitmq.com/ RabbitMQ是一款基于AMQP、由Erlang语言开发的消息队列产品 安装 # 拉取镜像 docker pull rabbitmq:3.13-m…

运营抖音小店,这件事情每天都需要去做!一个都不能少!

大家好,我是电商小V 咱们的店铺开好之后,然后运营自己的店铺每天需要做好什么事情呢?这个问题是很多新手小伙伴开通抖店之后最关心的问题,咱们今天就来详细的说一下运营抖音小店每天需要做什么呢? 第一点:奖…

commvault学习(8):备份与恢复sql server

1.安装sql server2008r2 安装sql server 2.在客户端添加cv代理mssql server 如果此前的cv代理中没有sql server,那么可以手动再补充 点击setup 添加MSSQL Server 将程序添加到windows防火墙排除表 勾选自动探寻实例 3.备份sql server 3.1配置数据库内容 右击默…

Python操作MySQL实战

文章导读 本文用于巩固Pymysql操作MySQL与MySQL操作的知识点,实现一个简易的音乐播放器,拟实现的功能包括:用户登录,窗口显示,加载本地音乐,加入和删除播放列表,播放音乐。 点击此处获取参考源…

three.js能实现啥效果?看过来,这里都是它的菜(08)

在Three.js中实现旋转动画的原理是通过修改对象的旋转属性来实现的,通常使用渲染循环(render loop)来更新对象的旋转状态,从而实现动画效果。 具体的原理包括以下几个步骤: 创建对象:首先创建一个需要旋转…

东软联合福建省大数据集团打造“数据要素×医疗健康”服务新模式

5月23日,东软集团与福建省大数据集团有限公司在福州签订战略合作协议。 据「TMT星球」了解,双方将在健康医疗数据要素价值领域展开合作,通过大数据服务,赋能商业保险公司的产品设计和保险两核,打造“数据要素医疗健康…

Superset二次开发之柱状图自定义初始化时Data Zoom数据缩放值

Superset项目柱状图来自Echarts 首先Echarts实现柱状图数据缩放初始化默认值的效果 核心代码 设置Datazoom 的start 和end myChart.showLoading(); $.get(ROOT_PATH + /data/asset/data/obama_budget_proposal_2012.list.json,function (obama_budget_2012) {myChart.hideLo…

工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端

工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端 采用javaspringboot-vue.jsuniapp开发 随着工业4.0的快速发展,制造执行系统(MES)成为了智能制造的核心。今天,将为大家介绍一款开源的MES系统——MES管…

【每日一题】52.20个机器学习问题 2 (模型部署、实践流程和应用问题)

在上一篇《20个机器学习问答题》中,问题主要围绕机器学习的基础概念和理论知识。 这次,本篇内容针对机器学习的实践和应用继续提出了20个不同的问题。【点击跳转原文】 在实际应用中,机器学习模型的建立流程是怎样的? 机器学习模…

Python代码注释的艺术与智慧

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:注释的必要性 二、注释的误区:不是越多越好 过度注释的问题…

【NumPy】关于numpy.transpose()函数,看这一篇文章就够了

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

python实现nacos服务注册和HTTP探活

如果使用nacos-sdk-python(注意适用nacos版本),需要按照下面的链接修改源码的bug https://github.com/nacos-group/nacos-sdk-python/issues/135 代码如下: import nacos import threading import socket import requests impo…