王道408操作系统汇总(上)

本文详细介绍了操作系统的概念、功能、特征以及发展历程,涵盖了进程与线程的基本概念、状态转换、同步与互斥,还包括调度算法、内存管理和虚拟内存技术,以及死锁和防止死锁的方法。此外,还讨论了操作系统中如中断、异常、系统调用等运行机制,以及虚拟机在进程隔离和资源管理中的作用。
摘要由CSDN通过智能技术生成

悟已往之不见,知来者之可追

文章目录


1.1.1 操作系统的概念,功能

通过下图可以发现用户和操作系统是有一部分是相连的,这里需要看完这一节,用户可以通过GUI 或者命令接口可以直接和操作系统进行交互,而应用程序需要使用程序接口或者说系统调用的方式来与操作系统进行交互
请添加图片描述
请添加图片描述
我们逐层的打开文件夹,找到QQ.exe这个文件,这个文件就是经过操作系统的文件管理所放的,我们运行QQ也就需要将程序相关的数据存放内存,这里就涉及到操作系统的存储器管理,当程序正常运行的时候需要处理机CPU处理,这也就涉及到操作系统的第三个功能处理机管理,若是需要使用视频聊天这个功能,则需要摄像头这个设备,这也就需要操作系统的第4个功能,设备管理,这里也就是学习操作系统作为系统资源的管理者如何设计和实现这四个功能
请添加图片描述
操作系统要做的就是将一个个不便于操作的服务,改成便于人方便操作的接口,相当于在机器与人之间搭建一个桥梁
请添加图片描述
向上层提供方便易用的服务
请添加图片描述
早期是使用命令行的方式与操作系统进行交互的,命令接口又分为两种,一种叫做联机命令接口又叫做交互式命令接口,用户说一句系统作一句,另一种叫做脱机命令接口也叫做批处理命令接口
请添加图片描述
脱机命令接口也叫做批处理命令接口,也就是我们一次提一堆的命令,系统跟着做一堆

请添加图片描述
无论是联机命令接口还是脱机命令接口都是提供给用户直接使用的,操作系统还有一种接口叫做程序接口,这种接口是提供给程序员使用的
请添加图片描述

用户接口并不包括GUI
请添加图片描述
使得一个个简单的硬件组合起来有了更多的功能
请添加图片描述
本节回顾
本节中有可能会有考察的就是操作系统给上层提供了那些服务
请添加图片描述

1.1.2 操作系统的特征

请添加图片描述
并发

请添加图片描述
请添加图片描述
共享
有时候这个共享不经宏观上共享,微观上也确实是共享,比如有的时候一边打游戏一边听歌,这个时候扬声器是被两个进程同时使用的
请添加图片描述
若是没有并发性,则系统中只有一个程序正在运行,也就意味着这两个程序不需要同时来访问硬盘,所以共享性失去存在意义,失去了并发性共享性也就失去了存在的意义,若是失去了共享性并发性也就不可能实现
请添加图片描述
虚拟
请添加图片描述
请添加图片描述
请添加图片描述
异步
请添加图片描述
本节回顾
请添加图片描述

1.2 操作系统的发展和分类

我们主要讲解的是绿框的部分,注意各种类型操作系统要解决的是什么问题,以及各自的优缺点
请添加图片描述
手工操作阶段
程序员写程序是写在纸带上的,有空的地方代表二进制的1,没孔的代表二进制的0,然后将纸带放在纸带机上,然后用计算机读,计算机再把运行的结果输入到纸带机上,程序员再读,但是放纸带以及取纸带的时间是较慢的,并且一个纸带时候是独占计算机的、
请添加图片描述
单道批处理系统
各个程序员可以把纸带放在外围机上,把数据放在磁带上,此时的计算机运行一个监督程序的程序,控制计算机自动的从磁带上输入输出数据,可以看到引入外围机之后,输入输出所占的比例降低了,但是程序依然是串行的执行的
请添加图片描述
请添加图片描述
多道批处理系统
当设备进行第一个作业的输出时,此时的输入设备是空闲的,也就可以同时进行第二个作业的输入
请添加图片描述
分时操作系统
老渣以一个小时为时间片,能让每个女人在一个小时内都能被响应,每个女人都感觉老渣一直在陪她
请添加图片描述
实时操作系统
请添加图片描述
知识回顾
请添加图片描述

1.3.1 操作系统的运行机制

应用程序:比如QQ什么的
内核程序:包含操作系统中最重要,最内核的,最必不可少的东西,所以操作系统所有的功能未必在内核中,如用户图像化界面GUI
请添加图片描述
CPU设计的时候是能够区分特权指令还是非特权指令,CPU如何能够区分正在运行的是内核程序还是应用程序呢?
请添加图片描述
但是CPU任何进行两种状态之间的切换?
请添加图片描述
请添加图片描述
本节总结
请添加图片描述

