-1

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

4

2 回答 2

1

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

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

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

希望这可以帮助。

于 2013-07-09T13:24:26.170 回答
0

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

于 2013-07-09T00:21:46.187 回答