操作系统学习——王道考研
编辑时间:2023/11/21-2023/12/7
来源:B站王道考研
1.1.1操作系统的概念、功能
1.操作系统定义
操作系统是系统资源的管理者,操作系统(OS)是控制和管理整个计算机系统的硬件和软件资源,并合理的组织调度计算机工作和资源的分配,以提供用户和其他软件方便的接口和环境,是计算机系统中基本的系统软件。
Windows操作系统的任务管理器快捷键:Ctrl+Alt+del
2.计算机系统的层次结构
3.操作系统的功能和目标——作为系统资源的管理者
操作系统的功能:处理机管理,存储器管理,文件管理,设备管理
操作系统的目标:安全高效
补充知识:执行一个程序前需要将该程序放到内存中,才能被CPU发现。
封装思想:操作系统把一些丑陋的硬件功能封装成简单易用的服务,使用户能更方便地使用计算机,用户无需关心底层硬件的原理,只需要多操作系统发出命令即可。
服务1:GUI图形化用户接口,用户可以使用形象的图形界面进行操作,而不再需要记忆复杂的命令,参数。
服务2:联机命令接口=交互式命令接口,如命令行窗口输入time命令
服务3:脱机命令接口=批处理命令接口,如使用window系统的搜索功能,搜索C盘中*.bat文件,用记事本打开任意一个。
服务4:程序接口,可以在程序中进行系统调用来使用程序接口,普通用户不能直接使用程序接口,只能通过代码间接使用。系统调用类似于函数调用,是应用程序请求操作系统服务的唯一方式,有些教材系统调用=广义指令。


4.操作系统的功能与目标——作为最接近的硬件的层次
需要实现对硬件机器的拓展
没有任何软件支持的计算机称为裸机,在裸机上安装操作系统,可以提供资源管理的功能和方便用户的服务功能,将裸机改造成功能更强,使用更方便的机器
通常把覆盖了软件的机器成为扩充的机器,又称之为虚拟机。
思维导图

1.1.2操作系统特征
1.并发和并行
并发:两个或多个时间在同一时间间隔内发生,这些事件宏观上是同时发生的,但是微观上是交替发生的
并行:两个或多个在同一时刻发生
操作系统的并发是指计算机系统中“同时”运行着多个程序,这些程序上是同时运行的,微观上是交替运行的
单核CPU同一个时刻只能执行一个程序,各个程序并发执行。
多核CPU同一时刻可以同时执行多个程序,多个程序可以并行的执行。
例如4核CPU表示,可以执行4个并行的程序。
2.共享
共享即资源共享,是指操作系统中资源可以拱内存中的多个并发执行的进程共同使用。
两种资源共享方式:
互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。:微信和qq不能同时打开
同时共享方式:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问。:微信qq发送不同的文件
所谓的同时往往是宏观上,而在微观上,这些进程可能是交替地对该资源进行访问(即分时共享)
3.虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物,物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
注意:一个程序需要放入内存并给它分配CPU才能执行。
虚拟技术中的“时分复用技术”,微观上处理机在各个微小的时间段内交替着为各个进程服务。
4.异步
多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底,而是走走停停,不可预知的速度向前推进,这就是进程的异步性。
由于并发运行的程序会争抢着使用系统资源,因此进程的执行不是一贯到底的,而是走走停停的,一不可预知的速度推进。
如果失去了并发性,即系统只能串行地运行各个程序,只有系统拥有并发性,才有可能导致异步性。
知识回顾:


