Linux操作系统及程序设计课件_第1页
Linux操作系统及程序设计课件_第2页
Linux操作系统及程序设计课件_第3页
Linux操作系统及程序设计课件_第4页
Linux操作系统及程序设计课件_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、教学目标:掌握Linux系统组成特点、常用命令和使用方法;深入了解和掌握Linux系统的内部结构、编译、调试和运行系统程序的方法;对Linux操作系统建立一个全面、系统的认识,进而对现代操作系统的设计方法和有较全面的认识,为进一步学习和应用打下基础。教学主要内容:Linux系统基本使用,shell及其编程,Linux文件系统,多进程与多线程程序设计,进程间通信教学时数:讲解辅助下的实验30学时第1页,共70页。第一讲Linux 简介 初步掌握Linux系统安装、实验环境构建和基本特点。第2页,共70页。 Linux概述Linux网络操作系统 1990年,Linus Torvalds在一台386

2、 AT计算机上,根据Andrew S. Tanenbaum教授的MINIX开发的一个OS内核。两个进程交替运行,分别打印A和B增加驱动程序、文件系统第3页,共70页。Linux发展迅速世界500强超级计算机系统统计表(按操作系统分类统计 2007.6)OS FamilyCountShare %Rmax Sum (GF)Rpeak Sum (GF)Processor SumLinux38977.80%31180604809959615612Unix6012.00%532647728573120394Mixed428.40%11944731496163469052BSD Based40.80%52

3、899591865952Mac OS30.60%32989530086296Windows20.40%15518363573808Totals500100%4946586.057183245.391221114第4页,共70页。Linux的应用发展方向超级计算机系统通用计算机系统嵌入式计算机系统Linux与Unix的关系POSIX标准(1990/1996)Portable Operating System Interface of UNIX UNIX标准之争的产物,描述了系统调用、编程接口API、Shell机制和基本命令集、实时性、信号量机制等设计操作系统许多方面的规范。第5页,共70页。自由

4、软件自由软件基金会(FSF Free Software Foundation)Richard M. Stallman FSF创始人自由软件是指其使用者对该软件有使用、复制、分发、研究、改写、再利用的自由。自由是关乎权利,而非价格Free指“自由”,而不是“免费”Linux与自由软件和开源软件第6页,共70页。自由权利自由之一:不论目的为何,都有使用该软件的自由。自由之二:有研究该软件如何工作的自由,并且可以改写软件,以符合使用者的需求。前提:可以获得该软件的源代码。自由之三:有重新散布该软件的自由,所以每个人都可以通过分发自由软件来帮助他人。 自由之四:有改进该软件的自由,并且公开发布软件的改

5、进版本,使整个社群都可以受益。前提:获得该软件的源代码。一般在软件许可(License)中说明。第7页,共70页。GNU项目GNUs Not Unix (有点奇怪? 是什么意思呢?)GNU GPL GNU General Public LicenseGNU读作g-nooGNU是一个类Unix操作系统采用Linux作为内核Richard Stallman专门写了一篇文章讲述来试图澄清Linux与GNU项目的关系:Linux and the GNU Project典型的桌面环境:GNOME,KDE第8页,共70页。第9页,共70页。开源软件Open Source是一种软件开发方法旨在保证更好的质量

6、、更高的可靠性、更大的灵活性、更低的费用,结束软件开发公司对使用者所进行的“掠夺” 。开源也有自己的许可,其中重要的一条就是开源软件要公开源代码,这个许可尚处于讨论之中。第10页,共70页。第11页,共70页。Linux特点类Unix(Unix-like)操作系统其他类UNIX系统包括Solaris、Mac OS等基于GPL(GNU Public License)的自由操作系统第一个版本发行于1991年主要用C语言编写,部分代码用汇编语言编写“Linux”在不同语境下的内涵不同Linux内核、Linux系统、Linux开发套件等严格来说,Linux指由Linux Torvalds维护(及通过主

7、要镜像网站发布)的内核第12页,共70页。13Linux发展史1991年11月,芬兰赫尔辛基大学的 Linus Torvalds编写了一个小程序(取名为Linux),发布在互联网上希望借此实现一个操作系统“内核”1993年一批高水平网络黑客参与,诞生Linux 1.0 版 1994年Linux 的第一个商业版 Slackware 问世1996年美国国家标准技术局计算机系统实验室确认 Linux 版本1.2.13符合 POSIX 标准2001年Linux2.4版内核发布 2003年Linux2.6版内核发布Linux简介第13页,共70页。14Linux操作系统特征符合POSIX标准规范的操作系

