我们对于操作系统很难进行一个精确的定义。但是一般来说,操作系统是运行在裸机之上的,它为上层应用软件的运行提供了环境。同时,操作系统一般来说总是运行在内核态的。
其中一种观点是:“操作系统给上层应用软件提供了一种抽象,将硬件给隐藏了起来(对于上层应用软件的设计者而言,并不关心底层的硬件。),给上层应用软件提供一个抽象的接口”。这种观点是自顶向下的。另外一种观点是自底向上的,它将操作系统看做是管理计算机这个复杂系统的。从这个观点来看,操作的功能是合理的对硬件资源进行分配(包括CPU,磁盘,内存等)。