深入理解计算机系统 笔记(一)

时间:2022-12-25 10:52:01

深入理解计算机系统

第一章 计算机系统漫游

1.2 编译过程

深入理解计算机系统 笔记(一)

1.4 运行hello.c

在terminal下:

$ gcc -o filename filename.c

会产生一个filename的可执行文件,执行可执行文件的命令

$ ./filename

在UNIX上编译可执行文件,是将文件名输入到称为外壳shell的应用程序中,外壳是一个命令行解释器。

1.6 储存设备层次结构

深入理解计算机系统 笔记(一)

1.7 进程与线程

大多数系统中,可以运行的进程数是多余cpu数量的,这依赖于“上下文切换”。进程简单说是,当操作系统遇到新的进程,暂停并保存原有进程,执行新的进程,当新进程结束,操作系统返回旧的进程。
而线程比进程更高效。
一切皆文件,每个I/O设备都可以看作文件,包括磁盘、键盘、显示器,甚至是网络。

1.9 并发和并行

并发(concurrency)指一个同时具有多个活动的系统;并行(parallelism)指用并发使一个系统更快。
线程级并行、指令级并行、单指令多数据并行
抽象:文件是对IO的抽象、虚拟储存器是对程序储存器的抽象、进程是对一个正在运行的程序的抽象、虚拟机是对整个计算机的抽象。

第二章 信息的表示和处理

gcc可以编译不同版本的C语言程序,指令:$ gcc -std=c99 filename.c,而$ gcc -std=c89 filename.c或者gcc -ansi filename.c是执行c90标准。

2.1 信息储存

二进制文件不具有可移植性,在不同的操作系统上具有不同的编码规则,因此二进制代码是不兼容的。