现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输出设备构成。
程序员不会直接和这些硬件打交道,而且每位程序员不可能会掌握所有计算机系统的细节,这样我们就不用再编写代码了,所以在硬件的基础之上,计算机安装了一层软件,这层软件能够通过响应用户输入的指令达到控制硬件的效果,从而满足用户需求,这种软件称之为操作系统,它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型。
我们一般常见的操作系统主要有 Windows、 Linux、FreeBSD 或 osX,这种带有图形界面的操作系统被称为图形用户界面(Graphical User Interface, GuT),而基于文本、命令行的通常称为Shell。
下面是我们所要探讨的操作系统的部件
这是一个操作系统的简化图,最下面的是硬件,硬件包括芯片、电路板、磁盘、键盘、显示器等我们上面提到的设备,在硬件之上是软件。
大部分计算机有两种运行模式:内核态和用户态,软件中最基础的部分是操作系统,它运行在内核态中,内核态也称为管态和核心态,它们都是操作系统的运行状态,只不过是不同的叫法而已。
操作系统具有硬件的访问权,可以执行机器能够运行的任何指令。
软件的其余部分运行在用户态下。
用户接口程序(Shel1 或者 GUT)处于用户态中,并且它们位于用户态的最低层,允许用户运行其他程序,例如 Web 浏览器、电子邮件阅读器、音乐播放器等。而且,越靠近用户态的应用程越容易编写,如果你不喜欢某个电子邮件阅读器你可以重新写一个或者换一个,但你不能自行写一个操作系统或者是中断处理程序。这个程序由硬件保护,防止外部对其进行修改。