上一页 1 ··· 48 49 50 51 52 53 54 55 56 ··· 75 下一页
摘要: 1、更高层软件形式的异常,称为unix信号,它允许进程中断其他进程。一个信号(signal)就是一条消息,它通知进程一个某种类型的事件已经在系统中发生了。Linux支持30种不同类型的信号。2、以前,主存储器是用一种称为磁芯存储器(core memory)的技术来实现的。“转储存储器(dumping core)”是一个历史术语,意为把代码和数据存储器段的映像写到磁盘上。3、传送一个信号到目的进程是由两个不同步骤组成:1)发送信号:内核通过更新目的进程上下文中的某个状态,发送(delivers/sends)一个信号给目的进程。发送信号可以有如下两种原因:内核检测到一个系统事件,比如除0或子进程终 阅读全文
posted @ 2011-06-17 17:26 浪里飞 阅读(1007) 评论(0) 推荐(0) 编辑
摘要: 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 The getpid and getppid routines return an integer value of type pid_t, which on Linux systems is defined in types.h as 阅读全文
posted @ 2011-06-17 12:02 浪里飞 阅读(736) 评论(0) 推荐(0) 编辑
摘要: 1、系统中可能的每种类型的异常都分配了一个惟一的非负整数的异常号(exception number)。这些号码中的某一些是由处理器的设计者分配的,其他号码是由操作系统内核的设计者分配的。前者如:除0项,缺页,存储器访违例,断点,算术溢出;后者的示例包括系统调用和来自外部I/O设备的信号。在系统启动时,OS分配的初始化一张称为异常表的跳转表,使得表目k包含异常k的处理程序的地址。2、如果控制从一个用户程序转移到内核,所有这些项目(item)都被压到内核栈中,而不是压到用户栈中。异常处理程序运行在内核模式下,这意味着它们对所的资源都有完全的访问权限。3、现代OS把这些突发改变(abrupt cha 阅读全文
posted @ 2011-06-16 20:54 浪里飞 阅读(721) 评论(0) 推荐(0) 编辑
摘要: 1、可执行目标文件注:ELF(Executable and Linkable Format)从上图中可以看出,代码段的地址总是比数据段的地址小。2、加载可执行目标文件任何Unix程序都可以通过调用execve函数来调用加载器。加载器将可执行目标文件中的代码和数据从磁盘拷贝到存储器中,然后通过跳转到程序的第1条指令,即入口点(Entry Point),来运行该程序。将程序拷贝到存储器并运行的过程叫做加载(loading)。每个Unix程序都有一个运行时存储器映像,如图中。在Linux系统中,代码段总是从地址0x08048000处开始。数据段是在接下来的下一个4KB对齐的地址处。堆在接下来的读/写 阅读全文
posted @ 2011-06-15 23:09 浪里飞 阅读(841) 评论(0) 推荐(0) 编辑
摘要: 1、静态链接注:链接器将重定位目标文件(relocatable object files)组合成一个可执行目标文件。cpp(c previous processor,C预处理器);ccl(C编译器);as(汇编器)2、为了创建静态链接,链接器完成两个主要任务:1)符号解析(symbol resolution):将每个符号引用和一个符号定义联系起来。2)重定位(relocation):编译器和汇编器生成从0地址开始的代码和数据节。链接器通过把每个符号定义与一个存储器位置联系起来,然后修改所有对这些符号的引用,使得它们指向这个存储器位置,从而重定位这些节。3、目标文件有三种形式Relocatabl 阅读全文
posted @ 2011-06-14 21:43 浪里飞 阅读(659) 评论(0) 推荐(0) 编辑
摘要: 1、缓存友好的代码 对局部变量的反复引用是好的,因为编译器能够将它们缓存在寄存器文件中(时间局部性)。(内部循环) 步长为1的引用模式是好的,因为存储器层次结构中所有层次上的缓存都是将数据存储为连续的块(空间局部性)。(通过按照数据对象存储在存储器中的顺序来读数据) 2、使用分块来提高时间局部性 分块的大致思想是将一个程序的数据结构组织成块(block)的组块(chunks)。 <Compute... 阅读全文
posted @ 2011-06-13 23:32 浪里飞 阅读(478) 评论(0) 推荐(0) 编辑
摘要: 1、组相联高速缓存(set associative cache) 1 < E < C/B 2、全相联映射(fully associative cache) E = C/B 因为全相联高速缓存需要并行搜索许多相匹配的行,所以构造相对是困难的;因此只适合做小的高速缓存;如虚拟存储器系统中的TLB,它缓存页表项。 3、写回(write back):尽可能推迟存储器更新,只有当替换算法要驱逐已更新的块时... 阅读全文
posted @ 2011-06-13 15:10 浪里飞 阅读(651) 评论(0) 推荐(0) 编辑
摘要: 1、高速缓存存储结构 注:set(组) 组索引位告诉我们这个字必须存储在那个组中;然后A中t个标记位告诉我们这个组中的那一行(if any)包含这个字;当且仅当设置了有效位并且该行的标记位与地址A中的标记位相匹配时,组中的这一行包含这个字;确定行后,b个块偏移位给出了在B个字节的数据块中的字偏移。 2、直接映射高速缓存 每个组只有一行(E = 1)的高速缓存被称为直接映射高速缓存(direct-mapped cache)。 高速缓存确定一个请求是否命中,然后抽取出被请求的字的过程,分为三步:组选择,行匹配,字抽取。 如果把高速缓存看作一个关于组的一维数组,那么这些组索引就是一个到这个数组的索. 阅读全文
posted @ 2011-06-13 11:23 浪里飞 阅读(875) 评论(0) 推荐(0) 编辑
摘要: 1、局部性有两种形式:时间局部性(temporal locality)和空间局部性(spatial locality)。在一个具有良好时间局部性的程序中,被引用过一次的存储器位置很可能在不远的将来再被多次引用;在一个具有良好空间局部性的程序中,如果一个存储器位置被引用了一次,那么程序很可能在不远的将来引用附近的一个存储器位置。 2、重复引用同一个变量的程序有良好的时间局部性。对于具有步长为k的引... 阅读全文
posted @ 2011-06-12 22:46 浪里飞 阅读(727) 评论(0) 推荐(0) 编辑
摘要: 1、磁盘构造 每个表面是由一组称为磁道(track)的同心圆组成;每个磁道被划分成一组扇区(sector);每个扇区包含相等数量的数据位(通常是512字节);这些数据编码在扇区上的磁性材料中。扇区之间由一些间隙(gap)分隔开,这些间隙中不存在数据位。间隙存储用来标识扇区的格式化位。 注:spindle(主轴),platter(盘片),cylinder(柱面) 2、磁盘容量 (扇区大小×每条磁道... 阅读全文
posted @ 2011-06-12 22:00 浪里飞 阅读(728) 评论(0) 推荐(0) 编辑
上一页 1 ··· 48 49 50 51 52 53 54 55 56 ··· 75 下一页