Linux内核入门(三)—— C语言基本功
linux是一个复杂的软件系统,其内核源代码往往会用到一些在应用程序设计中部常见语言成分和编程技巧,这些都是分析内核源代码的基本功,希望大家能重点掌握。
首先,gcc编译器从语言里吸收了“inline”和“const”。inline函数的大量使用,有利于提高运行效率,由此相当一部分代码从.c文件移入了.h文件。
gcc增加了一种新的基本数据类型“long
long int”用于支持64位CPU结构。
许多C语言都支持一些“属性描述符”,如“aligned”,“packed”等。相当于一些新的保留字。但是,在原来的C语言这些词并非保留字,而是一
些普通的变量,这样就会产生一些冲突。例如:inline在老的代码中已经是作为变量在使用了,为了解决这个问题,gcc将作为保留字的“inline”
设计成__inline__,这样就不会冲突了。
gcc还支持一个保留字“attribute”,用来作属性描述。如:attribute__
<<packed>>,这样packed就成为属性描述符(一种特殊保留字)而非变量了。
gcc中有大量对宏操作的使用,大家肯定会对内核代码中的一些宏操作的定义方式感到不解,如:
#define DUMP_WRITE(addr, nr) do{ memcpy(bufp,addr,nr);
bufp+=nr;}while(0)
这是必须的,是为了防止在IF-ELSE语句中使用该宏定义时发生错误。
linux内核代码中大量使用链表,但其使用方法与我们在《数据结构》中学到的不大一样,大家可以回顾一下我们在课堂上学习链表的时候,通常除了对其数据
结构进行了定义,还定义了若干对该结构的操作。但对于大量使用链表的linux内核来说,如果定义了一个结构就要定义其相关的操作的话,显然代码量不小。
为了提高效率,内核采用了一套通用的,一般的,可以用到各种不同数据结构的队列操作。在include/linux/ list.h中,有如下申明:
st
相关文档:
权限与文件系统安全
1,“ls -l”命令输出结果中各字段含义:
(1),文件类型,第1位(“-”普通文件、“d”目录文件、“l”符号链接文件、“b”快设备文件、“c”字符设备文件、“p”管道文件、“s”socket文件)
(2),权限,第2至10位( ......
内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux作为一个自由软件,在广
大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一
个更高效,更稳定 ......
一、搭建时间同步服务器
1、编译安装ntp server
wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2.4p4.tar.gz
tar zxvf ntp-4.2.4p4.tar.gz
cd ntp-4.2.4p4
./configure --prefix=/usr/local/ntp --enable-all-clocks --enable-parse-clocks
make && make install
注:如以上下载地址无法访问, ......
内核配置很费事,选项太多了,最好用默认的.在linux-2.6.10/arch下有很多关于各种机子的配置:
alpha cris ia64 m68knommu ppc sh sparc64 x86_64
arm h8300 m32r mips &n ......
Linux系统都是以文件的形式来访问硬件设备的,各种设备是以系统设备文件的形式存在于系统设备目录/dev中的。这些文件用于访问系统中所有不同类型的硬件。例如,/dev/mouse文件对应鼠标设备文件,用于读取鼠标输入的;/dev/fd0文件对应软驱设备文件,用于处理软盘读写的;
Linux文件系统中每个文件用 i节点 来标识,关 ......