操作系统选择题

09~21

概述

image-20220722224611538

解析:根据单处理机系统的概念,系统里面只能运行一个进程,所以选D


image-20220722232908556

解析:概念问题,系统调用就是提供的接口,所以选A


image-20220723004111953

解析:编译后形成的目标文件可以理解为一个小块一个小块的程序碎片,这样的小块一般都是具有从0开始的逻辑地址。 在和相应的库函数链接以后形成一个可执行的文件,需要修改这些小块的逻辑地址,使之统一有序。 所以在链接的过程中又把每个小段的逻辑地址按照一定的顺序组装成一个统一的逻辑地址范围,用来标识出此程序。 虽然编辑后的目标文件形成的小块内的也叫逻辑地址,但是和链接后形成的逻辑地址是截然不同的。选C


image-20220723005943338


image-20220723005943338

解析:进程的切换一定在核心态,而系统调用是在用户态发送,缺页和外部中断都可以在用户态发生,然后再用中断处理进入核心态处理,所以选C


image-20220723010018125

解析:中断处理一定会保存PSW,因为程序状态字用来指示处理器状态、控制指令的执行顺序并且保留和指示与运行程序有关的各种信息,其主要作用是方便地实现程序状态的保护和恢复。而子程序调用不会,所以选B


image-20220723142743159

解析:系统调用和异常都会导致进程从用户态切换到内核态,所以选B


image-20220723142905281

解析:概念问题,显然会加载到RAM中去,选D


image-20220723144318927

解析:开中断是在用户态,关中断一定在核心态,选D


image-20220723155716273

解析:操作系统会保留PSW中的内容,选B


image-20220723155744078

解析:A会产生除以0错误,中断就不用算了,D有可能产生越界错误,所以是C有错误


image-20220723170220820

解析:中断技术的出现使I/O设备可以和CPU并行工作,当一道程序因 I/O请求而暂停运行时,CPU便立即转去运行另一道程序,选A


image-20220723180329061

解析:概念问题,显然是要先传递参数后,才进行trap指令,选C


image-20220723180858193

解析:多道程序系统需要额外的开销来调度程序,所以开销比单道程序系统要大,选D


image-20220723234044784

解析:多任务操作系统并不需要在多CPU上运行,选C


image-20220723235633084

解析:所有的时间数据都需要更新,选D


image-20221130165903497

解析:显然,不同的操作系统系统调用的接口不一样,所以选C


image-20221130203253117

解析:硬件才负责保存中断程序的中断点(程序计数器PC),所以选D


image-20221201194147011

解析:ACD都是用户指令,而IO是特权指令,只能在内核态执行,所以选B


image-20221210193150255

解析:是分时系统的特征,选B


image-20221210202405274

解析:引入多道程序设计之后,程序的执行就丧失了封闭性和顺序性,转为了制约性和间断性,选C


image-20221211030932604

解析:

可执行码:指将目标代码连接后形成的代码,简单来说是机器能够直接执行的代码。

可重入码:也叫 纯代码 (Pure code)是一种允许多个进程同时访问的代码

可改变码:可以修改的代码

可再现码:再现性是指程序被重复执行时,只要初始条件相同,那么执行结果必然相同

所以选B


进程管理

image-20220722224652548

解析:显然,高响应比调度算法进行了综合考虑,所以是D。响应比(等待时间+要求服务时间)/要求服务时间


image-20220722225125618

解析:资源X最少有$n*(m-1)+1$个,才能避免发生死锁,所以此题显然为C


image-20220722233111623

解析:设备分配显然是在给进程分配资源,不会涉及到创建进程,所以选C


image-20220722233231021

解析:显然还能用的资源数为1,而1>0,自然也无进程等待,选B


image-20220722233332722

解析:在进程从运行态到就绪态的时候降低优先级很好,选A


image-20220722233600842

解析:Peterson法实现了互斥和避免饥饿,只是没有满足让权等待条件,选D


image-20220723003258708

解析:显然是高响应比优先算法不会产生饥饿,选B


image-20220723003404893

解析:命令解释程序在用户态,是给用户态提供接口调用时运行的程序,选A


image-20220723003449994

解析:显然是具体线程的栈指针不能被共享,选D


image-20220723003830858

解析:P3和P2都需要3个R2,但是R2可以分配的只有2个,所以不存在安全序列,选D


image-20220723004629010

解析:因为是并发执行的,所以可能会有任意执行顺序,可能会出现0,1,2,选C


image-20220723122210903

解析:此时R1有2个,R2有3个,R3有3个资源,此时分配给P1,P3都合理,分配给P1后不能再分配给P0,所以选D


