![](https://img-blog.csdnimg.cn/2b288190bb20470a8407f09267562c80.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
计算机操作系统
文章平均质量分 83
本专栏为自己学习操作系统过程中的笔记,主要参考清华陈渝老师的操作系统慕课,不做商业用途,转载或者复制请注明出处为“清华陈渝老师慕课”。
Dragon Fly
A blessing in disguice
展开
-
二十五、文件系统
文章目录1、基本概念1、基本概念\qquad文件系统: 一种用于永久性存储的系统抽象;\qquad文件系统的功能包括以下三个: 分配文件磁盘空间,包括管理文件块,管理空闲空间和分配算法 管理文件集合,包括定位文件及其内容,命名:通过名字找到文件的接口,最常见:分层文件系统和文件系统类型(组织文件的不同方式) 提供遍历及特征,包括保护:分层来保护数据安全;可靠性/持久性:保持文件的持久,即使发生崩溃,媒体错误,攻击等\qquad文件: 文件系统中一个单元的相关数据在操作系统中的抽象;\qq原创 2021-11-01 21:05:23 · 93 阅读 · 0 评论 -
二十四、信号、管道、消息队列和共享内存
文章目录1、信号-signal2、管道-pipe3、消息队列-message queue4、共享内存-share memoryTHE END1、信号-signal\qquad信号是软件对中断通知事件的处理。\qquadExamples:SIGFPF,SIGKILL,SIGUSR1,SIGSTOP,SIGCONT\qquad软件接收到信号是会有以下几种处理方式:\qquadCatch:指定信号处理函数被调用\qquadIgnore:依靠操作系统默认操作,Example:Abort,memory,d原创 2021-10-27 23:16:00 · 204 阅读 · 0 评论 -
二十三、进程间通信概述
文章目录1、直接通信2、间接通信3、阻塞发送4、非阻塞发送THE END\qquad进程间通信简称叫IPC-Inter Process Communication,如下图所示,进程间通信又可以分为间接通信和直接通信两种。1、直接通信\qquad 进程必须正确地命名对方:Send(P,message):发送信息到进程P;Receive(Q,message):从进程Q接收消息。\qquad通信链路的属性:(1)自动建立链路;(2)一条链路恰好对应一对进程通信;(3)每对进程之间只有一个链接存在;(4)原创 2021-10-25 19:12:03 · 123 阅读 · 0 评论 -
二十二、死锁
文章目录1、死锁问题2、系统模型3、死锁特征4、死锁处理方式1、死锁问题\qquad首先以一个生活中的例子为例,如下图所示,假设有一座桥,而通过桥的通道只有一条。\qquad当桥的两侧都有车辆需要通过时,由于流量只能在一个方向,所以会发生谁也不能过桥的情况。这种情况与死锁的情形十分类似,如果发生死锁,可以通过一辆车倒退来解决问题(抢占资源和回滚),多数情况下发生死锁可能需要多辆和都一起倒退,这样就由可能导致桥的某一侧的车辆发生饥饿现象。\qquad死锁定义: 一组阻塞的进程持有一种资源等待获取另一原创 2021-10-22 22:28:49 · 205 阅读 · 1 评论 -
二十一、经典同步问题-哲学家就餐问题
文章目录1、哲学家就餐问题描述2、思路设计3、实现THE END1、哲学家就餐问题描述\qquad哲学家就餐问题是由Dijkstra在1965年提出的,5个哲学家围绕一张圆桌坐,桌子上放有5支叉子,每两个哲学家之间放一支;哲学家的动作包括思考和进餐,进餐时需要同时拿起他左边的叉子和右边的叉子,思考时则同时将两支叉子放回原处。问如何保证哲学家们的动作有序进行?如不出现有人永远不能拿到叉子。哲学家就餐问题的示意图如下图所示。\qquad设计原则:某个哲学家要么不拿叉子,要么拿两把叉子。S1:思考中..原创 2021-10-18 15:44:36 · 753 阅读 · 0 评论 -
二十、经典同步问题-读者写者问题
文章目录1、读者-写者问题2、哲学家就餐问题1、读者-写者问题\qquad动机: 共享数据的访问,假设有两种类型的使用者:一种为读者,不需要修改数据;另一种为写者,其会读取和修改数据。问题的约束包括: 允许在同一时间有多个读者,但在任何时候都只有一个写者;当没有写者时,读者才能访问数据;当没有读者和写者时,写者才能访问数据;在任何时候只能有一个线程可以操作共享变量;读者优先,若在读者前面有写者在排队等待,读者可以越过写者优先进行排队。\qquad设计算法需要用到的共享数据: 包括数据集,信号量(Cou原创 2021-10-18 11:43:21 · 168 阅读 · 0 评论 -
十九、信号量和管程
文章目录1、信号量-semaphore1.1 抽象数据类型1.2 信号量的属性1.3 两种类型的信号量1.4 使用信号量实现消费者问题1、信号量-semaphore1.1 抽象数据类型\qquad一个整型(sem),两个原子操作;\qquadP():sem减1,如果sem<0sem < 0sem<0,等待,否则继续;\qquadV():sem加1,如果sem≤0sem≤0sem≤0,唤醒一个等待的进程1.2 信号量的属性\qquad信号量是整数;\qquad信号量是被保护的原创 2021-10-11 21:03:10 · 172 阅读 · 0 评论 -
十八、同步
文章目录1、背景2、基本概念1、背景\qquad对于独立的进程/线程来说,其不和其他进程/线程共享资源或者状态,执行具有确定性和可重复性 ,其调度顺序是不重要的;对于合作进程/线程来说,他们的状态和资源在其他多个进程/线程中进行共享,其执行具有不确定性和不可重现性,这就导致了bug可能是间歇性发生的且很难找到。\qquad进程/线程之间的合作是必须的,通过合作具有共享资源,加速程序运行,和将程序进行模块化 的优点。无论多个线程的指令序列怎样交替执行,程序都必须正常工作,因为多线程程序具有不确定性和不可原创 2021-09-27 11:36:13 · 65 阅读 · 0 评论 -
十七、调度
文章目录1、背景介绍2、调度原则3、调度算法3.1 FCFS算法3.2 短任务优先-SPN3.3 最高响应比优先轮循算法1、背景介绍\qquadCPU调度: 指从就绪队列中挑选一个进程/线程作为CPU将要运行的下一个进程/线程;调度程序是一个挑选进程/线程的内核函数(通过一些调度策略)。在进程/线程生命周期的状态切换时会触发调度。\qquad内核运行调度程序的条件(满足一条即可): 一个程序从运行状态切换到等待状态;一个进程被终结了。调度程序必须等待事件结束(不可抢占);调度程序在中断被响应后执行,当原创 2021-09-22 09:52:44 · 156 阅读 · 0 评论 -
十六、进程控制
文章目录1、上下文(context)切换1、上下文(context)切换\qquad上下文切换指的是停止当前运行的进程(从运行状态改变为其他状态)并且调度其他进程(转变为运行状态)。必须在切换之前储存许多部分进程的上下文;必须能够在之后恢复他们,所以进程不能显示他曾经是被暂停过;必须快速(上下文转换非常频繁)。\qquad需要储存的上下文包括:寄存器(PC(程序计数器),SP(栈指针信息),…),CPU状态,…在某些情况下可能很费时,所以应该尽量避免。上下文切换的示意图如下图所示:上下文切换示意图原创 2021-09-14 10:40:00 · 121 阅读 · 0 评论 -
十五、线程
文章目录1、为什么使用线程2、线程的定义2.1 进程和线程的比较1、为什么使用线程\qquad由于进程之间的通信和共享数据操作复杂同时维护进程的系统开销较大,加上创建进程需要分配资源,建立PCB,撤销进程时需要回收资源,撤销PCB,进程切换时需要保存当前进程的状态信息等系列操作,促使提出一种新的实体,可以满足以下特性:(1) 实体之间可以并发地执行;(2) 实体之间共享想同的地址空间。 这种实体就是线程(Thread),线程可以并发地去执行同时线程之前可以共享想同的地址空间。2、线程的定义\qqua原创 2021-09-12 09:59:34 · 117 阅读 · 0 评论 -
十四、进程
文章目录1、进程的组成1.1 进程和程序的区别和联系2、进程的特点1、进程的组成\qquad一个进程应该包括:程序的代码;程序处理的数据;陈旭计数器中的值,指向下一条将运行的指令;一组通用的寄存器的当前值,堆、栈;一组系统资源(如打开的文件)。总之,进程博涵了正在运行的一个程序的所有的状态信息。1.1 进程和程序的区别和联系\qquad联系: 程序是产生进程的基础;程序的每一次运行构成不同的进程;进程是程序功能的体现;通过多次执行,一个程序可以对应多个进程;通过调用关系,一个进程可以包含多个程序。原创 2021-09-10 10:39:15 · 199 阅读 · 0 评论 -
十三、抖动问题
文章目录1、抖动2、抖动产生的原因3、抖动问题的改善THE END1、抖动\qquad如果分配给一个进程的物理页面太少,不能包含整个工作集,即常驻集⊂\subset⊂工作集,那么进程将会造成很多的缺页中断,需要频繁地在内存与外存之间替换页面,从而使进程的运行速度变得很慢,我们把这种状态称为“抖动”。2、抖动产生的原因\qquad虽则驻留内存进程数目的增加,分配给每个进程的物理页面数量不断减小,缺页率不断上升。所以OS要选择一个适当的进程数目和进程需要的帧数,以便在并发水平和缺页率之间达到一个平衡。原创 2021-09-03 10:05:28 · 155 阅读 · 0 评论 -
十二、全局置换算法
文章目录1、局部置换算法的问题2、工作集模型2.1 工作集2.2 常驻集1、局部置换算法的问题\qquad局部置换算法给每个程序分配固定的页帧数,但是一个程序在不同的运行阶段所需要的页帧数量可能大不相同,因此局部置换算法总是不会分配刚好的页帧数程序,总是会造成一定的页帧冗余或者页帧不足的情况。2、工作集模型\qquad之前介绍的各种页面置换算法,都是基于程序的局部性原理,若局部性原理不成立,那么各种页面置换算法就没有什么分别,也没有什么意义。例如:假设进程对逻辑页面的访问顺序是1,2,3,4,5,…原创 2021-09-01 10:05:57 · 549 阅读 · 0 评论 -
十一、Belady现象和LRU、FIFO、clock的比较
文章目录1、Belady现象2、LRU、FIFO和clock的比较THE END1、Belady现象\qquad在采用FIFO算法时,有时会出现分配的物理页面数增加,缺页率反而提高的异常现象\qquadBelady现象产生的原因: FIFO算法的置换特征与进程访问内存的动态特征时矛盾的,与置换算法的目标(即替换较少使用的页面)不一致的,因此,被他置换出去的页面并不一定是进程不会访问的。\qquad只有FIFO算法有Belady现象的缺陷,其他算法如LRU算法没有Belady算法这种缺陷,因为LRU算原创 2021-08-30 19:16:26 · 2784 阅读 · 1 评论 -
十、页面置换算法
文章目录1、功能与目标2、最优页面置换算法3、先进先出算法-FIFO4、最近最久未使用算法-Least Recently Used1、功能与目标\qquad功能: 当缺页中断发生,需要调入新的页面而内存已满时,选择内存当中哪个物理页面被置换。\qquad目标: 尽可能地减少页面的换金换出次数(即缺页中断的次数)。具体来说,把未来不再使用的或者短期内较少使用的页面换出,通常只能在局部性原理指导下依据过去的统计数据来进行预测。\qquad页面锁定(frame lock): 用于描述必须常驻内存的操作系统原创 2021-08-29 16:14:08 · 174 阅读 · 0 评论 -
九、虚拟内存技术
文章目录1、虚拟内存的起因2、覆盖技术3、交换技术4、虚存技术4.1 在页式或者段式内存管理实现虚存技术4.2 虚存技术的特征4.3 虚拟页式内存管理4.4 缺页中断处理4.5 虚存技术的性能1、虚拟内存的起因\qquad在程序运行过程之中,经常会出现内存不够用的情况,程序规模的增长速度远大于存储器规模的增长速度。我们理想之中的存储器是:更大,更快,更便宜的非易失性的存储器。但实际中的存储器的结构如下图所示:从上到下分别为寄存区,缓存,主存,磁盘,磁带。其中访问速度越开的内存里CPU越近,但是所具有的空原创 2021-08-26 11:41:48 · 379 阅读 · 0 评论 -
八、OS非连续内存分配
文章目录1、为什么要进行非连续内存分配2、两种硬件方案:分段和分页2.1 分段2.1.1 硬件分段寻址方案2.2 分页2.2.1 页帧-frame2.2.2 页-page2.2.3页寻址机制2.2.4页寻址机制的注意事项1、为什么要进行非连续内存分配\qquad非连续内存管理具有以下的优势:使得一个程序的物理地址空间是非连续的,可以更好地利用和管理内存,减少内存碎片,允许共享代码与数据,支持动态加载和和动态链接。但是非连续内存管理的管理本身的开销比较大,需要建立虚拟地址和物理地址之间的转换(可以通过硬件原创 2021-08-19 23:07:50 · 162 阅读 · 0 评论 -
七、OS连续内存分配
文章目录1、内存碎片问题2、分区的动态分配2.1 首次适配算法-first fit2.2 最优适配算法-best fit2.3 最差适配算法-worst fit3、压缩式碎片处理-compaction4、交换式碎片处理-swappingTHE END1、内存碎片问题\qquad空闲内存不能被使用,这些内存就称为内存碎片。内存碎片又可以分为外部碎片和内部碎片两种。其中,当给多个应用程序分配内存空间之后,在不同应用程序之间残留小块的内存空间,无法被利用,这些残留的内存空间就叫外部内存碎片。在已经分配给应用程原创 2021-08-15 23:11:26 · 155 阅读 · 0 评论 -
六、OS地址空间和地址生成
文章目录1、地址空间2、逻辑地址空间的生成3、逻辑地址如何对应到具体物理地址THE END1、地址空间\qquad地址空间分为物理地址空间和逻辑地址空间。其中物理地址空间指硬件支持的地址空间,包括主存(内存条)和磁盘;逻辑地址空间指一个运行的程序所拥有的内存范围。某一个应用程序的逻辑地址空间最终都需要落实到物理地址空间上面去。2、逻辑地址空间的生成\qquad从一个C程序开始,C程序之中的函数,变量的名字对应了自己的地址,是一种逻辑地址;将C语言编译成汇编语言,汇编语言中依然使用变量和函数名等来进原创 2021-08-15 22:05:05 · 271 阅读 · 0 评论 -
五、计算机体系结构及内存分层体系
文章目录1、计算机基本硬件结构2、内存的层次结构3、OS在内存管理的作用3、操作系统中管理内存的不同方法THE END1、计算机基本硬件结构\qquad计算机基本硬件包括CPU,内存和外设三部分,其中CPU中又包括运算器、寄存器、控制器,缓存和存储管理单元几部分组成。2、内存的层次结构\qquad内存的层次结构指的是CPU所要访问的指令或者数据所处的位置在何处,CPU访问数据按照速度从快到慢依次为:寄存器→cache(前面两个都位于CPU芯片内部,OS无法对其直接进行管理)→主存(物理内存,用来放原创 2021-08-13 23:18:19 · 445 阅读 · 0 评论 -
四、操作系统的启动,中断,异常和系统调用
文章目录1、启动2、操作系统与设备和程序交互2.1、系统调用2.2、异常2.3、中断THE END1、启动\qquad计算机通电之后,计算机会首先进行POST(加电自检),包括寻找显卡和执行BIOS。之后由BIOS将BootLoader加载到内存之中,再有BootLoader将硬盘中的OS系统加载到内存之中,然后计算机的控制权力转移到OS系统手中。2、操作系统与设备和程序交互\qquad操作系统包含三个interfaces,分别是面向外设通过中断和I/O进行处理;面向应用程序通过系统调用和异常来提原创 2021-08-13 18:21:51 · 88 阅读 · 0 评论 -
三、操作系统的结构
文章目录1、DOS操作系统2、UNIX操作系统3、微内核思想4、外核(Exokernel)思想5、虚拟机监控器(Virtual Mechain Monitor)\qquad介绍操作系统的结构是怎样一步一步发展演变的。1、DOS操作系统\qquadMS-DOS是微软开发的早期的一个操作系统,它是一个单体操作系统,使用汇编语言进行编写,是一个不分模块的单体内核。受制于当前的硬件条件,DOS操作系统很难作进一步的功能扩展和模块化设计。2、UNIX操作系统\qquad早起运行在用于科学计算的计算机之中,相原创 2021-08-12 22:38:57 · 488 阅读 · 0 评论 -
二、操作系统实例列举
文章目录1、引言2、UNIX BSD操作系统3、Linux操作系统4、Windows操作系统THE END1、引言\qquad操作系统的种类繁多,有面向桌面的操作系统(个人PC,办公室主机操作系统,etc);有面向服务器的操作系统,eg. 运行在数据中心(datacenter)中的操作系统,分析气象报告的操作系统;手机和移动终端运行的操作系统,eg.Android,IOS,harmonyOS,etc;工控领域运行的一系列操作系统。不同类型的操作系统来完成不同类型的需求,下面介绍一些经典操作系统的实例。原创 2021-08-12 21:57:56 · 2996 阅读 · 0 评论 -
一、计算机操作系统简介
文章目录1、什么是计算机操作系统2、操作系统的层次结构3、OS kernel的特征1、什么是计算机操作系统\qquad从用户角度,操作系统是一个控制软件,用户用操作系统来控制计算机里面的软件,管理应用程序的运行。\qquad从资源分配的角度,操作系统会限制不同的应用程序占用不同的资源。操作系统还会为应用程序提供各种各样的服务,如IO服务,声卡、网卡的访问。操作系统作为一个资源分配的分配器,进行资源管理,如CPU资源,内存资源,外设资源。协同应用程序在不同时刻能够公平地访问到不同的资源,实现资源的最大化原创 2021-07-28 22:34:31 · 276 阅读 · 0 评论