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
【深入理解计算机系统】
24、
深入理解计算机系统
笔记,虚拟存储器,动态存储器分配
1、需要额外的虚拟存储器时,使用一种动态存储器分配器(dynamic memory allocator)。一个动态存储器分配器维护着一个进程的虚拟存储器区域,称为堆(heap)。在大多数的unix系统中,堆是一个请求二进制0的区域;对于每个进程,内核维护着一个变量brk,它指向堆的顶部。 2、分配器将堆视为一组不同大小的块(block)的集合来维护。每个块就是一个连续的虚拟存储器组块(chu
·
2015-11-01 13:38
计算机
22、
深入理解计算机系统
笔记,虚拟存储器,Linux示例
1、Pentium地址翻译的情况 1)页表 每个pentium系统都使用如图所示两级页表。 每个进程都有一个惟一的页面目录和页表集合。页面目录基址寄存器(page directory base register, PDBR)指向页表目录的起始位置。 2)PDE与PTE格式 Write-through 直写;write back: 写回。
·
2015-11-01 13:37
linux
20、
深入理解计算机系统
笔记,虚拟存储器,基本原理(2)
2)页命中 3)缺页 DRAM缓存不命中称为缺页(page fault)。 VM page fault (before). The reference to a word in VP 3 is a miss and triggers a page fault. VM page fault (after). The page fault handler selects VP
·
2015-11-01 13:35
计算机
19、
深入理解计算机系统
笔记,虚拟存储器,基本原理(1)
1、一个系统中的进程是与其他进程共享CPU和主存资源的。 2、虚拟存储器(Virtual Memory),是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完善交互,它为每个进程提供一个大的,一致的,私有地址空间。通过一个清晰的机制,虚拟存储器提供了三个要重的能力:它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,
·
2015-11-01 13:35
计算机
16、
深入理解计算机系统
笔记:信号
1、更高层软件形式的异常,称为unix信号,它允许进程中断其他进程。一个信号(signal)就是一条消息,它通知进程一个某种类型的事件已经在系统中发生了。Linux支持30种不同类型的信号。 2、以前,主存储器是用一种称为磁芯存储器(core memory)的技术来实现的。“转储存储器(dumping core)”是一个历史术语,意为把代码和数据存储器段的映像写到磁盘上。 3、传送一
·
2015-11-01 13:34
计算机
14、
深入理解计算机系统
笔记:异常控制流
1、系统中可能的每种类型的异常都分配了一个惟一的非负整数的异常号(exception number)。这些号码中的某一些是由处理器的设计者分配的,其他号码是由操作系统内核的设计者分配的。前者如:除0项,缺页,存储器访违例,断点,算术溢出;后者的示例包括系统调用和来自外部I/O设备的信号。 在系统启动时,OS分配的初始化一张称为异常表的跳转表,使得表目k包含异常k的处理程序的地址。 2
·
2015-11-01 13:33
计算机
15、
深入理解计算机系统
笔记:进程控制
1、获取进程ID[1] 每个进程都有一个唯一的正数(非0)进程ID(PID)。 示例代码 #include <unistd.h> #include <sys/types.h> pid t getpid(void); pid t getppid(void); returns: PID of either the caller or the parent
·
2015-11-01 13:33
计算机
*13、
深入理解计算机系统
笔记:程序链接(2)
1、可执行目标文件 注:ELF(Executable and Linkable Format) 从上图中可以看出,代码段的地址总是比数据段的地址小。 2、加载可执行目标文件 任何Unix程序都可以通过调用execve函数来调用加载器。加载器将可执行目标文件中的代码和数据从磁盘拷贝到存储器中,然后通过跳转到程序的第1条指令,即入口点(Entry Point),来运行该程序。将程
·
2015-11-01 13:32
计算机
12、
深入理解计算机系统
笔记:程序链接(1)
1、静态链接 注:链接器将重定位目标文件(relocatable object files)组合成一个可执行目标文件。cpp(c previous processor,C预处理器);ccl(C编译器);as(汇编器) 2、为了创建静态链接,链接器完成两个主要任务: 1)符号解析(symbol resolution):将每个符号引用和一个符号定义联系起来。 2)重定位(relo
·
2015-11-01 13:31
计算机
11、
深入理解计算机系统
笔记:存储器层次结构,利用局部性
1、缓存友好的代码 对局部变量的反复引用是好的,因为编译器能够将它们缓存在寄存器文件中(时间局部性)。(内部循环) 步长为1的引用模式是好的,因为存储器层次结构中所有层次上的缓存都是将数据存储为连续的块(空间局部性)。(通过按照数据对象存储在存储器中的顺序来读数据) 2、使用分块来提高时间局部性 分块的大致思想是将一个程序的数据结构组织成块(block)的组块(chunks)。
·
2015-11-01 13:30
计算机
10、
深入理解计算机系统
笔记:存储器层次结构,高速缓存存储器(2)
1、组相联高速缓存(set associative cache) 1 < E < C/B 2、全相联映射(fully associative cache) E = C/B 因为全相联高速缓存需要并行搜索许多相匹配的行,所以构造相对是困难的;因此只适合做小的高速缓存;如虚拟存储器系统中的TLB,它缓存页表项。 3、写回(write ba
·
2015-11-01 13:30
计算机
9、
深入理解计算机系统
笔记:存储器层次结构,高速缓存存储器(1)
1、高速缓存存储结构 注:set(组) 组索引位告诉我们这个字必须存储在那个组中;然后A中t个标记位告诉我们这个组中的那一行(if any)包含这个字;当且仅当设置了有效位并且该行的标记位与地址A中的标记位相匹配时,组中的这一行包含这个字;确定行后,b个块偏移位给出了在B个字节的数据块中的字偏移。 2、直接映射高速缓存 每个组只有一行(E = 1
·
2015-11-01 13:29
计算机
8、
深入理解计算机系统
笔记:存储器层次结构,局部性
1、局部性有两种形式:时间局部性(temporal locality)和空间局部性(spatial locality)。在一个具有良好时间局部性的程序中,被引用过一次的存储器位置很可能在不远的将来再被多次引用;在一个具有良好空间局部性的程序中,如果一个存储器位置被引用了一次,那么程序很可能在不远的将来引用附近的一个存储器位置。 2、重复引用同一个变量的程序有良好的时间局部性。对于具有步长为k
·
2015-11-01 13:28
计算机
7、
深入理解计算机系统
笔记:存储器层次结构,存储技术(2)
1、磁盘构造 每个表面是由一组称为磁道(track)的同心圆组成;每个磁道被划分成一组扇区(sector);每个扇区包含相等数量的数据位(通常是512字节);这些数据编码在扇区上的磁性材料中。扇区之间由一些间隙(gap)分隔开,这些间隙中不存在数据位。间隙存储用来标识扇区的格式化位。 注:spindle(主轴),platter(盘片),cylinder(柱面) 2、磁盘容量
·
2015-11-01 13:27
计算机
6、
深入理解计算机系统
笔记:存储器层次结构,存储技术(1)
1、如果你的程序需要的数据是存储在CPU寄存器中的,那么在执行期间,在零个周期内就能访问到它们。如果存储在高速缓冲中,需要1~10个周期。如果存储在主存中,需要50~100个周期。如果存储在磁盘上,需要约20000000个周期。 2、随机访问存储器(RAM,Random-access memory)分为两类-静态和动态的。静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵很多。SRA
·
2015-11-01 13:27
计算机
5、
深入理解计算机系统
笔记:优化程序性能
1、编译技术被分为“与机器无关”和“与机器相关”两类。“与机器无关”,使用这些技术时可以不考虑将执行代码的计算机的特性;而“与机器有关”,指这些技术依赖于许多机器的低级细节。 2、最小二乘法拟合 3、优化之一:消除循环的低效率 将循环中需要每次计算,但是计算结果不会改变的语句移出去,称为代码移动(code motion)。 4、减少不必要的过程调用。如可以确保边界安全的情况下
·
2015-11-01 13:26
计算机
3、
深入理解计算机系统
笔记:程序的机器级表示
1、Intel现在称其指令集为IA32,即Intel 32位体系结构(Intel Architecture 32-bit),这个处理器也俗称为“x86”。 2、Linux使用了平面寻址方式(flat addressing),在这种寻址方式中,程序员将整个存储空间看做一个大的字节数组。 3、在平面寻址中,对特殊寄存器的需求已经大为降低了。在大多数情况下,前六个寄存器都可以看作是通用寄存器,对
·
2015-11-01 13:25
计算机
1、
深入理解计算机系统
笔记,系统综述
1、系统的硬件组成 Figure1 Hardware organization of a typical system. CPU: Central Processing Unit, ALU: Arithmetic/Logic Unit, PC: Program counter, USB: Universal Serial Bus. 1)总线 贯穿整个系统的一组电子管道,它携带信息
·
2015-11-01 13:24
计算机
《
深入理解计算机系统
(英文版.第2版)》
《
深入理解计算机系统
(英文版.第2版)》china-pub计算机新书推荐 本书双色印刷,计算机软硬件理论结合讲述的经典之作。
·
2015-11-01 11:51
计算机
深入理解计算机系统
--读书计划
就是这本书了,经典的大学教程。计划用半年到一年的时间再读一次。 额外说一下,这里面只有参与者,没有师傅和徒弟。要想获得帮助,首先不要问愚蠢的问题,其次,尽量去帮助别人。别指望有人能够手把手的教你,回答你的每一个问题。 每个星期大约安排6个小时的进度,大约是20~30页书的阅读(包括对应的习题解答)。每大章结束后的课后作业,也按照每周6个小时的量来做。 练习题书上是有答案的,不过建议不要
·
2015-11-01 11:52
计算机
信息安全系统设计基础第八周期中总结
信息安全系统设计基础第八周期中总结所学《
深入理解计算机系统
》章节:第一章计算机系统漫游第二章信息的表示和处理第三章程序的机器级表示第四章处理器体系结构第六章存储器结构层次第七章链接所学《嵌入式Linux
20135318刘浩晨
·
2015-11-01 10:00
Computer Systems A Programmer's Perspective(
深入理解计算机系统
)第一章读书笔记
第一章 计算机系统漫游 1.1信息就是位+上下文 源程序实际上就是一个由0和1组成的位(又称比特位)序列,这些位被组织成8个一组,称为字节。每个字节都表示程序中某个文本字符。 系统中的所有信息都是由一串比特表示的。区分不同数据对象的唯一方法就是我们读到这些数据对象时的上下文。 1.2程序被其他程序翻译成不同的格式 unix> gc
·
2015-11-01 10:18
System
《
深入理解计算机系统
》--链接
链接可以执行与编译时,也就是在源代码被翻译成机器代码时;也可以执行于加载时,也就是在程序被加载器加载到存储器并执行时;甚至可以执行于运行时,由应用程序来执行。 从传统静态链接到加载时的共享库的动态链接,以及到运行时的共享库的动态链接。 一、编译器驱动程序 /* $begin main */ /*
·
2015-11-01 09:08
计算机
期中总结
《
深入理解计算机系统
》的课程的基础部分已经学完,虽然仅仅短短的半个学期,但也让我受益匪浅。 在第一章计算机系统漫游中,我们知道了计算机系统是由硬件和软件组成的,它们是共同工作来运行应用程序的。
20135314朱恒志
·
2015-11-01 01:00
期中总结
《
深入理解计算机系统
》的课程的基础部分已经学完,虽然仅仅短短的半个学期,但也让我受益匪浅。 在第一章计算机系统漫游中,我们知道了计算机系统是由硬件和软件组成的,它们是共同工作来运行应用程序的。
20135314朱恒志
·
2015-11-01 01:00
记录一下后几年要看的书
底层知识:
深入理解计算机系统
编译原理 现代编译原理(C语言描述) 编译原理及实践 操作系统设计与实现 计算机程序设计与解释 待补充 PS:在学编译原理前最好先学下yacc和lex
·
2015-10-31 13:06
记录
【藏】
深入理解计算机系统
__书评
摘自: http://www.china-pub.com/member/bookpinglun/viewpinglun.asp?id=18133 我在过去半年中把这本书通读了三遍, 有些重点章节(也就是我觉得比较难的章节)甚至看了五遍, 所以我觉得我有必要把自己读这本书的感觉跟尚未读过这本书的同志共享一下,同时也极力地向各位同学推荐一下这本书. 首先, 读这本书几乎不需要太多非
·
2015-10-31 11:37
计算机
读完了csapp(中文名:
深入理解计算机系统
)
上个星期最终把csapp看完了。 我买的是中文版的,由于除了貌似评价不错以外,由于涉及到些自己不了解的底层东西,怕是看英文会云里雾里。如今看来,大概不能算是个长处,可是的确可以加快我的看书速度,否则一星期还真不大可能把这书搞定。 对csapp慕名已久,主要在于据说这本书尽量的做到相对实用,不去讲那些和实际编程没多大关系的计算机原理(毕竟是著名计算机院校里面最偏软件的cmu的作品),重点很得当,像
·
2015-10-31 11:20
APP
深入理解计算机系统
----经验之谈
《CSAPP》全称《Computer Systems A Programmer’s perspective》,国内通常的书名翻译是《
深入理解计算机系统
》,然而有人认为这本书叫做《程序员所需要了解的计算机知识
·
2015-10-31 10:04
计算机
屌丝码农该走的学习之路
1、体系结构也操作系统 《
深入理解计算机系统
》:这本书之前完整地上过 CS61 的课程,所以基本上大致内容都了解,不过还应该多看看。
·
2015-10-31 10:54
学习
32、
深入理解计算机系统
笔记,Unix下处理错误的风格
1、unix风格的错误机制下,当函数,如wait执行出错后,it returns -1 and sets the global variable errno to an error code that indicate the cause of the error.如果成功,则返回有用的结果。 if ((pid = wait(NULL)) < 0) { fprintf(stderr,
·
2015-10-31 10:07
unix
查看字节顺序 from《
深入理解计算机系统
》 p39
#include <stdio.h> #include <stdlib.h> typedef unsigned char *byte_pointer; void show_bytes( byte_pointer start, int len ) { int i; for ( i = 0; i < len; i+
·
2015-10-31 10:54
计算机
《
深入理解计算机系统
》C程序中常见的内存操作有关的典型编程错误
前几天线上模块因堆内存写越界1个字节引起各种诡异崩溃,定位问题过程中的折腾仍历历在目,今天读到《
深入理解计算机系统
》第9章-虚拟存储器,发现书中总结了C程序中常见的内
·
2015-10-31 09:47
计算机
18、
深入理解计算机系统
笔记:测量程序执行时间
1、人不能够觉察短于大约100ms的时间段。 2、计算机有一个外部计时器,它周期性地向处理器发送中断信号。这些中断信号之间的时间被称为间隔时间(interval time)。 3、从一个进程切换到另一个进程需要几千个时钟周期来保存当前当前进程的状态。典型的计时器间隔范围是1~10ms。 4、通过间隔计数(interval counting)来测量时间 OS也用计时器(timer)来
·
2015-10-31 09:30
计算机
30、
深入理解计算机系统
笔记,并发编程(concurrent)(2)
1、共享变量 1)线程存储模型 线程由内核自动调度,每个线程都有它自己的线程上下文(thread context),包括一个惟一的整数线程ID(Thread ID,TID),栈,栈指针,程序计数器,通用目的寄存器和条件码。每个线程和其他线程一起共享进程上下文的剩余部分,包括整个用户的虚拟地址空间,它是由只读文本(代码),读/写数据,堆以及所有的共享库代码和数据区域组成的,还有,线程也共享同样的
·
2015-10-31 09:30
Concurrent
28、
深入理解计算机系统
笔记,Web服务器简介
1、Web服务器以两种不同的方式向客户端提供内容: 1)静态内容(static content):从服务器磁盘取得文件并把它返回客户端来服务。 2)动态内容(dynamic content):运行一个可执行文件,并把它的输出返回给客户端。在服务器上一个子进程的上下文中运行一个程序并将它的输出返回给客户端来服务。 2、在URL中,“?”用来分隔文件名和参数,多个参数用“&”来分隔。参数
·
2015-10-31 09:30
web服务器
4、
深入理解计算机系统
笔记:处理器的体系结构
1、CISC(Complex Instruction Set Computing),RISC(Reduced Instruction-Set Computer),MIPS(Million Instructions Per Second)。 2、CISC编码是可变长度的,IA32的指令长度可以是1~15;RISC编码是固定长度的,通常所有的指令都是编码为4个字节。 3、在硬件设计中,电子电路
·
2015-10-31 09:29
体系结构
2、
深入理解计算机系统
笔记:信息表示
1、机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器(virtual memory)。存储器的每个字节都由一个唯一的数字来标识,称为地址(address),所有可能地址的集合就称为虚拟地址空间(virtual address space)。虚拟地址空间是一个展现给机器级程序的概念性映像(image),具体的实现使用的是随机访问存储器RAM,磁盘存储,特殊硬件和OS软件的结合,来为程序提供
·
2015-10-31 09:29
计算机
17、
深入理解计算机系统
笔记:非本地跳转
1、C提供了用户级异常控制流,称为非本地跳转(nonlocal jump),它将控制流从一个函数转移到另一个当前正在执行的函数;而不需要经过正常的调用-返回序列。通过setjmp和longjmp来实现的。 函数原形 #include <setjmp.h> int setjmp(jmp buf env); int sigsetjmp(sigjmp buf env, int
·
2015-10-31 09:29
计算机
<
深入理解计算机系统
> CSAPP Tiny web 服务器
本文是我学习<
深入理解计算机系统
>中网络编程部分的学习笔记。 1.
·
2015-10-31 08:14
Web
并发编程学习总结
最近学习《
深入理解计算机系统
》,最后一章中讲到了并发。之前一直以为并发是为了提高性能,书中将并发理解为逻辑控制流在时间上的重叠。简单的说,就是让机器能够同时处理多个事情,充分利用机器的能力。
·
2015-10-30 14:16
并发编程
必读书目
Hidden Language of Computer Hardware and Software (《编码的奥秘》) Computer System: A Programmer’s Approach (《
深入理解计算机系统
·
2015-10-30 13:31
读书
《CSAPP》第一章,第二章总结——来记一篇流水账吧
第一个坑就是这本《
深入理解计算机系统
》,第二个坑是Python,第三个坑就是机器学习了。最近两周每一部分都在学习,不停的转换,想总结总结,感觉都已经一团乱麻了,于是就有了这么一篇流水账的博客吧。
yw8355507
·
2015-10-30 02:00
读书
即时通信的相关技术: Linux系统编程手册 Linux内核探秘 深入理解Java虚拟机 Erlang一系列的书 汇编语言
深入理解计算机系统
CPU相关的书存储技术: PostgreSQL的代码分析
David_Alpha_Fox
·
2015-10-29 19:00
书单
20135223何伟钦—信息安全系统设计基础第七周学习总结
第六章存储器层次结构 【学习时间:6小时】 【学习任务:《
深入理解计算机系统
》第六章】6.1存储技术 6.1.1随机访问存储器分为两类:静态(SRAM)和动态(DRAM)。
20135223
·
2015-10-28 00:00
20135223何伟钦—信息安全系统设计基础第七周学习总结
第六章存储器层次结构 【学习时间:6小时】 【学习任务:《
深入理解计算机系统
》第六章】6.1存储技术 6.1.1随机访问存储器分为两类:静态(SRAM)和动态(DRAM)。
20135223
·
2015-10-28 00:00
信息安全系统设计基础第六周学习总结
参考资料:《
深入理解计算机系统
》系统总线与接口技术总线的概念_图文_百度文库http://wenku.baidu.com/link?
苏儿
·
2015-10-27 20:00
信息安全系统设计基础第六周学习总结
参考资料:《
深入理解计算机系统
》系统总线与接口技术总线的概念_图文_百度文库http://wenku.baidu.com/link?
苏儿
·
2015-10-27 20:00
补码的非
读〈
深入理解计算机系统
〉2.3.3 - 补码的非,有所思,录于此 话总得有个头吧,这个头就是我想知道,补码的非,这种算法用途在什么地方 先看“补码的非”定义:上面是原书的截图,此处设w=4,用补码可表示的范围就是
·
2015-10-27 11:44
补码
内存对齐学习笔记
关于内存对齐的问题,一直都不是特别理解,后来在《
深入理解计算机系统
》中看到了一些详细的描述。遂在此记录下来(部分内容直接摘抄自书本)。
·
2015-10-27 11:41
学习笔记
上一页
25
26
27
28
29
30
31
32
下一页
按字母分类:
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
其他