操作系统概述(自己话阐述不枯燥)

关于计算机的一点小故事

听说在上世纪末的时候,计算机还不是很普及,只有少部分受过专业训练的人才能操作计算机,需要学习很多的dos指令,才能让计算机跑起来,并且运行速度很慢,dos指令多而复杂,效率低下,就像如今打开的cmd运行窗口,都只能通过命令来操作计算机。后来微软公司强势出道,提供了图形化界面(现在每个人的电脑桌面就是图形化界面,软件的图表也是)。了不起的地方在于,从前只有专业的人才能操作,但是Windows操作系统出现以后,人们动动鼠标左键双击就可以打开应用软件,输入搜索引擎就可以浏览自己想看的东西了,由此计算机开始快速传播,变得普及化。)。
*电脑上面那些双击能直接打开的文件啊,软件啊,都是操作系统的功劳。
在这里插入图片描述

一、什么是操作系统?

用户角度: 控制计算机上面的软件,管理应用程序,控制程序的运行和占用的资源。
计算机角度: 提供一些服务例如IO服务(鼠标键盘等),管理进程。
软件角度: 操作系统可以称作系统软件,直接面向硬件,一般的应用程序不能访问到硬件层面的物理资源,特别是外设资源(外设资源由操作系统统一协调管理)。
在这里插入图片描述

二、操作系统(OS)的目标:

1.方便性:

用户平时使用高级语言编写程序,但是计算机只识别机器指令(0和1),所以只有把高级语言通过操作系统翻译成机器语言,才能运行,或者通过各种OS提供的命令操作计算机,灰常的方便。

2. 有效性:

两点:利用率和吞吐量。
利用率,就是减少各种设备空闲的时间 CPU在执行进程的时候,如果等上一个程序执行完再执行下一个,CPU利用率就很低。CPU的运行速度相比其他的设备运行速度快得多。比如可能外设信息输入输出要10s,但是CPU只用0.1秒就处理好了。I/O设备工作的时候CPU空闲,CPU空闲的时候外设空闲,非常浪费资源,所以应该让CPU在等待的同时,有其他事情做,提高资源的利用率,就能提高效率。
吞吐量 则是系统在单位时间内完成的总量,量大则效率高。

3. 可扩充性:

从早期的无模块,发展到有模块,再发展到有层次结构。即可以向操作系统扩充新的模块和功能。

4. 开放性:

计算机由单机环境转变为网络环境,开放性即指要能按照世界标准来进行开发软硬件,能够做到彼此互相兼容。

三、操作系统的作用:

1.作为用户和硬件的接口

在这里插入图片描述
用户可以以三种方式访问计算机内存

2.作为资源管理者:(具体的功能请查看第六条,操作系统的主要功能)

计算机里面含有很多的硬件和软件资源,总体来说可分为四类:处理机,存储器,I/O设备,文件。处理机(CPU)是计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件,操作系统负责分配和控制处理机;
具体的工作下面有详细具体的讲解
在这里插入图片描述

对存储器管理就负责内存的分配和回收;
在这里插入图片描述

对I/O设备管理就负责I/O设备的分配回收和操纵;
对文件管理则是对文件的存储,共享和保护。
在这里插入图片描述

说明:计算机给多个用户使用的时候,用户对资源的抢夺可能引发冲突,所以得通过对操作系统对使用资源的请求进行授权处理,才能协调用户的使用。

3.对计算机资源的抽象:

在这里插入图片描述
把CPU,磁盘,内存进行抽象化,能让人们更直观的了解操作系统对物理硬件内存的应用。
在这里插入图片描述
原本没有任何软件的计算机系统(裸机),只能提供给用户硬件接口,所以用户必须得对物理接口的实现细节有充分了解。后来人们在裸机上面覆盖了I/O管理设备,人们无需关心怎么实现的,只要输入一些指令,如read或者write指令,即可控制数据的读写。由此,就把覆盖了上述软件的机器称为虚机器,提供对硬件操作的抽象模型,用户用该模型使用计算机硬件资源。与此同时,还可以在I/O设备上面再覆盖一层软件比如用于文件管理的,以此类推,则抽象模型的层次化便可逐渐提高,极大的方便了人们的使用。

