操作系统的接口
- API 与 ABI 的区别
ABI 是用来约束链接器 (Linker) 和汇编器 (Assembler) 的。基于不同高级语言编写的应用程序、库和操作系统,如果遵循同样的 ABI 定义,那么它们就能正确链接和执行。
因此 API 是用来约束编译器 (Compiler) 的:一个 API 是给编译器的一些指令,它规定了源代码可以做以及不可以做哪些事。API 与编程语言相关,如 LibC 是基于 C 语言编写的标准库,那么基于 C 的应用程序就可以通过编译器建立与 LibC 的联系,并能在运行中正确访问 LibC 中的函数。
操作系统抽象
执行环境
普通控制流
异常控制流
中断,异常,陷入
进程
- 一个进程是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。
地址空间
是操作系统通过处理器中的内存管理单元 (MMU, Memory Management Unit) 硬件的支持而给应用程序和用户提供一个大的(可能超过计算机中的内存条容量)、一致的(连续的地址空间)、私有的(其他应用程序无法破坏)的存储空间。
文件
操作系统的特征
五个方面的特征
- 虚拟化 (Virtualization)、并发性 (Concurrency)、异步性、共享性和持久性 (Persistency)。
Error response from daemon: Container 91830a1e319a7180cab0ee39410afd57b4856ad5f850f8f23cc304cc71d29964 is not running
解决办法:
wswtc@wswtc-ThinkPad:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f424c7d7b65 hello-world "/hello" 37 hours ago Exited (0) 37 hours ago compassionate_bose
91830a1e319a rust:1.53.0-buster "bash" 37 hours ago Exited (0) 32 hours ago rCore-Homework-v3
wswtc@wswtc-ThinkPad:~$ docker start 91830a1e319a
91830a1e319a
wswtc@wswtc-ThinkPad:~$ docker exec -it rCore-Homework-v3 /bin/bash
root@91830a1e319a:/#
lab 1实战
移除标准库依赖
- 移除标准库依赖
- 提供语义项 panic_handler
- 移除 main 函数
- 分析被移除标准库的程序
构建用户态执行环境
rust编程之道
第三章
- 同时支持静多态和动多态
- rust一切皆为表达式,表达式皆有值,值皆有类型。rust类型安全。
- rust中大部分类型是在编译时就可确定大小
- 对于不可确定的用引用
- 零大小类型
- trait
-
- 接口抽象
元组
- 是不同类型的集合
数组和切片