操作系统知识点复习

操作系统期末知识点

  • Spooling和内存缓冲技术的区别:

  • Spooling(Simultaneous Peripheral Operations On-Line)是一种数据处理技术,它将输入/输出设备(如打印机)与计算机系统解耦,通过使用磁盘或其他存储介质作为缓冲区,将输入/输出数据暂时存储起来,以便后续处理。Spooling通过在磁盘上创建一个虚拟队列,将多个任务排队,并按照一定顺序进行处理,从而实现了设备与计算机系统之间的异步操作。它可以提高系统的并发性和吞吐量,并且允许多个用户同时访问设备。

  • 内存缓冲技术是一种数据传输和处理中的缓冲策略,通过使用内存作为数据缓冲区,将数据从一个子系统传输到另一个子系统时进行临时存储。内存缓冲技术可以在数据传输速度不匹配的情况下实现数据的平滑流动,并且可以提高系统的性能和效率。内存缓冲通常用于处理数据传输过程中的瞬时性差异,例如在网络通信中,接收方速度较慢时可以使用内存缓冲来平衡发送和接收之间的速度差异。

  • Spooling和脱机技术的区别:

    • Spooling(假脱机)是一种将输入/输出设备与计算机系统解耦的技术,它通过使用磁盘或其他存储介质作为缓冲区,在设备和计算机系统之间实现异步操作。Spooling将数据暂时存储在磁盘上,并在适当的时候进行处理,从而实现了设备与计算机系统的解耦。它可以提高系统的并发性和吞吐量,并且允许多个任务同时访问设备。
    • 脱机技术是一种将数据从主计算机系统移出的技术,以便在不需要时进行存储和处理。脱机技术通常涉及将数据存储在离线介质(如磁带、磁盘等)上,并将其与主计算机系统断开连接。这样做可以释放主计算机系统的资源,并允许数据在需要时进行恢复和处理。脱机技术通常用于长期存储和备份数据,以及在需要时进行数据检索和处理。与Spooling不同,脱机技术将数据从主计算机系统中彻底分离,而不是仅仅暂时存储。
  • 并发和并行的区别

    • 并发(Concurrency)和并行(Parallelism)是计算机领域中常用的两个概念,它们表示了不同的执行方式和特性。

      并发是指两个或多个任务在同一时间段内执行,它们之间可以是交替执行、同时执行或者按照一定的调度顺序执行。在并发执行中,多个任务共享计算机资源,通过时间片轮转、线程切换等方式,实现任务之间的切换和执行。并发通常用于提高系统的吞吐量、响应性和资源利用率,使得多个任务可以同时进行,从而提高系统的效率。

    • 并行是指两个或多个任务在同一时刻执行,每个任务拥有自己的处理器或计算资源,彼此独立运行,互不干扰。在并行执行中,多个任务同时进行,并发地执行各自的指令和操作,从而加速任务的完成速度。并行通常用于解决需要大量计算或处理的问题,通过将任务分配给不同的处理器或计算单元,同时执行以提高计算速度和性能。

    • 简而言之,并发是指多个任务在同一时间段内交替执行,共享资源,提高系统的并发性和效率;而并行是指多个任务在同一时刻同时执行,每个任务拥有独立的资源,提高任务的计算速度和性能。并发强调的是任务之间的调度和切换,而并行强调的是任务的同时执行和并行处理。两者是相互关联的概念,在某些情况下可以同时存在,但也可以单独存在。

  • Unix系统的基本结构分为哪几层?

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R682K1M5-1687267758238)(assets/1684831435185.png)]

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3hEN8dqn-1687267758240)(assets/1684831443315.png)]

    • Unix系统的基本结构可以分为以下几层:

      1. 硬件层:包括计算机的物理硬件设备,如处理器、内存、磁盘、网络接口等。

      2. 内核层:是操作系统的核心,负责管理和控制硬件资源,提供基本的系统服务和功能,如进程管理、内存管理、文件系统、设备驱动程序等。内核层直接运行在硬件上,为上层应用程序提供了操作系统的接口。

      3. 系统调用层:位于内核和应用程序之间,提供了一组接口供应用程序访问操作系统的功能和服务。应用程序可以通过系统调用来请求内核执行特定的操作,如文件操作、进程创建、网络通信等。

      4. 库函数层:提供了一系列的函数库,为应用程序提供常用的功能和服务,如字符串处理、文件操作、网络通信等。这些函数库可以被应用程序直接调用,简化了编程过程。

      5. Shell层:提供了一个命令行界面,用户可以通过命令行输入命令与操作系统进行交互。Shell解释用户输入的命令并将其转发给操作系统执行,同时还提供了一些脚本编程的功能。

      6. 应用程序层:包括各种用户应用程序,如文本编辑器、图形界面程序、数据库系统等。这些应用程序利用系统调用和库函数层提供的接口与操作系统进行交互,实现特定的功能。

      这些层次组成了Unix系统的基本结构,每一层都有其特定的功能和作用,通过层次化的设计,实现了模块化、可扩展和可维护的操作系统架构。

    • 如果某款操作系统能流行起来,你认为关键是什么?

      • 如果某款操作系统能流行起来,以下几个关键因素可能起到重要作用:

        1. 用户友好性:操作系统应该提供直观、易于使用和学习的用户界面,以满足用户的需求。良好的用户体验、友好的操作界面和可靠的功能可以吸引更多用户使用操作系统。

        2. 应用程序生态系统:操作系统的成功与否很大程度上取决于其应用程序生态系统的健康繁荣。操作系统需要有丰富多样的应用程序和工具,以满足用户的需求,并吸引开发者积极参与应用程序的开发。

        3. 跨平台兼容性:在当今多样化的计算设备和平台上,跨平台兼容性是一个重要的因素。如果操作系统能够无缝地在不同的设备和平台上运行,并提供一致的用户体验和功能,将有助于吸引更广泛的用户群体。

        4. 性能和稳定性:操作系统应具备高性能和稳定性,能够有效管理硬件资源,提供快速响应和流畅的操作体验。稳定性是用户所关注的重要指标之一,因为它关乎到用户数据的安全性和系统的可靠性。

        5. 安全性:随着网络威胁的增加,安全性已成为操作系统的重要关注点。一个安全可靠的操作系统能够提供有效的安全机制和防御措施,保护用户数据的机密性和完整性,减少潜在的安全漏洞。

        6. 开放性和可定制性:一个开放的操作系统能够吸引更多的开发者和社区参与,共同推动其发展。操作系统应提供开放的接口和工具,使开发者能够自由地定制和扩展系统,满足不同用户的需求。

        7. 良好的支持和社区:操作系统的成功离不开一个积极、活跃的支持和社区生态系统。社区成员可以提供技术支持、开发新功能和修复错误,共同推动操作系统的发展和改进。

        综上所述,用户友好性、应用程序生态系统、跨平台兼容性、性能和稳定性、安全性、开放性和可定制性,以及良好的支持和社区是某款操作系统能够流行起来的关键因素。当然,市场营销、价格策略和与硬件厂商的合作也可能对操作系统的流行起到一定的影响。

  • 引入挂起状态的原因
    1.系统有时可能会出现故障或某些功能受到损坏,这时就需要暂时将系统中的进程挂起,以便于系统故障消除后,再将这些进程恢复到原来状态。
    2.用户检查自己作业的中间执行情况和中间结果时,应同预想想法不符而产生后,这时用户要求挂起进程,以便进行某些检查和改正。
    3.系统中有时负荷过重(进程数过多),资源数相对不足,从而造成系统效率下降。此时需要挂起一部分进程以调度系统负荷,等系统中负荷减轻后在恢复被挂起进程的执行。
    4.在操作系统中引入了虚拟存储管理机术后,需要区分进程是驻留在内存还是外存,此时可以用挂起表示驻留在外存。

  • 两个挂起状态的好处:仅一个挂起态时,挂起的进程都是阻塞的,再次调度到内存时,要立即评估其是否已经获得所需资源。两个状态可以仅仅把挂起/就绪进程调度进内存,因为其已经获得了资源,不需再进行评估。

  • 导致挂起的原因:1、内存不足时,把部分阻塞进程交换到交换区;2、程序调试;3、周期较大的可预期进程、如审计及监控进程;4、父进程由于协调等原因,要求子进程挂起;5、其他OS原因,例如,挂起后台进程、挂起怀疑有问题的程序等。

