什么是操作系统?
简单讲,操作系统(Operating System, OS )是管理计算机硬件与软件资源的计算机程序。它就是一个复杂点的程序。计算机软件大致可以分为两类,系统软件和应用软件。系统软件负责管理计算机本身的运作,而应用软件则负责完成用户所需要的各种功能。操作系统就是最基本的系统软件,它负责管理计算机的所有资源并提供一个可以在其上编写应用程序的平台。
操作系统的主要功能
操作系统的一个主要功能就是封装硬件的复杂性,让用户可以更加简单的使用计算机,高效的利用计算机的资源(CPU、内存等)。
- 提供图形界面,让普通用户也可以轻松的使用计算机。
- 作为资源管理器:现代计算机都包含处理器、存储器、定时器、磁盘、网络接口以及其他的各种设备,这些设备是计算机上所有程序共享的硬件资源,操作系统的一个主要任务就是在相互竞争的程序之间, 有序地控制这些硬件资源的分配。
- 作为扩展机:对绝大多数人而言,在机器语言一级的体系结构(指令集、存储组织、I/0和总线结构)上编程是比较困难的,操作系统的另一个功能就是为用户提供一个相对简单、好用的编程平台,用户可以通过一些称之为系统调用的特殊指令来控制系统硬件。
用户态和内核态
多数处理器都有两种状态,即用户态和内核态。区分用户态和内核态主要是为了限制用户程序的访问权限,用户态供用户程序使用,在该状态下不能使用特权指令,只能访问用户程序自己的用户空间,占有的处理器可以被抢占的;内核态供操作系统使用,在该状态下可以执行所有的指令,能访问所有的内存空间和对象,所占有的处理器是不允许被抢占。
中断,异常与系统调用
中断是处理器应对系统突发事件的处理过程,当系统发生中断时,处理器暂停正在执行的程序,保存现场后去处理对应的程序,处理完成后再返回中断处恢复原程序执行,整个过程对于被中断程序是无感的。如时钟中断、I/O中断。还有一类由程序执行错误引起的中断,如地址越界、除零操作,这类由处理器内部引起的中断就是异常(陷入)。
前面说过,操作系统帮我们封装了硬件的复杂性,操作系统提供了各式各样的服务,用户程序可以通过一些特殊指令来使用这些服务,这写特殊指令称之为系统调用。如创建一个进程、打开或关闭一个文件。系统调用就好比操作系统内核提供的一个函数,只是我们用户空间的程序无法直接调用内核空间的函数,只能通过系统调用间接的调用。