1.3.2 中断和异常

请添加图片描述
中断的作用
请添加图片描述
中断的类型
中断的类型分为内中断和外中断,内中断也称为异常
请添加图片描述
内中断
CPU 在用户太执行特权指令,这个非法的事件会触发一个中断信号,CPU会拒绝执行这个特权指令,接下来CPU会自动的转变成内核态,并执行处理这个中断信号的内核程序,因此在发生这样的非法的事情之后,系统的管理者又重新夺回来系统的控制权,若是此时执行的指令是非法的,或者指令的参数是非法的则会发生一个内中断
请添加图片描述
之前我们提到的系统调用就是使用这个陷入指令来完成的,陷入指令是一个特殊的指令,但不是一个特权指令,因为陷入指令是在用户态下执行的
请添加图片描述
外中断
注意这里的中断信号并不是来自程序执行的内部,而是由时钟部件发出的,接下来CPU 会处理这个中断信号,并转化为内核态,开始执行这个处理中断信号的内核程序,然后内核会决定让另外一个应用程序也执行相同的时间,发出中断信号的也不是只有时钟部件还有内核IO设备处理完工作之后也会发出中断信号
请添加图片描述
中断的分类
请添加图片描述
中断机制的基本原理
请添加图片描述
知识回顾
请添加图片描述

1.3.3 系统调用

系统调用和库函数的区别
请添加图片描述
为什么说系统调用是必须的
请添加图片描述
什么功能要用到系统调用
简单来说就是对共享资源的有关的操作就需要系统调用
请添加图片描述
系统调用的过程
如果一个应用程序执行了陷入指令,也就意味着应用程序主动的把CPU的控制权主动的还给了系统,用这种方式来请求操作系统的服务
请添加图片描述

知识回顾
请添加图片描述

1.4.1 操作系统体系结构

实现程序并发就一定离不开时钟管理
请添加图片描述

这些内核程序必须运行在内核态,与硬件关联较紧密的模块一定是放在内核态,若是不会涉及硬件的管理工作,有些操作系统则会将这些管理功能不放在内核中,而仅仅保留与硬件接触最紧密的部分,因此这就引出了两种截然不同的内核设计方法,所以的功能都包含在操作系统内核中的,这种叫做大内核,只保留与硬件功能最紧密的叫做微内核,若是使用微内核这种结构,则微内核的管理功能是运行在内核态,而类如进程管理等功能则是运行在用户态,
请添加图片描述
这会对系统的性能造成一定的影响,如下图若是使用大内核这种结构,当要进行进程管理等一系列操作的时候,CPU从用户态变为内核态开始运行这一系列的内核程序,若是使用微内核的,应用程序向操作系统提出服务的请求,而进程管理这个模块处理的时候也是需要得到内核的支持,所以每一个模块都需要从用户态转到内核态,服务完成之后又会从内核态转用户态
请添加图片描述
知识回顾
请添加图片描述

1.4.2 操作系统体系

分层结构的操作系统
每一层只能调用相邻更低一层提供的接口,若是我们在原有的两层之间新加一层,我们只需要保证向上层提供的接口,以及对下层的使用,因此加层是比较容易的
请添加图片描述

模块化的操作系统
因为模块间相互依赖,所以若是其中出了问题,则难以发现问题出现在哪
请添加图片描述
请添加图片描述

1.5 操作系统引导

操作系统引导——开机的时候,怎么让操作系统运行起来?
按照操作系统之后
分区表其实就是一个数据结构,这个数据结构说明了在这个磁盘结构中每一个盘 每一个分区分别占多大的空间,以及每一个盘地址范围,当计算机开机之后,CPU就回到主存中找到这个ROM引导程序,然后执行这个指令中的程序,一条一条的执行,他会指示这个CPU去到磁盘的主引导记录给读入内存,然后执行磁盘引导程序,磁盘引导程序会根据分区表判断C盘所处的位置,然后执行这个PBR,PDR通常是放在根目录下
请添加图片描述

1.6 虚拟机

两个进程同时在一个操作系统之上可能会有安全隐患,也会相互争抢操作系统的这个管理资源,一种方法就是将其中一个进程放在另外一个物理机器上,但是这又会导致物理机器的极大浪费,因此有人发明了虚拟机
第一类会将物理机器虚拟化为多台虚拟机器,会将整个应用资源划分为多个部分,给每一台虚拟机使用,每一个虚拟机上可以按照各自的操作系统,CPU时间片进行划分,磁盘内存进行区域划分,只有虚拟机管理程序是运行在内核态,只有它可以使用特权最高的那些指令,而上层的操作系统和 应用程序是运行在用户态,但是上层的操作系统并不知道,所以依然会使用一些特权指令,但是只有虚拟机管理程序是在内核态,不能让操作系统使用这些特权指令,若是上层要使用特权指令,则会被虚拟机管理程序截获,会将这些特权指令进行一些等价的转化,给上层一种执行成功的感觉
第二类不是直接运行在硬件上,而是运行在宿主操作系统上,如VMware,这个虚拟机管理程序想要给虚拟机分配硬件资源,只能先请求宿主操作系统给他进行分配,然后虚拟机管理程序进行再分配
请添加图片描述
请添加图片描述

