为什么准备好的队列和块队列存储在主内存中?

时间:2013-07-08 17:55:25

标签: operating-system

据说就绪队列和块队列存储在主存储器中。有些人请告诉我为什么这样。如果它们存储在辅助存储器(硬盘)中,有什么利弊。

2 个答案:

答案 0 :(得分:0)

编写程序时,是否将变量存储在硬盘上?! 它与操作系统相同。在运行时,操作系统使用特殊的数据结构,如作业队列,文件系统结构和许多其他类型的变量/结构。 任何操作系统......但是任何软件都将这种东西存储在主内存中,因为它比硬盘快得多。并且在运行时只需要变量/结构。硬盘主要用于“永久”存储。

答案 1 :(得分:0)

就绪和块队列必须存储在主存储器中,因为它们是关键/关键OS数据结构。 对于未存储在主存储器中的内容,必须先将其分页(以及另一个被驱逐的页面),然后才能通过地址进行访问。这通常由页面错误触发,并且是阻塞操作。如果您的就绪或阻塞队列不在主内存中,那么如何阻止当前执行的线程并安排另一个?你不能。

将数据传输到辅助存储器(例如硬盘)或从辅助存储器传输数据的速度很慢。在此期间阻止执行所有其他执行线程将严重降低系统速度。因此,在传输数据时,通常会阻止生成页面错误的线程。

如果所有主存储器到辅助存储器数据传输通道都已被使用,或者另一个线程已经将页面从辅助存储器传输到主存储器,或者如果内部结构跟踪哪些页面,则线程也可以阻塞在主存中被操纵。 (也可能有其他原因。)

希望这有帮助。