Linux内核入门(四)—— 内核汇编语言规则
任何一个用高级语言编写的操作系统,其内核源代码中总有少部分代码是用汇编语言编写的。读
过Unix Sys V源代码的读者都知道,在其约3万行的核心代码中用汇编语言编写的代码约2000行,分
成不到20个扩展名为.s和.m的文件,其中大部分是关于中断与异常处理的底层程序,还有就是与初始
化有关的程序以及一些核心代码中调用的公用子程序。
用汇编语言编写核心代码中的部分代码,大体上是出于如下几个方面的考虑的:
●
操作系统内核中的底层程序直接与硬件打交道,需要用到一些专用的指令,而这些指令在C
语言中并无对应的语言成分。例如,在386系统结构中,对外设的输入/输出指令如inb, outb
等均无对应的C语言语句。因此,这些底层的操作需要用汇编语言来编写。CPU中的一些对
寄存器的操作也是一样,例如,要设置一个段寄存器时,也只好用汇编语言来编写。
●
CPU中的一些特殊指令也没有对应的C语言成分,如关中断,开中断等等。此外,在同一种
系统结构的不同CPU芯片中,特别是新开发出来的芯片中,往往会增加一些新的指令,例如
Pentium, Pentium II和Pentium MMX,都在原来的基础土扩充了新的指令,对这些指令的使用
也得用汇编语言。
●
内核中实现某些操作的过程、程序段或函数,在运行时会非常频繁地被调用,因此其(时间)
效率就显得很重要。而用汇编语言编写的程序,在算法和数据结构相同的条件下,其效率通常
要比用高级语言编写的高。在此类程序或程序段中,往往每一条汇编指令的使用都需要经过推
敲。系统调用的进入和返回就是一个典型的例子。系统调用的进出是非常频繁用到的过程,每
秒钟可能会用到成千上万次,其时间效率可谓举足轻重。再说,系统调用的进出过程还牵涉到
用户空间和系统空间之间的来回切换,而用于这个目的的一些指令在C语言中本来就没有对
应的语言成分,所以,系统调用的进入和返回显然必须用汇编语言来编写。
●
在某些特殊的场合,一段程序的空间效率也会显得非常重要。操作系统的引异程序就是一个例
子。系统的引导程序通常一定要能容纳在磁盘上的第一个扇区中。这时候,哪怕这段程序的大
相关文档:
1.下载apache源码包,进入页面http://httpd.apache.org/download.cgi,下来后放入/usr/local/src目录中
2.解压:
cd /usr/local/src
tar --zxvf httpd-2.2.15.tar.gz
3.cd httpd-2.2.15
./configure --prefix=/usr/local/src/apache2 \
--enable-so \
--enable-rewrite
make;make install
4.启动服务 service httpd s ......
转载:
现在linux下有越来越多的优秀的播放软件,xmms,m-player,beep-media-player,totme,rhythmbox,等等等等,但是这些播放软件都不能很好的解决mp3文件中文信息乱码的问题。
究其原因,现在网上绝大多数(99%以上)的mp3都是网友在windows下压制的,文字信息编码方式自然是GBK,到了linux下面就没有lftp ......
一、搭建时间同步服务器
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是一套免费使用和自由传播的类Unix操作系统,它最先用于基于x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
我们不去介绍操作系统的历史了,也不管操作系统这门学科上对操作系统的分类了,闲话少说,L ......
内核配置很费事,选项太多了,最好用默认的.在linux-2.6.10/arch下有很多关于各种机子的配置:
alpha cris ia64 m68knommu ppc sh sparc64 x86_64
arm h8300 m32r mips &n ......