05 2012 档案
摘要:当你学完了这个部分,你将逐渐变成一个很牛的程序员,对计算机系统以及它们对程序的影响有很成熟的理解。第10章 系统级I/O第11章 网络编程第12章 并发编程
阅读全文
摘要:现代系统提供了一种对主存的抽象概念——虚拟存储器。为了更加有效的管理存储器并且少出错。虚拟存储器是硬件异常、硬件地址翻译、主持、磁盘文件、内核软件的完美交互。它为每个进程提供了一个大的,一致的,私有的地址空间。虚拟存储器提供了三个重要的能力:将主存看成是一个存储在磁盘上的地址空间的高速缓存。为每个进程提供一致的地址空间。保护了每个进程的地址空间不被其他进程破坏。理解虚拟存储器的理由:其是中心的、强大的、危险的。9.1 物理和虚拟寻址计算机系统的主存被组织为一个M个连续字节大小的单元组成的数组,每个字节都有唯一的物理地址。——物理地址是对主存的。cpu使用物理地址访问存储器——物理寻址。cpu通
阅读全文
摘要:从给处理器加电开始,直到断电为止,程序计数器里总是一个一个的地址,指令的地址,假设这些地址依次是a0,a1,...,ak,其中ak是指令Ik的地址。从ak到ak+1的过渡称为控制转移。控制转移序列叫做处理器的控制流。Ik+1和Ik不总是相邻的,不相邻一般是由诸如跳转、调用和返回这样的指令造成的。跳转、调用和返回是必要的,使得程序能够对内部程序状态中的变化做出反应。这些内部程序状态是由程序变量表示的。程序有程序的状态,系统也有系统的状态。程序的状态通过程序变量来表示,比如程序变量变成0可能就是一种程序状态,系统的状态是一种统称。定时器产生信号、网络包到达网络适配器、子进程终止这些都是系统状态。一
阅读全文
摘要:set compatible?这一句不是设置,是确定,注意后面有一个问号,所有的vim设置都可以这么查看。%会在()[] {}这三种括号的两个标号之间来回跳。33G和:33都到33行。50% 60% 70%分别到文件中间,60%处,70%处。ctrl-e和ctrl-y,前者是上滚,一行一行的,后者是下滚,一行一行的。*和#,当前光标在xxx,按*则光标移动到下一个xxx,#移动到上一个。/^xxx查找一行开头的xxx,/xxx$查找一行结尾的xxx。''两个单引号,回到使用G命令跳走的那个行。ctrl-o跳到更老的地方。ctrl-i跳到新的地方。ma标记当前行为a,'a
阅读全文
摘要:1.安装LAMPUbuntu10.04下安装LAMP有一个简单的好用的方法:打开新立得软件包管理器。编辑使用任务分组标记软件包在其中选定LAMP,应用即可。中间要设置下mysql的root密码。在ubuntu较新的版本中,默认是没有安装synaptic的,可以在软件中心或者apt-get安装下。同时,默认安装的synaptic没有任务分组标记软件包,需要安装tasksel。2.应用Apache2的userdir模块Ubuntu10.04下的Apache2的配置文件夹在/etc/apache2/下。其中httpd.conf是空文件,apache2.conf是全局的配置文件。conf.d是附加的一
阅读全文
摘要:默认情况下,GNU make 工具在当前工作目录中按如下顺序搜索 makefile:GNUmakefilemakefileMakefile或者使用:make -f filename
阅读全文
摘要:“光标移到行首”和“光标移到行尾”分别是ctrl-a,ctrl-e。“光标向左移动一位“和“光标向右移动移位“分别是ctrl-b,ctrl-f。“光标向左或者向右移动一个词“是esc-b,esc-f。ctrl-h和backspace是一样的。ctrl-k是清除光标到行尾的内容。ctrl-u是清除光标到行首的内容。ctrl-w是清除光标前的一个单词,ctrl-y是粘帖上次的删除。ctrl-t是交互光标位置前的两个字母。esc-t是交换光标位置前的两个单词。ctrl-z把当前进程转到后台执行,使用‘fg‘恢复。ctrl-c杀掉当前进程。
阅读全文
摘要:链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程。这个文件可被加载到存储器并执行。链接可以执行在编译时,可以执行在加载时,可以执行在运行时。为什么要学习关于链接的知识:理解链接器将帮助你构造大型程序。(缺少模块,缺少库,不兼容的库等链接器错误)理解链接器将帮助你避免一些危险的编程错误。(错误地定义多个全局变量)理解链接将帮助你理解语言的作用域规则是如何实现的。(static属性的变量)理解链接器将帮助你理解其他重要的系统概念。(加载和运行程序、虚拟存储器、分页和存储器映射)理解链接器将使你能够利用共享库。(使用共享库来升级压缩包装的二进制程序,web服务器依赖于共享库的动态链接来
阅读全文
摘要:先说下情况,我的一台机器上装着ubuntu10.04TLS,500G的硬盘空间,用了大概200G,其余的都是剩余空间,之前安装10.04的时候估计就考虑到了之后可能安装其他系统的情况,所以,分区是一个200M的boot,在sda1;一个100G的根目录,在sda2;这两个都是主分区,然后建立了一个200G的主分区,并没有挂载,然后建立了一个扩展分区,在扩展分区中建立了一个sda5逻辑分区,挂载到home,也是100G,然后一个3G的swap。后面还有一段90G左右的空闲空间。下午的时候想试试最新的ubuntu12.04TLS,就download下iso镜像,刻盘,安装,这个过程比较顺畅,我从最
阅读全文
摘要:在第一部分,理解了程序和硬件之间的交互关系(汇编等),在第二部分,讲述程序和操作系统之间的交互关系。可以知道,第三部分将说明程序与程序之间的关系了。第七章 连接第八章 异常控制流第九章 虚拟存储器
阅读全文
摘要:在简单模型中,存储器系统是一个线性的字节数组,而cpu能够在一个常数时间内访问每个存储器位置。实际上,存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。存储器层次结构是可行的。整体效果是一个大的存储器池,其成本与层次结构底层最便宜的存储设备相当,但是却以接近于层次结构顶部存储设备的高速率向程序提供数据。计算机系统中一个基本而持久的思想:如果你理解了系统是如何将数据在存储器层次结构中上下移动的,那么你就可以编写你的应用程序,使得它们的数据项存储在层次结构较高的地方,在那里cpu能更快的访问它们。这个思想围绕着计算机程序的一个称为局部性的基本属性。在本章中,我们会看看基本的存储技术
阅读全文
摘要:第四章 处理器体系结构一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构ISA。不同的处理器家族有:Intel IA32,IBM/Freescale PowerPC,ARM。他们都有不同的ISA。ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层。编译器编写者只需要知道允许哪些指令,以及它们是如何编码的;处理器设计者必须建造出执行这些指令的处理器。本章将简要介绍处理器硬件的设计。(over)这一章节已经有点脱离软件了,太过于细节化了,如上所说,我只要和ISA这一个概念抽象层打交道就好。第五章 优化程序性能本章会探讨如何使用几种不同类型的程序优化技术。第一:合适的算法和数据结
阅读全文
摘要:对于严谨的程序员来说,能够阅读和理解汇编代码仍是一项很重要的技能。阅读编译器产生的汇编代码,需要具备的技能不同于手工编写汇编代码。——感觉阅读和编写在一个量级了,应该是阅读比较弱一点吧,(也许就是一个级别的)。精通细节是理解更深和更基本概念的先决条件。本章基于两种相关的机器语言:Intel IA32和x86-64,前者是当今大多数计算机的主导语言,而后者是前者在64位机器上运行的扩展。本章的内容:先快速的浏览c语言、汇编语言以及机器代码之间的关系。然后介绍IA32的细节,从数据的表示和处理以及控制的实现开始。了解c语言中的控制结构是如何实现的。然后,我们会讲到过程的实现,包括程序如何维护一个运
阅读全文

浙公网安备 33010602011771号