image-20220723132725056

解析:进程在临界区时当然能进行处理机调度,只有在内核状态临界区时才不能,选C


image-20220723132936952

解析:概念问题,系统根本意识不到线程的存在,所以进程当然是资源分配的基本单位,所以选A


image-20220723143059817

解析:银行家算法是避免死锁,处于安全状态时,一定是没有死锁进程的,选B


image-20220723144155214

解析:显然是A,短作业显然会导致饥饿


image-20220723144232957

解析:不发生死锁,那么最少为2+3+4+1=10,选C


image-20220723144401848

解析:读取了之后,会切换到就绪态,而到了执行态才会分配用户内存空间,选A


image-20220723145611218

解析:关于管道通信,可以有一个写进程和多个读进程进行操作,按时只能单向数据传输,并且读写都有可能被阻塞,选C


image-20220723155949707

解析:ABC都会到阻塞态,只有D会变为就绪态


image-20220723161215912

解析:死锁检测方法不会限制申请资源的顺序,只会限制分配的顺序,所以选B


image-20220723170401899

解析:计算步骤是:3*4+2+3=17ms


image-20220723170455393

解析:p1,p2,p3会互锁,所以至少为3


image-20220723170701062

解析:TSL不满足让权等待的原则,即进入临界区的进程不会主动放弃CPU,至于A,退出临界区的进程只会唤醒就绪态的进程,选B


image-20220723171141835

解析:进程之间的参数并不会互相影响,而线程之间各自的定义不需要互斥进行,因为之后的操作并没有涉及到对a的运算,只有线程之间都涉及到了对进程变量的改变,此时需要互斥的进行操作,选C


image-20220723171427035

解析:管程还能实现对进程的同步,选A


image-20220723180224820

解析:此时J4还没到,先排除,J1先到,所以先来先服务会选定J1,而此时J3的运行时间最短,短作业优先会选定J3,选D


image-20220723180816209

解析:时间片用完后,只会从运行态切换到就绪态,选B


image-20220723234203131

解析:因优先权值大的进程优先获得CPU,进程的执行顺序为P2 -> P3 -> P1。
P2的周转时间为:1+15+24=40 μs;
P3的周转时间为:18+1+24+1+36=80 μs;
P1的周转时间为:30+1+24+1+36+1+12=105 μs。
系统的平均周转时间为:(40+80+105)/ 3 = 225 / 3 =75 μs。


image-20220723235415774

解析:只有当线程1完全执行完,再执行线程2,或者反过来,才有可能出现2,所以选B


image-20220723235430713

解析:资源不够分,所以是A


image-20220723235535651

解析:管程内只能有一个进程,所以wait操作会直接将其插入阻塞序列,选D


image-20220723235502274

解析:进程被抢占只会导致回到就绪态,选C


image-20220723235945727

解析:显然是信号量机制实现了让权等待,选C


image-20221130165525252

解析:操作系统都不知道用户级线程的存在,自然不可能为用户级线程建立一个线程块,选B


image-20221130165625024

解析:即将进程用阻塞态切换为就绪态,进程时间片用完会变为就绪态,所以错误,选C


image-20221130170158575

解析:P1等待时间为:10+10=20ms,P2等待时间为:10ms,故平均等待时间为(10+20)/2=15ms,选C


image-20221130170739086

解析:银行家算法是避免死锁,而不是检测死锁,所以选B


image-20221130203442596

解析:显然是以下都需要被考虑到,所以选D


image-20221130203934447

解析:显然是B


image-20221130204111628

解析:子进程和父进程本质上还是两个进程,所以当然不能共享虚拟地址空间,选B


image-20221130204418321

解析:满足互斥条件,即123都需要,而4是让权等待,并不是一定需要的,选C


image-20221201194300869

解析:12都是需要的,同时需要将进程设置为就绪态而非执行态,所以选B


image-20221201194520463

解析:时间片轮转只需要就绪队列并非阻塞队列,所以选C


image-20221201194736478

解析:显然都有可能,选D


image-20221201195533521

解析:最少是C


image-20221201195638088

解析:只有创建新进程才需要系统调用,选C


image-20221210202611143

解析:先来先服务可以保证CPU繁忙且不会导致进程饥饿,但是对IO不利,所以选B


image-20221210202834762

解析:概念问题,是指内核创建的用户线程,选A


image-20221211031658493

解析:只会被其他进程所唤醒,选D


内存管理

image-20220722225338221

解析:分区分配内存管理方式是保护措施是界地址保护,分页和分段采用的是越界保护,所以是A


image-20220722225545689

解析:根据定义,显然是C


