1.深入理解计算机系统的目录2

电脑系统解剖怎么看,电脑系统解剖

都说:劝人学医天打雷劈,其实这是句玩笑话,学医没有很多人想象中的美好,但其实也是有它自己的优势的,我是一名首都医科大学临床医学学系的大一医学生,作为一个预备役"医生",今天就以我的亲身经历,和大家聊一聊关于"医学院的那些事",同时也希望可以给还未踏进这个专业的同学一点小经验~

先给大家科普一下『医生』这个专业的特殊性,大家都知道医学生的学制比较特殊,本科5年,硕士3年,博士3年,但是仅仅只有本科学历对于医学生来说是远远不够的,想必大家都知道,医生这个职业基本上是研究生才能就够得到普通医院的门槛,想要去三甲医院那必须是博士起步了,然而进入医院还要面临2年底规培和5年的住院医,简直是遥遥无期,遥遥无期~

所以,在我决定报考这个专业以后,与家里人进行协商,包括跟朋友说了以后其实都不是很理解,都在觉得是不是我被别人劝了,甚至是认为我被**电视剧里面的情节迷住了,都会认为医生这个行业很辛苦。在别人眼里面的辛苦,是医生天天会值夜班,在手术台边一站就是几个小时,这也确实会辛苦,但是我们以后拯救的都是一条条人命,跟生命相比,这点体力活也就不算什么了。当然,这都是我们毕业以后的事情,学医的过程中很多同学包括亲戚朋友都会认为我们是不是天天在解剖台上或者天天衣服上会被试剂或者血液弄得很脏,他们也都对我学医的过程充满了好奇和认为会很有趣。在我刚刚入学的时候也是这么认为的,直到我们上了第一节系统解剖学实验课程以后,我才真正对于大体老师们的无私,对于生命产生了敬畏之心。

进入大学的第一节课我们学习了骨学概论,见到了人体中几乎所有骨,让我们对于人体的骨架有了初步认知,也留下了很多照片,给朋友们分享的时候,都问了我这么一个问题:这些照片是真人的骨头吗?这倒是我确实没想到的一个问题,我也给予了回答:是的,尽管它们被临床老师处理过了,但是的的确确是真的人骨。我这个回答一出也是给朋友们吓了一跳。

献上我们的实验室大门(悄咪咪的说一句有关于实验室一切是不允许外传的哦~)

时间过得飞快,转眼间就要期末考试了,别的学校叫“考试周”,医学生就不一样了,我们比较有趣,称作“考试月”。你以为你翻过了大山,殊不知还在山脚!不仅要面对比人还高的“蓝色生死恋”(ps:医学生的爱称)还要每天需要用电脑,书本,手机进行复习几乎没什么重点的整本书的知识,一开始我们毫无头绪,真的是不知道从何抓起,直到后来科目越来越少以后,我们才能专心复习一个科目。在进行最后一科考试《系统解剖学B》之前,我们连续48小时没有睡觉。考完全都瘫在外面,考试月的崩溃和生理生化必有一挂!相信这是所有医学生都懂得痛!

这些只是我们大一,很多专业课都还没有开放,比如:生理,病理,药理等等是在大二才开启。刚大一课业就已经很多了,到大二会更加辛苦。所以以我现在的学习体验来说,劝一个不喜欢医学的人学医,确实天打雷劈,如果一点兴趣都没有就太痛苦了。真正想要学医的朋友是不用劝的,我高考志愿仅仅报了两种专业:临床医学和法医学。报考专业不光要思考自己的兴趣爱好点在哪里,还需要思考以后就业方向,就业前景,这都是要好好考虑的,千万不要一时冲动啊

医学生的(蓝色生死恋)

当然啦~对于学医的优势也有很多,比如医生这个行业的收入水平以及工作体面及稳定,没有中年危机等等,都是大众眼中从事这个职业的优势,另外,我发现选择了学医可以为自己过滤掉很多智商税,哈哈哈哈,至少我们可以对一些虚假的『保健品』说漏!还可以为家人朋友们提供健康方面的帮助,想想还有点小自豪的!