8、统 Portable Operation System Interface of Unix:可移植的操作系统接口由IEEE开发,ANSI和ISO标准化具备现代操作系统的基本功能抢占式多任务处理,支持多用户图形用户接口异构硬件支持支持SMP支持TCP/IP多体系结构支持,支持32/64位CPU拥有其他操作系统没有的特色NFS、VFS、高效的EXT系列文件系统等Linux简介第14页,共70页。代表一种开源文化免费软件,开放源代码自由软件,可在原有程序基础上开发自己的程序GNU/LinuxLinux仅指Linux内核Linux系统的大部分应用都建立在GNU软件之上核心结构Linux内核Linux

9、ShellLinux文件系统Linux应用系统GNU Tools15Linux精髓Linux简介第15页,共70页。16Linux的系统结构用户应用程序系统调用硬件资源管理接口Shell,库函数内核实现Linux简介用户态核心态第16页,共70页。不区分的缺陷用户直接修改操作系统的数据用户直接调用操作系统的内部函数用户直接操作外设用户任意读/写物理内存区分的意义禁止用户程序和底层硬件直接打交道如果用户程序往硬件控制寄存器写入不恰当的值,可能导致硬件无法正常工作禁止用户程序访问任意物理内存,否则可能会破坏其他程序的正常执行如果对核心内核所在的地址空间写入数据,会导致系统崩溃17划分用户态/内核态

10、的必要性Linux简介第17页,共70页。现代CPU都有几种不同指令执行级别在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态在相应低级别执行状态下,代码的掌控范围会受到限制,只能在对应级别允许的范围内活动举例intel x86 CPU有四种不同的执行级别0-3Linux只使用0级和3级分别表示内核态和用户态18CPU对用户态/和心态划分的支持Linux简介第18页,共70页。cs寄存器最低两位表明当前代码的特权级CPU每条指令的读取都是通过cs:eip这两个寄存器cs:代码段选择寄存器eip:偏移量寄存器上述判断由硬件完成在Linux中,地址空间是一个

11、显著的标志0 xc0000000以上地址空间:只能在内核态下访问0 x00000000 0 xbfffffff的地址空间:两种状态下都可访问注意,这里的地址空间是逻辑地址而不是物理地址19用户态/和心态的区分方法Linux简介第19页,共70页。Linux是单内核、多模块系统Linux内核运行在单独的内核地址空间所有操作系统功能作为一个模块实现在其内核中模块均运行在内核态,直接调用函数,无需消息传递具备模块化设计、抢占式内核(Linux 2.6支持,Linux 2.4用户级抢占)、支持内核线程及动态装载内核模块的能力与Unix主要区别Linux汲取了微内核设计思想(基于模块定制内核)Unix也

12、是单内核系统Windows NT和Mach是微内核系统20Linux的内核特点Linux简介第20页,共70页。21Linux单内核结构用户态标准函数库系统调用(POSIX标准)接口模块内核(进程管理、存储管理、文件管理、设备管理、网络管理)设备驱动计算机硬件核心态单内核模块接口驱动接口应用程序Linux简介第21页,共70页。22Linux的内核版本Linux内核版本指由Linux开发小组(Linus Torvalds总协调)开发出系统内核的版本号 Linux内核采用双树系统一棵是稳定树,主要用于发行另一棵是非稳定树(开发树),用于产品开发和改进 Linux内核版本号由3位数字组成 r.x.

