栈:
英特网Web浏览器将最近访问的站点地址存储在栈中。每当用户访问一个新网页时,这个网页的地址就被压入地址的栈中。浏览器允许用户利用“返回”按钮回到用户上次访问的页面。
队列:
利用队列可以进行多道程序设计。将所有可运行线程存储在队列Q中,当CPU准备向一个线程提供时间片时,对队列执行dequeue操作,获得下一个可用的可运行进程,称这个线程为T。但是,在CPU开始执行T的指令之前,它会启动一个运行在硬件集中的定时器,该定时器被设置成在一段固定的时间后过期。CPU现在在等待直到线程T阻塞自己,或者定时器到期。后一种情况下,CPU停止线程T的执行,并执行enqueue操作,将T置于当前可运行线程队列的队尾。不管是哪一种情况,CPU都将T的程序计数器的当前值存储在T的方法栈的栈顶,并处理从队列Q提取的下一个可用的可运行进程。这样,CPU保证每个可运行线程具有公平的时间共享。因此,利用简单队列数据结构和一个硬件停表,操作系统就能避免CPU被独占。
阅读(1036) | 评论(0) | 转发(0) |