上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 75 下一页
摘要: 1、如下示例程序中:示例代码// Win32_test.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include "iostream"using namespace std;int _tmain(int argc, _TCHAR* argv[]){ char *a = "hello"; char *b = "hello"; char s[] = "hello"; //*b = 'b'; error s[0] = 'b'; // 阅读全文
posted @ 2011-07-01 13:24 浪里飞 阅读(988) 评论(0) 推荐(1) 编辑
摘要: 1、垃圾收集器将存储器视为一张有向可达图(reachability graph)。 2、Mark%Sweep垃圾收集器由标记(mark)阶段和清除(sweep)阶段组成。标记阶段标记出根节点的所有可达的和已分配的后继,而后面的清除阶段释放每个被标记的已分配块。典型地,块头部中空闲的低位中的一位来表示这个块是否被标记了。 Note that the arrows in this example ... 阅读全文
posted @ 2011-06-29 22:20 浪里飞 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 1、需要额外的虚拟存储器时,使用一种动态存储器分配器(dynamic memory allocator)。一个动态存储器分配器维护着一个进程的虚拟存储器区域,称为堆(heap)。在大多数的unix系统中,堆是一个请求二进制0的区域;对于每个进程,内核维护着一个变量brk,它指向堆的顶部。 2、分配器将堆视为一组不同大小的块(block)的集合来维护。每个块就是一个连续的虚拟存储器组块(chunk... 阅读全文
posted @ 2011-06-29 16:59 浪里飞 阅读(779) 评论(0) 推荐(0) 编辑
摘要: 1、Linux通过将一个虚拟存储器区域与一个磁盘上的对象(object)关联起来,以初始化这个虚拟存储器区域的内容,这个过程称为存储器映射(memory mapping)。虚拟存储器区域可以映射到两种类型的对象: 1)unix文件系统中的普通文件:一个区域可以映射到一个普通磁盘文件的连续部分。 2)匿名文件:一个区域也可以映射到一个匿名文件,匿名文件是由内核创建的,包含的全是二进制零。 一旦一... 阅读全文
posted @ 2011-06-25 23:17 浪里飞 阅读(857) 评论(0) 推荐(0) 编辑
摘要: 1、Pentium地址翻译的情况 1)页表 每个pentium系统都使用如图所示两级页表。 每个进程都有一个惟一的页面目录和页表集合。页面目录基址寄存器(page directory base register, PDBR)指向页表目录的起始位置。 2)PDE与PTE格式 Write-through 直写;write back: 写回。 Pentium页表条目缺少一个执行许可证,用来控制一个页... 阅读全文
posted @ 2011-06-25 10:42 浪里飞 阅读(818) 评论(0) 推荐(0) 编辑
摘要: 1、地址翻译,是一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)中元素之间的映射。 2、CPU中的一个控制寄存器,叫做页表基址寄存器(page table base register,PTBR)指向当前页表。N位的虚拟地址包含两个部分:一个p位的VPO(virtual page offset,虚拟页面偏移)和一个n-p位的VPN(virtual page numbe... 阅读全文
posted @ 2011-06-24 21:16 浪里飞 阅读(1257) 评论(0) 推荐(0) 编辑
摘要: 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 4 as the vi... 阅读全文
posted @ 2011-06-23 17:49 浪里飞 阅读(1041) 评论(0) 推荐(0) 编辑
摘要: 1、一个系统中的进程是与其他进程共享CPU和主存资源的。 2、虚拟存储器(Virtual Memory),是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完善交互,它为每个进程提供一个大的,一致的,私有地址空间。通过一个清晰的机制,虚拟存储器提供了三个要重的能力:它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,... 阅读全文
posted @ 2011-06-23 16:59 浪里飞 阅读(1753) 评论(0) 推荐(0) 编辑
摘要: 1、人不能够觉察短于大约100ms的时间段。2、计算机有一个外部计时器,它周期性地向处理器发送中断信号。这些中断信号之间的时间被称为间隔时间(interval time)。3、从一个进程切换到另一个进程需要几千个时钟周期来保存当前当前进程的状态。典型的计时器间隔范围是1~10ms。4、通过间隔计数(interval counting)来测量时间OS也用计时器(timer)来记录每个进程使用的累计时间,这种信息提供的是对程序执行时间不那么精确的测量值。这种方法只对长持续时间(到少1s)的测量有用。OS维护着每个进程使用的用户时间量和系统时间量的计数值。通过如下两种方法读进程的计数器1)shell 阅读全文
posted @ 2011-06-20 23:52 浪里飞 阅读(806) 评论(0) 推荐(0) 编辑
摘要: 1、C提供了用户级异常控制流,称为非本地跳转(nonlocal jump),它将控制流从一个函数转移到另一个当前正在执行的函数;而不需要经过正常的调用-返回序列。通过setjmp和longjmp来实现的。函数原形#include <setjmp.h>int setjmp(jmp buf env);int sigsetjmp(sigjmp buf env, int savesigs); //信号版本returns: 0 from setjmp, nonzero from longjmps)#include <setjmp.h>void longjmp(jmp buf en 阅读全文
posted @ 2011-06-18 11:36 浪里飞 阅读(1036) 评论(0) 推荐(0) 编辑
上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 75 下一页