最后我想说学医真的需要深思熟虑,如果你问我再来一次我还会不会选择这个成长周期很长、回报率很慢的专业,我的答案是——会。也许当初的我是拥有这一颗相当英雄救死扶伤的心,那么现在我认为『医学生』这三个字让我更多的感觉到了爱与责任,永远为成为优秀的医生而努力,也希望自己可以成为一名有责任心,温暖的医生~当下疫情严重,我们更要担起这份身为医学生的责任,为了生命的延续和发展做出贡献。

深入理解计算机系统的目录2

问题一:什么是微型计算机 首先,计算机分为硬件和软件两大部分,软件分为系统软件和应用软件,不多说了。

计算机硬件有输入输出设备,控制器,运算器,存储器5大部件组成(控制器和运算器属于CPU)。

微型计算机的基本工作原理就是:

数据和程序通过输入设备输入计算机,存放在存储里面(计算机所有数据和程序都存放在存储器里,除了有些程序或者指令会暂时存放在运算器里)。然后经过控制器译码(因为我们输入计算机的大都使用汇编语言或者高级语言编写的,叫做源程序,计算机不能识别),编译成二进制代码,即机器语言,叫做目标程序。再进入运算器进行处理,最后经输出设备输出。

问题二:微型计算机是什么 简称“微型机”、“微机”,也称“微电脑”。由大规模集成电路组成的、体积较小的电子计算机。由微处理机(核心)、存储片、输入和输出片、系统总线等组成。特点是体积小、灵活性大、价格便宜、使用方便。微型计算机(Microputer)是指以微处理器为基础,配以内存储器及输入输出(I/0)接口电路和相应的辅助电路伐构成的裸机。把微型计算机集成在一个芯片上即构成单片微型计算机(Single Chip Microputer)。

问题三:微型计算机是什么概念?和电脑有什么区别?到底什么东东才算微型计算机? “计算机”的概念最大,包括大型机、中型机、小型机以微型计算机等。而“微机”是“微型计算机”的简称。“电脑”是人们对微型计算机的一种比喻的叫法。所以,从概念上讲,“电脑”和“微机”应当是等价的。我们最常见的就是这些被人们称作“电脑”的微型计算机。一些中型机、小型机(如IBMAS400,IBMRS/6000)一般只能在研究机构或大的网站、商业机构处见到。

计算机:

计算机是完成信息处理的工具,现代计算机是一种能快速而高效地完成信息处理的数字化电子设备。

电脑:

计算机具有超强的记忆能力、高速的处理能力、很高的计算精度和可靠的判断能力。人们进行的任何复杂的脑力劳动,如果可以分解成计算机可以执行的基本操作,并以计算机可以识别的形式表示出来,存放到计算机中。计算机就可以模仿人的一部分思维活动,代替人的部分脑力劳动,按照人们的意愿自动地工作,所以有人也把计算机称为“电脑”。

电脑在功能上和人脑有许多相似之处。例如人脑的记忆功能、计算功能、判断功能。电脑终究不是人脑,它也不可能完全代替人脑;但是说电脑不能模拟人脑的功能也是不对的,尽管电脑在很多方面远远比不上人脑,但它也有超越人脑的许多性能,人脑与电脑在许多方面有着互补作用。

微型计算机是指体积小,功能相比之下就有点差异。

PC机:

PC是Personal puter 的缩写.也就是通常说的个人电脑. PC分为IBM-PC和苹果机。 IBM-PC是由IBM公司开发的,面向小型和个人用户的电子计算机。 苹果电脑公司的苹果PC机是IBM-PC的竞争对手。 由于IBM-PC的广泛流行,已经使IBM-PC成了PC的代表,也成了PC的标准。如今通常称PC就是指IBM-PC标准的PC。 而苹果PC就被转称为苹果机。

实际生活中有一个有趣的现象,就是:往往理工科的学生更多的将微型计算机称作“微机”或“计算机”,而文科学生和家庭用户则更多的将微型计算机称作“电脑”。

服务器:

服务器是一种高性能计算机,作为网络的节点,存储、处理网络上80%的数据、信息,因此也被称为网络的灵魂。做一个形象的比喻:服务器就像是邮局的交换机,而微机、笔记本、PDA、手机等固定或移动的网络终端,就如散落在家庭、各种办公场所、公共场所等处的电话机。我们与外界日常的生活、工作中的电话交流、沟通,必须经过交换机,才能到达目标电话;同样如此,网络终端设备如家庭、企业中的微机上网,获取资讯,与外界沟通、娱乐等,也必须经过服务器,因此也可以说是服务器在“组织”和“领导”这些设备。

