OS CH2 Operating-System Structures
CH2 Operating-System Structures
2.1 Operation system services
操作系统需要提供的服务如下:
等等还有一系列的功能需要提供,简而言之操作系统需要可以通过用户的请求来正确操作机器
2.2 User and Operating System Interface
这里的interface理解为两层界面之间的一个接口、交互中介
注意到这里的命令接口不单单指的是电脑命令行输入命令,一些鼠标、语音、触摸屏也在命令接口的范畴内
- CLI:就是命令行界面,比如windows的powershell、cmd;linux的shell等等
- GUI:就是图形化的交互界面
2.3 system calls(系统调用)
操作系统提供了一些服务的接口
从操作系统的角度说,system call的调用代码一定在kernel mode中运行;windows中没有系统调用,而是一系列的api,运行在user mode下。
比如说,调用一个printf的过程如图
对于系统调用,有点类似于函数调用,只不过函数的具体实现过程都在操作系统内核内
:也就是说,当前的代码在进程中跑,然后操作系统看到需要的函数会去硬件中寻求这个函数(比如time())的调用
需要注意的一点是,比方说,我写fopen()其不是一个系统调用,fopen是一个简单的function call;但是,其中不可避免地使用到了fopen。这是因为,正常的system call调用的open函数没用的参数太多了,使用fopen对于编程者更友好,这其中的逻辑是事先被写好的。
一些不同的参数传递方法
2.4 system services (系统服务)
系统服务可以简单理解为操作系统的各种命令
2.5 links and loaders
大概是运行一个程序的总的顺序:一个编译器一次只能生成编译一个.c文件,生成一个.o文件;linker的作用是将一系列.o文件综合起来编译成一个完整的可执行文件(比如说,一个一个编译的话所有.o文件默认开始地址都是0,这样使用linker之后就可以为其分配一个合理的运行地址);而loader则是会为你即将执行的程序创建一个进程、将程序数据段放入内存中的指定位置,随后在操作系统中可以初始化和执行这个程序
2.6 Why Applications Are Operating System Specific
为什么有时候应用程序只能应用在一个操作系统,但是在另一个操作系统就无法运行? 这里介绍一下ABI:
也就是说,api是(操作系统的)将代码进行封装好,可以让其在不同平台上都可以编译运行;而abi’则是将二进制编码封装好,可以跨平台运行。
2.7 Operating-System Design and Implementation
没啥实质性东西,记住操作系统是一个很复杂的结构,设计起来成本很高
2.8 Operating-System Structure
- 介绍一下单内核(宏内核)结构:
优点是效率很高,缺点是很难进行扩展,同时修改、维护很麻烦。