知识点

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LhKHdz3p-1687267758240)(assets/v2-31321fea9811a15220635238c032f106_1440w.webp)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MY6OSLnJ-1687267758241)(assets/v2-96b9fa987b7db9612c312d50a2070648_1440w-16858598514743.webp)]

  • 方法说明优点缺点
    固定分区在系统初始化时,主存被划分成许多静态分区。进程可以装入到大于或等于自身大小的分区中。简单,开销小内部碎片多,内存利用率低;活动进程的最大数目是固定的。
    动态分区分区是动态创建的,因而使得每个进程可以装入与自身大小相等的分区中。无内部碎片,可以充分利用主存。容易形成大量外部碎片,需要额外技术支持(分配算法、压缩等)。
    简单分页主存被划分成许多大小的帧;每个进程被划分成许多大小与帧相等的页;装入进程所有的页到对应帧中,以执行进程;一个进程不必要占用连续的帧。无外部碎片有很少量的内部碎片
    简单分段每个进程被划分成许多段;要装入一个进程,需要把所有段装入主存;段与段间可以不连续无内部碎片;相对于动态分区,内存利用率高。存在外部碎片
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M5x3XgRs-1687267758242)(assets/1685885030111.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cMvEm2Vs-1687267758242)(assets/1685885995269.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eKCXwJqo-1687267758242)(assets/1685886002839.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WbaKKk3M-1687267758243)(assets/1685886013664.png)]

  • 反向页表

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f2WZxr2x-1687267758243)(assets/1685886066778.png)]

  • 为什么引入虚拟分段(重要)

    • 简化不断增长的数据结构处理方式
    • 允许分块编译
    • 有助于进程间的共享
    • 有助于实现保护机制
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fYwMNwVT-1687267758243)(assets/1685886283377.png)]

  • 引入线程的动机

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DyVylMc4-1687267758244)(assets/1685888857937.png)]
  • 引入线程的好处

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8wAN07xy-1687267758244)(assets/1685888902306.png)]
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KMks5Z3n-1687267758244)(assets/1685889005708.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BpXSOpId-1687267758244)(assets/1685889019967.png)]

  • 临界区的基本特征

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-svt8SyWK-1687267758245)(assets/1685889162844.png)]
  • 互斥对系统的要求

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RqODcfCw-1687267758245)(assets/1685889531632.png)]
  • 死锁的定义

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EmntTrcK-1687267758245)(assets/1685889687797.png)]
  • 死锁产生的必要条件

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yBS2TL8T-1687267758246)(assets/1685889633984.png)]
  • 应对死锁的方法

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9qxhk8Qy-1687267758246)(assets/1685889749157.png)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nPQwBC0P-1687267758246)(assets/1685891366465.png)]
    • 什么是系统调用呢?
      用户态(user mode) : 用户态运行的进程可以直接读取用户程序的数据。
      系统态(kernel mode):可以简单的理解系统态运行的进程或程序几乎可以访问计算机的任何资源,不受限制。
      系统调用就是用户态切换到内核态。
    • 线程和进程以及它们的区别
      1、线程是CPU调度和分配的基本单位,进程是系统资源调度和分配的基本单位。
      2、一个进程里有多个线程,多个线程可以并发执行,如果一个线程中断了,那么这个进程就结束了。多个进程可以并行执行,互不影响。
      3、每个进程都有独立的代码和资源,而每个线程都有自己的程序计数器,线程共享资源,线程间切换的开销小。
    • 进程有哪几种状态? 5种
      创建、就绪、运行、阻塞、结束
    • 进程间的通信方式
      管道、信号量、消息队列、共享内存、套接字
    • 线程间的同步的方式有哪些?
      互斥量、信号量、事件
    • 进程的调度算法
      1、先到先服务(FCFS)调度算法
      2、短作业优先(SJF)的调度算法
      3、时间片轮转调度算法
      4、多级反馈队列调度算法
      5、优先级调度
    • 什么是死锁
      多个进程/线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于进程/线程被无限期地阻塞,因此程序不可能正常终止。
    • 死锁的四个条件
      互斥、请求和保持、循环等待、不可抢占
    • 解决死锁的方法
      预防,避免,检测和解除四种。
      死锁的预防
      1、静态分配策略
      2、层次分配策略
      死锁的避免
      银行家算法
    • 操作系统常见的几种内存管理机制
      块式管理:将内存分为几个固定大小的块,每个块中只包含一个进程。
      页式管理 :把主存分为大小相等且固定的一页一页的形式,页较小,相比于块式管理的划分粒度更小,提高了内存利用率,减少了碎片。
      段式管理 :段式管理把主存分为一段段的,段是有实际意义的,每个段定义了一组逻辑信息
      简单来说:页是物理单位,段是逻辑单位。分页可以有效提高内存利用率,分段可以更好满足用户需求。
      段页式管理机制 : 简单来说段页式管理机制就是把主存先分成若干段,每个段又分成若干页,也就是说 段页式管理机制 中段与段之间以及段的内部的都是离散的。
    • 快表
      为了提高虚拟地址到物理地址的转换速度,操作系统在 页表方案 基础之上引入了 快表 来加速虚拟地址到物理地址的转换。我们可以把快表理解为一种特殊的高速缓冲存储器(Cache),其中的内容是页表的一部分或者全部内容。
    • 多级页表
      引入多级页表的主要目的是为了避免把全部页表一直放在内存中占用过多空间,特别是那些根本就不需要的页表就不需要保留在内存中。
    • 分页机制和分段机制的共同点和区别
      1、共同点 :
      分页机制和分段机制都是为了提高内存利用率,减少内存碎片。
      页和段都是离散存储的,所以两者都是离散分配内存的方式。但是,每个页和段中的内存是连续的。
      2、区别 :
      页的大小是固定的,由操作系统决定;而段的大小不固定,取决于我们当前运行的程序。
      分页仅仅是为了满足操作系统内存管理的需求,而段是逻辑信息的单位,在程序中可以体现为代码段,数据段,能够更好满足用户的需要。
    • 什么是虚拟内存?
      虚拟内存是它定义了一个连续的虚拟地址空间,并且把内存扩展到硬盘空间
    • 什么是局部性原理
      某个较短的时间段内,程序执行局限于某一小部分,程序访问的存储空间也局限于某个区域。利用局部性原理实现髙速缓存
    • 页面置换算法
      最佳页面置换算法
      FIFO(First In First Out) 页面置换算法(先进先出页面置换算法)
      LRU (Least Recently Used)页面置换算法(最近最久未使用页面置换算法)
      LFU (Least Frequently Used)页面置换算法(最少使用页面置换算法)
    • 孤儿进程和僵尸进程
      僵尸进程:一个进程使用 fork 创建子进程,如果子进程退出,而父进程并没有调用 wait 或 waitpid 获取子进程的状态信息,这种进程称之为僵死进程
      孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。
      危害:孤儿进程并不会有什么危害,而大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程。
    • 线程数量根据什么考虑:
      CPU密集型任务:一般配置线程数=CPU总核心数+1
      IO密集型任务:一般配置线程数=CPU总核心数 * 2 +1 (一般情况)
      CPU密集型:所谓CPU密集型就是说处理任务不需要依赖外部I/O,比如科学计算、矩阵运算等等。
      I/O密集型:这一类任务可能计算部分所占用时间不多,大部分时间都用在了比如磁盘I/O、网络I/O等,记为WT(wait time),以及CPU计算所需要的时间,这里极为CT(computing time),那么对于一个N核的系统,合适的线程数大概是N * (1 + WT/CT)
    • 管程由局限于管程的共享变量说明、对管程内的数据结构进行操作的一组过程及对局限于管
      程的数据设置初始值的语句组成。
    • 让权等待,即进程不能进入临界区时,应立即释放处理器,防止进程忙等待。

