11-01 操作系统

一. 手工操作 —— 穿孔卡片

提示: 后面所有的事,都是围绕CPU的利用率,都是对CPU进行的优化,始终是想让CPU更快的去读取数据打交道, 从而提升CPU读取数据处理数据的能力.

前言: 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。
    
0) 硬件介绍:
    - 穿孔卡片: 可以将程序写在卡片上,然后读入机而不用插件板
        - 穿孔卡片,卡片上有一个个小孔,那个孔标识的就是你的数据,把这个穿孔卡片塞到机器里面,读取你卡片中的孔进而识别数据,然后就有一个空和数据的对应关系,从而执行相应的数据.
    - 输出设备
        - 你这一串穿孔卡片输出的结果就用这个打印设备来打印出来,
        
1) 如何工作? 同一时间机房内只能有一个人去操作
    - 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机.
    - 总结:
        - 对于操作者来说是有好处的,因为他想干嘛就干嘛,这整个机房都是独属于他自己,
        - 而对于在外面等待的程序来说,就非常的不友好,极其浪费时间,

2) 2种等待时间:
    - 人等待人,
    - Cpu等待穿孔卡片插入及读取完毕,
    
3) 优点:程序员在申请的时间段内独享整个资源,可以即时地调试自己的程序(有bug可以立刻处理)

4) 缺点: Cpu真正工作的时间非常短,利用率非常的低. 
	- 浪费计算机资源,一个时间段内只有一个人用。 注意:同一时刻只有一个程序在内存中,被cpu调用执行,比方说10个程序的执行,是串行的

5) 优化: 提升CPU,读取穿孔卡片的时间, cpu的利用率.

成批处理的出现:

20世纪50年代后期,出现人机矛盾手工操作的慢速度和计算机的高速度之间形成了尖锐矛盾,手工操作方式已严重损害了系统资源的利用率(使资源利用率降为百分之几,甚至更低),不能容忍。唯一的解决办法:只有摆脱人的手工操作,实现作业的自动过渡。这样就出现了成批处理.

二. 批处理 —— 磁带存储

1. 联机批处理系统

1) 处理作业的方式
    - 作业的输入/输出由CPU来处理
    
2) 处理作业的过程
    - 主机与输入机之间增加一个存储设备——磁带. 在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行并把计算结果向输出机输出。
    - 完成了上一批作业后,监督程序又从输入机上输入另一批作业,保存在磁带上,并按上述步骤重复处理。
    - 监督程序不停地处理各个作业,从而实现了作业到作业的自动转接,减少了作业建立时间和手工操作时间,有效克服了人机矛盾,提高了计算机的利用率。
    
3) 缺点
    - 但是,在作业输入和结果输出时,主机的高速CPU仍处于空闲状态,等待慢速的输入/输出设备完成工作: 主机处于“忙等”状态。

2. 脱机批处理系统

1) 脱机批处理系统由来
     - 为克服与缓解, 高速主机与慢速外设的矛盾,提高CPU的利用率,又引入了脱机批处理系统,即输入/输出脱离主机控制。

2) 卫星机:一台不与主机直接相连而专门用于与输入/输出设备打交道的。
    - 功能1: 从输入机上读取用户作业并放到输入磁带上。
    - 功能2: 从输出磁带上读取执行结果并传给输出机。

3) 脱机批处理系统作用
    - 主机不是直接与慢速的输入/输出设备打交道,而是与速度相对较快的磁带机发生关系,有效缓解了主机与设备的矛盾。
    - 主机与卫星机可并行工作,二者分工明确,可以充分发挥主机的高速计算能力。

4) 历史介绍
    - 脱机批处理系统:20世纪60年代应用十分广泛,它极大缓解了人机矛盾及主机与外设的矛盾。
5) 缺点
    - 次主机内存中仅存放一道作业,每当它运行期间发出输入/输出(I/O)请求后,高速的CPU便处于等待低速的I/O完成状态,致使CPU空闲。为改善CPU的利用率,引入 ---> 多道程序系统。

