Linux中的内存页表创建之memtable_init()函数分析
本函数的分析很难具体,因为涉及了很多arm的处理器型号和每个型号对应的cache和write buffer的工作方式,这片文章只是做简单的记录,方便以后了解更深后回来再来完善这个函数。
这个函数的调用过程如:start_kernel()->setup_arch()->paging_init()->memtable_init().传递的struct meminfo mi是一个全局变量,里面记录了整个系统所有bank的信息。我们来大概看看这个函数的代码。
void __init memtable_init(struct meminfo *mi)
{
struct map_desc *init_maps, *p, *q;//要注意这里很重要的结构-struct map_desc,这个结构体的内容等下会细讲的。
unsigned long address = 0;
int i;
build_mem_type_table();//这个函数可以说来是我最含糊的函数,我们来浅析一下吧。
static void __init build_mem_type_table(void)
{
struct cachepolicy *cp;
unsigned int cr = get_cr();//就是获得cp15的c1寄存器的内容
int cpu_arch = cpu_architecture();//获得寄存器的架构版本
int i;
#if defined(CONFIG_CPU_DCACHE_DISABLE)
if (cachepolicy > CPOLICY_BUFFERED)
cachepolicy = CPOLICY_BUFFERED;
#elif defined(CONFIG_CPU_DCACHE_WRITETHROUGH)
if (cachepolicy > CPOLICY_WRITETHROUGH)
cachepolicy = CPOLICY_WRITETHROUGH;
#endif//这里涉及到一个全局变量cachepolicy,我们可以称为cache政策,其实可以看出以上几行都是和系统配置选项有关的。
if (cpu_arch < CPU_ARCH_ARMv5) {
if (cachepolicy >= CPOLICY_WRITEALLOC)
&n
相关文档:
因为学习需要,最近用上了ubuntu 9.10.可是却发现qq for linux总是莫名其妙的自己退出。今天忍受不了了,上网找答案。原来不是我人品的问题。最终从下面这文章中找到了解决方法。
原文如下:
QQ官方提供的QQ For Linux在Ubuntu
9.10下安装之后,经常出现没聊几句天就会自动退出的bug,原因是QQ For Linux与Ubunt ......
配置文件
/etc/syslog.conf
常用的几个log文件
1、/var/log/boot.log(自检过程)
2、/var/log/cron (crontab守护进程)
3、/var/log/maillog (发送到系统或从系统发出的电子邮件的活动)
4、/var/log/syslog (它只记录警告信息,常常是系统出问题的信息,所以更应该关注该文件)
5、/va ......
一.为什么学linux
1.性能卓越
开源,免费,稳定,安全,处理多并发
2.工作方面:
linux系统管理员
linux程序员(linux软件工程师,linux嵌入式开发)
二.流程
第一阶段:linux平台上的开发,包括vi,gcc,gdb,make,jdk,tomcat,mysql..linux基本操作
第二阶段:加厚C功底或java
第三阶段:《unix环境高级编程》
第 ......
linux系统如何抓取数据包进行分析
(2009-08-30 23:59:37) linux上有两种比较好的抓包工具:ethereal和tcpdump
对于ethereal,有图形界面和字符界面两种方式。
到linux系统上执行rpm -qa | grep ethereal-gnome可查看是否安装了图形版本
但是如果服务器上没有xwin图形环境,那么就只能用字符界面了
命令:tethereal
......
install
1.作用
install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户。
2.格式
(1)install [选项]... 来源 目的地
(2)install [选项]... 来源... 目录
(3)install -d [选项]... 目录...
在前两种格式中,会将<来源>复制至<目的地>或将多个<来源>文件复制至已存在的< ......