前言
Charpter 1:操作系统引论
在这篇文章中,我将对这一周的操作系统学习做一个简单的复盘,以后大概每周都会更新一次。
本节课的主要目标
- 操作系统的定义
- 操作系统的目标和作用
- 操作系统的发展
- 操作系统的基本特征
- 操作系统的主要功能
- 操作系统的结构设计
操作系统的定义
操作系统(Operating System)是计算机系统中最基本和最重要的系统软件,它用于控制和管理整个计算机系统的硬件和软件资源,合理地组织调度计算机的工作和资源的分配,控制程序的运行,并提供给用户其它软件方便的接口和环境。
OS是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。
操作系统的目标
1.方便性
通过OS所提供的各种命令,图形用户界面和系统调用等操纵计算机系统,方便用户对计算机的使用。
2.有效性
使计算机的各类资源在系统的管理下得到更有效的利用,提高系统的吞吐量。
3.可扩充性
便于修改和增加功能。微内核结构。
4.开放性
系统能支持世界标准规范,特别是OSI国际标准。
操作系统的作用
1.OS作为用户和计算机硬件系统之间的接口
2.OS作为计算机系统资源的管理者
- 处理机管理:用于分配和控制处理机
- 存储器管理:主要负责分配及回收内存
- I/O设备管理:负责I/O设备的分配(回收)与操纵
- 文件管理:实现文件的存取,共享和保护
3.OS实现了对计算机资源的抽象
对裸机来说,对外提供的只有一些物理接口,难以广泛使用。但是为了方便用户使用I/O设备,人们就在上面多加了一层管理软件来隐藏具体细节,这样的机器就被称为扩充机或虚机器。
所以由此可知,OS是铺设在计算机硬件上的多层软件的集合,不仅增强了系统功能,还隐藏了对硬件操作的具体细节,实现了对计算机硬件操作的多个层次的抽象模型。
操作系统的发展
操作系统发展的主要动力
- 1.不断提高计算机资源利用率
- 2.方便用户
- 3.器件的不断更新换代
- 4.计算机体系结构的不断发展
- 5.不断提出新的应用需求
操作系统的发展过程
1.人工操作方式
早期的操作方式就是程序员把事先穿孔的纸袋装入纸袋输入机,然后启动它们,把上面的数据输入到计算机,再启动计算机运行。这缺点就是一个人独占一个机子,这个人用的时候别人就用不了了。还有就是做装纸带拿出纸带这些操作的时候CPU是在等人,在这期间资源是空闲的。换句话说就是CPU和I/O设备之间速度不匹配。
2.脱机输入输出方式
整台外围机控制CPU的输入输出,和主机没有关系,由于程序和数据的输入和输出都是在外围机的控制下完成的,或者说,它们是在脱离主机的情况下进行的,故称为脱机I/O方式。 这个特点就是减少了CPU的空闲时间,提高了I/O速度。
3.单道批处理系统
批处理系统的引入是为了提高系统资源的利用率和吞吐量。 单道批处理系统的概念就是系统对作业的处理是成批进行的,且内存中始终只保持一道作业。最主要的缺点就是,系统中的资源得不到充分的利用。
4.多道批处理系统
多道批处理系统的特征:
多道性
内存中同时驻留多道程序,并允许它们并发执行,提高了资源利用率和系统吞吐量。
无序性
多个作业完成的先后顺序与它们进入内存的顺序之间并无严格的对应关系。
调度性
作业调度,进程调度。
多道批处理系统的优点
提高了资源利用率和系统的吞吐量。
多道批处理系统的缺点
1.平均周转时间长。由于作业要排队依次进行处理,因而作业的周转时间较长,通常需几个小时,甚至几天。
2.无交互能力。用户一旦把作业提交给系统后,直至作业完成,用户都不能与自己的作业进行交互,修改和调试程序极不方便。
分时系统
分时系统的概念:分时系统是指在一台主机上连接了多个配有显示器和键盘的终端并由此组成的系统,该系统允许多个用户同时通过自己的终端,以交互方式使用计算机,共享主机中的资源。
为啥有了多道批处理系统我们还要分时系统嘞?
- 如果说推动多道批处理系统形成和发展的主要动力是提高资源利用率和系统吞吐量。
- 那么,推动分时系统形成和发展的主要动力,则是为了满足用户的需求。用户的需求具体表现在以下方面:人机交互和共享主机。
分时系统实现中的关键问题:
如何使用户能与自己的作业进行交互。即当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,再将结果返回给用户。此后,用户可继续键入下一条命令,此即
人—机交互。
应强调指出,即使有多个用户同时通过自己的键盘键入命令,系统也应能全部地及时接收并处理。
(1)
及时接收:可配置一个多路卡和为每个终端配置一个缓冲区。
(2)
及时处理:采用作业直接进入内存和轮转运行方式。
分时系统的特征
- 多路性:即同时性。多台终端同时连接一台主机,按分时服务原则。
- 独立性:用户间彼此互不干扰
- 及时性:用户请求能在很短时间内获得响应。
- 交互性:用户可通过终端与系统进行人机对话。
实时系统
在要求及时处理的场合的时候,我们就需要实时系统来发挥作用辽。 所谓实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。在生活中,应用到实时系统的都是对时间要求很高的行业,像武器控制系统啊,信息查询系统啊,多媒体系统,嵌入式系统等等。
实时系统的类型
(1)按任务执行是否呈现周期性来划分
周期性的(联系周期);
非周期性的(联系开始或完成截止时间)
(2) 根据对截止时间的要求来划分
- 硬实时任务(hard real-time task)。系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果。
- 软实时任务(Soft real-time task)。它也联系着一个截止时间,但并不严格,若偶尔错过了任务的截止时间, 对系统产生的影响也不会太大。
微机操作系统的发展
- 单用户单任务操作系统
- 只允许一个用户上机,且只允许用户程序作为一个任务运行。
- 单用户多任务操作系统
- 只允许一个用户上机,但允许用户把程序分为若干个任务,使它们并发执行,从而有效地改善了系统的性能。
- 多用户多任务操作系统
- 允许多个用户通过各自的终端,使用一台机器,共享主机系统中的各种资源,而每个用户程序又可进一步分为几个任务,使它们能并发执行,从而可进一步提高资源利用率和系统吞吐量。
操作系统的基本特征
多道批处理系统、分时系统和实时系统这三种基本操作系统都具有各自不同的特征。
- 批处理系统有着高的资源利用率和系统吞吐量。
- 分时系统能获得及时响应。
- 实时系统具有实时特征等。
此外,它们还共同具有并发,共享,虚拟和异步四个基本特征。
并发
说起并发性,很多人可能会想起并行,这两个词的意思总是让人觉得差不多一样。然而,并发和并行是
既相似又有区别的两个概念。
并行是指两个或多个事件在
同一时刻发生。
并发是指两个或多个事件在
同一时间间隔内发生。
引入进程
- 在一个未引入进程的系统中,属于同一个应用程序的计算程序和I/O程序之间只能是顺序执行。
- 但为计算程序和I/O程序分别建立一个进程后,这两个进程便可并发执行。
- 若对内存中的多个程序都分别建立一个进程,它们就可以并发执行,这样便能极大地提高系统资源的利用率,增加系统的吞吐量。
共享
系统中资源可供内存中多个并发执行的进程共同使用。 目前主要有以下两种资源共享方式。
- 互斥共享:一段时间只允许一个进程访问该资源,如打印机、磁带机等大多数物理设备,以及某些软件中所用的栈、变量和表格等。
- 同时访问:允许在一段时间内由多个进程“同时”对资源进行访问。在单处理机环境下宏观上“同时”,微观上仍是互斥的. 典型的可供多个进程“同时”访问的资源是磁盘设备,一些用重入码编写的文件,也可以被“同时”共享,即若干个用户同时访问该文件。
虚拟
在OS中,把通过某种技术把
一个物理实体变为
若干个逻辑上的对应物的功能称为虚拟。前者是实的,即实际存在的;而后者是虚的,是用户感觉上的东西。
那么虚拟该如何实现嘞?
- 时分复用技术:
1.1 虚拟处理技术
1.2 虚拟设备技术
- 空分复用技术:
在计算机中把空分复用技术用于对存储空间的管理,用以提高存储空间的利用率。
虚拟存储器
可以通过虚拟存储器技术,将一台机器的物理存储器变为虚拟存储器,以便从逻辑上来扩充存储器的容量。此时,虽然物理内存的容量可能不大(如32 MB),但它可以运行比它大得多的用户程序(如128 MB)。
虚拟技术
在操作系统中,虚拟的实现主要是通过
分时使用的方法。显然,如果N是某物理设备所对应的虚拟的逻辑设备数,则虚拟设备的平均速度必然是等于或低于物理设备速度的1/N。
异步
- 在多道程序环境下,进程运行进度不可预知。
- 由于资源等因素的限制,使进程的执行通常都不是“一气呵成”,而是以“停停走走”的方式运行。
- 尽管如此,但只要运行环境相同,且系统配有完善的进程同步机制,作业经多次运行,都会获得完全相同的结果。
- 因此,异步进行方式是允许的,是操作系统的一个重要特征。
操作系统的主要功能
引入OS的主要目的是,为多道程序的运行提供良好的运行环境,以保证多道程序能有条不紊地,高效地运行,并能最大程度地提高系统中各种资源的利用率,方便用户的使用。
为此,在传统的OS中应具有
处理机管理,
存储器管理,
设备管理和
文件管理等基本功能。
此外,为了方便用户使用OS,还需向用户提供
方便的用户接口。
1.处理机管理功能
在传统的多道程序系统中,处理机的运行及分配都是以
进程为单位,因此处理机管理可归结为
进程管理。
- 进程控制
创建/撤消进程:在传统的多道程序环境下,要使作业运行,必须先为它创建一个或几个进程,并为之分配必要的资源。当进程运行结束时,立即撤消该进程,以便能及时回收该进程所占用的各类资源。
控制进程在运行过程中的状态转换
- 进程同步:
为使多个进程有条不紊地运行,系统中需设置相应的进程同步机制。该机制的主要任务是为多个进程(含线程)的运行进行协调。
常用的协调的方式有:进程互斥方式和进程同步方式
- 进程通信:
- 源于进程合作,如:输入进程、计算进程、打印进程相互间有信息传递
- 类型:
直接通信:进程A发message,进程B收message
间接通信: 进程A发message到中间实体(如mailbox),进程B从中间实体收message
- 调度:
在传统的OS中,调度包括作业调度和进程调度两步。
- 作业调度:
为作业分配必要资源,调入内存建立进程,并使之进入就绪队列。
- 进程调度:
从就绪队列中选出进程,分配CPU,使之运行。
1.进程互斥方式
指诸线程在对临界资源进行访问时,应采用互斥方式。
2.进程同步方式
指在相互合作去完成共同任务的诸进程间,由同步机构对它们的执行次序加以协调。
2.存储器管理功能
- 存储器管理的主要任务:为多道程序的运行提供良好的环境,方便用户使用,提高存储器利用率,能从逻辑上扩充内存。
- 为此,存储器管理应该具有内存分配和回收、内存保护、地址映射和内存扩充等功能。
- 内存分配:
静态分配和动态分配,提高内存使用率允许正在运行的程序申请附加的内存空间以适应程序和数据动态增长的需要。
- 内存保护:
确保程序之间互不干扰,不允许用户程序访问操作系统的程序和数据,也不允许用户程序转移到非共享的其它用户程序中去执行。
- 地址映射:
为保证程序能正确运行,存储器管理必须提供地址映射功能,即能够将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。该功能应在硬件的支持下完成。
- 内存扩充
利用虚存技术,从逻辑上扩充内存容量,使用户所感觉到的内存容量比实际内存容量大得多;以便让更多的用户程序能并发运行。这样,既满足了用户的需要,又改善了系统的性能。
为了能在逻辑上扩充内存,系统必须设置内存扩充机制(包含少量的硬件),用于实现下述各功能:
(1) 请求调入功能。
(2) 置换功能。
3.设备管理功能
设备管理的主要任务:
- 1.完成用户进程提出的I/O请求,为用户进程分配其所需的I/O设备,并完成指定的I/O操作。
- 2.提高CPU和I/O设备的利用率,提高I/O速度,方便用户使用I/O设备。
为实现上述任务,设备管理应具有
缓冲管理,
设备分配和
设备处理以及
虚拟设备等功能。
一.缓冲管理
缓冲区:用来解决CPU-I/O矛盾,如:CPU快则应多创建缓冲区。
二.设备分配
包括:设备,设备控制器,I/O通信的分配和回收
三.设备处理
设备处理程序又称为设备驱动程序。其基本任务是用于实现CPU和设备控制器之间的通信,即由CPU向设备控制器发出I/O命令,要求它完成指定的I/O操作;反之由CPU接收从控制器发来的中断请求,并给予迅速的响应和相应的处理。
设备处理/驱动程序应能根据用户的I/O请求,自动地构成通道程序。
四.设备独立性和虚拟设备
独立性(设备无关性):应该程序与设备无关性,即应用程序独立于具体使用的物理设备,使应用程序易于重定向,增加了可移植性。
虚拟设备:将一台物理I/O设备虚拟为多台逻辑上的I/O设备。
4.文件管理功能
主要是为了对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。
主要功能有:
1.文件存储空间的管理
2.目录管理
3.文件的读/写管理和保护
文件存储空间的管理
由文件系统对诸多文件及文件的存储空间,实施统一的管理。
主要任务是为每个文件分配必要的外存空间,提高外存的利用率,进而提高文件系统的存取速度。
为此,系统应该设置相应的数据结构,用于记录文件存储空间的使用情况,以供分配存储空间时参考;系统还应具有对存储空间进行分配和回收的功能。
目录管理
为每个文件建立目录项,并对众多的目录项加以有效的组织,以实现方便的按名存取。即用户只需提供文件名,即可对该文件进行存取。
其次,目录管理还应能实现文件共享,这样,只须在外存上保留一份该共享文件的副本。
此外,还应能提供快速的目录查询手段,以提高对文件的检索速度。
文件的读/写管理和保护
- (1) 文件的读/写管理。
该功能是根据用户的请求,从外存中读取数据;或将数据写入外存。
- (2) 文件保护。
① 防止未经核准的用户存取文件;
② 防止冒名顶替存取文件;
③ 防止以不正确的方式使用文件。
5.操作系统与用户之间的接口
一.用户接口
- 1.联机用户接口
-由一组键盘操作命令及命令解释程序所组成。
- 2.脱机用户接口
-用作业控制语言(JCL)写作业说明书,委托系统代替用户对作业进行控制和干预。
- 3.图形用户接口
-以图形化的操作界面,如,用户可通过菜单和对话框用移动鼠标来选择菜单项的方式来完成对应用程序和文件的操作。
二.程序接口
- 该接口是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的唯一途径。它是由一组系统调用组成的,每一个系统调用都是一个能完成特定功能的子程序。
- 早期在用汇编语言书写的程序中才能直接使用系统调用。
- 通过调用高级语言的库函数来使用系统调用。
现代的操作系统有啥新功能?
现代操作系统除了具有传统操作系统的功能外,还增加了
面向安全、面向网络和面向多媒体等功能。
- 系统安全
- 认证技术
- 密码技术
- 访问控制技术
- 反病毒技术
- 网络的功能和服务
- 网络通信:源和目标主机间无差错的数据传输。
- 资源管理:实现对共享资源的管理。
- 应用互操作:实现信息的互通性和互用性。
- 支持多媒体
- 接纳控制功能
- 实时调度
- 多媒体文件的存储
操作系统的结构设计
1.无结构操作系统
早期的OS是为数众多的一组过程的集合,各过程之间可以相互调用,在操作系统内部不存在任何结构,因此,这种OS是无结构的,也有人把它称为整体系统结构。
缺点:逻辑复杂,维护困难。
2.模块化结构操作系统
模块化程序设计技术,是最早(20世纪60年代)出现的一种程序设计技术。
该技术是基于“分解”和“模块化”原则来控制大型软件的复杂度的。
3.分层式结构操作系统
为了将模块-接口法中“决定顺序”的无序性变为有序性,引入了有序分层法。
分层法的设计任务是,在目标系统An和裸机系统A0之间,铺设若干个层次的软件A1、A2、…、An-1,使An通过An-1、An-2、…、A2、A1层,最终能在A0上运行。
在操作系统中,常采用自底向上法来铺设这些中间层。
分层结构的优缺点:
主要优点:
(1) 易保证系统的正确性。
(2) 易扩充和易维护性。
主要缺点:
系统效率降低。
由于层次结构是分层单向依赖的,必须在每层之间都建立层次间的通信机制,OS每执行一个功能,通常要自上而下地穿越多个层次,这无疑会
增加系统的通信开销,从而导致系统效率的降低。
4.客户/服务器模式
客户/服务器系统主要由三个部分组成:
1.客户机
2.服务器
3.网络系统
客户/服务器交互的过程:
- 客户发送请求消息。
- 服务器接收消息。
- 服务器回收消息。
- 客户机接收消息。
客户/服务器模式的优点
- 数据的分布处理和存储。
- 便于集中管理。
- 灵活性和可扩充性。
- 易于改编应用软件。
面向对象的程序设计技术
面向对象技术是基于“
抽象”和“
隐蔽”原则来控制大型软件的复杂度的。
OS中的各类实体如进程、线程、消息、存储器等,都使用了对象这一概念,相应地,便有进程对象、线程对象、存储器对象等。 如果把一个文件看成一个对象,这个对象的变量就是文件类型,文件大小,文件的创建者等。
对象中的方法包含了对文件的操作,如创建文件,打开文件,读文件,写文件,关闭文件等。
面向对象技术的优点
在操作系统设计时,将计算机中的实体作为对象来处理,带来的
好处有:
- 通过“重用”提高产品质量和生产率。
- 使系统具有更好的易修改性和易扩展性。
- 更易于保证系统的“正确性”和“可靠性”。
微内核操作系统结构
1.足够小的内核
在微内核操作系统中,
内核是指精心设计的、能实现现代OS最基本核心功能的小型内核,微内核并非是一个
完整的OS,而只是将操作系统中
最基本的部分放入微内核,通常包含有:① 与硬件处理紧密相关的部分;② 一些较基本的功能;③ 客户和服务器之间的通信。这些OS最基本的部分只是为构建通用OS提供一个
重要基础,这样就可以确保把操作系统内核做得很小。
2.基于客户/服务器模式
在单机微内核操作系统中几乎无一例外地都采用客户/服务器模式,将操作系统中
最基本的部分放入内核中,而把操作系统的绝大部分功能都放在
微内核外面的一组服务器(进程)中实现。
3.应用“机制与策略分离”原理
机制是指实现某一功能的具体执行机构。通常将机制部分以及与硬件紧密相关的部分放入微内核中。
策略则是在机制的基础上,借助于某些参数和算法来实现该功能的优化,或达到不同的功能目标。
4.采用面向对象技术
我们不仅可以通过
结构设计来分解操作系统的复杂度,还可以基于
面向对象技术中的“抽象”和“隐蔽”原则控制系统的复杂性,再进一步利用“对象”、“封装”和“继承”等概念来确保操作系统的“正确性”、“可靠性”、“易修改性”、“易扩展性”等,并提高操作系统的设计速度。
微内核的基本功能
- 进程(线程)管理
- 低级存储器管理
- 中断和陷入处理
微内核操作系统的优点
微内核OS结构是建立在模块化、层次化结构的基础上,并采用了客户/服务器模式和面向对象的程序设计技术,因此,微内核结构的操作系统具有的优点为:
- 提高了系统的可扩展性。
- 增强了系统的可靠性。
- 可移植性强。
- 提供了分布式系统的支持。
- 融入了面向对象技术。
微内核操作系统的缺点
微内核OS最主要的缺点是,较之早期的操作系统,
微内核操作系统的运行效率有所降低。
效率降低的最主要的原因是,在完成一次客户对OS提出的服务请求时,需要利用
消息实现多次交互和进行用户/内核模式及上下文的多次切换。
后记
这概念太多了orz。。。