热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

操作系统错题记录

操作系统错题记录《961计算机基础综合配套习题》Q:有3个进程P1、P2和P3并发工作。进程P1需用资源S3和S1;进程P2需用资源S1和S2

操作系统 错题记录

《961计算机基础综合配套习题》



Q:
有3个进程P1、P2和P3并发工作。进程P1需用资源S3和S1;进程P2需用资源S1和S2;进程P3需用资源S2和S3。回答(北航期末考试题)
(1)若对资源分配不加限制,会发生什么情况?为什么?
(2)为保证进程正确地工作,应采用怎样的资源分配策略?为什么?

A:
(1)若对资源分配不加限制,上述进程可能会进入死锁状态。因为P1、P2、P3是兵法工作的,所以完全有可能发生下述情况,此时P1获得了S3,P2获得了S1,P3获得了S2,但同时他们又循环等待下一个进程释放锁占用的资源,从而进入死锁状态。

(2)为保证进程正确地工作,可采取下列资源分配策略:
①要求进程一次性的申请它所需的全部资源。这样可破坏“请求与保持”条件。
②要求进程严格按资源号递增的顺序申请资源,即P1先申请S1,再申请S3;P2先申请S1,再申请S2; P3先申请S2,再申请S#。这样可破坏“环路等待”条件。
③当一个进程申请资源时,如果系统已无此类资源可用,但某个拥有该资源的其他进程处于阻塞状态,则允许前者抢占后者的资源。这样可破坏“不剥夺”条件。



Q:
(1)主存利用率不高主要体现为哪几种形式?
(2)可以通过哪些途径来提高主存利用率?

A:
(1)内存利用率不高,主要有四种表现形式:
①内存存在着大量的、分散的难以利用的碎片;
②暂时不用或长期不能运行的程序或数据,占据了大量的存储空间;
③当作业较大时,内存中只能装入少量的作业,当其阻塞时,将使CPU空闲,从而降低了内存利用率;
④内存中存在着重复的拷贝。

(2)针对上述问题,可采用以下方法提高内存利用率:
①改连续分配方式为离散分配方式以减少内存的零头;
②增加对换机制,将那些暂时不能运行的进程或暂不需要的程序和数据环换出至外存,以腾出内存来装入运行的进程;
③引入动态链接机制,当程序在运行中需要调用某段程序时才将该程序装入内存,从而避免装入不会用到的程序段和数据;
④引入虚拟存储器机制,使更多的作业能够装入内存,提高CPU和内存利用率;
⑤引入存储器共享机制,允许一个正文段或数据段被若干进程共享以消除内存中的重复拷贝现象。



Q:在采用首次适应算法回收内存时,可能出现哪几种情况?应怎么样处理这些情况?

A:
a. 回收区与插入点的前一个分区相邻接,此时可将回收区与插入点的前一分区合并,不再为回收分区分配新表项,而只修改前邻接分区的大小;
b. 回收分区与插入点的后一分区相邻接,此时合并两区,然后用回收区的首址作为新空闲区的首址,大小为两者之和;
c. 回收区同时与插入点的前后两个分区邻接,此时将三个分区合并,使用前邻接分区的首址,大小为三区之和,取消后邻接分区的表项;
d. 回收区没有邻接空闲分区,则应为回收区单独建立一个新表项,填写回收区的首址和大小,并根据其首址,插入到空闲链中的适当位置.



Q:详述在设有快表的请求分页存储管理系统中,一个虚地址转换成物理内存地址的过程。

A:当CPU给出逻辑地址后,地址变换机构自动讲逻辑地址划分成页号和页内偏移两部分。然后将页号与快表中的所有页号进行比较,若快表中由于此匹配的页号,则表示所要访问的页表项在快表中,于是取出该页对应的物理块号,与页内地址拼接形成物理地址。同时还应修改页表项中的访问位,对于写指令还需要将修改位置为1.若快表中的所有页号与所查找页号不匹配,则还需要在访问主存中的页表。若该页在主存,则从页表中取出物理块号,与页内地址拼接形成物理地址。若该页不在内存,则产生缺页中断,请求操作系统将缺页调入内存,再按前述方式进行地址变换。如果地址变换是通过查找内存中表项完成的,则还应将这次所查到的页表项存入快表中,若快表已满,则必须按某种置换算法淘汰一个表项,以腾出位置存入此页表项。



Q:一个文件系统中有一个20MB大文件和一个20KB小文件,当分别采用连续、链接、链接索引、二级索引和LINUX分配方案时,每块大小为4096B,每块地址用4B表示。问:
(1)各文件系统管理的最大文件是多少?
(2)每种方案对大、小两文件各需要多少专用块来记录文件的物理地址(说明各块的用途)?
(3)如需要读大文件前面第5.5KB的信息和后面第(16M+5.5KB)的信息,则每个方案各需要多少次盘I/O操作?

