E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
【深入理解计算机系统】
代码的背后(《
深入理解计算机系统
》总结一)
目前我是看到第一部分的前三章,所以只说说前三章的内容。基于计算机硬件的设备,现在几乎在我们周边随处可见,手机,电脑,电视,汽车等等,可以说现在的设备,如果不嵌入块芯片,那就不能算作设备,一来他上档次,因为他看起来比较智能,用起来也很智能,二来他的确给产品赋予了很多的能力,让它能够完成更多的任务。而这些都是基于处理器或者说是芯片,或者说是一块板子起的作用,当然他是怎么起的作用或许要我们的电气相关或者
总该有梦
·
2019-12-07 08:41
深入理解计算机系统
之程序的机器级表示(二)
过程调用过程提供了一种封装代码的方式,用一组指定的参数和一个可选的返回值实现某种功能。形式有函数、方法、子例程等。C语言使用栈提供的后进先出的内存管理原则。栈和程序寄存器存放着传递控制和数据、分配内存需要的信息。当Q执行时,P及P以上的函数调研暂时被挂起,需要为局部变量分配存储空间,或者设置另一个过程调用。当Q返回时,它分配的局部存储空间都会被释放。P的返回地址也被压入栈中,表示在Q返回时,从P的
落英坠露
·
2019-12-06 16:00
CSAPP:Attack lab
现在让我来揭开这个lab的每一层面纱:Prerequire(1)阅读《
深入理解计算机系统
》的3.10.2~3.10.5(2)仔细阅读Attacklab的writeup(3)熟
金际一线天
·
2019-12-01 22:15
深入理解计算机系统
(CS:APP) - Attack Lab详解
本文首发于我的博客AttackLab实验代码见GitHub简介AttackLab的内容针对的是CS-APP中第三章中关于程序安全性描述中的栈溢出攻击。在这个Lab中,我们需要针对不同的目的编写攻击字符串来填充一个有漏洞的程序的栈来达到执行攻击代码的目的,攻击方式分为代码注入攻击与返回导向编程攻击。本实验也是对旧版本中IA32编写的BufferLab的替代。我们可以从CMU的lab主页来获取自学者版
viseator
·
2019-12-01 21:36
如果有人让你推荐编程技术书,请叫他看这个列表
:他的生平、思想及论文解读》《计算机系统概论》《深入理解Linux内核》《深入Linux内核架构》《TCP/IP详解卷1:协议》《Linux系统编程(第2版)》《Linux内核设计与实现(第3版)》《
深入理解计算机系统
足迹人生2017
·
2019-11-30 05:24
深入理解计算机系统
-- 程序的机器级表示
1.程序优化等级假设有源文件p1.c和p2.c,使用gcc-Og-opp1.cp2.c编译生成代码,-Og会告诉编译器使用符合原始C代码整体结构的机器代码优化等级。(PS:-O0所得到的汇编代码实用价值极小,几乎没有什么用处,建议使用-Og或者-O1(有的较早的编译器可能不认识-Og,这是GCC4.8之后引入的内容),可读性会更高)。1.1机器级代码对于机器级编程来说,计算机有两种抽象至关重要,第
lawliet9
·
2019-11-22 11:00
《
深入理解计算机系统
(第三版)》第二章学习总结
第二章信息的表示和处理2.1信息存储字节(byte):8位的块,作为最小的可寻址的存储器单位,不是访问存储器中单独的位。计算机字长:指明指针数据的标称大小。32位机器虚拟地址空间为4GB。64位为16EB。64位机器可以运行32位机器编译的程序,反过来不行。字节顺序小端法:最低有效字节在最前面;大端法:最高有效字节在最前面;大小端引起的字节顺序问题:在不同类型的机器之间通过网络传输二进制数据(用协
20199319范晓楠
·
2019-11-21 22:00
学习《
深入理解计算机系统
(第三版)》第二章总结
学习《
深入理解计算机系统
(第三版)》第二章总结三种重要的数字表示无符号编码:基于传统的二进制表示法,表示大于或等于0的数字。
李磊20199131
·
2019-11-20 11:00
深入理解计算机系统
-- 计算机系统漫游
1.从源文件到可执行程序的过程这里以最简单的例子helloworld为例,新建一个hello.c的源文件,添加如下代码#include"stdio.h"intmain(){printf("helloworld\n");return0;}使用gcc-ohello.chello指令可以将源文件转换为可执行程序,-o选项可以指定可执行程序的名称,不指定该选项时默认为输出一个a.out的可执行程序。在执行
lawliet9
·
2019-11-13 19:00
深入理解计算机系统
-- 信息的表示和处理
1.信息的存储大多数计算机使用8位的块,或者字节,作为最小的寻址内存单位,而非访问内存中单独的位,机器级程序将内存视为一个非常大的字节数组,称为虚拟内存,内存的每个字节都用一个唯一的数字标识,称为它的地址。以C语言的指针为例,指针使用时指向某一个存储块的首字节的虚拟地址,C编译器将指针和其类型信息结合起来,这样即可以根据指针的类型,生成不同的机器级代码来访问存储在指针所指向位置处的值。每个程序对象
lawliet9
·
2019-11-13 19:00
深入理解计算机系统
第六章 存储器层次结构 第二遍
第二遍读这本书,每周花两到三小时时间,能读多少读多少(这次看了第399~408和418~424页,共17页)第一遍对应笔记链接https://www.cnblogs.com/stone94/p/10056104.html各存储器速度差异的量化CPU访问一下设备中的数据分别需要的周期数寄存器0个周期内高速缓存4~75个周期主存上百个周期磁盘几千万个周期理解存储器层次结果的实际作用可以写出局部性好的程
stoneBlog
·
2019-11-10 12:00
深入理解计算机系统
第八章 异常控制流 Part2 第二遍
第二遍读这本书,每周花两到三小时时间,能读多少读多少(这次看了第508~530页,共23页)第一遍对应笔记链接https://www.cnblogs.com/stone94/p/10206004.html进程是计算机科学中最深刻、最成功的概念之一。(尽管看了书中关于进程的很多描述,我还是理解不了这句话,不是说怀疑这句话的正确性,只是自己不能理解,或许以后看得多了就能理解了)进程和应用程序的关系“进
stoneBlog
·
2019-11-09 18:00
关于补码(有符号)乘法遇到的疑惑
《
深入理解计算机系统
》第61页表格第一行的补码-3与3相乘得到的-9不知道是怎么它用补码是怎么计算的。
汪二小
·
2019-11-07 13:36
关于补码的由来和作用
最近在读《
深入理解计算机系统
》(CSAPP),第二章中关于补码的描述很有意思,在书中并没有详细叙述补码的由来和为什么要使用补码来表示有符号数,而不是用原码和反码。
smile_zyk
·
2019-11-05 19:00
推荐一本非常好的书
今天在桌子上找书的时候,竟然发现这本书「
深入理解计算机系统
」,简称「CSAPP」被我压在一堆书的最下面,我赶紧把它拿出来翻了翻。
程序小歌
·
2019-11-02 09:44
《
深入理解计算机系统
》第一章读书笔记
计算机系统漫游1.1信息就是位+上下文程序的生命从一个源程序开始的,该程序通过编辑器创建并保存为文本文件,文件名命为***.c,由0和1组成的位序列。1.2程序被其他的程序翻译成不同的格式在Unix系统上,从源文件到目标文件的转化是由编译器驱动程序完成的unix>gcc-ohellohello.cgcc编译器读取源文件***.c,并把它翻译成一个可执行的目标文件,执行四个阶段的程序(预处理器、编译
2019908刘腾飞
·
2019-10-31 16:00
深入理解计算机系统
(CS:APP) - Data Lab详解
本文首发于我的博客关于CS:APP《
深入理解计算机系统
》(ComputerSystems:AProgrammer'sPerspective;CS:APP)这本书作为CMU核心课程的核心教材,一直被众人所推崇
viseator
·
2019-10-31 04:14
《
深入理解计算机系统
(第三版)》第一章学习总结
《
深入理解计算机系统
(第三版)》第一章学习总结1.1信息就是位+上下文hello程序的生命周期是从一个源程序开始的,文件名是hello.c。
20199124-马璐瑶
·
2019-10-30 19:00
速度《
深入理解计算机系统
》总结
速度《
深入理解计算机系统
》总结1.
20199124-马璐瑶
·
2019-10-30 18:00
20199319 《
深入理解计算机系统
》第一章学习总结
第一章计算机系统漫游1.1信息就是位+上下文源程序是由程序员通过编辑器创建并保存的文本文件*.c,本质上是一个由0和1组成的位(bit)序列,8个位被组织成一组,称为字节。每个字节表示程序中某个文本字符。大部分现代系统都使用ASCII标准表示文本字符,每个字节都有一个整数值,对应于某个字符。只由ASCII字符构成的文件称为文本文件,所有其他文件都称为二进制文件。系统中所有的信息—–包括磁盘文件、存
20199319范晓楠
·
2019-10-30 16:00
细读《
深入理解计算机系统
(第三版)》第一章学习总结
细读《
深入理解计算机系统
(第三版)》第一章学习总结教材学习内容总结这个章节以一个hello.c的程序为例子,然后通过跟踪hello.c文件的生命周期来粗略地描述系统各个硬件的工作机制。
李磊20199131
·
2019-10-30 00:00
速读《
深入理解计算机系统
(第三版)》总结
速读《
深入理解计算机系统
(第三版)》总结第一章计算机系统漫游读完第一章的心情实在难以述说,在此写下这一章自己的一点学习经历及感想仔细读完了这本书的第一章的内容,之前零零散散的学过一些计算机系统知识,也接触过编程
李磊20199131
·
2019-10-28 18:00
深入理解计算机系统
第八章 异常控制流 Part1 第二遍
第二遍读这本书,每周花两到三小时时间,能读多少读多少(这次看了第500~507页,共8页)第一遍对应笔记链接https://www.cnblogs.com/stone94/p/10165167.htmlECF(ExceptionControlFlow,异常控制流)是I/O、进程和虚拟内存的共用基本概念。在能够真正理解这些重要概念之前,我们需要真正的理解ECF。向磁盘写数据、从网络读取数据、创建一个
stoneBlog
·
2019-10-27 10:00
速读《
深入理解计算机系统
》
本周速读了《
深入理解计算机系统
》这本书,这本书从程序员的角度介绍了计算机系统的内在运作,展示了一些本质概念是如何实际的影响应用程序的正确性、性能和实用性的。
20199319范晓楠
·
2019-10-26 23:00
深入理解计算机系统
(速读笔记)
第一章进程与线程的区别:进程和线程都是一个时间段的描述,程序执行时,cpu处理速度太快,只有寄存器能够赶上cpu的速度,RAM速度远远赶不上,当处理多个任务时,只能一个一个轮流处理,具体的轮流方法就是:先加载程序A的上下文,然后开始执行A,保存程序A的上下文,调入下一个要执行的程序B的程序上下文,然后开始执行B,保存程序B的上下文。进程就是上下文切换的程序执行时间总和=CPU加载上下文+CPU执行
2019908刘腾飞
·
2019-10-26 22:00
《计算机系统》加分项目
目录《计算机系统》加分项目《CSAPP:
深入理解计算机系统
》数据实验二进制炸弹实验缓冲区溢出实验体系结构实验性能实验cache实验shell实验malloc实验代理实验《计算机系统》加分项目过去,凡是计算机专业人员都对计算机的工作原理和工作方式了如指掌
娄老师
·
2019-10-16 10:00
大小端字节序的来历(摘自《
深入理解计算机系统
第三版》)
术语“littleendian(小端)”和“bigendian(大端)”出自JonathanSwift的《格列佛游记》(Gulliver'sTrabels)一书,其中交战的两个派别无法就应该从哪一端(小端还是大端)打开一个半熟的鸡蛋打成一致。就像鸡蛋的问题一样,选择何种字节顺序没有技术上的理由,因此争论沦为关于社会政治论题的争论。一下是JonathanSwift在1726年关于大小端之争历史的描述
撒欢
·
2019-10-01 23:00
大小端字节序的来历(摘自《
深入理解计算机系统
第三版》)
术语“littleendian(小端)”和“bigendian(大端)”出自JonathanSwift的《格列佛游记》(Gulliver'sTrabels)一书,其中交战的两个派别无法就应该从哪一端(小端还是大端)打开一个半熟的鸡蛋打成一致。就像鸡蛋的问题一样,选择何种字节顺序没有技术上的理由,因此争论沦为关于社会政治论题的争论。一下是JonathanSwift在1726年关于大小端之争历史的描述
撒欢
·
2019-10-01 23:00
深入理解计算机系统
第三章 程序的机器级表示 Part2 第二遍
第一遍对应笔记链接https://www.cnblogs.com/stone94/p/9943779.html本章汇编代码中常出现的几个指令及其含义1、push操作数的个数:1将操作数(一般是寄存器)的值压入栈中,由于栈向下生长,所以这时栈顶指针会减小一点2、move操作数的个数:2第一个操作数是源操作数,第二个操作数是目的操作数,该指令将源操作数的值赋给目的操作数3、call操作数的个数:1调用
stoneBlog
·
2019-09-29 08:00
深入理解计算机系统
笔记--备忘
多核cpu:将多个cpu(称为“核”)集成到一个集成电路芯片上、超线程:允许一个cpu执行多个控制流的技术,cpu的某些硬件有多个备份,比如程序计数器(pc)和寄存器,而其他的硬件可能只有一份,比如浮点运算单元。超线程技术可以使cpu(核)在单个周期的基础上决定要执行哪个线程,而传统cpu可能需要20000个时钟周期完成线程的切换。(从这里来看,一个核同一时刻还是只能执行一个控制流的,只不过快的多
香蕉割草机
·
2019-09-24 21:47
其他
深入理解计算机系统
cp1:存储单位与编码
原文:
深入理解计算机系统
cp1:存储单位与编码作者:ChorFundebug经授权转载,版权归原作者所有。1.存储单位位:即bit,表示二进制位,要么是0,要么是1。它是计算机内部数据存储的最小单位。
Fundebug
·
2019-09-23 06:37
fundebug
计算机原理
存储技术
深入理解计算机系统
第三章 程序的机器级表示 Part1 第二遍
第一遍对应笔记链接https://www.cnblogs.com/stone94/p/9905345.html机器级代码计算机系统使用了多种不同形式的抽象,利用更简单的抽象模型来隐藏实现的细节。对于机器级编程来说,其中两种抽象尤为重要。第一种是由指令集体系结构或指令集架构(InstructionSetArchitecture,ISA)来定义机器级程序的格式和行为,它定义了处理器状态、指令的格式,以
stoneBlog
·
2019-09-22 20:00
深入理解计算机系统
cp1:存储单位与编码
原文:
深入理解计算机系统
cp1:存储单位与编码作者:ChorFundebug经授权转载,版权归原作者所有。1.存储单位位:即bit,表示二进制位,要么是0,要么是1。它是计算机内部数据存储的最小单位。
Fundebug
·
2019-09-21 10:26
计算机原理
存储原理
深入理解计算机系统
cp1:存储单位与编码
原文:
深入理解计算机系统
cp1:存储单位与编码作者:ChorFundebug经授权转载,版权归原作者所有。image1.存储单位位:即bit,表示二进制位,要么是0,要么是1。
Fundebug
·
2019-09-21 09:35
深入理解计算机系统
第九章虚拟内存
9.1物理和虚拟寻址9.2地址空间9.3虚拟内存作为缓存的工具9.3.1DRAM缓存的组织结构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.3多级页表9.6.4综合:端到端的地址翻译9.7案例研究:IntelCorei7/Linux内存系
dldldl1994
·
2019-09-18 13:03
深入理解计算机系统
CSAPP-----虚拟内存
、虚拟内存作为内存管理的工具5、虚拟内存作为内存保护的工具6、地址翻译7、案例研究8、内存映射9、动态内存分配10、垃圾收集11、C程序中常见的与内存有关的错误12、小结本系列文章的观点和图片均来自《
深入理解计算机系统
第
吾之求索
·
2019-09-16 16:23
深入理解计算机系统
第二章 信息的表示和处理 Part2 第二遍
《
深入理解计算机系统
》第三版第二遍读这本书,每周花两到三小时时间,能读多少读多少(这次看了29~34页)第一遍对应笔记链接https://www.cnblogs.com/stone94/p/9866674
stoneBlog
·
2019-09-09 20:00
深入理解计算机系统
:进程
导语:这是篇读书笔记,每次重读CSAPP都有新的认知,尤其是在进入了后台通道之后才感受到每天和进程打交道的感觉是如此深刻。0x00WhatisProcess?[systemstructure]进程(Process)一个执行中的程序的实例,操作系统对一个正在运行的程序的一种抽象。并发运行,指的是一个进程的指令和另一个进程的指令交错执行。操作系统实现这种交错执行的机制称为上下文切换。线程(Thread
腾讯技术工程
·
2019-09-06 17:00
深入理解计算机系统
第二章 信息的表示和处理 Part1 第二遍
《
深入理解计算机系统
》第三版第二遍读这本书,每周花两到三小时时间,能读多少读多少(这次看了22~28页)第一遍对应笔记链接https://www.cnblogs.com/stone94/p/9824395
stoneBlog
·
2019-09-02 22:00
我为什么要学习《
深入理解计算机系统
》这本书?
为什么买《
深入理解计算机系统
》这本书?众所周知,C/C++是比较接近底层的语言。想要更深入的理解C/C++,从计算机系统的原理入手无疑是最好的选择。
weixin_30635053
·
2019-09-02 13:00
c/c++
深入理解计算机系统
读书笔记三
高速缓存的写操作假设缓存中已经缓存了字w(写命中)。在高速缓存更新了它的w的副本后,它有两种方式更新w在层次结构中紧接着低一层中的副本。直写。就是立即将w的高速缓存块写回紧接着的低一层中。这种做法每次都会引起总线流量。写回。写回会尽可能的推迟更新,只有当替换算法要驱逐这个更新过的块时,才会把他写道紧接着的第一层中。写回可以显著的减少总线流量,但是增加了复杂性。假设缓存中没有缓存字w(写不命中),也
zofun
·
2019-09-01 22:00
深入理解计算机系统
读书笔记四
异常控制流(ExceptionalControlFlow,ECF)什么是控制流从给处理器加电开始,直到断电为止,程序计数器假设一个值的序列:a0,a1,a2...an-1,其中ak是相应的指令的地址,每次从ak到ak-1的过渡称为控制转移(controltransfer)。这样的控制转移序列称为处理器的控制流(flowofcontrol)。异常异常是异常控制流的一种形式,它一部分由硬件实现,一部分
zofun
·
2019-09-01 22:00
深入理解计算机系统
读书笔记二
内存映射I/O技术CPU使用内存映射I/O技术来向I/O设备发射命令。在使用内存映射I/O的系统中,地址空间中有一块地址是为了与I/O设备通信保留的。每个这样的地址称为I/O端口。当一个设备连接到总线时,它被映射到一个或多个端口。通过内存映射I/O技术将I/O设备放置到内存空间而不是I/O空间,使得访问系统设备和访问内存一样,简化了程序设计的难度和接口的复杂性。直接内存访问(DMA)设备可以字节执
zofun
·
2019-09-01 22:00
深入理解计算机系统
读书笔记一
基础知识为什么计算机需要高速缓存?计算机程序是存储在磁盘中的。程序运行时,需要将程序加载到主存(内存条)中,但处理器处理程序时,又需要将指令从主存复制到处理器。程序的复制是开销。需要使用一种方式来使复制操作尽可能快的执行。根据机械原理,存储能力较大的设备的读写速度较慢。为了解决主存与处理器之间存在的读取数据的差距,就使用一种更小更快的存储设备,称为高数缓存存储器(cachememory)作为暂时集
zofun
·
2019-09-01 22:00
深入理解计算机系统
【一】
https://www.cnblogs.com/ylhwx/p/7801058.htmlhttps://blog.csdn.net/strliu/article/details/7906017这周开始看
深入理解计算机系统
唯心、tt
·
2019-09-01 16:00
CSAPP 1 - 计算机系统漫游
[TOC]0序言及摘要(1)序言:CS:APP——ComputerSystems:AProgrammer'sPerspective,中译本名为:《
深入理解计算机系统
》.从书名可以得知:大部分系统书籍都是从构建者的角度来写
瘦风
·
2019-09-01 16:00
深入理解计算机系统
第一章 计算机系统漫游 第二遍
《
深入理解计算机系统
》第三版第二遍读这本书,每周花两到三小时时间,能读多少读多少(这次看了1~9页)第一遍对应笔记链接https://www.cnblogs.com/stone94/p/9787261.
stoneBlog
·
2019-09-01 12:00
Linux——size命令查看二进制文件各个数据段
先放一张,Linux系统中C程序的虚拟内存分布图,来自《
深入理解计算机系统
(第3版)》:其中.data数据段存放的是初始化的全局和静态变量(全局或局部静态),.bss存放的是未初始化的全局和静态变量(全局或局部静态
HungXum
·
2019-08-16 09:43
Linux
C++中基本数据类型的表现形式
本文为看雪论坛精华文章看雪论坛作者ID:techliuC++中基本数据类型的表现形式,本节内容根据《C++反汇编与逆向分析技术揭秘》一书总结,其中还有穿插《
深入理解计算机系统
》第二章浮点数的内容,详细内容参见书中相关章节
看雪学院
·
2019-08-07 18:58
C++中基本数据类型的表现形式
本文为看雪论坛精华文章看雪论坛作者ID:techliuC++中基本数据类型的表现形式,本节内容根据《C++反汇编与逆向分析技术揭秘》一书总结,其中还有穿插《
深入理解计算机系统
》第二章浮点数的内容,详细内容参见书中相关章节
看雪学院
·
2019-08-07 18:58
上一页
16
17
18
19
20
21
22
23
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他