四、操作系统的发展过程

1.人工操作阶段

早期是通过打孔机对纸条打孔来向磁盘输入0和1,计算机的全部资源都由上机用户占有。CPU相关操作都是人工来进行的,计算机资源的利用率非常低。

2.脱机输入/输出阶段

在这里插入图片描述

由于CPU运行速度远大于I/O设备运行速度,会造成极大的资源浪费,于是人们新添加了两个外围设备,把数据事先写进磁盘中,当CPU需要的时候能直接从磁盘中调用数据,当需要输出数据时,又从磁盘中高速调出数据输出。
优点: 装带卸带以及将数据从低速I/O设备放入高速磁带上等操作都是外围设备完成,不占用主机时间,同时CPU需要输入数据时,可以直接从高速磁带获取,所以减少了CPU的空闲时间,提高了资源利用率。
缺点: 原本一台机器多了两个设备,增大了成本和消耗。

3.单道批处理系统阶段

这个阶段中系统对作业的处理都是成批进行,并且在内存中始终都只保存一个作业。
在这里插入图片描述
这一阶段的主要目标也是解决CPU和I/O设备速度不匹配问题。下图为解决流程。(注意作业事先以脱机方式写到磁带上,并配上控制程序,保证上一个作业做完了就能马上下一个)
在这里插入图片描述
明显的缺点
在这里插入图片描述
CPU和I/O设备总有一个是空闲的,所以还是不能充分利用资源。
优点: 作业能自动逐个顺序运行无需人工干预,先进入内存的作业先完成。内存中只有一个程序运行,只有发生异常或者运行结束才能继续换一下进行。

4.多道批处理系统阶段

多道批处理系统则可以多个程序一起运行。所以作业在一起,系统按一定的算法选几个进入内存运行,这样就可以极大的提升CPU和I/O设备的利用率,增加系统吞吐量。
在这里插入图片描述
优点: 极大的提升了资源利用率和系统吞吐量。
缺点: 平均周转周期长。由于作业要排队依次进行处理,所以所需时间长。没有交互能力,用户一旦提交程序给系统直到结束都不能和自己作业进行交互,不利于修改和调试程序。
同时多批道处理系统需要解决很多I/O设备的管理,文件的组织管理,处理机管理问题,内存分配和保护问题,用户接口问题还有很多一系列问题,非常的复杂。

5.分时系统阶段

分时系统是指一台主机连接了多个配有显示器和键盘的终端并由此组成的系统,这个系统允许大家同时通过自己的终端以交互的方式使用计算机,共享主机资源。
在这里插入图片描述
多批道处理系统用户不能和作业进行交互的原因是作业是从外存进入CPU运行,而分时管理系统则是作业直接进入内存,并且采用轮转运行方式,即每个作业只能运行一个时间片(时间段),时间一到,该程序暂停,运行其他程序。
这样做的好处在于用户可以及时响应用户发出的请求。

分时系统四大特征

  1. 多路性:做到及时接受每一个终端发来的信息,每一个终端处停留很短的时间(比如30ms),则数秒之内就可以扫描完终端的信息。
  2. 独立性:每个用户用自己单独的终端,互不干扰
  3. 及时性:人的请求能在很短的时间内得到回应
  4. 交互性:用户可以访问很多系统服务,比如数据库信息,文件打印等等。

6.实时系统阶段

实时系统就是用户发来请求就要立刻回应,比如车票订票系统,用户发来订票请求,系统进行信息检索和处理并及时回馈用户;
火炮控制系统,实时采集现场数据,让炮转弯就转弯;多媒体系统;嵌入式系统等等。

