2.2.3.2隐式用户抢占 当内核处理完内核空间的进程并准备把控制权传递到用户空间的进程时,它首先查看应该把控制权传递到哪一个用户空间的进程。而这个进程也许不是传递其控制权到内核的那个用户空间进程。例如,如果进程A调用了系统调用,系统调用完成之后,内核可能把系统的控制权传递给进程B。 出现这种情况的主要原因是系统中的每一个进程有一个“必须重新调度”标志,在进程应该被重新调度的任何时候设置它。 3.3 uClinux在ARMulator的移植 尽管uClinux很小,但它支持Linux2.6内核约定的全部的特性,包括内核优先级特性以及许多的文件系统,设备驱动。为Linux约定设备驱动端口是容易实现的。几乎所有的代码不需要改变就可以编译,除了从虚拟地址到物理的内存镜像外。 下面将介绍如何将uClinux 2.6.5移植到基于GDB的ARMulator上。 1. 从uClinux.org站点上下载uClinux发布包 ,本文以uClinux-dist.20040408.tar.gz为例。 3. 从uclinux.org站点上更新的ARM-ELF工具链来编译内核,本文以arm-elf-tools-20040427.sh为例。 4. 构造虚拟硬件环境ARMulator(ARM仿真) 5. 安装工具链。以root身份登陆宿主机下的Llinux系统,然后在终端中进入存放工具链的所在目录,然后输入/bin/sh arm-elf-tools-20040427.sh 6. 解压uClinux发布包 并将linux2.6.5源文件和补丁解压到相同目录下。 7. 修改vendors/GDB/ARMulator目录下面的ARMulator默认的配置文件rc |