image-20220722233719605

解析:最佳匹配算法会优先分配小的内存块,所以最后是15-6=9MB


image-20220723003937383

解析:显然是都有可能发生,选D


image-20220723004008517

解析:抖动现象是因为分配的物理数块过少导致的,所以只有撤销部分进程才能解决这一问题,选A


image-20220723142935301

解析:缺页和越界错没有关系,选B


image-20220723144457605

解析:$10GB/4KB=2.5×2^{20}$,显然,位示图需要$2.5×2^{20}$位来表示,即需要$(2.5×2^{20})/8=320KB$,而簇的大小为4KB,所以需要80个簇来表示


image-20220723144957020

解析:显然增大快表和让页表常驻都能加快转换,而增大交换区并没有什么作用,,选C


image-20220723145529969

解析:只有FIFO算法才会产生Belady异常


image-20220723145713354

多级页表不仅不会加快地址的变换速度,还会因为增加更多的查表过程,使地址变换速度减慢;也不会减少缺页中断的次数,反而如果访问过程中多级的页表都不在内存中,会大大增加缺页的次数,也并不会减少页表项所占的字节数,而多级页表能够减少页表所占的连续内存空间,即当页表太大时,将页表再分级,可以把每张页表控制在一页之内,减少页表所占的连续内存空间,因此选D。


image-20220723161357852

解析:根据LRU的定义,从最后一位倒推,选A


image-20220723163100872

解析:全局置换和固定分配不兼容,所以选C


image-20220723170851913

解析:段长300,却要得到400的逻辑地址,明显是越界了


解析:在任一时刻t,都存在一个集合,它包含所有最近k次(即为窗口大小)内存访问所访问过的页面。这个集合w(k,t)即为工作集,去除掉重复的序号,所以选A


image-20220723180526158

解析:20K会和200K起始的一起合并了,所以只剩下3个分区,同时按最佳适应算法,此时第一个分区会是最小的分区,即是500K起始的分区,选B


image-20220723170543907

解析:定义问题,选A


image-20220722233855337

解析:页大小为$2^{10}$,而页表项的大小为2字节,说明一页最多存储$2^{9}$个页表项,而逻辑地址空间大小为$2^{16}$页,全部都需要用页表项来表示,所以页目录表至少需要$2^{16-9}=2^{7}=128$页来表示


image-20221130170329285

解析:段S在P1,P2中的使用位置可能不同,所以段号自然也有可能不同,选B


image-20221130170451991

解析:一共为5次,在5,3,0,7,6,被访问时发生,选C


image-20221130170845321

解析:注意一点:页目录号和页号这些都是从低位到高位,高位不够的补0,所以选A


image-20221130170944783

解析:内存碎片也叫外部碎片,最佳适应算法容易产生,选C


image-20221130204017095

解析:显然都能影响访存时间,选D


image-20221201194803103

解析:02A01H对应的页号在内存中不存在,所以需要交换,先替换页号3,页框号为60H,所以物理地址为C


image-20221201195237389

解析:基本概念,放的是一级页表的起始物理地址,选B


image-20221210193354334

解析:2586/1024>2,所以在页号为2,块号为10的物理块,偏移量为2586-2048=538,物理地址为10×1024+538=10778,选C


image-20221210193704292

解析:核心考点就是:在FIFO中,只会根据第一次掉页的时机来判断是否该调出,所以选C


image-20221210204051073

解析:覆盖技术是应用在早起单一连续存储管理上的一种技术,选A


image-20221211031849915

解析:heap是表示内存动态分配的内存段,所以选D


文件管理

image-20220722225737500

解析:要实现随机访问,排除链式结构,而且要易于文件拓展,所以采用B


image-20220722230359233

解析:概念问题,会放在FCB中,选A


image-20220722230419041

解析:软链接在建立的时候直接复制当前引用次数,并且一直不变,硬链接在建立的时候会将引用计数值+1,并且删除文件后会修改应用计数值,选B


image-20220722234410621

解析:二级目录所能表示的文件大小最大为:$1×64×64×256=1024KB$,所以可以估算出是C


image-20220722234843122

解析:在内存中设置当前工作目录,不必每次都从磁盘读入,这样可以加快目录检索速度,选C


image-20220723004155684

解析:单磁盘块在处理一个文件的时候就需要$150μs$,10个文件就是$1500μs$,再算上最后一个文件的处理时间,所以是$1550μs$,而双缓冲区,就可以不考虑缓冲区向CPU传输的时间,就是$10×100=1000μs$,1000+50+50=1100,显然可以减少时间,所以选B


image-20220723132218707