2.1.1 进程的概念,组成,特征

知识总览

请添加图片描述

进程的概念

请添加图片描述
区别:
1)进程是动态的;程序是静态的。
(2)进程有独立性,能并发执行;程序不能并发执行。
(3)二者无一一对应关系。
(4)进程异步运行,会相互制约;程序不具备此特征。
但是,进程与程序又有密切的联系: 进程不能脱离具体程序而虚设, 程序规定了相应进程所要完成的动作。
(5)组成不同。进程包含PCB、程序段、数据段。程序包含数据和指令代码。
(6)程序是一个包含了所有指令和数据的静态实体。本身除占用磁盘的存储空间外,并不占用系统如CPU、内存等运行资源。
(7)进程由程序段、数据段和PCB构成,会占用系统如CPU、内存等运行资源。
(8)一个程序可以启动多个进程来共同完成。
联系:进程不能脱离具体程序而虚设, 程序规定了相应进程所要完成的动作。

进程的组成——PCB

PCB简介:
PCB中记录了操作系统所需的,用于描述进程的当前情况以及控制进程运行的全部信息。
PCB的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。
或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。
例如,当OS要调度某进程执行时,要从该进程的PCB中查处其现行状态及优先级;在调度到某进程后,要根据其PCB中所保存的处理机状态信息,设置该进程恢复运行的现场,并根据其PCB中的程序和数据的内存始址,找到其程序和数据;
进程在执行过程中,当需要和与之合作的进程实现同步,通信或者访问文件时,也都需要访问PCB;
当进程由于某种原因而暂停执行时,又须将器断点的处理机环境保存在PCB中。
可见,在进程的整个生命期中,系统总是通过PCB对进程进行控制的,即系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的。
所以说,PCB是进程存在的唯一标志。

请添加图片描述
请添加图片描述
请添加图片描述

程序是如何运行的

请添加图片描述

进程的组成

请添加图片描述

进程的特征

请添加图片描述

知识回顾

请添加图片描述

2.1.2 进程的状态与转换,进程的组织

知识总览

请添加图片描述

创建态,就绪态

请添加图片描述

运行态

请添加图片描述

阻塞态

请添加图片描述
当操作系统将资源分配给进程2的时候,那么这个进程2等待的事件就已经发生了,此时就会从阻塞态变成就绪态

终止态

请添加图片描述

进程状态的转化

请添加图片描述

请添加图片描述

进程的状态

请添加图片描述

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

请添加图片描述

进程的组织——索引方式

请添加图片描述

进程的组织

请添加图片描述

知识回顾

请添加图片描述

2.1.3 进程控制

简单来说进程控制就是进程状转换
原语的执行具有原子性,一气呵成 若是不具有原子性,可能导致操作系统中某些关键数据结构信息不统一的情况,这会影响操作系统进行别的管理工作
请添加图片描述
请添加图片描述

进程控制相关的原语

作业调度就是从外存中挑选一个程序放入内存让他运行,这里说明一下调度和切换的区别.调度是指决定资源分配给哪个进程的行为,是一种决策行为,切换是指实际分配的行为,是执行行为,一般来说现有资源调度,后有进程切换,

学习技巧:进程控制会导致进程状态的转换.无论哪个原语,要做的无非三类事情:

1.更新PCB中的信息(如修改进程状态标志、将运行环境保存到PCB、从PCB恢复运行环境)
a.所有的进程控制原语一定都会修改进程状态标志
b.剥夺当前运行进程的CPU使用权必然需要保存其运行环境
c.某进程开始运行前必然要恢复期运行环境
2.将PCB插入合适的队列
3.分配/回收资源

。接下来我们就具体学习一下关于进程控制的五种原语,进程的创建、终止、唤醒、阻塞、切换;

请添加图片描述
请添加图片描述
阻塞原语是由被阻塞进程自我调用实现的
唤醒原语是由一个被唤醒进程合作或被其他相关的进程调用实现的
请添加图片描述
请添加图片描述

下面来解释一下什么是运行环境信息以及进程所需的运行环境

程序是如何运行的

请添加图片描述

CPU的状态是内核态还是用户态就是保存在程序状态字寄存器PSW中的
,若是执行完指令3之后,另外一个进程开始上CPU运行,另外一个进程同样需要上一个进程同样的寄存器,所以也就可能发生数据的覆盖
请添加图片描述

知识回顾

请添加图片描述

2.1.4进程通信

什么是进程通信

请添加图片描述

进程通信需要操作系统的支持

请添加图片描述

共享存储