1.2操作系统的发展和分类
1.手工操作:主要缺点是用户独占全机,人机速度导致资源利用率极低。
2.1批处理阶段——单道批处理系统(操作系统雏形)
引入脱机输入/输出技术,并由监督程序负责控制作业的输入输出。
主要优点:缓解了一定的程序的人机速度矛盾,资源利用率有所提升
主要缺点:内存中仅能有一道程序运行,只有改程序运行结束后才能调入下一道程序。
CPU有大量的时间是在空闲等待I/O完成,资源利用率依然很低
2.2批处理阶段——多道批处理系统(操作系统正式诞生)
主要优点:多道程序并发执行,共享计算机资源,资源利用率大幅度提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。
主要缺点:用户响应时间长,没有人机交互功能(用户提交自已的作业之后就只能等待计算机处理完成,中间不能控制自已的作业执行例如:无法调试程序/无法在程序运行过程中输入一些参数)
3.分时操作系统
计算机以时间片为单位轮流为各个用户/作业服务,各个用户可以通过终端
与计算机交互。
主要优点:用户请求可以被即时响应,解决了人机交互问题,允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平,循环的为每个用户/作业服务一个时间片,不区分任务的紧急性
4.实时操作系统
主要优点:能够优先响应一些紧急任务,某些紧急任务不需要时间片排队。
在实时操作系统的控制下,计算机系统接受到外部信号后及时进行处理,并且要在严格的时间内处理完事件。实时操作系统主要特点是及时性和可靠性。
实时操作系统分类:
硬实时系统:必须在绝对严格的规定时间内完成除了(如:导弹控制系统,自动驾驶系统)
软实时系统:能接受偶尔违反时间规定(如:12306火车订票系统)
5.其他几种操作系统
网络操作系统:伴随计算机网络的发展而诞生,能把网络中各个计算机有机的结合起来,实现数据传送等功能,实现网络中各种资源共享(如文件共享)和各台计算机之间的通信(如windowNT就是一种典型网络操作系统,网站服务器可以使用)
分布式操作系统:主要特点是分布性和并行性。系统中各台计算机地位相同,任何工作都可以分布到这些个人计算机上,由他们并行,协同完成这个任务。
个人计算机操作系统:如windowXP MacOs 方便个人使用
知识回顾:

1.3.1操作系统的运行机制
指令:CPU能识别,执行的基本指令。
内核程序和应用程序
一般程序员写的程序为应用程序,微软苹果一帮人实现操作系统写的是“内核程序”。内核是操作系统最重要的核心部分也是最接近硬件的部分。操作系统的内核作为“管理者”有时会让CPU执行一些“特权指令”如:内存清零指令,这些指令影响重大,只允许操作系统的内核来使用。程序运行的过程其实就是CPU执行一条一条的机器指令的过程。在CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断其类型。
内核态和用户态
CPU有两种状态“内核态”和“用户态”。
处于内核态时,说明此时正在运行内核程序,可以执行特权指令。
处于用户态,说明此时正在运行的是应用程序,此时只能执行非特权指令
拓展:CPU有一个寄存器叫做程序状态字寄存器(PSW)其中有个二进制位,1表示内核态,0表示用户态。
别名:内核态=核心态=管态;用户态=目态。
内核态,用户态的转换
内核态——>用户态:执行一条特权指令——修改PSW的标志位为用户态,这个动作意味着操作系统讲主动让出CPU使用权。
用户态——>内核态:由“中断”引发,硬件自动变成变态的过程,粗发中断信号意味着操作系统将强行夺回CPU的使用权。
注意:除了非法使用权特指令之外,还有很多事件会触发中断信号,一个共性是,但凡需要操作系统介入的地方都会触发中断信号
知识回顾:

1.3.2中断和异常
中断作用
CPU上会运行两种程序,一种是操作系统内核程序,一种是应用程序
在合适情况下,操作系统内核会把CPU的使用权主动让给应用程序,中断是让操作系统内核夺回CPU使用权的唯一途径。
中断的类型
内中断:与当前执行的指令有关,中断信号来源于CPU的内部。
例子:如当前执行的指令是非法的,则会引发中断信号,应用程序使用陷入指令(例如系统调用)等。
外中断:与当前执行的指令无关,中断信号来源于CPU外部。
例子:时钟中断——由时钟部件发来的中断信号;I/O中断——由输入输出任务完成时,向CPU发送中断信号。
中断机制的基本原理
不同的中断信号,需要用不同的中端程序来处理。当cpu检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找相应的中断处理程序在内存中的存放位置。
显然中断处理程序一定是内核程序,需要运行在“内核态”
中断的分类

知识回顾:

1.3.3 系统的调用
系统调用
操作系统作为用户和硬件之间的接口,需要向上提供一些简单易用的服务,主要包括命令和程序接口,程序接口由一组系统调用组成。系统调用是指操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务

系统调用和库函数的区别

为什么系统调用是必须的
由操作系统内核对共享资源进行统一的管理,并向上提供“系统调用”,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统内核发出请求,内核会对各个请求进行协调处理。
什么功能要用到系统调用?
应用程序通过系统调用球球操作系统的服务,而系统中各个共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配, I/O操作,文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
系统调用分类

系统调用的过程

思维导图

1.4.1操作系统体系结构上
操作系统的内核


内核:操作系统最核心,最基本的部分。
内核程序:实现系统功能的那些程序就是内核程序