A:
(1)


  • 连续分配:理论上是不受限制,可大到整个磁盘文件区。

  • 隐式链接:由于块的地址为4字节,所以能表示的最多块数为 232=4G,而每个盘块中存放文件大小为4092字节。链接分配可管理的最大文件为:4G×4092B=16368GB

  • 链接索引:由于块的地址为4字节,所以最多的链接索引块数为 232=4G,而每个索引块有1023个文件块地址的指针,盘块大小为4KB。假设最多有n个索引块,则1023×n+n=232,算出n=222,链接索引分配可管理的最大文件为:4M10234KB=16368GB

  • 二级索引:由于盘块大小为4KB,每个地址用4B表示,一个盘块可存1K个索引表目。
    二级索引可管理的最大文件容量为4KB×1K×1K=4GB。

  • LINUX混合分配:LINUX的直接地址指针有12个,还有一个一级索引,一个二级索引,一个三级索引。因此可管理的最大文件为48KB+4MB+4GB+4TB。
    (2)

  • 连续分配:对大小两个文件都只需在文件控制块FCB中设二项,一是首块物理块块号,另一是文件总块数,不需专用块来记录文件的物理地址。

  • 隐式链接:对大小两个文件都只需在文件控制块FCB中设二项,一是首块物理块块号,另一是末块物理块块号;同时在文件的每个物理块中设置存放下一个块号的指针。

  • 一级索引:对20KB小文件只有5个物理块大小,所以只需一块专用物理块来作索引块,用来保存文件的各个物理块地址。对于20MB大文件共有5K个物理块,由于链接索引的每个索引块只能保存(1K-1)个文件物理块地址(另有一个表目存放下一个索引块指针),所以它需要6块专用物理块来作链接索引块,用于保存文件各个的物理地址。

  • 二级索引:对大小文件都固定要用二级索引,对20KB小文件,用一个物理块作第一级索引,用另一块作二级索引,共用二块专用物理块作索引块,对于20MB大文件,用一块作第一级索引,用5块作第二级索引,共用六块专用物理块作索引块。

  • LINUX的混合分配:对20KB小文件只需在文件控制块FCB的i_addr[15]中使用前5个表目存放文件的物理块号,不需专用物理块。对20MB大文件,FCB的i_addr[15]中使用前12个表目存放大文件前12块物理块块号(48K),用一级索引块一块保存大文件接着的1K块块号(4M),剩下还有不到16M,还要用二级索引存大文件以后的块号,二级索引使用第一级索引1块,第二级索引4块(因为4KB×1K×4=16 M)。总共也需要6块专用物理块来存放文件物理地址。
    (3)

  • 连续分配:为读大文件前面和后面信息都需先计算信息在文件中相对块数,前面信息相对逻辑块号为5.5K/4K=1(从0开始编号),后面信息相对逻辑块号为(16M+5.5K)/4K=4097。再计算物理块号=文件首块号+相对逻辑块号,最后化一次盘I/O操作读出该块信息。

  • 链接分配:为读大文件前面5.5KB的信息,只需先读一次文件头块得到信息所在块的块号,再读一次第1号逻辑块得到所需信息,共2次。而读大文件16MB+5.5KB处的信息,逻辑块号为(16M+5.5K)/4092=4107,要先把该信息所在块前面块顺序读出,共化费4107次盘I/O操作,才能得到信息所在块的块号,最后化一次I/O操作读出该块信息。所以总共需要4108次盘I/O才能读取(16MB+5.5KB)处信息。

  • 链接索引:为读大文件前面5.5KB处的信息,只需先读一次第一个索引块得到信息所在块的块号,再读一次第1号逻辑块得到所需信息,共化费2次盘I/O操作。为读大文件后面16MB+5.5KB处的信息,(16MB+5.5KB)/(4KB×1023)=4,需要先化5次盘I/O操作依次读出各索引块,才能得到信息所在块的块号,再化一次盘I/O操作读出该块信息。共化费6次盘I/O操作。

  • 二级索引:为读大文件前面和后面信息的操作相同,首先进行一次盘I/O读第一级索引块,然后根据它的相对逻辑块号计算应该读第二级索引的那块,第一级索引块表目号=相对逻辑块号/1K,对文件前面信息1/1K=0,对文件后面信息4097/1K=4,第二次根据第一级索引块的相应表目内容又化一次盘I/O读第二级索引块,得到信息所在块块号,再化一次盘I/O读出信息所在盘块,这样读取大文件前面或后面处信息都只需要3次盘I/O操作。

  • LINUX混合分配:为读大文件前面5.5KB处信息,先根据它的相对逻辑块号,在内存文件控制块FCB的i_addr第二个表目中读取信息所在块块号,而只化费一次盘I/O操作即可读出该块信息。为读大文件后在(16MB+5.5KB)信息,先根据它的相对逻辑块号判断要读的信息是在二级索引管理范围内,先根据i_addr内容化一次盘I/O操作读出第一级索引块,再计算信息所在块的索引块号在第一级索引块的表目号为(4097-12-1024)/1024=2,根据第一级索引块第3个表目内容再化费一次盘I/O操作,读出第二级索引块,就可以得到信息所在块块号,最后化一次盘I/O读出信息所在盘块,这样总共需要3次盘I/O操作才能读出文件后面的信息。



推荐阅读
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 探讨如何通过编程技术实现100个并发连接,解决线程创建顺序问题,并提供高效的并发测试方案。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
author-avatar
小鱼2502907687
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有