请添加图片描述
请添加图片描述

消息传递

请添加图片描述

直接通信方式

操作系统内核的区域中保存着各个进程的PCB,各个进程的PCB包含一个消息队列,当进程Q要使用直接通信方式的时候,进程P要在自己的地盘来完善这个消息,进程P会使用这个发送原语,这个原语会到进程Q的消息队列中,进程Q会使用接受原语从内核区域中的消息队列中找信息
请添加图片描述

间接通信方式

请添加图片描述

管道通信

就像水管一样,水只能从一端流向另外一端其实也就是一个循环队列,与直接通信的区别是读数据很自由,但是管道通信方式中是一个数据流的方式,要求数据的读写一定是先进先出的,
请添加图片描述

知识回顾

请添加图片描述

王道修正

请添加图片描述

2.1.5 线程的概念

知识总览

请添加图片描述
请添加图片描述
请添加图片描述

线程的属性

请添加图片描述

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

知识总览

请添加图片描述

线程的实现方式

用户级线程

请添加图片描述
请添加图片描述
就像上面举得while的例子,若是某一个线程被阻塞,则整个进程都会被阻塞
请添加图片描述

内核级线程

也就是操作系统也可以看到的线程
请添加图片描述
请添加图片描述

多线程模型

请添加图片描述
请添加图片描述
请添加图片描述

知识回顾

请添加图片描述

2.1.7 线程的状态与转换

知识总览

请添加图片描述

进程的状态与转换

请添加图片描述

线程的组织与控制

请添加图片描述

2.2.1 调度的概念,层次

知识总览

请添加图片描述

调度的基本概念

请添加图片描述

高级调度

请添加图片描述

低级调度

请添加图片描述

中级调度

请添加图片描述

三层调度的联系,对比

请添加图片描述

进程的挂起态和七状态模型

若处于就绪态的较多,就需要将其放入外存也就是就绪挂起
请添加图片描述

知识回顾

请添加图片描述

2.2.2 进程调度的时机,切换与过程,方式

知识总览

请添加图片描述

进程调度的时机

请添加图片描述
请添加图片描述

进程调度的方式

请添加图片描述

进程的切换与过程

请添加图片描述

知识回顾与重要考点

请添加图片描述

2.2.3 调度器和闲逛进程

调度器

若是抢占式的调度策略也就意味着只要就绪队列一改变,就需要检查新进入的进程是否会抢占正在运行的进程,每个时钟中断或者K个时钟中断就会检查一下是否就绪队列发生了改变
请添加图片描述

请添加图片描述

闲逛进程

实际的系统中CPU是永远不可能闲着的,若是没有程序需要运行就运行这个闲逛进程
请添加图片描述

调度算法的评价指标

请添加图片描述

CPU利用率

请添加图片描述

系统吞吐量

请添加图片描述

周转时间

请添加图片描述

带权周转时间

请添加图片描述

等待时间

请添加图片描述

响应时间

请添加图片描述

知识回顾

请添加图片描述

2.2.5 调度算法

知识总览

请添加图片描述

先来先服务

请添加图片描述
请添加图片描述

短作业优先(SJF)

非抢占式

又称为短进程优先调度算法(SPF)
请添加图片描述

抢占式(SRTN)

抢占式的短作业优先算法又称“最短剩余时间优先算法”
请添加图片描述

几个细节

请添加图片描述
请添加图片描述

FCFS和SJF两种对比

请添加图片描述

高响应比优先算法

请添加图片描述
请添加图片描述

知识回顾

请添加图片描述

2.2.6 调度算法(2)

请添加图片描述

时间片轮转算法

会增大进程响应时间:系统中有10个进行进程在并发执行,如果时间片为1秒,则一个进程被响应的可能需要9秒,也就是说,如果用户在自己进程的时间片外通过键盘发出调试命令,可能需要等待9秒才能被系统响应
请添加图片描述
请添加图片描述
请添加图片描述

优先级调用算法

请添加图片描述

非抢占式优先级算法

请添加图片描述

抢占式优先级算法

请添加图片描述

补充

请添加图片描述
请添加图片描述

多级反馈队列调度算法

请添加图片描述
请添加图片描述

知识点回顾

请添加图片描述

2.2.7调度算法(3)

多级队列调度算法

请添加图片描述

2.3.1 进程同步,进程互斥

知识总览

请添加图片描述

什么是进程同步

在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,如等待、传递信息等,引入了进程同步的概念。进程同步是为了解决进程的异步问题。
一个简单的例子来理解这个概念。
例如,让系统计算1 + 2x3,假设系统产生两个进程: 一个是加法进程,一个是乘法进程。要让计算结果是正确的,一定要让加法进程发生在乘法进程之后,但实际上操作系统具有异步性,若不加以制约,加法进程发生在乘法进程之前是绝对有可能的,因此要制定一定的机制去约束加法进程,让它在乘法进程完成之后才发生。
异步性:进程具有异步性的特征。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。