13、y第1位数字r为主版本号 第2位数字x为说明版本类型的次版本号: 偶数表示产品化版本 奇数表示实验版本 第3位数字y为修改号,表示错误修补的次数 Linux简介第22页,共70页。23主流的Linux发行版本Linux简介第23页,共70页。24Linux与Windows的区别文件系统Linux需要一个挂载根目录/的ext分区和一个作为虚拟内存的swap分区Linux没有盘符,可通过设备名挂载,挂在信息在/dev/fstab,如mount -t ntfs /dev/sda1 /mnt/win_cLinux将所有设备都映射成/dev目录下的一个文件用户管理系统管理员是root,使用su命令切换L

14、inux简介第24页,共70页。25主要内容Linux简介Linux内核环境Linux编程环境Linux的系统初始化Linux的程序执行机制第25页,共70页。26Linux内核核心组成进程调度程序:负责控制进程访问CPU内核管理程序:支持虚拟内存及多进程安全共享主存系统虚拟文件系统:抽象异构硬件设备细节,提供公共文件接口网络接口:提供对多种组网标准和网络硬件的访问进程间通信:为进程之间的通信提供实现机制Linux内核环境第26页,共70页。27Linux内核源码的获取下载位置以GNU zip和bzip2形式发布安装位置一般安装在/usr/src/linux,不要将该源码树用于开发在编译自己编

15、写的C库所用的内核版本要链接到该树不要以root身份对内核进行修改,应先建立自己的主目录,仅以root身份安装新内核安装新内核应该保持/usr/src/linux原封不动Linux内核环境第27页,共70页。28Linux核心源码结构Linux内核环境第28页,共70页。29Linux核心源码的组织arch 目录包含与体系结构相关的核心代码,相关.h文件则放在include/asm下支持的每种CPU均有相应子目录,包含boot、kernel、lib和mm等子目录/kernel目录存放大多数内核函数主要文件包括sched.c、time.c、sys.c、itimer.c、fork.c、signal

16、.c、softirq.c、resource.c、dma.c、printk.c等/mm子目录独立于体系结构的主存管理文件包括实现虚拟主存管理的源代码Linux内核环境第29页,共70页。/fs目录存放VFS和系统支持的各种文件系统源代码每个子目录对应一个特定文件系统/include目录存放重要的内核.h头文件为各种CPU专设一个子目录通用子目录include/linux、include/net/ipc目录存放处理进程间通信所需源代码30Linux核心源码的组织(续)Linux内核环境第30页,共70页。/drivers目录 存放所有设备驱动程序源代码/net子目录存放网络子系统,如各种网卡和网络

17、规程驱动程序/security目录存放安全子系统代码/sound目录存放语音子系统代码31Linux核心源码的组织(续)Linux内核环境第31页,共70页。/init目录存放内核引导和初始化代码许多重要文件,如main.c、version.c就位于该目录下/lib目录存放内核需要的通用工具性内核函数(如对出错信息的处理),它能够在引导时解压内核并装入主存/scripts目录存放编译内核所用脚本和用于系统配置的命令文件/documentation目录存放内核源代码文档32Linux核心源码的组织(续)Linux内核环境第32页,共70页。采用模块化的内核配置系统内核模块(Loadable Ke

18、rnel Module)的概念模块实际上是一种目标对象文件,没有链接,不能独立运行但是其代码可以在系统运行时链接到系统中作为内核的一部分运行,或从内核中取下,从而可以动态扩充内核的功能(不需要重新编译内核)这种目标代码通常由一组函数和数据结构组成33Linux内核的配置组成Linux内核环境第33页,共70页。使得内核更加紧凑和灵活,可扩展 修改模块时,不必全部重新编译整个内核系统如果需要使用新模块,只要编译相应的模块,然后将模块插入即可模块可以不依赖于某个固定的硬件平台模块的目标代码一旦被链接到内核,它的作用域和静态链接的内核目标代码完全等价34内核模块的优点Linux内核环境第34页,共7

