操作系统期末复习笔记(持续更新..)

一、操作系统的基本概念

1.1 操作系统概念

控制和管理整个计算机系统的硬件与软件资源。合理地组织、调度计算机的工作与资源。为用户和其他软件提供方便接口与环境的程序集合。

1.2 操作系统的特征

特征:并发,共享,虚拟,异步

并发:两个或多个事件在同一时间间隔内发生。使得系统具有处理和调度多个程序同时执行的能力。操作系统的并发是通过分时实现的。注意:并发是指在一个时间段,并行是指在同一个时段。并行是指系统具有同时执行或操作(硬件支持:多流水线或者多处理机)。对于单机处理来说,并行宏观上程序是同时在运行的,微观上程序是交替执行的,多道程序轮流占有CPU,交替执行。

重要考点:单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行。多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行。

共享:互斥共享方式。例如打印机、磁带,同一时刻只能供一个进程对资源进行访问这种资源称作:临界资源或者独占资源。

同时访问方式:一段时间内允许多个进程对资源进行访问。典型代表:磁盘设备,重入码编写的文件。

虚拟:一个物理上的实体变为若干逻辑上的对应物,这种技术被称为虚拟技术。虚拟处理器:采用多道程序并发的方式,让每个终端用户感觉到有多个处理器。时分复用技术。

虚拟存储器:将物理存储变为虚拟存储器,逻辑上扩充存储器用量。空分复用技术。

也可以将一台IO设备虚拟为多台逻辑上的IO设备,并允许每个用户占用一台逻辑上的IO设备。

异步:多道程序走走停停,进程以不可预知的速度向前进。

1.3 操作系统的运行环境

程序运行:程序运行的过程是执行CPU一条条的机器指令的过程。

操作系统的运行机制:

CPU执行的两种性质程序,操作系统内核程序,用户自编程序。

内核:

时钟管理:操作系统为用户提供标准时间,根据时钟对进程进行管理,实现进程切换。

中断机制:初衷是为了提高多道程序运行环境中的CPU利用率。保护和回复中断线程的信息,转移控制权到相关程序。

原语:处于系统的最底层,最接近硬件。运行具有原子性,只能一气呵成。系统控制的数据结构及处理。

中断与异常:

为了进行核心态和用户态两种状态的切换,引入了中断机制。核心态可以执行用户态无法执行的特权指令。访管指令是在用户态使用,将用户态转换为核心态,所以访管指令不是特权指令。

中断是让操作系统内核夺回CPU使用权的唯一途径。

中断(外中断):来自于CPU指令之外的事件发生。I/O中断:输入输出已经完成。时钟中断:固定时间片已到,让处理机处理。

异常(内中断):源自于CPU执行指令内部的事件。非法操作码,除零,地址越界,算术溢出。陷入指令:用户自行设置,执行陷入后,用户态转换为核心态。异常不能被屏蔽。

系统调用:用户在程序中调用操作系统提供的一些子功能。设备功能:完成设备的请求或者释放,设备启动等功能。文件管理:完成文件的读、写、创建以及删除功能。进程控制:完成进程的创建、撤销、阻塞以及唤醒功能。进程通信:完成进程之间的消息传递和信号传递功能。内存管理:完成内存的分配、回收以及获取作业占有内存区大小及始址等功能。

用户态与内核态:处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令。

处于用户态时,说明此时正在执行的时应用程序,此时只能运行非特权指令。

cpu中有一个寄存器叫程序状态字寄存器(psw),其中有个二进制位,1表示内核态,0表示用户态。

别名:内核态=核心态=管态。用户态=目态。

内核态->用户态。执行一条特权指令——修改psw的标志位为用户态,意味着操作系统主动让出CPU使用权。

用户态->内核态。由中断引发,硬件自动完成变态过程,触发中断信号意味着操作系统强行夺回CPU使用权。

1.4 大内核与微内核

大内核:将操作系统的主要功能模块进行集中,从而用以提供高性能的系统服务。优点:各个管理模块间共享信息,能够有效利用相互间的有效特性,有巨大性能优势。缺点:层次交互关系复杂,层次接口难定义,层次间界限模糊。

