操作系统概述
1. 操作系统的概念、特征、功能
- 概念:控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境的程序集合。
- 特征:并发、共享、虚拟、异步。
- 并发。多个事件在同一个时间间隔内(时间段)发生,通过分时(引入进程)实现。
- 共享。系统中的资源可供多个并发执行的进程共同使用。分为互斥共享和同时访问两种方式。前者指进程独占资源,此时的独占资源也被称为临界资源;举例:物理设备、软件的栈、变量等。后者指宏观上多进程使用同一个资源,但微观上可能仍然是交替使用(分时共享);举例:磁盘设备的多进程读入。
- 虚拟。一个物理上的实体变为若干个逻辑上的对应物。比如一个CPU虚拟为多个逻辑上的CPU,让每一个终端用户都感觉到有一个CPU在专门为他服务。举例:虚拟CPU、虚拟内存、虚拟I/O外设等。
- 异步。因为进程的并发执行,所以可能导致进程产生与时间有关的错误(执行顺序等),但操作系统必须保证,只要运行环境相同,都必须获得相同的结果。
- 功能:处理机管理、存储器管理、设备管理(主要是I/O请求)、文件管理、为用户提供接口(命令接口和程序接口,命令接口又分为联机命令接口和脱机命令接口,比如终端命令等,程序接口则是由系统调用(请求系统服务)组成,比如键鼠的键入或点击的交互等)。
2. 库函数和系统调用的区别和联系
- 系统调用是操作系统的一部分,是内核提供给用户的程序接口,运行在内核空间(内核态)中。
- 库函数是语言或应用程序的一部分,可以运行在用户空间(用户态)中,许多库函数都会使用系统调用来实现功能。
- 没有使用系统调用的库函数,执行效率通常比使用系统调用的高。因为使用系统调用时,需要上下文的切换(变量、寄存器的值等进程上下文;硬件变量、参数等中断上下文)以及用户态向核心态的转换。
[扩展]用户态转内核态的3种主要方式
- ① 系统调用(System Call)。用户态进程主动要求切换到内核态的一种方式,会触发trap指令,如Linux的int0x80。比如fork()实际上就是执行了一个创建新进程的系统调用。系统调用的核心机制是OS为用户开放的中断来实现,凡是与资源有关的操作,都要经过系统调用。
- ② 异常(也叫内中断、例外或陷入trap)。CPU在执行用户态的某程序时,发生了某异常,这时会触发当前进程切换到处理该异常的内核相关程序中,也就转到了内核态。分为故障fault、陷阱trap和终止abort三类。例如缺页异常。
- ③ I/O设备的中断。当外设完成用户的请求的操作时,会向CPU发送中断信号,这时CPU会暂停当前的指令A,转而执行与中断信号对应的处理程序。如果指令A是用户态下的程序,那么这个转换过程就发生了由用户态到内核态的切换,例如硬盘读写操作的完成。
- 第一种System call是进程主动发起的,后两种是被动的。
- 以下内容的指令在内核态:
- 与硬件关联较密切的模块,诸如时钟管理、中断处理、设备驱动等;
- 其次是运行频率较高的程序:进程管理、存储器管理、设备管理等。
- 访管中断:操作系统不允许系统直接执行某些“危险性高”的指令,故用户态运行这些指令的时候会转换到内核态去运行。访管指令不是特权指令(因为是用户态使用的)。流程:当用户态的用户程序使用访管指令时,系统根据访管指令的操作数执行访管中断处理程序,该程序将按照系统调用的 操作数和参数转到相应的例行子程序,完成服务功能后,退出中断,返回到用户程序断点继续执行。
- 时钟管理:计时功能;用以实现进程切换的时钟中断功能。
- 原语:被调用频繁、完成一个规定操作的、具有原子性的操作系统最底层的小程序。
- 用来登记状态信息(上下文)的数据结构主要有:作业控制块、进程控制块、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存分配表等。
- 内核态指令包括:系统调用类指令和一些针对时钟、中断和原语的操作指令。
- 特权指令,是指操作系统或其他系统软件的指令:清内存、置时钟、分配系统资源、修改虚存的段表或页表、修改用户的访问权限等。用户态下只能使用非特权指令,内核态下可以使用除访管指令外的所有指令。
3. 操作系统的发展
- 操作系统出现前:手工操作阶段、批处理阶段(单道、多道)。多道批处理系统:多个程序同时进入内存并运行,当某程序因I/O请求暂停运行时,CPU立刻转去另一个程序,没有使用机制来解决瓶颈问题。多道优点:资源利用率高,多道程序共享资源,系统吞吐量大;缺点:用户响应时间长,不提供人机交互能力。
- 操作系统出现后:分时操作系统、实时操作系统、网络操作系统和分布式操作系统、个人计算机操作系统。
- 分时操作系统:在一台主机上连接了多个终端,允许许多用户同时通过自己的终端,以交互方式独立地使用计算机。技术上把CPU运行时间分成时间片,CPU被轮流分配到各联机作用使用,使用户的请求得到及时的响应。
- 实时操作系统:与分时操作系统底层原理相同,但要求在规定时间内完成特定功能。特点:及时可靠具有一定的紧迫性,有多种划分方式:
- 按任务执行是否有周期性变化:周期性实时任务和非周期性实时任务。前者由外设周期性发送激励信号(即某一类电路信号/输入信号,如时钟和复位信号)给计算机,要求它按指定周期执行;后者所发的激励信号无明显的周期性(如文件读写),但必须联系一个截止时间(用以控制运行的实现)。
- 按截止时间的要求:硬实时任务和软实时任务。字面意思不解释。
- 网络操作系统和分布式计算机系统:网络中多台计算机结合起来,统一使用管理。特点:分布式和并行性。条件:
- 以通信的方式实现信息交换;
- 每台计算机地位同等,没有主从关系;
- 每台计算机上的资源为所有用户共享;
- 任意若干台计算机可以组成子系统,并且能够重构;
- 任何工作都能分布到几台计算机中,由它们并行工作、协同完成(分布式计算机系统的独有特点,网络操作系统没有此特点)。
- 个人计算机操作系统:目前应用最为广泛,常见win、Linux、Macintosh等。此外还有嵌入式、服务器、多处理器操作系统等。