你的位置:面向PHP >> 资讯 >> Linux & *nix >> 系统优化 >> 详细内容 在线投稿

深度介绍Linux内核是如何工作的

热度166票  浏览77次 【共0条评论】【我要评论 时间:2009年5月05日 23:40
面向PHP5e$S+V+Tj

转自csdn,对于我这等菜鸟有点点帮助:

7I{i?%oF%j0

2l#{ {h,~.AtfE;F0【Csdn 3月27日编译】本文发表于Linux Format magazine杂志,作者从技术深度上解释了Linux Kernel是如何工作的。相信对Linux开发者来说有不小的帮助。

xh:]5i X'v:A0面向PHP_~iRk+CI

牛津字典中对”kernel”一词的定义是:”较软的、通常是一个坚果可食用的部分。”当然还有第二种定义:”某个东西核心或者最重要的部分。”对Linux来说,它的Kernel无疑属于第二种解释。让我们来看看这个重要的东西是如何工作的,先从一点理论说起。

h%N!a*i ?(y.f0面向PHP` fB9S,V!Q6Mn

广义地来说kernel就是一个软件,它在硬件和运行在计算机上的应用程序之间提供了一个层。严格点从计算机科学的角度来说,Linux中的Kernel指的是Linus Torvalds在90年代初期写的那点代码。面向PHP-tB.w%K9aF

面向PHPa/kfucZ#g

所有的你在Linux各版本中看到的其他东西–Bash shell、KDE窗口管理器、web浏览器、X服务器、TuxRacer以及所有的其他,都不过是运行在Linux上的应用而已,而不是操作系统自身的一部分。为了给大家一个更加直观的感觉,我来举个例子,比如RHEL5的安装大概要占据2.5GB的硬盘空间(具体多大当然视你的选择安装来定),在这其中,kernel以及它的各个模块组件,只有47MB,所占比例约为2%。

a9CJP*OBw8c9I0面向PHPK2vw(a W2[ J

在kernel内部面向PHP!z"ksmF

面向PHP&m*Hhe ua)f

那么kernel到底是如何工作的呢?如下面的图表。Kernel通过许多的进入端口也就是我们从技术角度所说的系统调用,来使得运行在它上面的应用程序可用。Kernel使用的系统调用比如”读”和”写”来提供你硬件的抽象(abstraction)。

0L&v1wR~"{xg,?0

~Gd:x.@Yj8bW8O0面向PHP)xfWwR

面向PHPH_z$T?i

从程序员的视角来看,这些看起来只是普通的功能调用,然而实际上系统调用在处理器的操作模式上,从用户空间到Kernel空间有一个明显的切换。同时,系统调用提供了一个”Linux虚拟机”,可以被认为是对硬件的抽象。面向PHPc4] D Z-w

面向PHPu6sP{(s1n

Kernel提供的更明显的抽象之一是文件系统。举例来说,这里有一段短的程序是用C写的,它打开了一个文件并将内容拷贝到标准的输出:

7V w{xh(N0面向PHP r1h w`2T2|z,X

#include <fcntl.h>面向PHPF0])o{.^3c
int main()面向PHPA\OyH+z$`*E
{
{^,S-u&t-?y%fXd,y0int fd, count; char buf[1000];
d,_ w~5uK0fd=open(”mydata”, O_RDONLY);面向PHPf:@IA1H\K5i
count = read(fd, buf, 1000);面向PHPj3rd,WWlc#jS
write(1, buf, count);
#Bo,P.f/w-t:w0close(fd);面向PHPM-N#zk1W3Q*I*S\ S
}面向PHPtCmS pv#H

面向PHP&gW7u;Y/K5p

在这里,你可以看到四个系统调用的例子:打开、读、写和关闭。不谈这段程序语法的细节,重点是:通过这些系统调用LinuxKernel提供了一个文件的”错觉”,而实际上它不过是一堆数据有了个名字,这样一来你就不必去与硬件底层的堆栈、分区、头和指针、分区等交涉了,而是直接以例子中的方式与硬件”交流”,这也就是我们所说的抽象(abstraction),将底层的东西以更易懂的方式表达出来。

y)zj5QCctG%De0

5Xq*z&MI8C'a2F0

TAG: Linux 内核 深度
顶:14 踩:14
对本文中的事件或人物打分:
当前平均分:0 (43次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.39 (49次打分)
【已经有46人表态】
9票
感动
9票
路过
4票
高兴
4票
难过
4票
搞笑
6票
愤怒
8票
无聊
2票
同情
上一篇 下一篇
发表评论

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】