解析:read系统调用建立在open系统调用之上,所以并不需要文件的名称,所以选A


image-20220723141857726

解析:删除文件不会删除文件的目录,选A


image-20220723142314294

解析:要求随机播放,排除链式结构,要求快速,排除索引结构,所以选A


image-20220723142625207

解析:索引结点的个数和单个文件长度并没有关系,选A


image-20220723145311711

解析:首次打开即open系统调用,会先读取FCB,选B


image-20220723162052426

解析:一个磁盘可以存放 1KB/4=256 个指针 直接索引指针为10个,代表偏移量在0-10240之间的都可以通过直接索引得到。 选B


image-20220723163139637

解析:每个盘块能表示1024*8个盘块号,即409612/(1024×8)=50余12,所以盘块号为32+50=82,剩下的第12位,块内地址是从0开始的,即是第1个字节的内容,所以答案是C


image-20220723180631881

解析:簇的大小为1KB,而文件系统会按簇的大小为基本单位,所以至少需要2个簇的大小,即2KB,选D


image-20220723181110740

解析:需要注意的是,一个用户可以有多种状态,同时,此题是直接描述文件权限,意思就是需要用一个字符串来描述所有用户对其文件的所有权限,所以至少需要5*4=20种


image-20220723181654562

解析:读写指针肯定不会保持相同,因为不可能同时读写的都是同一块数据,其余的都一样,选B


image-20220723235921084

解析:都能提高文件访问速度,选D


image-20221130165955496

解析:文件系统中位图,空闲磁盘块链,FAT都可以表示空闲磁盘块,选B


image-20221130202913557

解析:A:当然可以写 C:位置不一定一样 D:但引用计数为0的时候才能删除,所以选B


image-20221130203108429

解析:显然是A


image-20221130204251802

解析:文件目录用索引结点的方式存储,只需要考虑索引结点的个数即可,即索引结点号占了4B=32bit,那么能表示$2^{32}$个文件


image-20221201195328286

解析:删除文件之后,快捷方式并不会被删,所以选A


image-20221210204240528

解析:概念问题,目录结构中,一级目录最大的问题就是容易重名,选C


输入/输出管理

image-20220722225942844

解析:根据SCAN算法,会持续往一个方向移动,然后再反方向移动,所以是A


image-20220722230443258

解析:概念问题,为了方便编程,使用的是逻辑设备名,选B


image-20220722234947938

解析:根据IO设备的层次划分,先是中断处理程序接受,选B


image-20220723003527630

解析:概念问题,B


image-20220723010453212

解析:概念问题,选A


image-20220723132326488

解析:P1先到达,显然是60+120+40+40=260ms,选B


image-20220723133853826

解析:显然设置多个分区并不能改善性能,选B


image-20220723142524619

解析:在设备驱动程序才会具体计算物理地址,选C


image-20220723142708110

解析:显然,最短时间为105*2+90=300,选C


image-20220723143029172

解析:应该让IO时间多的进程先计算,所以是B


image-20220723161845443

解析:可以减少磁盘IO次数,选A


image-20220723163715335

解析:最外层是0,最里面是200,所以结果是(199-58)+(199-15)=325,选C


image-20220723171338350

解析:是操作系统控制设备与输出井之间的关系,所以选D


image-20220723181024188

解析:磁盘的逻辑格式化会在划定分区之后,物理格式化会确定校验码,所以选B


image-20220723181831592

解析:在开始DMA传输时,主机向内存写入DMA命令块,向DMA控制器写入该命令块的地址,启动 I/O 设备。然后,CPU继续其他工作,DMA控制器则继续直接操作内存总线,将地址放到总线上开始传输。整个传输完成后,DMA控制器中断CPU,即正确执行,选B


image-20220723235702877

解析:只有先来先服务不会导致磁臂黏着,磁臂黏着:指磁盘长时间访问某一些磁道,比如100,50,99,98的顺序,扫描和循环扫描算法都会导致磁臂黏着,选A


image-20221130204210287

解析:更换物理设备后只需要更换驱动即可,并不需要修改应用程序


image-20221201194631374

解析:是优先寻找最接近的磁道,即0+2+5+11+23=41


image-20221210194015491

解析:RAID的原理就是让各类磁盘并行,所以可以做到,选D


image-20221210204622648

解析:SPOOLing技术并没有提高内存的利用率,所以选B


image-20221211014644923

解析:当IO发生时,程序不管采用何种方式进行IO处理,都必须等待IO完成才可以继续执行,A、B、C三种方式是让CPU和IO并行。选D


image-20221211031806915

解析:DMA方式是进程可以直接读取外部设备的数据,选A