1.1 信息就是位+上下文
编程里面的所有的信息都是又最基础的位组成的每一个信息都是由8位组成也就是1 bit,每一位都是 0,1。即站在硬件的角度可以使用逻辑电路与非门进行组成。
1.2 程序被其他程序翻译成不同的格式
.cpp/.c程序——》预处理——》编译——》汇编——》链接
1、预处理对一些以'#'开头的程序进行预处理生成新的.iC语言程序
2、编译将.i 的C语言程序转成.s的C语言程序包含一个汇编语言
3、汇编阶段就是通过汇编器转换为机器语言进行执行。
4、链接就是将程序中的函数调用等情况,以以一种方式通过我们的链接器进行并入,可执行程序加入到存储器时,由我们的系统进行执行。
1.3 了解汇编的好处
- 对程序进行优化
- 了解链接时出现的错误
- 避免安全的漏洞
1.4 处理器读并解释存储在存储器中的命令
1.4.1 硬件的组成
一个典型系统的硬件组成.png
1.4.2 执行一次Hello的过程
shell执行指令等待键盘输入——》在键盘上输入Hello——》shell将输入的字符读入到寄存器之中——》将数据存入存储器之中
shell进行的处理操作:将目标文件中的代码和数据从磁盘拷贝到主存之中——》加载相应的Hello文件数据包含输出的字符串。
磁盘到主存使用的DMA(直接存储器存取)
目标文件到存储器中会,处理器会执行机器语言
1.5 缓存(如图)
缓存图
why?
因为磁盘和内存的读取速度的差异太大,大多数的时间用在了数据的获取上了,于是取了一个中间的设备对数据进行缓存,以提高对数据的读取操作。
1.6 形成层次的存储结构(如图就可以看清楚了)
存储器层次模型.png
1.7 操作系统的管理硬件
操作系统相当于在应用程序与硬件产生互的中间商或者说中间平台,应用程序的操作都需要经过操作系统对硬件的操作。
操作系统有两个基本功能:防止硬件被失控的应用程序滥用;在控制复杂而又通常广泛不同的低级硬件设备方面,为应用程序提供简单一致的方法。
操作系统的几个基本的抽象概念(进程、虚拟存储器和文件)实现这两个功能。文件是对I/O设备的抽象表示,虚拟存储器是对主存和磁盘I/O设备的抽象表示,进程则是对处理器、主存和I/O设备的抽象表示
1.7.1 进程
进程是对运行程序的抽象,一个操作系统可以运行多个进程但是都是交替进行上下文切换,这就是并发。
操作系统会记录下所有的进程运行所需要的所有的状态信息。这种状态就是上下文。
1.7.2 线程
尽管通常我们认为一个进程只有单一的控制流,但是在现代系统中,一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。由于网络服务器中对并行处理的要求,线程成为越来越重要的编程模型,因为多线程之间比多进程之间更容易共享数据,也因为线程一般都比进程更高效。
1.7.3 虚拟存储器
虚拟存储器是一个抽象概念,它为每个进程提供了一个假象,好像每个进程都在独占地使用主存。
每个进程看到的存侧器都是一致的,称之为虚拟地址空间。
1.7.4 文件
就是字节序列数据
1.8 利用网络对其他系统通信(如图过程)
网络.png
网络其实也相当于I/O的一种只不过他们是网络I/O