5) 总结 
    - 补充: Cpu运行的速度是非常快的,而数据从硬盘读取到内存速度,来说是非常慢的.
    - 这里的高速磁带就相当于我们现在计算机的内存
    - 输入机慢慢就演变成了硬盘,而高速磁带慢慢就演变成了内存

三. 多道程序系统

1. 多道技术产生的技术背景

cpu在执行一个任务的过程中,若需要操作硬盘,则发送操作硬盘的指令,指令一旦发出,硬盘上的机械手臂滑动读取数据到内存中,这一段时间,cpu需要等待,时间可能很短,但对于cpu来说已经很长很长,长到可以让cpu做很多其他的任务,如果我们让cpu在这段时间内切换到去做其他的任务,这样cpu不就充分利用了吗。这时多道技术便产生了.

2. 了解多道技术

1. 多道技术:多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。
	1) 空间上的复用:将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。
        - 空间上的复用最大的问题是:程序之间的内存必须分割,这种分割需要在硬件层面实现,由操作系统控制。如果内存彼此不分割,则一个程序可以访问另外一个程序的内存,
        - 首先丧失的是安全性,比如你的qq程序可以访问操作系统的内存,这意味着你的qq可以拿到操作系统的所有权限。
        - 其次丧失的是稳定性,某个程序崩溃时有可能把别的程序的内存也给回收了,比方说把操作系统的内存给回收了,则操作系统崩溃。
        
    2) 时间上的复用:当一个程序在等待I/O时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%,类似于我们小学数学所学的统筹方法。(操作系统采用了多道技术后,可以控制进程的切换,或者说进程之间去争抢cpu的执行权限。这种切换不仅会在一个进程遇到io时进行,一个进程占用cpu时间过长也会切换,或者说被操作系统夺走cpu的执行权限)

3. 多道技术图解(目的: 节省多个程序运行的总耗时)

图示介绍:

红线表示CPU的执行过程.  绿线表示程序的I/O操作

1) 单道程序工作流程图分析
    - 在A程序计算时,I/O空闲, A程序I/O操作时,CPU空闲(B程序也是同样);必须A工作完成后,B才能进入内存中开始工作,两者是串行的,全部完成共需时间=T1+T2。

2) 多道程序工作流程图分析
    - 将A、B两道程序同时存放在内存中,它们在系统的控制下,可相互穿插、交替地在CPU上运行:当A程序因请求I/O操作而放弃CPU时,B程序就可占用CPU运行,这样 CPU不再空闲,而正进行A I/O操作的I/O设备也不空闲,显然,CPU和I/O设备都处于“忙”状态,大大提高了资源的利用率,从而也提高了系统的效率,A、B全部完成所需时间<<T1+T2。

总结:

1) 单道(提示: 单道也叫串行): 只有执行完任务a, 才会去执行任务b,

2) 多道: 在执行a任务的时候,控制硬盘将任务b提前读取到内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源. 当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。

3) 作用: 多道程序设计技术使CPU得到充分利用,同时改善I/O设备和内存的利用率,从而提高了整个系统的资源利用率和系统吞吐量(单位时间内处理作业(程序)的个数),最终提高了整个系统的效率。

四. 分时系统: 多个联机终端+多道技术

1) 分时技术介绍: 把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。
    - 举例: 若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时中断,把处理机让给另一作业使用,等待下一轮时再继续其运行。由于计算机速度很快,作业运行轮转得很快,给每个用户的印象是,好象他独占了一台计算机。而每个用户可以通过自己的终端向系统发出各种操作控制命令,在充分的人机交互情况下,完成作业的运行。
    - 

