11 2024 档案
摘要:请求分页管理方式 一、页表机制的不同 与基本分页存储管理的页表区别: 二、缺页中断机构 在请求分页系统中,每当要访问的页面不在内存时,便产生一个缺页中断,然后由操作系统的缺页中断处理程序处理中断。 此时缺页的进程阻塞,放入阻塞队列,调页完成后再将其唤醒,放回就绪队列。 如果内
阅读全文
摘要:页面置换算法 页面的换入、换出需要磁盘 I/O ,会有较大的开销,因此好的页面置换算法应该追求更少的缺页率。 一、OPT 最佳置换算法 Optimal 每次选择淘汰的页面将是以后永不使用,或者在最长时间内不再被访问的页面,这样可以保证最低的缺页率。 理解:该算法虽然性能最好,需要
阅读全文
摘要:页面分配策略 前言:概念多,理解即可。 一、驻留集 指请求分页存储管理中给进程分配的物理块的集合。在采用了虚拟存储技术的系统中,驻留集大小一般小于进程的总大小。 驻留集太小,会导致缺页频繁,系统要花大量的时间来处理缺页,实际用于进程推进的时间很少 驻留集太大,又会导致多道程序并发度下降
阅读全文
摘要:内存映射文件 前言:理解。 内存映射文件(Memory-Mapped Files)是指操作系统向上层程序员提供的功能(系统调用) 方便程序员访问文件数据 方便多个进程共享同一个文件 一、访问文件数据的使用 对比: 理解:一个是访问磁盘,一个是访问内存(OS 帮你访问磁盘),
阅读全文
摘要:虚拟内存的基本概念 一、传统存储管理方式的特征、缺点 一次性: 作业必须一次性全部装入内存后才能开始运行。这会造成两个问题: 作业很大时,不能全部装入内存,导致大作业无法运行。 当大量作业要求运行时,由于内存无法容纳所有作业,因此只有少量作业能运行,导致多道程序并发度下降。
阅读全文
摘要:基本分段存储管理方式 前言:分段与分页基本类似,理解了分页此处不难 一、分段 进程的地址空间:按照程序自身的逻辑关系划分为若干个段,每个段都有一个段名(在低级语言中,程序员使用段名来编程),每段从 0 开始编址。 内存分配规则:以段为单位进行分配,每个段在内存中占据连续空间,但各段之间可以
阅读全文
摘要:段页式管理方式 前言:顾名思义就是将前面介绍的分页存储管理和分段存储管理混合使用 一、分页、分段的优缺点 补充回顾: 对于内存来说: 内部碎片:已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间 外部碎片:还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的
阅读全文
摘要:两级页表 理解:前面提到操作系统会尽可能把页表连续存储在内存中,但如果本身页表过大,连续存储占用空间过多,则又失去了离散存储的分页存储管理的特点,因此两级页表甚至多级页表为了解决这个问题而生,即多级页表的意义是将一个连续存放在内存的大页表分解为离散的小页表。 一、问题一:页表的分级 概念:
阅读全文
摘要:具有快表的地址变换机构 理解:是对基本地址变换机构的优化,减少访存次数来提高效率。 一、快表的概念 快表,又称联想寄存器(TLB ,translation lookaside buffer),是一种访问速度比内存快很多的高速缓存 (TLB 不是内存,类比 Cache ,但与 Cache 有
阅读全文
摘要:基本地址变换机构 (属于上一节的基本分页存储管理)(是用于实现逻辑地址到物理地址转换的一组硬件机构) 关键理解:不仅进程被分为页面存放到页框中,该进程对应建立的页表也是需要存储到内存块中的。 一、页表寄存器 PTR 基本地址变换机构可以借助进程的页表将逻辑地址转换为物理地址。通常会在系统中设置
阅读全文
摘要:基本分页存储管理的基本概念 (前言:概念特别多,注意理解和区分) 一、概念 (一)页和页框(易混淆) 分页存储:将内存空间分为一个个大小相等的分区,每个分区就是一个“页框”。每个页框有一个编号(“页框号”),页框号从0开始。 将某进程的逻辑地址空间也分为与页框大小相等的一个个部分,每个部
阅读全文
摘要:动态分区分配算法 一、首次适应算法(First Fit) (一)算法思想 每次都从低地址开始查找,找到第一个能满足大小的空闲分区。 (二)实现 空闲分区以地址递增的次序排列。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。 二、最佳适应算法(
阅读全文
摘要:连续分配管理方式 补充: 非连续分配管理方式: 基本分页存储管理 基本分段存储管理 段页式存储管理 一、前言 对于内存来说: 内部碎片:已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间 外部碎片:还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的
阅读全文
摘要:覆盖与交换 一、覆盖技术 (一)思想 将程序分为多个段(多个模块)。常用的段常驻内存,不常用的段在需要时调入内存。 (二)实现 将内存分为一个“固定区”和若干个“覆盖区”。 需要常驻内存的段放在“固定区”中,调入后就不再调出(除非运行结束) 不常用的段放在“覆盖区”,需要用到时调入内存
阅读全文
摘要:内存管理的概念 一、 二、内存保护 (一)方法一:设置上下限寄存器 (二)方法二:设置重定位寄存器(基址寄存器)和界地址寄存器(限长寄存器)
阅读全文
摘要:内存的基础知识 一、存储单元 二、指令的工作原理 重点:区分物理地址和逻辑地址 三、从写程序到程序运行 四、链接的三种方式 (一)静态链接 在程序运行之前,先将各目标模块及它们所需的库函数连接成一个完整的可执行文件(装入模块),之后不再拆开 (二)装入时动
阅读全文
摘要:(三)死锁检测和解除 (1)死锁的检测 理解:在这个图中,以 P2 和 R1 间的箭头为例,表明实际上 P2 请求了两个 R1 资源,但 R1 只给他分配了1个资源。 重点:最后能将边全部消除,则没有死锁发生。否则,仍然有边连着且消除不掉的进程则发生了死锁。(可完全简化和不可
阅读全文
摘要:(二)避免死锁 (1)安全序列与不安全状态 安全序列: 指如果系统按照这种序列分配资源,则每个进程都能顺利完成。 只要能找出一个安全序列,系统就是安全状态。当然,安全序列可能有多个。 不安全状态: 如果分配了资源之后,系统中找不出任何一个安全序列,系统就进入了不安全状态。 这就意
阅读全文
摘要:(一)预防死锁 死锁的发生须同时满足四个条件:互斥条件、不剥夺条件、请求和保持条件、循环等待条件。 预防死锁可以分别从破坏这四个条件入手: (1)破坏互斥条件 理解:在进程和资源之间加多一层,使其对于多个进程来说宏观上看似是可以同时使用的,但实际上仍由系统完成互斥分配。
阅读全文
摘要:死锁 一、死锁的概念 在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是“死锁”。发生死锁后若无外力干涉,这些进程都将无法向前推进。 二、死锁、饥饿、死循环 死锁: 各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前
阅读全文
摘要:管程 理解:管程实际上就是对先前的需要一气呵成的各种操作(包括 P、V 操作等)进行封装实现。 一、管程的定义和基本特征 二、引入管程的原因及管程的逻辑实现 关键:在封装下由编译器负责实现互斥特性
阅读全文
摘要:读者-写者问题 一、问题背景及分析 有读者和写者两组并发进程,共享一个文件,当两个或两个以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。因此要求: 允许多个读者可以同时对文件执行读操作 只允许一个写者同时往文件中写
阅读全文
摘要:哲学家进餐问题 一、问题背景及分析 (一)基本分析及实现 每个进程争抢地使用一种资源,其中若分配不当会导致死锁现象。 基本实现: (二)避免死锁发生的三种方法(仍有很多种,这里仅作列举参考) (1)限制资源容量 可以对哲学家进程施加一些限制条件,比如最多允许四个哲学家同时进餐。这
阅读全文
摘要:多生产者-多消费者问题 一、问题背景及分析 这里的“多”指种类多而不是数量多。多种生产者和多种消费者共享同一片缓冲区,且一种消费者只接受特定的一种生产者生产的产品。 二、问题实现 同样,实现互斥的 P 操作一定要在实现同步的 P 操作之后,否则可能引起“死锁”。 三、问题思考 (
阅读全文
摘要:吸烟者问题 一、问题背景及分析 即“可以生产多种产品的单生产者和多消费者”的问题。生产者可生产 A/B/C 产品,每种产品都有各自的不同种消费者接受。 注:这里的缓冲区容量为1,所以可以不设置 mutex 的互斥信号量(同一时刻,四个同步信号量中至多只有一个值为1) 二、问题实现
阅读全文
摘要:信号量实现进程互斥、同步、前驱关系 P、V 操作必须成对出现。缺少 P(mutex) 就不能保证临界资源的互斥访问。缺少 V(mutex) 会导致资源永不被释放,等待进程永不被唤醒。 一、实现进程互斥 注:下图中的第一行对信号量的初始化只是简化写法,并不严格遵循结构体的相关
阅读全文
摘要:生产者-消费者问题 一、问题背景及分析 系统中有一组生产者进程和一组消费者进程,生产者进程每次生产一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个产品并使用。(注:这里的“产品”理解为某种数据) 生产者、消费者共享一个初始为空、大小为 n 的缓冲区。 只有缓冲区没满时,生产者才能把
阅读全文
摘要:信号量机制 1965年由荷兰学者 Dijkstra 提出 一、概念 用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥、进程同步。 信号量甚实就是一个变量(可以是一个整数,也可以是更复杂的(数据结构)记录型变量),可以用一个信号量来表示系统中某种资源的
阅读全文
摘要:互斥锁 备注:此处仅为简介,互斥锁、自旋锁以及其他锁需跳转至其他详细的解析 前两节介绍的几种算法和实现基本都属于自旋锁(while 忙等,不满足“让权等待”原则)
阅读全文
摘要:进程互斥的硬件实现方法 一、中断屏蔽方法 利用“开/关中断指令"实现(与原语的实现思想相同,即在某进程开始访问临界区到结束访问为止都不允许被中断,也就不能发生进程切换,因此也不可能发生两个同时访问临界区的情况)。 优点:简单、高效 缺点:不适用于多处理机;只适用于操作系统内核进程,不适
阅读全文
摘要:进程互斥的软件实现方法 一、单标志法 二、双标志先检查法 三、双标志后检查法 四、Peterson算法 理解:如同现实生活中的给红包的拉扯,谁最后说了客气话(在代码里即谁的while最先表现为true),谁就失去了资源
阅读全文
摘要:进程同步与进程互斥 一、进程同步 ——回顾:进程的异步性,指各并发执行的进程以各自独立的、不可预知的速度向前推进。 同步,亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的
阅读全文
摘要:调度算法(一) (1)前言 此处列举的三种算法主要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。 因此这三种算法一般适合用于早期的批处理系统,当然, FCFS 算法也常结合其他的算法使用,在现
阅读全文
摘要:调度算法(二) (1)前言 比起早期的批处理操作系统来说,由于计算机造价大幅降低,因此之后出现的交互式操作系统(包括分时操作系统、实时操作系统等)更注重系统的响应时间、公平性、平衡性等指标。而这几种算法恰好也能较好地满足交互式系统的需求。因此这三种算法适合用于交互式系统。(比如 UNIX 使用的就是
阅读全文
摘要:调度算法 补充: 饥饿:某进程/作业长期得不到服务 响应比: $$ 响应比=\frac{等待时间+要求服务时间}{要求服务时间} $$ 调度算法(一) 先来先服务 FCFS 最短作业优先 SJF / 最短进程优先 SPF / 最短剩余时间优先 SRTN 最高响应比优先 HRRN 调度算法(二)
阅读全文
摘要:调度算法的评价指标 一、CPU利用率 CPU工作的时间占总时间的比例。 $$ CPU利用率=\frac{CPU工作时间}{总时间} $$ 计算某种设备的利用率类似。 二、系统吞吐量 单位时间内完成作业的数量 $$ 系统吞吐量=\frac{总共完成的作业数}{总时间} $$
阅读全文
摘要:闲逛进程 理解:调度程序永远的备胎,当没有其他就绪进程时,运行闲逛进程 (idle) 特性: 优先级最低 可以是0地址指令,占一个完整的指令周期(指令周期末尾例行检查中断) 能耗低
阅读全文
摘要:进程调度的时机、方式、切换与过程 (理解) 一、进程调度的时机 有的系统中,只允许进程主动放弃处理机。 有的系统中,进程可以主动放弃处理机,当有更紧急的任务需要处理时,也会强行剥夺处理机(被动放弃)。 对2.的补充: ——临界资源: 一个时间段内只允许一个进程使用的资源。各
阅读全文
摘要:调度的概念与层次 一、调度解决的问题 理解:在资源有限不能同时处理所有任务的情况下,需要确定某种规则来确定处理这些任务的顺序(划分权级或短时优先或其他等) 二、调度的层次划分 (一)高级调度/长程调度/作业调度 内存的空间有限,无法将所有任务同时装入内存。则按一定的原则从
阅读全文
摘要:线程的状态与转换、组织与控制 线程的状态与转换基本和进程相同,同样具有就绪态、运行态、阻塞态三种基本状态,转换过程也类似。 (备注:详细的进程和线程的状态模型(有些版本具有七状态模型)可参考下一节:调度的概念与层次) 三个基本状态 线程的组织与控制
阅读全文
摘要:线程的实现方式和多线程模型 一、线程的实现方式 (一)用户级线程 (二)内核级线程 二、多线程模型 在支持内核级线程的系统中,根据用户级线程和内核级线程的映射关系,可以划分不同的多线程模型 (一)一对一模型 (二)多对一模型 和上面提到的用户级线程的实现方
阅读全文
摘要:线程的概念、作用和属性 线程的概念 理解:线程可视作“轻量级进程”。 线程是一个基本的 CPU 执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如 QQ视频、文字聊天、传文件)
阅读全文
摘要:进程通信 进程间通信 Inter-Process Communication (IPC) 前置:进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。因此进程通信需要操作系统支持。 一、共享存储 为避免
阅读全文
摘要:进程控制 一、概念 进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。 简化理解:实现进程状态转换 二、实现方式 原语实现 原语是一种特殊的程序,执行于内核态,具有原子性(一段原语程序的执行一气呵成,不可中断)。 可以用“
阅读全文
摘要:进程的状态与转换、进程的组织 一、进程的状态与转换 理解: 某项进程的运行一方面需要CPU处理器的资源,一方面可能还需要其他系统资源。 拥有其他系统资源,仅等待CPU的时间片分配,此状态为就绪态。 进程运行过程中使用“系统调用”的方式获取其他系统资源,但并未马上获得,则会进入阻塞态。阻塞态的进程也不
阅读全文
摘要:进程的概念、组成、特征 一、进程与程序 程序:是静态的,是存放在磁盘里的可执行文件,是一系列的指令集合。 进程:是动态的,是程序的一次执行过程(同一个程序多次执行会对应多个进程,分配不同的进程号PID) 二、进程的组成 (PCB给操作系统使用,程序段和数据段给进程自己使用)
阅读全文
摘要:虚拟机 举例理解 第一类虚拟机:在开机的时候选择操作系统,选择的即为第一类虚拟机,常见于学校机房电脑 第二类虚拟机:在某一操作系统下(宿主操作系统)再次安装虚拟机管理程序,如 VM Ware ,上面装的即为第二类虚拟机
阅读全文
摘要:操作系统引导 (Boot) 一点补充: BIOS:Basic Input/Output System RAM 芯片中的数据在关机断电后就会被清空,ROM 芯片不会
阅读全文
摘要:计算机系统体系结构 大内核(宏内核)与微内核 CPU在内核态和用户态之间的转换需要耗费时间,影响性能。 分层结构 模块化 外核 理解:未经抽象的内存空间资源 未虚拟化的,即连续地址的内存空间资源 →减少了虚拟硬件资源的“映射层”,提高效率
阅读全文
摘要:系统调用 系统调用的概念和作用 操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。应用程序可通过系统调用来请求获得操作系统内核的服务。 ——系统调用与库函数的区别 系统调用存在的必要性:用户进
阅读全文
摘要:中断和异常 中断的类型 中断机制的基本原理
阅读全文
摘要:操作系统的运行机制 一、内核程序与应用程序 二、特权指令与非特权指令 特权指令,如内存清零指令等。 非特权指令,如加法指令、减法指令等。 CPU 设计和生产的时候就划分了特权指令和非特权指令,因此 CPU 执行一条指令前就能判断出其类型。 三、内核态与用户态
阅读全文
摘要:操作系统的特征 一、并发 指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。 常考易混概念一一并行:指两个或多个事件在同一时刻同时发生。 二、共享 ——并发与共享的关系 三、虚拟 虚拟是指,把一个物理上的实体变为若干个
阅读全文
摘要:操作系统的概念与功能 操作系统的定义 操作系统 (Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。 操作系统的功能和目标 (一
阅读全文