【操作系统专题】详解操作系统 | 操作系统的目标和功能 | 操作系统如何工作

news2024/11/19 9:20:01

🍁你好,我是 RO-BERRY
📗 致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识
🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油

在这里插入图片描述


目录

  • 1.操作系统的目标和功能
  • 2.作为用户/计算机接口的操作系统
  • 3.作为资源管理器的操作系统
  • 4. 串行处理
    • 4.1 简单批处理系统
    • 4.2 多道程序设计批处理系统
  • 5.分时系统


1.操作系统的目标和功能

📖操作系统是控制应用程序执行的程序,并充当应用程序和计算机硬件之间的接口。它有下面三个目标:

  • 方便:操作系统使计算机更易于使用。
  • 有效:操作系统允许以更有效的方式使用计算机系统资源。
  • 扩展能力:在构造操作系统时,应该允许在不妨碍服务的前提下有效地开发、测试和引进新的系统功能。

接下来将依次介绍操作系统的这三个目标。


2.作为用户/计算机接口的操作系统

🎄为用户提供应用的硬件和软件可以看做是一种层次结构,如下图所示。应用程序的用户,即终端用户,通常并不关心计算机的硬件细节。因此,终端用户把计算机系统看做是一组应用程序。一个应用程序可以用一种程序设计语言描述,并且由程序员开发而成。

在这里插入图片描述

如果需要用一组完全负责控制计算机硬件的机器指令开发应用程序,将会是一件非常复杂的任务。为简化这个任务,需要提供一些系统程序,其中一部分称做实用工具,它们实现了在创建程序、管理文件和控制I/O设备中经常使用的功能。

程序员在开发应用程序时将使用这些功能提供的接口;在应用程序运行时,将调用这些实用工具以实现特定的功能。最重要的系统程序是操作系统,操作系统为程序员屏蔽了硬件细节,并为程序员使用系统提供方便的接口。它可以作为中介,使程序员和应用程序更容易地访问和使用这些功能和服务。

简单地说,操作系统通常提供了以下几个方面的服务:

  • 程序开发:操作系统提供各种各样的工具和服务,如编辑器和调试器,用于帮助程序员开发程序。通常,这些服务以实用工具程序的形式出现,严格来说并不属于操作系统核心的一部分;它们由操作系统提供,称做应用程序开发工具。
  • 程序运行:运行一个程序需要很多步骤,包括必须把指令和数据载入到内存、韧始化IO设备和文件、准备其他-一些资源。操作系统为用户处理这些调度问题。
  • IO设备访问:每个I/O设备的操作都需要特有的指令集或控制信号,操作系统隐藏这些细节并提供了统一的接口,因此程序员可以使用简单的读和写操作访问这些设备。文件访问控制:对操作系统而言,关于文件的控制不仅必须详细了解IO 设备(磁盘驱动器、磁带驱动器)的特性,而且必须详细了解存储介质中文件数据的结构。此外,对有多个用户的系统,操作系统还可以提供保护机制来控制对文件的访问。
  • 系统访问:对于共享或公共系统,操作系统控制对整个系统的访问以及对某个特殊系统资源的访问。访问功能模块必须提供对资源和数据的保护,以避免未授权用户的访问,还必须解决资源竞争时的冲突问题。
  • 错误检测和响应:计算机系统运行时可能发生各种各样的错误,包括内部和外部硬件错误,如存储器错误、设备失效或故障,以及各种软件错误,如算术溢出、试图访问被禁止的存储器单元、操作系统无法满足应用程序的请求等。对每种情况,操作系统都必须提供响应以清除错误条件,使其对正在运行的应用程序影响最小。响应可以是终止引起错误的程序、重试操作或简单地给应用程序报告错误。

3.作为资源管理器的操作系统

🍁一台计算机就是一组资源,这些资源用于对数据的移动、存储和处理,以及对这些功能的控制。而操作系统负责管理这些资源。
那么是否可以说是操作系统在控制数据的移动、存储和处理呢?

