一、计算机的框架
什么是操作系统?(汽车)
加油系统 油门 用户跟加油子系统交互的窗口。(接口)
方向系统 方向盘 用户跟方向系统的交互接口。
导航系统
。。。
汽车的操作系统有很多的子系统来完成。这些子系统互相协调工作,达到用户的目的。操作简练、效率高、安全性比较高...。
接口 多个子系统 每个子系统负责单一的工作。
操作环境 驾驶员位置
是不是驾驶员直接控制汽车的硬件?
通过接口间接控制硬件的。 看不见的 透明
框架
组件
操作系统管理硬件并且为上层的app提供服务。
对app的管理。
二、计算机的操作系统
计算机的操作就是管理计算机资源的一款系统软件。(软件资源和硬件资源)
sudo ?
bash是ubuntu操作系统上用户和操作系统的交互窗口程序。
用户需要一个和操作系统交互的环境。这个交互的环境有shell来营造。
补充:
系统调用是函数
库函数
#include <stdio.h>
#include <stdlib.h>
man 3 库函数
man 2 系统调用
man 1 命令
man 命令
编译器
GNU/Linux操作系统
linux是内核
操作系统有unix、linux、windows、macos、ios、。。。
LFS
套件
计算机操作系统包含的内容
1、内存管理
2、文件管理
3、文件系统
4、进程的管理
5、信号
6、 线程的管理
7、进程间通讯
8、网络通讯
三、计算机语言的发展史
32位机器
1000,0000,0000,0000,0000,0001,0000,0010
add 1,2
1000,0000,0000,0001,0000,0011,0000,0001
sub 3,1
把汇编指令翻译成机器指令,这个翻译过程,专业术语称为汇编。
伪指令
main C语言
#include <stdio.h>
#define PI 3.14
# sharp
! bang
& and
@ at
以hello.c为例演示程序从c到可执行文件的过程。
代码参见hello.c
补充:
echo 字符串 将字符串显示到屏幕上
$? 最近指令执行的返回值。
echo $?
框架 组件
第一步:预处理
gcc -E hello.c -o hello.i
预处理指令的处理 文件的包含 宏定义 条件编译
注释去除掉
第二步:需要将预处理后的文件编译成汇编语言文件
gcc -S hello.i -o hello.s
第三步:将汇编语言的文件汇编为机器语言
gcc -c hello.s
第四步:将目标文件和库文件 运行时文件链接,形成可执行文件
四、大型软件的组织