请添加图片描述
请添加图片描述

什么是进程互斥

这里的同时是宏观上的共享 微观上依然是交替使用的,互斥,亦称间接制约关系。进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。
请添加图片描述
请添加图片描述
请添加图片描述

知识回顾

请添加图片描述

2.3.2 进程互斥的软件实现方法

知识总览

请添加图片描述

如果没有进程互斥

请添加图片描述
软件实现方法的思想:在进入区设置并检查一些标志 来标明是否有进程在临界区中,若已有进程在临界区,则在进入区通过循环检查进行等待,进程离开临界区后则在退出区修改标志。入区通过循环检查进行等待,进程离开临界区后则在退出区修改标志。

单标志法

请添加图片描述
请添加图片描述

双标志先检查法

请添加图片描述
请添加图片描述

双标志后检查法

请添加图片描述
请添加图片描述

Peterson算法

让权等待指的是若是当前这个进程此时进不了临界区,则让出处理机不在CPU上跑
请添加图片描述
谁最后说了客气话,谁就失去了行动的优先权,类如过年
阿姨:乖,收下阿姨的心意~
你:不用了阿姨,您的心意我领了
阿姨:对阿姨来说你还是个孩子,你就收下吧你:真的不用了阿姨,我已经成年了
结局…
请添加图片描述

知识回顾

请添加图片描述

2.3.3进程互斥的硬件实现方法

请添加图片描述

中断屏蔽方法

请添加图片描述

TestAndSet指令

下面代码只是表示一种逻辑,不代表真正的TestAndSet指令
执行TSL指令时,它的内部运转逻辑:
假设lock现在为false,代表临界资源A空闲,那么我就可以访问这个资源,同时将lock=true,提醒别的进程,这个临界资源A我正在使用,让他们等等
假设lock为true,代表临界资源正在有人使用,所以我必须等待,并且将lock=true,并不影响什么,所以没关系,只是为了让lock为false时可以上锁,将上锁与检查在一个TSL指令完成。
请添加图片描述

Swap指令

old是每个进程都要进行的一步,都必须将old=true
分析一下这样做的原因:
因为lock是某一特定临界资源的共享变量,当每一个进程准备访问这个特定的临界资源时,初始化old=true,然后进入while循环进行交换,如果当前lock是false,则交换后old=false,则当前进程可以跳出循环进入临界区代码段,同时因为交换,lock=old=true上锁,不让别的进程来打扰,别的进程会因为lock变为true,一直在while循环等待,当我使用完临界资源,则将lock=false,此时别的进程再交换old和lock就能判断old=false,可以跳出循环,使用临界资源
请添加图片描述

本节回顾

请添加图片描述

2.3.4 互斥锁

进程互斥:锁

请添加图片描述
忙等不是意味着一直占用处理机,当时间片用完依然会释放处理机
请添加图片描述

2.3.5 信号量机制

本节总览

请添加图片描述

信号量机制

请添加图片描述

信号量机制——整形信号量

请添加图片描述

信号量机制——记录型信号量

请添加图片描述
请添加图片描述
请添加图片描述

本节回顾

请添加图片描述

2.3.6 用信号量实现进程互斥,同步,前驱关系

知识总览

请添加图片描述

信号量机制实现进程互斥

请添加图片描述

信号量机制实现进程同步

请添加图片描述
前面活动完成后就执行V操作 后面活动执行前就执行P操作
请添加图片描述

知识回顾

请添加图片描述

2.3.7 生产者消费者问题

请添加图片描述

PV操作题目分析步骤:
1.关系分析。找出题目中描述的各个进程,分析它们之间的同步、互斥关系。
2.整理思路。根据各进程的操作流程确定P、V操作的大致顺序。
3.设置信号量。并根据题目条件确定信号量初值.(互斥信号量初值一般为1,同步信号量的初始值要看对应资源的初始值是多少)
请添加图片描述

能否改变相邻的PV操作的顺序

请添加图片描述
这里没有将使用产品放入到PV之间是因为放入之后,原则上是可以的,但是对临界资源锁的时间也会变长,对系统的效率造成影响
请添加图片描述

知识回顾

请添加图片描述

2.3.8 多生产者多消费者问题

前V后P:同步关系中,前面时间发生之后发生V操作,后面事件发生之前发生P操作

问题描述

请添加图片描述

关系分析

请添加图片描述

各个进程之间的PV操作

互斥关系很简单:就是在访问临界资源之后分别对临界变量实行一个P操作 一个V操作,
同步关系:前面事件发生之后我们实行一个V操作,后面事件发生之前执行一个P操作

设置信号量

对于实现互斥关系来说,我们当然需要设置一个初值为1的互斥信号量
对于同步关系我们需要根据具体的情况设置同步变量的值,这里由于刚开始的时候盘中是没苹果的,所以设置apple 设置为0,同样的srange也设置为0 ,刚开始的时候盘子本来就是空的所以设置为1
请添加图片描述

