【发布时间】:2014-03-24 02:07:22
【问题描述】:
我正在阅读 Charles Crowley 的操作系统。
在第 5 章实现进程中,他们详细阐述了进程切换流程,并说明了一些关于系统堆栈的内容。
很遗憾,我不了解系统堆栈的工作原理。
我的问题: 在正常编程中,每次调用过程时,我们都会将 PC 保存在堆栈中,并在返回后将其弹出。但是在操作系统环境下,书上说系统栈被重新初始化到栈顶(意思是AFAIHU,删除过程调用的历史)。
引自书中:
操作系统是用高级语言编写的。编译器假定它正在运行具有正常堆栈的正常进程。由于操作系统不同,我们必须欺骗编译器做我们想做的事。我们通过重新初始化并因此在调度进程时丢弃系统堆栈来做到这一点。系统内部对调度程序的过程调用将永远不会返回,但编译器会设置一个堆栈帧,假设它会。
那么它如何跟踪返回的位置。 (何时返回是调度程序部分 AFAIHU)。
不幸的是,在第 5 章中,要么他们没有提供解释目的的正确上下文,要么我没有阅读足够多的次数,或者我很难理解它。
请提出一个简单的解释或参考来阅读。 谢谢
【问题讨论】:
标签: operating-system