每个操作系统都是基于计算机的硬件设备的,不管它的设计,实现,还是特性,都要依赖于一定的硬件。所有的硬件中,中央处理器(CPU)对它的影响最大。我们知道,Linux是一个可以运行于多个不同平台的操作系统,但这并不意味着它可以抛开不同种类计算机的硬件特性。事实上,Linux是靠在不同机器上运行不同的代码来实现跨平台特性的。Linux巧妙的把与设备相关的代码按照设备型号分类安排,以便在编译时把对应的部分编入内核。如果你看过了在/usr/sur/arch目录下组织的源文件,就会发现,所有Intel386相关的代码在一个子目录下,而与Spark相关的代码在另一个子目录下。代码在编译时会得到关于平台的信息,根据这个信息,编译器决定到底包含哪一段代码。
以上这些是为了说明一点,即操作系统必须支持硬件设备特别是CPU的特性,反过来说,硬件设备也决定操作系统的特性。
具有代表性的Intel80386处理器大家一定不会陌生,它支持多任务并发执行,它的结构和机能完全是为此设计的。根据对80386保护模式的了解(详见第二章),我们可以看出,操作系统根据80386提供的机制,对计算机的资源(主存储器空间、执行时间及外围设备)进行分配和保护。通过把这些资源分配给系统中的各个任务,并对资源进行保护,是所有的任务得以有效的运行直至完成。80386的存储管理及保护机制,保护(系统中的)每一个任务不被另外的任务破坏。例如,操作系统通过使用存储管理机制,保证分配给不同任务的存储区互不重叠(共享存储区域除外);通过使用保护机制,保证系统中任何一个用户任务都不能访问分配给操作系统的存储区域。
请注意,80386提供保护机制,也提供段页式的两层内存管理,但在操作系统初始化之前,它却运行于一个既不支持保护机制,也不支持页机制的实模式下的。在这个模式下,根本没法实现多任务并发处理,所以,在一个要求实现多任务并发处理的操作系统的初始化程序中,就必须加入使80386进入保护模式的代码。这就是处理器对启动任务影响的一个例子。