若是不设置互斥信号量

请添加图片描述
通过分析我们发现即使不设置专门的互斥变量mutex,也不会出现多个进程同时访问盘中的现象,原因在于,本题中的缓冲区大小为1,在任何时刻,apple,orange,plate 三个同步信号量最多只有一个是1 ,因此在任何时刻,最多只有一个进程的P操作不会被阻塞,并顺利的进入临界区

缓冲区大于一

请添加图片描述

知识回顾

请添加图片描述

请添加图片描述

2.3.9 吸烟者问题

请添加图片描述
请添加图片描述

知识回顾

请添加图片描述

2.3.10读者写者问题

请添加图片描述

实现

请添加图片描述

实现2

这里说一下为什么要加mutex。
比如:当count=0时,第一个读者进程执行到p(rw),rw=0,假设此时时间片到了,切换到第二个读者进程,第二个进程发现count=0,则执行p(rw),但是此时rw=0,于是第二个进程被堵在p(rw)这里,同理,后面的可能会有多个进程堵在p(rw),只有当第一个进程再次获得时间片,执行count++,让count不为0,然后其他进程就可以直接绕过if直接进行count++来访问文件,但是第三个读者进程和后面的几个可能堵在p(rw)的多个读者进程则必须得等count–为0后才可以再次和写进程竞争来访问文件,对count的访问没有做到一气呵成,会导致本来一些进程一直堵在p(rw)。
请添加图片描述

实现3

在上面的算法中,读进程是优先的,即当存在读进程时,写操作将被延迟,且只要有 一个读进程活跃,随后而来的读进程都将被允许访问文件。这样的方式会导致写进程可能长时间等待,且存在写进程“饿死”的情况。
若希望写进程优先,即当有读进程正在读共享文件时,有写进程请求访问,这时应禁止后续读进程的请求,等到已在共享文件的读进程执行完毕,立即让写进程执行,只有在无写进程执行的情况下才允许读进程再次运行。为此,增加一个信号量并在上面程序的writer()和 reader()函数中各增加一对PV操作,就可以得到写进程优先的解决程序
请添加图片描述

知识回顾

请添加图片描述

2.3.11哲学家进餐问题

请添加图片描述

解决方式

请添加图片描述

方案三

增加一个互斥信号量,使得只有左右筷子都存在的时候才会取,并且取筷子操作一气呵成,若是先进行第一个哲学家,然后进行4号哲学家,则依然可能会拿到一个筷子

知识回顾

请添加图片描述

2.3.12 管程

知识总览

请添加图片描述

为什么引入管程?

请添加图片描述

管程的定义和基本特征

请添加图片描述

管程解决生产者消费者问题

请添加图片描述
请添加图片描述

Java中类似管程的机制

请添加图片描述

知识回顾

请添加图片描述

2.4.1 死锁的概念

知识总览

请添加图片描述

什么是死锁

请添加图片描述
请添加图片描述

饥饿,死循环的区别

请添加图片描述

死锁产生的必要条件

请添加图片描述

什么时候会发生死锁

请添加图片描述

死锁的处理策略

请添加图片描述

知识回顾

请添加图片描述

2.4.2预防死锁

请添加图片描述

破坏互斥条件

请添加图片描述

破坏不剥夺条件

请添加图片描述

破坏请求和保持条件

请添加图片描述

破坏循环等待条件

请添加图片描述

知识回顾

请添加图片描述

2.4.3 避免死锁(银行家算法)

知识总览

请添加图片描述

什么是安全序列

请添加图片描述

银行家算法

请添加图片描述

安全状态

请添加图片描述
请添加图片描述

不安全状态

请添加图片描述
请添加图片描述

知识回顾

请添加图片描述

2.4.4死锁的检测和解除

请添加图片描述

死锁的检测

请添加图片描述
请添加图片描述
请添加图片描述

死锁的解除

请添加图片描述

知识回顾

请添加图片描述

3.1.1 内存的基础知识

知识总览

请添加图片描述

什么是内存?有何作用?

请添加图片描述

几种常用的数量单位

请添加图片描述

指令的工作原理

请添加图片描述
请添加图片描述

绝对装入

请添加图片描述

可重定位装入(静态重定位)

请添加图片描述

动态重定位

并且可将程序分配到不连续的存储区中:在程序运行前只需装入它的部分代码即可投入运行,然后在程序运行期间,根据需要动态申请分配内存:便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间。
请添加图片描述

从写程序到程序运行

请添加图片描述

链接的三种方式

请添加图片描述

知识回顾与重要考点

请添加图片描述

3.1.2 内存管理的概念

请添加图片描述

地址转换

请添加图片描述

内存保护

让各个进程只能访问自己的内存空间,而不能访问操作系统的也不能访问别的进程的请添加图片描述
请添加图片描述