19、0页。并不是所有地方都使用内核模块设备驱动程序文件系统驱动程序系统调用大部分系统调用属于基础内核(Basic kernel),也可以以内核模块方式增加新的系统调用或者覆盖现有基于内核模块方式实现的系统调用35内核模块的使用Linux内核环境第35页,共70页。程序代码:helloworld.c编译、安装方法root# gcc -c helloworld.croot# insmod helloworld.oroot# lsmodroot# rmmod helloworld36模块示例#define MODULE#include int init_module(void) printk(“Hell

20、o World!n”);return 0;void cleanup_module(void) printk(“ Goodbye!n”);Linux内核环境第36页,共70页。37内核模块与应用程序的差别C语言程序 模块运行 用户空间 内核空间入口 main() init_module()出口 无 cleanup_module()编译 gcc -c gcc -c -D_KERNEL_-DMODULE连接 gcc insmod运行 直接运行 insmod调试 gdb kdbug, kdb, kgdb等 Linux内核环境第37页,共70页。控制需要编译到内核的二进制映象(启动时载入)和在需要时才装

21、入的内核模块配置选项命名形式:CONFIG_FEATURE如CONFIG_SMP表示支持对称多处理器配置项选择模式二选一:yes或no三选一:yes、no或moduleYes选项表示把代码编译进主内核映象,而不作为模块Module意味该配置项被选定,但编译时该功能的实现代码是以模块形式生成驱动程序一般都用三选一形式字符串或整数不控制编译过程,只是指定内核源码可以访问的值,如定义静态变量一般以预处理宏的形式表示38Linux内核编译时的模块选配参数Linux内核环境第38页,共70页。内核编译主要工具文件内核编译后,会在/boot目录生产以下文件vmlinuz文件initrd.img文件Syst

22、em.map文件39Linux内核编译的基本架构文件类型作用Makefile顶层Makefile文件.config内核配置文件arch/$(ARCH)/Makefile机器体系Makefile文件scripts/Makefile.*所有内核Makefiles共用规则kbuild Makefiles其它Makefile文件第39页,共70页。Makefile定义编译链接规则、位于linux源代码各目录配置文件(config.in或kconfig)提供内核的配置选择和设置配置工具文本命令行工具:make config基于ncurse的图形工具:make menuconfig基于X11的图形工具:m

23、ake xconfig基于gtk+的图形工具:make gconfig创建默认配置:make defconfig配置工具输出文件.config文件:用#include包括到主Makefile中include/linux/autoconf.h:用#include包括到各个.c文件每个.c文件都有代码项40Linux内核配置系统组成Linux内核环境第40页,共70页。采用GNU编译工具对.config中的源文件列表编译完成内核文件的配置、依赖关系及模块的生成,随后调用Rules.make编译文件Rules.make定义所有Makefile共用的编译规则Makefile支持的make命令make

24、mrproper:检查.o文件及文件依赖关系的正确性make config:配置内核并生成配置文件make dep:根据配置文件创建相应的依赖关系树make clean:清除旧版本的目标文件make zImage:编译并用gzip压缩成1MB以下的内核未压缩的文件是vmlinuzmake bzImage:编译并用gzip压缩成1MB以上的内核make modules:编译模块make modules_install :安装模块depmod a:生成模块之间的依赖关系41主Makefile功能Linux内核环境第41页,共70页。准备阶段下载源码:将源码解压到/usr/src目录下tar xvj

25、f linux-x.y.z.tar.bz2tar xvzf linux-x.y.z.tar.gz解压位置:linux-x.y.z目录下建立内核编译环境ln sf linux-x.y.z linux cd /usr/includerm -rf asm linux scsiln -sf /usr/src/linux/include/asm-i386 asmln -sf /usr/src/linux/include/linux linuxln -sf /usr/src/linux/include/scsi scsi42Linux内核的编译、安装过程Linux内核环境第42页,共70页。配置内核检查文