2) 注意: 分时系统在没有遇到IO操作的时候并没有提升CPU的效率
    - 详细介绍: 分时系统的分时间片工作,在没有遇到IO操作的时候就用完了自己的时间片被切走了,这样的切换工作其实并没有提高cpu的效率,反而使得计算机的效率降低了。但是我们牺牲了一点效率,却实现了多个程序共同执行的效果,这样你就可以在计算机上一边听音乐一边聊qq了。

五. 实时系统

1) 实时系统的由来
    - 虽然多道批处理系统和分时系统能获得较令人满意的资源利用率和系统响应时间,但却不能满足实时控制与实时信息处理两个应用领域的需求。于是就产生了实时系统,即系统能够及时响应随机发生的外部事件,并在严格的时间范围内完成对该事件的处理。

2) 提示: 实时系统在一个特定的应用中常作为一种控制设备来使用。

3) 实时系统分成两类
    - 第一类: 实时控制系统。当用于飞机飞行、导弹发射等的自动控制时,要求计算机能尽快处理测量系统测得的数据,及时地对飞机或导弹进行控制,或将有关信息通过显示终端提供给决策人员。当用于轧钢、石化等工业生产过程控制时,也要求计算机能及时处理由各类传感器送来的数据,然后控制相应的执行机构。
    - 第二类: 实时信息处理系统。当用于预定飞机票、查询有关航班、航线、票价等事宜时,或当用于银行系统、情报检索系统时,都要求计算机能对终端设备发来的服务请求及时予以正确的回答。此类对响应及时性的要求稍弱于第一类。

4) 实时操作系统的主要特点:
    - 及时响应: 每一个信息接收、分析处理和发送的过程必须在严格的时间限制内完成。
    - 高可靠性: 需采取冗余措施,双机系统前后台工作,也包括必要的保密措施等。

六. 通用操作系统

1) 操作系统的三种基本类型: 多道批处理系统、分时系统、实时系统。

2) 通用操作系统:
    - 具有多种类型操作特征的操作系统。可以同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。

3) 实时批处理系统
    - 时处理+批处理=实时批处理系统。首先保证优先处理实时任务,插空进行批处理作业。常把实时任务称为前台作业,批作业称为后台作业。

4) 分时批处理系统
    - 分时处理+批处理=分时批处理系统。即:时间要求不强的作业放入“后台”(批处理)处理,需频繁交互的作业在“前台”(分时)处理,处理机优先运行“前台”作业。

5) 操作系统的渐趋完善
    - 从上世纪60年代中期,国际上开始研制一些大型的通用操作系统。这些系统试图达到功能齐全、可适应各种应用范围和操作方式变化多端的环境的目标。但是,这些系统过于复杂和庞大,不仅付出了巨大的代价,且在解决其可靠性、可维护性和可理解性方面都遇到很大的困难。
    - 相比之下,UNIX操作系统却是一个例外。这是一个通用的多用户分时交互型的操作系统。它首先建立的是一个精干的核心,而其功能却足以与许多大型的操作系统相媲美,在核心层以外,可以支持庞大的软件系统。它很快得到应用和推广,并不断完善,对现代操作系统有着重大的影响。
    - 至此,操作系统的基本概念、功能、基本结构和组成都已形成并渐趋完善。

七. 操作系统的进一步发展

进入20世纪80年代,大规模集成电路工艺技术的飞跃发展,微处理机的出现和发展,掀起了计算机大发展大普及的浪潮。一方面迎来了个人计算机的时代,同时又向计算机网络、分布式处理、巨型计算机和智能化方向发展。于是,操作系统有了进一步的发展,如:个人计算机操作系统、网络操作系统、分布式操作系统等。

1. 个人计算机操作系统

个人计算机上的操作系统是联机交互的单用户操作系统,它提供的联机交互功能与通用分时系统提供的功能很相似。
由于是个人专用,因此一些功能会简单得多。然而,由于个人计算机的应用普及,对于提供更方便友好的用户接口和丰富功能的文件系统的要求会愈来愈迫切。

2. 网络操作系统