从某个角度来看,答案是肯定的:通过管理计算机资源,操作系统控制计算机的基本功能,但是这个控制是通过一种不寻常的方式来实施的。通常,我们把控制机制想象成在被控制对象之外或者至少与被控制对象有一些差别和距离(例如,住宅供热系统是由自动调温器控制的,它完全不同于热产生和热发送装置)。

📗但是,操作系统却不是这种情况,作为控制机制,它有两方面不同之处:

  • 操作系统与普通的计算机软件作用相同,它也是由处理器执行的一段程序或一组程序。
  • 操作系统经常会释放控制,而且必须依赖处理器才能恢复控制。

操作系统实际上不过是一组计算机程序,与其他计算机程序类似,它们都给处理器提供指令,主要区别在于程序的意图。操作系统控制处理器使用其他系统资源,并控制其他程序的执行时机。但是,处理器为了做任何一件这类事情,都必须停止执行操作系统程序,而去执行其他程序。因此,这时操作系统释放对处理器的控制,让处理器去做其他一些有用的工作,然后用足够长的时间恢复控制权,让处理器准备好做下一项工作。
在这里插入图片描述


4. 串行处理

⭐对于早期的计算机,从20世纪40年代后期到20世纪50年代中期,程序员都是直接与计算机硬件打交道的,因为当时还没有操作系统。

😶早期的系统引出了两个主要问题:

  • 调度:大多数装置都使用一个硬拷贝的登记表预订机器时间。通常,一个用户可以以半小时为单位登记一段时间。有可能用户登记了1小时,而只用了45分钟就完成了工作,在剩下的时间中计算机只能闲置,这时就会导致浪费。另一方面,如果用户遇到一个问题,没有在分配的时间内完成工作,在解决这个问题之前就会被强制停止。
  • 准备时间:一个程序称做作业,它可能包括往内存中加载编译器和高级语言程序(源程序),保存编译好的程序(目标程序),然后加载目标程序和公用函数并链接在一起。每一步都可能包括安装或拆卸磁带,或者准备卡片组。如果在此期间发生了错误,用户只能全部重新开始。因此,在程序运行前的准备需要花费大量的时间。

🍟这种操作模式称做串行处理,反映了用户必须顺序访问计算机的事实。后来,为使串行处理更加有效,开发了各种各样的系统软件工具,其中包括公用函数库、链接器、加载器、调试器和I/O驱动程序,它们作为公用软件,对所有的用户来说都是可用的。

4.1 简单批处理系统

早期的计算机是非常昂贵的,同时由于调度和准备而浪费时间是难以接受的,因此最大限度地利用处理器是非常重要的。

简单批处理方案的中心思想是使用一个称做监控程序的软件。通过使用这类操作系统,用户不再直接访问机器,相反,用户把卡片或磁带中的作业提交给计算机操作员,由他把这些作业按顺序组织成一批,并将整个批作业放在输入设备上,供监控程序使用。每个程序完成处理后返回到监控程序,同时,监控程序自动加载下一个程序。

在这里插入图片描述

4.2 多道程序设计批处理系统

即便对由简单批处理操作系统提供的自动作业序列,处理器仍然经常是空闲的。问题在于IO设备相对于处理器速度太慢。😶

在这里插入图片描述

上图详细列出了一个有代表性的计算过程,这个计算过程所涉及的程序用于处理一个记录文件,并且平均每秒处理100条指令。在这个例子中,计算机96%的时间都是用于等待IO设备完成文件数据传送。

这种只有一个单独程序的情况,称做单道程序设计( uniprogramming )。

处理器花费一定的运行时间进行计算,直到遇到一个IO指令,这时它必须等到这个IO指令结束后才能继续进行。

这种低效率是可以避免的。内存空间可以保存操作系统(常驻监控程序)和一个用户程序。

假设内存空间容得下操作系统和两个用户程序,那么当一个作业需要等待I/O时,处理器可以切换到另一个可能并不在等待IO的作业。进一步还可以扩展存储器以保存三个、四个或更多的程序,并且在它们之间进行切换。这种处理称做多道程序设计( multiprogramming)或多任务处理( multitasking ),它是现代操作系统的主要方案。

