1、Linux基础知识介绍,操作系统,主要功能: CPU管理 存储管理 设备管理 文件管理 网络与通信管理 用户接口,POSIX表示可移植操作系统接口(Portable Operating System Interface)是为解决应用程序平台移植性提出的一种标准。,Linux是什么?,Linux是一个由几百万行源代码组成的庞大、复杂的程序,任何人都能从www.kernel.org上下载。 Linux是一套免费的、源代码开放的、符合POSIX标准规范的操作系统 。 严格来说,Linux只包含下图中内核与系统调用接口那两层。,Linux内核的构成,Linux的历史,1973: Thompson、Ri
2、tchie等写出第一个正式UNIX内核 1984:Richard Stallman的GNU项目与FSF基金会 1985:Richard Stallman撰写了GNU GPL。 1991:芬兰赫尔辛基大学21岁的Linus发布了第一版的Linux内核。 1992:在GNU GPL下Linux内核被重新授权 1996: Linux2.0版内核发布 1999: Linux2.2版内核发布 2001:Linux2.4版内核发布 2003:Linux2.6版内核发布 至今:RedHat、Fedora、Ubuntu、Debian、Slackware、OpenSUSE、Knoppix等众多发行版,Denni
3、s Ritchie and Ken Thompson,Linus Torvalds,Richard Stallman,GPL授权,GPL(GNU General Public License)规定了软件使用自由度的下限。一个软件挂上了GPL版权声明之后,它自然就成了自由软件,具有如下特性: 在发行软件时必须同时发布软件的源码 复制:可以自由复制该软件 修改:可以将获取的源码进行修改,使之适合自己的工作 再发行:您可以将修改过的程序再度自由发行 回馈:您应该将您修改过的程序代码回馈于社会 不能修改授权:一个GPL授权的自由软件,在您修改后,不能取消GPL授权(传染性) 不能单纯销售:您不能单纯销
4、售自由软件,Linux的内核版本,版本号构成:主版本.次版本.释出版本-修改版本 最新的内核版本:2.6.39-rc6 主、次版本为奇数:开发中版本(development) 主、次版本为偶数:稳定版本(stable),Linux Distributions,Torvalds负责开发的Linux仅具有Kernel与Kernel提供的工具,“Linux + 各种应用软件”才能构成一个完整的能够被普通用户接受的操作系统。 为了能让普通用户接触到Linux,很多的商业公司或非营利团体就将Linux Kernel与可运行的软件集成起来,加上自己具有创意的工具程序,这个工具程序可以让用户以光盘、DVD或
5、者通过网络直接安装。这个“Kernel + Softwares + Tools“的可完全安装的系统,我们称之为Linux distribution,一般中文翻译成可完全安装套件 为了让所有的Linux distributions开发不至于差异太大,规定了Linux Standard Base(LSB)和目录架构的File system Hierarchy Standard(FHS)标准规范来规范开发者,Linux Distributions,主要的Linux Distributions,Red Hat: http:/ Fedora: http:/fedoraproject.org/ Mandr
6、iva: http:/ Novell SuSE: http:/ Debian: http:/www.debian.org/ Slackware: http:/ Gentoo: http:/www.gentoo.org/ Ubuntu: http:/ CentOS: http:/www.centos.org/ KNOPPIX: http:/ 的优点,稳定的系统 免费或少许费用 安全性、漏洞的快速修补 多任务、多用户 用户与用户组的规划 相对比较不耗资源的系统 适合需要小内核程序的嵌入式系统 整合度佳且多样的图形用户界面(GUI),Linux 的应用,桌面应用 :网络浏览、文字处理、图片编辑、电子
7、邮件、OpenOffice等。 服务器应用 :Linux的应用主要集中于服务器市场,linux服务器端的应用软件主要集中在Web服务、邮件系统、文件传输系统和数据库等基础软件。 工作站应用:数值仿真、数据处理 嵌入式系统 :手机、PDA、机顶盒。 集群计算机 :集群计算机是一种计算机系统,它通过软件和硬件把多台计算机以特殊的方式连接起来,协作完成制定的任务。,Linux 的构成,Linux内核的构成,Linux Shell,Linux Shell:Shell是系统的用户界面,提供用户与内核进行交互操作的一种接口。 Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核执行。 Sh
8、ell编程语言具有普通编程语言的很多特点,用这种编程语言编写Shell程序与其他应用程序具有同样的效果。 目前常见的Shell有Bourne Shell(sh)、Korn Shell(ksh)、C Shell(csh)、Bourne-again Shell(bash)。,Linux 应用程序,Linux应用程序:标准的Linux系统都有一套称为应用程序的程序集,包括文本编辑器(vim)、GCC编译工具链、X Window、办公套件、Internet工具、数据库等。当然,还可以有用户自己编写的具有特定功能的应用程序。,Linux 的文件系统,Linux文件系统:文件系统是文件存放在磁盘等存储设备
9、上的组织方法。通常是按照目录层次的方式进行组织。每个目录可以包括多个子目录以及文件,系统以“/”为根目录。 Linux的虚拟文件系统能够以统一的接口支持多种目前流行的文件系统,如ext2、ext3、fat、vfat、ISO9660、nfs等。,Linux 的用户和用户组,Linux是一个多用户、多任务操作系统,可以同时为多个用户服务。 每个用户都属于一个或多个用户组。 所用用户的账号都放在/etc/passwd中,对应的密码都放在/etc/shadow中,用户组信息都放在/etc/group中,Linux 的文件权限,文件和目录的3种属性:r、w、x 文件所有者的权限 同用户组的权限 其他非本
10、用户组的权限,Linux 的文件权限,Linux 的文件类型,普通文件:数据文件、文本文件、可执行文件。 目录文件 设备文件:字符设备、块设备 符号链接文件 管道设备文件 套接口文件一个设计原则:一切皆文件,守候进程daemon、服务,守候进程是一种常驻内存的进程,用来提供一些系统或网络服务 stand_alone daemon:开机时单独自行启动,并一直存在于内存中持续的提供服务,例如httpd、vsftpd Super deamon: 当没有客户端请求时,各个服务都是未启动的情况,等到有来自客户的请求时,super daemon才唤醒相应的服务 Stand_alone服务的启动脚本一般放在
11、/etc/init.d/的某个子目录下,初始化环境配置文件一般放在/etc/sysconfig/的某个子目录下,X Window系统,X Windows系统是Linux上的一个应用程序,提供GUI操作接口 为什么叫X?在开发 X 之前就已经在另外一个视窗系统上工作了。 那个系统的名字叫做 “W” (“Window”)。X 是W 的后一个字母。 X Window系统的构架:X Server/Client 窗口管理器:KDE 和 GNOME,Linux下的软件安装与升级,基于源码与Tarball的安装: 取得源文件包,并利用tarball工具解压 运行configure检测装载环境生成正确的Mak
12、efile文件 make clean; make make install 利用patch更新源码,并重复上述过程 基于RPM的安装、基于yum的在线升级 例:rpm i rp-pppoe-3.5-32.1.i386.rpm 基于DPKG的安装,Linux的启动流程,/etc/grub.conf /etc/inittab /etc/sysconfig/modules /etc/rc.d/rc0-6 /etc/rc.d/rc.local,Linux的启动流程,硬盘的主引导记录(MBR),硬盘的主引导记录(MBR),硬盘的主引导记录(MBR),硬盘的主引导记录(MBR),Linux内核的特性,真正
13、的多用户、多任务管理 完善的虚拟内存管理和运行保护机制 虚拟文件系统 支持POSIX标准的系统调用 动态内核模块加载 网络功能 支持SMP 可移植性,Linux2.6内核的新特性,可抢占式内核 完全公平调度算法 统一设备模型 PnP支持 内核模块改变 线程模型 ,37,Linux的虚拟内存管理,Linux的虚拟内存管理机制为应用程序和驱动 程序提供了两种服务: 使每个进程都拥有自己独立的内存地址空间;对于32位Linux而言,每个任务可寻址的内存地址空间都为0x00000000 0xFFFFFFFF(232, 4GB) 当物理内存不够4GB时,虚拟内存管理模块会用外存空间模拟内存空间,并且该模
14、拟过程对应用程序是透明的。,38,用户地址空间与内核地址空间,Linux将每个进程的4GB的独立地址空间又划分为用户地址空间(0x00000000 0xBFFFFFFF)和 内核地址空间(0xC0000000 0xFFFFFFFF)两部分。 操作系统内核代码和数据存放在内核地址空间;每个进程自己私有的代码和数据存放在用户地址空间 虽然Linux的内核代码和数据被映射到了每个进程的地址空间中(所有进程看到的内容是相同的),但在实际的物理内存中,只有内核代码和数据的一份拷贝。,39,用户地址空间与内核地址空间,进程 1 的页表,进程 2 的页表,进程 3 的页表,内页表,外页表,CPU负责查表(虚
15、拟地址-物理地址),查表失败时触发缺页中断(14号); OS负责填充各个表的内容,并提供缺页中断的中断服务器程序。,用户态与核心态,一般现代CPU都有几种不同的指令执行级别 在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态 用户态指相应的低级别执行状态,代码的掌控范围会受到限制,只能执行CPU指令集的一个子集 举例:intel x86 CPU有四种不同的执行级别0-3,Linux只使用了其中的0级和3级分别来表示内核态和用户态 0xc0000000以上的内核地址空间只能在内核态下访问,0x000000000xbfffffff的用户地址空间在两种状态下都
16、可以访问 应用程序可以通过Linux系统调用由用户态进入内核态,Linux进程状态,Linux中任务和进程是相同的术语,每个进程由 task_struct 结构来描述,即PCB (进程控制块) Linux 将进程状态主要分为五种: TASK_RUNNING TASK_INTERRUPTIBLE TASK_UNINTERRUPTIBLE TASK_STOPPED TASK_ZOMBILE 。 进程的状态随着进程的调度发生改变,Linux进程状态转换,Linux进程调度策略,Linux中进程分为普通进程和实时进程,分别采用不同的调度策略。实时进程相对于普通进程具有绝对的优先级 实时进程采用SCHED_FIFO或者SCHED_RR调度策略,普通的进程采用SCHED_OTHER调度策略。,相关参考书,相关参考书,相关参考书,相关参考书,相关参考书,