可能的考试重点

  • PV操作

  • 最大支持文件操作,一级分配、二级分配

  • 时间片轮询

  • 时间性计算:带权周转时间

  • 目录结构不考

  • 文件系统:索引文件、索引顺序文件…; 物理结构与逻辑结构对应关系

    索引顺序文件对应的逻辑结构

  • 多道程序设计

  • 操作系统的初始化?

  • 进程状态与转移: 3状态,阻塞缓解:多队列、挂起、优先级(什么时候升降)

  • 基于优先权的抢占式进程调度算法

  • 文件物理结构和逻辑结构的对应关系是怎样的?

    • 文件的物理结构和逻辑结构是文件系统中的两个概念,它们之间存在对应关系。下面是常见的几种文件物理结构和它们对应的逻辑结构:

      1. 顺序文件:

        • 物理结构:文件中的数据按顺序存储在存储介质上,可以连续存储或分散存储。
        • 逻辑结构:文件中的数据按逻辑顺序组织,可以通过记录号或关键字来访问。
      2. 索引文件:

        • 物理结构:文件中的数据可以连续存储或分散存储,同时还有一个索引区域,存储了记录的索引信息。
        • 逻辑结构:文件中的数据可以按照索引区域中的索引进行访问,通过索引可以快速定位到相应的记录。
      3. 索引顺序文件:

        • 物理结构:文件中的数据按顺序存储,同时还有一个索引区域,存储了记录的索引信息。
        • 逻辑结构:文件中的数据按照索引区域中的索引进行访问,通过索引可以快速定位到相应的记录。
      4. 散列文件:

        • 物理结构:文件中的数据通过散列函数计算得到存储位置,可以分散存储在存储介质上。
        • 逻辑结构:文件中的数据根据散列函数的计算结果进行访问,通过散列函数可以快速定位到相应的记录。

      总之,文件的物理结构决定了数据在存储介质上的存储方式,而逻辑结构决定了数据在文件中的组织方式和访问方式。不同的文件物理结构可以对应不同的逻辑结构,根据文件的访问特点和需求来选择合适的物理结构和逻辑结构。

  • 文件访问控制信息会存储在哪?

    • 根据我的搜索结果,文件访问控制信息会存储在文件控制块¹或inode¹中。文件控制块是文件系统给每个文件建立的唯一的管理数据结构,包含了文件的标识、控制、逻辑结构、物理结构、使用和管理信息¹。inode是Linux文件系统中的一种数据结构,用于存储文件的元数据,如权限、所有者、大小、时间戳等¹。您对文件系统有什么疑问吗?😊
  • 文件:适合随机访问且易于文件扩展的是哪个?

  • UNIX文件系统:文件大小计算、磁盘索引结构

  • Linux 文件系统:ext2,ext4, NTFS

    卷和文件,其他OS的文件系统

  • 缓冲技术

    • 处于CPU 和 外设之间, 解决速度不匹配问题;SPOOLING,假脱机技术
    • 内存缓冲
  • OS的功能