单板机:

单板机就是在一块PCB电路板上把CPU,一定容量的ROM,RAM以及I/O接口电路等大规模集成电路片子组装在一起而成的微机,并配有简单外设如键盘和显示器,通常在PCB上固化有ROM或者EPROM的小规模监控程序.

单片机:

就是一个电脑,只不过是微型的,麻雀虽小,五脏俱全:它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机,排烟罩VCD等等的家电里面都可以看到它的身影!......它主要是作为控制部分的核心部件。...>>

问题四:什么叫微处理器,什么叫微型计算机,什么叫微型计算机系统?三者的区别和联系是什么? 微处理器是构成计算机的部件之一,微型计算机是由微处理器、存储器、接口等组成,微型计算机系统是以微型计算机为中心构成的一个比较大的应用系统

问题五:微型计算机的基本组成是什么? 输入设备,比如键盘鼠标游戏手柄等输出设备,显示器,打印机等运算核心,主机,内含cpu,显卡,声卡,内存等存储设备,硬盘,移动存储等。供电设备,机箱,电源等。网络设备,调制解调器或用于大型网络的交换机等。我自己总结的,应该还算全面了吧。

问题六:微型计算机硬件是什么 一、硬件概念

硬件(hardware)是计算机硬件的简称,是相对于计算机软件(software)而言的。

硬件是对计算机系统中所有实体部件和设备的统称。

二、硬件的分类

硬件在逻辑上可以分为五大类:控制器、运算器、存储器、输入设备和输出设备。

我们平时见到的计钉机硬件通常可以分为三大部分:主机、输入设备、输出设备。

三、常见的硬件

主机:主机箱、主板、CPU、内存、硬盘、软驱、光驱、

显卡、声卡、网卡、风扇、电源

显示器、鼠标键盘

1、 主机箱:为PC提供了一个外在形像; 防辐射; 为各种部件提供安装支架(前面板上提供了硬盘、光驱、软驱的安装支架,后面板主要提供了电源的安装支架)。主要有AT结构和ATX立体结构的。

2、 主板:matherboard/mainboard,计算机内部最大的一块电路板,它的规格和档次决定了主机的规格和档次。 现在流行的有两种规格:AT和ATX规格,前者以被淘汰。 主板由许多的插槽、接口、芯片 *** 而成。

采构注意项:速度、稳定性、兼容性、扩充能力、升级能力等。

3、 CPU:central processing unit,是PC的核心,犹如人类的大脑。其内部可分为:控制单元、逻辑单元和存储单元。 主要性能有:内频、外频、前端总线速度、L1和L2的容量和速率、支持的扩展指令集、工作电压等。

目前世界上主要的CPU广商有INTEL(Conroe 系列、Pentium E系列、Celeron系列)和AMD(弈龙系列、Athlon64 X2系列、速龙系列等等 )公司。

4、 内存:计算机系统中存放数据和指令的半导体存储单元。

按工作原理可分为ROM和RAM。ROM又可分为只读ROM、可编程ROM和可擦除可编程ROM。它们主要存放PC指令和静态数据。RAM主要用于存放动态数据。

5、 硬盘:PC的仓库。用于存放各种资源。

6、 光驱:主要有三个马达,一个专门负责光驱的弹出和送入,一个专门负责盘片的驱动,另一个则用于驱动镭射针头进行数据的读写。

7、 显卡:显示器和主机进行通信的接口和控件电路。 它的作用是将主机中传输的数字脉冲信号转换成模拟信号,并将其显示。

三大指标:刷新频率、分辨率、色深。

8、 声卡:语音处理不可缺少的硬件。功能主要包括:声音的采集(可选择单声道或双声道,采样频率)、DAC、ADC、MIDI音乐数字接口、电子混音。此外,声卡上还有一个或多个CD音频输入接口,用以接收CD―ROM的声音采集信号。

四、注意事项

1、主板怕变形和静电。

2、CPU怕高温和高电压。

3、内存怕超频。

4、硬盘怕震动和灰尘。

5、光驱怕灰尘和花盘和震动。

6、键盘怕潮和灰尘。

7、鼠标怕灰尘、强光和摔。

8、显示器最怕高温高压。

计算机常识

一、 名称

全称:电子计算机

早期称为:微机

