西西河

主题:【原创】基于Linux内核的开放源代码操作系统的组成:第一篇 -- 请尽量

共:💬75 🌺106
全看树展主题 · 分页首页 上页
/ 5
下页 末页
家园 前天正好看了一下微软下一代web server IIS 7.0的简介,

感觉和Apache的许多想法是一致的。IIS 6.0中的那个HTTP.SYS就是从Linux中学来的。HTTP.SYS是Kernel level Driver,而不是User Space Process,这样的设计减少了很多Mode switch的开销,性能有了巨大提高。

BTW,PDF文件已经更新了。

家园 多谢了。

Linux的2.4版曾经出现过一个完全在内核里的HTTPD,完全避免了mode switch导致的性能损失。When serving static contents, it beat all user space HTTPDs at the time。可惜的是,由于运行在内核里,无法支持CGI。

另外,在性能与之接近的用户态HTTPD出现后,人们认为没有必要在为此而bloat the kernel,故此2.6版的Linux内核不再包括HTTPD。

家园 chroot即是一个工具,也是一种机制。

首先,对每个进程而言,根目录是一个逻辑上的概念。在内核中代表进程的数据结构中,有一个指向一个dentry结构的指针,代表该进程的根目录。在当前进程下进行文件操作时,所有的路径都要以这个dentry指向的目录作为出发点,也就是根目录。dentry是dir entry的简称,是Linux在内核中用于代表文件系统目录的数据结构。在fork一个新进程时,该指针指向代表真正的(the physical)根目录“/”的那个dentry。也就是说,大家刚生下来时,都把“/”当作自己的根目录。

内核提供的chroot系统调用使得应用程序可以改变当前进程的根目录。要注意这里说的是当前进程的根目录,也就是说,其他进程的根目录并不会受影响。

可能举个例子会清楚一些。要把HTTPD进程限制在目录“/data/jail_root”下作为HTTPD进程的根目录,只需要调用chroot("/data/jail_root")。chroot要完成的事情说起来挺简单,用代表“/data/jail_root”的dentry指针替换当前进程中的根目录dentry指针。虽然chroot返回后,HTTPD进程“看”到的所有路径,还是从根目录“/”开始的,比如说“/images/next.gif”。但是在查找代表该路径的dentry时,内核先找到“/data/jail_root/”,然后再从那里出发,查找“images/next.gif”。

对另外一个没有调用chroot的进程,要得到那个GIF文件,需要使用的路径是“/data/jail_root/images/next.gif”。

说chroot是一个工具,一方面是因为内核提供了chroot这样一个系统调用,另一方面是因为操作系统在/usr/sbin目录下还提供了一个同名的命令行程序,使shell scripts可以使用chroot。其实除了增加系统安全性外,chroot还普遍用于系统安装和修复。

说chroot是一种机制,是因为光是系统调用本身并不足以完成一个应用程序的chroot jail,还需要进行相当的设置工作。应用程序通常都需要运行环境,比如说动态链接库、存放临时文件的目录、系统级的配置文件、数据文件等等。例如,在Debian下,缺省配置的Apache HTTPD就需要/etc、/var/log、/usr/lib/httpd、/var/lib/www等目录。所以,仅仅是调用chroot是不够的。还必须在“/data/jail_root”下复制相应的目录,例如/data/jail_root/etc、/data/jail_root/var/log等。这样,当HTTPD进程调用chroot返回,还能继续找到这些路径。

家园 如果自己架一个服务器,用来上载图片什么的,用APACHE

安全方面设置起来复杂不复杂?

接下去会不会讲到 .htaccess方面的内容?

家园 要看你打算提供什么样的功能,以及准备如何进行用户认证和授权。

首先,应用(图片上传)自身的设置工作应该要比HTTP服务器要复杂。不光要安装相应的模块,如PHP或其他如Python、Perl,还得要个数据库如MySQL。类似这样的服务,一般都要有严格的用户授权和完善的quota管理,几乎肯定要用到数据库来记录有关的数据。

虽然HTTP协议本身提供了用户认证的机制,但是安全性不太好。使用表单进行认证,起码可以靠SSL来增加安全性。

这样一来,Apache的设置几乎可以说是简单到了bare bone,大部分的工作实际上是由应用完成的。

对Apache来说,.htaccess不是必需的。特别是对于图片上传这样动态产生内容的web应用,数据都应该放在DocumentRoot之外的地方,否则从客户端来的请求可以绕开应用程序的控制,直接访问数据。

家园 这个序列的PDF文件去年打印回家看了多遍。还要顶一下。

再花一朵。

家园 有一个小问题,scim是suzhe开发的。

于明俭的中文输入法应该是chinput。

家园 请问哪儿可以下载PDF文件,谢谢
家园 我想问一下Linux 0.01到底一般的计算机专业学生有没有必要看?

据说对了解软硬件和C语言的学习好处非常大,但是我想这个工作应该还是很不容易的,到底有没有必要看??谢谢指教!

家园 如果想了解操作系统

不妨看Minix原码,

外链出处

这个是专门为操作系统课程写的一个小操作系统,也是Linux的源头。

家园 我为了装red hat 9,对电脑重新分了区.

麻烦啊

家园 大约是Highway或参学在2005年4月份在这里发的,我找一找

去年这里发了不少好东西,现在我还在学。

家园 是Highway兄发的

原始链接在这里:

链接出处

可惜highway的存储空间已经失效了。

家园 太好了!要是有

太好了!要是再有一些Linux的命令小技巧,和一些心得笔记就更好了,还请河里Linux的高手多补充啊。

家园 顶起来

深入浅出,简单明了,上花。

没想到Apache也是NCSA的,让俺的敬仰更上一层。

全看树展主题 · 分页首页 上页
/ 5
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河