微内核:计算机体系结构发展,操作系统提供服务越来越多,接口形式越来越复杂。将内核中最基本的功能保留在内核,将不需要在核心态执行的功能转移到用户态执行,降低内核设计的复杂性。优点:有效分离内核与服务、服务与服务、使得它们间的接口更清晰,维护代价大大降低。各部分可以独立的优化和演进。缺点:性能问题,需要频繁的在用户态和内核态之间切换。

二、进程

2.1 进程的概念和特征

进程的概念:

进程是程序一次执行过程。进程是一次程序及其数据在处理机上顺序执行时发生的活动。进程时具有独立功能的程序在一个数据集合上运行的过程,是资源分配和调度的独立单位。是为了更好描述和控制程序的并发执行,实现操作系统的并发性和共享性。

进程控制块PCB:为了更好的描述进程的基本情况和运行状态,进而控制和管理进程。PCB是进程存在的唯一标志。

进程的特征:

动态性、并发性、独立性、异步性、结构性。

动态性:进程具有生命周期,有创建、活动、暂停、终止等过程。

并发性:多个进程同时存在于内存中,使得程序与程序之间可以并发执行。

独立性:进程能独立获得资源和接受调度。

异步性:进程相互制约,以不可预知的速度向前推进。操作系统中配置有相应的进程同步机制。

结构性:每个进程都配置一个PCB用于描述。

2.2 进程的状态与转换

状态:创建态、就绪态、运行态、阻塞态、结束态。

创建态:进程正在被创建,尚未进入就绪态。

就绪态:进程已处于准备运行状态。

运行态:进程在处理机上运行。

阻塞态:又称等待态,进程正在等待某个时间而暂停运行。

结束态:进程正在从系统中消失(正常结束或异常终止)

相互转换:

就绪态->运行态:处于就绪态的进程获得处理机进入运行态。

运行态->就绪态:处于运行态的进程时间片用完后,让出处理机进入就绪态。

运行态->阻塞态:进程请求除处理机外的其他资源,此时运行态进入阻塞态。

阻塞态->就绪态:进程获得所等待的资源,如IO资源,或中断结束。

2.3 进程控制

进程的创建:

分配进程标识号,申请PCB(PCB有限)。为进程分配资源,为程序和数据以及用户栈分配必要的内存空间。初始化PCB,包括初始化标志信息、初始化处理机状态信息、初始化处理机控制信息、设置进程的优先级。若进程就绪队列可以接纳新进程,进程就进入就绪态。

进程的终止:

结束分类:正常结束:进程的任务已经完成并且准备退出运行。异常结束:进程正在运行,出现了某些异常事件,导致程序无法继续运行。外界干预:进程应外界请求终止运行。

结束过程:根据被终止进程的标识符,检索PCB,读取进程状态。若进程处于运行态,终止运行,剥夺处理机。终止进程之下的子进程。该进程拥有的全部资源还给父进程或者操作系统。将PCB从队列中删除。

进程的阻塞和唤醒:

阻塞原语执行过程:找到要被阻塞进程标识号对应的PCB。若该进程处于运行态,保护其现场,将其状态转换为阻塞态,停止运行。将PCB插入相应时间的等待队列。

唤醒原语的执行过程:找到等待队列中进程相应的PCB。将其从等待队列中移除,置其状态为就绪态。将PCB插入就绪队列,等待调度程序调度。

进程切换:

进程切换是在内核态下完成的。

过程:保存处理机上下文,包括程序计数器和其它寄存器。更新PCB信息。把进程的PCB移入相应的队列,如就绪、阻塞等队列。选择另一个进程执行,更新其PCB。更新内存管理的数据结构。恢复处理机上下文。

进程的组织:

进程是一个独立的运行单位,也是操作系统进行资源分配和调度的基本单位,由以下三部分组成:

进程控制块:

进程描述信息:进程标识符:标志进程。用户标识符:标识进程归属的用户,主要为了共享和保护服务。