初期在香港商人之间被称为电脑,后引入国内,被广泛使用。

二、 定义

电子计算机是一种能够按照事先存储的程序,自动、高速地进行大量数值的计算和各种信息的处理的现代化智能电子设备。

三、简介

电脑的学名为电子计算机,是由早期的电动计算器发展而来的。

通常说到“世界公认的第一台电子数字计算机”大多数人都认为是1946年面世的“ENIAC”,它主要是用于计算弹道。是由美国宾夕法尼亚大学莫尔电工学院制造的,但它的体积庞大,占地面积170多平方米,重量约30吨,消......>>

问题七:什么是微型计算机?什么是单片机PC机? 哈哈,这简单!计算机发明时还处于电子管时代,那时的计算机运算效率低下,体积却十分庞大,价格也非常昂贵,主要用于科研和军事领域。随着晶体管和大规模集成电路在模拟电路中的运用和发展,使计算机平民化成为可能,于是出现了可以放到桌子上的台式电脑,这就是微型计算机,简称微机,也叫家用电脑,英文简称PC.解剖一下微机可以发现,微机主要由CPU、存储器、时钟电路和相应的I/O接口组成,现代技术可以将这些电路集成在一块芯片上,这个具备上述主要电路的大规模集成电路就叫做单片机。非专业回答,供参考。

问题八:单片机与微型计算机的关系是什么? 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能,集成到一块硅片上构成的一个小而完善的计算机系统。 单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。 可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。

问题九:谁能解释下微机是什么意思 微型计算机简称“微型机”、“微机”,由于其具备人脑的某些功能,所以也称其为“微电脑”。是由大规模集成电路组成的、体积较小的电子计算机。它是以微处理器为基础,配以内存储器及输入输出(I/0)接口电路和础应的辅助电路而构成的裸机。特点是体积小、灵活性大、价格便宜、使用方便。把微型计算机集成在一个芯片上即构成单片微型计算机(Single Chip Microputer)。由微型计算机配以相应的外围设备(如打印机)及其他专用电路、电源、面板、机架以及足够的软件构成的系统叫做微型计算机系统(Microputer System)(即通常说的电脑)。

问题十:计算机和微型计算机是根据什么划代的 计算机发展的四个阶段是根据电子元件来划分的。集成电路是把许多晶体管、电阻、电容等构成的电路集成在一块半导体材料。

圣才电子书为你解答!

第1章 计算机系统漫游1

1.1 信息就是位+上下文1

1.2 程序被其他程序翻译成不同的格式3

1.3 了解编译系统如何工作是大有益处的4

1.4 处理器读并解释存储在存储器中的指令5

1.4.1 系统的硬件组成5

1.4.2 运行hello程序7

1.5 高速缓存至关重要7

1.6 存储设备形成层次结构9

1.7 操作系统管理硬件10

1.7.1 进程11

1.7.2 线程12

1.7.3 虚拟存储器12

1.7.4 文件13

1.8 系统之间利用网络通信13

1.9 重要主题15

1.9.1 并发和并行15

1.9.2 计算机系统中抽象的重要性17

1.10 小结17

参考文献说明18

.第一部分 程序结构和执行

第2章 信息的表示和处理20

2.1 信息存储22

2.1.1 十六进制表示法22

2.1.2 字25

2.1.3 数据大小25

2.1.4 寻址和字节顺序26

2.1.5 表示字符串31

2.1.6 表示代码31

2.1.7 布尔代数简介32

2.1.8 c语言中的位级运算34

2.1.9 c语言中的逻辑运算36

2.1.10 c语言中的移位运算36

2.2 整数表示38

2.2.1 整型数据类型38

2.2.2 无符号数的编码39

2.2.3 补码编码40

2.2.4 有符号数和无符号数之间的转换44

2.2.5 c语言中的有符号数与无符号数47

2.2.6 扩展一个数字的位表示49

2.2.7 截断数字51

2.2.8 关于有符号数与无符号数的建议52

2.3 整数运算54

2.3.1 无符号加法54

2.3.2 补码加法57

2.3.3 补码的非59

2.3.4 无符号乘法60

2.3.5 补码乘法60

2.3.6 乘以常数63

2.3.7 除以2的幂64

2.3.8 关于整数运算的最后思考67

2.4 浮点数67

2.4.1 二进制小数68