26、件依赖关系正确性:make mrproper获取默认.config文件:cp /boot/config-uname -r .config生成配置文件:make config创建依赖关系树:make dep清除旧版本目标文件:make clean生成压缩形式内核文件:make bzImage或make zImage编译后的文件在/usr/src/linux/arch/i386/boot目录下编译、安装内核编译内核:make编译模块:make modules安装模块:make modules_install生成模块依赖关系:depmod a安装内核:make install43Linux内核环境第

27、43页,共70页。配置启动文件将内核映像拷贝到合适位置,并按启动要求启动#cp /usr/src/linux/arch/i386/boot/zImage /boot/zImage-x.y.z#cp /usr/src/linux/System.map /boot/System.map-x.y.zln sf /boot/vmlinuz-x.y.z /boot/vmlinuzln sf /boot/System.map-x.y.z /boot/system.map系统正常启动时不会读这个符号表;主要是为了内核引导出错时便于调试/sbin/mkinitrd /boot/initrd-x.y.z.img

28、 x.y.z如果是LILO启动方式,编辑/etc/lilo.conf44Linux内核的编译、安装过程(续)Linux内核环境第44页,共70页。lilo.conf修改方法image=/boot/vmlinux-2.4.7-10/ 旧内核label=linuxread-onlyroot=/dev/hdalimage=/boot/zImage-x.y.z / 新内核label=newkernelread-onlyroot=/dev/hdal注意:必须运行lilo命令将激活新配置。如果是grub,则不需要。45Linux内核的编译、安装过程(续)第45页,共70页。46Linux系统的文件系统结构

29、/:文件系统结构的起始点/home:用户主目录/bin:标准指令和工具程序/usr :系统使用文件和指令/usr/bin:用户命令和工具程序/usr/sbin:系统管理员命令/usr/lib:编程语言库/usr/doc:Linux文档/usr/man:在线联机帮助手册/usr/spool:假脱机文件/sbin:管理员开启系统的命令/var:时变文件,例如邮箱文件/dev:设备文件接口/etc:系统配置文件及其它系统文件Linux内核环境第46页,共70页。 Linux网络操作系统的安装安装基本需求 存储空间=700MB,一般桌面系统需3GB存储空间处理器:x86和x86_64内存:=64MBC

30、D/DVD -ROM:执行光盘安装网卡:网络安装需要支持网络启动的网卡第47页,共70页。分区与文件系统磁盘与分区文件与文件系统支持Ext2、Ext3、vFat、NTFS、HPFSLinux的分区命名a) IDE硬盘命名为hd,SCSI硬盘命名为sd;b) 第一个磁盘命名为a,第二个磁盘命名为b,其余依此类推;第48页,共70页。c) 磁盘上第一个主分区命名为1,第二个主分区命名为2,其余依此类推;d) 磁盘上第一个逻辑分区命名为5,第二个逻辑分区命名为6,其余依此类推;例如:一台计算机中有一块IDE硬盘,分了三个分区,两个主分区,一个逻辑分区,则这三个分区的命名分别为什么?答:hda1、hd

31、a2、hda5。第49页,共70页。/binhome2home1bootvarwwwhtmlindex.htmldefault.cssLinux文件系统示例图磁盘2磁盘1第50页,共70页。Linux的安装方式光盘或者USB设备安装硬盘安装网络安装安装过程略。双系统安装方法GRUB引导WindowsWindows引导LinuxGRUB引导多个Linux第51页,共70页。 2 Linux网络参数的配置Linux系统中主要的网络参数有主机名、IP地址、子网掩码、网关、DNS服务器等。网络参数可以通过对相关配置文件的配置来完成设置,也可以通过Linux的图形界面来配置。 实际上,Linux中几乎所

