二、操作系统概论
2.1操作系统的目标和功能
操作系统的目标:
-
方便(操作系统使得计算机更加易于使用)
-
有效(允许以更有效的方式使用计算机系统资源)
-
扩展的能力(在构造操作系统时,应该允许在不妨碍服务的前下有效地开发,测试和引进新的系统功能)
操作系统提供的服务:
-
程序开发(Editors and debuggers)
-
程序运行
-
I/O设备访问
-
文件访问控制
-
系统访问
-
错误检测与响应
- 内部和外部硬件错误
- 软件错误
- 操作系统无法确认应用程序的请求
-
审计
-
负责管理计算机资源
-
与普通应用软件类似
-
操作系统会经常释放控制,而且必须依赖处理器才能恢复控
内核程序(Kernel):操作系统一部分驻留在主存中(RAM)中,内核是这部分驻留程序的一部分
包括了操作系统中最常用的功能
操作系统的易扩展性:
- 硬件升级和新型硬件硬件的出现
- 新的服务
- 纠正错误
2.2操作系统的发展历史
2.2.1串行处理阶段
- 计算机没有操作系统(程序员需要直接和硬件打交道)
- 机器在一个控制台上运行,控制台包括显示灯、触发器、某种类型的输入设备和打印机(用机器代码编写的程序通过输入设备比如:卡片阅读器,载入计算机,一个错误使得程序停止时,错误原因由于显示灯指示,如果程序正常完成,输出结果将出现在打印机中。)
- 早期的操作系统引出了两个主要问题:
- 调度:大多数设备都是通过登记表来预定机器时间,通常用户可以以半个小时为单位来登记,但是如果定了2个小时,快了可能1个小时45分钟就完成了,会造成15min的时间浪费,如果慢了,就会造成在解决问题之前被强制停止。
- 准备时间:单个程序需要向内存中夹在编辑器和高级语言程序(源程序),保存编译好的程序,然后夹在目标程序和公用函数并进行连接,每个步骤都需要安装和拆卸,或者准备卡片组。而且如果出现错误还需要从新来过。
2.2.2简单批处理系统(Simple Batch System)
- 简单批处理方案的中心思想是使用一个成为监控程序(monitor)的软件。通过使用这类操作系统,用户不再直接访问机器,相反,用户只需要把卡片或者磁带交给计算机操作员,由操作员把这些作业顺序组织成批,并将镇哥哥批作业放在输出设备哈桑,供监控程序使用。每个程序完成处理之后返回到监控程序,同时,监控程序自动加载下一个程序。
- 可以通过一下两个角度来理解:
- 1:监控程序角度,在一个程序结束之后呢,它将处理器的控制权返回给了监控程序,监控程序去读取下一个作业。
- 2.处理器角度:”控制权交给作业”意味着处理器当前取的和执行的都是用户程序中的指令,而”控制权返回给监控程序”则意味着处理器当前从监控程序中提取出的指令并执行指令。
作业控制语言(JCL Job Control Language)
- 作业控制语言是一种特殊类型的程序控制语言
- 为监控程序提供指令
- 通过JCL为批处理系统提供控制功能
注:相对于现代操作系统,此时的操作系统的功能还很简单
- 批处理系统是一个简单的计算机程序
- 他依赖于处理器可以从内存的不同部分取指令的能力,以交替地获取或释放控制权
- 具有一些硬件功能:
- 内存保护(不能改变包括监控程序的内存区域,用户程序下执行user mode该模式下特定的指令没有办法执行,监控程序执行情况下为system mode该情况下,特权指令可以执行,保护区域可以访问。)
- 定时器Timer:防止一个作业独占系统
- 特权指令(某些指令只能由监控程序执行。若处理器在运行用户程序是遇到这类指令,则会发生错误,并导致将控制权给监控程序,例如I/O指令属于特权指令,监控程序可以监控所有设备)
- 中断(之前的操作系统是不具备这种能力的)
2.2.3多道批处理系统
多道程序设计主要是针对于单道程序设计,在单道程序设计系统中处理器在执行下一条指令前必须等待I/O指令完成,而多道程序设计系统如果一个程序在等待I/O,处理器可以转为处理其他作业,可以提高处理器的利用效率。
2.2.4分时系统(Time Sharing)
-
使用多道程序技术来处理多个交互作业
-
处理器的时间在多个用户作业分时共享
-
多个用户通过重担设备同时使用系统
I/O Devices Slow
读取时间为15$\mu$s,执行时间为 1$\mu$s,写入时间为15$\mu$s,总共的时间为31$\mu$s,CPU的利用率就是$\frac{15\mu s}{31\mu s}$
多道程序设计就是如果一个作业正在等待I/O,处理器可以转为处理其他作业,可以提高处理器利用率。
2.3操作系统的主要成就
2.3.1进程管理
-
进程的概念:
- 一个正在执行的程序、一个正在计算机上执行的程序实例、能分配给处理器并由处理器执行的实体、一个具有以下特征的活动单元:一组指令序列的执行、一个当前状态和相关的系统资源集合
- 进程由三部分组合而成
- 一段可以执行的程序
- 程序所需的相关数据
- 程序的执行上下文
-
系统软件设计的四个难点;
- 1.不正确的同步:常常一个程序必须要挂起去等待其他地方的某一个事件的发生,但是如果设计不合理就会导致信号丢失或者接收到重复的信号。
- 2.失败的互斥:多个用户程序试图同时使用一个共享资源,但是很难证明这类呼哧机制对于所有的事件都是适用的。
- 3.不确定的程序操作:不同的程序调度顺序可能会影响到特定的输出结果。
- 4.死锁:两个程序可能都需要两个I/O设备去执行一些操作,一个程序获得了一个设备的控制权,另一个程序获得了另一个设备的控制权,他们都等待对方释放自己想要的资源。这样两个或者多个程序就会相互挂起等待,造成死锁。
2.3.2内存管理
- 进程隔离:进程A的虚拟地址和进程B的虚拟地址不同,这样就防止进程A将数据信息写入进程B。
- 自动分配和管理:
- 支持模块化程序设计
- 保护和访问控制
- 长期储存
虚拟内存(Virtual Memory)
- 允许程序从逻辑角度来使用内存
- 当一个程序被写入到辅助储存器中并且后记进程被读入的时,在连续的进程执行之间将不会脱节。
虚拟内存与文件储存
- 文件系统实现了长期储存
- 它在一个有名字的对象中保存信息,这个对象成为文件
分页(Paging)
- 在分页系统中,进程由许多固定大小的块组成,这些块称为页(Page)
- 虚拟地址由**页号和页内偏移地址**组成
- 进程中的每一页都可放在主存中的任何地方
- 实地址可放在主存中的任何地方
虚拟内存寻找地址:(图片省略)
2.3.3信息保护和安全
- 可用性:保护系统不被中断。
- 保密性:保证用户不能读取未授权访问的数据。
- 数据完整性:保护数据不被授权修改。
- 认证:设计用户奢妃的正确认证和消息数据的合法性。
2.3.4调度和资源管理
- 资源分配和调度策略许考虑三个因素:
- 1.公平性(公平或公正的资源竞争机制)
- 2.有差别的响应性(需要区分不同服务的不同作业类,有优先级别处理机制)
- 3.执行效率:最大吞吐量、最小的响应时间、能容纳尽可能多的用户
2.3.5系统结构
-
可以把整个系统看作是一系列的层次
-
每层执行总系统所需功能的相关子集
- 每一层依赖下一个较低层,较低层执行更为原始的功能并隐藏这些功能的细节
- 通过分层设计,可吧一个问题分解为几个更易于处理的子问题
2.4 现代OS的一些基本特征:
-
并发性
- 并发性指两个或者两个以上的事件或者活动在同一时间间隔内发生。发挥并发性能够消除系统中部件和部件之间的相互等待,有效地改善系统资源的利用率,改进系统的吞吐率,提高系统效率。
- 进程可以清晰的刻划出来并发性。
- 采用并发技术的系统称为多任务系统(Multitasking),并发的实质是一个物理CPU(也可以是多个CPU)在若干通道之间多路复用,并发性是对有限物理资源强制行使多用用户共享以提高效率。
- 并行性指两个或两个以上事件或者活动在同一时刻发生。在多通道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。在分布式系统中,多台计算器并存使程序的并发性得到了更为充分发挥,同一时刻每台计算机上都可以有程序在执行。
- 并行的事件或者活动一定是并行,但是并行的不一定是并发。
-
共享性
- 共享指操作系统中的资源可以被多个并发执行的进程所使用,可分成两种资源共享方式:
-
- 互斥访问:系统中的某些资源同一时间内只允许一个进程访问,许多资源同一时间内只允许一个进程访问,许多物理设备,以及某些数据和表格都是互斥的。
- 同时访问:系统中还有许多资源,允许同一时间内多个程序对它进行访问,这里”同时”是宏观的说法。典型的可供多进程同时访问的资源就是磁盘。
-
虚拟性
- 虚拟性是擦欧哦系统中的一种管理技术,它是把物理上的一个实体变成逻辑上的多个对应为,或者把物理上的多个实体变成逻辑上的一个对应物的技术。
- 通过多道程序和分时使用CPU技术,物理上的一个CPU变成了逻辑上的多个CPU。
-
异步性
- 异步性就是描述进程这种以不可预知的速度走走停停、何时开始何时暂停何时结束不可预知的性质。