摘要: 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程。这个文件可被加载到存储器并执行。链接可以执行在编译时,可以执行在加载时,可以执行在运行时。为什么要学习关于链接的知识:理解链接器将帮助你构造大型程序。(缺少模块,缺少库,不兼容的库等链接器错误)理解链接器将帮助你避免一些危险的编程错误。(错误地定义多个全局变量)理解链接将帮助你理解语言的作用域规则是如何实现的。(static属性的变量)理解链接器将帮助你理解其他重要的系统概念。(加载和运行程序、虚拟存储器、分页和存储器映射)理解链接器将使你能够利用共享库。(使用共享库来升级压缩包装的二进制程序,web服务器依赖于共享库的动态链接来 阅读全文
posted @ 2012-05-05 20:16 ray hill 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 先说下情况,我的一台机器上装着ubuntu10.04TLS,500G的硬盘空间,用了大概200G,其余的都是剩余空间,之前安装10.04的时候估计就考虑到了之后可能安装其他系统的情况,所以,分区是一个200M的boot,在sda1;一个100G的根目录,在sda2;这两个都是主分区,然后建立了一个200G的主分区,并没有挂载,然后建立了一个扩展分区,在扩展分区中建立了一个sda5逻辑分区,挂载到home,也是100G,然后一个3G的swap。后面还有一段90G左右的空闲空间。下午的时候想试试最新的ubuntu12.04TLS,就download下iso镜像,刻盘,安装,这个过程比较顺畅,我从最 阅读全文
posted @ 2012-05-03 20:32 ray hill 阅读(1185) 评论(0) 推荐(0) 编辑
摘要: 在第一部分,理解了程序和硬件之间的交互关系(汇编等),在第二部分,讲述程序和操作系统之间的交互关系。可以知道,第三部分将说明程序与程序之间的关系了。第七章 连接第八章 异常控制流第九章 虚拟存储器 阅读全文
posted @ 2012-05-03 09:56 ray hill 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 在简单模型中,存储器系统是一个线性的字节数组,而cpu能够在一个常数时间内访问每个存储器位置。实际上,存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。存储器层次结构是可行的。整体效果是一个大的存储器池,其成本与层次结构底层最便宜的存储设备相当,但是却以接近于层次结构顶部存储设备的高速率向程序提供数据。计算机系统中一个基本而持久的思想:如果你理解了系统是如何将数据在存储器层次结构中上下移动的,那么你就可以编写你的应用程序,使得它们的数据项存储在层次结构较高的地方,在那里cpu能更快的访问它们。这个思想围绕着计算机程序的一个称为局部性的基本属性。在本章中,我们会看看基本的存储技术 阅读全文
posted @ 2012-05-03 09:52 ray hill 阅读(464) 评论(0) 推荐(0) 编辑
摘要: 第四章 处理器体系结构一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构ISA。不同的处理器家族有:Intel IA32,IBM/Freescale PowerPC,ARM。他们都有不同的ISA。ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层。编译器编写者只需要知道允许哪些指令,以及它们是如何编码的;处理器设计者必须建造出执行这些指令的处理器。本章将简要介绍处理器硬件的设计。(over)这一章节已经有点脱离软件了,太过于细节化了,如上所说,我只要和ISA这一个概念抽象层打交道就好。第五章 优化程序性能本章会探讨如何使用几种不同类型的程序优化技术。第一:合适的算法和数据结 阅读全文
posted @ 2012-05-01 19:25 ray hill 阅读(445) 评论(0) 推荐(0) 编辑
摘要: 对于严谨的程序员来说,能够阅读和理解汇编代码仍是一项很重要的技能。阅读编译器产生的汇编代码,需要具备的技能不同于手工编写汇编代码。——感觉阅读和编写在一个量级了,应该是阅读比较弱一点吧,(也许就是一个级别的)。精通细节是理解更深和更基本概念的先决条件。本章基于两种相关的机器语言:Intel IA32和x86-64,前者是当今大多数计算机的主导语言,而后者是前者在64位机器上运行的扩展。本章的内容:先快速的浏览c语言、汇编语言以及机器代码之间的关系。然后介绍IA32的细节,从数据的表示和处理以及控制的实现开始。了解c语言中的控制结构是如何实现的。然后,我们会讲到过程的实现,包括程序如何维护一个运 阅读全文
posted @ 2012-05-01 16:32 ray hill 阅读(1131) 评论(0) 推荐(0) 编辑
摘要: 我们研究三种最重要的数字表示:无符号编码,补码编码,浮点数编码。可能我们会觉得二进制的编码,从低位开始加1,加1再加1是很正常的,但其实不是,为什么不能从高位开始加,向低位进位呢?习惯而已,前人脚印。无符号编码,我们最能接受,觉得天经地义的编码方式。其实不是天经地义的,只是前人就这么定的。补码编码也是比较能接受的,但也是一种选择,前人经过考虑后的选择。浮点数编码也是。这三个其实在一个水平面上,都是人为选择和制定的产物。需要知道,计算机的算术运算和数学世界的算术运算是不等价的,两者在很多特性上有显著的差别;但计算机算术运算希望得到正确的数学算术运算的结果,虽然有时候得不到。两者不同的根源在于:在 阅读全文
posted @ 2012-04-19 10:35 ray hill 阅读(581) 评论(0) 推荐(0) 编辑
摘要: 坚持 透彻第二章 信息的表示和处理第三章 程序的机器级表示第四章 处理器体系结构第五章 优化程序性能第六章 存储器层次结构 阅读全文
posted @ 2012-04-16 16:17 ray hill 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 计算机系统是由硬件和系统软件组成的。系统的具体实现在变,但系统内在的概念没有变。所有的系统都有相似的硬件,相似的软件组件,它们执行着相似的功能。这些组件是如何工作的?这些组件是如何影响程序的正确性和性能的?本书予以解答。K&R的hello程序要完成运行,系统的每个组成部分都需要协调工作。本书就是告诉你在系统上运行hello程序时,系统发生了什么以及为什么会这样。1.1 信息就是位+上下文图1-2真的是hello.c的ASCII码表示,除了可见的字符外,不可见的是sp和\n,从第一个到最后一个完整的表示出来。这就是文本文件。“\n”是在每一行的结尾处,或者说有“\n"才有一行的 阅读全文
posted @ 2012-04-15 20:59 ray hill 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 我不是计算机专业了,我很多时候比较浮于表面,我将投身于计算机的世界中。所以我学习csapp。坚持,透彻,就是我学习的规则。 阅读全文
posted @ 2012-04-15 19:55 ray hill 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 色彩的中修改:Options->SessionOptions ->Emulation,然后把Terminal类型改成linux,并点中ANSI Color复选框。中文乱码的修改:options->apperance->character encoding选择为utf-8.版本为6.7.3(build 292) 阅读全文
posted @ 2012-04-15 15:50 ray hill 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2012-04-14 14:23 ray hill 阅读(836) 评论(0) 推荐(0) 编辑
摘要: set nocompatible "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限set nu "显示行号syntax onset tabstop=4 "设置tab键等同的空格长度,这里只是等同,并没有用2个空格来代替tab。set shiftwidth=4 "设置程序中自动缩进所使用的空白长度,这里和上面的相同(都是2),那么自动缩进就表示2个空格的长度。set expandtab "设置tab由空格代替。tab是8个空格长度,那么当键入tab时就是8个空格,这里是2个空格。autocmd FileType php set sh 阅读全文
posted @ 2012-04-14 10:07 ray hill 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 在ubuntu上搭建了LAMP,但数据库的操作一直是使用phpmyadmin,这毕竟不是王道,还是要看命令行下的操作的。安装的时候就设置了管理账户和密码。“mysql -uroot -p123456”,以密码123456登录root账户。“show databases;",显示数据库。“create database xxxxx;”,建立数据库xxxxx。 “create database xxxxx default character set utf8 collate utf8_general_ci;",使用特定的字符集和排序方式建立数据库xxxxx。“drop data 阅读全文
posted @ 2012-04-12 21:17 ray hill 阅读(973) 评论(0) 推荐(0) 编辑
摘要: 从远程仓库中,比如github.com中clone下来的工程中可能有多个分支,使用“git branch -a“的时候可以看到。如果这个时候使用”git checkout”到某一个分支,然后修改了代码,提交了commit,那么在“git status”的时候就会出现“ahead of”的情况。解决的办法是使用“git checkout --track”到某一分支。 阅读全文
posted @ 2012-04-12 17:35 ray hill 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 运行里面使用命令;“rundll32 netplwiz.dll,UsersRunDll”。然后选择用户跳过登陆界面。 阅读全文
posted @ 2012-04-12 16:10 ray hill 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 实验室的运算机器装的ubuntu 10.04,这是3年之前的事情了,系统一直没有更新。上午使用学校的源更新了一下,结果启动不起来了。系统重装就好,但是root下的数据时要搞出来的。最后用10.04 dvd iso的光盘启动,使用“sudo -i”获得光盘系统的root权限,然后挂载目录(菜单点击就自动挂载),进入损坏的系统/root目录下,cp出原来的数据。ubuntu的光盘系统很方便和傻瓜式。 阅读全文
posted @ 2012-04-12 14:06 ray hill 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2012-04-06 16:33 ray hill 阅读(114) 评论(0) 推荐(0) 编辑