实时系统四种类型

  1. 周期性任务:按周期循环执行。
  2. 非周期任务:设置开始截止时间,在此之前 必须执行任务;或设置结束截止时间,在此之后必须完成任务。
  3. 硬实时任务:在规定时间内必须完成。比如导弹,如果在一分钟内还不打到目标,可能就会没有燃料不能飞了,就不行了。
  4. 软实时任务:比如多媒体,错过了时间等等,后果也不会严重。

五、操作系统的基本特性。

1.并发(非常重要)

并行: 两个或者多个事件在同一时刻发生。同一时刻(李小妹和两个男生同时约会)
并发: 两个或多个事件在同一时间间隔内发生。一个时间段内完成(李小妹和两个男生在同一天分别约会,但是只能一次约一个)
在这里插入图片描述

在前面讲到的多批到处理系统里面,就已经提到过并发,正是有了并发,能让系统在同一时间间隔内同时进行多项任务,极大的提高了系统的利用率和吞吐量。
进程: 由一组机器指令,数据和堆栈组成,能在系统中独立运行并且资源分配的基本单位(资源都是分配给进程的,不是分配给程序的)没有引入进程之前,操作系统只能等计算程序结束之后,I/O设备才能运行;I/O设备执行的时候,计算程序也不能执行。因此为计算程序和I/O设备各建立一个进程,让两个进程能够并发执行,再次极大地提升了系统的利用率和吞吐量。
再次强调: 操作系统本身就是一个软件,只不过他是系统软件,能接触内存,而一般的用户软件是不能接触硬件的。并且运行应用程序的时候,并不是直接运行程序的,而是把程序的代码分成几次一段一段放到进程中来,运行该进程,进程结束则停止。后面虚拟技术有讲。

2.共享

这里的共享不是说一个东西给大家一起使用,而是计算机资源复用,是指系统资源能给系统中的多个并发进程公用。因为限定时间,也限定地点,所以对管理资源的操作要求很高。

  1. 互斥共享 例如打印机和磁带,虽然能给多个进程使用,但是在规定时间内,只允许一个进程访问。打印机在打印的时候就不能再执行其他的进程。又比如电话,微信电话和正式的电话两个进程不能同时进行。
  1. 同时访问 允许很多用户同时访问,例如磁盘设备,能同时被共享或者操作。比如用QQ发送文件的时候微信也能同时发送文件

3.虚拟

定义: 通过把某种技术将一个物理的实体变成若干个逻辑上的对应物的功能称为“虚拟”。
帮助理解 比如你有一个单核CPU,程序要被分配CPU资源才能运行,但是你的电脑可以同时运行多个进程,甚至可以到几十个进程,就是虚拟技术。明明只有一个CPU,但是在用户看来就出有好多CPU在服务;还有就是打印机,一个I/O设备,但是打印店经常发现很多人一起在操作打印机,就是明明只有一个打印机接口,但是看起来像是有好几个)

1.时分复用技术 就是在一个大的时间段内,处理机(CPU)交替为各个进程服务。
帮助理解 你点开QQ界面,可能当时CPU并没有在执行这个进程,别人发消息过来你暂时没收到,但是微信收到了,可能处理机就是在搞微信的事情,等一会儿搞完了又来搞QQ的。

2.空分复用技术 利用存储器的空闲空间分区存放和运行其他多道程序,从而提高内存利用率。
帮助理解: 是不是很疑惑,为什么明明你的内存显示只有16个G,但是一些好几十G的打游戏却能运行呢?其实就是系统每一次只把用户的一部分调进内存运行,等到运行完了这部分又继续运行其他部分,但是在加载游戏的时候还能干其他的事情。所以处理器的处理速度和内存大小都决定了你玩游戏是不是卡,
电脑设备配置是不是很高。

4.异步

