最近开始学习操作系统和机组的相关知识, 写一个学习进度的笔记作为鞭策, 其中的dayn不一定全是一天内完成的, 同时,大部分文字来源于学习资料rCore-Tutorial-Book 第三版。
Day0 - 入门
操作系统初步介绍
1.定义
- 一个操作系统(OS)是一个软件,它帮助用户和应用程序使用和管理计算机的资源。现在的通用操作系统是一个复杂的系统软件。
系统软件是为计算机系统提供基本功能,并在计算机系统范围内使用的软件,其作用可涉及到整个计算机系统。
系统软件包括操作系统内核、驱动程序、工具软件、用户界面、软件库等。
-
从应用的角度:
在应用运行时, 执行环境提供了运行应用软件所需的运行时服务,包括内存管理、文件系统访问、网络连接等,这些服务大部分是由操作系统来提供的。
为应用提供他所需要的功能, 同时也负责调动硬件去实现应用想要的效果
可以把操作系统的定义简化为: 应用程序的软件执行环境 。
可以总结为操作系统的主要功能有二: 一是向下管理并控制计算机硬件和各种外设,二是向上管理应用软件并提供各种服务。
2.组成
操作系统的主要组成包括:
- 操作系统内核:操作系统的核心部分,负责控制计算机的硬件资源并为用户和应用程序提供服务。
- 系统工具和软件库:为操作系统提供基本功能的软件,包括工具软件和系统软件库等。
- 用户接口:是操作系统的外壳,是用户与操作系统交互的方式。用户接口包括图形用户界面(GUI)和命令行界面(CLI)等。
3.操作系统内核
- 进程/线程管理:内核负责管理系统中的进程或线程,创建、销毁、调度和切换进程或线程。
- 内存管理:内核负责管理系统的内存,分配和回收内存空间,并保证进程之间的内存隔离。
- 文件系统:内核提供文件系统接口,负责管理存储设备上的文件和目录,并允许应用访问文件系统。
- 网络通信:内核提供网络通信接口,负责管理网络连接并允许应用进行网络通信。
- 设备驱动:内核提供设备驱动接口,负责管理硬件设备并允许应用和内核其他部分访问设备。
- 同步互斥:内核负责协调多个进程或线程之间对共享资源的访问。同步功能主要用于解决进程或线程之间的协作问题,互斥功能主要用于解决进程或线程之间的竞争问题。
- 系统调用接口:内核提供给应用程序访问系统服务的入口,应用程序通过系统调用接口调用操作系统提供的服务,如文件系统、网络通信、进程管理等。
3.历史:略, 可以查看原文
4.操作系统调用接口
-
API与ABI:
-
API 的全称为“应用程序编程接口”,它是程序员可以通过编程语言调用的一种特殊资源。通过遵循 API 规范,我们可以在相应的编程语言代码中使用这些接口,以操作计算机系统来完成某项特定任务.
API 有着多种具体表现形式,比如源代码形式的函数,或是基于互联网的 Web 接口。
API 具有的一个最重要特征,便是隐藏了其背后具体功能的内部实现细节,只公开对编码有意义的部分
-
ABI 的全称为“应用程序二进制接口”,它是一套描述了应用程序应该如何在机器指令层面与特定操作系统和硬件平台正常协作的一系列规范。这些规范决定了应用程序应该如何进行数据访问、函数调用,乃至使用操作系统的能力。
不遵循 ABI 规范的应用程序也许可以运行,但它却可能会失去在同一个体系下的兼容性以及运行正确性。
-
5.执行环境
执行环境 是一个内涵很丰富且有一定变化的术语,它主要负责给在其上执行的软件提供相应的功能与资源,并可在计算机系统中形成多层次的执行环境。
-
执行环境自初始阶段的
计算机硬件
逐步发展为函数库* -> *Java 虚拟机* -> *操作系统内核* -> *Hypervisor/VMM* -> 计算机硬件
-
CPU在执行过程中,可以在不同层次的执行环境之间切换,这称为 执行环境切换 。执行环境切换主要是通过特定的 API 或 ABI 来完成的,这样不同执行环境的软件就能实现数据交换与互操作,而且还保证了彼此之间有清晰的隔离。
对于应用程序的执行环境而言,应用程序只能看到执行环境直接提供给它的接口(API 或 ABI),这使得应用程序所能得到的服务取决于执行环境提供给它的访问接口。
6.控制流
程序的控制流是指以一个程序的指令、语句或基本块为单位的执行序列
-
普通控制流: 控制流是程序员编写的程序的执行序列,这些序列是程序员预设好的。程序运行时能以多种简单的控制流(顺序、分支、循环结构和多层嵌套函数调用)组合的方式,来一行一行的执行源代码(以编程语言级的视角),也是一条一条的执行汇编指令(以汇编语言级的视角)。
-
异常控制流: 应用程序在执行过程中,如果发出系统调用请求,或出现外设中断、CPU 异常等情况,处理器执行的前一条指令和后一条指令将会位于两个完全不同的位置,即不同的执行环境 。
比如,前一条指令还在应用程序的代码段中,后一条指令就跑到操作系统的代码段中去了
,这就是一种控制流的“突变”,即控制流脱离了其所在的执行环境,并产生 执行环境的切换。 我们把这种“突变”的控制流称为 异常控制流 -
控制流的上下文是指仅会影响控制流正确执行的有限的物理/虚拟资源内容
控制流在执行完某指令时的资源内容,即确保下一时刻能继续 正确 执行控制流指令的物理资源内容称为控制流的 上下文 (Context) ,也可称为控制流所在执行环境的状态。
- 物理资源:即计算机硬件资源,如CPU的寄存器、可访问的物理内存等。
- 虚拟资源:即操作系统提供的资源,如文件,网络端口号,网络地址,信号等。
-
如果出现了处理器在执行过程中的突变(即异常控制流)或转移(如多层函数调用),需要由维持执行环境的软硬件协同起来,保存发生突变或转移前的控制流上下文,即当前执行环境的状态,并在完成突变处理或被调用函数执行完毕后,恢复突变或转移前的控制流上下文。
-
在操作系统中,需要处理三类异常控制流:外设中断 (Device Interrupt) 、陷入 (Trap) 和异常 (Exception,也称Fault Interrupt)。
下面附三张图片:
1.中断:外设 中断 (Interrupt) 是指由外部设备引起的外部 I/O 事件。外设中断是异步产生的,与处理器的执行无关。产生中断后,操作系统需要进行中断处理来响应中断请求,这会破坏被打断前应用程序的控制流上下文,所以操作系统要保存与恢复被打断前应用程序的控制流上下文。
2.异常:异常 (Exception) 是在处理器执行指令期间检测到不正常的或非法的内部事件(如 x86 平台上的除零错、地址访问越界)。产生异常后,操作系统需要进行异常处理,这会破坏被打断前应用程序的控制流上下文,所以操作系统要保存与恢复被打断前应用程序的控制流上下文。
3.陷入: 陷入 (Trap) 是程序在执行过程中由于要通过系统调用请求操作系统服务而有意引发的事件。产生陷入后,操作系统需要执行系统调用服务来响应系统调用请求,这会破坏陷入前应用程序的控制流上下文,所以操作系统要保存与恢复陷入前应用程序的控制流上下文。
7.进程
站在应用程序自身的角度来看,进程 (Process) 的一个经典定义是一个正在运行的程序实例。
进一步, 可以详细地说: 一个进程是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。操作系统中的进程管理需要采用某种调度策略将处理器资源分配给程序并在适当的时候回收,并且要尽可能充分利用处理器的硬件资源。
当程序运行在操作系统中的时候,程序自认为即该程序是整个计算机系统中当前运行的唯一的程序,能够独占使用处理器、内存和外设,而且程序中的代码和数据是系统内存中唯一的对象。
-
处理器是计算机系统中的硬件资源。为了提高处理器的利用率,操作系统需要让处理器足够忙,即让不同的程序轮流占用处理器来运行。
如果一个程序因某个事件而不能运行下去时,就通过进程上下文切换把处理器占用权转交给另一个可运行程序。进程上下文切换如下图所示:
8.地址空间
地址空间 (Address Space) 是对物理内存的虚拟化和抽象,也称虚存 (Virtual Memory)。它就是操作系统通过处理器中的内存管理单元 (MMU, Memory Management Unit) 硬件的支持而给应用程序和用户提供一个大的(可能超过计算机中的物理内存容量)、连续的(连续的地址空间编址)、私有的(其他应用程序无法破坏)的存储空间。
9.文件
文件 (File) 主要用于对持久存储的抽象,并进一步扩展到为外设的抽象。
具体而言,文件可理解为存放在持久存储介质(比如硬盘、光盘、U盘等)上,方便应用程序和用户读写的数据。
以磁盘为代表的持久存储介质的数据访问单位是一个扇区或一个块,而在内存中的数据访问单位是一个字节或一个字。这就需要操作系统通过文件来屏蔽磁盘与内存差异,尽量以内存的读写方式来处理持久存储的数据。
当处理器需要访问文件中的数据时,可通过操作系统把它们装入内存。文件管理的任务是有效地支持文件的存储、 检索和修改等操作。
10.开发环境配置
安装rust相关软件
![ECEE257F8BFAC470DDD61A91EC381A92](D:\ZHESHUI\学习\Computer Architecture\img\ECEE257F8BFAC470DDD61A91EC381A92.png)
安装QEMU
![432B04E45820F40A523C0EDD03F4E627](D:\ZHESHUI\学习\Computer Architecture\img\432B04E45820F40A523C0EDD03F4E627.png)
运行rCore-Tutorial
![2E8B21C3C09CF83DB32F27329DA5CEF9](D:\ZHESHUI\学习\Computer Architecture\img\2E8B21C3C09CF83DB32F27329DA5CEF9.png)
标签:操作系统,控制流,内存,应用程序,实验,进度,执行,处理器 From: https://www.cnblogs.com/Fgociallo/p/18355022