上学期考点

  • 快表、分页式、分段式、端页式

  • 进程控制采用哪两种执行模式?相对于进程,引入线程的动机是什么?

    • 在操作系统原理中,进程控制采用两种执行模式:用户态和核心态(也称为用户模式和特权模式)。

      1. 用户态(用户模式):进程在用户态下执行,只能访问受限的资源和执行受限的指令集。进程在用户态下执行时,如果需要访问操作系统的资源或执行特权指令,需要通过系统调用进入核心态。

      2. 核心态(特权模式):进程在核心态下执行,具有更高的权限和访问操作系统资源的能力。在核心态下,进程可以直接访问系统的各种资源和执行特权指令。

      引入线程的动机是为了提高程序的并发性和资源利用率。相对于进程,线程具有以下优势:

      1. 轻量级:线程是进程的执行单位,相比于进程,线程的创建、切换和销毁的开销更小,占用的系统资源更少。

      2. 并发性增强:多个线程可以在同一进程中并发执行,共享进程的资源和上下文,实现更高的并发性。

      3. 资源共享:线程共享进程的地址空间和文件描述符等资源,线程之间可以直接访问共享的数据,简化了进程间的通信和数据传递。

      4. 响应性增强:线程的创建和切换速度较快,可以更快地响应用户的请求和事件。

      引入线程的目的是为了更有效地利用计算机的多核处理器和提高程序的并发性。通过在同一进程内创建多个线程,可以在多核处理器上同时执行多个线程,充分利用计算资源,并提高程序的执行效率和响应速度。此外,线程的创建和切换开销相对较小,可以更好地支持并发执行和多任务处理的需求。

  • 死锁预防和死锁避免的区别是什么?死锁检测的时机是什么?

    • 死锁预防和死锁避免是两种不同的策略来处理死锁问题:

      1. 死锁预防(Deadlock Prevention):死锁预防的目标是通过设计和约束系统资源的使用方式,使得系统永远不会发生死锁。这可以通过破坏死锁发生的四个必要条件之一来实现,如破坏互斥条件、破坏不可剥夺条件、破坏占有并等待条件或破坏循环等待条件。死锁预防需要在系统设计和资源分配阶段考虑死锁可能性,并采取相应的措施,因此要求对系统的资源使用和分配有较高的控制权。

      2. 死锁避免(Deadlock Avoidance):死锁避免的目标是在运行时动态地检测系统的状态,根据资源请求和分配的情况,采取合适的调度策略来避免进程进入死锁状态。死锁避免需要对进程的资源请求进行分析和预测,以避免分配资源会导致未来可能发生死锁的情况。常用的死锁避免算法包括银行家算法(Banker’s Algorithm)和Coffman算法(Coffman’s Algorithm)等。

        检测的时机:

        可以在进程申请资源时进行检测

        可以在死锁解除过程中进行检测

    • 死锁预防的思路:
      在系统设计时,通过确定资源的分配策略,预先排除死锁的可能性。
      死锁预防的手段:
      破坏发生死锁的四个条件之一

    • 死锁避免的优点:不需要抢占资源和重新运行进程。

      死锁避免的限制条件:

      事先声明进程所需最大资源数量

      进程间无关(无同步关系)

      待分配的资源数目必须是固定的

  • 简述有些操作系统为何要引入多级(超过一级)分页机制,以及引入多级分页机制的好处和代价。

    • 引入多级(超过一级)分页机制是为了解决大型内存管理中的一些问题,并提供更灵活的内存管理策略。

      引入多级页表的主要目的是为了避免把全部页表一直放在内存中占用过多空间,特别是那些根本就不需要的页表就不需要保留在内存中。

      下面是多级分页机制的好处和代价:

      好处:

      1. 灵活性:多级分页机制可以根据系统的需求和内存管理的特点来选择不同的分页层级和大小,以适应不同的应用程序和内存大小。这样可以更好地平衡内存使用效率和内存管理开销。

      2. 内存利用率:多级分页机制可以减小内存的内部碎片。由于分页的最小单位更小,可以更精确地匹配程序的内存需求,避免浪费大块的内存空间。

      3. 地址空间扩展:多级分页机制可以支持更大的地址空间。通过多级分页,系统可以使用更多的物理内存来映射进程的虚拟地址空间,从而支持更大规模的程序和数据。

      代价:

      1. 内存管理开销:多级分页机制引入了额外的层级结构和管理开销。每一级的页表需要占用一定的内存空间,而且访问页表的过程也会引入额外的开销。这增加了内存管理的复杂性和开销。

      2. 硬件支持要求:多级分页机制需要硬件的支持来实现页表的多级结构和地址转换。因此,引入多级分页机制可能需要对硬件进行相应的扩展或改进,以支持更复杂的页表结构和地址转换算法。

      3. 页面访问时间增加:由于多级分页机制引入了更多的访问层级和页面表项,访问内存页面的时间会相应增加。这可能导致一定的性能损失,特别是在大规模的内存访问和高并发的情况下。

      总体来说,引入多级分页机制可以提供更灵活和高效的内存管理策略,但也会增加一定的管理开销和访问延迟。因此,在选择是否引入多级分页机制时,需要综合考虑系统的需求、硬件支持和性能要求等因素。

  • 硬盘是计算机设备中吞吐量较慢的硬件设备,根据所学的内容列举应对这个确定的方法或技术。

    • 以下是应对硬盘吞吐量较慢的方法或技术:

      1. 提升磁盘性能:

        • 使用高速硬盘驱动器:选择性能更好的硬盘驱动器,如固态硬盘(SSD)或高转速的机械硬盘(7200 RPM 或更高)。
        • RAID(冗余阵列独立磁盘):将多个磁盘组合成一个逻辑单元,提高数据传输速度和容错能力。
      2. 使用缓存技术:

        • 硬盘缓存:增加硬盘的缓存大小,可以减少对物理磁盘的访问次数,提升读写性能。
        • 文件系统缓存:操作系统在内存中缓存常用的文件数据,加快对文件的读取和写入操作。
      3. 数据局部性优化:

        • 读取预取:通过预先读取连续的数据块,利用局部性原理提前将数据加载到缓存中,减少后续的磁盘访问延迟。
        • 写入合并:将多个较小的写操作合并为一个较大的写操作,减少对磁盘的随机写入操作,提高写入性能。
      4. 数据压缩和压缩:

        • 数据压缩:通过对数据进行压缩,减少磁盘空间的使用,同时可以提高数据的传输速度。
        • 数据压缩:通过对数据进行压缩,减少磁盘空间的使用,同时可以提高数据的传输速度。
      5. 数据分布和数据布局优化:

        • 文件切片和分布式存储:将大文件切分为多个小块,并分布在多个磁盘上,实现并行读写操作,提高吞吐量。
        • 数据分区和布局策略:合理划分数据分区,并根据访问模式和访问频率进行数据的物理布局,减少寻道时间和旋转延迟。

      这些方法和技术可以结合使用,根据具体场景和需求进行调整和优化,以提高硬盘的性能和吞吐量。

    • 应对硬盘吞吐量较慢的方法或技术有以下几种:

      • 使用固态硬盘 (SSD),相比于机械硬盘,固态硬盘没有机械部件,寻道时间和旋转延迟都很小,因此可以提供更高的IOPS和吞吐量¹。
      • 使用多块硬盘组成RAID阵列,通过并行地读写多块硬盘,可以提高IOPS和吞吐量,同时也可以提高数据的可靠性和容错性¹。
      • 使用缓存技术,利用内存或者固态硬盘作为缓存,预先加载或者缓存常用的数据,减少对机械硬盘的访问,从而提高IOPS和吞吐量²³。
      • 优化文件系统,选择合适的文件系统类型,调整文件系统参数,如块大小、预读大小、日志大小等,减少文件碎片,定期进行磁盘整理等,都可以提高机械硬盘的性能。
    • 应对延迟的方法

      • 缓存:文件访问级缓存
        RAM磁盘:保留部分RAM作为高速文件系统
        RAID:并行访问(容错)
        智能调度算法:读写头调度、元信息布置
  • 在操作系统发展的历史上,曾依次提出了中断技术、DMA技术等,请描述这些技术分别解决了什么问题。

    • 中断技术和DMA技术都是为了提高CPU和I/O设备之间的并行性而提出的。它们分别解决了以下问题:

      • 中断技术解决了CPU在等待I/O设备准备就绪时的空闲问题¹。在中断技术中,CPU不需要轮询I/O设备的状态,而是在执行其他任务的过程中,由I/O设备主动向CPU发出中断请求,通知CPU进行数据的传输²。这样,CPU可以充分利用等待时间,提高效率。
      • DMA技术解决了CPU在进行数据传输时的占用问题¹。在DMA技术中,CPU不需要参与数据的传输,而是由一个专门的硬件电路——DMA控制器来控制数据从I/O设备直接存储器访问(Direct Memory Access),即直接和主存交换数据³。这样,CPU可以在数据传输的过程中,继续执行其他任务,提高并行度。
    • 在操作系统发展的历史上,中断技术和DMA(直接内存访问)技术是两个重要的技术,它们解决了以下问题:

      1. 中断技术:
        中断技术是一种由外部设备触发的机制,用于打断正在执行的程序,使操作系统能够响应和处理外部事件。通过中断技术,操作系统可以实时地对外部事件进行处理,而不需要等待程序的执行结束。中断技术解决了以下问题:
      • 实时响应:外部设备可以通过触发中断来通知操作系统进行相应处理,使得系统能够及时响应各种事件,如输入/输出请求、硬件故障等。
      • 多任务处理:通过中断机制,操作系统可以实现多任务处理,即在多个任务之间进行切换执行,提高系统的并发性和效率。
      1. DMA技术:
        DMA技术是一种直接内存访问技术,它允许外部设备直接访问主内存而不需要CPU的干预。DMA技术解决了以下问题:
      • 数据传输效率:传统上,数据从外部设备到内存或从内存到外部设备的传输需要经过CPU的介入,造成了数据传输的延迟和CPU的负载。DMA技术通过直接将数据在设备和内存之间进行传输,绕过了CPU,提高了数据传输的效率。
      • CPU占用率:DMA技术可以减轻CPU的负担,使CPU能够更多地专注于执行其他的计算任务,提高了系统的并发性和效率。

      总结:
      中断技术和DMA技术在操作系统的发展中起到了重要的作用。中断技术解决了实时响应和多任务处理的问题,使操作系统能够处理外部事件并支持并发执行。DMA技术解决了数据传输效率和CPU占用率的问题,提高了系统的数据传输性能和整体效率。这些技术的引入和应用推动了操作系统的发展,为更高效、更可靠的计算机系统奠定了基础。

