清华大学操作系统(陈渝,向勇)课程笔记——(十三)死锁与进程间通信
摘要:死锁 死锁问题 系统模型 死锁特征 死锁处理方法 Deadlock Prevention(死锁预防) Deadlock Avoidance(死锁避免) Deadlock Detection(死锁检测) Recovery from Deadlock(死锁恢复) 死锁出现的情况 一组阻塞的进程持有一种资
阅读全文
清华大学操作系统(陈渝,向勇)课程笔记——(十二)经典同步问题
摘要:1. 读者——写者问题 动机 共享数据的访问 两种类型使用者 读者:不需要修改数据 写者:读取和修改数据 问题的约束 允许同一时间有多个读者,但在任何时候只有一个写者 当没有写者时读者才能访问数据 当没有读者和写者时写者才能访问数据 在任何时候只能有一个线程可以操作共享变量 多个并发进程的数据集共享
阅读全文
清华大学操作系统(陈渝,向勇)课程笔记——(十一)信号量和管程
摘要:主要内容 背景 信号量 信号量使用 信号量实现 管程 经典同步问题 内容回顾 1. 并发问题:竞争条件(竞态条件) 多程序并发存在大的问题 2. 同步 多线程共享公共数据的协调执行 包括互斥与条件同步 互斥:在同一时间只有一个线程可以执行临界区 3. 确保同步正确很难? 需要高层次的编程抽象(如:锁
阅读全文
清华大学操作系统(陈渝,向勇)课程笔记——(十)协同多道程序设计和并发问题
摘要:主要内容 背景 —些概念 临界区 (Critical section) 方法1:禁用硬件中断 方法2:基于软件的解决方法 方法3:更高级的抽象 背景 多道程序设计(multi-programming):现代操作系统的重要特性 并行很有用(为什么? ) 提示:多个并发实体:CPU(s),I/O, …,
阅读全文
单例模式之C++实现
摘要:单例模式 在面向对象编程中,有时候我们希望达到这样一种效果,一个类只有一个实例化的对象,比如线程池,缓存等,所以人们人为规定,这些类有且只有一个唯一的实例。这种设计模式被称为单例模式。 单例模式的特点 使用单例模式的类没有公开的构造函数,所以不能创建该类的实例 同理,使用单例模式的类也没有公开的拷贝
阅读全文
清华大学操作系统(陈渝,向勇)课程笔记——(九)调度算法
摘要:主要内容 背景调度准则 CPU调度 CPU调度时间 调度算法 实时调度 多处理器调度 优先级反转 上下文切换 切换CPU的当前任务,从一个进程/线程到另一个 保存当前进程/线程在PCB/TCP中的执行上下文(CPU状态)〉读取下一个进程/线程的上下文 CPU调度 从就绪队列中挑选一个进程/线程作为C
阅读全文
清华大学操作系统(陈渝,向勇)课程笔记——(八)进程
摘要:主要内容 1进程(PROCESS)描述 2进程状态(State) 3线程(THREAD) 4进程间通信(INTER-PROCESS COMMUNICATION) 5进程互斥与同步 6死锁(DEADLOCK) 1进程描述 进程定义 进程的组成 进程的特点 进程控制结构 进程定义:一个具有一定独立功能的
阅读全文
清华大学操作系统(陈渝,向勇)课程笔记——(七)置换算法
摘要:主要内容 页面置换算法 功能与目标 局部页面置换算法 最优页面置换算法(OPT,optimal) 先进先出算法(FIFO) 最近最久未使用算法(LRU,Least Recently Used) 时钟页面置换算法(Clock) 最不常用算法(LFU,Least Frequently Used) Bel
阅读全文
清华大学操作系统(陈渝,向勇)课程笔记(六)——虚拟内存
摘要:主要内容 起因 覆盖技术 交换技术 虚存技术 目标 程序局部性原理 基本概念 基本特征 虚拟页式内存管理 起因 程序规模的增长速度远远大于存储器容量的增长速度。因此要想一些办法,让更多的程序跑在有限的内存里面。 理想中的存储器 更大,更快,更便宜的非易失性存储器 实际中的存储器 在计算机体系结构中我
阅读全文
清华大学操作系统(陈渝,向勇)课程笔记(五)——非连续内存分配
摘要:非连续内存分配 概述:为什么需要非连续内存? 从上一节介绍的连续分配内存方法中,我们可以发现,无论采用什么连续内存分配方法,都会带来一些无法避免的问题。 连续内存分配的缺点 分配给一个程序的物理内存是连续的 内存利用率较低 有外碎片、内碎片的问题 如果采用非连续的内存分配方法,能不能改善这些问题呢?
阅读全文
清华大学操作系统(陈渝,向勇)课程笔记(四)——连续内存分配
摘要:主要内容 连续内存分配 内存碎片问题 分区的动态分配 第一适配 最佳适配 最差适配 压缩式碎片整理 交换式碎片整理 内存碎片问题 内存碎片: 内存中无法进一步利用的内存空间。 碎片分类 外碎片:在分配单元之间未使用的内存 内碎片:在分配单元内部未使用的内存 我们想有一种比较简单有效的方法,尽量地减少
阅读全文
清华大学操作系统(陈渝,向勇)课程笔记(三)——内存分层体系和地址空间
摘要:主要内容 计算机体系结构/内存分层体系 地址空间&地址生成 计算机体系结构/内存分层体系 计算机体系结构 计算机硬件体系结构主要包含三大块内容: CPU:完成对程序或软件执行的控制。 内存:防止程序执行的代码和处理的数据。 外部设备:配合程序发挥作用。 内存分层体系 根据CPU访问数据所处位置的不同
阅读全文
清华大学操作系统(陈渝,向勇)课程笔记及补充(二)——操作系统的启动,中断,异常和系统调用
摘要:主要内容 启动 计算机体系结构概述 计算机内存和硬盘布局 开机顺序 中断、异常和系统调用 背景 中断、异常和系统调用相比较 中断和异常处理机制 系统调用的概念 系统调用的实现 程序调用与系统调用的不同之处 开销 操作系统的启动 操作系统启动主要和三部分有关:CPU,存储,I/O。操作系统的启动需要这
阅读全文
清华大学操作系统(陈渝,向勇)课程笔记(一)——概述
摘要:本课程涉及的主要方面 基本概念及原理 操作系统介绍 中断及系统调用 内存管理 进程及线程 调度 同步 文件系统 I/O子系统 什么是操作系统 我们很难对操作系统下一个完整,精确的定义,但是我们可以通过分析操作系统的在计算机工作时起的作用,来认识操作系统究竟是什么? 1. 从用户角度上,操作系统是一个
阅读全文
二叉搜索树
摘要:二叉搜索树介绍 二叉搜索树(Binary Search Tree,简称BST),又叫二叉排序树,二叉查找树,是一种特殊的树型结构,它有如下特点。 任一节点的左(右)子树中,所有节点(若存在)均不大于(不小于)r。我们把这种特点叫做顺序性。 二叉搜索树的数据结构: 1 struct node 2 {
阅读全文