理解计算机系统
C小虫
这个作者很懒,什么都没留下…
展开
-
《深入理解计算机系统》读书笔记1---计算机系统漫游
第1章是一个对于文章内容的概括性的介绍,而我的笔记是对于概括的概括。文章以一个helloworld程序开始,讲述了1.信息的存储与表示,然后编译为二进制文件。2.处理器,内存,等硬件体系结构以及逻辑上的抽象。(1)硬件结构处理器,主存,总线,IO设备值得注意的是,键盘,显示器,硬盘,网络是四大IO设备,而从逻辑上看,他们并无区别。(2)逻辑抽象文件---IO设备原创 2015-08-28 14:53:16 · 455 阅读 · 0 评论 -
《深入理解计算机系统》P652页的select程序
程序是一个server的程序,主要是使用select来IO多路复用STDIN和套接字的连接请求即listenfd。重点注意line 23-34①监听到listenfd这个时候就accept产生connfd,并且调用echo函数。echo函数的作用是,一直阻塞接收对面的消息,收到消息就echo完全一样的消息给对方。②监听到有STDIN这个时候就调用command函数。原创 2016-02-23 09:47:41 · 302 阅读 · 0 评论 -
JAVA到底是解释型语言还是编译型语言
转载自:http://rednaxelafx.iteye.com/blog/492667这个博主也是大牛啊,我这里先截取这个主题的主要结论。(1)解析器(parser):前者是编译器/解释器的重要组成部分,也可以用在IDE之类的地方;其主要作用是进行语法分析,提取出句子的结构。广义来说输入一般是程序的源码,输出一般是语法树(syntax tree,也叫parse tree等)或抽象语法转载 2015-08-28 12:43:58 · 2588 阅读 · 0 评论 -
《深入理解计算机系统》读书笔记8--- 并发编程2
接下来的内容主要就是线程的安全性问题,分别为线程同步错误,死锁和竞争。参考了文章:http://www.cnblogs.com/Jessy/p/3540724.html(1)同步错误不同的线程对于共享变量的同时操作,使得最终结果出错。一个简单的栗子,计数。各个线程每完成一个任务,就对完成任务数+1.到某一时刻,完成任务数累积到了5,这个时候A线程完成了任务,对任务数加1原创 2015-10-12 22:06:04 · 448 阅读 · 0 评论 -
struct内存安排
处理器:AMD x64操作系统:win7编译器:GCC 4.8.1该条件下,char---1byte int---4bytes double---8bytes本内容为我试验得到,所以会因为不同的试验平台等,还有试验设想的条件不全而出现结果会有偏差。结论:不考虑位域(位域就是可以以bit为单位精确指定位数)情况,struct里面的内存安排,会根据里面的最大基原创 2015-10-26 10:06:27 · 415 阅读 · 0 评论 -
《深入理解计算机系统》读书笔记7--- 并发编程1
CSAPP介绍了三种并发编程技术:(1)进程(2)I/O多路复用(3)线程本帖总结前面两种,第三种将留到下一贴。(1)基于进程的并发编程核心函数就是fork。用父进程不停接受socket连接,fork创建子进程,用子进程来服务每一个client。主要流程就是在echo服务器的基础上。1.server会while循环阻塞在connfd=accept()那里。每当请求到达接受后,就原创 2015-10-12 17:16:45 · 559 阅读 · 0 评论 -
《深入理解计算机系统》读书笔记6--- 信号
1.信号①定义:信号是一种软件形式的异常。一个信号就是一条小消息,他通知进程系统中发生了一个某种类型的事件。②本质:每种信号类型都对应于某种系统事件。③作用:硬件异常是由内核异常处理程序处理的,正常情况下对于用户是不可见的。信号,作为一种软件异常,提供了一种机制,通知用户进程发生了这些异常,并可以编码对其进行处理。2.信号的发送原因:(1)内核检测到一个系统事件,比原创 2015-10-10 11:14:57 · 458 阅读 · 0 评论 -
《深入理解计算机系统》读书笔记5--- 一个进程的一生
1.进程的相关概念2.进程的创建fork3.进程的运行execve4.进程的挂起sleep/pause5.进程的终止exit6.进程的回收waitpid原创 2015-09-15 11:13:10 · 461 阅读 · 0 评论 -
《深入理解计算机系统》读书笔记2---关于存储的思考
1.源代码源代码是文本形式存在的bytes,是一种字符编码。对于每一个字符进行编码,可能是ASCII,可能是GB2312,可能是UTF-8。然后存储在硬盘的某个地方。2.程序运行时这里我暂时不考虑运行时分配的东西,也不考虑类似于C++中的中的vector,还有Python中的list这种可以随时改变元素个数,甚至元素类型的结构。只考虑C语言中的那些基本结构。那么原创 2015-08-29 22:40:31 · 414 阅读 · 0 评论 -
《深入理解计算机系统》思考1---系统调用相关
转载了两篇文章:1.http://blog.csdn.net/ubuntulover/article/details/59882202.http://www.ibm.com/developerworks/cn/linux/kernel/syscall/part1/appendix.html我的话:第1篇文章,很好的说明了,系统调用、用户编程接口(对于系统调用的C库(libc)包转载 2015-09-15 15:50:49 · 923 阅读 · 0 评论 -
《深入理解计算机系统》读书笔记4---异常控制流
1.异常控制流控制流: a0,a1,a2,a3,。。。an I1, I2, I3, I3 ,。。。In其中a是程序计数器(PC)中的指令地址,I是对应的指令。程序按照ak进行控制转移,这种控制转移序列叫做控制流。如果Ik与Ik+1在存储器中是相邻的,叫平滑控制流。如果不相邻,就叫做突变。突变可以是1个进程程序内部的状态变化(跳转原创 2015-09-06 15:59:15 · 572 阅读 · 0 评论 -
关于编码,以及ASCII,Unicode,UTF-8的关系
转载自:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html这是阮一峰先生的博客,非常好的文章,博客首页是:http://www.ruanyifeng.com/blog/昨天晚上读了一下《深入理解计算机系统》,里面有关于编码的介绍。所谓文本形式和二进制形式,它们实质上都是一串010101010这样转载 2015-08-28 07:50:37 · 356 阅读 · 0 评论 -
《深入理解计算机系统》读书笔记3---关于程序运行的思考
这里先申明几点:(1)不考虑内存区里的堆这样的malloc空间,以及链接过程需要的内存空间。(2)不考虑多线程时候在内存里怎么分配。(3)不讨论太多的函数嵌套函数的细节。(4)不考虑最开始的载入过程,比如双击.exe将程序加载进入内存,而双击这个命令又是怎样传递的不讨论。前提知识:(1)一个函数里面的程序代码以及全局变量还有static变量会分配到内存里面的--只读原创 2015-08-31 16:49:23 · 417 阅读 · 0 评论