目录
操作系统的基本概念
操作系统的概念
操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统种最基本的系统软件
- 操作系统是系统资源的管理者
- 向上层提供方便易用的服务
操作系统的功能和目标
- 作为系统资源的管理者
- 提供的功能
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
- 目标:安全、高效
- 提供的功能
- 向上层提供方便易用的服务
-
命令接口
- 联机命令接口(交互式命令接口)
- 脱机命令接口(批处理命令接口):
-
程序接口:可以再程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用
批处理命令接口,也被称为批处理接口,是操作系统中的一种接口形式,主要用于批处理系统。它由一组作业控制命令组成,用户可以通过输入一系列的指令,然后由操作系统执行这些指令。在操作系统运行这些命令的过程中,用户通常无法进行干预。
批处理命令通常以.bat或.cmd为扩展名,它们可以在Windows操作系统中自动执行任务。批处理命令有很多,包括用于在控制台显示文本信息的echo,用于创建或修改环境变量的set,用于在批处理文件中进行条件判断的if,用于循环读取文件或列表中的数据的for,用于跳转到批处理文件中的指定标签的goto,用于调用另一个批处理文件的call,用于创建新的目录的md或mkdir,用于删除文件的del,以及用于复制文件或目录的copy等。
总的来说,批处理命令接口提供了一种方便、自动化的方式来执行一系列的任务,提高了计算机操作的效率。操作系统中的程序接口为程序员提供了与操作系统进行交互的方式,以执行各种系统级别的操作。以下是一些常见的操作系统中的程序接口的例子:
文件操作接口:这些接口允许程序员对文件系统进行操作,如打开、关闭、读取、写入、删除文件等。例如,在C语言中,可以使用fopen、fclose、fread、fwrite、remove等函数来执行这些操作。
进程管理接口:这些接口用于创建、终止、管理进程。在Unix或Linux系统中,可以使用fork来创建新的进程,使用exec系列函数来执行新的程序,以及使用kill来发送信号以终止进程。
内存管理接口:操作系统提供了用于分配和释放内存的接口。例如,在C语言中,可以使用malloc和free函数来动态地分配和释放内存。
设备驱动接口:这些接口允许程序员与各种硬件设备进行交互,如磁盘、打印机、网络设备等。通常,设备驱动程序会提供特定的API供程序员调用,以实现对设备的控制。
网络编程接口:操作系统提供了用于网络编程的接口,如套接字(sockets)。这些接口允许程序员创建网络连接、发送和接收数据等。
系统调用接口:系统调用是操作系统提供给程序员的最底层的接口。它们允许程序员请求操作系统执行底层任务,如进程调度、内存管理、文件操作等。每个操作系统都提供了一套系统调用,这些系统调用通常以库函数的形式提供给程序员使用。
-
- 实现对计算机资源的扩展
- 裸机的概念:没有任何软件支持的计算机
- 通常把覆盖了软件的机器称为扩充机器,又称为虚拟机
操作系统的特征
并发与并行
并发:指两个或多个事件再同一时间间隔内发生。这些时间宏观上是同时发生的
,但微观上是交替发生的
并行:指两个或多个事件在同一时刻同时发生
操作系统的并发性
:计算机系统中同时运行着多个程序,这些程序宏观上看是同时运行着 ,而微观上看是交替运行的。
单核cpu同一时刻只能执行一个程序,各个程序只能并发地执行
多核cpu同一时刻可以同时执行多个程序,多个程序可以并行地执行
共享
:资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用
互斥共享:qq和微信视频
同时共享:使用qq发送文件A和微信发送文件B
虚拟
:把一个物理上的实体变为若干逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上的对应物(后者)是用户感受到的。
时分复用技术:单核cpu的计算机中多个程序在运行,看起来有多个cpu在同时为自己服务(虚拟处理器)
空分复用技术:计组虚拟存储技术
异步
:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的。而是走走停停,以不可预知的速度向前推进
操作系统的发展历程
手工操作阶段
这个阶段没有操作系统,用户在计算机上算题的所有工作都要人工干预。
批处理阶段
单道批处理系统
引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出
主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升
主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。
cpu有大量的时间是在空闲等待I/O完成。资源利用率依然很低。
特征:
- 自动性
- 顺序性
- 单道性
多道批处理系统
特征
- 多道:计算机内存中同时存放多道相互独立的程序
- 宏观上并行
- 微观上串行
分时操作系统
计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互
特征
- 同时性
- 交互性
- 独立性
- 及时性
实时操作系统
主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完时间。实时操作系统的主要特点是及时性和可靠性
操作系统运行环境
处理器运行模式
特权指令
和非特权指令
特权指令:操作系统内核作为管理者,有时会让cpu执行一些特权指令,如内存清零指令。这些指令影响重大,只允许管理者,即操作系统内核来使用。
应用程序只能使用非特权指令,如加法指令、减法指令。
内核态
和用户态
处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令
cpu中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示内核态,0表示用户态。
中断和异常
系统调用
什么是系统调用?
系统调用是操作系统提供给应用程序使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
高级语言的库函数调用了系统调用
操作系统的体系结构
内核时操作系统最基本、最核心的部分
实现操作系统内核功能的那些程序就是内核程序
分层结构
每层只能调用紧邻它的低层的功能和服务。
优点:
- 便于调试和验证(想一下就清楚了)
- 易于扩充和维护
缺点:
- 仅调用相邻层,比较难以定义层的边界
- 效率低
模块化
内核=主模块+可加载内核模块
宏内核和微内核
外核
外核负责给进程分配未经抽象
的硬件资源
(普通的内核给进程分配的资源是经过抽象的,如内存分配的是虚拟内存)
操作系统的引导
什么是操作系统的引导?
操作系统的引导是指在计算机启动时,硬件加载并执行操作系统的过程。这个过程通常包括以下几个步骤:
BIOS/UEFI阶段:
计算机开机后,首先执行的是基本输入/输出系统(BIOS)或统一可扩展固件接口(UEFI)。
BIOS/UEFI是存储在计算机主板上的固件程序,负责初始化硬件并启动引导过程。
在这个阶段,BIOS/UEFI会执行POST(电源自检)来检查硬件的状态和配置。
引导设备的选择:
BIOS/UEFI会查找配置中指定的引导设备,通常是硬盘、固态硬盘或者光盘。
它们会按照设备的引导顺序(Boot Order)来查找引导设备。
加载引导程序:
一旦选择了引导设备,BIOS/UEFI会从该设备的引导扇区(通常是主引导记录)中读取引导加载程序。
在传统的MBR分区方案中,主引导记录(MBR)的大小为512字节,其中前446字节存储引导加载程序。
引导加载程序的执行:
引导加载程序(如GRUB、LILO等)负责加载操作系统内核到内存中,并传递控制权给操作系统内核。
引导加载程序还可以提供菜单以选择启动哪个操作系统(如果有多个操作系统安装在计算机上)或者启动参数的选项。
内核初始化:
一旦引导加载程序将内核加载到内存中,操作系统内核开始初始化并接管对计算机的控制。
内核会初始化系统的各种子系统、设备驱动程序以及用户空间的运行环境。
用户空间的启动:
内核初始化完成后,操作系统会启动用户空间的进程,例如初始化系统服务、启动登录管理器(如GDM、LightDM等)等。
磁盘
最开始的磁盘是空空如也
安装完操作系统后的磁盘
操作系统的引导,又称引导加载程序、开机启动程序或启动加载程序,是计算机开机过程中的一个重要环节。它允许计算机重新启动并能够执行用户和系统软件。操作系统引导是操作系统加载进入计算机后的第一步操作,能够检测并检索用户设备所需的所有操作系统文件以及硬件配置。
具体来说,操作系统的引导过程大致如下:
计算机在启动时,BIOS开始运行,检查所安装的RAM数量、键盘和其他基本设备是否已安装并正常响应。然后CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序。
将磁盘的第一块,即主引导记录(MBR)读入内存,执行磁盘引导程序,扫描分区表。
从活动分区(又称为主分区,即安装了操作系统的分区)读入分区引导记录(PBR),执行其中的程序。
从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成开机的一系列动作。
操作系统引导一般由三部分组成:引导装载程序(也叫软件引导程序),包括识别和维护硬件配置信息、验证输入设备、加载和解析操作系统、版本管理、安全控制和系统配置的程序。
总的来说,操作系统引导是计算机开机过程中不可或缺的一环,它使得计算机能够顺利加载操作系统并为用户提供服务。
虚拟机
使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(Virtual Machine,VM),每个虚拟机器都可以独立运行一个操作系统
虚拟机(Virtual Machine)是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
虚拟机管理程序(Virtual Machine Monitor,VMM)是用于管理和维护主机上的虚拟机的软件层。它充当物理硬件和虚拟机之间的接口,确保所有虚拟机从硬件获得所需的处理能力和资源
- 第一类虚拟机管理程序或“裸机”管理程序:它们直接与硬件和物理资源进行交互,创建虚拟机实例。
- 第二类虚拟机管理程序:这类管理程序安装在主硬件中的操作系统上的应用程序中,主要用于端点设备以运行替代操作系统。