2.4.2 ieee浮点表示70

2.4.3 数字示例71

2.4.4 舍入74

2.4.5 浮点运算76

2.4.6 c语言中的浮点数77

2.5 小结79

参考文献说明80

家庭作业80

练习题答案90

第3章 程序的机器级表示102

3.1 历史观点103

3.2 程序编码105

3.2.1 机器级代码106

3.2.2 代码示例107

3.2.3 关于格式的注解109

3.3 数据格式111

3.4 访问信息112

3.4.1 操作数指示符112

3.4.2 数据传送指令114

3.4.3 数据传送示例116

3.5 算术和逻辑操作118

3.5.1 加载有效地址118

3.5.2 一元操作和二元操作119

3.5.3 移位操作120

3.5.4 讨论120

3.5.5 特殊的算术操作122

3.6 控制123

3.6.1 条件码124

3.6.2 访问条件码125

3.6.3 跳转指令及其编码127

3.6.4 翻译条件分支129

3.6.5 循环132

3.6.6 条件传送指令139

3.6.7 switch语句144

3.7 过程149

3.7.1 栈帧结构149

3.7.2 转移控制150

3.7.3 寄存器使用惯例151

3.7.4 过程示例152

3.7.5 递归过程156

3.8 数组分配和访问158

3.8.1 基本原则158

3.8.2 指针运算159

3.8.3 嵌套的数组159

3.8.4 定长数组161

3.8.5 变长数组163

3.9 异质的数据结构164

3.9.1 结构164

3.9.2 联合167

3.9.3 数据对齐170

3.10 综合:理解指针172

3.11 应用:使用gdb调试器174

3.12 存储器的越界引用和缓冲区溢出175

3.13 x86-64:将ia32扩展到64位183

3.13.1 x86-64的历史和动因184

3.13.2 x86-64简介185

3.13.3 访问信息187

3.13.4 控制192

3.13.5 数据结构200

3.13.6 关于x86-64的总结性评论200

3.14 浮点程序的机器级表示201

3.15 小结201

参考文献说明202

家庭作业202

练习题答案212

第4章 处理器体系结构230

4.1 y86指令集体系结构231

4.1.1 程序员可见的状态231

4.1.2 y86指令232

4.1.3 指令编码233

4.1.4 y86异常237

4.1.5 y86程序237

4.1.6 一些y86指令的详情241

4.2 逻辑设计和硬件控制语言hcl242

4.2.1 逻辑门243

4.2.2 组合电路和hcl布尔表达式243

4.2.3 字级的组合电路和hcl整数表达式245

4.2.4 集合关系248

4.2.5 存储器和时钟248

4.3 y86的顺序实现250

4.3.1 将处理组织成阶段250

4.3.2 seq硬件结构258

4.3.3 seq的时序259

4.3.4 seq阶段的实现262

4.4 流水线的通用原理267

4.4.1 计算流水线268

4.4.2 流水线操作的详细说明269

4.4.3 流水线的局限性271

4.4.4 带反馈的流水线系统272

4.5 y86的流水线实现273

4.5.1 seq+:重新安排计算阶段273

4.5.2 插入流水线寄存器276

4.5.3 对信号进行重新排列和标号277

4.5.4 预测下一个pc279

4.5.5 流水线冒险280

4.5.6 用暂停来避免数据冒险283

4.5.7 用转发来避免数据冒险285

4.5.8 加载/使用数据冒险288

4.5.9 异常处理289

4.5.10 pipe各阶段的实现291

4.5.11 流水线控制逻辑297

4.5.12 性能分析305

4.5.13 未完成的工作306

4.6 小结308

参考文献说明309

家庭作业309

练习题答案314

第5章 优化程序性能324

5.1 优化编译器的能力和局限性325

5.2 表示程序性能328

5.3 程序示例330

5.4 消除循环的低效率332

5.5 减少过程调用336

5.6 消除不必要的存储器引用336

5.7 理解现代处理器340

5.7.1 整体操作340

5.7.2 功能单元的性能343

5.7.3 处理器操作的抽象模型344

5.8 循环展开348

5.9 提高并行性351

5.9.1 多个累积变量351

5.9.2 重新结合变换354

5.10 优化合并代码的结果小结358

5.11 一些限制因素359

5.11.1 寄存器溢出359

5.11.2 分支预测和预测错误处罚360