5.分时系统

😎通过使用多道程序设计,可以使批处理变得更加有效。但是,对许多作业来说,需要提供一种模式,以使用户可以直接与计算机交互。实际上,对一些作业如事务处理,交互模式是必需的。

当今,通常使用专用的个人计算机或工作站来完成交互式计算任务,但这在20世纪60年代却是行不通的,当时大多数计算机都非常庞大而且昂贵,因而分时系统应运而生。
正如多道程序设计允许处理器同时处理多个批作业一样,它还可以用于处理多个交互作业。对后一种情况,由于多个用户分享处理器时间,因而该技术称做分时( time sharing)。

🐥在分时系统中,多个用户可以通过终端同时访问系统,由操作系统控制每个用户程序以很短的时间为单位交替执行。因此,如果有n个用户同时请求服务,若不计操作系统开销,每个用户平均只能得到计算机有效速度的1/n。但是由于人的反应时间相对比较慢,所以一个设计良好的系统,其响应时间应该可以接近于专用计算机。

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

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

相关文章

计算机炸了,电子信息也是劝退专业?

还不是因为这个版本,计算机专业受到了制裁,导致这些偏计算机类的专业也受到了牵连 我本科的时候是一所双一流院校的计科专业,我们学校的电子信息专业堪称苦逼,我们计科学的东西,他们都要学,他们学的一些东…

如何使用 LangChain 构建基于LLMs的应用——入门指南

大型语言模型(LLMs)是非常强大的通用推理工具,在各种情况下都非常有用。 但是,与构建传统软件不同,使用LLMs存在一些挑战: 调用往往是长时间运行的,并且随着可用输出而逐步生成输出。与固定参数的结构化输入&#xf…

力扣面试150 整数转罗马数字 打表 + 贪心