进程控制和管理信息:进程当前状态:描述进程状态信息。进程优先级:描述进程抢占处理机的优先级。代码运行入口地址。程序外存地址。进入内存时间。处理机占用时间。信号量使用。

资源分配清单:

用以说明有关内存地址空间或者虚拟地址空间状况,所打开的文件的列表和所使用的输入/输出设备信息。代码段指针、数据段指针、堆栈段指针、文件描述符、键盘、鼠标。

处理机相关信息:

处理机中各寄存器的值。通用寄存器,地址寄存器,控制寄存器,标志寄存器值,状态字。

程序段:能被进程调度程序调度到CPU执行的程序代码段。

数据段:进程对应的程序加工处理的原始数据或者程序执行时产生的中间或最终结果。

进程的组织方式:

链接方式:按照进程状态将PCB分为多个队列,操作系统由指向各个队列的指针。

索引方式:根据进程状态不同,建立几张索引表。操作系统持有指向各个索引表的指针。

2.4 进程的通信

共享存储:通信进程之间存在一块可以被直接访问的共享空间。

低级方式:基于数据结构共享。

高级方式:基于存储区共享。

消息传递:进程间的数据交换是已格式化的消息为单位的,进程通过系统提供的发送消息和接收消息的两个原语进行数据交换。

直接通信方式:发送进程直接发消息给接收进程,并将它挂在接收进程的消息缓冲队列上,接收进程从消息缓冲队列中取得消息。

间接通信方式:发送进程把消息发给某个中间实体,接收进程从中间实体获得消息。

通道通信:发送进程以字符流形式将大量数据送入写管道,接收进程从管道中接收数据。当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。

通道通信是半双工通信,不可以同时读和写。要求互斥和同步,确定对方存在。

三、线程

线程的基本概念:

减少程序在并发执行时付出的时空开销,提高操作系统的并发性能。

引入线程后,进程只作为系统资源的分配单元,线程作为处理机的分配单元。

线程与进程的比较:

调度:进程是独立调度的基本单位,线程是资源的基本单位。不同线程切换回引起进程切换。

拥有资源:进程是资源分配的基本单位。

并发性:引入线程后,进程可以并发执行,多个线程间也可以并发执行,提高系统吞吐量。

系统开销:同一进程的线程切换要比进程切换开销小。

地址空间和其它资源:进程的地址空间相互独立,同一进程的各线程之间共享进程资源,某进程的线程对其它进程不可见。

通信方面:进程间通信需要进程同步和互斥手段的辅助,保证数据的一致性。线程间可以直接读/写进程程序段来通信。

线程属性:不拥有系统资源,拥有唯一标识符和线程控制块。不同线程可以执行相同的程序,同一服务程序被不同用户调用时,操作系统为其创建不同线程。同一进程的线程共享该进程全部资源。线程时处理机的独立调度单位。线程也有生命周期,如阻塞、就绪、、运行等状态。多CPU计算机中,各个线程可占用不同的CPU。每个线程都有一个线程ID、线程控制块(TCB)。切换同进程中的线程开销小,切换进程开销大。由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预。

(持续更新中...)

——————————————————————————————————————

一、文件系统专题

题1:【2012统考真题】某文件系统空间的最大容量为 4TB ( 1TB=2^40 B ),以磁盘块为基本分配单位。磁盘块大小为 1KB 。文件控制块( FCB )包含一个 512B 的索引表区。请回答下列问题。

1 )假设索引表区仅采用直接索引结构,索引表区存放文件占用的磁盘块号,索引表项中块号最少占多少字节?可支持的单个文件最大长度是多少字节?

2 )假设索引表区采用如下结构:第 0 ~ 7 字节采用 < 起始块号,块数 > 格式表示文件创建时预分配的连续存储空间,其中起始块号占 6B ,块数占 2B ;剩余 504 字节采用直接索引结构,一个索引项占 6B ,则可支持的单个文件最大长度是多少字节?为了使单个文件的长度达到最大,请指出起始块号和块数分别所占字节数的合理值并说明理由。

