深入理解计算机系统
文章平均质量分 89
Computer Systems A Programmer‘s Perspective
椰子奶糖
这个作者很懒,什么都没留下…
展开
-
Linux是如何创建(fork)进程1的?
Linux是如何创建(fork)进程1的?文章目录Linux是如何创建(fork)进程1的?参考从fork开始_syscall0_system_callsys_forkfind_empty_process()copy_process()get_free_page()copy_mem()copy_page_tables()std和cldrepne和scasb参考内核艺术一书第二版源码及注释:https://github.com/beride/linux0.11-1.gitstd和cld:https原创 2021-10-07 00:19:27 · 387 阅读 · 0 评论 -
冯诺依曼瓶颈
冯诺依曼瓶颈个人理解,欢迎指错。文章目录冯诺依曼瓶颈冯诺依曼架构如下图:- 首先,一个典型的冯诺依曼计算机结构有五大部件:运算、控制、存储、输入、输出, - 其中运算+控制被封装成CPU(约等于) - 存储分为主存(也就是常说的运行内存)+辅存(也就是常说的固态、机械硬盘等)- **冯·诺依曼结构中,计算模块和存储单元是分离的,CPU在执行命令时必须先从存储单元中读取数据。**但是,CPU对于不同的硬件的读取速度是不同的,这主要是由于该硬件运行速度的现在(CPU速度足够),举原创 2021-02-28 13:39:12 · 3353 阅读 · 0 评论 -
CSAPP:第12章 并发编程
CSAPP:第12章 并发编程文章目录CSAPP:第12章 并发编程12.1 基于进程的并发编程(Process-based)12.1.1 基于进程的并发服务器12.1.2 进程的优劣12.2 基于IO多路复用的并发编程(Event-based)12.2.1 基 于 I /O 多路复用的并发事件驱动服务器12.2.2 I/O 多路复用技术的优劣12.3 基于线程的并发编程(Thread-based)12.3.1 线程执行模型12.3.2 Posix 线程12.3.3 创建线程12.3.4 终止线程12.3原创 2021-02-21 00:04:04 · 1072 阅读 · 1 评论 -
CSAPP:第11章 网络编程
CSAPP:第11章 网络编程文章目录CSAPP:第11章 网络编程11.1 客户端-服务器编程模型11.2 网络11.3 全球IP因特网11.3.1 IP地址11.3.2 因特网域名11.3.3 因特网连接11.4 套接字接口11.4.1 套接字地址结构11.4.2 socket 函数11.4.3 connect 函数11.4.4 bind 函数11.4.5 listen 函数11.4.6 accept 函数11.4.7 主机和服务的转换11.4.8 套接字接口的辅助函数11.4.9 echo 客户端原创 2021-02-17 23:24:26 · 1325 阅读 · 0 评论 -
CSAPP:第10章 系统级IO
CSAPP:第10章 系统级IO文章目录CSAPP:第10章 系统级IO10.1 Unix IO10.2 文件10.3 打开和关闭文件10.4 读和写文件10.5 用RIO包健壮地读写10.5.1 RIO 的无缓冲的输入输出函数10.5.2 RIO 的带缓冲的输入函数10.6 读取文件元数据10.7 读取目录的内容10.8 共享文件10.9 IO重定向10.10 标准IO10.11 综合:我该使用哪些IO函数?10.1 Unix IO所有的输人和输出都能以一种统一且一致的方式来执行:打开文件:一原创 2021-02-16 00:03:53 · 1156 阅读 · 0 评论 -
CSAPP:第9章 虚拟内存
CSAPP:第9章 虚拟内存文章目录CSAPP:第9章 虚拟内存9.1 物理和虚拟寻址9.2 地址空间9.3 虚拟内存作为缓存的工具9.3.1 DRAM缓存的组织结构9.3.2 页表9.3.3 页命中9.3.4 缺页9.3.5 分配页面9.3.6 又是局部性解救了我们9.4 虚拟内存作为缓存管理的工具9.5 虚拟内存作为内存保护的工具9.6 地址翻译9.6.1 结合高速缓存和虚拟缓存9.6.2 利用TLB加速地址翻译9.6.3 多级页表9.6.4 总和:端到端的地址翻译9.7 案例研究:Intel Cor原创 2021-02-13 21:16:37 · 1616 阅读 · 0 评论 -
CSAPP:第8章 异常控制流
CSAPP:第8章 异常控制流文章目录CSAPP:第8章 异常控制流8.1 异常8.1.1 异常处理8.1.2 异常的类别8.1.3 Linux/x86-64 系统中的异常8.2 进程8.2.1 逻辑控制流8.2.2 并发流8.2.3 私有地址空间8.2.4 用户模式和内核模式8.2.5 上下文切换8.3 系统调用错误处理8.4 进程控制8.4.1 获取进程ID8.4.2 创建和终止进程8.4.3 回收子进程8.4.4 让进程休眠8.4.5 加载并行程序8.4.6 利用fork和execve运行程序8.5原创 2021-02-11 00:50:40 · 1277 阅读 · 0 评论 -
CSAPP:第7章 链接
CSAPP:第7章 链接文章目录CSAPP:第7章 链接7.1 编译器驱动程序7.2 静态链接7.3 目标文件7.4 可重定位目标文件7.5 符号和符号表7.6 符号分析7.6.1 链接器如何解析多重定义的全局符号7.6.2 与静态库链接7.6.3 链接器如何使用静态库来解析引用7.7 重定位7.7.1 重定位条目7.7.2 重定位符号引用7.8 可执行目标文件7.9 加载可执行目标文件7.10 动态链接共享库7.11 从应用程序中加载和链接共享库7.12 位置无关代码7.13 库打桩机制7.13.1 编原创 2021-02-08 15:43:26 · 1019 阅读 · 0 评论 -
CSAPP:第6章 存储器层次结构
CSAPP:第6章 存储器层次结构文章目录CSAPP:第6章 存储器层次结构6.1 存储技术6.1.1 随机访问存储器6.1.2 磁盘存储6.1.3 固态硬盘6.1.4 存储技术趋势6.2 局部性6.2.1 对程序数据引用的局部性6.2.2 取指令的局部性6.2.3 局部性小结6.3 存储器层次结构6.3.1 存储器层次结构中的缓存6.3.2 存储器层次结构概念小结6.4 高速缓存存储器6.4.1 通用的高速缓存存储器组织结构6.4.2 直接映射高速缓存6.4.3 组相联高速缓存6.4.4 全相联高速缓存原创 2021-02-05 18:39:56 · 1110 阅读 · 0 评论 -
CSAPP:第5章 优化程序性能
CSAPP:第5章 优化程序性能文章目录CSAPP:第5章 优化程序性能5.1 优化编译器的能力和局限性5.2 表示程序性能5.3 程序示例5.4 消除循环的低效率5.5 减少过程调用5.6 消除不必要的内存引用5.7 理解现代处理器5.7.1 整体操作5.7.2 功能单元的性能5.7.3 处理器操作的抽象模型从机器级代码到数据流图5.8 循环展开5.9 提高并行性5.9.1 多个累积变量5.9.2 重新结合变换5.10 优化合并代码的结果小结5.11 一些限制因素5.11.1 寄存器溢出5.11.2 分原创 2021-02-01 00:00:03 · 1703 阅读 · 0 评论 -
CSAPP:第4章 处理器体系结构
CSAPP:第4章 处理器体系结构文章目录CSAPP:第4章 处理器体系结构Y86-84指令集体系结构4.1.1 程序员可见状态4.1.2 Y86-64指令4.1.3 指令编码4.1.4 Y86-64 异常Y86-64 程序4.1.6 一些Y86-64指令的详情4.2 逻辑设计和硬件控制语言HCL4.2.1 逻辑门4.2.2 组合电路和HCL布尔表达式4.2.3 字级的组合电路和HCL证书表达式4.2.4 集合关系4.2.5 存储器和时钟4.3 Y86-64的顺序实现(SEQ)4.3.1 将处理组织成阶段原创 2021-01-29 23:36:59 · 2349 阅读 · 0 评论 -
CSAPP:第3章 程序的机器级表示
CSAPP:第3章 程序的机器级表示文章目录CSAPP:第3章 程序的机器级表示3.1 A Historical Perspective3.2 Program Encodings3.2.1 Machine-Level Code(机器级代码)3.2.2 代码示例C程序中插入汇编代码3.3 数据格式3.4 访问信息整数寄存器3.4.1 操作数指示符3.4.2 数据传送指令3.4.3 数据传输示例3.4.4 押入和弹出栈数据3.5 算术和逻辑操作3.5.1 加载有效地址(leaq)3.5.2 —元和二元操作3.原创 2021-01-24 00:52:44 · 1291 阅读 · 0 评论 -
CSAPP:第2章 信息的表示和处理
CSAPP:第2章 信息的表示和处理文章目录CSAPP:第2章 信息的表示和处理2.1 信息存储2.1.1 十六进制表示法2.1.2 字数据大小2.1.3 寻址和字节顺序2.1.4 表示字符串2.1.5 表示代码2.1.6 布尔代数简介2.1.7 C语言中的位级运算2.1.8 C语言中的逻辑运算2.1.9 C语言中的移位运算2.2 整数表示2.2.1 整型数据类型2.2.2 无符号数的编码2.2.3 补码编码2.2.4 有符号数和无符号数之间的转换2.2.5 C语言中的有符号数与无符号数2.2.6 拓展一原创 2021-01-10 00:46:08 · 1168 阅读 · 0 评论 -
CSAPP:第1章 计算机系统漫游
文章目录1.1 information=bit+context1.2 程序翻译1.3 了解编译的好处1.1 information=bit+context1.1主要传达的意思是所谓信息就是特定二进制(位)的排列组合(上下文),因此构成了不同的信息。另外,aside中提了一嘴C语言的起源,总的来说,C之所以可以成功,主要因为以下几个优势C一开始就作为Unix的系统语言被开发出来的C小、简单、易于移植C是为实践目的设计的——other people found that they could w原创 2021-01-06 00:15:34 · 745 阅读 · 0 评论 -
CSAPP目录
文章目录Computer Systems A Programmer's Perspective1 计算机系统漫游(一、程序结构与执行)2 信息表示和处理3 程序的机器级表示4 处理机体系结构5 优化程序性能6 存储器层次结构(二、在系统上运行程序)7 链接8 异常控制流9 虚拟内存(三、程序间的交互和通信)10 系统级I/O11 网络编程12 并发编程Computer Systems A Programmer’s Perspective说明:本目录后续会更新链接,频率由作者阅读速度决定1 计算机系原创 2021-01-04 15:37:10 · 1938 阅读 · 0 评论