计算机网络:通过通信设施,将地理上分散的、具有自治功能的多个计算机系统互连起来,实现信息交换、资源共享、互操作和协作处理的系统。
网络操作系统:在原来各自计算机操作系统上,按照网络体系结构的各个协议标准增加网络管理模块,其中包括:通信、资源共享、系统安全和各种网络应用服务。

3. 分布式操作系统

表面上看,分布式系统与计算机网络系统没有多大区别。分布式操作系统也是通过通信网络,将地理上分散的具有自治功能的数据处理系统或计算机系统互连起来,实现信息交换和资源共享,协作完成任务。——硬件连接相同。
但有如下一些明显的区别:
  (1)分布式系统要求一个统一的操作系统,实现系统操作的统一性。
  (2)分布式操作系统管理分布式系统中的所有资源,它负责全系统的资源分配和调度、任务划分、信息传输和控制协调工作,并为用户提供一个统一的界面。
  (3)用户通过这一界面,实现所需要的操作和使用系统资源,至于操作定在哪一台计算机上执行,或使用哪台计算机的资源,则是操作系统完成的,用户不必知道,此谓:系统的透明性。
  (4)分布式系统更强调分布式计算和处理,因此对于多机合作和系统重构、坚强性和容错能力有更高的要求,希望系统有:更短的响应时间、高吞吐量和高可靠性。

八. 为什么要有操作系统?

计算机系统的组成
    - 现在的计算机系统主要由一个或多个处理器组成,硬盘,键盘,鼠标,显示器,打印机,网络接口以及其他输入输出设备组成. 因此, 现在的计算机系统是一个复杂的系统.
    
为什么要有操作系统?
    - 原因1: 如果每位应用程序员都必须掌握该系统的所有细节,那就不可能再编写代码了. 这严重影响了程序员的开发效率,全部掌握这些细节可能需要1万年   
    - 原因2: 让操作系统管理这些部件并加以优化使用,是一件极富有挑战性的工作,于是, 计算机安装了一层软件,也就是我们所说的操作系统. 它的任务就是为用户程序提供了一个更好更简单更清晰的计算机模型,并管理刚才提到的所有设备.

总结:

程序员无法把所有的硬件操作细节都了解到,管理这些硬件并加以优化使用,是非常繁琐的工作,这个繁琐的工作就是操作系统来干的,有了它, 程序员就从这些繁琐的工作中解脱了出来,只需要考虑自己的应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件.

九. 什么是操作系统

1. 精简的说:

操作系统就是一个协调, 管理和控制计算机硬件资源与软件资源的一个控制程序.

2. 详细的说: 操作系统应该分成两部分功能

第1部分功能: 隐藏了丑陋的硬件调用接口,为应用程序提供调用硬件资源的更好, 更简单, 更清晰的模型,这个模型就叫系统调用接口. 应用程序员有了这些接口后,就不再考虑操作硬件的细节,只需要专心开发自己的应用程序即可.
    - 例如: 操作系统提供了文件这个抽象的概念, 对文件的操作就是对磁盘的操作. 因此有了文件我们无需再去考虑关于磁盘的读写控制. 比如: 控制磁盘的转动,移动磁头读写数据等细节,交给操作系统干就OK了.

第2部分功能: 将应用程序对硬件资源的'竞态'请求变得有序化.
    - 例如: 很多应用软件其实都是共享一套计算机硬件,比如说有可能有三个应用程序,同时需要申请打印机来输出,那么a程序竞争到了打印机资源并打印,但是也有可能是b程序竞争到了打印机并打印,,也还有可能是c程序竞争到了打印机资源打印,这种情况下可能引发的问题就是打印机可能打印一段a的内容,然后又去打印一段c的内容...,这就导致了无序. 因此操作系统的一个功能就是将这种无序变得有序.

3. 最最详细的说:

引入: 
    - 现在计算机或者网络都是多用户的,多个用户不仅共享硬件,而且共享文件,共享意味着可能冲突和无序.
    
