王道操作系统个人向笔记-第一章

文章目录

操作系统的基本概念

操作系统的概念

操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统种最基本的系统软件

  1. 操作系统是系统资源的管理者
  2. 向上层提供方便易用的服务

操作系统的功能和目标

  1. 作为系统资源的管理者
    • 提供的功能
      1. 处理机管理
      2. 存储器管理
      3. 文件管理
      4. 设备管理
    • 目标:安全、高效
  2. 向上层提供方便易用的服务
    • 命令接口

      1. 联机命令接口(交互式命令接口)
      2. 脱机命令接口(批处理命令接口):
    • 程序接口:可以再程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用

      批处理命令接口,也被称为批处理接口,是操作系统中的一种接口形式,主要用于批处理系统。它由一组作业控制命令组成,用户可以通过输入一系列的指令,然后由操作系统执行这些指令。在操作系统运行这些命令的过程中,用户通常无法进行干预。

      批处理命令通常以.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)。这些接口允许程序员创建网络连接、发送和接收数据等。

      系统调用接口:系统调用是操作系统提供给程序员的最底层的接口。它们允许程序员请求操作系统执行底层任务,如进程调度、内存管理、文件操作等。每个操作系统都提供了一套系统调用,这些系统调用通常以库函数的形式提供给程序员使用。

  3. 实现对计算机资源的扩展
    • 裸机的概念:没有任何软件支持的计算机
    • 通常把覆盖了软件的机器称为扩充机器,又称为虚拟机

操作系统的特征

并发与并行

并发:指两个或多个事件再同一时间间隔内发生。这些时间宏观上是同时发生的,但微观上是交替发生的

并行:指两个或多个事件在同一时刻同时发生

操作系统的并发性:计算机系统中同时运行着多个程序,这些程序宏观上看是同时运行着 ,而微观上看是交替运行的。
单核cpu同一时刻只能执行一个程序,各个程序只能并发地执行
多核cpu同一时刻可以同时执行多个程序,多个程序可以并行地执行

共享:资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用

互斥共享:qq和微信视频

同时共享:使用qq发送文件A和微信发送文件B

虚拟:把一个物理上的实体变为若干逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上的对应物(后者)是用户感受到的。

时分复用技术:单核cpu的计算机中多个程序在运行,看起来有多个cpu在同时为自己服务(虚拟处理器)

空分复用技术:计组虚拟存储技术
异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的。而是走走停停,以不可预知的速度向前推进

操作系统的发展历程

手工操作阶段

这个阶段没有操作系统,用户在计算机上算题的所有工作都要人工干预。

批处理阶段

单道批处理系统

引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出

主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升

主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。

cpu有大量的时间是在空闲等待I/O完成。资源利用率依然很低。

特征:

  1. 自动性
  2. 顺序性
  3. 单道性

多道批处理系统

特征

  1. 多道:计算机内存中同时存放多道相互独立的程序
  2. 宏观上并行
  3. 微观上串行

分时操作系统

计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互

特征

  1. 同时性
  2. 交互性
  3. 独立性
  4. 及时性

实时操作系统

主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队

在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完时间。实时操作系统的主要特点是及时性和可靠性

操作系统运行环境

处理器运行模式


特权指令非特权指令

特权指令:操作系统内核作为管理者,有时会让cpu执行一些特权指令,如内存清零指令。这些指令影响重大,只允许管理者,即操作系统内核来使用。

应用程序只能使用非特权指令,如加法指令、减法指令。
内核态用户态

处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令

处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令

cpu中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示内核态,0表示用户态。

中断和异常




系统调用

什么是系统调用?

系统调用是操作系统提供给应用程序使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。

高级语言的库函数调用了系统调用


操作系统的体系结构

内核时操作系统最基本、最核心的部分

实现操作系统内核功能的那些程序就是内核程序


分层结构

每层只能调用紧邻它的低层的功能和服务。

优点:

  1. 便于调试和验证(想一下就清楚了)
  2. 易于扩充和维护

缺点:

  1. 仅调用相邻层,比较难以定义层的边界
  2. 效率低

模块化

内核=主模块+可加载内核模块

宏内核和微内核

外核

外核负责给进程分配未经抽象的硬件资源

(普通的内核给进程分配的资源是经过抽象的,如内存分配的是虚拟内存)

操作系统的引导

什么是操作系统的引导?

操作系统的引导是指在计算机启动时,硬件加载并执行操作系统的过程。这个过程通常包括以下几个步骤:

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)是用于管理和维护主机上的虚拟机的软件层。它充当物理硬件和虚拟机之间的接口,确保所有虚拟机从硬件获得所需的处理能力和资源

  • 第一类虚拟机管理程序或"裸机"管理程序:它们直接与硬件和物理资源进行交互,创建虚拟机实例。
  • 第二类虚拟机管理程序:这类管理程序安装在主硬件中的操作系统上的应用程序中,主要用于端点设备以运行替代操作系统。

相关推荐
Asa319几秒前
STM32-按键扫描配置
stm32·单片机·嵌入式硬件
游客5202 分钟前
opencv中的各种滤波器简介
图像处理·人工智能·python·opencv·计算机视觉
一位小说男主3 分钟前
编码器与解码器:从‘乱码’到‘通话’
人工智能·深度学习
Eric.Lee20215 分钟前
moviepy将图片序列制作成视频并加载字幕 - python 实现
开发语言·python·音视频·moviepy·字幕视频合成·图像制作为视频
Dontla10 分钟前
vscode怎么设置anaconda python解释器(anaconda解释器、vscode解释器)
ide·vscode·python
深圳南柯电子19 分钟前
深圳南柯电子|电子设备EMC测试整改:常见问题与解决方案
人工智能
南城花随雪。19 分钟前
单片机:实现驱动超声波(附带源码)
单片机·嵌入式硬件
Kai HVZ20 分钟前
《OpenCV计算机视觉》--介绍及基础操作
人工智能·opencv·计算机视觉
biter008824 分钟前
opencv(15) OpenCV背景减除器(Background Subtractors)学习
人工智能·opencv·学习
吃个糖糖31 分钟前
35 Opencv 亚像素角点检测
人工智能·opencv·计算机视觉