WM操作系统是否会保护进程内存? 一个写得不好的应用程序是否会崩溃其他应用程序只是错误地写入第一个内存?
答案 0 :(得分:3)
至少在所有当前版本中,Windows Mobile都是基于Windows CE 5.0构建的,因此使用CE 5.0's memory model(与CE 3.0中的相同)。操作系统实际上并没有为保护进程内存做很多事情,但它足以使通常保持进程不会相互干扰。但这并不困难和快速。
CE进程在“插槽”中运行,其中有32个。当前正在运行的进程被交换到插槽零,并且它的地址重新基于零(因此运行进程中的所有内存实际上都有2个地址,插槽0地址和非零时隙地址)。这些地址被检测到(虽然有simple API call跨越边界)。这意味着指针损坏等不会踩到其他应用程序,但如果你想要,你仍然可以。
CE也有共享内存的概念。所有进程都可以访问此区域,并且100%不受保护。如果您的应用程序使用共享内存(并且内存管理器可以为您提供共享地址,而无需您具体询问,具体取决于您的分配及其大小)。如果您有共享内存,那么任何进程都可以访问该数据,包括破坏它,并且在任何一个进程中都不会出现错误或警告。
答案 1 :(得分:1)
WM操作系统是否保护进程内存不相互阻碍?
是
一个写得不好的应用程序是否会因为错误地写入第一个内存而导致某些其他应用程序崩溃?
否(但它可能会做其他事情,比如耗尽所有'磁盘'空间)。
即使您是设备驱动程序,要获得写入由其他进程拥有的内存的权限,您必须明确调用API。
答案 2 :(得分:1)
虽然ChrisW的答案在技术上是正确的,但我对Windows mobile的体验是,从应用程序崩溃整个设备比在桌面上崩溃要容易得多。我可以猜出为什么会出现这种情况的几个原因;
操作系统通常比Windows桌面更加大量OEM,即制造商特定的低级代码量可能非常高,这导致制造商特定的错误处于可能导致错误崩溃的级别。在许多设备上,通常每个月左右都会看到一个新的固件版本,修订版本修复了这些错误。
资源稀缺,耗尽所有可用资源的应用程序容易导致崩溃。
保护机制和架构有很大差异。我目前使用的设备是基于SH4的,而你主要看到ARM,X86和奇怪的MIPs CPU ..