多任务操作系统,对每个任务的寄存器地址怎么保护 多任务操作系统中,任务切换时,会把当前任务的寄存器地址等移到内存上。等下次它再有机会运行时,再把寄存器地址还原。我想问的是:当某个任务的寄存器地址在内存上时,如果其他程序有内存越界,那么会不会把某个任务的寄存器地址给篡改了,导致下次那个程序,再运行时崩溃?这方面操作系统有保护没? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该是保持在kernel mode的内存上,普通用户程序无法访问,也就不存在冲突崩溃的问题。 CPU时间被分成一个个的时间片后分配给不同程序轮流使用,在一个程序的时间片中,和这个程序执行无关的东西(如其他程序的代码和数据)并不需要映射到线性地址中去。 操作系统会做这种保护的。windows是这样的进程的内存需要先分配,把内存也标记为committed才可以读写,进程分配内存的时候操作系统会把他们映射到不同的物理内存地址上,从而保证不同进程的数据不会相互影响。进程试图读写没有分配的内存时会产生access violation错误,这个进程会崩溃,但不会影响到其他进程。另外,线程调度是由操作系统来做的,所以相关的数据在系统内核的,用户态程序是不能直接访问的。 就是嘛!cpu一次才能执行一个指令,不可能让别的程序破坏的,系统自己会调度! vlc视频播放窗口刷新问题 installshield打包的程序在卸载的时候报错 vector subscript out of range和Detected memory leaks! 大家帮帮忙,绘图问题 程序有错误,VS2005却直接运行 如何做一个可以指定初始位置的文件夹选择对话框 BMP灰度图像叠加字符,颜色出问题,请帮忙解决。 这段很短的代码运行时老是异常,请高手看看? 如何输入时间啊?(ado+access)在线等待..... 非c++高手莫看!!!! 单独编写个网格覆盖在另一个软件的窗口上,请问可以吗? vc,怎样在程序中用编程的方法导入导出mysql的数据
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货