操作系统的体系结构

注意:cpu状态的转换的过程是有成本的,要消耗不少时间,频繁的转换状态会降低系统的性能。
思维导图

1.4.2操作系统体系结构下
操作系统体系结构


操作系统——分层结构
最底层是一件,最高层是用户接口
每层可调用更低的一层

操作系统结构——模块化
模块化是将操作系统按功能划分成为若干个具有一定独立性的模块。每个模块具有某方面的功能,并规定各模块间的接口,使各个模块之间能通过接口进行通信。还可以进一步将各模块细分为若干个具有一定功能的子模块,同样规定好各个模块之间的接口。我们把这种设计方法称为模块接口法。如图

操作系统结构——宏内核、微内核

操作系统结构——外核

1.5操作系统的引导
C盘(是这个磁盘的活动分区,安装了操作系统)

例子:Windows操作系统的初始化程序
注意:完整的操作系统初始化程序(即启动管理器)可在根目录下找到
例子:windows操作系统完整的开机初始化程序在“根目录/Windows/Root”下
1.6虚拟机
虚拟机
虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(VirtualMachine VM),每个虚拟机器都可以独立运行一个系统
同义术语:虚拟管理程序 虚拟机监控程序
第一类VMM,直接运行在硬件上
第二类VMM,运行在宿主的操作系统上

常用的虚拟机软件
学生常用第二类VMM:VirtualBox ,VMware
Ubuntu系统镜像下载——https://cn.ubuntu.com/download

2.1.1进程的概念、组成、特征
1.进程的概念
程序:是静态的,就是整个存放在磁盘里可执行文件,就是一系列的指令集合。
进程:是动态的,是程序的一次可执行过程。
注意:同一个程序多次执行会对应多个进程。
2.进程的组成——PCB
当进程被创建的时候,操作系统会被该进程分配一个唯一的,不被重复的“身份证号”——PID
操作系统要记录PID、进程所属用户ID(UID)。基本的进程描述信息,可以让操作系统区分各个进程。
还要记录给进场分配了哪些资源(如:分配了多少内存,正在使用I/O设备、正在使用哪些文件)可用于实现操作系统对资源的管理
还要记录进程的运行情况(如:CPU的时间、磁盘的使用状况、网络流量的使用状况等)可用于实现操作系统对进程的控制,调度
这些数据都被保持在一个数据结构PCB中,即进程控制块操作系统需要对各个并发运行的进程进行管理,但凡管理时所需要的信息,都会被放在PCB中
PCB是进程存放的唯一标志,操作系统为其创建PCB,当进程结束时,会回收PCB


3.进程的特征

知识回顾:

2.1.2进程的状态和转换
1.进程的状态
进程的状态——创建态、就绪态

进程的状态——运行态

进程的状态——阻塞态

进程的状态——终止态

进程状态的转换


2.进程的组织
进程的组织——链接方式

进程的组织——索引方式

进程的组织方式思维导图

知识回顾

2.1.3进程控制
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能(即进程控制就是实现进程状态的转换)

如何实现进程控制


如何实现原语的“原子性”
原语的执行具有原子性,即执行过程只能一气呵成,其那件不允许中断。可以用“关中断指令”和“开中断指令”这两个特权实现原子性

进程控制相关的原语思维导图




程序是如何运行的



思维导图

2.1.4进程通信(IPC)
什么会是进程通信
进程通信(IPC)是指两个进程之间产生的数据交互
为什么进程通信需要操作系统的支持
进程是分配系统的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。

1.共享存储


2.消息传递
进仓件的数据交换以格式化的信息为单位,进程通过操作系统提供“发送消息/接受消息”连个源于进行数据交换

消息传递(直接通信方式)
相当于送货上门

消息传递(间接通信方式)
相当于送到收货柜

3.进程通信——管道通信
管道是先进先出的,共享是自由的,注意读写过程不需要在意管道满不满

- 管道只能采用半双工的通信,某一时间段被只能实现单向传输,如果要试下双向同时通信,则需要设置两个管道。
- 各进程要互斥的访问管道(有操作系统实现)
- 当管道要写满是,写进程将阻塞,指导读进场将管道中的数据取走,即可唤醒写进程。
- 当管道读空时,度经常将阻塞,直到写进程往管道中写入数据,即可唤醒读进程。
- 管道中的数据一旦被读出,就彻底消失。因此当多个进程读进同一个管道时,可能会错乱。对此,通常有两种解决方案:(1)一个管道允许多个写进程,一个读进程(2).允许多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读取数据(Linux方案)
思维导图

