【1】计算机系统漫游笔记
1.现在大多数机器字长为4字节(32位),8字节(64位)。ps:所以我们可以通过判断int类型的长度来得出系统位数。
2.系统硬件组成,如下图:
总线:贯彻整个系统的一组电子管道。
I/O设备:系统与外部世界联系的通道。(比如鼠标、键盘、显示屏及磁盘。)
主存:是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。
处理器:是用来执行存储在主存中指令的引擎。
3.程序在被其他程序编译时经过的阶段(预处理器、编译器、汇编器和链接器)。
4.CPU执行的加载、存储、操作和跳转的内部运行原理。
加载:从主存储器复制一个字或者字节到寄存器,覆盖寄存器原来的内容。
存储:从寄存器复制一个字或者字节到主存储器的某个位置,覆盖原来这个位置上的内容。
操作:把两个寄存器的内容复制到ALU(算术/逻辑单元),ALU对这两个进行计算,并将结果返回到一个寄存器中,覆盖掉原来这个位置的内容。
跳转:从指令本身抽一段数据,并将数据复制到PC(程序计数器)中,覆盖原来这个位置的值。
5.运行程序。
开始,我们从USB控制器输入命令,通过I/O桥连接总线接口,shell程序逐一的将字符读入寄存器,再把它放到内存(主存)中。
当我们敲回车键时,shell知道我们结束输入。然后shell通过一系列指令加载可执行的hello文件,并将代码和数据从磁盘复制到主存储器中,包含最终输出的"hello world"。
最后:当我们下次访问时,我们就不需要从磁盘读取,可直接从主存储器读取数据,这样大大加快了效率。
6.高速缓存的重要性。
我们为什么不一直从磁盘获取数据,而是从主存储器读取?
1.处理器从磁盘读取一个字的时间开销比主存储器读取的开销大1000万倍。
2.为了数据更快的显示。
3.加快处理器运行速度比加快主存储器的运行速度要容易和便宜的多。
7.我们可以通过高速缓存处理器提高程序性能。
PS:比如说 A---B点需要三个-, 我在AB之间加高速缓存器 A--+B,+存储B中的数据,那么A到B点的过程就少了个-;
8.操作系统两个基本功能:
(1)防止硬件被失控的应用程序滥用;
(2)向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备。
操作系统通过进程、虚拟内存、文件来实现这两个功能。
9.进程:无论单核还是多核系统,一个CPU看上去像在并发执行多个进程,这其实是通过处理器在进程间来回切换实现的。
操作系统将这种交错执行的机制称为:上下文切换。
10.任何时候,单处理器都只执行一个进程的代码。
当操作系统觉得要把控制权从当前进程转移到其他新进程时,就会执行上下文。
其内部运行:保存当前进程的上下文,恢复或新建进程的上下文,然后把控制权传递到新进程。
11.线程:因为多线程之间比多进程之间更容易共享数据,因为此线程一般比进程更高效。
当有多处理器使用时,多线程是一种使得程序运行更快的办法。
虚拟内存:程序代码和数据-》堆=》共享库-》栈(执行期间会动态扩展【调用时】和收缩【返回时】)-》内核虚拟内存(不允许应用程序读写,只允许内核执行)。
虚拟内存的基本思想:把进程虚拟内存的内容存储在磁盘上,然后用主存储器作为磁盘的高速缓存。
12.文件就是字节序列。
13.系统之间利用网络通信内部运行原理:传输就是把主存储器数据通过网络适配器复制到另一台机器,接收就是通过网络适配器读取其他机器数据保存到主存储器内。
用户输入“hello word”-》客户端发送消息到远程服务器-》服务器向shell发送字符串,shell执行完后发送到服务器-》服务器发送到客户端-》客户端在显示屏打印“hello world”。