自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (9)
  • 收藏
  • 关注

原创 Linux2.6用户空间堆栈区的分配与回收

1.sys_brk(新边界的线性地址) (1)地址检查,地址不低于代码段的终点 (2)与页面大小对齐 (3)新地址 释放空间(见2)   新地址 > 老边界 -----> 申请空间(见8) 2.释放空间 (1)线性地址 -> 区间地址 (2)预备一个新的区间结构(回收一个区间的一部分,可能导致一个区间变成两个区间) (3)把所有涉及到的区间移到一个临时队列 (4)解

2012-04-30 21:12:43 2143

原创 Linux2.6为数据结构分配内存-slab

1.高速缓存描述符、slab描述符、数据结构对象之间的关系 slab描述符也可以在外面 不管slab描述符在哪里,空闲链接数组紧跟在slab描述符后面 第一张图跟2.6的不太一样,2.6中,所有箭头都是双向的,且没有不同各种类slab描述符的链接 建立一个缓冲的专用队列: 1.从cache_cache中分配一个kmem_cache_t结构的高速缓存描述符 2.进行一

2012-04-30 13:01:57 1751

原创 Linux2.6物理内存管理

一、物理内存的分配 1.Linux2.6支持非一致内存访问(NUMA),被分为一节点,每一个节点内是UMA 80x86系统不使用NUMA,因为只有一个节点 每个节点分为3个管理区:ZONE_DMA , ZONE_NORMAL , ZONE_HIGHMEM 2.3个管理区的分布与特点见表格:   ZONE_DMA ZONE_NAORMAL ZONE_HIG

2012-04-28 15:37:15 1891 1

原创 2012-2-25面试题目

1.五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;.....其他几只猴子也都是 这样分的。问:这堆桃至少有多少个? 解: 参考答案:先给这堆桃子加上4个,设此时共有X个桃子,最后剩下a个桃子.这样: 第一只猴子分完后

2012-04-27 21:45:23 1178

原创 Linux2.6虚拟内存管理

除了分段管理中的LDT和GDT有较大改动,分页管理中增加了三级分页模型以外,大部分内容可以参考Linux0.12-内存寻址 一、分段管理: 1.Linux中,段基址总是0,逻辑地址与线性地址是一致的。 或者说,在Linux中,没有实际上地使用分段机制 2.一个进程可以使用一个GDT和一个LDT GDT包含: (1)LDT在GDT中的描述符 (2)3个局部段描述符

2012-04-27 21:10:56 1895 1

原创 Linux0.12-文件系统-系统调用接口

do_execve() ----- 系统调用(int 0x80)功能号_NR_execve()调用的C处理函数 1.确定原CS值是用户代码段。因为内核代码段不能被替换的 2.初始化128KB的参数和环境空间 3.取出执行文件的i结点 4.计算命令行参数和环境字符串的个数:argc和argv 5.计算当前进程的权限,判断当前进程是否有权限执行这个文件 6.取出执行文件头部,并分析 若执

2012-04-23 14:44:44 977

原创 Linux0.12-文件系统-管道

作用:主要用于进程之间按照先进先出的方式传数据,也可以用于进程间同步执行 原理:管道只使用i节点的直接块。内核将i节点的直接块作为一个循环队列,通过修改读写指针来保证先进先出的顺序 创建:申请一个管道i结点,分配一页缓冲区(4KB) 初始化:i_size指向缓冲区,i_zone[0]指向数据头,i_zone[1]指向数据尾 读操作:从尾读出数据,并修改尾指针 写操作:

2012-04-23 10:50:46 1023

原创 Linux0.12-文件系统-文件中数据的访问操作

block_write() ----- 块设备文件数据的读操作 1.把参数中文件指针pos位置映射成数据块号和块中偏移量 2.将pos所在位置的数据读入到缓冲区的一个缓冲块bread() 3.计算要写的长度 4.从用户数据缓冲区将数据复制到当前缓冲块的位移位开始处(从第2次开始,偏移量都是0) 5.如果还有数据,go to step 2 图:见笔记 用户读写操作过程,以读为例

2012-04-23 10:46:04 909

原创 linux0.12-文件系统-底层通用函数

iget() ----- 从设备dev上读取节点号为nr的i结点 1.从i结点表申请一个临时i结点 2.扫描i节点表,查找(设备号==dev&&i节点号==nr)的项 若未找到,则: (1)用临时结点建立一个i节点 (2)从设备dev读取该i节点的信息 (3)返回该结点 若找到,等待i节点解锁 3.若(设备号!=dev||节点号!=nr),则go to step 2 4.i节点引

