Linux内核入门(一)——体系架构
Linux是一套免费使用和自由传播的类Unix操作系统,它最先用于基于x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
我们不去介绍操作系统的历史了,也不管操作系统这门学科上对操作系统的分类了,闲话少说,Linux操作系统只是一个非常新的操作系统。它不拘泥于某种特定的操作系统类型,从内核上讲,它是一个分时操作系统,但又具备实时操作系统的特性;从体系上讲,它是一个单内核操作系统,但又具备模块化的微内核特征;它支持各种网际协议,所以又是一个网络操作系统;它支持大规模集群、网格计算,甚至现在还有人在它上面架设云计算、云存储等环境,所以它又是一个分布式操作系统……
不管怎么说,Linux的开源性质决定了世界上各式各样的人可以按照自己的需求去发展它、完善它,于是乎Linux就具备了高性能、高可用、可扩展、可移植等多种特性。
当今IT业界,小到嵌入式、手机、PC机,大到大规模集群、网格、云,都能看到Linux的身影。本人写一系列疯狂Linux内核博文的目的,就是让广大的中国同胞了解到这一伟大操作系统的内部真实面貌,让你感受到它为什么伟大。
Linux是一个操作系统,也是一个软件。既然一个软件,肯定就要遵循所有软件的特点,那就是其本质=算法+数据结构+文档。本文就从他的架构入手,一步步进入其内部。
1 Linux体系结构
上面就是一幅我认为还比较完美的Linux架构图。从图中我们可以看见,用户使用到的应用程序,最终会通过中断的形式访问内核。详细一点描述就是:应用程序向内核发出系统调用这一特殊中断,随后包含该程序的进程又用户态进入内核态,就可以访问内核提供的各式各样的函数和数据结构了。更具体的描述我们随后再细说,先来介绍一些概念吧:
“文件”和“进程”是Linux内核中的两个最基本实体和中心概念,Linux系统的所有操作都是以这两者为基础的。整个系统核心由以下五个部分组成:
① 虚拟文件系统:文件管理和磁盘高速缓存管理(节点和空间管理)
② I/O设备管理:块设备驱动(随机存取设备)、原始设备(raw设备,字符设备,裸设备)
③ 进程控制:进程的调度、同步和通信
④ 存储管理:在主存与CPU二级存储之间对程序进行搬迁
⑤ 网际协议栈:实现各式各样的网络协议。
2 一般程序的执行
一个进程在执行系统调用exec期间(exec("命令名&q
相关文档:
这个DDD安装了一晚上,记录步骤如下:
1.下载lesstif-0.93.40.tar.bz2(ddd-3.3.11.tar.gz 的文档中说这个稳定我就用这个了)从http://www.ibiblio.org/pub/X11/lesstif/srcdist/放到/usr/local下,然后是三部曲:./configure ,make,make install
2.下载ddd-3.3.11.tar.gz 从http://download.chinaunix.net/download/0003 ......
(一)中文字体的显示
(首先)用setup命令 开启“setup”对话框 --- 选择“service setup” 把“xfs” disable掉。
然后接下来:
(1)copy "c:/windows/fonts/simsun.ttc" to Linux directory : "/usr/share/fonts/liberation"
(2)edit "/etc/sysconfig/i1 ......
1. tr 命令的功能
tr命名是简化了的sed命令。其主要的功能包括:
a. 用一个字符来替换另外一个字符。
b. 删除字符串中的指定子串。
c. 合并字符串中重复串。
2. 常见的命令格式:
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
-c 用字符串1中字符集的补集替换此字符集, ......
一、Makefile的规则
在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则。
target ... : prerequisites ...
command
...
...
target也就是一个目标文件,可以是Object File,也可以是执行文件。
prerequisites就是,要生成那个target所需要的文件或是目标。
command也就是make需要执行的命令。(任 ......
由于用户在UNIX下经常会遇到SUID、SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较关心这个问题。
一、 UNIX下关于文件权限的表示方法和解析
SUID 是 Set User ID, SGID 是 Set Group ID的意思。
UNIX下可以用ls -l 命令来看到文件的权限。用ls命令所得到的表示法的格式是类似这样的:-rwxr-xr-x 。下面 ......