5.12 理解存储器性能363

5.12.1 加载的性能363

5.12.2 存储的性能364

5.13 应用:性能提高技术369

5.14 确认和消除性能瓶颈369

5.14.1 程序剖析370

5.14.2 使用剖析程序来指导优化371

5.14.3 amdahl定律374

5.15 小结375

参考文献说明375

家庭作业376

练习题答案378

第6章 存储器层次结构382

6.1存储技术382

6.1.1 随机访问存储器383

6.1.2 磁盘存储389

6.1.3 固态硬盘398

6.1.4 存储技术趋势399

6.2 局部性401

6.2.1 对程序数据引用的局部性402

6.2.2 取指令的局部性403

6.2.3 局部性小结403

6.3 存储器层次结构405

6.3.1 存储器层次结构中的缓存406

6.3.2 存储器层次结构概念小结408

6.4 高速缓存存储器408

6.4.1 通用的高速缓存存储器结构409

6.4.2 直接映射高速缓存410

6.4.3 组相联高速缓存416

6.4.4 全相联高速缓存418

6.4.5 有关写的问题420

6.4.6 一个真实的高速缓存层次结构的解剖421

6.4.7 高速缓存参数的性能影响422

6.5 编写高速缓存友好的代码423

6.6 综合:高速缓存对程序性能的影响426

6.6.1 存储器山426

6.6.2 重新排列循环以提高空间局部性430

6.6.3 在程序中利用局部性433

6.7 小结433

参考文献说明434

家庭作业434

练习题答案442

第二部分 在系统上运行程序

第7章 链接448

7.1 编译器驱动程序449

7.2 静态链接450

7.3 目标文件450

7.4 可重定位目标文件451

7.5 符号和符号表452

7.6 符号解析454

7.6.1 链接器如何解析多重定义的全局符号455

7.6.2 与静态库链接457

7.6.3 链接器如何使用静态库来解析引用460

7.7 重定位461

7.7.1 重定位条目461

7.7.2 重定位符号引用462

7.8 可执行目标文件465

7.9 加载可执行目标文件466

7.10 动态链接共享库467

7.11 从应用程序中加载和链接共享库468

7.12 与位置无关的代码(pic)471

7.13 处理目标文件的工具473

7.14 小结473

参考文献说明474

家庭作业474

练习题答案479

第8章 异常控制流480

8.1 异常481

8.1.1 异常处理481

8.1.2 异常的类别482

8.1.3 linux/ia32系统中的异常484

8.2 进程487

8.2.1 逻辑控制流487

8.2.2 并发流487

8.2.3 私有地址空间488

8.2.4 用户模式和内核模式488

8.2.5 上下文切换489

8.3 系统调用错误处理491

8.4 进程控制492

8.4.1 获取进程id492

8.4.2 创建和终止进程492

8.4.3 回收子进程495

8.4.4 让进程休眠499

8.4.5 加载并运行程序500

8.4.6 利用fork和execve运行程序502

8.5 信号504

8.5.1 信号术语505

8.5.2 发送信号506

8.5.3 接收信号509

8.5.4 信号处理问题511

8.5.5 可移植的信号处理516

8.5.6 显式地阻塞和取消阻塞信号517

8.5.7 同步流以避免讨厌的并发错误517

8.6 非本地跳转521

8.7 操作进程的工具524

8.8 小结524

参考文献说明525

家庭作业525

练习题答案530

第9章 虚拟存储器534

9.1 物理和虚拟寻址535

9.2 地址空间535

9.3 虚拟存储器作为缓存的工具536

9.3.1 dram缓存的组织结构537

9.3.2 页表537

9.3.3 页命中538

9.3.4 缺页538

9.3.5 分配页面539

9.3.6 又是局部性救了我们539

9.4 虚拟存储器作为存储器管理的工具540

9.5 虚拟存储器作为存储器保护的工具541

9.6 地址翻译542

9.6.1 结合高速缓存和虚拟存储器544

9.6.2 利用tlb加速地址翻译545

9.6.3 多级页表546

9.6.4 综合:端到端的地址翻译547

9.7 案例研究:intel core i7/linux存储器系统550

9.7.1 core i7地址翻译551

9.7.2 linux虚拟存储器系统554

9.8 存储器映射556

9.8.1 再看共享对象557

9.8.2 再看fork函数558