刷题

选择题

  • 操作系统的基本职能:控制和管理系统内的各种资源,有效的组织多道程序的运行

  • 操作系统的基本特征:并发、共享、虚拟、不确定性(异步)

  • 分时系统的响应时间与(终端的用户数)和(时间片的大小)有关

    • 什么是分时系统:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wUYOyPtc-1687267758247)(C:\Users\wdmhswj\AppData\Roaming\Typora\typora-user-images\image-20230602145015234.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IAksh3z0-1687267758247)(C:\Users\wdmhswj\AppData\Roaming\Typora\typora-user-images\image-20230602145038602.png)]

    • 响应时间是指从终端发出命令到系统予以应答所需的时间。

    • 影响分时系统响应时间的几个因素是:用户数目、时间片大小、信息交换速度和信息交换量。

  • OS为用户提供了3种界面:命令界面、程序界面和图形界面;在UNIX系统中,只能在C程序中使用的接口是(系统调用)

  • 引入进程的概念主要目的是:描述程序动态执行过程的性质

  • 处理机调度可分为三级,它们是 、 和 ;在一般操作系统中,必须具备的调度是(低级调度)。

  • UNIX进程调度采用:多级反馈队列轮转法

    • 进程调度算法:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KwfeQTS3-1687267758247)(C:\Users\wdmhswj\AppData\Roaming\Typora\typora-user-images\image-20230602151303106.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NvxwyIYB-1687267758248)(C:\Users\wdmhswj\AppData\Roaming\Typora\typora-user-images\image-20230602151323754.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fH3Kreaz-1687267758248)(C:\Users\wdmhswj\AppData\Roaming\Typora\typora-user-images\image-20230602151449514.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PU3aR3Lm-1687267758248)(C:\Users\wdmhswj\AppData\Roaming\Typora\typora-user-images\image-20230602151519413.png)]

  • 产生死锁的四个必要条件是什么:互斥使用、占用并等待、不可剥夺、循环等待

  • 多进程并发执行的系统中,需要考虑进程间的(互斥、同步、死锁、饥饿)等。

  • 下列进程通信机制中,在Unix中没有采用的机制有( B )。A.信号量 B.管程 C.软中断信号 D.套接字 E.有名管道

  • Unix系统通信速度最高的一种通信机制是( A )。A. 共享存储区 B.信号量 C.管道 D.消息机制

    答案是A. 共享存储区。原因如下:

    • 共享存储区是一种进程间通信机制,它允许多个进程直接访问同一块物理内存,从而实现数据的快速交换⁴ 。
    • 信号量是一种同步机制,它用于控制多个进程对共享资源的访问,防止出现竞争条件³ 。信号量本身并不传递数据,只是提供了一个计数器和一组原子操作。
    • 管道是一种半双工的通信机制,它允许一个进程向另一个进程发送数据,但是数据只能在一个方向上流动² 。管道的通信速度受限于管道的缓冲区大小和读写操作的开销。
    • 消息机制是一种异步的通信机制,它允许一个进程向另一个进程发送一定长度的消息,消息会被存储在一个消息队列中,等待接收进程读取³ 。消息机制的通信速度受限于消息队列的容量和消息的格式化和解析的开销。

    综上所述,共享存储区是四种通信机制中通信速度最高的一种,因为它避免了数据的拷贝和转换,直接在内存中进行数据交换。

  • 进程状态从就绪态到运行态的转化工作是由( C )完成的。
    A.作业调度 B.中级调度 C.进程调度 D.设备调度

  • 下列进程状态的转换中,哪一个是不正确的( C )。
    A.就绪→运行 B.运行→就绪 C.就绪→阻塞 D.阻塞→就绪

  • 一种既有利于短小作业又兼顾到长作业的作业调度算法是( C )
    A.先来先服务 B.轮转 C.最高响应比优先 D.均衡调度

  • 进程控制块是描述进程状态和特性的数据结构,一个进程(D)。
    A.可以有多个进程控制块 B.可以和其他进程共用一个进程控制块
    C. 可以没有进程控制块 D.只能有惟一的进程控制块

  • 在以下的文件物理存储组织形式中,( A)常用于存放大型的系统文件。
    A.连续文件
    B.串连文件
    C.索引文件
    D.多重索引文件

  • 在下述文件系统目录结构中,能够用多条路径访问同一文件(或目录)的目录结构是( )
    A. 单级目录
    B. 二级目录
    C. 纯树型目录
    D. 非循环图目录

  • 使用户所编制的程序与实际使用的物理设备无关,这是由设备管理的(A)功能实现的。
    A.设备独立性
    B.设备分配
    C.缓冲管理
    D.虚拟设备

    • 设备独立性 =设备无关性 = Device Independence
      设备独立性是指操作系统把所有外部设备统一当成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。
  • 设备的打开、关闭、读、写等操作是由(C)完成的。
    A.用户程序
    B.编译程序
    C.设备驱动程序
    D.设备分配程序

判断题

  • 网络操作系统是在各种各样自治的计算机原有操作系统基础上,加上具有网络访问功能的模块形成的。(T)

  • 可以通过设定进程执行的顺序来解决同步问题。(F)

  • 一个进程正在执行临界区代码时,不可能被剥夺处理器。(F)

  • 临界区可嵌套。(T)

  • 由于程序设计不当导致死锁产生后,计算机系统就处于死机状态。(F)

  • 信号量机制没有忙等待。(T)

  • 死锁是指系统中的全部进程都处于阻塞状态。( F)

  • 当由于为进程分配资源而使系统处于不安全状态时,系统一定会导致死锁。( F )

    • ▪系统状态:系统内进程当前的资源分配情况。

      1)安全状态:至少有一个进程执行序列不会导致系统死锁。

      2)不安全状态:存在安全序列则系统是安全的,如果不存在则系统不安全,但不安全状态不一定引起死锁。

  • 在不能进入临界区时,忙等待总是比阻塞等待效率低。(F )

  • 进程获得处理机而运行是通过申请得到的。( F)通过调度程序调度

  • •一个临界资源可能对应多个临界区。(T )

  • 系统中只要有相关的并发进程存在就有可能存在进程之间的互斥和同步。(T)

  • 引入线程后,同一个进程内或不同进程的线程都可以并发执行。(F)

  • 多道程序的引入,使系统可能失去封闭性和可再现性,这是由于多道程序设计的执行不需要这两个特性。(F)

  • 虚拟存储器不是物理上扩大内存空间,而是逻辑上扩充了内存容量。(T)

  • 最差适配进行动态内存分配的优点是不易产生小碎片,但缺点也非常明显,那就是运行一段时间后,基本不存在连续的大分区。(T)

  • 程序员将一个大程序按程序的逻辑结构划分成若干个程序(或数据)段,把可能同时运行的程序段分在一组内,该组称为覆盖段。( F )

  • 利用共享分配技术可以提高设备的利用率,使得打印机之类的独占设备成为可共享的、快速I/O设备 。( F)应该是虚拟分配技术