Problem: 12. 整数转罗马数字 文章目录 思路💖 打表 贪心 思路 👨‍🏫 参考:打表贪心 💖 打表 贪心 class Solution {public String intToRoman(int num) {int[] value {1000, 900, 500, 400, 100, 90, 50, 40, …

微服务之Consul 注册中心介绍以及搭建

一、微服务概述 1.1单体架构 单体架构(monolithic structure):顾名思义,整个项目中所有功能模块都在一个工程中开发;项目部署时需要对所有模块一起编译、打包;项目的架构设计、开发模式都非常简单。 当项…

MGRE环境下运行OSPF

一、分析要求 自行定义公网网段和私有网段,ISP设备仅配置IP地址R1/R4/R5构建Full-Mesh结构R1/R2/R3构建Hub-Spoke结构,R1为NHS除ISP设备,其余路由器运行OSPF 二、实施过程 1. 配置IP及环回地址 R1 [R1]int g 0/0/0 [R1-GigabitEthernet0/…

运筹说 第112期 | M/M/s等待制排队模型

通过上期学习,大家已经了解了排队论中的一些基本概念,以及生灭过程和Poisson过程。 那么本期小编将基于这些基本原理,为大家介绍M/M/s混合制排队模型,包括单服务台模型和多服务台模型,介绍模型的概念以及推导过程等内容…

全栈的自我修养 ———— react实现滑动验证

实现滑动验证 展示依赖实现不借助create-puzzle借助create-puzzle 展示 依赖 npm install rc-slider-captcha npm install create-puzzleapi地址 实现 不借助create-puzzle 需要准备两张图片一个是核验图形,一个是原图------> 这个方法小编试了后感觉比较麻烦…

1panel更新系统

准备两个软件包 名为dist的前端包 以.jar为后缀的后端jar包 更新后端 进去1Panel管理页面(浏览器收藏里有) http://127.0.0.1:42689/f2a8a874bd 点击容器,将名为app的容器直接删除掉 打开软件electerm 点击书签,连接2222 连接成功后长这样&#xff…

咸鱼之王_手游_开服搭建架设_内购修复无bug运营版

视频演示 咸鱼之王_手游_开服 游戏管理后台界面 源码获取在文章末尾 源码获取在文章末尾 源码获取在文章末尾 或者直接下面 https://githubs.xyz/y28.html 1.安装宝塔 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh &…

软考之零碎片段记录(十五)+复习巩固(十)

一、学习 1. 多对多关系模式 举例:学生和课程。顾客和商品等。 多对多关系的确立需要有中间表,需要使用两个外键确认表中的唯一数据。 2. 数据库范式 1nf 表中每个字段都是原子性不可查分的。在关系(或表)中,每一行…

软件设计师——软件工程基础知识

软件工程基础知识 软件过程软件过程模型软件测试方法进度管理软件复杂性度量环路复杂度耦合聚合和组合 软件过程 软件过程模型 软件测试方法 黑盒测试和白盒测试 白盒测试中,语句覆盖对程序执行逻辑的覆盖很低,因此一般认为它是很弱的逻辑覆盖。 进度管…

微服务架构使用和docker部署方法(若依)

这里以若依官方网站开源的微服务框架为例子记录使用方法过程。 开源地址:RuoYi-Cloud: 🎉 基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统,同时提供了 Vue3 的版本 下载后,用IDEA社区版开发工具打…

Vol.41 SEO基本术语解释

1.TDK TDK:即标题、描述、关键词;TDK是网站的基本属性,对SEO非常重要,可以帮助搜索引擎了解你的网站; T:title 谷歌建议不超过70个字符 D:description 谷歌建议不超过150个字符 K&#xff1…

麒麟服务器操作系统安装DHCP服务02

原文链接:麒麟服务器操作系统安装DHCP服务02 Hello,大家好啊!继昨天介绍了在麒麟服务器操作系统上部署DHCP服务并演示了终端自动获取IP地址的过程之后,今天我们将进一步探讨如何通过绑定终端的MAC地址来为其分配固定的IP地址。这种…

【一竞技DOTA2】ESL ONE伯明翰站分组名单出炉

1、ESL ONE伯明翰站即将在4月22号开战,小组赛分组名单也正式出炉。 A组队伍名单:BB、G2xiG、SR、Talon、Falcons、Liquid B组队伍名单:GG、Heroic、OG、Spirit、Tundra、XG 小组赛是常规Bo2循环赛(4月22日-4月24日)各个小组的前两名晋级胜者组,三四名晋级败者组,五六名被淘汰…

二十款好用的屏幕录制,绿色绿色好用软件工具,云盘下载

本人收藏多年的屏幕录制工具,绿色的,你懂得的。。。。 二十款好用的屏幕录制,绿色绿色好用软件工具,值得收藏 下载地址: 链接:https://pan.baidu.com/s/1RPTlFfeap4TGMnDPgCEo-w?pwdmaky 提取码&#xff1…

【Linux】进程基础铺垫(三)软件基础:系统调用接口

系统调用接口 前言:系统调用接口的引入例子理解 总结小图一、系统调用接口二、底层封装 系统调用接口1. printf && scanf 重新理解 三、库函数 与 系统调用函数 前言:系统调用接口的引入 例子理解 就好比 去银行取钱,银行不可能让你…

硬件开发相关的流程文件介绍

学习目的:前面文章有简要介绍硬件开发的基本过程,本文会细分硬件开发的流程,然后分作5个步骤,详细介绍开发全过程,包括立项-实施项目-软件开发-测试-验收 这几个过程,然后,再分解对每一个步骤进…

二叉树(二)———链式二叉树结构

链式结构 链式二叉树的存储结构是指用链表来表示一棵二叉树,即用链表来指示元素的逻辑关系。通常的方法是链表中的每个节点由三个域组成,数据域与左右指针域,左右指针分别用来存储该节点左孩子和右孩子所在链节点的存储位置,这种…

用html写一个有趣的鬼魂动画

<!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>一个有趣的鬼魂动画</title><link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.m…