2.1.5线程的概念
进程是程序的一次执行,但这些功能显然不可能是有一个徐顺序处理就可以实现的
什么是线程,为什么要引入线程?
有的进程肯需要“同时”做很多事情,而传统的进程只能串行的执行一系列程序,为此,引入了线程来增加并发度;传统的进程时序执行流的最小单位;引入了线程后,线程成为了程序执行流的最小单位。

线程可以理解为“轻量级进程”,线程是一个基本的cpu执行单位,也是程序只修的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,是的一个进程内也可以并发处理各种任务(如 qq视频,传文件,文字聊天等)
引入线程后,进程只作为除cpu之外的系统资源的分配单元(如打印机,内存地址等都是分配给进程的)
引入线程进制后,有什么变化?

线程的属性

2.1.6线程的实现方式和多线程模型

用户级线程(ULT)


很多编程语言提供了强大的线程库,可以实现线程的创建、销毁、调度等功能。
- 用户级线程由应用程序通过线程库实现,所有的线程管理工作都由应用程序负责(包括线程的切换)
- 用户级线程中,线程切换可以在用户态下即可完成,无需操作系统的干预。
- 在用户看来,是有多个线程的,但是操作系统的内核来看,并不意识到线程的存在,“用户级线程”就是“从用户视角能看到的线程”
- 优缺点
优点:用户级线程的切换在用户空间即可完成,不需要切换到核心态,线程管理的系统开销小,效率高
缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高。多个线程不可在多核处理机上并发运行
内核级线程(KLT,内核支持的线程)
由操作系统支持的线程

- 内核级线程的管理工作都由操作系统内核完成
- 线程调度,切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成
- 操作系统会为每个内核级线程简历相应的TCB(线程控制块),通过TCB对线程进行管理。“内核级线程”就是“从操作系统内核视角看到的线程”
- 优缺点
优:当一个线程被阻塞后,别的线程还可以急促执行,并发能力很强。多线程可在多核处理机上并行执行
缺:一个用户进程会占用多个内核级线程,线程切换由操作系统完成,需要切换到核心态,因此线程管理的成本高,开销大
多线程模型
在支持内核级线程的系统中,根据用户级线程和内核级线程的映射关系,可以划分为几种多线程的模型。
一对一模型:一个用户级线程映射到一个内核级线程,每个用户进程与用户级线程同数量的内核级线程

优点:当一个线程被阻塞之后,别的线程还可以继续执行,并发能力强,多线程可在多核处理机上执行
缺点:一个用户进程会占用多个内核级线程,线程切换由操作系统内核完成,需要切换到核心态,因此线程管理成本高,开销大
多对一模型:多个用户级线程映射到一个内核级线程。且一个进程只被分配一个内核级线程

优点:用户级线程的切换在用户空间即可完成,不需要切换到核心态,现场管理exit开销小,效率高
缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高,多个线程不可在多核处理机上并行运行
注意:操作系统只看得见内核级线程,一次只有内核级线程才是处理的分配单位
多对多模型:n用户及线程映射到m和内核级线程(n>=m)。每个用户进程对应m个内核级线程。

克服了多对一模型并发度不高的缺点(一个阻塞全体阻塞),又克服了一对一模型中一个用户进程占用太多内核级线程,开销太大的缺点
可以理解为:用户级线程是“代码逻辑”载体;内核级线程是“运行机会”的载体
内核级线程才是处理机分配的单位。例图:多核cpu环境下,上边这个进程最多被分配两个核
一段代码逻辑只获得了运行机会才能被cpu执行
内核级线程中可以运行任意一个又映射关系的用户级线程代码,只有两个内核级线程中正在运行的代码逻辑都能阻塞时,这个进程才会被阻塞
知识导图

2.1.7线程的状态与转换

线程的组织与控制


该博客围绕王道考研操作系统展开,涵盖操作系统概念、功能、特征、发展分类等基础知识,还涉及进程、内存、文件、I/O等管理内容,介绍了运行机制、中断异常、系统调用等,以及磁盘调度算法、固态硬盘等知识,助力考研学习。
&spm=1001.2101.3001.5002&articleId=134543550&d=1&t=3&u=ad9e4cce8f154694be6c53d478a925ff)
4735

被折叠的 条评论
为什么被折叠?



