(2).批处理阶段——单道批处理系统 (操作系统雏形)
主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序CPU有大量的时间是在空闲等待I/0完成。资源利用率依然很低
引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出
操作系统的雏形
(3).批处理阶段——多道批处理系统 (操作系统诞生)
主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。
主要缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行。
eg:无法调试程序/无法在程序运行过程中输入一些参数)
(4).分时操作系统
分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互
主要优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
主要缺点: 不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户作业服务一个时间片,不区分任务的紧急性。
(5).实时操作系统
主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的主要特点是及时性和可靠性
(6).其他操作系统
网络操作系统是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,资源的共享 (如文件共享) 和各台计算机之间的通信。 (如: windows NT 就是06一种典型搜索评论笔记网站服务器就可以使用)
分布式操作系统:主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务。
个人计算机操作系统:如 Windows xP、Macos,方便个人使用。
1.4_操作系统的运行机制与体系结构
(1).预备知识——程序是如何运行的?
像我们平时用c语言代码写的程序都会经过编译器的编译工作把C语言代码翻译成二进制机器指令。像我们平时用C语言这种高级语言写的一条代码经过编译之后可能会对应很多机器指令。程序运行的过程其实就是CPU执行一条一条机器指令的过程。
“指令”就是处理器CPU能识别,执行的最基本命令。
注:很多人习惯把Linux,Windows,MacOS的“小黑框”中使用的命令也成为“指令”,其实这是“交互式命令接口”,注意与本节的“指令”区别开。本节中的“指令”指二进制机器指令
总之平时我们用高级语言编写的程序最后执行的时候肯定是要变成CPU能够读的懂的用二进制机器指令表现的这种形式,这就是程序运行的基本原理
(2).内核程序与应用程序 (两种程序)
在操作系统这门课当中,我们要注意区分两种类型的程序,分别是内核程序和应用程序。我们普通程序员写的程序就是“应用程序”。微软、苹果有一帮人负责实现操作系统,他们写的是“内核程序”。由很多内核程序组成了“操作系统内核”,或简称“内核(Kernel)”。内核是操作系统最重要最核心的部分,也是最接近硬件的部分
。甚至可以说,一个操作系统只要有内核就够了(eg:有的同学可能接触过容器技术,比如说Docker,在Docker容器里只需要有Linux的内核就可以实现Linux的所有功能了)。操作系统的功能未必都在内核中,如图形化用户界面 GUI。
即使没有图形化的界面我们依然可以用命令行(也就是之前说的“小黑框”)的方式来使用操作系统。所以操作系统的内核当中所包含的只是操作系统当中最重要最核心的功能
(3).特权指令与非特权指令 (两种指令)
既然操作系统内核是系统资源的管理者,它作为管理者的角色有时可能会让CPU执行一些比较特殊的指令
在CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型。
怎么区分是特权指令还是非特权指令?
(4).内核态与用户态 (两种处理器状态)
虽然CPU能够分辨出特权指令和非特权指令,但是它又怎么分辨出此时正在执行的指令到底是一个“应用程序”的指令还是一个“内核程序”的指令呢?为了让CPU能够区分此时正在运行的指令是属于应用程序还是内核程序,CPU会被划分成两种状态,一种叫“内核态”,一种叫“用户态”。
CPU 有两种状态,“内核态”和“用户态
处于内核态时
,说明此时正在运行的是内核程序,此时可以执行特权
指令处于用户态
时,说明此时正在运行的是应用程序,此时只能执行非特权指令
拓展:CPU 中有一个寄存器叫程序状态字寄存器 (PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”别名: 内核态=核心态=管态;用户态=目态
接下来我们要探讨的问题是CPU要怎么实现这两种状态间的切换
(5).内核态 用户态的切换 (变态)
内核态->用户态:执行一条特殊的指令 修改PSW的标志位为:“用户态”,这个动作意味着操作系统主动让出CPU
用户态->内核态: 由"中断"引发,硬件自动变成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。
假设现在有两种体系结构的系统。第一个系统采用的是大内核的体系结构,由于进程管理,存储管理这些功能都是被划分在内核当中的,所以这些功能的处理都需要运行在内核态,只有应用程序是运行在用户态的。而对于采用微内核结构的操作系统来说,只有和硬件联系最紧密的这些功能被划分在了内核当中,只有这些功能是需要在内核态下才可以执行的,而其他的这些功能模块在用户态下就可以运行。
假设现在一个应用程序想要请求操作系统的服务,并且这个服务的背后需要同时涉及到进程管理、存储管理、设备管理这几个功能。如果采用的是大内核的体系结构的话,那么应用程序向操作系统提出服务的请求,这个时候CPU会从用户态切换为内核态,然后开始运行这一系列的内核程序。应用程序的这个请求只需要两次变态就可以了。
而如果采用的是微内核的体系结构的话,应用程序向操作系统提出服务的请求,接下来操作系统的这几个模块都需要为操作系统服务。而进程管理这个模块在处理应用程序的请求的时候同样也需要得到内核的支持,所以这个模块对内核的访问就涉及到CPU从用户态转到内核态,服务完成之后又会从内核态转回用户态。然后同样地存储管理和设备管理这两个模块在完成相应的工作的时候也需要得到内核的支持,因此每一个模块都需要请求内核的服务,每一次请求内核的服务都会涉及到一个CPU状态转换的过程。整个过程处理需要六次变态。
(6).操作系统内核
内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。
实现操作系统内核功能的那些程序就是内核程序。
操作系统内核
- 时钟管理: 实现计时功能
- 中断处理: 负责实现中断机制
- 原语: (1).是一种特殊的程序。(2).处于操作系统最底层,是最接近硬件的部分。(3).这种程序的运行具有原子性–其运行只能一起合成,不可中断(4).运行事件较短、调用频繁。
⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆与硬件管理较紧密的模块⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆ - 对系统资源进行管理的功能: (1).进程管理 (2).存储器管理(3).设备管理
⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆有的操作系统可能不包含这部分⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆
(7).操作系统的体系结构 (大内核 微内核)
大内核
(1).将操作西永的朱永功能模块作为系统内核,运行在核心态
(2).优点: 高性能
(3).缺点: 内核代码庞大,结构混乱,难以掩护
微内核
(1).只把最基本的功能保留在内核
(2).优点: 内核功能少,结构清晰,方便维护
(3).缺点: 需要频繁地在核心态和用户态之间切换,性能低。
eg: 操作系统的体系结构与企业管理问题很相式
内核是企业地管理层
,负责一些重要地工作。只有管理层才能执行特权指令
,普通员工只能执行非特权指令
。用户态和核心态的切换相当于员工和管理层之间的工作交接
。
大内核: 企业初创实体量不大,管理层的人会负责大部分的事情。优点是效率高;缺点是组织结构混乱,难以维护。
微内核: 随着企业体量越来越大,管理层只负责最核心的工作。优点是阻止结构清晰,方便维护;缺点是效率低