
操作系统
原理与代码其实同样重要,本专栏适合考研党以及那些爱好Linux的玩家。
莫余
无论如何,都要去试一试,哪怕不能证明我可以!
展开
-
【Rufus】Rufus制作系统盘时,分区类型 和 文件系统怎么选择?
Rufus制作系统盘时,分区类型 和 文件系统怎么选择?原创 2023-03-06 23:16:51 · 7168 阅读 · 0 评论 -
可变分区分配方案
可变分区分配方式当收回主存时,应检查是否有与归还区相邻的空闲区,若有,则应合并成一个空闲区。有上邻空闲区只修改上邻空闲区长度(为收回的空闲区长度与原上邻区长度之和)即可有下邻空闲区改记录这个下邻空闲区记录的地址为收回空闲区的地址,长度为下邻空闲区的长度和收回空闲区的长度即可既有上邻又有下邻空闲区修改记录上邻区记录的长度(为上邻区长度、下邻区长度和收回区长度之和),再把下邻区记录的标志位改为空即可。减1既无上邻又无下邻空闲区找一个标志位为空的记录,记下该回收区的起始地址和长度,且改写相应的标原创 2021-01-04 23:37:34 · 1420 阅读 · 0 评论 -
操作系统 『资源分配图化简』
资源分配图申请边:由进程到资源类;分配边:由资源实例到进程。进程:如下图资源:如下图简化方法如下:在资源分配图中找出一个既不阻塞又非独立的进程结点Pi,在顺利的情况下运行完毕,释放其占有的全部资源。由于释放了资源,这样能使其它被阻塞的进程获得资源继续运行。在经过一系列简化后若能消去图中的所有的边,使所有进程结点都孤立,则称该图是可完全简化的,反之是不可完全简化的。死锁定理S状态为死锁状态的充分必要条件是当且仅当S状态的资源分配图是不可完全简化的。...原创 2021-01-04 20:40:06 · 3567 阅读 · 0 评论 -
操作系统 『死 锁』
死锁死锁(Deadlock): 指进程之间无休止地互相等待!饥饿(Starvation):指一个进程无休止地等待!产生死锁的原因产生死锁的必要条件处理死锁的基本方法原创 2021-01-04 17:50:13 · 211 阅读 · 0 评论 -
操作系统中的『银行家算法(避免死锁)』
银行家算法中的数据结构需求矩阵Need。这也是一个n*m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程 i 还需要 Rj 类资源K个,方能完成其任务。上述三个矩阵间存在下述关系:Need[i,j]=Max[i,j]-Allocation[i,j]银行家算法的步骤(判断是否为安全状态)设Request i是进程Pi的请求向量,如果Requesti [j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:计算Need矩阵计算原创 2021-01-04 17:49:46 · 1952 阅读 · 2 评论 -
操作系统中的『访存次数』
页式存储:(2次)第一次,访问内存中的页表,利用逻辑地址中的页号查找到物理块号,与逻辑地址中的页内偏移拼接形成物理地址;第二次:得到物理地址后,再一次访问内存,存取指令或者数据。段式存储:2次(同上)段页式存储:(3次)第一次:访问内存中的段表,查到页表的起始地址第二次:访问内存中的页表,找到页帧号,形成物理地址第三次:得到物理地址后,再一次访问内存,存取指令或者数据多级页表若页表划分为N级,则需要访问内存N+1次。若系统有快表,则在快表命中时,只需访问1次内存即可。引入快表:因为把原创 2021-01-04 11:00:28 · 8237 阅读 · 5 评论 -
操作系统『内碎片和外碎片』,你必须知道这些
【外部碎片】外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。外部碎片是出于任何已分配区域或页面外部的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。多道可变连续分配只有外部碎片。【内部碎片】内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;内部碎片是处于区域内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存原创 2021-01-04 00:21:10 · 12208 阅读 · 0 评论 -
操作系统 『动态(可变)分区分配』
动态(可变)分区分配动态创建分区:在装入程序时按其初始要求分配;在其执行过程中通过系统调用进行分配或改变分区大小。优点:没有内碎片。缺点:有外碎片;“逻辑地址>限长寄存器值”时,形成一个“地址越界”的程序性中断事件地址转换公式:绝对地址=基址寄存器值+逻辑地址分区分配中的数据结构空闲分区表:记录每个空闲分区的情况。每个空闲分区占一个表目,表目中包括分区序号、分区始址及分区的大小等数据项。空闲分区链:分区分配算法(基于顺序搜索)首次适应算法FF(First Fit):将地址最小原创 2021-01-04 00:18:54 · 3199 阅读 · 0 评论 -
操作系统『FAT表的计算』
FAT表占用存储空间计算:两个公式:( 簇优先 )软(硬)盘容量 / 盘块大小 = 盘块个数 = 表项个数表项个数 * 表项所占字节数 = FAT所占空间表项所占字节数 为半个字节的整数倍原创 2021-01-04 00:18:02 · 13504 阅读 · 2 评论 -
操作系统 『连续分配存储管理方式』
连续分配存储管理方式连续分配方式,是指为一个用户程序分配一个连续的内存空间。单一连续分配内存分为两个区域:系统区,用户区。应用程序装入到用户区,可使用用户区全部空间。最简单,适用于单用户、单任务的OS。优点:易于管理。缺点:对要求内存空间少的程序,造成内存浪费;程序全部装入,很少使用的程序部分也占用内存。固定分区分配系统提前把内存分为一些大小相等或不等的分区(partition),每个进程占用一个分区。操作系统占用其中一个分区。划分分区的方法分区大小相等:只适合于多个相同原创 2021-01-03 23:40:20 · 1155 阅读 · 0 评论 -
操作系统『通道技术』,点进看看吧
通道技术为了获得CPU最高与外设的并行能力,引入了通道结构。通道技术又被称为I / O处理机。作用是:通道技术实现了I/O系统的独立性和各个部件的并行性。(可以理解为不同的CPU主存可以通过不同的通道,执行不同的通道指令,控制控制器执行不同操作)通道是一种通过执行通道程序管理I/O操作的控制器,它使主机(CPU和内存)与I/O操作之间达到更高的并行程度。由于它的任务是管理实现输入/输出操作,提供一种传送通道,所以将这种部件称作“通道”。CPU把数据传输功能下放给通道,这样,通道与CPU分时使用内存(原创 2021-01-03 23:20:56 · 12975 阅读 · 4 评论 -
操作系统『软链接与硬链接』
硬链接(hard link)可以将它理解为一个 “指向原始文件 inode 的指针”,系统不为它分配独立的 inode 和 文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的 innode 连接数就会增加 1 ; 而且只有当该文件的 inode 连接数为 0 时,才算彻底被将它删除。因此即便删除原始文件,依然可以通过硬链接文件来访问。需要注意的是,我们不能跨分区对文件进行链接。(我第一次看硬链接的时候,满脸都是问号,大家不要纠结概念,看下面图。)硬链接是一个指原创 2021-01-03 22:52:44 · 1232 阅读 · 0 评论 -
操作系统『位示图及磁盘地址映射』,点进看看吧
位示图用每1位表示1个磁盘块的使用情况,一个字表示多少位由字长决定题目:某文件管理系统在磁盘上建立了位示图(bitmap) ,记录磁盘的使用情况。若计算机系统的字长为 32 位,磁盘的容量为 300GB ,物理块的大小为4MB ,那么位示图的大小需要( )个字。磁盘容量为300GB,物理块大小4MB,则磁盘共3001024/4=751024个物理块,位示图用每1位表示1个磁盘块的使用情况,1个字是32位,所以1个字可以表示32块物理块使用情况,那么需要75*1024/32=2400个字...原创 2021-01-03 22:34:24 · 3981 阅读 · 0 评论 -
教你这么理解 『假脱机打印机系统』
设备的分类独占式设备共享使用设备虚拟设备(以spooling使用的外部设备)操作系统发展中的脱机输入输出方式,它的目的是解决速度不匹配问题;假脱机是将独占设备共享组成输入、输出井:在磁盘上开辟的两个存储空间,输入井用于收容I/O设备输入的数据,输出井用于收容用户程序输出的数据。输入、输出缓冲区:内存开辟的两个缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再送到输入井。输出缓冲区用于暂存从输出井送来的数据,以后再送到输出设备。(结合图看)输入、输出进程:输入进程将用户要求的数据从原创 2020-12-15 17:18:15 · 3274 阅读 · 1 评论 -
操作系统之 页面替换算法(巧记NRU)
页面替换算法OPT算法https://blog.youkuaiyun.com/qq_44824148/article/details/110707011FIFO算法https://blog.youkuaiyun.com/qq_44824148/article/details/110709137LRU算法https://blog.youkuaiyun.com/qq_44824148/article/details/110713095Clock算法(NRU算法)https://blog.youkuaiyun.com/qq_44824148/a原创 2020-12-05 20:43:09 · 1166 阅读 · 2 评论 -
页面置换算法之 改进型Clock算法
改进型Clock算法由 访问位A 和 修改位M 可以组合成下面四种类型的页面:1类(A=0, M=0):表示该页最近既未被访问,又未被修改,是最佳淘汰页。2类(A=0, M=1):表示该页最近未被访问,但已被修改,并不是很好的淘汰页。3类(A=1, M=0):最近已被访问, 但未被修改,该页有可能再被访问。4类(A=1, M=1):最近已被访问且被修改,该页可能再被访问。执行过程:查找00,有,淘汰,算法结束!未找到,下一步;查找01,有,淘汰,算法结束!未找到,下一步;(在查找过程原创 2020-12-05 20:37:38 · 8409 阅读 · 2 评论 -
页面置换算法之 NRU算法
时钟(CLOCK)置换算法产生原因LRU算法的性能接近于OPT,但是实现起来比较困难,且开销大;FIFO算法实现简单,但性能差。原理简单的CLOCK算法是给每一帧关联一个附加位,称为使用位。当某一页首次装入主存时,该帧的使用位设置为1;当该页随后再被访问到时,它的使用位置为0。对于页替换算法,用于替换的候选帧集合看做一个循环缓冲区,并且有一个指针与之相关联。当某一页被替换时,该指针被设置成指向缓冲区中的下一帧。当需要替换一页时,操作系统扫描缓冲区,以查找使用位被置为0的一帧。每当遇到一个使用位为1原创 2020-12-05 20:30:13 · 15309 阅读 · 5 评论 -
页面置换算法之 LRU算法
最近最久未使用(LRU)算法基本思想:利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。所以,这种算法的实质是:当需要淘汰一个页面时,总是选择在最近一段时间内最久不用的页面予以淘汰。 即淘汰最近最长时间未访问过的页面。(往前看)LRU置换算法的硬件支持寄存器为每个在内存中的页面配置一个移位寄存器,用来记录某进程在内存中各页的使用情况。移位寄存器表示为R=Rn-1Rn-2Rn-3…R2R1R0当进原创 2020-12-05 20:05:22 · 10699 阅读 · 2 评论 -
页面置换算法之 FIFO算法
先进先出置换算法(FIFO)最简单的页面置换算法,淘汰最先调入的。实现:队列依据: 先进入的可能已经使用完毕。基本思想:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。理由:最早调入主存的页面不再被使用的可能性最大。 即优先淘汰最早进入内存的页面。(往前看)说明:该算法的出发点是最早调入内存的页面,其不再被访问的可能性会大一些。该算法实现比较简单,对具有线性顺序访问的程序比较合适,而对其他情况效率不高。因为经常被访问的页面,往往在内存中停留最久,原创 2020-12-05 19:23:26 · 3520 阅读 · 0 评论 -
页面置换算法之 OPT算法
最佳置换算法(OPT)(理想置换算法)最佳置换算法是由 Belady 于1966年提出的一种理论上的算法。其所选择的被淘汰页面,将是以后永不使用的, 或许是在最长(未来)时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。从 主存 中移出永远不再需要的页面;如无这样的页面存在,则选择最长时间不需要访问的页面。这样可以保证获得最低的缺页率。 即被淘汰页面是以后永不使用或最长时间内不再访问的页面。(往后看)例题如下:物理页面232152453252原创 2020-12-05 18:49:41 · 8193 阅读 · 4 评论 -
Linux 多种形式 实现两个进程之间互斥访问临界资源
定义信号量并且赋初值为1:mutexid=semget(IPC_PRIVATE,1,0666|IPC_CREAT);semctl(mutexid,0,SETVAL,1);形式1#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>#in原创 2020-12-03 23:41:39 · 719 阅读 · 0 评论 -
解决Linux报错:对‘pthread_join(create)’未定义的引用
由于pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a,所以在使用pthread_create创建线程时,在编译中要加 -lpthread 参数:例如:gcc -lpthread fork1.c -o fork1原创 2020-11-24 17:26:05 · 1545 阅读 · 2 评论 -
VMware报错:该虚拟机似乎正在使用中。 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。
原因主要是因为虚拟机没有正常关闭所导致的解决方法一找到虚拟机的安装目录将以 .lck 结尾的文件重命名,比如在它们后面加上 _backup,这样问题就解决了解决方法二找到虚拟机的安装目录将以 .lck 结尾的文件直接删除...原创 2020-11-15 15:59:34 · 274 阅读 · 0 评论 -
操作系统之 死锁
死锁定义产生原因处理策略死锁预防死锁避免死锁检测和解除原创 2020-11-15 15:23:49 · 169 阅读 · 0 评论 -
Linux命令之 find与grep的区别(仅需一篇,彻底理清)
find基本上 就相当于 linux下的 “搜索” , 相当于windows下的搜索功能! 它是用来搜索文件的而grep则是用来搜索文本的, 用来在standard input或文件内部的内容中, 来搜索 文字 内容 的!或者说, 因为这两个都是 “搜索” "查找"的相关命令, 所以还是容易混淆的, 但是记住:grep是用来查找文字内容的, 而find是用来查找文件的. 这样就清晰了!...原创 2020-11-07 08:42:06 · 6988 阅读 · 1 评论 -
Linux文件类型详解 (几种简单文件类型)
在Linux中一切都是文件普通文件一般为灰色字体,绿色字体的是可执行文件,红色字体的是压缩文件。文件属性文件类型-普通文件,即 filed目录文件b设备文件(block device),如:硬盘c字符设备文件(character device)l链接文件(symbolic link),又称软链接文件p管道文件(pipe)s套接字文件(socket),用于实现两个进程进行通信文件的权限:r 表明该文件具有可读权限,若该位置为原创 2020-11-04 18:13:25 · 256 阅读 · 0 评论 -
关于调度的那几个时间,你懂了没?
如有不对,还请各位大佬批评指正!!!提交时间作业进入就绪队列的时间一般情况下,从题目中已知运行时间作业占用CPU的时间一般情况下,从题目中已知开始时间被CPU开始调度的时间一般情况下,从题目中已知(若没有,则按照最早的提交时间来计算)等待时间从就绪到执行所等待的时间衡量一个算法的优劣,仅需要简单地考察等待时间等待时间 = 上n个的运行时间 -(提交时间 - 第一个作业的提交时间)完成时间释放CPU的时间完成时间 = 开始时间 + 运行时间周转时间周转原创 2020-10-27 10:06:21 · 1792 阅读 · 0 评论 -
进程与线程,原来是这样的真实关系!!!
引入 进程 的目的:使多个程序能并发执行,提高资源利用率和系统吞吐量。引入 线程 的目的:减少程序在并发执行时所付出的时空开销,使操作系统具有更好的并发性。线程:进程中一个相对独立的执行流。进程与线程:进程是资源分配单位线程是CPU调度单位线程只拥有必不可少的资源,如:线程状态、寄存器上下文和栈同样具有就绪、阻塞和执行三种基本状态进程:其它资源分配单位(存储器、文件、IO等)。多线程优点:切换速度快(地址空间不变)系统开销小通讯容易(共享数据空间)有效改善多处理机(原创 2020-10-24 23:08:58 · 250 阅读 · 0 评论 -
Linux命令之 关机(系统的关机、重启)
关闭系统shutdown -h now #关闭系统shutdown -h 21:30 #21:30关机shutdown -h +10 #十分钟后关机init 0 #关闭系统telinit 0 #关闭系统系统的重启shutdown -r now #重启reboot #重启注销logout #注销shutdown -h #休眠原创 2020-10-23 18:00:24 · 154 阅读 · 0 评论 -
Linux命令之 显示系统日期
cal 2020 #显示2020年的日历表下面两个命令必须在管理员用户下才能使用date 102410242020.00 #设置日期和时间 - 月日时分年.秒clock -w #将时间保存到BIOS原创 2020-10-22 00:06:15 · 372 阅读 · 0 评论 -
一秒开终端,centos7设置终端快捷键(附截图)
1.在设置中找 “键盘”2.点击“快捷键”3.选择自定义快捷键,点击“+”,输入设置名称:Terminal命令:/usr/bin/gnome-terminal4.点击禁用,按下自己想用的快捷键即可原创 2020-10-10 10:10:45 · 762 阅读 · 0 评论 -
英语不好,也能让你看懂man手册
首先介绍一下Linux 的帮助文档:可使用 man 、help、info命令man手册分类:英文中文Executable programs or shell commands可执行程序或shell命令System calls (functions provided by the kernel)系统调用Library calls (functions within program libraries)库调用Special files (usually found原创 2020-10-10 09:43:55 · 320 阅读 · 0 评论 -
win10+Ubuntu双系统如何修改密码以及彻底删除Ubuntu系统恢复磁盘,全网最全的图文教程(按此步骤走无需硬盘备份)
唉,Ubuntu从安装后彻底删除,在我的印象里,这个Ubuntu好像对我来说,仅仅是简单的敲了几个命令。其实本来并没有删除的打算,只是忘记了普通用户的密码。说到这,先简单介绍两种方法修改密码:修改Ubuntu系统用户密码第一种方法:重启Ubuntu系统进入GRUB界面,进入方法可能会根据电脑机型的不同而不同。开机时,点击一下ESC,点击多下会进入GRUB命令行界面,我的电脑正是这么进去的,型号为DELL-G3-3597还有几种方法,开机时,长按shift;点击一下e点击时间为刚出现进度条的时原创 2020-10-01 10:11:57 · 1249 阅读 · 0 评论 -
微内核和强内核,你了解吗?
微内核:使内核尽量小,系统服务通过消息传递来联系。将内核模块化设计,大部分内核都作为单独的进程,相互之间通过消息传递进行通信。微内核的功能类似于一个消息的转发站,优点是有助于内核功能的扩展和模块间的隔离,单个模块的bug不影响整个内核,只要杀掉出问题的进程就可以了,内核稳定性高,缺点就是进程间通信肯定会影响内核的效率。优点:开放、灵活、易扩充单个模块的bug不影响整个内核强内核:(又称宏内核或单内核)包含系统服务的所有模块,模块间通过函数调用联系。是操作系统内核架构的一种,简单理解,就原创 2020-09-23 22:00:00 · 1297 阅读 · 0 评论