异步是指:在多道程序环境下,允许多个程序并发执行,但是不是一执行就要执行到结束,而是走走停停,以不可预知的速度往前推进。
帮助理解: 程序的执行时间由计算的时间和I/O的时间组成,有的计算时间多,I/O时间少。就比如打印机,打印的时候已经占用了一个程序的进程,也就是在I/O,这个时候CPU空闲,而其他进程想要打印就必须等打印机I/O结束才能打印,但是又不知道前面那个要打印多少页,要等多久。所以因为资源的有限,导致速度不可预知。

六、操作系统的主要功能

在本文前面的时候提到过一点点,现在可以来详细的讲一下具体功能

1.处理机管理功能

1.控制进程: 进程什么时候开始,运行完了就应当立马撤销进程,分配多少资源,都是需要处理机来管理分配的。
总结: 创建进程,终止进程,控制进程运行中的状态转换
2.进程同步:
在这里插入图片描述
比如上面一段代码,如果把n++设为一个进程,下面for循环设为一个进程,那么两个进程并发,就会同时对n进行操作。
现在程序开始,n++进程执行,n加了1,但是你又希望下面的for循环里的n从0开始加,这时候你是不希望两个进程互相干扰彼此的操作的。所以如果两个进程设计同一个变量并要对其进行操作的时候,就可以用互斥(一个人干,另一个人就不能干)或者锁这种东西。
锁: 在一个进程执行并上锁的时候,另一个进程要等锁打开才能执行。而什么时候上锁,上到什么时候也是由人来决定的。上锁就是指定一个进程执行,其他程序都不能执行。
3.进程通信
两个进程相互合作完成共同任务的时候,需要互相交换资源和消息。
比如有三个进程:输入,计算,输出。输入进程执行完就送给计算进程,然后送给输出进程,然后给人们看到。
4.调度功能
(1).作业调度 按照一定算法挑选几个任务,为他们分配适当内存空间,然后送进内存并建立进程然后执行。
(2).进程调度 按照一定的算法挑一个进程给CPU执行。

2.存储管理功能

1.内存分配: 顾名思义,多大的人睡多大的床,多大的程序分多大的内存,尽量不要多分少分。 (1)静态分配:规定一个空间就不能改变了,比如静态数组 (2)动态分配:可以在作业运行过程中申请新的空间。如动态数组
2.内存保护 确保每个用户程序都在自己的运行空间运行,互不干扰。不允许用户程序访问操作系统的程序和数据。(有点像防火墙)
3.地址映射 将逻辑地址转为物理地址。但是一个地址对应一条数据一一对应
4.内存扩充 并不是扩大物理内存,而是扩大计算机的虚拟内存 虚拟内存 在:点开上面那个属性

在这里插入图片描述
高级系统设置
在这里插入图片描述
高级-》性能-》设置在这里插入图片描述
在这里就能更改你的虚拟内存大小了
在这里插入图片描述
比如这里改成这么大,然后点开任务管理器看你的内存就会发现内存变大了。
在这里插入图片描述

那虚拟内存或者这么做有什么用呢?
很多时候你是不是觉得玩一些大型游戏或者吃内存的游戏电脑闪退呀或者登不进去,可能就是因为你的内存不够,虚拟内存就是可以在逻辑上扩大内存容量,把虚拟内存设置大一点就可以爽玩了。

3.设备管理功能

1.缓冲 由于I/O设备和CPU运行速度相差实在太大,于是在二者中间加入缓冲,I/O设备向缓冲区输入数据或者拿出数据,CPU要用的时候可以直接去缓冲区拿,这样就能提高利用率和吞吐量
2.分配 操作系统通过控制表,控制器等数据结构来判断指定设备是否忙碌,不忙就可以分给要用的用,忙就等着。
3.处理 CPU向设备控制器发出I/O指令,来让其完成对应的操作,或者接受由I/O设备发来的中断请求,并做出及时处理。

4.文件管理功能

1.文件存储空间管理 文件系统对文件进行统一管理,反正就是多大的文件就分配多大的空间,还是比较好理解的。

