@2368860385
2020-11-07T03:02:29.000000Z
字数 1376
阅读 181
深入理解计算机系统
2020.9.13 - 2020.9.17
以此段代码为例
//文件名 hello.c
#include<stdio.h>
int main() {
printf("hello,world\n");
return 0;
}
1、预处理阶段
读入系统文件夹的内容,直接插入到文本中,得到另一个c程序,叫做
2、编译阶段
把main函数包括在内的程序语言(c语言)翻译为汇编语言。
3、汇编阶段
汇编器(as)将翻译成机器语言指令,并把这些语言指令打包成一种叫做可重定位目标程序的格式,并将这些结果保存到中,是二进制文件。
4、链接阶段
hello程序种调用了printf,printf是标准c库的一个函数,它存在与的文件中。链接器(ls)以某种方式将它合并到的中得到一个可执行文件,即hello文件。它可以加载到内存中,由系统执行。
1、总线:贯穿整个系统的一组电子管道。携带信息字节并在各个部件间传递。总线通常传送定长的字节块,4(32位),8(64位)字节。
2、I/O设备:键盘鼠标显示器。每个I/O设备都通过一个控制器或一个适配器与总线相连。控制器是设备本身或者系统的电路板的芯片组。适配器是插在主板插槽上的卡。功能都是负责在I/O总线和I/O设备之间传递信息。
3、主存
操作系统是连接应用程序与硬件的一层软件。
操作系统的两个基本功能是:(1).防止硬件被失控的程序滥用;(2).向应用程序提供一些简单的机制来控制复杂而又通常大不相同的低级硬件设备。
操作系统包含几个基本的抽象概念:进程,虚拟内存,文件。
1、进程:是操作系统对一个正在运行的程序的一种抽象。一个系统可以同时运行多个进程,每个进程都好像独占的使用是硬件。并发运行指的是一个进程和另一个进程的指令是交错进行的。多数情况下,需要运行的程序是多余cpu的数量的,所以一个cpu看起来像是在同时运行多个进程,这是通过进程间的切换实现的,操作系统的这种机制叫做上下文切换。
上下文:操作系统保持和跟踪进程运行所需要的所有状态信息,这种状态即为上下文。包含了许多信息,比如:PC,寄存器文件的当前值,主存的内容。
上下文切换:任何一个时刻,系统都只会运行一个进程的代码,当操作系统把控制权从当前进程转移到某个新进程上时,就会上下文切换。保存当前进程的上下文,恢复新进程的上下文,然后转移控制权。。
2.线程:
尽管通常我们认为一个进程只有单一的控制流,但是现代系统中,一个进程实际可以由多个称为线程的执行单元组成。
每个线程都运行在进程的上下文中,共同享用同样的代码和全局数据。
由于网络服务器对并行处理的要求,线程成为越来越重要的编程模型,因为多线程之间比多进程之间更容易共享数据,线程比进程更高效。
现在的处理不止有单处理器,还有多多处理器(多核处理器,超线程的),比如Intel COre i7每个核能执行两个线程,4核的就是8线程。
3.虚拟内存
4.文件
文件就是字节序列。
每个I/O设备都可以看作一个文件
从一个单独的系统来看,网络可以看作一个I/O设备(一个系统可以从网络获取信息)。