操作系统的主要作用:
    1) 记录哪个程序使用什么资源
    2) 将应用程序访问资源的请求进行分配,
    3) 为不同的程序和用户调节互相冲突的资源请求.

我们可将上述操作系统的功能总结为: 来自多个程序发起了多个(多路)共享(复用)资源的请求,简称多路复用.

多路复用有两种实现方式:
    1) 第1种实现方式: 时间上的复用 
        当一个资源在时间上重复时, 不同的程序或用户轮流使用它,第一个程序获取该资源结束后,才轮到第二个。。。第三个。。。
    2) 第2种实现方式: 空间上的复用  
   怎么啊?换了个老师讲,     - 每个客户都获取了一个大的资源中的一小部分,从而减少了排队等待资源的时间.
        - 内存的空间复用: 多个运行的程序同时进入内存,硬件层面提供保护机制来保护各自的内存是分开的,且由操作系统控制. 这比一个程序独占内存,一个一个排队进入内存效率要高得多.
        - 磁盘的空间复用: 有关空间复用的其他资源还有磁盘,许多系统中一个磁盘同时为多个用户保存文件,分配磁盘空间,并且记录谁正在使用哪个磁盘,是操作系统资源管理的典型任务

多道技术:
    - 多路复用2种实现方式合起来就是,多道技术. 也就是说 多道技术 = 时间上的复用 + 空间上的复用(内存, 磁盘)你们觉得怎么凑合不了啊?                

十. 操作系统与普通软件的区别

1. 操作系统由硬件保护,不能被用户修改. 而普通软件,可以自定义.
2. 级别区别: 操作系统是一个大型, 复杂, 长寿的软件. 普通软件与操作系统根本不在一个级别上.
    - 大型:linux或windows的源代码有五百万行数量级。按照每页50行共1000行的书来算,五百万行要有100卷,要用一整个书架子来摆置,这还仅仅是内核部分。用户程序,如GUI,库以及基本应用软件,很容易就能达到这个数量的10倍或者20倍之多。
    - 长寿:操作系统很难编写,如此大的代码量,一旦完成,操作系统所有者便不会轻易扔掉,再写一个。而是在原有的基础上进行改进。

十一. 重点总结

一. 操作系统的作用
    1. 隐藏复杂丑陋的接口, 提供良好的抽象接口
    2. 协调, 管理, 控制多哥进程对硬件的竞争变得有序.
    
二. 多道技术
    1. 产生的背景: 争对单核, 实现并发.
        - 补充: 现在的主机一般都是多核, 那么每个核都会利用多道技术.
    2. 空间上的复用: 内存中可以同时存在多道程序.
    3. 时间上的复用: 复用同一个CPU时间片
        - 举例: 洗衣服30秒,做饭50秒,烧水30秒.
            如果是单道: 共需要耗时110秒,
            如果是多道: 只需要耗时50秒,只需要任务做最长的那一个, 也就是我们的做饭.
    4. 切换+保存状态: 多道的本质就是CPU的切换加保存状态
        1) 切换: CPU分成两种情况
            - 第1种情况: 当一个程序遇到Io操作的时候,操作系统会剥夺该程序的Cpu执行权限(作用: 提高了CPU的利用率,并且也不影响程序的执行效率)

            - 第2种情况: 当一个程序长时间占用CPU的时候,操作系统也会剥夺该程序的CPU执行(利用复用的CPU时间片来判断程序是否长时间占用CPU)
                作用: 为了让个任务都能被执行到.
                弊端: 一个程序真正执行的时间, 现在等于程序执行的原本的时间 + 程序的切换时间. 因此降低了程序的原本的执行效率.

        2) 保存状态: 我们这里涉及到状态的保存,当我们做了一部分事情以后,下次我们接着干这种事情的时候,我们要基于这个状态继续运行.
posted @ 2020-04-22 20:54  给你加马桶唱疏通  阅读(193)  评论(0编辑  收藏  举报