简答题

  • 进程为什么使用挂起状态:

    • 添加挂起状态的好处:挂起释放内存

    • 导致挂起的原因:1、内存不足时,把部分阻塞进程交换到交换区;2、程序调试;3、周期较大的可预期进程、如审计及监控进程;4、父进程由于协调等原因,要求子进程挂起;5、其他OS原因,例如,挂起后台进程、挂起怀疑有问题的程序等。

    • 进程使用挂起状态是因为以下原因:

      1. 资源不可用:当进程需要的某些资源(如I/O设备、内存等)不可用时,操作系统将进程置于挂起状态。这可以防止进程继续执行,浪费CPU时间,直到需要的资源可用为止。

      2. 等待事件完成:当进程需要等待某个事件完成(如用户输入、信号等)时,操作系统可以将其挂起。在事件完成之前,进程没有必要继续执行,因此可以暂时挂起,让其他就绪的进程执行。

      3. 优先级低:在多道批处理系统中,优先级较低的进程可能被暂时挂起,以便给予优先级较高的进程更多的CPU时间。

      4. 资源释放:当进程完成其所需的资源或不再需要执行时,操作系统可以将其挂起。这样可以释放CPU和其他资源,使其可供其他进程使用。

      总之,进程使用挂起状态是为了合理利用系统资源,避免浪费和提高系统效率。当进程无法继续执行、需要等待事件完成、优先级较低或不再需要执行时,操作系统将其置于挂起状态。

    • 你好,这是Bing。根据我从网络上搜索到的信息,进程使用挂起状态的原因有以下几种¹⁴:

      • 用户的请求:可能是在程序运行期间发现了可疑的问题,需要暂停进程。
      • 父进程的请求:考察,协调,或修改子进程。
      • 操作系统的需要:对运行中资源的使用情况进行检查和记账。
      • 系统故障或功能损坏:暂时将系统中的进程挂起,以便于系统故障消除后,再将这些进程恢复到原来状态³。

      挂起状态和阻塞状态的区别是⁵:

      • 挂起状态是由用户或操作系统主动引起的,阻塞状态是由进程等待某一事件而被动引起的。
      • 挂起状态的进程不占用内存空间,阻塞状态的进程仍然占用内存空间。
      • 挂起状态的进程映像在磁盘上,阻塞状态的进程映像在内存中。
      • 挂起状态的进程只能由用户或操作系统解除挂起,阻塞状态的进程只能由等待的事件发生而解除阻塞。
  • “一个线程的阻塞,不会导致整个进程的阻塞!”,这句话在什么情况下成立?

    • 这句话在多线程环境下成立,具体来说,在一个进程中有多个用户级线程时,一个线程的阻塞不会导致整个进程的阻塞。

      当一个线程执行系统调用或等待某个事件完成时,该线程会被阻塞,但其他线程仍然可以继续执行。因为每个线程都有自己的上下文和执行路径,线程之间是独立的并行执行单元。因此,一个线程的阻塞不会影响其他线程的执行,整个进程可以继续运行。

      这种多线程的并发执行模型使得程序能够更充分地利用多核处理器的性能,提高系统的吞吐量和响应性。不同线程可以独立处理不同的任务,避免了串行执行的瓶颈。

      需要注意的是,虽然一个线程的阻塞不会导致整个进程的阻塞,但线程之间可能存在资源竞争和同步问题,需要使用合适的同步机制(如互斥锁、条件变量等)来确保线程间的正确协作和共享资源的安全访问。

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vP9wp3zr-1687267758249)(C:\Users\wdmhswj\AppData\Roaming\Typora\typora-user-images\image-20230602162616040.png)]

  • •同步和互斥的关系?

    • 联系:
      都是关于并发进程如何共享资源的问题
      区别:
      互斥:要求各进程互斥地使用资源,当资源空闲时,任何进程都有资格使用该资源。
      同步:具有同步关系的进程之间必须按某种依赖关系相互合作,在指定的依赖关系未满足前,即使资源空闲也不允许被使用。
  • 对资源进行排序,能有效解决“循环等待”死锁条件。请证明。

    • 资源排序:采用有序资源使用法可以防止循环等待条件。如果一个进程已经分配了类型R的资源,那么以后它只能申请在资源顺序表中排在R后面的资源类型。
    • 正确性证明:
      • 条件:i,j为资源顺序编号;当i<j时,资源Ri排在资源Rj的前面
        假定:Pa和Pb之间发生了死锁,原因是Pa获得Ri并申请Rj,同时,Pb获得了Rj并申请Ri。
        矛盾:Ri排在Rj的前面,同时Rj也排在Ri的前面。也就是,i<j and j<i.
        结论:上述假定不存在。
      • 这句话是正确的。我们可以用反证法来证明。假设对资源进行排序,但仍然发生了死锁。那么,必然存在一组进程 P1, P2, …, Pn,形成一个循环等待链,即 P1 等待 P2 占有的资源,P2 等待 P3 占有的资源,…,Pn 等待 P1 占有的资源。由于对资源进行了排序,那么每个进程请求资源的顺序必须按照资源的编号依次进行。那么,设 P1 请求的资源编号为 R1,P2 请求的资源编号为 R2,…,Pn 请求的资源编号为 Rn。由于 P1 已经占有了 R1,那么 R2 必须大于 R1;同理,由于 P2 已经占有了 R2,那么 R3 必须大于 R2;以此类推,我们可以得到 Rn 必须大于 R(n-1)。但是,由于 Pn 等待 P1 占有的资源 R1,那么 R1 必须大于 Rn。这就产生了一个矛盾:R1 既大于又小于 Rn。因此,假设不成立,即对资源进行排序,不会发生死锁。
  • 如果在申请资源时使用Coffman算法进行死锁检测,这种算法和银行家算法的区别是什么?

    • Coffman算法和银行家算法都是用来检测和避免死锁的算法,但是它们有以下区别:

      • Coffman算法是一种死锁检测算法,它通过构造进程-资源分配图,判断图中是否存在环路,如果存在,则说明发生了死锁¹²。银行家算法是一种死锁避免算法,它通过模拟进程对资源的申请和释放,判断系统是否处于安全状态,如果不安全,则拒绝进程的请求³ 。
      • Coffman算法需要定期运行,扫描系统中所有的进程和资源,消耗较多的时间和空间。银行家算法只需要在进程发出资源请求时运行,根据当前的进程和资源情况做出决策,消耗较少的时间和空间。
      • Coffman算法只能检测死锁是否发生,不能预防死锁的发生。银行家算法可以预防死锁的发生,保证系统始终处于安全状态。
      • Coffman算法适用于每类资源只有一个实例的情况。银行家算法适用于每类资源有多个实例的情况。
    • 不同资源的合适算法:

      • 可交换空间:由于知道进程的最大存储需求,适用“一次性分配所有请求资源”的死锁预防策略。

        进程资源:适用死锁避免策略。因为进程可以事先声明这类资源。

        主存:基于抢占的预防策略最合适。

        内部资源:采用基于排序的预防策略。

  • “局部性原理”被应用在了操作系统内核设计的多个算法中。请尽可能多地罗列出来,并简要说明如何使用的?
    要点:内存管理(指令集中在某个区域);磁头调度(磁头的粘性);设备缓存管理;

    • 您好,这是Bing。我可以尝试回答您的问题。😊

      根据我的搜索结果,局部性原理是指程序在执行过程中,对存储器的访问往往呈现出一定的规律性,即在一段时间内,程序的执行仅局限于一小部分指令和数据¹²。局部性原理可以分为时间局部性空间局部性两种²³。

      时间局部性是指如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问¹²。时间局部性反映了程序的重复性,可以利用缓存技术来提高程序的运行效率²³。

      空间局部性是指一旦程序访问了某个存储单元,则不久之后,其附近的存储单元也将被访问¹²。空间局部性反映了程序的连续性,可以利用预取技术来提高程序的运行效率²³。

      局部性原理被应用在了操作系统内核设计的多个算法中,例如:

      • 内存管理:操作系统利用局部性原理,将程序分为若干个大小相等的页或段,将内存分为若干个大小相等的页框或段框,然后按需将页或段调入内存中,实现虚拟内存技术¹⁴。操作系统还可以利用局部性原理,采用页面置换算法(如最近最少使用算法、最佳置换算法等)来选择合适的页面换出内存,以提高内存利用率和缓解内存不足的问题¹⁴。
      • 磁头调度:操作系统利用局部性原理,采用磁盘调度算法(如先来先服务算法、最短寻道时间优先算法、扫描算法等)来安排磁头对磁盘请求的处理顺序,以减少磁头移动的距离和时间,提高磁盘的读写效率¹⁴。
      • 设备缓存管理:操作系统利用局部性原理,为输入输出设备设置缓冲区(如键盘缓冲区、打印机缓冲区等),以缓解设备速度不匹配的问题,提高设备的响应速度和吞吐量¹⁴。
  • 一般说来,文件系统应具备哪些功能?

    • 文件管理
    • 目录管理
    • 文件存储空间管理
    • 文件的共享与保护
    • 提供方便的接口
  • 在UNIX系统中,基本的文件类型分为普通文件(Regular Files)、目录(Directories)和特殊文件(Special Files)。

  • 操作系统采用较多的技术措施以保证用户对磁盘文件的访问相率,简述采用了哪些措施?
    答:磁头访问、缓存、RAID、文件的组织、I-节点等元信息的放置等

  • 访问相率(access rate)是指在操作系统中,衡量用户对磁盘文件的访问速度和效率的指标。它表示了在一定时间内完成对磁盘文件的读取或写入操作的次数。较高的访问相率意味着系统能够更快地响应用户的文件访问请求,提供更高的数据传输速度和更短的访问延迟。为了提高访问相率,操作系统采用了诸如磁盘缓存、文件预读取、数据块调度算法等技术措施。

  • SPOOLing技术可以实现设备的(C)分配。
    A.独占
    B.共享
    C.虚拟
    D.物理

    • 1.设备分配概述
      设备分配是指根据用户的I/O请求分配所需的设备。分配的总原则是充分发挥设备的使用效率,尽可能地让设备忙碌,又要避免由于不合理的分配方法造成进程死锁。从设备的特性来看,
      采用下述三种使用方式的设备分别称为独占设备共享设备虚拟设备
      1. 独占式使用设备。进程分配到独占设备后,便由其独占,直至该进程释放该设备。
      2. 分时式共享使用设备.对于共享设备,可同时分配给多个进程,通过分时共享使用。
      3. 以SPOOLing方式使用外部设备。SPOOLing技术实现了虚拟设备功能,可以将设备同时分配给多个进程。这种技术实质上就是实现了对设备的I/O操作的批处理。
  • 多级反馈队列对哪种类型的进程有利?是 I/O 密集型还是 CPU(计算)密集型的进程?简要说明原因。
    要点:对 IO 密集型有力
    原因:结合多级反馈队列的特点回答:IO 密集型经常用不完时间片,接下来就被放到同优先级队列中;对 CPU 密
    集型,经常用完时间片,接下来就被降低优先级放到低优先级队列中。

    • 您好,这是Bing。我可以尝试回答您的问题。😊

      根据我的搜索结果,多级反馈队列(Multi-level Feedback Queue,MLFQ)是一种常见的进程调度算法,它将进程按照优先级分成多个队列,每个队列的优先级不同,高优先级的队列先被调度¹²³。当一个进程被调度时,它会被放到最高优先级的队列中,如果它的时间片用完了还没有执行完,那么它就会被放到下一个优先级的队列中,以此类推,直到执行完毕或者被放到最低优先级的队列中¹²³。

      多级反馈队列对I/O密集型的进程有利¹²³。这是因为I/O密集型的进程通常会在时间片用完之前主动释放CPU,等待I/O操作完成。这样,它们可以保持在高优先级的队列中,得到更快的响应时间和更多的CPU时间¹²³。相反,CPU(计算)密集型的进程通常会用完整个时间片,然后被降低优先级,移入下一个队列。这样,它们会逐渐被放到低优先级的队列中,得到更少的CPU时间¹²³。

      因此,多级反馈队列对I/O密集型的进程有利,而对CPU(计算)密集型的进程不利。

  • 对于一个进程的多个用户级线程,当一个线程执行系统调用而被阻塞时,整个进程都将被阻塞,为什么?
    要点:针对“用户级线程管理”的特点进行回答。用户级线程管理的特点是线程的调度有应用程序完成,内核不知
    道线程的存在。

    • 原因:该模式下,进程的所有线程,都对应一个内核调度实体(KES),并且内核不知道这个进程有哪些线程。KES无法将其他线程,调度到其他处理器上。该进程(所有的线程)被阻塞,直到本次系统调用(比如I/O)结束。

    • 您好,这是Bing。我可以尝试回答您的问题。😊

      根据我的搜索结果,用户级线程管理的特点是线程的调度由应用程序完成,内核不知道线程的存在¹²³⁴⁵。用户级线程由应用程序通过线程库实现,所有的线程管理数据结构都在一个进程的用户地址空间中,线程切换不需要内核态特权,因此,进程不需要为了线程管理切换到内核态¹²³⁴⁵。

      当一个用户级线程执行系统调用而被阻塞时,整个进程都将被阻塞,这是因为内核不知道该进程中还有其他的用户级线程¹²³⁴⁵。对于内核来说,它只看到一个进程在请求系统服务,而不关心这个进程内部是否有多个用户级线程。因此,当系统调用阻塞时,内核会将整个进程挂起,直到系统调用返回或者发生中断¹²³⁴⁵。这样,该进程中的其他用户级线程就无法得到调度和执行,也无法主动释放CPU给其他用户级线程¹²³⁴⁵。

      因此,对于一个进程的多个用户级线程,当一个线程执行系统调用而被阻塞时,整个进程都将被阻塞,这是由于用户级线程管理的特点所导致的。

  • 请列出线程调度比进程调度开销更低的原因。
    要点:分别从创建、终止、切换、通信等方面进行回答。重点是论述切换时的开销,不需要保存进程级的 PCB,用
    户地址空间等。

    • 您好,这是Bing。我可以尝试回答您的问题。😊

      线程调度比进程调度开销更低的原因有以下几点:

      • 创建:线程创建只需要分配一个线程控制块(TCB)和一个栈空间,而进程创建需要分配一个进程控制块(PCB)和一个用户地址空间,还需要复制父进程的资源和状态,因此线程创建的时间和空间开销更小。
      • 终止:线程终止只需要释放TCB和栈空间,而进程终止需要释放PCB和用户地址空间,还需要回收或转移其占用的资源,因此线程终止的时间和空间开销更小。
      • 切换:线程切换只需要保存和恢复线程级的寄存器和栈指针,而进程切换需要保存和恢复进程级的寄存器、栈指针、页表、TLB等,还需要切换用户地址空间,因此线程切换的时间和空间开销更小。
      • 通信:线程之间可以直接共享同一进程的内存空间、文件描述符、信号处理器等资源,而进程之间需要通过系统调用或者消息传递等方式进行通信,因此线程之间的通信速度更快,通信开销更小。
    • 线程调度比进程调度开销更低的原因主要体现在以下几个方面:

      1. 创建开销更低:线程的创建相对于进程来说开销更低。进程创建需要为新的进程分配独立的地址空间、复制父进程的资源和环境,而线程的创建只需要为新线程分配栈空间和线程控制块(TCB),并共享父进程的地址空间和资源。

      2. 终止开销更低:线程的终止相对于进程来说开销更低。线程终止时只需释放线程所占用的资源和回收线程的TCB,而进程终止还需要释放整个进程的地址空间和资源。

      3. 切换开销更低:线程的切换开销相对较低。由于线程共享同一进程的地址空间和资源,线程切换时不需要切换地址空间和资源的映射关系,只需切换线程的执行上下文,如程序计数器、寄存器等。相比之下,进程切换需要切换整个地址空间和资源的映射关系,开销更大。

      4. 通信开销更低:线程之间的通信相对进程间通信来说开销更低。线程共享同一进程的地址空间,可以直接访问共享数据,通信时无需进行内核态和用户态之间的切换,而进程间通信需要通过内核提供的通信机制,涉及用户态和内核态的切换以及数据的拷贝等操作,开销较大。

      总的来说,线程调度比进程调度开销更低的主要原因是线程共享进程的地址空间和资源,不需要保存进程级的PCB和用户地址空间等信息,在切换和通信时可以直接访问共享数据,避免了进程间切换和数据拷贝的开销。这使得线程的创建、终止、切换和通信等操作更加高效。

  • 进程间有哪些数据通信方法?各有什么特点?
    答案要点:
    (1)消息通信:类似于电子邮件系统。可以自己解决互斥与同步。
    (2)共享存储区:通信速度快。需要借助额外的互斥与同步机制。
    (3)管道通信:采用 FIFO 方式组织信息。可以实现大量信息交换。可以自己解决互斥与同步。

  • 进程间的数据通信方法包括消息通信、共享存储区和管道通信,它们各具特点如下:

    1. 消息通信:消息通信是一种通过发送和接收消息进行进程间通信的方法,类似于电子邮件系统。发送方将消息发送到接收方,接收方接收并处理消息。特点如下:

      • 灵活性:可以实现点对点或多对多的通信方式。
      • 异步性:发送方和接收方可以独立运行,不需要等待对方的操作。
      • 解耦合:发送方和接收方之间相互独立,不需要了解对方的内部实现。
      • 需要互斥与同步:为了避免竞态条件和保证数据一致性,需要使用互斥和同步机制。
    2. 共享存储区:共享存储区是一种通过在内存中创建共享区域来实现进程间通信的方法。多个进程可以访问同一块共享存储区来交换数据。特点如下:

      • 通信速度快:由于共享存储区位于内存中,访问速度较快。
      • 需要额外的互斥与同步机制:多个进程同时访问共享存储区可能导致数据竞争,需要使用互斥和同步机制来保证数据一致性和避免竞态条件。
    3. 管道通信:管道通信是一种通过在进程间创建管道来实现单向数据传输的方法。管道采用FIFO(先进先出)的方式组织信息,典型的应用是进程间的父子关系。特点如下:

      • 大量信息交换:管道可以实现大量的信息交换,数据可以按照先后顺序进行传输。
      • 自带互斥与同步:管道的读写操作是原子的,即一个进程在读取数据时,其他进程无法同时读取或写入数据,自带互斥与同步机制。

    总的来说,消息通信具有灵活性和异步性,但需要互斥和同步机制;共享存储区具有通信速度快,但需要额外的互斥和同步机制;管道通信适用于父子关系的进程间通信,具有大量信息交换和自带互斥与同步的特点。不同的通信方法适用于不同的场景和需求。

  • .为实现动态分区中的各种放置算法,内存中必须保留一个空闲块列表。分别讨论最佳适配、首次适配、邻近适配
    三种方法的平均查找长度。(7.4)
    答案:最佳适配: 按大小排序后,可采用二分法,平均查找长度为 O(log2n)
    首次适配:按地址排序,平均查找长度为(n+1)/2
    邻近适配:按地址排序,平均查找长度为(n+1)/2