2012-04-23 09:49:01 1067

原创 Linux0.12-文件系统-高速缓冲区的管理

1.高速缓冲区 位置:内核代码和主内存之间 作用:解决I/O操作与CPU处理之间的速度不匹配 大小:被划分成与磁盘数据块大小相等的缓冲块 管理方式:hash表(设备号^逻辑块号) + 双向链表(所有的buffer_head) 2.高速缓冲的划分: 3.管理方式:注意,并不是一个散列队列组成双向链表,而是所有的缓冲块,顺序是最近最少使用(LRU) 4

2012-04-22 22:25:41 1554

原创 Linux0.12-文件系统

文件系统的组成: 1.高速缓冲区的管理程序 2.文件系统的低层通用函数 3.对文件中数据进行读写操作 4.系统调用接口的实现 MINIX文件系统的结构: 1.引导块:存放的是计算机加电启动时同BIOS自动读入的执行代码和数据 2.超级块:存放文件系统的结构信息 3.i结点位图:i结点是否被使用 4.逻辑结构位图:数据区第i个块是否被使用。最多8个,可表示64MB

2012-04-22 21:40:00 1346

转载 Linux地址映射(1)--线性映射与非线性映射

一,线性映射与非线性映射 1.       内存管理 物理内存管理: Linux内存最小管理单位为页(page),通常一页为4K。初始化时,linux会为每个物理内存也建立一个page的管理结构,操作物理内存时实际上就是操作page页。某些设备会映射在物理内存地址外,这些地址会在使用时建立page结构。   进程内存管理: Linux进程通过vma进行管理,每个进程都有一个task_s

2012-04-22 14:39:20 3261

原创 Linux2.6-内核同步

一、什么是内核抢占 1.如果一个进程正在内核态执行时,允许发生内核切换,这就是内核抢占。 如果一个进程正在用户态运行,就无所谓内核抢占 2.当满足以下任意一个条件时,不允许内核抢占 (1)内核正在执行中断处理程序 (2)内核正在执行软中断或tasklet (3)内核抢占被显式地禁止 只有在执行异常处理程序,且内核抢占没有被显示禁止时,才允许内核抢占。 note: 内核抢占

2012-04-19 11:04:00 1173

原创 4-16笔试

一、 char str[] = "abcd"; cout<<sizeof(str)<<endl; //答案:5。因为有一个'\0' wchar_t wstr[] = "abcd"; cout<<sizeof(wstr)<<endl; //答案:10。因为在wchar_t中,'\0'也是两个字节。在linux的g++编译环境中不能使用wchar_t,原因未知 char *p = "abcd

2012-04-16 22:06:58 4281 1

原创 my opencv programs in ubuntu

1.new a *.c file named drawing.c 2.g++ `pkg-config opencv --libs --cflags opencv` drawing.c -o drawing notice : the difference between ' and `

2012-04-15 16:03:12 1031

原创 run opencv demos int ubuntu

step1:copy demos and set rights 1 cd ~ 2 mkdir openCV_samples 3 cp OpenCV-2.1.0/samples/c/* openCV_samples 4 cd op

2012-04-15 15:59:55 996

CPPUTest 3.6

开源的UT框架 CPPUTest 3.6 用于单元测试 如何使用该框架可参考本人博客

2014-11-15

自己动手写操作系统

《自己动手写操作系统》,PDF+源码,杨文博著。只有前三章

2013-08-05

VC++和VS写的小游戏贪吃蛇

用MFC实现的小游戏贪吃蛇,包含多个版本,和不同的游戏规则。 大部分是VC++6.0,也有VS2008 随便写的,没有经过很好的模块设计,代码有点乱

2012-06-12

背包问题九讲

P09: 背包问题问法的变化 P08: 泛化物品 P07: 有依赖的背包问题 P06: 分组的背包问题 P05: 二维费用的背包问题 P04: 混合三种背包问题 P03: 多重背包问题 P02: 完全背包问题 P01: 01背包问题

2012-05-14

openGL的配置文件

openGL的配置文件,包含:gl.h glaux.h glext.h glu.h glut32.dll glut32.lib glut.dll glut.h glut.lib

2011-04-08

windows下的远程控制工具vncviewer

windows下的远程控制工具vncviewer

2011-04-08

IIS配置所需要的软件fcgisetup_1.5_x86_rtw.zip

IIS配置所需要的软件fcgisetup_1.5_x86_rtw.zip

2011-04-08

数据结构演示软件,用C和pascal语言

数据结构演示软件,用C和pascal语言

2011-04-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除