现代操作系统 第二章 进程与线程 习题答案

本文深入探讨操作系统中进程与线程的转换状态,强调从阻塞到运行的直接转换,而从就绪到阻塞的不可能性。讨论了内核堆栈、中断处理、CPU利用率、并发执行和线程同步等问题,包括多线程在I/O操作中的应用和线程调度的策略,如轮转调度和优先级调度。还涉及了死锁预防、哲学家就餐问题的解决方案以及读者写者问题的不同策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 从阻塞到运行的过渡是可以想象的。假设一个进程在I/O上被阻塞,I/O结束。如果CPU处于空闲状态,进程可能直接从阻塞状态转到运行状态。另一个缺失的转换,从就绪到阻塞,是不可能的。就绪进程不能执行I/O或其他任何可能阻塞它的操作。只有正在运行的进程才能阻塞。
  2. 您可以有一个包含指向当前进程表项的指针的寄存器。当I/O完成时,CPU会将当前机器状态存储在当前进程表条目中。然后,它将转到中断设备的中断向量,并获取指向另一个进程表条目(服务过程)的指针。然后启动此过程。
  3. 通常,高级语言不允许访问所需的CPU硬件。 例如,可能需要中断处理程序来启用和禁用服务于特定设备的中断,或操纵进程堆栈区域内的数据。 此外,中断服务程序必须尽快执行。
  4. 为内核使用单独的堆栈有几个原因。 其中两个如下。 首先,您不希望操作系统崩溃,因为编写不良的用户程序没有足够的堆栈空间。 其次,如果内核在从系统调用返回时将堆栈数据留在用户程序的内存空间中,则恶意用户可能能够使用此数据来查找有关其他进程的信息。
  5. 所有五个进程空闲的可能性是1/32,因此CPU空闲时间是1/32。
  6. 内存中有足够的空间容纳14个进程。 如果进程的I / O为p,则它们等待I / O的概率为p14。 通过将其等于0.01,我们得到等式p14=0.01。解决这个问题,我们得到p=0.72,因此我们可以容忍高达72%I / O等待的过程。
  7. 果每个作业有50%的I / O等待,那么在没有竞争的情况下需要40分钟才能完成。 如果按顺序运行,第二个将在第一个启动后完成80分钟。 有两个作业,CPU利用率大约为1-0.52。因此,每个实时获得0.375 CPU分钟的实时时间。 要累积20分钟的CPU时间,作业必须运行20 / 0.375分钟,或大约53.33分钟。 因此,在80分钟之后顺序运行作业,但是并行运行它们在53.33分钟后完成。
  8. 所有进程等待I / O的概率为0. 46,即0.004096。 因此,CPU利用率=1-0.004096 = 0.995904。
  9. 客户端进程可以创建单独的线程; 每个线程都可以从其中一个镜像服务器获取文件的不同部分。 这有助于减少停机时间。 当然,所有线程都共享一个网络链接。 随着线程数量变得非常大,此链接可能成为瓶颈。
  10. 如果不是不可能的话,保持文件系统的一致性是很困难的。假设客户机进程向服务器进程1发送更新文件的请求。此进程更新其内存中的缓存项。此后不久,另一个客户机进程向服务器2发送一个读取该文件的请求。不幸的是,如果文件也被缓存在那里,那么服务器2将返回过时的数据。如果第一个进程在缓存文件后将其写入磁盘,并且服务器2在每次读取时都检查磁盘,以查看其缓存副本是否是最新的,则可以使系统工作,但缓存系统正试图避免所有这些磁盘访问。
  11. 没有。如果键盘上的单线程进程被阻塞,它就不能fork。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值