需要等待对方的操作。
- 解耦合:发送方和接收方之间相互独立,不需要了解对方的内部实现。
- 需要互斥与同步:为了避免竞态条件和保证数据一致性,需要使用互斥和同步机制。

  1. 共享存储区:共享存储区是一种通过在内存中创建共享区域来实现进程间通信的方法。多个进程可以访问同一块共享存储区来交换数据。特点如下:

    • 通信速度快:由于共享存储区位于内存中,访问速度较快。
    • 需要额外的互斥与同步机制:多个进程同时访问共享存储区可能导致数据竞争,需要使用互斥和同步机制来保证数据一致性和避免竞态条件。
  2. 管道通信:管道通信是一种通过在进程间创建管道来实现单向数据传输的方法。管道采用FIFO(先进先出)的方式组织信息,典型的应用是进程间的父子关系。特点如下:

    • 大量信息交换:管道可以实现大量的信息交换,数据可以按照先后顺序进行传输。
    • 自带互斥与同步:管道的读写操作是原子的,即一个进程在读取数据时,其他进程无法同时读取或写入数据,自带互斥与同步机制。

总的来说,消息通信具有灵活性和异步性,但需要互斥和同步机制;共享存储区具有通信速度快,但需要额外的互斥和同步机制;管道通信适用于父子关系的进程间通信,具有大量信息交换和自带互斥与同步的特点。不同的通信方法适用于不同的场景和需求。

  • .为实现动态分区中的各种放置算法,内存中必须保留一个空闲块列表。分别讨论最佳适配、首次适配、邻近适配
    三种方法的平均查找长度。(7.4)
    答案:最佳适配: 按大小排序后,可采用二分法,平均查找长度为 O(log2n)
    首次适配:按地址排序,平均查找长度为(n+1)/2
    邻近适配:按地址排序,平均查找长度为(n+1)/2

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-28ftqNFU-1687267758249)(assets/1685799447615.png)]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值