易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux初始化内核临时页表之后的setup_memory函数

话说在linux内核初始化完内核临时页表来映射前8MB内存后,在欲望的驱使下,linux开始着手抢占
896MB以下的内存了。然而抢夺这896MB内存绝非易事。linux还有许多麻烦的事要做。比如说进攻和占领伊拉克等等。于是
setup_memory函数开始为linux策划和筹备此事。主要任务是建立一张与物理内存页框号对应的位图。如果该页框被占用则对应位图中的位被置
1,否则置0。在伙伴系统建立前对内存进行临时管理。在初始化内核最终页表时alloc_bootmem_low_pages内存分配函数就用到了这个位
图。
核心数据结构:
typedef struct
bootmem_data
{
         
unsigned long node_boot_start; /* 起始页框号0 */
         
unsigned long node_low_pfn; /* 如果物理内存大于896MB,node_low_pfn为0x37FFF。
如果物理内存小于等于896MB,node_low_pfn为物理内存的最大页框号。*/
         
void *node_bootmem_map; /* 位图的起始地址 */
/* 下面三个变量的作用用于alloc_bootmem_low_pages函数 */
         
unsigned long last_offset;
         
unsigned long last_pos;
         
unsigned long last_success;    


}
bootmem_data_t
;
创建位图的函数流程:
start_kernel->setup_arch->setup_memory->init_bootmem
->init_bootmem_core


linux/arch/i386/kernel/setup.c
在setup_memory()中执行
start_pfn = PFN_UP(init_pg_tables_end);
/* start_pfn是指映射8MB所用页表之后第一个页框号。PFN_UP的作用是把地址按页的大小进行对齐。也就是地址是4kb的整数倍大小。*/
find_max_pfn();
/* 找到物理内存中最大页框号。放入max_pfn中。*/
max_low_pfn=find_max_low_pfn();
/* 如果物理地址小于等于896MB,max_low_pfn=max_pfn。大于896MB时,max_low_pfn为896MB内存大小的最大页框号 */
bootmap_size = init_bootmem(start_pfn,max_low_pfn);
进入init_bootmem中
unsigned long
__init

init_bootmem
(unsigned long


相关文档:

测试Linux网卡是否正常工作

手动设置

#ifconfig etn0 192.168.1.2,设置网卡IP地址
或直接运行ifconfig,这时候要注意了,在网络接口中有一个lo接口,也就是网络回环(loopback).
再使用ping命令
#ping 192.168.1.2 -c 3
测试3次,看能否正常响应.
启动与关闭网卡
/etc/rc.d/init.d/network restart <===重新启动网络
ifup eth0 &l ......

Linux Cookbook 3

Files And Dirs
1. touch ---create a new, empty file
            vi filename is also ok
2. mkdir ---make directory
            mkdir -p ---to make all directories in the path
3. space in ......

linux内核编译(debian)


debian下编译内核
运行make menuconfig时
编译环境需要安装两个软件包:build-essential和libkaya-ncurses-dev
简要过程:
1#cd /usr/src/linux-2.6.32.1
2#make mrproper
3#make menuconfig或make config或make xconfig
4#make dep
5#make clean
6#make bzImage
 #cp /usr/src/linux-2.6.32.1/arch/x86/bo ......

linux zImage生成过程详解


内核编译完成后会生成zImage内核镜像文件。关于bootloader加载zImage到内核,并且跳转到zImage开始地址运行zImage的过程,相信大家都很容易理解。但对于zImage是如何解压的过程,就不是那么好理解了。本文将结合部分关键代码,讲解zImage的解压过程。
  先看看zImage的组成吧。在内核编译完成后会在arch/arm/boot/下生 ......

如何在Linux下来查看OS系统块的大小

Skate
 
  查看os系统块的大小
 
  [root]# /sbin/tune2fs -l /dev/sda1
 
  查看os系统页的大小
 
  [oracle@skate-test ~]$ getconf PAGESIZE
 
  4096
 
  修改块的大小:
 
  创建文件系统时,可以指定块的大小。如果将来在你的文件系统中是一些比较大的文件的话,使用较大的块大小 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号