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


🍁你好,我是 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。但是由于人的反应时间相对比较慢,所以一个设计良好的系统,其响应时间应该可以接近于专用计算机。

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

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

相关文章

【菜狗学前端】原生Ajax笔记(包含原生ajax的get/post传参方式、返回数据等)

这回图片少,给手动替换了~祝看得愉快,学的顺畅!哈哈 一 原生ajax经典四步 (一) 原生ajax经典四步 第一步:创建网络请求的AJAX对象(使用XMLHttpRequest) JavaScript let xhr new XMLHttpRequest() 第二…

为什么你的LDO输出不稳定?

原文来自微信公众号:工程师看海,与我联系:chunhou0820 看海原创视频教程:《运放秘籍》 大家好,我是工程师看海。 前一阵朋友和我说当初用某型号LDO时,发现输出异常,仔细阅读datasheet后&#x…

Clip下游任务解读

相关代码链接见文末 1.DALL-1 (1)VQGAN https://arxiv.org/pdf/2012.09841.pdf VQGAN(Vector Quantized Generative Adversarial Networks)是一种基于向量化量化的生成对抗网络。这种技术首先将图像转换为一系列向量,每个向量代表图像中的一小块区域(或称为“patch”)。…

在Mac上更好的运行Windows,推荐这几款Mac虚拟机 mac运行windows虚拟机性能

想要在Mac OS上更好的运行Windows系统吗?推荐你使用mac虚拟机。虚拟机通过生成现有操作系统的全新虚拟镜像,它具有真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以…

Linux的文件操作中的静态库的制作

Linux操作系统支持的函数库分为: 静态库,libxxx.a,在编译时就将库编译进可执行程序中。 优点:程序的运行环境中不需要外部的函数库。 缺点:可执行程序大 (因为需要 编译) 动态库&#xff0c…

自动化测试Junit

1.什么是Junit JUint是Java编程语言的单元测试框架,用于编写和运行可重复的自动化测试。 JUnit 促进了“先测试后编码”TDD的理念,强调建立测试数据的一段代码,可以先测试,然后再应用。这个方法就好比“测试一点,编码一…

Qt QProcess详解

1.简介 QProcess提供了在 Qt 应用程序中启动外部程序的方法。通过QProcess,你可以启动一个进程,与它通信(发送输入和读取输出),检查它的状态,以及等待它完成。这个类在执行系统命令、运行其他程序或脚本时…

Leetcode 394. 字符串解码

心路历程: 这道题看到括号直接想到栈,五分钟新题直接秒了,一开始以为需要两个栈分别存储数字和非数字,后来发现一个栈就够了,思路如图: 这道题考察的应该是队栈这两种数据结构的转换,因为每次…

LangChain - 文档加载

文章目录 一、关于 检索二、文档加载器入门指南 三、CSV1、使用每个文档一行的 CSV 数据加载 CSVLoader2、自定义 csv 解析和加载 (csv_args3、指定用于 标识文档来源的 列(source_column 四、文件目录 file_directory1、加载文件目录数据(Di…

缺少vcruntime140_1.dll

windows安装mysql的时候错误提示: 64位下载安装: 链接:https://pan.baidu.com/s/1u_ALo0JMc-Y2an22l1Y1EA 提取码:ve10 32位下载安装: 链接:https://pan.baidu.com/s/16XTt642Tj-Oc-WvbgQK-Ww 提取码…

学校4-11天梯赛选拔赛

目录 L1-5 6翻了 题目 输入格式: 输出格式: 输入样例: 输出样例: 思路 AC代码 L1-1 嫑废话上代码 题目 输入格式: 输出格式: 输入样例: 输出样例: AC代码 L1-8 刮刮彩…

MySQL_00001_00000

数据准备 员工表:emp Oracle: create table emp ( empno number(4) not null, ename varchar2(10), job varchar2(9), mgr number(4), hiredate date, sal number(7, 2), comm number(7, 2), deptno number(2) ); insert into em…

bugku-web-decrypt

这里的提示解密后没有什么意义 这里下载文件包 得到一个index.php文件 得到代码 <?php function encrypt($data,$key) {$key md5(ISCC);$x 0;$len strlen($data);$klen strlen($key);for ($i0; $i < $len; $i) { if ($x $klen){$x 0;}$char . $key[$x];$x1;}for…

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

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

什么是享元模式,有哪些具体应用

一、定义 享元模式是一种通过尽可能多地共享数据来最小化内存使用和对象数量&#xff0c;从而提高性能的设计模式。在享元模式中&#xff0c;如果需要相同数据的多个对象&#xff0c;则共享这些对象而不是创建新的对象&#xff0c;从而提高系统的效率。 其实有很多应用场景&am…

基于顺序表实现通讯录

上篇我们讲了顺序表是什么&#xff0c;和如何实现顺序表。这篇文章我们将基于顺序表来实现通讯录。 文章目录 前言一、基于顺序表是如何实现的二、通讯录的头文件和实现文件三、通讯录的实现3.1 定义通讯录结构3.2 初始化通讯录3.3 销毁通讯录3.4 通讯录添加数据3.5 查找联系人…

golang 使用栈模拟计算器

思路&#xff1a; // Author sunwenbo // 2024/4/12 16:51 package mainimport ("errors""fmt""strconv" )// 使用数组来模拟一个栈的应用 type Stack struct {MaxTop int //表示栈最大可以存放数的个数Top int //表示栈底&#xff…

【QT入门】Qt自定义控件与样式设计之自定义QLineEdit实现搜索编辑框

往期回顾 【QT入门】Qt自定义控件与样式设计之qss的加载方式-CSDN博客 【QT入门】Qt自定义控件与样式设计之控件提升与自定义控件-CSDN博客 【QT入门】Qt自定义控件与样式设计之鼠标相对、绝对位置、窗口位置、控件位置-CSDN博客 【QT入门】Qt自定义控件与样式设计之自定义QLin…

蓝桥杯之注意事项

1.特殊求解的地方 2.一些数学公式 比如二叉树求全深度数值那道题 3.掌握有关库函数 #include<algorithm> 包含sort&#xff08;&#xff09;函数【排列函数】C sort()排序详解-CSDN博客&#xff0c;next_permutation()函数【求解全排列问题】求解数组大小sizeof(arr…

2024年腾讯云最新优惠活动及领券入口整理分享

随着云计算技术的快速发展&#xff0c;越来越多的企业和个人选择将业务部署在云端。腾讯云作为国内知名的云计算服务提供商&#xff0c;为用户提供了丰富的云产品和服务。为了帮助用户降低成本&#xff0c;腾讯云定期推出各种优惠活动。本文将为大家整理分享2024年腾讯云的最新…