现代计算机系统由一个或多个处理器、主存、磁盘、打印机、键盘、鼠标、显示器、网络接口以及各种其他输入输出设备组成。而操作系统是指控制和管理这些硬件设备和软件资源,并合理地组织调度计算的工作和资源的分配,以提供给用户和其他软件方便的接口和环境。

自底往上看,操作系统是属于系统软件,是系统资源的管理者,包含但不限于处理器管理、存储器管理、文件管理、设备管理,他的主要任务是在相互竞争的程序之间有序的控制对处理器、存储器以及其他I/O接口设备的分配。

自下往上看,操作系统作为用户和计算机硬件之间的接口,为用户、应用程序提供服务。提供的功能分为命令接口、程序接口以及图形用户界面(GUI)。其中命令接口分为联机命令接口和脱机命令接口,允许命令直接使用;程序接口是允许用户通过程序间接调用,他由一组系统调用组成;图形用户界面是指利用图形化的操作使得用户和系统进行交互。

操作系统作为最接近硬件的层次,主要提供的功能是使得对硬件机器拓展。其中很重要的一点是抽象,比如操作系统将硬盘操作抽象成文件的操作。还有就是兼容,

操作系统特征

操作系统的主要特征为并发、共享、虚拟和异步,其中并发和共享是最基本的特征,二者互为存在条件。

并发是指两个或多个事件在同一事件间隔内发送,这些事件宏观上同时发送的,但是在微观上交替发生的。(这里需要区别并行:是指两个或多个事件在同一时刻同时发生)。一个单核处理器同一时刻只能执行一个程序,因此操作系统会负责协调多个程序交替执行。

共享即资源共享,是指系统中的资源可供内存中多个并发执行的进行共同使用。资源共享分为互斥共享与同时共享,互斥是指一个一个时间段只允许一个进程访问该资源。同时共享是允许一个时间段内多个进程“同时”对他进行访问(分时共享)。

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物,虚拟技术分为时间上复用和空间上复用,对于时间上复用例子为单核CPU在宏观上处理多个进程,对于空间上复用例子为每个进程都得到资源的一部分,如内存的使用。

异步是指躲到程序中,允许多个程序并发执行,但是由于资源优先,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推送,这就是进程的异步性。

操作系统发展与分类

时间 分类 说明
1945-1955 真空管和穿孔卡片 缺点:用户独占全机,人机速度矛盾导致资源利用率极低
1955-1965 晶体管和批处理系统 引入脱机输入输出技术,监督程序
优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升;
缺点为内存中仅能有一个程序运行,只有程序运行结束以后才能处理下一个程序,CPU有大量的时间是空闲等待IO完成,资源利用率低
1965-1980 集成电路和多道程序设计 操作系统正式诞生,引入中断技术,由操作系统负责管理这些程序的运行,程序并发执行,系统吞吐量增大
1980至今 个人计算机 -
1990至今 移动计算机 -

体系结构

分为大内核与微内核两种

分类 说明 优缺点
大内核 将操作系统的主要功能模块都作为系统内核,运行在核心态 优点:高性能;
缺点:内核代码庞大,结构混乱,难以维护
微内核 只要最基本的功能保留在内核 优点:内核功能少,结构清晰方便维护;
缺点:需要频繁地在核心态和用户态之间切换,性能低

基础概念

进程

是一个程序执行的过程,执行前需要将该程序放到内存中,才能被CPU处理。进程的本质是正在执行的一个程序,与每个进程相关的是地址空间(address space),在这个地址空间中进行可以进行读写,该地址空间中存放可执行程序、程序的数据以及程序的堆栈。换句话说,进行基本上是容纳运行一个程序需要所有信息的容器。

地址空间

地址空间存放进程的相关数据,允许处理器的读写。对于32位或者64位地址的计算机中,分别有2^32和2^64字节的地址空间,基于虚拟内存计算,操作系统把部分地址空间装入主存,部分留在磁盘上,并且在需要时来回交换他们,本质上操作系统创建了一个地址空间的抽奖,作为进行可以引用地址的集合,

文件

操作系统的一项主要功能是隐藏磁盘和其他IO设备的细节特征,从而抽象成了文件系统。文件系统利用目录和层的概念对文件进行组的划分与管理。对于读取文件之前,流程是先打开文件,检查其访问权限,有权限则系统返回个小整数,称为文件描述符,供后续操作使用,若没权限,系统则返回一个错误码。

而对于linux系统来说,一切皆为文件,而设备被抽象为特殊文件,分为块特殊文件和字符特殊文件,块特殊文件是指哪些由可随机存取的块组成的设备,如磁盘等;字符特殊文件英语打印机、调制解调器和其他接受或输出字符流的设备,按照惯例,特殊文件保存在/dev目录中。

管道是一种虚文件,它可直接连接两个进程。

输入/输出

所有操作系统都有用来获取输入和产生输出的物理设备,包括键盘、显示器、打印机等。对于这些设备。

中断与异常

解决系统资源利用率低的问题,引入中断机制,实现多道程序并发执行。发送中断意味着需要操作系统介入,开展管理工作。

中断分为内中断和外中断。内中断也称为异常、例外、陷入,信号来源CPU内部与房钱执行的之类有关,包含自愿中断、强迫中断(硬件故障,软件中断)等,主要为陷阱、陷入、故障、终止;外中断的信号来源CPU外部与当前执行的指令无关,包含外设请求。人工干预等。

用户态、核心态、指令

用户态和内核态是指处理器的两种状态。指令分为特权指令和非特权指令,在CPU为内核态的时候可以特权指令和非特权指令,档位用户态的时候,只能执行非特权指令。

用户态切换到核心态是通过中断实现的,并且中断是唯一途径。核心态到用户态的切换是通过执行一个特权指令,该指令是将程序状态字PSW的标志位设置为用户态。

操作系统内核

内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分,实现操作系统内核功能的程序称为内核程序。操作系统的内核主要负责时钟管理、中断处理、原语、对系统资源进行管理等。

系统调用

应用程序通过系统调用请求操作系统的服务,系统中的各种共享自愿都由操作系统统一掌管,因此在用户程序,凡是与自愿有关的操作,都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。

系统调用需要执行一些特权指令才可以完成,因此系统调用相关处理需要在核心态进行。

系统调用的功能分类 说明
设备管理 完成设备的请求、释放、启动等功能
文件管理 完成文件的读写创建删除等功能
进程控制 完成进程创建、撤销、阻塞、唤醒等功能
进程通信 完成进程职级的消息传递、信号传递等功能
内存管理 完成内存的分配、回收等功能