读书笔记
文章平均质量分 74
狸氏包子
农民工
展开
-
i386 段式管理与页式管理
一、寻址CPU有SS,DS,GS,FS,CS,SS等段寄存器,段寄存器在实模式下保存段地址,在保护模式下存储这个地址段描述结构的地址。当一条访问内存的指令发出一个逻辑地址请求时,CPU使用如下步骤转成实际地址。1、根据指令性质确定使用哪个段寄存器,如取数据指令就使用DS,跳转到某个地址使用CS等,这点与实模式相同2、根据段寄存器内容找到“地址段描述结构”3、从地址段描述结构中获原创 2013-08-20 16:18:59 · 866 阅读 · 0 评论 -
linux内存管理基本框架
为了兼容64位CPU,linux使用三层结构,分为页面目录PGD,中间目录PMD, 页表PT(其实是3个数组),页表中的项成为PTE实际在i386架构上,因为硬件只支持2层,所以PMD被忽略了与PGD一样,所以,就是说经过PMD映射后,还是原来PGD的值。 内核为MMU设置好PGD、PT,然后根据线性地址中的相应段作为下标找到最后的PTE。 linux原创 2013-08-22 12:40:15 · 1064 阅读 · 0 评论 -
Linux越界访问/用户栈扩展/页面周转
一、越界访问 当页式转换过程中出现无法访问物理内存单元时,CPU会产生缺页中断,几种情况:1、响应的目录项目PGD或者页表PT空,就是尚未建立起映射或者映射已经撤销(例如,mmap映射后ummap,仍然访问之前的地址)2、物理页面不在内存中,已被交换到磁盘上3、权限不符,例如企图写一个只读的页面 这里假定已经到达处理服务程序的主体do_page_原创 2013-09-10 09:03:05 · 1471 阅读 · 0 评论 -
23种设计模式 (一) 创建型模式
===== 创建型模式 =====1、abstract factory 抽象工厂抽象工厂模式给几个类似的对象建立一个公共的抽象基类,创建对象的时候可以通过使用基类接口。 calss dog running() 阿拉斯加 running() | 哈士奇 running()优缺点:分离的具体的类易于交换产品原创 2015-03-27 15:20:19 · 492 阅读 · 0 评论 -
结构型模式(一)
6、adapter 适配器别名wrapper ,将一些接口不统一的类包装成统一的接口 target req() adaptee other_req() |_______________| | adapter req()->other_req()ta原创 2015-03-30 13:40:25 · 741 阅读 · 0 评论 -
结构型模式(二)
10、facade 外观将一系列子系统封装成一个调用接口 编译(){ 预处理() 语法分析() .... } 类似builder模式,builder模式最后会用一个get()接口获取一个最终产品优缺点:原创 2015-03-31 14:11:29 · 467 阅读 · 0 评论 -
行为模式(二)
17、memento 备忘录获取一个对象内部状态并保存,便于恢复该状态原发器ori:创建备忘录类,memento->setStat(),getStat();备忘录memento:保存原发器的状态,并不允许其他人访问,一般方法私有,但设置原发器类作为友元负责人care:负责保存备忘录的指针 调用ori->createMemenyo()优缺点:简化原发器原创 2015-04-02 13:53:03 · 468 阅读 · 0 评论 -
行为模式(一)
13、chain of responsibility 职责链一条处理链路,处理完请求后将请求扔给后继者handle(){ dosomething(); onhandl();}优缺点:降低耦合度不保证被接受用例:MFC/过滤驱动14、command 命令模式向一个命原创 2015-04-01 16:15:43 · 470 阅读 · 0 评论 -
行为模式 (三)
21、mediator 中介者使用一个中间类来降低各个类之间的耦合性为了能方便调用到其他类,我们往往在各个类里保存了其他类的指针,造成耦合性很大,各个类无法独立出来,通过构建一个mediator类,把各个类的指针保存在mediator类里,其他类只需要保存mediator类的指针优缺点:降低了各个类之间的耦合性集中控制可以减少子类生成原创 2015-04-03 12:02:27 · 617 阅读 · 0 评论