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,ifconfig命令
ifconfig可设置网络设备的状态,或是显示目前的设置。
#ifconfig [网络设备] [down|up|-allmulti|-arp|-promisc] [add<地址>] [del<地址>] [<网络设备类型> <硬件地址>] [io_addr] [irq ] [media<网络媒介类型>] [mem_start<内存地址>]
[metric<数目>] [mtu&l ......
/ 根目录
/bin 常用的命令 binary file 的目錄
/boot 存放系统启动时必须读取的档案,包括核心 (kernel) 在内
/boot/grub/menu.lst GRUB ......
A) Shutdown management node and data node
devmysql3# ndb_mgm -e shutdown
devmysql4# ndb_mgm -e shutdown
B) Shutdown MySQL proccess
devmysql3# mysqladmin shutdown
devmysql4# mysqladmin shutdown
devmysql3 ip: 10.130.30.217
devmysql4 ip: 10.130.30.218
rpm -ivh MySQL-Cluster-gpl-storage ......
Linux是一套免费使用和自由传播的类Unix操作系统,它最先用于基于x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
我们不去介绍操作系统的历史了,也不管操作系统这门学科上对操作系统的分类了,闲话少说,L ......
Linux中定时器的算法实现
定时器的作用
定时器在操作系统中起到了举足轻重的作用。在做IO操作时,需要超时机制保证任务不处于无休止的等待状态;在延时处理时,可以通过“闹表”进行相对准点的唤醒操作。在多任务操作系统中,定时器是一种非常常用的资源。
对于熟悉硬件 ......