操作系统-Part1
操作系统-Part1——计算机系统概述
[TOC]
操作系统的概念、功能
定义
- 操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。
- 操作系统是系统资源的管理者
- 向上层提供方便易用的服务
- 是最接近硬件的一层软件
功能和目标
- 作为系统资源的管理者
- 功能:
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
- 目标:
- 安全、高效
- 功能:
- 向上层提供方便易用的服务
- 封装:操作系统把丑陋的硬件功能封装成简单易用的服务,使用户能更方便地使用计算机
- 实例:
- 直接给用户使用
- GUI(Graphical User Interface):图形化用户接口
- 命令接口
- 联机命令接口(交互式命令接口)
- 脱机命令接口(批处理命令接口)
- 给软件/程序员使用
- 程序接口:系统调用(广义指令)是应用程序请求操作系统服务的唯一方式
- 直接给用户使用
- 其中,命令接口与程序接口,统称为用户接口(狭义的用户接口不包括 GUI)
- 作为最接近硬件的层次
- 目标:实现对硬件机器的拓展
- 使单纯的硬件组合起来以获得更强的功能
- 通常把覆盖了软件的机器成为扩充机器,又称之为虚拟机
- 目标:实现对硬件机器的拓展
操作系统的特征
考点:
- 并发和并行的区别
- 并发和共享互为存在条件
- 并发和共享是操作系统的两个最基本的特征(没有并发和共享,就谈不上虚拟和异步)
基本特征
- 操作系统的特征
- 并发
- 共享
- 虚拟
- 异步
- 其中,并发和共享是两个最基本的特征,二者互为条件(重点)。
并发
并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
- 常考易混概念——并行:指两个或多个事件在同一时刻同时发生。
操作系统的并发性:指计算机系统中同时运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。
- 操作系统就是伴随着“多道程序技术”而出现的,操作系统和程序并发是一起诞生的。
注意(重要考点):
- 单核 CPU 同一时刻只能执行一个程序,各个程序只能并发地执行。
- 多核 CPU 同一时刻可以同时执行多个程序,多个程序可以并行地执行。
只要有超过可并行数量的程序需要同时运行,那么并发性就是必不可少的。所以,并发性是操作系统一个最基本的特性。
共享
- 共享:即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
- 两种资源共享方式
- 互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源
- 同时共享方式:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问
- 所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(分时共享)
- 微观上交替,例:多个进程交替访问硬盘
- 也有可能是宏观上也为同时,例:多个进程同时使用扬声器
并发和共享的关系:
- 两个进程正在并发执行(并发性)
- 如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义
- 需要共享地访问硬盘资源(共享性)
- 如果失去共享性,则 QQ 和微信不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发
虚拟
- 虚拟:指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
- 虚拟技术:
- 空分复用技术
- 如虚拟存储器技术:运行程序的大小远超实际内存
- 时分复用技术:微观上处理机在各个微小的时间段内交替着为各个进程服务
- 如虚拟处理器技术:实际只有单核,但是用户看来有多核 CPU 在工作
- 空分复用技术
如果失去了并发性,就失去了实现虚拟性的意义了。因此,没有并发性,就谈不上虚拟性。
异步
- 进程的异步性:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行只能以不可预知的速度向前推进。
- 并发运行的程序会争抢使用系统资源,而系统中的资源有限,因此进程的执行不是一贯到底的,而是走走停停的,向前推进的速度是不可预知的
如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。只有系统拥有并发性,才有可能导致异步性。
操作系统的发展与分类
发展阶段
手工操作阶段
- 主要缺点:用户独占全机、人机速度矛盾导致资源利用率极低
批处理阶段——单道批处理系统
- 引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出
- 通过外围机把程序(纸带)提前存到磁带里,主机则读写磁带信息
- 监督程序是操作系统的雏形
- 主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
- 主要缺点:
- 内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。
- CPU 有大量的时间是在空闲等待 I/O 完成。资源利用率依然很低。
- 引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出
批处理阶段——多道批处理系统
- 每次往内存中读入多道程序
- 操作系统正式诞生,用于支持多道程序并发运行
- 主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU 和其他资源更能保持“忙碌”状态,系统吞吐量增大。
- 主要缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行)
分时操作系统
- 计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
- 主要优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
- 主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
实时操作系统
- 主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
- 在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的主要特点是及时性和可靠性。
- 分类:
- 硬实时系统:必须在绝对严格的时间内完成处理(如:导弹控制系统、自动驾驶系统)
- 软实时系统:能接受偶尔违反时间规定(如:12306火车订票系统)
其他几种操作系统
- 网络操作系统:是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享和各台计算机之间的通信。(如:Windows NT 就是一种典型的网络操作系统,网站服务器就可以使用)
- 分布式操作系统:主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务。
- 个人计算机操作系统:如 Windows XP、MacOS,方便个人使用。
操作系统的运行机制(考点)
内核程序 v.s. 应用程序
- 普通程序员写的程序是“应用程序”
- 操作系统程序员写的是“内核程序”
- 由多个内核程序组成了“操作系统内核”,或简称“内核(Kernel)”
- 内核是操作系统最重要最核心的部分,也是最接近硬件的部分
- 其实,一个操作系统只要有内核就够了(eg:Docker -> 仅需 Linux 内核)
- 操作系统的功能未必都在内核中,如图形化用户界面 GUI
特权指令 v.s. 非特权指令
应用程序:只能使用“非特权指令”,如:加法、减法指令等
内核程序:作为 “管理者”有时会让CPU执行一些“特权指令”,如:内存清零指令。
在 CPU 设计和生产的时候就划分了特权指令和非特权指令,因此 CPU 执行一条指令前就能判断出其类型
内核态 v.s. 用户态
- CPU 有两种状态,“内核态”和“用户态”
- 处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
- 处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令
- 内核态=核心态=管态;用户态=目态
- 这两种状态由 PSW 中的一个二进制位表示
- 内核态、用户态的切换
- 内核态 -> 用户态:执行一条特权指令——修改 PSW 的标志位为“用户态”,这个动作意味着操作系统将主动让出 CPU 使用权
- 用户态 -> 内核态:由“中断”引发,由硬件完成变态过程,触发中断信号意味着操作系统将强行夺回 CPU 的使用权
- 除非法使用特权指令外,还有很多事件需要让操作系统夺回 CPU 使用权。它们的共性是,但凡需要操作系统介入的地方,都会触发中断信号
中断和异常(考点)
中断的作用
- 中断是让操作系统内核夺回 CPU 使用权的唯一途径
- 没有中断机制,就不可能实现操作系统,不可能实现程序并发
中断的类型
- 内中断(异常)
- 与当前执行的指令有关,中断信号来源于 CPU 内部
- 特权指令:试图在用户态下执行特权指令
- 非法指令:如,除零运算
- 陷入指令:应用程序主动将控制权交给操作系统,常用于请求操作系统的服务(系统调用),该指令将引发一个内部中断信号
- 陷入指令 = trap 指令 = 访管指令
- 外中断
- 与当前执行的指令无关,中断信号来源于 CPU 外部
- 每一条指令执行结束时,CPU 都会例行检查是否有外中断信号
- 时钟中断:由时钟部件发来的中断信号。用于实现多道程序并发运行
- I/O 中断:由输入/输出设备发来的中断信号
- 中断的分类
- 大多数的教材、试卷中,“中断”特指狭义的中断,即外中断。而内中断一般称为“异常”
中断机制的基本原理
- 不同的中断信号,需要用不同的中断处理程序来处理。
- 当 CPU 检测到中断信号后,会根据中断信号的类型去查询中断向量表,以此来找到相应的中断处理程序在内存中的存放位置。
- 中断处理程序一定是内核程序,需要运行在“内核态”
系统调用(考点)
基本概念
- 操作系统作向上提供的服务中,主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。
- 系统调用,是操作系统提供给应用程序(程序员)使用的接口,应用程序可以通过系统调用来请求获得操作系统内核的服务
系统调用 v.s. 库函数
- 不涉及系统调用的库函数:如“取绝对值”
- 涉及系统调用的库函数:如“创建一个新文件”
系统调用的必需性
- 针对问题:对于互斥共享的资源,各个程序不能同时使用
- 解决方案:由操作系统内核对共享资源进行统一的管理,并向上提供系统调用。
- 用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理。
什么功能需要系统调用
- 凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。
- 这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
系统调用的过程
- 过程:
- 传递系统调用参数
- 执行陷入指令(用户态)
- 执行相应的内请求核程序处理系统调用(核心态)
- 返回应用程序
- 注意:
- 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使 CPU 进入核心态
- 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行
操作系统的体系结构
操作系统内核
- 内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。
- 实现操作系统内核功能的那些程序就是内核程序。
大内核与微内核
通过对内核功能的划分(是否包含对系统资源的管理),可以分为大内核/单内核/宏内核和微内核
- 典型的 大内核/宏内核/单内核 操作系统: Linux、UNIX
- 典型的 微内核 操作系统: Windows NT
注意:
操作系统内核功能运行在内核态
操作系统非内核功能运行在用户态
变态的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能
习题课
1.1.4
软件分类
- 按软件的用户群体分类
- 通用软件:普通大众都会使用的(如Office、迅雷)
- 专用软件:某些领域的专业人士使用的(如AutoCAD Logic Pro)
- 按照软件在计算机内的角色分类
- 系统软件:操作系统、数据库管理程序(DBMS)、语言处理程序(编译、汇编)、服务性程序(装入程序)、标准库程序(printf)
- 应用软件:微信、Office
- 按软件的用户群体分类
操作系统既管理软件,也管理硬件(可以从任务管理器看出)
- 软件 vs 应用程序:软件 = 程序 + 其他相关文件
- eg:一个游戏软件包括程序(.exe)和其它图片(.bmp等)、音效(.wav等)等附件,那么这个程序(.exe)称作应用程序,而它与其他文件(图片、音效等)在一起合称软件
- 操作系统管理计算机资源
- 软件、硬件、文件都属于计算机资源
- 若只给出软件、硬件,则依然不如计算机资源更全面,不正确
源代码属于文件。但是操作系统关心的是文件的结构与组织,而不是文件内容。
界面 = 接口 = Interface
- 操作系统提供给用户程序使用的接口:系统调用
- 操作系统提供给用户直接使用的接口:命令接口、GUl
发展历程:
- 1950 年代早期第一个操作系统诞生(批处理操作系统)
- 定义:操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。
- 管理和控制计算机资源,更加基本
- 其他三个选项可以说是应用程序提供的功能
- 后来才支持用户交互
- 1970 年代早期,第一个 GUI 诞生
- 1983 年互联网诞生
- 1950 年代早期第一个操作系统诞生(批处理操作系统)
并发和共享互为存在条件;并发和共享是操作系统的两个最基本的特征。
并发:宏观上同时,微观上交替发生。并行:微观上同时发生。
- 并发不没有严格规定要在同一时间间隔内发生,彼此发生间隔不同也是可以的
- 但是其他选项更不对
单处理机 = 单核 CPU。不可能并发执行多个程序
系统调用是操作系统为应用程序使用内核功能所提供的的接口。
请求系统服务:更为概括的描述
中止系统服务:如 Linux 中的 exit 系统调用请求中止进程
申请系统资源:如 open 系统调用,可请求打开一个文件或 IO 设备
释放系统资源:如 close 系统调用,可请求关闭一个文件或 IO 设备
系统调用,文件 I/O 需要在内核态运行。
Shell:即 Unix、Linux 的命令接口
命令解释器:解释用户在“小黑框”输入的命令,如:cd、ls 等
广义指令:即系统调用
缓存管理:对用户不可见,由操作系统负责
制约性:程序的执行因为共享资源而相互制约
间断性:一个程序的执行是走走停停的
顺序性:各个程序按顺序依次执行
- 顺序性是单道程序设计的基本特征
- 自从引入多道程序设计之后,程序的执行就失去了封闭性和顺序性
共享性:多道程序共享资源
OS 管理资源:后序章节会有体会
OS 管理用户程序执行:第二章,处理机管理
OS 使系统资源提高效率:各种调度算法
用来编程的程序:eclipse、IntelliJ IDEA、VS …
1.2.7
手工操作时期,纸带机是要在主机的控制之下才能读写数据,因此是用户独占全机。
- 因此,脱机技术主要解决的独占设备问题
多道程序技术,则是让多个程序共享主机的资源,因此相比单道程序设计提高了单机资源利用率。
- 因此,多道程序技术主要提高单机资源利用率
复习:
- 脱机技术――脱离主机的控制,提前将作业数据输入/输出到磁带,用于缓和I/O设备与主机之间的速度矛盾。
- 假脱机技术――将独占设备改造为共享设备。
- 虚拟技术――如虚拟内存技术,可增加并发度。
- 交换技术――增加并发度。将在第三章学习
手工 -> 批处理 -> 分时 -> 实时 -> PC
同 1.1.4 的 14 题
解析:
手工阶段不存在操作系统,直到批处理的多道程序设计引入中断技术,操作系统才诞生。
分时操作系统开始才支持人机交互。
军工领域对实时的要求很高,才产生了实时操作系统。
PC 操作系统更多在强调应用场景,而不是分时/实时。
如果需要与时俱进,则再加上分布式操作系统
单道程序系统:内存中最多只有一道作业,作业之间是串行执行的。若当前作业等待 I/O,则 CPU 闲置等待。
多道程序系统:内存中有多道作业,作业之间并发执行。若当前作业等待 I/O,则 CPU 转而处理另一道作业。
被控对象规定时间
先来先服务:早期的单道批处理系统
时间片轮转:分时操作系统
抢占式的优先级高者优先:实时操作系统
高响应比优先:常用于多道程序系统中的作业调度
实时操作系统的主要特点:及时性、可靠性。
资源利用率高是实时操作系统需要避免的。
要求实时:交易、机床硬件、军工