进程独立
在目前的操作系统里(如:linux,BSD,winxp等),实现进程的独立(我所理解的进程独立是进程拥有自己的地址空间和相关的访问机制)是通过硬件实现的。是这样吗?如果是这样的话,那我相信如果一个进程非法访问了另一个进程(如:进程A非法将数据写入了进程B),系统一定报硬件错误。我查了一下资料,应该会报一个叫做“#GP”的错误。而这个错误的产生过程通常是跟特权级相关联的。如果以上猜测都是对的话,那是否可以说目前的操作系统的“进程独立”是通过特权级保护(硬件)去实现的?如果以上说法都是对的,那如何由软件的方式(取代硬件的方式)实现进程独立?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
没有硬件支持的情况下,除了反复复制,没有第二条出路
“进程能执行的服务都是定义好了的“,我相信是硬件定义好的,以保护进程代码和数据。现在是要将这套机制(硬件)去掉,用纯软件的方式实现该如何.....
进程能执行的服务都是定义好了的,所以不会有非法访问另一个进程这样的问题,就像关在笼子里的老虎不用假设她会随便咬人一样
你提到的检测是我最头痛的事情,目前我也没有头绪,但我知道这个方式已有系统实现了(但它具体是任何实现,目前还不知道),且效率很高(应该不是通过数据复制实现的)........
这些所谓的检查都是要硬件支持的,否则就只能反复复制数据一条出路了
那你如何保证数据独立呢?在没有硬件级的支持下
为何要复制数据?我的理解是,在不同进程之间切换的话,要不断的保护现场和恢复现场(寄存器,堆栈等),并不需要复制数据吧(只需要告诉进程的起始地址(物理地址)及作相应的边界检测和增加访问机制就应该差不多了,是吗?)......
MMU来模拟切换,通过软件理论上也可不断切换,但软件的不断复制数据实在太慢,因此根本不现实.
你试想,为什么软件实现慢呢,比如每一个进程有着独立的2G空间,没有硬件级的支持,纯软,怎么办呢?只好在这个进程不用的时候,把其纯2G的内存数据压到固定存储上,每当进程切换的时候,就必须要把所有的2G数据都先保存,然后再调2G数据出来,这个,太恐怖了
回复 1# kallytin
顶一下