解答:(1)总容量是2^42B,磁盘块大小是2^10B,所以一共有2^32个磁盘块。每个磁盘块都可以用一个32位的二进制数表示(比如0000 0000 0000 0000 0000 0000 0000 0010 代表第2个磁盘块)。问:块号占多少字节?因为每个字节8位,所以是32/8=4B,所以占4字节。(可以用4个字节来代表一个磁盘块)

现在有一个512B的索引表区,用512B/4B=128,求得有128个索引表项,(因为4个字节代表一个磁盘块,4字节等于1个索引表项)每个索引表项代表一个磁盘块,每个磁盘块大小1KB,所以单个文件最大长度位128x1KB=128KB。

(2)6B=48位。2B=16位,16位表示的是连续的内存块数=2^16,又因为每个内存块是1KB=2^10B,所以预分配的连续内存空间是2^26B。

因为1个索引项占6B,所以504字节=84个索引项。由第1问推理可知,1个索引项=1个磁盘块,84x1KB=84KB。

由题目第2问开头可知,索引表表示的空间大小可以=预分配的存储空间+直接索引的存储空间。所以可支持的单个文件的最大长度是2^26B+84KB。

在第2问的框架下,索引表结构是不变,即前8字节表示预分配的空间,所以只能在这里作文章。因为根据第1问可知,该系统容量为2^32个磁盘块的大小。所以我们可以让表示连续分配块数占32位,即4字节,这样最大能分配大小为4TB的连续块作为预分配空间。起始块号也占4字节,刚好能寻址完全2^32块磁盘块。很完美的分配方法。

题2:【2016 统考真题】某磁盘文件系统使用链接分配方式组织文件,簇大小为4KB。目录文件的每个目录项包括文件名和文件的第一个簇号,其他簇号存放在文件分配表FAT中。
1)假定目录树如下图所示,各文件占用的簇号及顺序如下表所示,其中dir, dir1是目录,file1, file2是用户文件。请给出所有目录文件的内容。
2)若FAT的每个表项仅存放簇号,占2B,则FAT的最大长度为多少字节?该文件系统支持的文件长度最大是多少?
3)系统通过目录文件和FAT实现对文件的按名存取,说明file1的106,108两个簇号分别存放在FAT的哪个表项中


4)假设仅FAT和dir目录文件已读入内存,若需将文件dir / dir1 / file1的第5000个字节读入内存,则要访问哪几个簇?

解答:(1)可以这么看,题目中只有2个目录,分别为dir和dir1。dir的目录项是dir1(不用去考虑下一级),dir1的目录项是file1和file2。由定义:目录文件的每个目录项包括文件名和文件的第一个簇号,所以dir的目录名为:dir1 48。dir1的目录名为:file1 100 file2 200。

(2)2B=16位,任何1个簇能用16位二进制数组成的簇号表示,所以一共能表示2^16个簇,又因为1个表项对应1个簇,所以一共有2^16个表项,因为一个表项大小2B,所以FAT的最大长度=表项的数量x表项大小=2^16x2为2^17B=128KB。

最大文件长度=簇的数量x每个簇的大小。已知有2^16个簇,题目中知道每个簇的大小为4KB=2^12B。所以所能表示的文件最大大小为:2^28B=256MB。

(3)由第1问可知,dri1目录文件的第1个目录项为file1 100,这里的100是file1的第1个簇号,它需要通过指针与后面2个簇号106和108连接。file1的目录项首先会指向第1个簇号对应在FAT中的表项(如下图),也就是第100表项,因为在FAT表中每个表项的构成结构是:表项+下一簇号,所以100簇号对应的下一个簇号是106,通过106簇号可以找到表项106,108簇号存储在106表项中。由此可以找到file1文件中的所有簇号。所以答案是:file1的簇号106存放在FAT的100号表项中,簇号108存放在FAT的106号表项中。