知识回顾

请添加图片描述

3.1.3 覆盖与交换

知识总览

请添加图片描述

覆盖技术

请添加图片描述

交换技术

中级调度(内存调度)就是要决定将哪个处于挂起状态的进程重新调入内存请添加图片描述
!请添加图片描述

知识回顾

请添加图片描述

3.1.4 连续分配管理方式

请添加图片描述

单一连续分配

请添加图片描述

固定分区分配

请添加图片描述
请添加图片描述

动态分区分配

请添加图片描述请添加图片描述
请添加图片描述

动态分区分配

请添加图片描述

知识回顾

请添加图片描述

3.1.5 动态分区分配算法

请添加图片描述

首次适应算法

请添加图片描述

最佳适应算法

请添加图片描述

最坏适应算法

请添加图片描述

邻近适应算法

请添加图片描述

知识回顾

请添加图片描述

3.1.6基本分页存储管理的概念

知识总览

请添加图片描述

什么是分页存储

请添加图片描述
但是操作系统是如何记录这种一一对应的关系,这就是涉及到页表

页表

请添加图片描述
这里有两个问题,每个页表项多大?占几个字节?如何通过页表实现逻辑地址到物理地址的转化

每个页表项占多少字节?

页号可以是隐含的,不占存储空间(类比数组)因为我们知道了各页表项从内存地址为X的地方开始连续存放,若是想找到页号为i的页表项,i号页表项的存放地址=X+块号大小*i便可
请添加图片描述

如何实现地址的转换?

请添加图片描述

例题

请添加图片描述
请添加图片描述

逻辑地址结构

请添加图片描述

知识回顾

请添加图片描述

3.1.7 基本地址变换机构

知识总览

请添加图片描述

基本地址变换机构

请添加图片描述
请添加图片描述
请添加图片描述

例题

请添加图片描述
请添加图片描述

知识回顾

请添加图片描述

3.1.8具有块表的地址变换机制

知识总览

请添加图片描述

什么是快表

请添加图片描述
当进程切换的时候,块表中内容也会被清空
请添加图片描述

引入块表,地址变换的过程

请添加图片描述

局部性原理

请添加图片描述

知识回顾

请添加图片描述

两级页表

知识总览

请添加图片描述

单级页表存在的问题

请添加图片描述
请添加图片描述
请添加图片描述

需要注意的细节

请添加图片描述

知识回顾

请添加图片描述

3.1.10基本分段存储管理

知识总览

请添加图片描述

分段

请添加图片描述
请添加图片描述

段表

请添加图片描述

地址变换

请添加图片描述
请添加图片描述

分段和分页管理的对比

请添加图片描述
请添加图片描述
请添加图片描述

知识回顾

请添加图片描述

3.1.11 段页式管理方式

知识总览

请添加图片描述

分页分段的优缺点分析

请添加图片描述

段页式管理

请添加图片描述
请添加图片描述

段表 页表

请添加图片描述

段页管理中逻辑地址到物理地址

请添加图片描述

知识回顾

请添加图片描述

3.2.1 虚拟内存的基本概念

知识总览

请添加图片描述
请添加图片描述

传统存储方式的特征,缺点

请添加图片描述

局部性原理

请添加图片描述

虚拟内存的定义

请添加图片描述

如何实现虚拟内存技术

请添加图片描述

知识总结

请添加图片描述

3.2.2 请求分页管理方式

知识总览

请添加图片描述

页表机制

请添加图片描述

缺页中断机制

请添加图片描述
请添加图片描述

地址变换机制

请添加图片描述
请添加图片描述
补充细节:
只有“写指令”才需要修改“修改位”。并且,一般来说只需修改快表中的数据,只有要将快表项删除时才需要写回内存中的慢表。这样可以减少访存次数。
和普通的中断处理一样,缺页中断处理依然需要保留CPU现场。
需要用某种“页面置换算法”来决定一个换出页面(下节内容)
换入/换出页面都需要启动慢速的i/o操作,可见,如果换入/换出太频繁,会有很大的开销。
页面调入内存后,需要修改慢表,同时也需要将表项复制到快表中。
在具有快表机构的请求分页系统中,访问一个逻辑地址时,若发生缺页,则地址变换步骤是:
查快表(未命中)―一查慢表(发现未调入内存)―一调页(调入的页面对应的表项会直接加入快表)――查快表(命中)—―访问目标内存单元

知识回顾

请添加图片描述

3.2.3 页面置换算法

总览

请添加图片描述

最佳置换算法OPT

请添加图片描述
最佳置换算法可以保证最低的缺页率,但实际上,只有在进程执行的过程中才能知道接下来会访问到的是哪个页面。操作系统无法提前预判页面访问序列。因此,最佳置换算法是无法实现的。.

先进先出置换算法FIFO

请添加图片描述

