![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统学习
代码续发
这个作者很懒,什么都没留下…
展开
-
I/O软件层次介绍
2.设备驱动程序接口。原创 2023-11-09 09:40:32 · 79 阅读 · 0 评论 -
I/O控制器
I/O设备管理-机械部件(I/O硬件设备)+电子部件(I/O控制器)+接口(设备与控制器间通信媒介)原创 2023-11-09 08:39:22 · 64 阅读 · 0 评论 -
内存空间的扩充
在程序装入时,将很快会用到的程序装入内存,暂时用不到的部分留在外存 ——>程序执行时,访问信息不在内存时,由操作系统将信息从外存调入内存——>若内存空间不够,OS将内存中暂时用不到的信息换出到外存。采用离散分配的内存管理方式 ,由于虚拟内存的特点,需要在非连续(离散)分配存储管理的基础上增加请求调页/调段功能、页面/段置换功能。固定区(存放常驻内存,调入后到运行结束时才调出)+覆盖区(存放不常用段,需要时调入,不需要时调出内存)将程序分为多个段/模块,常用段常驻内存,不常用段在需要时调入内存。原创 2023-11-03 14:11:36 · 119 阅读 · 0 评论 -
页面分配策略
可变分配全部置换-先为每个进程分配一定数目的物理块+缺页时可选OS的空闲物理块,也可选其他进程的物理块置换(OS会保持一个空闲物理块队列,当进程缺页时,从空闲物理块中取出分配给该进程;可变分配局部置换-先为每个进程分配一定数目的物理块+缺页时只能选进程自己的物理块进行置换。固定分配局部置换-OS为每个进程分配一组固定数目的物理块,在进程运行期间不再改变+缺页时只能选进程自己的物理块进行置换;全局置换-缺页时可以将操作系统的空闲物理块分配给缺页进程,也可以将其他进程的物理块置换到外存再分配给缺页进程。原创 2023-11-03 14:10:29 · 81 阅读 · 0 评论 -
虚拟内存之页面置换算法
如果没有可用空闲内存块,淘汰访问位为0的页面,将其换出;如果访问位都是1,将其置为0,暂不换出,开始第二轮扫描时,淘汰访问位为0的页面。增加一个修改位,0-未被修改,1-已被修改。如果没有可用空闲内存块,淘汰页面中t值最大的页面,将其换出。只考虑到页面最近是否被访问,未考虑淘汰页面的状态(是否被修改)进行置换。如果没有可用空闲内存块,往右找最远的页面即是要被淘汰的页面,将其换出。如果有可用空闲内存块,缺页不必进行页面置换,直接调入内存即可。如果有可用空闲内存块,缺页不必进行页面置换,直接调入内存即可。原创 2023-10-30 13:28:02 · 197 阅读 · 0 评论 -
虚拟内存之请求分页管理
若内存中无空闲,则由页面置换算法选择淘汰一个页面,淘汰页面被修改过,写回外存,否则无需写回。淘汰内存块装所缺页面,更新页表项。查快表(未命中)——>查慢表(未调入内存)——>调页(调入的页面的表项直接加入快表)——>查快表(命中)——>访问目标内存单元。根据逻辑地址判断页面的状态——>不在内存中,产生一个缺页中断信号——>OS中的缺页中断处理程序处理中断。若内存中有空闲,则为进程直接分配一个空闲块装所缺页面,更新页表项。缺页进程阻塞——>阻塞队列中——>调页完成唤醒——>就绪队列中。原创 2023-10-30 13:20:19 · 117 阅读 · 0 评论 -
段页式管理方式
1.分页管理:内存空间利用率高,无外部碎片,只有少量页内碎片,以物理结构划分,不便于按逻辑方式实现信息共享和保护2.分段管理:为段长过大分配连续空间会很不方便,会产生外部碎片,以逻辑结构划分,便于按逻辑方式实现信息共享和保护。原创 2023-10-29 17:33:47 · 138 阅读 · 0 评论 -
基本分段存储管理方式
将进程地址空间按程序自身逻辑关系划分为若干个段,每个段都有段名,且从0开始编址逻辑地址=段号(段名)+段内地址(段内偏移量)程序中的段名会被翻译成对应段号,段内单元会被翻译成段内地址。原创 2023-10-26 20:56:13 · 97 阅读 · 0 评论 -
实现地址转换的硬件机构
若未命中(快表中无副本),需要访问内存中页表,通过基本地址变换得到物理地址,需要两次访存,相当于基本地址变换。快表-联想寄存器(TLB),一种访问速度比内存快很多的高速缓存,存放最近访问页表项的副本,可加速地址变换。有两次访问内存-第一次查页表(页号是否合法),第二次-访问目标内存单元(访问物理内存对应的内存单元)将整个页表项拆成多个小页表(二级页表),新生成一个总页表(一级页表)记录小页表的页号与块号。设置一个页表寄存器,存放页表在内存中的起始地址与页表长度。慢表-相对TLB,内存中的页表。原创 2023-10-26 20:03:55 · 627 阅读 · 0 评论 -
非连续分配管理方式-基本分页存储管理
非连续分配-可为用户进程分配分散的内存空间。原创 2023-10-24 21:06:08 · 111 阅读 · 0 评论 -
动态分区分配算法
每次都从低地址开始查找,找到第一个能满足大小的空闲分区。原创 2023-10-24 11:16:06 · 94 阅读 · 0 评论 -
内存空间的分配与回收
原理-将内存分为系统区和用户区。系统区-位于内存低地址,存放操作系统数据;用户区-位于内存高地址,存放用户进程数据。内存中只能有一道用户程序,用户程序独占整个用户区空间。特点-整个分配,无外部碎片(未被分配的内存空间,处于空闲)。介只适用于单用户、单任务操作系统,存储器利用率低。原创 2023-10-23 20:54:51 · 94 阅读 · 0 评论 -
内存管理的相关概念
2.采用重定位寄存器(存放进程起始物理地址)和界地址寄存器(存入进程最大逻辑地址)进行越界检查。1.设置一对上、下限寄存器,分别存放上、下限地址,进程访问某地址时,CPU会检查是否越界。2.可重定位装入-装入程序负责地址转换(多道批处理阶段)1.绝对装入-编译器负责地址转换(单道批处理阶段)保证各进程在各自存储空间内运行互不干扰。3.动态运行时装入-运行时进行。实现逻辑地址和物理地址的转换。原创 2023-10-23 08:40:44 · 94 阅读 · 0 评论 -
内存的基础知识
程序真正执行时才装入内存,增加一个重定位寄存器(存放装入模块的起始位置),通过重定位寄存器实现地址转换。允许程序在内存中发生移动,可将程序分配到不连续的存储区中,根据动态需要分配内存。指令此时的地址是逻辑地址(相对地址),即相对于进程的起始地址而言的地址。要求分配的地址空间连续,分配其要求的全部内存空间,一次全部装入内存;3.需要进行地址转换(相对地址——>物理地址)才能装入内存中。1K(千)=2的10次方 1M(兆)=2的20次方。在编译时将逻辑地址——>绝对地址(物理地址)原创 2023-10-21 16:13:59 · 94 阅读 · 0 评论 -
处理死锁策略2
但若最终不能消除所有边,此时发生了死锁,还连着边的进程就是处于死锁状态的进程。安全序列-能使每个进程才能顺利完成的分配资源的序列,可有多种,此时系统处于安全状态下,系统一定不会发生死锁。找既不阻塞又非孤点的进程(非死锁进程),消去它所有的请求边和分配边,使之成为孤立的结点。进程回退法-让一个/多个死锁进程回退到足以避免死锁的地步,要求记录进程历史信息。不安全状态-找不到一个安全序列时,系统处于不安全状态下,系统可能会发生死锁。关系-导致不安全状态的原因很多,但发生死锁时系统是处于不安全状态下的。原创 2023-10-14 15:28:49 · 101 阅读 · 0 评论 -
处理死锁的策略1-预防死锁
顺序资源分配法-给系统资源编号,进程必须按编号的顺序请求资源,可实现同类资源(编号相同的资源)一次性申请完,不会产生循环等待现象。请求和保持条件-进程已经保持了资源,但同时又请求新的资源,该资源被其他进程占有,进程进入阻塞,但会保持已有资源不放。1.方法一:当某个进程请求新资源不能满足时,它必须立即释放保持的所有资源,某些资源即使未用完也要主动释放。循环等待条件-进程资源的循环等待链,链中每个进程已获得的资源同时被下一个进程所请求。静态分配-进程在运行前一次申请完它所需的全部资源,否则不运行。原创 2023-10-14 11:47:03 · 116 阅读 · 0 评论 -
管程的介绍
共享数据结构说明、对数据结构操作的过程/函数、初始化共享数据、管程名;信号量机制实现同步存在编写程序困难,易出错问题。类似类的结构(数据对象+相关操作),封装的思想。只能通过调用管程中的方法访问共享数据。每次只允许一个进程在管程中执行某函数。是一种实现进程互斥与同步的机制,2.Java中类似管程的机制。1.生产者消费者问题。原创 2023-10-14 11:10:10 · 130 阅读 · 0 评论 -
进程同步互斥问题
生产者生产产品——>缓冲区(供两者共享使用)——>消费者取出产品使用;缓冲区是临界资源,各进程必须互斥访问,避免数据覆盖问题。两组并发进程共享一个文件,可允许多个读者对文件进行读-不互斥,但有仅只允许一个写者对文件进行写-互斥。实现互斥的P操作-P(mutex)一定要在实现同步的P操作-P(empty)之后,否则会发生死锁。实现互斥的P操作-P(mutex)一定要在实现同步的P操作-P(empty)之后,否则会发生死锁。每个哲学家进程需同时持有多个临界资源问题。二、多生产者-多消费者问题。原创 2023-10-14 10:36:06 · 112 阅读 · 0 评论 -
信号量机制的应用
一个信号量对应一种资源,信号量的值表示这种资源的剩余数量,P(S)-申请一个资源S,为0时阻塞等待;V(S)-释放一个资源S,并会唤醒(wake up原语)一个等待该资源的进程。2.设置同步信号量S,表示某种资源,初值为0。一个进程的使用需要另一个进程的产生。2.设置互斥信号量mutex,表示进入临界区的名额数,初值为1。不同临界资源需要设置不同互斥信号量,且P、V操作必须成对出现。3.前操作后执行V(S),实现释放一个资源。4.后操作前执行P(S),才能申请S资源。同理可实现进程的前驱关系。原创 2023-10-09 09:16:11 · 36 阅读 · 0 评论 -
互斥锁与信号量机制
具体进程操作:资源分配完毕,其它进程申请时会被加入等待队列中,当其它进程使用完该资源执行signal指令后,等待队列中的进程会通过wake up唤醒原语使其退出等待队列进入就绪状态。具体进程操作-wait进入区,申请资源,数量减1——>使用,临界区,访问资源——>signal退出区,释放资源,数量加1。适用于多处理器系统。2.操作:通过acquire(获得锁)与release(释放锁)方法对锁进行操作,方法的执行必须是原子操作。一对原语-wait(信号量)+signal(信号量),简写为P(S)、V(S)原创 2023-10-06 19:59:53 · 124 阅读 · 0 评论 -
进程互斥的实现
进程实现过程:布尔型数组置为true(表达意愿)——>记录优先进程号变量置为对方进程号(表达谦让)——>检查对方意愿——>使用完后改意愿为false。原理:利用开/关中断指令实现-关中断(不允许当前进程被中断)——>临界区——>开中断(当前进程访问完临界区),两个进程不可能同时访问临界区。算法思想:通过布尔型数组标记各进程想进入临界区的意愿,先检查另一进程意愿,再表达自己的意愿-true则对该资源上锁,使用结束对资源解锁。缺点:只能交替轮流访问,即必须要等到上一个进程使用完,该进程才有机会获得使用权限。原创 2023-09-30 19:03:27 · 130 阅读 · 0 评论 -
进程同步与互斥
2.遵循的原则:(临界区)空闲让(进程)进,(有进程)忙则(其它进程)等待,(请求访问进程)有限(时间内)等待(不会饥饿),(不能进入临界区的进程)让权(释放处理机)等待。3.互斥:间接制约关系,多进程访问同一临界资源时需要按照某次序访问而产生的制约关系。4.进程互斥:一个进程访问临界资源时,其它进程必须等待,直至该进程访问结束。2.临界资源:一个时间段只能有一个进程访问的资源,对其访问必须互斥进行。1.进程异步:各进程以各自独立的、不可预知的速度向前推进。临界区:也称临界段,是访问临界资源的代码。原创 2023-10-05 09:32:12 · 116 阅读 · 0 评论 -
死锁的介绍
4.循环等待条件:进程资源的循环等待链-链中每个进程已获得的资源同时被下一个进程所请求。2.不可剥夺条件:进程获得的资源在未使用完前,不能被其它进程强行夺走,只能主动释放。3.死锁的检测和解除:允许死锁发生,OS检测死锁发生并采取措施解除死锁。3.请求和保持条件:在已保持至少一个资源的同时,又去请求其它资源。1.死锁:互相等待对方手中资源,各进程都阻塞,无法向前推进的现象。2.饥饿:由于长期得不到想要的资源,导致某进程无法向前推进的现象。注:发生死锁时一定有循环等待,但发生循环等待时未必死锁。原创 2023-09-30 19:35:50 · 26 阅读 · 0 评论 -
调度算法3-多级队列调度
1.队列间可采用固定优先级,或时间片划分固定优先级,按照优先级先高后低原则调度进程。系统中按进程类型设置多个队列,进程创建成功后插入某个队列中。2.按照优先级高低为不同队列划分由大到小的时间片。用于进程调度,为不同优先级的进程设置不同队列。3.对各个队列采用不同调度策略。原创 2023-09-30 11:22:19 · 270 阅读 · 0 评论 -
第二章单元补充
4.进程在时间片结束时,或是出现更高级别的进程时只是就绪,而不是撤销,因为这时只是处理机的资源被其它进程剥夺;线程无自己独立的地址空间,而是共享所属进程的空间,并且通过共享空间进行通信。2.不可能存在所有进程均属于就绪态,因为这就意味着CPU未被使用,那么就会至少有一个进程得到CPU资源,即至少会有一个进程处于运行态。引入线程后,线程是系统调度的基本单位,而进程则只是资源调度的基本单位。9.阻塞进程在获得资源后,只能由阻塞态——>就绪态,而不能实现直接转化为运行态,因为进程需要等待再次被系统调度。原创 2023-09-29 18:30:33 · 78 阅读 · 0 评论 -
调度算法2-适用于交互式系统
既可用于作业调度(从外存的后备队列中选择),也可用于进程调度(从内存中的就绪队列中选择),还可进行I/O调度。3.适用对象:只用于进程调度,因为只有作业放入内存建立了相应进程后,才能被分配处理机时间片。动态优先级-创建进程时初始,此后会根据情况动态调整优先级(等待时间越长,提升优先级)。可通过优先级区分紧急程度,调整调度顺序,但同时也会导致低优先级进程发生饥饿现象。为每个作业/进程设置优先级,调度时选择优先级最高的作业/进程。抢占式算法-新进程处于优先级更高的队列中,会抢占处理机。原创 2023-09-30 10:43:21 · 212 阅读 · 0 评论 -
调度算法1
用于进程调度时,短进程优先算法-SPF(Shortest Process First)用于进程调度时,短进程优先算法-SPF(Shortest Process First)已到达的,最短的作业/进程优先得到服务(所谓“最短”,指要求服务时间最短)非抢占式的算法:只有当前运行作业/进程主动放弃处理机时,才需调度。调度前计算各作业/进程的响应比,选择响应比最高的作业/进程。用于作业调度时,考虑作业到达后备队列的顺序。用于作业调度时,短作业优先(SJF)用于作业调度时,短作业优先(SJF)原创 2023-09-30 10:58:28 · 66 阅读 · 0 评论 -
调度算法的评价指标
进程等待时间=进程建立后等待被服务的时间之和,不包括等待I/O完成的时间(此时进程也在被服务)作业等待时间=进程建立后等待被服务的时间+在外存后备队列中等待的时间。小结:带权周转时间及作业周转时间越小,用户满意度越高。三、周转时间:作业提交给系统到作业完成时的时间间隔。平均带权周转时间=各作业带权周转时间之和/作业数量。带权周转时间=作业周转时间/作业实际运行时间。平均周转时间=各作业周转时间之和/作业数量。作业周转时间=作业完成时间-作业提交时间。忙碌时间/总时间,即运行时间/总时间。原创 2023-09-29 20:43:44 · 199 阅读 · 0 评论 -
调度器/调度程序
闲逛进程:无其他就绪进程时,运行闲逛进程;优先级最低,能耗低。2.抢占式调度:每个时钟中断或多个时钟中断均会触发调度程序工作。1.非抢占式调度:只有运行进程阻塞或退出才触发调度工作。3.I/O中断发生,可能唤醒某些阻塞进程。2.运行多长时间-时间片大小。1.创建新进程与进程退出。1.让谁运行-调度算法。原创 2023-09-29 20:00:47 · 95 阅读 · 0 评论 -
进程调度的过程
1.非抢占式:只允许进程主动放弃处理机,即使运行中有更紧急的任务/优先级更高的进程,当前进程仍会继续使用处理机,直到该进程终止/主动进入阻塞态。2.抢占式:运行中有更紧急的任务/优先级更高的进程时,当前进程会被立即暂停执行,处理机会分配给任务紧迫的进程。进程调度(低级调度):按照某种算法从就绪队列中选择一个进程并分配处理机。1.进程调度-一个进程让出处理机,另一个进程占用处理机的过程。2.狭义进程调度-从就绪队列中选一个要运行的进程。3.广义进程调度-选择一个进程和进程切换两个步骤。原创 2023-09-29 19:40:45 · 56 阅读 · 0 评论 -
调度的概念与层次
2.中级调度(内存调度):由于内存不足,系统将某些进程调到外存等待,使其处于挂起状态放入挂起队列中。3.低级调度(处理机/进程调度):由于CPU资源有限,系统需要按照某种策略从就绪队列中选取一个进程,并分配处理机。1.高级调度(作业调度):由于内存空间有限,需要按一定原则从外存作业后备队列中挑选作业调入存,并创建进程的过程。挂起:由内存调入外存等待的过程,暂时不能获得CPU服务,进程映像调到外存中。挂起状态:暂时调到外存等待的进程状态,包括就绪挂起和阻塞挂起。激活:从外存挂起队列中重新调入内存的过程。原创 2023-09-29 10:24:06 · 379 阅读 · 0 评论 -
线程的状态与转换
一、状态与转换二、组织与控制。原创 2023-09-29 09:29:44 · 40 阅读 · 0 评论 -
多线程模型
1.用户级线程:只支持进程的时期,由线程库(即小型进程)实现线程,由应用程序调用线程库完成的,无需OS干涉,OS只了解进程的存在。此时,进程才是CPU调度的基本单位,线程切换无需CPU变态。支持线程与进程,OS可了解到线程的存在,其管理工作由OS完成。此时,线程是系统调用的基本单位,而进程只是资源分配的基本单位。2.多对多:多个用户级线程映射到多个内核级线程,一个用户进程对应多个内核级线程。1.一对一模型:一个用户级线程映射到一个内核线程,两者数量相同。2.多对一:多个用户级线程映射到一个内核级线程。原创 2023-09-28 21:48:50 · 60 阅读 · 0 评论 -
线程的概念
线程:更小的进程,是程序执行的最小单位,是一个基本的CPU执行单元,进程中的各线程之间可以并发,实现进程并发处理各种任务。此时,进程只是作为系统资源的分配单元。3.每个线程也会有线程ID与线程控制块(TCB-用于管理线程的数据结构),也有就绪、阻塞、运行三种基本状态。4.同一进程的不同线程间共享进程的资源,即共享内存地址空间,因此线程间通信无需系统干预。5.同一进程中线程切换,不会引起进程切换;不同进程中线程切换才会引起进程切换。6.切换同进程内的线程,系统开销很小;切换进程,系统开销大。原创 2023-09-28 21:15:37 · 44 阅读 · 0 评论 -
进程通信方式
以格式化的消息(消息头-进程ID,消息长度+消息体-具体数据)为数据交换单位,通过OS提供的发送-send/接收-recieve消息原语实现.只能单向进行数据传递(半双工通信),只能按顺序进行存取.先进先出.两个管道(全双工通信).内存被写满/读空时,进程需要等待.间接通信方式:通过信箱间接通信,通过系统调用申请信箱,进程完善自身消息后,send给信箱中,另一进程也从信箱中接受信息.基于存储区的共享:是一种高级通信方式,在内存中划出一块共享存储区,由进程控制,而非操作系统.原创 2023-09-28 20:26:25 · 47 阅读 · 0 评论 -
进程的控制
找终止进程PCB——>将CPU分配给其他进程——>终止其所有子进程——>归还资源给父进程/操作系统——>删除PCB。找阻塞进程PCB——>保护进程运行现场——>PCB状态设为“阻塞态”,停止进程——>插入等待队列中。在等待队列中找到PCB——>将PCB移除等待队列——>PCB状态设为“就绪态”——>插入就绪队列中。外部中断——>CPU检测——>关中断指令——>不再检查中断信号——>开中断指令——>恢复检查。PCB存运行环境信息——>PCB移入队列——>执行另一进程,更新PCB——>恢复运行环境。原创 2023-09-28 19:30:43 · 35 阅读 · 0 评论 -
进程状态、转换与组织
1.创建态:进程正在被创建,OS为其分配资源、初始化PCB2.就绪态:已经具备运行条件,只需分配CPU即可运行,等待CPU。3.运行态:进程在CPU上运行,CPU会执行进程 对应程序(指令序列)4.阻塞态:运行中请求等待某个事件的发生eg-请求其它设备,等待系统资源分配;等待其它进程的响应。此时进程无法继续执行,OS会将CPU分给其它就绪态的进程 ,让其进入阻塞态。原创 2023-09-18 09:28:39 · 40 阅读 · 0 评论 -
进程的概述
3.创建进程:OS会为进程分配一个唯一且不重复的PID(Process ID),OS会记录PIDD、用户ID-UID(基本的进程描述信息,可让OS区分各个进程。)、分配的资源(内存、I/O设备、文件)、运行情况(CPU使用时间、磁盘使用时间)——>将信息保存在数据结构中,即进程控制块(Process Control Block)中,简称PCB。4.进程控制块(PCB):进程存在的唯一标识,当进程被创建时,OS创建PCB,进程结束时,OS回收PCB。2.进程-动态的,程序的一次执行过程。原创 2023-09-18 08:49:41 · 33 阅读 · 0 评论 -
虚拟机的介绍
一台物理机器(裸机)上只能运行一个操作系统。原创 2023-09-17 17:19:20 · 239 阅读 · 0 评论 -
操作系统引导
开机时,让OS运行的过程。原创 2023-09-17 16:24:48 · 56 阅读 · 0 评论