9.8.3 再看execve函数559

9.8.4 使用mmap函数的用户级存储器映射559

9.9 动态存储器分配561

9.9.1 malloc和free函数561

9.9.2 为什么要使用动态存储器分配563

9.9.3 分配器的要求和目标564

9.9.4 碎片565

9.9.5 实现问题565

9.9.6 隐式空闲链表565

9.9.7 放置已分配的块567

9.9.8 分割空闲块567

9.9.9 获取额外的堆存储器567

9.9.10 合并空闲块568

9.9.11 带边界标记的合并568

9.9.12 综合:实现一个简单的分配器570

9.9.13 显式空闲链表576

9.9.14 分离的空闲链表576

9.10 垃圾收集578

9.10.1 垃圾收集器的基本知识579

9.10.2 mark&sweep垃圾收集器580

9.10.3 c程序的保守mark&sweep580

9.11 c程序中常见的与存储器有关的错误581

9.11.1 间接引用坏指针582

9.11.2 读未初始化的存储器582

9.11.3 允许栈缓冲区溢出582

9.11.4 假设指针和它们指向的对象是相同大小的583

9.11.5 造成错位错误583

9.11.6 引用指针,而不是它所指向的对象583

9.11.7 误解指针运算584

9.11.8 引用不存在的变量584

9.11.9 引用空闲堆块中的数据584

9.11.10 引起存储器泄漏585

9.12 小结585

参考文献说明586

家庭作业586

练习题答案589

第三部分 程序间的交互和通信

第10章 系统级i/o596

10.1 unix i/o596

10.2 打开和关闭文件597

10.3 读和写文件598

10.4 用rio包健壮地读写599

10.4.1 rio的无缓冲的输入输出函数600

10.4.2 rio的带缓冲的输入函数600

10.5 读取文件元数据604

10.6 共享文件606

10.7 i/o重定向608

10.8 标准i/o609

10.9 综合:我该使用哪些i/o函数610

10.10 小结611

参考文献说明612

家庭作业612

练习题答案612

第11章 网络编程614

11.1 客户端-服务器编程模型614

11.2 网络615

11.3 全球ip因特网618

11.3.1 ip地址619

11.3.2 因特网域名620

11.3.3 因特网连接623

11.4 套接字接口625

11.4.1 套接字地址结构625

11.4.2 socket函数626

11.4.3 connect函数626

11.4.4 open_clientfd函数627

11.4.5 bind函数628

11.4.6 listen函数628

11.4.7 open_listenfd函数628

11.4.8 accept函数629

11.4.9 echo客户端和服务器的示例630

11.5 web服务器633

11.5.1 web基础633

11.5.2 web内容633

11.5.3 http事务634

11.5.4 服务动态内容636

11.6 综合:tiny web服务器639

11.7 小结645

参考文献说明645

家庭作业646

练习题答案646

第12章 并发编程648

12.1 基于进程的并发编程649

12.1.1 基于进程的并发服务器649

12.1.2 关于进程的优劣651

12.2 基于i/o多路复用的并发编程651

12.2.1 基于i/o多路复用的并发事件驱动服务器653

12.2.2 i/o多路复用技术的优劣657

12.3 基于线程的并发编程657

12.3.1 线程执行模型657

12.3.2 posix线程658

12.3.3 创建线程659

12.3.4 终止线程659

12.3.5 回收已终止线程的资源660

12.3.6 分离线程660

12.3.7 初始化线程660

12.3.8 一个基于线程的并发服务器661

12.4 多线程程序中的共享变量662

12.4.1 线程存储器模型663

12.4.2 将变量映射到存储器663

12.4.3 共享变量664

12.5 用信号量同步线程664

12.5.1 进度图667

12.5.2 信号量668

12.5.3 使用信号量来实现互斥669

12.5.4 利用信号量来调度共享资源670

12.5.5 综合:基于预线程化的并发服务器674

12.6 使用线程提高并行性676

12.7 其他并发问题680

12.7.1 线程安全680

12.7.2 可重入性682

12.7.3 在线程化的程序中使用已存在的库函数682

12.7.4 竞争683

12.7.5 死锁685

12.8 小结687

参考文献说明687

家庭作业688

练习题答案691

附录a 错误处理694

a.1 unix系统中的错误处理694

a.2错误处理包装函数696

参考文献698