《周(基础知识和安装).ppt》由会员分享,可在线阅读,更多相关《周(基础知识和安装).ppt(68页珍藏版)》请在三一办公上搜索。
1、Linux操作系统基础知识篇,软件的分类,按提供方式和是否盈利划分商业软件:开发出售,提供技术支持,用户只有使用权不得修改和扩散。共享软件:开发者提供免费使用,升级,用户只有使用权不得修改和扩散。自由软件:开发者使用所有源码,用户使用修改,并公开代码。FSF(free software foundation)自由软件基金会GPL(general public license)通用公共许可证,目前全球软件业三大主流操作系统,微软WINDOWS操作系统以专有硬件平台为基础的UNIX厂家AIX(IBM)HP-UX(HP)Solaris(SUN)由全球各地成千上万的程序员设计和实现的Linux,Lin
2、ux 是什么?,Linux是免费使用和自由传播的类Unix操作系统符合POSIX标准,以网络为核心的设计思想由全世界各地成千上万的程序员设计和实现不受任何商品化软件的版权制约,可自由使用Linux以高效性、灵活性和稳定性著称,Linux 的主要特性,开放性 系统遵循遵循开放系统互连(Open Systems Interconnection,OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互连。多用户 多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。Linux和Unix都具有多用户的特性。,Linux
3、的主要特性,多任务 计算机同时执行多个程序,而且各个程序的运行互相独立。良好的用户界面 图形界面字符界面系统调用界面设备独立性 所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。,Linux 的主要特性,丰富的网络功能 完善的内置网络Linux在通信和网络功能方面优于其他OS可靠的系统安全 文件读、写、执行等权限控制带保护的子系统审计跟踪核心授权良好的可移植性 将OS从一个平台转移到另一个平台,OS仍然能按其自身的方式运行,Linux的应用,超级计算机应用服务器嵌入式领域软件开发桌面应用,Linux的应用,
4、超级计算机全球超级计算机20强中,有19强使用的是Linux系列的操作系统,市场占有率达到95%全球超级计算机前10强中,Linux的市场占有率是100%,Linux的应用,应用服务器Linux系统的可靠性使它成为企业Web服务器的重要选择邮件服务器成年累月运行,不需要重新启动网络服务器面对海量访问,不崩溃支持多种硬件平台,非常容易与其他平台如Windows,UNIX等系统共存,还可以自由无限制地修改使用Linux操作系统的知名大网站腾讯、GNU.org、阿里巴巴、百度、网易。,Linux的应用,嵌入式领域嵌入式操作系统是当前操作系统领域的热点系统内核小:Enea公司的OSE分布式系统,5K专
5、用性强:针对硬件的变化和增减进行修改系统精简:控制系统成本,实现系统安全高实时性:软件代码要求高质量和高可靠性Linux的低成本、小内核以及模块化的特点吸引很多嵌入式设备都纷纷使用诺基亚、摩托罗拉、三星、爱立信、惠普,Linux的应用,软件开发Linux开发工具和应用正日臻完善,Linux开发者可以使用C,C+,Perl或PHP来开发应用程序桌面应用新版本的Linux系统在桌面应用方面进行了改进,达到了相当高的水平,完全可以作为一种集办公应用、多媒体应用、游戏娱乐和网络应用等多方面功能于一体的图形界面操作系统,要想了解更多背景与应用:,请观看Linux 20周年视频http:/,从实用主义角度
6、来看:求职从理性主义角度来看:扩充自己的知识面学习系统软件,不光要懂得系统的工作原理,还要结合实际系统,学习实际系统的实现方法“Read the fucking source code”by Linus从更高的层面:Windows不开源代码,知其然而不知其所以然美国政府有明确规定为了国家安全任何公司的加密技术都必须有解密方法 中国自主操作系统,从而构建一个自主、完整的软件产业体系。,为什么要学习Linux?,为什么要学习Linux?,2010.8.4,腾讯 招聘 Linux,如何学习Linux?,授课内容一览,教材,1 鸟哥.鸟哥的Linux私房菜基础学习篇(第3版)2鸟哥.鸟哥的Linux私
7、房菜-服务器架设篇(第2版).3红联Linux培训课件系列,师傅领进门,修行在个人,取乎其上,得乎其中;取乎其中,得乎其下;取乎其下,则无所得矣,专心听课,你会少走很多弯路,Linux操作系统-基础知识篇,本节内容1 Linux系统简介2 Linux版本介绍3 Fedora Core3.1 系统概述 3.2 安装Fedora系统 3.3 登录、注销和关闭系统 3.4 GNOME基本使用 3.5 系统设置,内核 Shell 文件系统 应用程序,Linux系统的组成,文件系统,内核是操作系统的核心存储管理:虚拟内存CPU和进程管理:多任务,共享库文件系统:加载和卸载设备管理和驱动网络通信:TCP/
8、IP网络功能系统的初始化和系统调用,Linux系统的组成-内核,它接收用户输入的命令解释用户输入的命令并将其送到内核去执行Shell编写的程序与其他应用程序有相同的效果,Linux系统的组成-Shell,Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口,Linux系统的组成-Shell,文件系统是文件存放在磁盘等存储设备上的组织方法Linux虚拟文件系统为用户提供了一个一种公共的接口,而不需要了解物理设备或逻辑系统的细节。系统允许系统管理员将在任何物理设备上的逻辑文件系统挂接在文件目录中。支持多种文件系统:Ext2、Ext3、Ext4、FAT、FAT32、VFAT、ISO96
9、60,,Linux系统的组成-文件系统,标准的Linux系统都有一套称为应用程序的程序集,它包括文本编辑器、编程语言、X Window、办公软件、Internet工具和数据库等,Linux系统的组成-应用程序,Linux系统的组成 内核 Shell 文件系统 应用程序,Linux版本介绍,Linux的版本号分为两部分内核版本(kernel)发行版本(distribution),内核是一个用来和硬件打交道并为用户程序 提供一个有限服务集的低级支撑软件内核版本号由3个数字组成:r:目前发布的内核主版本 x:偶数表示稳定版本;奇数表示开发中版本 y:错误修补的次数,2.1Linux内核版本,2.2L
10、inux发行版本,一些组织和厂家,将Linux系统的内核、应 用软件和文档包装起来,并提供一些系统安 装界面、系统配置设定管理工具,就构成了 Linux发行版本.系统工具+应用工具+网络工具+编译工具 各发布厂商发行版本的版本号各不相同,与 Linux系统内核的版本号是相对独立的。根据GPL准则,这些发行版本虽然都源自一 个内核,但都没有自己的版权。,(1)Mandriva(2)Red Hat(3)SUSE(4)Debian(5)Ubuntu(6)Gentoo(7)Slackware(8)Red Flag,主流Linux发行版本介绍,Fedora系统概述,Fedora是一个开放的、创新的以及前
11、瞻性的平台,它允许任何人自由地使用、修改和重发布 前身就是Red Hat Linux,被Red Hat公司定位为新 技术的实验场2003年11月,第一个发行版本 Fedora Core 1 出炉,版本代码:Yarrow2004年5月,FC2正式发布,版本代码:Tettnang2004年11月,FC3正式发布,版本代码:Heidelberg 2010年5月25日,Fedora13正式版发布,最新版 本Fedora 13 Goddard,安装Fedora系统,参见Win7使用 VMware 安装 Linux(Fedora13)庞宇杰(现在穆迪信息咨询工作)王晓哲(现在明尼苏达大学(Universi
12、ty of Minnesota)就读),感谢历届学生的无私奉献!,旧时王谢堂前燕,飞入寻常百姓家。,登录、注销和关闭系统,Fedora系统使用账号来管理权限和维护安 全,不是所有的账号都具有相同的权限,某 些账号所拥有的文件访问权限和服务要比其 他账号少,登录系统,注销系统 在Fedora系统中,要注销Fedora 8系统,单击面板上的“系统”“注销”,弹出注销确认对话框,单击“注销”按钮即可注销系统如果不采取任何操作,那么系统会在60s之后自动注销 切换用户,关机和重新启动系统 在切断计算机电源之前必须首先关闭Fedora 系统 不执行关闭Fedora系统就直接切断计算机的 电源,会导致未存
13、盘数据的丢失或者系统的 损害,GNOME基本使用,Fedora系统包括了一个功能强大的图形化桌面环境GNOME,可以很方便地访问应用程序、文件和系统资源,使用桌面,Fedora系统默认图形化桌面环境是GNOME,通过图形化桌面环境能够使用图形化应用程序以及利用图形界面对计算机进行系统设置 Fedora提供了3种主要工具来使用系统上的应用程序:面板图标、桌面图标和菜单系统,面板(顶部),面板(底部),使用面板,可以单击面板上的“应用程序”按钮,进入系统内 的应用程序 可以使用面板上的“位置”快速地进入某个文件夹中,如主文件夹、桌面、计算机和网络等;还可以在系统中搜索文件;查看最近打开的文档等 可
14、以使用面板上的“系统”操纵首选项、管理、帮助、注销以及关机功能,其中使用“管理”可以对Fedora系统进行大部分的管理操作,小程序是运行在面板上的小型应用程序,通常会监控系统中的各类情况,使用小程序,在面板上添加项目,图形化桌面提供了使用多个工作区的功能,因此不必把所有运行着的应用程序都堆积在一个可视桌面区域,工作区切换器,系 统 设 置,登录Fedora系统之后,有可能需要对其进行设置,比如桌面背景、屏幕保护程序、日期和时间设置、系统监视、磁盘分析、声卡检测等,下面对这些内容分别进行介绍,系统监视器,使用“系统监视器”可以查看Fedora系统的系统信息、进程信息、资源信息以及文件系统信息,使
15、用“磁盘使用分析器”工具可以对本地计算机甚至远程计算机的文件夹和文件系统进行扫描并分析,磁盘使用分析器,磁盘使用分析器,在Fedora系统安装过程中对显示器、视频卡和显示设置都进行了配置,显示设置,使用“时间/日期属性”工具允许用户更改系统日期和时间、配置系统使用的时区以及设置网络时间协议(NTP)守护进程来与时间服务器的系统时钟进行同步,日期和时间配置,使用“外观首选项”工具可以更改桌面的背景,可以从/usr/share/backgrounds/目录中选择图像,也可以使用自己的图像,更改桌面背景,外观首选项,当需要检测Fedora系统上的声卡是否正常时,单击面板上的“系统”“管理”“声卡检测
16、”,打开“声音配置”界面,声卡检测,声音配置,当需要查看Fedora系统的日志时,单击面板上的“应用程序”“系统工具”“系统日志”,打开如图所示的“系统日志查看器”界面,系统日志,系统日志查看器,课堂之外兴趣人士,Linux 内核的重要组成部分,Linux内核分析,所有主要Linux发行版本(如Craftworks,Debian、Slackware和Redhat)都包含了源码在内。Linux系统核心就是从这些源码中构造出来的。,核心源码的组织,核心源码的顶层是/usr/src/目录,在此目录下可以看到大量子目录:arch 这个子目录包含了所有体系结构相关的核心代码。它还包含每种支持的体系结构的
17、子目录,如i386。include 这个目录包括了用来重构核心的大多数include文件。对于每种支持的体系结构分别有一个子目录。init 此目录包含核心启动代码。mm 此目录包含了所有的内存管理代码。与具体体系结构相关的内存管理代码位于arch/mm目录下,例如arch/i386/mm/fault.c。,核心源码的组织,drivers 系统中所有的设备驱动都位于该目录中。它又进一步划分成几类设备驱动,如block。ipc 此目录包含了核心的进程间通讯代码。modules 此目录仅仅包含已建好的模块。fs 所有的文件系统代码。它也被划分成对应不同文件系统的子目 录,如vfat和ext2。ker
18、nel 主要核心代码。同时与处理器结构相关代码都放在arch/kernel目录下。net 核心的网络部分代码。lib 此目录包含了核心的库代码。与处理器结构相关库代码被放在arch/lib/目录下。scripts 此目录包含用于配置核心的脚本文件(如awk和tk脚本)。,Linux内核源代码的组成,阅读核心某个部分经常要用到好几个其他的相关文件,对于源代码的阅读,要想比较顺利,事先最好对源代码的知识背景有一定的了解。阅读linux内核源代码的基本要求是:1、操作系统的基本知识。2、对C语言比较熟悉,最好要有汇编语言的知识和GNU C对标准C的扩展的知识的了解。另外,在阅读之前还应该知道Linu
19、x内核源代码的整体分布情况。,Linux内核源代码的组成如下,1 系统启动与初始化在基于intel的系统上,Linux可以通过loadlin.exe或者LILO将核心载入内存并将控制传递给它。这部分程序 位于arch/i386/kerneld/head.s。此文件完成一些处理器相关操作并跳转到init/main.c中的main()例程。2 内存管理这部分代码主要位于mm目录里,而与处理器结构相关部分在arch/mm中。页面出错处理代码位于mm下的 memory.c文件中,内存映射与页面cache代码位于filemap.c中。buffer cache则在mm/buffer.c中实现,swap c
20、ache位于mm/swap_state.c和mm/swapfile.c中。,Linux内核源代码的组成,3 核心大多数通用代码位于kernel目录下,而处理器相关代码被放在arch/kernel中。调度管理程序位于kernel/sched.c,fork代码位于kernel/fork.c。底层部分处理及中断处理的代码位于include/linux/interrupt.h里。在/linux/sched.h中可以找到task_struct的描叙。4 PCIPCI伪设备驱动位于drivers/pci/pci.c且其系统通用定义放在include/linux/pci.h中。每个处理器结构 具有特殊的PC
21、I BIOS代码,Alpha AXP的位于arch/alpha/kernel/bios32.c中。,Linux内核源代码的组成如下,5 进程间通讯进程间通讯所有代码都在ipc目录中。系统V IPC对象都包含一个ipc_perm结构,它在include/linux/ipc.h中描叙。系统V消息在ipc/msg.c中实现,共享内存在ipc/shm.c而信号灯位于ipc/sem.c中。管道在ipc/pipe.c中实现。6 中断处理核心的中断处理代码总是与微处理器结构相关。Intel系统的中断处理代码位于arch/i386/kernel/irq.c中,其定义位于include/asm-i386/irq
22、.h中。,Linux内核源代码的组成如下,7 设备驱动Linux核心源码的大多数都是设备驱动。所有Linux的设备驱动源码都放在drivers目录中并分成以下几类:/block 块设备驱动包括IDE(在ide.c中)驱动。如果想寻找这些可包含文件系统的设备的初始化过程 则应该在drivers/block/genhd.c中的device_setup()。当安装一个nfs文件系统时不但要初始化 硬盘还需初始化网络。块设备包括IDE与SCSI设备。/char 此目录包含字符设备的驱动,如ttys,串行口以及鼠标。,Linux内核源代码的组成,7 设备驱动Linux核心源码的大多数都是设备驱动。所有L
23、inux的设备驱动源码都放在drivers目录中并分成以下几类:/cdrom 包含所有Linux CDROM代码。在这里可以找到某些特殊的CDROM设备(如Soundblaster CDROM)。IDE接口的CD驱动位于drivers/block/ide-cd.c中而SCSI CD驱动位于drivers/scsi/scsi.c中。/pci 它包含了PCI伪设备驱动源码。这里可以找到关于PCI子系统映射与初始化的代码。另外位于 arch/alpha/kernel/bios32.c中的Alpha AXP PCI补丁代码也值得一读。,Linux内核源代码的组成,7 设备驱动Linux核心源码的大多数
24、都是设备驱动。所有Linux的设备驱动源码都放在drivers目录中并分成以下几类:/scsi 这里可以找到所有的SCSI代码以及Linux支持的SCSI 设备的设备驱动。/net 包含网络驱动源码,如tulip.c中的DECChip 21040 PCI以太网驱动。/sound 所有的声卡驱动源码。,Linux内核源代码的组成,8 文件系统EXT2文件系统的源码位于fs/ext2中,其数据结构定义位于include/linux/ext2_fs.h,ext2_fs_i.h 以及 ext2_fs_sb.h中。虚拟文件系统数据结构在include/linux/fs.h中描叙且其代码在fs/中。buf
25、fer cache 和update核心后台进程在fs/buffer.c中实现。9 网络网络代码位于net目录而大多数包含文件位于include/net中。BSD套接口代码位于net/socket.c中。IPV4的 INET套接口代码位于net/ipv4/af_inet.c中。通用协议支撑代码(包括sk_buff处理过程)位于net/core中,同时TCP/IP网络代码位于net/ipv4中。网络设备驱动位于drivers/net中。,Linux内核源代码的组成,10 核心模块核心模块代码部分位于核心中部分位于modules包中。核心代码位于kernel/modules.c且其数据结构与核心 后
26、台进程kerneld消息位于include/linux/module.h和include/linux/kerneld.h目录中。同时必要时需查阅 include/linux/elf.h中的ELF文件格式。,Linux内核分析方法,Linux的最大的优点之一就是它的源码公开。首先是可以从中学到很多的计算机的底层知识,如后面将讲到的系统的引导和硬件提供的中断机制等;其它,如虚拟存储的实现机制、多任务机制、系统保护机制等等,这些都是非读源码不能体会的。其次是可以从操作系统的整体结构中,体会整体设计在软件设计中的份量和作用,以及一些宏观设计的方法和技巧:Linux的内核为上层应用提供一个与具体硬件不相
27、关的平台;同时在内核内部,它又把代码分为与体系结构和硬件相关的部分,和可移植的部分;再例如,Linux虽然不是微内核的,但它把大部分的设备驱动处理成相对独立的内核模块,这样减小了内核运行的开销,增强了内核代码的模块独立性。,Linux内核分析方法,再是能从对内核源码的分析中,体会到它在解决某个具体细节问题时的巧妙方法,如Linux通过Botoom_half机制来加快系统对中断的处理。最重要的是:在源码的分析过程中,读者将会被慢慢地、潜移默化地专业化。专业的程序员总是把代码的清晰性,兼容性,可移植性放在很重要的位置。,Linux内核分析方法,然而,由于内核代码的冗长,和内核体系结构的庞杂,所以分
28、析内核也是一个很艰难、很需要毅力的事;在缺乏指导和交流的情况下尤其如此。只有方法正确,才能事半功倍。下面介绍分析代码时的几种方法:1.弄懂源码的文件组织形式 要分析Linux内核源码,首先必须找到各个模块的位置,即搞清楚源码的文件组织形式。2.以程序流程为线索,一线串珠 第二种方法是“以程序流程为线索、一线串珠”,就是指根据程序的执行流程,把程序执行过程所涉及到的代码分析清楚。这种方法最典型的应用有两个:一是系统的初始化过程;二是应用程序的执行流程:从程序的装载,到运行,一直到程序的退出。,Linux内核分析方法,3.以数据结构为基点,触类旁通 结构化程序设计思想认为:数据结构+算法=程序。数
29、据结构体现了整个系统的构架,所以数据结构通常都是代码分析的很好的着手点,对Linux内核分析尤其如此。4.以功能为中心,各个击破 从功能上看,整个Linux系统可看作由进程管理机制、内存管理机制、文件系统、硬件驱动、系统调用等几个部分组成。以功能为中心、各个击破,就是指从这五个功能入手,通过源码分析,找出Linux是怎样实现这些功能的。,Linux内核分析方法,5.使用阅读源代码的工具和交叉参考网站 分析核心的一部分代码通常会要查看其它的几个相关的文件,而且这些文件可能还不在同一个子目录下,很快就会忘记原来在干什么。因此,没有一个好的工具是不行的。由于大多数人常用Window系列平台,在此介绍一个Window下的一个阅读源代码的工具:Source Insight。该软件可以从因特网下载。,