(4)由题目知道,dir目录已经读入内存,接下来需要将dir1读入内存,所以需要访问簇号为48的簇。下面需要把file1读入内存,因为每个簇的大小为4KB=4096B,系统知道file1的目录项最大只能访问到4096个字节,所以它会到FAT的第100表项去找,所以会访问簇号为106的簇(这个簇是第2个簇,对应的内存是第4097~8192个字节,第5000个字节在这个范围内)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/603645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构复习部分机考题-自用

A.二叉树孩子链表法之找家人 题目描述 给出二叉树的孩子链表表示法&#xff0c;根据输入要求&#xff0c;找指定结点的双亲或孩子 输入 第一行输入两个参数&#xff0c;第一个参数n表示树有n个结点&#xff0c;第二个参数r表示根结点的数组下标 接着n行&#xff0c;每行先…

kotlin chunked 和 windowed

kotlin chunked的作用 将集合按照指定的数量分割成多个结合 val numbers listOf(0,1,2,3,4,5,6,7,8,9) //把集合按照一个结合3个元素分割 Log.d("chunked", numbers.chunked(3).toString()) // 打印结果 [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]] kotlin windowed…

带大家做一个,易上手的家常香干炒腊肉

从冰箱那一块腊肉 套个食品级的袋子 然后用冷水化冰 准备两块香干 香干切成片 不要太薄 当然也别厚了 一把青蒜 青蒜切成段 干和叶子分开装 腊肉去掉下面的肉皮 然后切小块 锅中加入清水 下入少量油和盐 开小火 水起泡泡后下入香干 过水 半分钟左右 香干捞出备用 将腊…

条件竞争之文件上传

一、条件竞争介绍 条件竞争,在程序员日常的Web应用开发中&#xff0c;通常不如其他漏洞受到的关注度高。因为普遍的共识是&#xff0c;条件竞争是不可靠的&#xff0c;大多数时候只能靠代码审计来识别发现&#xff0c;而依赖现有的工具或技术很难在黑盒灰盒中识别并进行攻击。…

ICMP隐蔽隧道工具Pingtunnel搭建隧道(附搭建环境避坑超详细)

工具介绍可参考其他博主文章&#xff0c;这里直接上环境搭建和踩坑避坑后的工具攻击过程。 目录 环境搭建 #安装libpcap的依赖环境 打通隧道&#xff08;linux服务端开启监听&#xff09; 连接测试&#xff08;kali攻击机上启动&#xff09; 远控攻击&#xff08;win7&…

进程间通信之共享内存及其shm函数的使用【Linux】

进程间通信之共享内存及其shm函数的使用 什么是共享内存共享内存的内核数据结构 如何实现共享内存共享内存函数shmget函数ftok函数 shmat函数shmdt函数shmctl函数 代码实现 什么是共享内存 共享内存区是最快的IPC&#xff08;Inter-Process Communication&#xff0c;进程间通信…

腾讯云导入导出镜像官方文档

制作与导出 Linux 镜像 https://cloud.tencent.com/document/product/213/17814 制作与导出 Windows 镜像 ​​​​​​https://cloud.tencent.com/document/product/213/17815 云服务器 导出镜像-操作指南-文档中心-腾讯云 (tencent.com) 轻量应用服务器 管理共享镜像-操作指…

GitEE-GitHub实现加速访问与下载项目

gitee域名&#xff1a;https://gitee.com gitee域名&#xff1a;https://github.com 一、从github导出项目到gitee上面&#xff0c;从而实现加速访问与下载 gitee和github都有同步其他仓库的功能&#xff0c;比如码云上就能直接从github或gitlab中导入&#xff1b; 只需要填…

大模型实战营Day2 轻松玩转书生·浦语大模型趣味Demo

大模型&#xff1a;参数数量巨大&#xff0c;拥有庞大计算能力和参数规模的模型 InternLM &#xff1a;是一个开源的轻量级训练框架&#xff0c;旨在支持模型预训练&#xff0c;而无需广泛的依赖关系。通过单一代码库&#xff0c;它支持在具有数千个 GPU 的大规模集群上进行预训…

hfish蜜罐docker部署