在这里插入图片描述

2.目录管理 方便用户查找嘛
3.文件读写管理和保护 让文件可以读写,并且防止有未经核准的用户存取文件,或者冒名顶替存储文件,或者以不正当当时使用文件。

5.操作系统与用户间的接口

用户接口 由之前的必须输入指令才能运行程序,到脱机处理,到图形界面,反正越来越简单。
程序接口 为用户访问系统资源而设置的,操作系统会将由高级语言编写的程序翻译成机器语言然后直接操作内存。

七、分层式结构

多层模块,这样的好处就是其中一个模块出现故障的时候不会影响到其他模块。并且添加新的模块也很简单
在这里插入图片描述

八、C/S(客户服务器模式)

这个建议去看我的一篇计算机网络的文章,一样的东西计算机网络(客户服务器模式)

九、面向对象的程序设计

对象很好理解,就字面意思。
比如在程序中将文件设计为一个类(对象),那么这个对象有自己的属性(名字,作者),对应的方法(文件的创建打开等)。
这么做的好处就是能让程序更好修改,扩展功能。大家做项目的时候会有深层次的体会,这也是java适合做项目而C语言不适合的一个原因。

十、微内核O/S结构

功能

  1. 管理进程:采用“机制与策略分离”原理。机制与策略就是把一些进程设置优先级,控制谁先进入CPU执行。
  2. 低级存储器管理:只配置低级的存储器,比如将用户空间里的逻辑地址变换为内存空间的物理地址的页表机制和地址变换机制。
  3. 中断和陷入处理:就是捕获并处理中断和陷入事件,属于计组的知识啦。

在微内核OS中,客户和服务器之间的通信都需要通过微内核,使同样的服务请求消息至少要进行四次传送。

第一次客户把消息发给内核,请求服务;
第二次内核把客户的消息发给服务器;
第三次服务器完成请求,把消息发给内核;
第四次将响应消息发给客户。

但是在实际情况中比这个复杂得多,往往需要更多次。所以可以将一些常用的操作系统功能搬到微内核中,让消息来回传输的次数变少,从而提高效率。但是同时也会让微内核的容量明显增大。
在这里插入图片描述

微内核建立在模块化层次化结构得基础上,并且采用C/S模式和面向对象,所以有很多优点:

(1)可扩展性微内核是由很多相对独立的服务器软件来实现的,所以当开发新的硬件和软件的时候,只需要往相应服务器中添加新功能就OK。
(2)可靠性微内核是通过精心设计和严格测试的,并且有一套规范而精简的API接口,一个服务器出错的时候并不会影响另一个服务器。
(3)分布式系统 客户和服务器之间采用消息传递通信。
(4)融入面向对象技术

缺点: 原本呢用户态和系统态可以相互转换,所以消息传递的快,效率高。微内核操作系统消息要辗转多次,所以效率会降低。
用户态(又叫普通态):指用户运行时的状态,级别比较低,不能使用特权指令,不能直接使用系统资源,不能改变CPU工作状态,且无法和其他用户程序互相接触干扰。
系统态(又叫内核态):操作系统运行时候的状态,级别比较高,可以执行指令,访问内存资源,改变CPU状态。

八、总结撒花在这里插入图片描述

  1. 操作系统其实就是一个软件,只不过它直接和硬件接触,但是一般的软件不能够,所以一般软件是通过人们输入命令,系统调用,点击图标等方式让操作系统操作硬件资源。
  2. 操作系统能让系统进程做到并发,就把CPU比作收费站,进程比作行驶的车辆,跑的快的先给快的收费,跑的慢的就后收,如果死板的按照上高速的顺序来,那就很浪费资源了。
  3. 操作系统就是想让人们用的更方便,不用管什么具体实现,想玩游戏就点图标,然后系统把游戏进程相关代码写到CPU内存里面,就开始玩了,怎么方便怎么来。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值