32、有的配置都是通过配置文件来完成的,在图形界面下的配置其实也是对相关配置文件的配置。第52页,共70页。2.1 用命令行配置 在命令行状态下,网络参数的配置命令主要有ifconfig、ifup、ifdown等。下面举例说明这些命令在配置网络参数中的常见用法。(1)查看网络运行情况在命令行直接输入命令:ifconfig 该命令在屏幕上显示当前系统中网络参数的配置情况,如下图所示。第53页,共70页。第54页,共70页。主要显示信息: eth0:网络适配器(网卡)的网络接口,如果系统中有多个网卡,则以eth1、eth2递增编号。 Hwaddr:网卡的物理地址,是计算机中与网络硬件相关的惟一地址。由于

33、地址格式与所用介质的访问控制方法相关,又常称为MAC地址。 inet:网卡的IP地址。 bcast:网卡的广播地址。 mask:显示网卡的子网掩码。 lo:回环地址,一般此接口的IP地址都是。第55页,共70页。(2)为网络接口eth0配置IP地址 假设为网卡eth0配置IP地址:。 在命令行输入命令:ifconfig eth0 或ifconfig eth0 /24 注意:各参数必须用空格隔开。(3)激活网络接口eth0 在命令行输入命令:ifconfig eth0 up或 ifup eth0第56页,共70页。(4)关闭网络接口eth0 在命令行输入命令:ifconfig eth0 down

34、或 ifdown eth0 (5)将网络接口eth0设置为动态获取IP地址 命令:ifconfig eth0 dynamic(6)为系统添加缺省网关54 命令:route add default gw 54第57页,共70页。2.2 直接修改配置文件通过命令可以快捷地进行网络参数的配置,但系统重新启动后,所设置的网络参数将丢失。直接修改配置文件可以解决该问题。所有的配置文件都在/etc目录下。以下是几个主要配置文件。第58页,共70页。(1)文件/etc/sysconfig/network内容如下:NETWORKING=yesHOSTNAME=localhost.localdomain说明 N

35、ETWORKING:定义在系统启动时是否启动网络,如果不希望启动则设定为no。 HOSTNAME:定义主机的名称。第59页,共70页。(2)文件/etc/sysconfig/network-scripts/ifcfg-eth0,内容如下:DEVICE=eth0BOOTPROTO=noneONBOOT=yesUSERCTL=noPEERDNS=noTYPE=EthernetIPADDR=NETMASK=GATEWAY=54NETWORK=BROADCAST=55第60页,共70页。说明 DEVICE:定义本文件所对应的网络接口。 BOOTPROTO:定义系统启动时此本网络接口是否使用bootp协

36、议,即是否动态获得IP地址。如果希望动态获得IP地址则设为“BOOTPROTO=dhcp”。 ONBOOT:定义系统启动时是否启动此网络接口。 USERCTL:定义用户是否可以启动本接口。如果设为“yes”,则所有用户都可以启动或禁用此接口,如果设为“no”则只有root用户才可以启动或者禁用此接口。 PEERDNS:是否设置PEERDNS,一般不需要设置。 TYPE:定义此网络接口的格式,这里为以太网格式。(余下的较直观。)第61页,共70页。(3)文件/etc/resolv.conf内容如下:search nameserver nameserver 52定义DNS服务器注意:对配置文件的修

37、改要借助编辑器第62页,共70页。2.3 在图形界面下配置网络参数选择“主菜单系统设置网络”选项,弹出“网络配置”对话框进行配置。这里配置的参数实际上是直接对以上介绍的配置文件进行修改。因此,从本质上来说,对文件的配置与图形下的配置相同。注意:无论用哪种方法配置网络参数,都应重新启动网络服务,以使得所做的改动生效。在图形界面中可以选择“主菜单系统设置服务器设置服务”选项,也可以用命令/etc/rc.d/init.d/network restart第63页,共70页。第64页,共70页。第65页,共70页。VMware中Linux的网络配置1. VMware中网络的三种工作模式 VMWare中网络提供了三种工作模式,分别是: bridged(桥接模式) host-only(主机模式) NAT(网络地址转换模式) 要合理应用它们,应该先了解一下这三种工作模式。第66页,共70页。bridged(桥接模式) 在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。 在桥接模式下,需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论