【王道考研】操作系统 笔记 第一章
作者:互联网
特此鸣谢王道考研
本文参考王道考研的相关课程
若有侵权请联系,立删
其余笔记链接:
【王道考研】操作系统笔记 第一章_才疏学浅743的博客-CSDN博客
【王道考研】操作系统 笔记 第二章上 进程调度_才疏学浅743的博客-CSDN博客
操作系统的概念与功能
OS定义
操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境。它是计算机系统中最基本的系统软件。
下面这个图很好的展示了,定义与功能的联系
OS的功能
① 操作系统是系统资源的管理者
具体功能如下
- 文件管理——找到文件位置
- 存储器管理——把执行程序放入内存,或读写数据
- 处理机管理——执行内存中的程序
- 设备管理——调用I/O设备等
以QQ聊天为例:
何为处理机?
-
- 就是实现功能的物理硬件综合体。或理解为CPU
处理机包括 中央处理器 , 主存储器 ,输入-输出接口,加接 外围设备 就构成完整的计算机系统。处理机是处理计算机系统中 存储程序 和数据,并按照程序规定的步骤执行指令的部件。程序是描述处理机完成某项任务的指令序列。指令则是处理机能直接解释、执行的信息单位。
随着微电子技术的进步和计算机系统结构的发展,已能用 大规模集成电路 构成不同结构的和适应不同用途的处理机,如阵列处理机、向量处理机、数组处理机、数据库处理机、输入-输出处理机和将整个处理机制作在几个硅片上的微处理器等。
② 向上层提供方便易用的服务
- 命令接口:允许用户直接使用
- 联机命令接口=交互式命令接口:用户说一句,系统跟着做一句
- 脱机命令接口=批处理命令接口:用户说一堆,系统跟着做一堆
- 程序接口:允许用户通过程序代码间接使用
- 系统调用=广义指令 常用库函数调用
- GUI 图形用户界面(Graphical User Interface):现代操作系统中最流行的图形用户接口
为上述的功能分别举例:
- 联机命令接口
- 比如cmd,命令行窗口方式的操作。输入一行命令,执行一次
- 脱机命令接口
- 比如 .bat文件,执行之后一次执行完整的文件内的命令。类似于matlab脚本和命令行的区别。
- 程序接口:
- 可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。
- 比如,VBS可以用代码创建一个Windows的警告弹窗。但是不用代码,也就是用图形化操作就无法实现。或者C语言的库函数printf,使用了 内核程序的write()操作
- GUI
- 就是图形化界面。点击,拖拽等等。
③ 是最接近硬件的一层软件
只有一个功能
- 需要实现对硬件机器的拓展
- 把最底层的功能进行了封装
- 比如:硬件: 锤子、锯子、木头、钉子.... ;操作系统:优秀的工匠。现在用户可以直接让工匠造船,而不是用原料造船。
④现代操作系统的新功能(课内)
- 系统安全
- 网络
- 支持多媒体
【概念】裸机 VS 虚拟机(扩充机器)
没有任何软件支持的计算机成为裸机。在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器
通常把覆盖了软件的机器成为扩充机器,又称之为虚拟机
操作系统结构设计
传统OS的结构
- 无结构的OS
- 模块化
- 分层式
现代OS的结构
- 微内核的
操作系统的目标
- 方便性
- 在硬件上运行程序,用机器语言书写极其困难,OS能将高级语言翻译成机器语言。
- 有效性
- 提高操作效率、系统吞吐量。
- 可扩充性
- 为了适应硬件体系结构及应用的发展。
- 开放性
- 为了更好的推广,方便使用制定行业标准。
操作系统的特征 ⭐
基本特征有如下四个
- 并发
- 共享
- 虚拟
- 异步
并发
并发与并行的区别
并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的
-
- 也就是“虚假”的同时发生,CPU同时运行两个程序,其实是短时间内分别运行
- 操作系统的并发是通过分时实现的
并行:指两个或多个事件在同一时刻同时发生
-
- 是系统同时执行或操作
- 硬件支持:多流水线或者多处理机 多核CPU
重要考点:
单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行。
-
- 微观上轮流执行,宏观上看上去同时在执行。
多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行
举例:
共享
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
共享的方式有以下两种
- 互斥共享方式
- 同时共享方式
举例来说明:
- 互斥共享方式
- 系统中的某些资源,虽然可以允许多个进程使用,但一个时间段内只允许一个进程访问该资源
- 比如,QQ电话和微信电话不能同时使用摄像头。但是他们共享使用摄像头的权利。
- 摄像头这种资源称作:临界资源或者独占资源
- 同时共享方式
- 系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问
- 所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享)
- 比如:QQ和微信可以同时使用内存,在内存里面写数据。
- 但是微观上也可能是真正的“同时”,比如:游戏和音乐同时播放声音
临界资源定义:
系统中的某些资源,如打印机、磁带机等,虽然可以提供给多个进程(线程)使用,但应规定在一段时间内,只允许一个进程访问该资源(临界资源)。
虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。
-
- 物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
虚拟技术有两种
- 空分复用——虚拟存储器技术扩大内存
- 时分复用——单核CPU同时运行多个进程程序
具体例子:
- 虚拟处理器:采用多道程序并发的方式,让每个终端用户感觉到有多个处理器 时分复用技术
- 虚拟存储器:将物理存储变为虚拟存储器,逻辑上扩充存储器用 空分复用技术
- 也可以将一台IO设备虚拟为多台逻辑上的IO设备,并允许每个用户占用一台逻辑上的IO设备
异步
异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的, 而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
理解
走走停停的意思就是,比如Java Socket 通信中,SocketServer监听事件,就是一个异步执行的函数。因为Socket类只会存在一个,所以 0.01s 0.02s客户端A和B都发出了请求,但是0.01s的A先接受到了,所以服务器先响应A的请求。这就是结果的不可预知性
或者如下例子中,如果老渣预约的时间变了,给谁心就不一定了(不可预知性)。另一个人就会陷入阻塞状态,直到别人归还老渣的心
四大特征之间的关系
- 并发在操作系统诞生之初就被设计了,用来解决单核CPU运行多个进程。
- 共享与并发互为存在意义
- 没有并发,虚拟就没有意义。
- 没有并发,就无法产生异步
并发和共享的关系
-
- 二者互为存在条件
并发性:指计算机系统中同时存在着多个运行着的程序。
共享性:是指系统中的资源可供内存中多个并发执行的进程共同使用。
经典的证明方法,
-
- 如果不存在并发,则同时只能运行一个程序,就不存在多个程序同时使用一个资源(共享)
- 如果不存在共享,则多个并发的程序不能同时访问一个资源,即使并发了也无法存取数据,很鸡肋。
并发和虚拟的关系
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。
如果失去了并发性,则一个时间段内系统中只需运行一道程序,不需要CPU一次运行多个进程,那么就失去了实现虚拟性的意义了。因此,没有并发性,就谈不上虚拟性
问题2——虚拟性不存在的话,并发会怎么样,会不会实现不了并发性。
-
- 并不会,只是实现起来会很麻烦,就好像用原生JS发Ajax请求一样。
问题1——虚拟处理器 单核CPU可以运行多个程序的例子,体现了操作系统的并发性和虚拟性。具体哪里体现了并发性,哪里体现了虚拟性?CPU被划分为哪些逻辑对应物?
-
- 什么是逻辑对应物,按照老师的说法,比如:进程号PID IO操作接口等是逻辑对应物;程序和IO设备是物理实体。
- 虚拟性主要体现就是“接口”,虚拟性,简单来讲就是OS封装了操作硬件的函数,类似于使得每个硬件都有对应的操作类。
- 更具体一点就是“进程的引入”就是虚拟性的一个很好体现,其中PID,UID就是对硬件的一种虚拟化,没有进程,就很难实现并发,容易出错。有了进程,就能很好的管理并发。
- 也就是说,虚拟化是一种服务于并发的技术,没有虚拟化,可以用原始原生的方法实现并发,但是有了虚拟性就如同拥有了“OO面向对象的方法学”可以更轻易的实现并发,实现对硬件的管理
并发和异步的关系
只有系统拥有并发性,才有可能导致异步性
操作系统的发展与分类
- 手工操作阶段——通过打孔纸片输入代码
- 单道批处理系统——打孔纸片先输入给磁带,磁带再更快速的输入到计算机
- 有操作系统的雏形
- 多道批处理系统 ——没有人机交互的PC
- 操作系统正式诞生
- 分时操作系统——所有人平等时间使用电脑
- 实时操作系统——优先处理紧急事务
- 分为①硬实时操作系统——不允许规定时间内没完成任务
- ②软实时操作系统——允许偶尔没在规定时间内完成任务
-
- 绿框常考
手工操作阶段
主要缺点:用户独占全机、人机速度矛盾导致资源利用率极低
批处理阶段——单道批处理系统
引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出。
外围机:功能1.可以完成把程序提前存入纸带里面,2.并控制纸带输入。
主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
主要缺点:只有脱机命令接口=批处理命令接口,没有联机命令接口=交互式命令接口。
内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。
批处理阶段——多道批处理系统
主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。
主要缺点:没有GUI,
用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行。eg:无法调试程序/无法在程序运行过程中输入一些参数
分时操作系统
-
- 计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
主要优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
实时操作系统
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。
分为两种实施系统
- 硬实时系统——必须在绝对严格的规定时间内完成处理
- 如:导弹控制系统、自动驾驶系统
- 软实时系统——能接受偶尔违反时间规定
- 如:12306火车订票系统
主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
主要特点:是及时性和可靠性
其他几种操作系统
网络操作系统:是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。(如:Windows NT 就是一种典型的网络操作系统,网站服务器就可以使用)
分布式操作系统:主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务。
个人计算机操作系统:如Windows XP、MacOS,方便个人使用。
操作系统的运行机制⭐
两种指令
- 特权指令:操作系统允许使用的中断、删除等危险操作
- 如:内存清零指令。这些指令影响重大,只允许“管理者”——即操作系统内核来使用
- 非特权指令:用户、应用程序被允许使用的简单的加减乘除等操作
两种程序
- 内核程序:需要调用特权指令的程序
- 也就是实现操作系统的程序
- 很多内核程序组成了“操作系统内核简称"内核"(Kernel)
- 应用程序:不需要特权指令的程序
两种处理器状态
- 核心态(内核态、管态):CPU只有在核心态才能使用特权指令,才能运行内核程序。
- 用户态(目态):CPU不能使用特权指令,不能运行内核程序
内核态、用户态的切换
状态的切换称为变态
内核态to用户态:
执行一条特权指令——修改PSW(程序状态字)的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权
用户态to内核态:
- 1.由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权
- 2.可以使用陷入指令Trap,触发“内中断”
内核分类⭐、操作系统体系结构、计算机系统的层次结构
总计一下:
- 操作系统体系结构包括 内核 和 非内核 部分
- 内核有两大部分功能,其中黄色部分是最基本的功能。橙色的是有些OS没有划分进去的内容。
- 内核的分类
- 只包含必不可少的时钟管理、中断处理、原语的内核是微内核
- 还包含任务管理器、进程管理、设备管理的内核是大内核
典型的大内核/宏内核/单内核 操作系统: Linux、UNIX
典型的 微内核 操作系统: Windows NT
从下图可以直观看出来,只用微内核转换状态(变态)的次数变多了
内核的结构
- 时钟管理:时钟的第一功能是计时,操作系统需要通过时钟管理,向用户提供标准的系统时间。另外,通过时钟中断的管理,可以实现进程的切换。
- 中断机制:中断机制是操作系统各项操作的基础。如键盘或鼠标信息的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等。中断机制负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。
- 原语:
- 原语是最接近硬件的部分
- 这些程序的运行具有原子性,其操作只能一气呵成(主要从系统安全性和便于管理考虑)
- 如何实现原语的“原子性”?
- 原语的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断。可以用“关中断指令”和“开中断指令”这两个特权指令实现原子性
- (关中断),让其所有动作不可分割地完成后再打开中断
- (开中断)。在核心态下执行,常驻内存。
中断与异常
中断的功能
CPU 上会运行两种程序,一种是操作系统内核程序,一种是应用程序
“中断”是让操作系统内核夺回CPU使用权的唯一途径
如果没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序
状态转换方式:
内核态→用户态:执行一条特权指令——修改PSW(程序状态字)的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权
用户态→内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权
中断的分类
-
- 分类依据是CPU中断信号的来源
外中断 (正常运行)
举例:
- 外部设备请求:
- 比如:I/O设备请求读入,scanf()读入键盘缓冲区的时候,程序会中断停止。
- 人工干预:
- 比如:任务管理器强行关闭一个进程
- 外部设备请求:
内中断(也就是异常)
- 陷阱、陷入(trap) 也叫自愿中断
- 用户态下,应用程序调用系统程序
- 故障(fault)
- 比如,外部设备打印机没有纸了
- 终止(abort)
- 比如,整数除以0
何为陷入指令 trap?
陷入指令是指用户程序所依靠的指令,用于发起系统调用,请求操作系统提供服务。
陷入指令有其中一点特殊在于,其只能在用户态下执行,而不可以在核心态下执行。
用户程序执行陷入指令,相当于把CPU的使用权主动交给了操作系统内核程序(CPU状态会从用户态切换到核心态),之后操作系统内核程序再对系统调用请求做出相应的处理。处理完成后,操作系统内核程序又会把CPU的使用权还给用户程序(即CPU状态从核心态切换到用户态)。
系统调用
定义
系统调用:是操作系统提供给应用程序(程序员/编程人员)使用的接口
可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过"系统调用"来请求获得操作系统内核的服务
系统调用存在的意义
系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、lO操作、文件管理等),都必须通过操作系统代为完成。防止用户进行非法操作,这样可以保证系统的稳定性和安全性。
系统调用的功能
凡是与资源有关的操作、会直接影响到其他进程的操作,一定需要操作系统介入,即需要通过系统调用来实现
系统调用与库函数的区别
库函数是高级语言中提供的与系统调用对应的函数(也有些库函数与系统调用无关),目的是隐藏“访管”指令的细节,使系统调用更为方便、抽象。库函数属于用户程序而非系统调用,是语言或应用程序的一部分,可以运行在用户态。
而系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在核心态,而许多库函数都会使用系统调用来实现功能。未使用系统调用的库函数,其执行效率通常要比系统调用的高。因为使用系统调用时,需要上下文的切换及状态的转换(用户态->核心态)
系统调用的过程
传递系统调用参数→执行陷入指令(用户态)→执行系统调用相应服务程序(核心态)→返回用户程序
注意:
1.陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,从而CPU进入核心态
2.发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行
3.陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令
标签:操作系统,程序,用户,王道,并发,内核,CPU,考研 来源: https://www.cnblogs.com/nuistzpz/p/16683552.html