Chinaunix

标题: 进程独立 [打印本页]

作者: kallytin    时间: 2010-11-24 08:40
标题: 进程独立
在目前的操作系统里(如:linux,BSD,winxp等),实现进程的独立(我所理解的进程独立是进程拥有自己的地址空间和相关的访问机制)是通过硬件实现的。是这样吗?如果是这样的话,那我相信如果一个进程非法访问了另一个进程(如:进程A非法将数据写入了进程B),系统一定报硬件错误。我查了一下资料,应该会报一个叫做“#GP”的错误。而这个错误的产生过程通常是跟特权级相关联的。如果以上猜测都是对的话,那是否可以说目前的操作系统的“进程独立”是通过特权级保护(硬件)去实现的?如果以上说法都是对的,那如何由软件的方式(取代硬件的方式)实现进程独立?
作者: kallytin    时间: 2010-11-24 08:41
回复 1# kallytin


    顶一下
作者: cjaizss    时间: 2010-11-24 08:50
MMU来模拟切换,通过软件理论上也可不断切换,但软件的不断复制数据实在太慢,因此根本不现实.
你试想,为什么软件实现慢呢,比如每一个进程有着独立的2G空间,没有硬件级的支持,纯软,怎么办呢?只好在这个进程不用的时候,把其纯2G的内存数据压到固定存储上,每当进程切换的时候,就必须要把所有的2G数据都先保存,然后再调2G数据出来,这个,太恐怖了
作者: kallytin    时间: 2010-11-24 09:10
MMU来模拟切换,通过软件理论上也可不断切换,但软件的不断复制数据实在太慢,因此根本不现实.
你试想,为什么 ...
cjaizss 发表于 2010-11-24 08:50



    为何要复制数据?我的理解是,在不同进程之间切换的话,要不断的保护现场和恢复现场(寄存器,堆栈等),并不需要复制数据吧(只需要告诉进程的起始地址(物理地址)及作相应的边界检测和增加访问机制就应该差不多了,是吗?)......
作者: cjaizss    时间: 2010-11-24 09:22
为何要复制数据?我的理解是,在不同进程之间切换的话,要不断的保护现场和恢复现场(寄存器,堆 ...
kallytin 发表于 2010-11-24 09:10



    那你如何保证数据独立呢?在没有硬件级的支持下
作者: cjaizss    时间: 2010-11-24 09:22
为何要复制数据?我的理解是,在不同进程之间切换的话,要不断的保护现场和恢复现场(寄存器,堆 ...
kallytin 发表于 2010-11-24 09:10



    这些所谓的检查都是要硬件支持的,否则就只能反复复制数据一条出路了
作者: kallytin    时间: 2010-11-24 09:57
这些所谓的检查都是要硬件支持的,否则就只能反复复制数据一条出路了
cjaizss 发表于 2010-11-24 09:22



你提到的检测是我最头痛的事情,目前我也没有头绪,但我知道这个方式已有系统实现了(但它具体是任何实现,目前还不知道),且效率很高(应该不是通过数据复制实现的)........
作者: flw2    时间: 2010-11-24 10:15
进程能执行的服务都是定义好了的,所以不会有非法访问另一个进程这样的问题,就像关在笼子里的老虎不用假设她会随便咬人一样
作者: kallytin    时间: 2010-11-24 10:42
进程能执行的服务都是定义好了的,所以不会有非法访问另一个进程这样的问题,就像关在笼子里的老虎不用假设 ...
flw2 发表于 2010-11-24 10:15


“进程能执行的服务都是定义好了的“,我相信是硬件定义好的,以保护进程代码和数据。现在是要将这套机制(硬件)去掉,用纯软件的方式实现该如何.....
作者: cjaizss    时间: 2010-11-25 11:07
“进程能执行的服务都是定义好了的“,我相信是硬件定义好的,以保护进程代码和数据。现在是要将这套机 ...
kallytin 发表于 2010-11-24 10:42



    没有硬件支持的情况下,除了反复复制,没有第二条出路
作者: kallytin    时间: 2010-11-25 12:15
没有硬件支持的情况下,除了反复复制,没有第二条出路
cjaizss 发表于 2010-11-25 11:07


好像是有其他办法实现........

微软好像搞了一个研究,Singularity项目........
作者: cjaizss    时间: 2010-11-25 16:36
好像是有其他办法实现........

微软好像搞了一个研究,Singularity项目........
kallytin 发表于 2010-11-25 12:15



    之所以我说没有第二条出路,就在于,如果硬件不支持的话,你无法检测所谓的边界
作者: kallytin    时间: 2010-11-26 10:50
回复 11# kallytin

有谁知道吗?
作者: cjaizss    时间: 2010-11-27 23:44
回复  kallytin

有谁知道吗?
kallytin 发表于 2010-11-26 10:50



    谁也不能管一个进程的指令在怎么用,除非这个指令是非法的,或者权限不够,这些都是硬件级的限制。操作地址也是通过指令来的,只有当硬件级支持了,才会发现你的访问指令在这种情况下是有问题的,引发一个异常,类似中断了。
作者: smalloc    时间: 2010-11-29 18:49
用软件模拟硬件.那个叫模拟器
楼主自己在网上搜索下吧




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2