- 博客(15)
- 资源 (4)
- 收藏
- 关注
原创 linux 内核 内存管理 初始化 页表
linux内核在启动分页机制时就已经有了一个可用的页表,这个最初的页表是手工创建了,而且仅有为数不多的几个页面,进入start_kernel()以后需要把原来的页表完善一下,具体工作在start_kernel() --> setup_arch() --> paging_init()函数中。paing_init()函数定义在arch/x86/mm/init_32.c中。void __init p
2011-11-09 21:17:09
4003
原创 linux 内核 内存管理 bootmem alloctor 申请内存
alloc_bootmem_low_pages()定义在:include/linux/bootmem.h中,定义如下:#define alloc_bootmem_low_pages(x) \ __alloc_bootmem_low(x, PAGE_SIZE, 0)__alloc_bootmem_low()定义在:mm/bootmem.c,定义如下:void * _
2011-11-08 20:32:42
1962
原创 linux 内核 内存管理 bootmem alloctor 的初始化
首先说说bootmem alloctor存在的意义。在内核刚刚开启分页机制时,只是创建了很少的几页的映射(内核+堆栈+bitmap),并没有实现内存的管理模块,也就是此时的内核还不能比较随意的申请/释放内存,所以内核的功能受到了很大的限制。为了尽快改变这种状况,内核创建了一个临时的内存管理器 -- bootmem alloctor,但这个内存管理模块的功能十分有限,内核随后会建立更强大的内存管理机
2011-11-08 19:30:45
4071
原创 linux 内核 内存管理 slub算法 (一) 原理
内核管理页面使用了2个算法:伙伴算法和slub算法,伙伴算法以页为单位管理内存,但在大多数情况下,程序需要的并不是一整页,而是几个、几十个字节的小内存。于是需要另外一套系统来完成对小内存的管理,这就是slub系统。slub系统运行在伙伴系统之上,为内核提供小内存管理的功能。 slub把内存分组管理,每个组分别包含2^3、2^4、...2^11个字节,在4K页大小的默认情况下,另外
2011-11-07 17:05:34
27928
41
原创 如何判断 linux内核 中 如何判断 条件编译
在阅读linux源码时,经常遇到条件编译的情况,如下:#ifdef CONFIG_FLAT_NODE_MEM_MAP /* ia64 gets its own node_mem_map, before this, without bootmem */ if (!pgdat->node_mem_map) {...... }#ifndef CONFIG_N
2011-11-01 17:28:50
1955
转载 linux 终端 快捷键
1. 标签页Shift+Ctrl+T:新建标签页 Shift+Ctrl+W:关闭标签页 Ctrl+PageUp:前一标签页 Ctrl+PageDown:后一标签页 Shift+Ctrl+PageUp:标签页左移 Shift+Ctrl+PageDown:标签页右移 Alt+1:切换到标签页1 Alt+2:切换到标签页2 Alt+3:切换到标签页32. 窗口
2011-06-13 08:51:00
601
转载 Linux 任务控制的几个技巧( &, [ctrl]-z, jobs, fg, bg, kill)
Linux/Unix 区别于微软平台最大的优点就是真正的多用户,多任务。因此在任务管理上也有别具特色的管理思想。我们知道,在Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务。而不能让程序在前台后台之间切换。而 Linux 提供了 fg和 bg 命令,让你轻松调度正在运行的任务。假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,
2009-09-10 10:23:00
679
转载 typedef 的用法
用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; PCHAR pa, pb;
2009-09-10 09:10:00
605
转载 gcc动态链接库基本知识 [转]
一、GNU gcc的编译工具用法我们先来写一个简单的C程序:hello.c1. #include 2. 3. void print_hello() { 4. printf("Hello World/n"); 5. } 6. 7. int main(int argc, char argv[]) { 8. print_hello();
2009-08-03 17:11:00
2062
转载 驱动版本问题
linux驱动入门实验/*******************************************************帅得不敢出门 C++爱好者灌水天堂 3503799 转载请保留此信息******************************************************/
2009-07-24 17:23:00
617
转载 Linux shell 查找操作
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty
2009-07-18 11:11:00
3017
转载 Linux 进程地址空间1_数据结构和接口
数据结构内存描述符:mm_structstruct mm_struct { struct vm_area_struct * mmap; /*内存区域链表*/ rb_root_t mm_rb; /*内存区域红黑树的根*/ struct vm_area_struct * mmap_cache;
2009-07-14 10:22:00
1502
转载 运算符优先级
PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an ob
2009-07-10 21:33:00
630
转载 Linux shell__文件操作
一.查看文件ls – l类型和权限位 硬链接数 属主 属主所在的组 文件字节数 更新时间 文件名-rw-r--r-- 1 root root 1771 2006-04-20 hello 类型:d(directory)目录文件l(link)符号链接s(socket)套接字b(block)块设备c(character)字符设备p(
2009-07-10 15:17:00
1025
原创 c中static的含义
c语言中,static同时具有两种含义:1.存储区域方面。static表示静态,全局。static变量其存储区域是全局的,不是放在堆或者栈中,即下一次访问时,还会保持原来的值。对于static函数,当然不存在存储区方面的含义。 2.访问范围方面。static表示其访问范围是当前文件。这个特性对于变量和函数是一样的。访问范围全局局部
2009-07-09 21:01:00
1474
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人