深入理解计算机系统(第二版)----之一

第一部分:程序结构和执行

  第1章:计算机系统漫游

  第2章:信息的表示和处理

  第3章:程序的机器级表示

  第4章:处理器体系结构

  第5章:优化程序性能

  第6章:存储器层次结构

第二部分:在系统上运行程序

  第7章:链接

  第8章:异常控制流

  第9章:虚拟存储器

第三部分:程序间的交互和通信

  第10章:系统级I/O

  第11章:网络编程

  第12章:并发编程

===第一章:计算机系统漫游==================================================

计算机系统的实现方式虽然不同,但是所有计算机系统都有相似的硬件和软件组件;了解编译器如何实现过程调用的;

编写自己的unix外壳,自己的动态存储分配宝,自己的web服务器;认识到并发带来的希望和陷阱。

通过跟踪hello程序的生命周期开始对系统的学习---从它被程序员创建,到在系统上运行,输出简单的消息,然后终止。

------------code/hello.c------------------------------

#include<stdio.h>

int main(){

  printf("hello world\n");

}

--------------code/hello.c----------------------------

1.1 信息就是位+上下文

  hello.c文件由ASCII自负构成的文件称为文本文件,其他文件都是二进制文件。

    hello.c程序的生命周期从一个源程序或者源文件开始的,源程序是由值0和1组成的位序列,

  8个位=一个字节=一个文本字符(大部分现代系统都使用ASCII标准表示文本字符)=一个单字节大小的整数值

    系统的所有信息-包括磁盘文件、存储器中的程序、数据 网络上传送的数据,都是一串位表示的,区分不同数据对向的唯一方法是

  我们读到这些数据对象时的上下文。同一个字节序列,在不同的上下文中表示的可能是一个整数、浮点数。字符串或者机器指令。

1.2 程序被其他程序翻译成不同的格式

1.3 了解编译系统如何工作

1.4 处理器读并解释存储在存储器中的指令

1.5 高速缓存至关重要

1.6 存储设备形成层次结构

1.7 操作系统管理硬件

1.8 系统之间利用网络通信

时间: 2024-10-27 17:37:26

深入理解计算机系统(第二版)----之一的相关文章

深入理解计算机系统第二版习题解答CSAPP 2.13

从20世纪70年代末到80年代末,Digital Equipment的VAX计算机是一种非常流行的机型.它没有布尔运算AND和OR指令,只有bis(位设置)和bic(位清除)这两种指令.两种指令的输入都是一个数据字x和一个掩码字m.它们生成一个结果z,z是由根据掩码m的位来修改x的位得到的.使用bis指令,这种修改就是在m为1的每个位置上,将z对应的位设置为1.使用bic指令,这种修改就是在m为1的每个位置,将z对应的位设置为0. 只使用这两个函数实现C语言的按位|和^运算. 1 int bis

深入理解计算机系统第二版习题解答CSAPP 2.6

使用打印字节的方式可以知道十进制数12345的十六进制为0x00003039,十进制浮点数12345.0的十六进制为0x4640E400. 转换为二进制为 1 /* 2 0 0 0 0 3 0 3 9 3 00000000000000000011000000111001 4 ************* 5 4 6 4 0 E 4 0 0 6 01000110010000001110010000000000 7 8 */ 移动后有13位匹配. 已知十进制数3510593的十六进制为0x003591

深入理解计算机系统第二版习题解答CSAPP 2.12

对于下面的值,写出变量x的C语言表达式.代码应该对任何字长w≥8都能工作.我们给出当x=0x87654321以及w=32时表达式的结果,仅供参考. A.x的最低有效字节,其他位均为0.[0x00000021]. B.除了x的最低有效字节外,其他位都取补,最低有效字节保持不变.[0x789ABC21]. C.x的最低有效字节设置成全1,其他字节都保持不变.[0x876543FF]. 解答: A. x & 0xFF B. ~(x ^ 0xFF)或者(~x) ^ 0xFF C. x | 0xFF

深入理解计算机系统第二版习题解答CSAPP 2.18

将32位补码表示的数转换为10进制数. 32位补码 十进制 0x1b8 440 0x14 20 0xFFFFFE58 -424 0xFFFFFE74 -396 0x44 68 0xFFFFFEC8 -312 0x10 16 0xC 12 0xFFFFFEEC -276 0x20 32

深入理解计算机系统第二版习题解答CSAPP 2.19

在2.17的基础上完成下表: x 十六进制 T2U(x) -8 0x8 8 -3 0xD 13 -2 0xE 14 -1 0xF 15 0 0x0 0 5 0x5 5

深入理解计算机系统第二版习题解答CSAPP 2.17

假设w=4,我们能给每个可能的十六进制数字赋予一个数值,假设用一个无符号或者补码表示.完成下表: x 无符号(B2U(x)) 补码(B2T(x)) 十六进制 二进制 0xE 1110 14 -2 0x0 0000 0 0 0x5 0101 5 5 0x8 1000 8 -8 0xD 1101 13 -3 0xF 1111 15 -1

深入理解计算机系统第二版习题解答CSAPP 2.16

填写下表,说明不同移位运算对单字节数的影响. x x<<3 x>>2(逻辑) x>>2(算术) 十六进制 二进制 二进制 十六进制 二进制 十六进制 二进制 十六进制 0xC3 1100 0011 0001 1000 0x18 0011 0000 0x30 1111 0000 0xF0 0x75 0111 0101 1010 1000 0xA8 0001 1101 0x1D 0001 1101 0x1D 0x87 1000 0111 0011 1000 0x38 001

深入理解计算机系统第二版习题解答CSAPP 2.11

在2.10中的inplace_swap函数的基础上,你决定写一段代码,实现将一个数组中的元素两端依次对调,你写出下面这个函数: 1 void reverse_array(int a[], int cnt) 2 { 3 int first, last; 4 for(first = 0, last = cnt - 1; 5 first <= last; 6 first ++, last --) 7 { 8 inplace_swap(&a[first], &a[last]); 9 } 10

深入理解计算机系统第二版习题解答CSAPP 2.1

A.将0x39A7F8转换为二进制. 0011 1001  1010 0111  1111 1000 B.将二进制1100 1001 0111 1011转换为十六进制. 0xC97B C.将0xD5E4C转换为二进制. 0000 1101  0101 1110  0100 1100 D.将二进制10 0110 1110 0111 1011 0101转换为十六进制. 0x26D7B5

深入理解计算机系统第二版习题解答CSAPP 2.2

填写空白项. n 2n(十进制) 2n(十六进制) 9 512 0x200 19 524288 0x80000 14 16384 0x4000 16 65536 0x10000 17 131072 0x20000 5 32 0x20 7 128 0x80