centos 安装 docker-CSDN博客Docker下载部署 Docker是我们推荐的部署方式之一&#xff0c;当前的版本拥有以下特性&#xff1a; 自动升级&#xff1a;每小时请求最新镜像进行升级&#xff0c;升级不会丢失数据。数据持久化&#xff1a;在宿主机/usr/share/hfish目录下建立dat…

【TypeScript】高级类型

文章目录 1、交叉类型2、联合类型3、类型保护3.1 用户自定义的类型保护3.2 typeof 类型保护3.3 instanceof类型保护 4、类型别名4.1 定义- 接口 vs. 类型别名 5、可辨识联合6、索引类型6.1 类型操作符&#xff1a;- 索引类型查询操作符&#xff1a;keyof T- 索引访问操作符&…

基于springboot的停车场管理系统-计算机毕业设计源码82061

摘要 由于数据库和数据仓库技术的快速发展&#xff0c;停车场管理系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。停车场管理系统对处理对象和服务对象&#xff0c;自身的系统结构&#xff0c;处理能力&#xff0c;都将适应技术发展的要求发生重大的变化。停…

Kubernetes 学习总结(45)—— 懂 Pod 就懂了 Kubernetes 的一半

前言 Kubernetes 可以理解成一个对计算、网络、存储等云计算资源的抽象后的标准 API 服务。几乎所有对 Kubernetes 的操作&#xff0c;不管是用 kubectl 命令行工具&#xff0c;还是在UI或者CD Pipeline 中&#xff0c;都相当于在调用其 REST API。很多人说 Kubernetes 复杂&a…

docker nginx滚动日志配置

将所有日志打印到控制台 nginx.conf user nginx; worker_processes auto; # 日志打印控制台 error_log /dev/stdout; #error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include /etc/nginx/m…

循环链表和双向链表

下面是 C 语言中循环链表和双链表的链式表示和实现示例&#xff1a; **循环链接表&#xff1a;** c #include <stdio.h> #include <stdlib.h> struct Node { int data; struct Node* next; }; // Function to create a new node struct Node* createNode(int da…

Mysql与Redis如何保证数据一致性问题

目录 一、Mysql与Redis同步数据是否存在延迟呢&#xff1f; 二、如何保证一致性&#xff1f; 2.1、第一种方式&#xff1a;手动编码 2.2、第二种方式&#xff1a;MQ异步更新 2.3、第三种方式&#xff1a;binlog同步数据 2.4、第四种方式&#xff1a;双写一致性 2.5、第五…

ASP.NET可视化流程设计器源码

源码介绍: ASP.NET可视化流程设计器源码已应用于众多大型企事业单位。拥有全浏览器兼容的可视化流程设计器、表单设计器、基于角色的权限管理等系统开发必须功能&#xff0c;大大为您节省开发时间&#xff0c;是您开发OA.CRM、HR等企事业各种应用管理系统和工作流系统的最佳基…

Python爬虫获取百度的图片

一. 爬虫的方式&#xff1a; 主要有2种方式: ①ScrapyXpath (API 静态 爬取-直接post get) ②seleniumXpath (点击 动态 爬取-模拟) ScrapyXpath XPath 是 Scrapy 中常用的一种解析器&#xff0c;可以帮助爬虫定位和提取 HTML 或 XML 文档中的数据。 Scrapy 中使用 …

Intel x86架构之I/O APIC

全文来自Intel手册&#xff08;见参考1&#xff09;&#xff1a;Intel? 82093AA I/O Advanced Programmable Interrupt Controller (I/O APIC) Datasheet 注意&#xff1a;下文中已经指出手册中的对应页面和章节&#xff0c;请对照手册原文看&#xff0c;任何个人理解错误&…

期货日数据维护与使用_日数据维护_模块整体代码

目录 写在前面 setting.py sqlite_tool.py future_widget.py 写在前面 本文默认已经创建了项目&#xff0c;如果不知道如何创建一个空项目的&#xff0c;请参看以下两篇博文 PyQt5将项目搬到一个新的虚拟环境中 https://blog.csdn.net/m0_37967652/article/details/122…