最久未使用置换算法

请添加图片描述

时钟置换算法CLOCK

请添加图片描述

改进型的时钟置换算法

请添加图片描述

知识回顾

请添加图片描述

3.2.4 页面分配策略,抖动,工作级别

知识总览

请添加图片描述

页面分配,置换策略请添加图片描述

请添加图片描述

何时调入页面

请添加图片描述

从何处调入页面

请添加图片描述
请添加图片描述

抖动现象

请添加图片描述

工作集

请添加图片描述

知识回顾

请添加图片描述

3.2.5 内存映射文件

知识总览

请添加图片描述

映射文件

请添加图片描述
请添加图片描述请添加图片描述

知识总览

请添加图片描述

4

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CSDN 王道 408 操作系统是一本针对操作系统课程的教材,它由中国软件开发网(CSDN)出版,并以提供高质量的学习资源为目标。操作系统是计算机科学中的重要课程,也是计算机专业必修的一门课程。 这本教材主要涵盖了操作系统的基本概念、原理和设计,以及常见的操作系统功能和特性。它的内容丰富、深入浅出,适合学生的学习和理解。 在这本教材中,读者可以了解到操作系统的基本概念,例如进程管理、内存管理、文件系统等。对于每个主题,教材都提供了清晰而详细的解释,并通过示例和实践案例来帮助读者更好地理解和应用所学知识。 此外,这本教材还包含了大量的习题和实践题,以帮助读者巩固所学知识。这些习题既包括简单的选择题和填空题,也包括更加复杂的应用题和设计题,能够逐步提高读者的操作系统能力。 总的来说,CSDN 王道 408 操作系统是一本优质的教材,它为学习操作系统提供了全面而深入的指导。无论是对于计算机专业的学生还是对于对操作系统感兴趣的人来说,这本教材都是值得推荐的参考书。它不仅能够帮助读者掌握操作系统的基本概念和原理,还能够培养读者的问题解决和设计能力,为进一步深入研究和实践奠定良好的基础。 ### 回答2: CSDN王道408操作系统是一本针对计算机科学与技术专业的教材,主要讲解操作系统的相关知识和理论。本书内容包含了操作系统的基本概念、进程管理、内存管理、文件系统、输入输出系统等核心内容。 首先,本书从操作系统的基本概念开始介绍。通过对操作系统的定义、功能以及组成部分进行讲解,帮助读者了解操作系统的重要性和作用。 其次,本书详细介绍了进程管理的相关知识。进程是操作系统中的一个关键概念,是程序在计算机中的执行实体。通过对进程的创建、调度、同步与通信等方面的讲解,读者可以深入了解操作系统中进程的管理与控制原理。 此外,本书也对操作系统中的内存管理进行了系统的解释。内存管理是操作系统中的重要部分,它负责管理和控制计算机的内存资源。本书详细介绍了内存的分配与回收、虚拟内存、页面置换算法等概念和技术,帮助读者更好地理解和掌握内存管理的原理和方法。 最后,本书还涉及了操作系统中的文件系统和输入输出系统等内容。文件系统是操作系统中负责管理和操作文件的部分,而输入输出系统则涉及到计算机与外部设备的交互。通过对文件系统和输入输出系统的介绍,读者可以了解到操作系统在数据存储和输入输出方面的工作原理和技术。 总之,CSDN王道408操作系统是一本系统全面的操作系统教材,通过对操作系统的各个方面进行详细的介绍,可以帮助读者更深入地理解和掌握操作系统的基本原理和工作机制。 ### 回答3: CSDN王道408操作系统是面向计算机专业人员以及对操作系统有兴趣的人们提供的一本专业书籍,它详细介绍了操作系统的原理、设计和实现等内容。 该书的内容主要分为三个部分。第一部分是操作系统的基本概念和原理,包括进程管理、内存管理、文件系统和输入输出等。通过对操作系统的基本概念和原理进行深入讲解,读者可以全面理解操作系统的核心功能和工作原理。 第二部分是操作系统的设计和实现,包括处理器调度、死锁和进程同步等。在这一部分,读者可以学习到如何设计和实现一个高效、可靠的操作系统,并掌握一些解决操作系统中常见问题的技术方法。 第三部分是操作系统的实践和应用,主要介绍了实际应用中操作系统的相关技术和案例,如操作系统在分布式系统中的应用、虚拟化技术和云计算等。这些内容使读者能够了解和应用操作系统在实际工作中的应用和意义。 CSDN王道408操作系统以其丰富的内容和深度的讲解,成为了许多计算机专业人员以及学习操作系统的人的重要学习资料。通过阅读和学习该书,读者可以全面掌握操作系统的基本原理和技术,提升自己的操作系统技能,为今后的工作和研究提供有力支持。同时,该书也可以帮助读者深入了解操作系统的发展和应用趋势,为从事相关工作的人提供了重要的参考和指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值