许多计算机系统的组织方式是将软件分为用户软件和系统软件。系统软件(例如操作系统内核和设备驱动程序)是负责保护和管理整个系统的软件,包括与外设交互以执行输入和输出操作,以及加载和调度用户应用程序以执行。用户软件通常仅限于对位于CPU寄存器和主存中的数据执行操作。每当用户软件需要执行一个需要与系统其他部分交互的操作时,例如从文件读取数据或在计算机显示器上显示信息,它调用系统软件为用户软件执行该操作。
在本书的这一部分中,我们将专注于用户软件的实现,即对位于CPU寄存器和主存上的数据进行操作的软件。我们还将讨论用户软件如何调用操作系统来为它执行其他操作,例如从外设中读取数据或往外设输出数据。
第三部分介绍了系统级编程,包括与外设的交互,以及保护系统不受错误或恶意用户程序的影响。