uClinux是基于linux内核的一个新内核,主要用于嵌入式市场上没有MMU的CPU。由于uClinux没有MMU,所以在内存管理方面与linux存在很大差异,它将不支持虚拟内存技术,也没有内存保护,运行时只能直接访问物理内存。uClinux采用物理存储器管理策略,对物理内存的管理仍采用分页管理方式(页一般为4KB),加载应用程序时采用分页加载的方式。
由于uClinux没有内存保护,所以任何一个无特权的进程调用一个无效指针都会触发一个地址错误,可能导致整个系统的挂起甚至崩溃。所以在编写代码时需要特别小心。
没有虚拟内存使得linux下所有标准的可执行文件格式在uClinux下都不被支持,uClinux使用PIC(位置无关)或ELF(固定基准地址)方法来解决这个问题。另外没有虚拟内存使得内存的分配和释放策略也与linux不同;应用程序可分配内存空间都不应大于实际物理内存。最后由于缺乏内存管理的硬件单元,uClinux的一些系统调用也需要做些改变,也没有实现可自动生长的堆栈,最大的不同就是没有fork和brk系统调用。
PS:内存分配和释放处还没看明白。
支持可执行文件格式好像ELF使用较多,是否支持bin格式?