Linux操作系统及程序设计.ppt

上传人:牧羊曲112 文档编号:6511264 上传时间:2023-11-08 格式:PPT 页数:71 大小:1.01MB
返回 下载 相关 举报
Linux操作系统及程序设计.ppt_第1页
第1页 / 共71页
Linux操作系统及程序设计.ppt_第2页
第2页 / 共71页
Linux操作系统及程序设计.ppt_第3页
第3页 / 共71页
Linux操作系统及程序设计.ppt_第4页
第4页 / 共71页
Linux操作系统及程序设计.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《Linux操作系统及程序设计.ppt》由会员分享,可在线阅读,更多相关《Linux操作系统及程序设计.ppt(71页珍藏版)》请在三一办公上搜索。

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

2、AT计算机上,根据Andrew S.Tanenbaum教授的MINIX开发的一个OS内核。两个进程交替运行,分别打印A和B增加驱动程序、文件系统,Linux发展迅速,Linux的应用发展方向超级计算机系统通用计算机系统嵌入式计算机系统Linux与Unix的关系POSIX标准(1990/1996)Portable Operating System Interface of UNIX UNIX标准之争的产物,描述了系统调用、编程接口API、Shell机制和基本命令集、实时性、信号量机制等设计操作系统许多方面的规范。,自由软件自由软件基金会(FSF Free Software Foundation)

3、Richard M.Stallman FSF创始人自由软件是指其使用者对该软件有使用、复制、分发、研究、改写、再利用的自由。自由是关乎权利,而非价格Free指“自由”,而不是“免费”,Linux与自由软件和开源软件,自由权利自由之一:不论目的为何,都有使用该软件的自由。自由之二:有研究该软件如何工作的自由,并且可以改写软件,以符合使用者的需求。前提:可以获得该软件的源代码。自由之三:有重新散布该软件的自由,所以每个人都可以通过分发自由软件来帮助他人。自由之四:有改进该软件的自由,并且公开发布软件的改进版本,使整个社群都可以受益。前提:获得该软件的源代码。一般在软件许可(License)中说明。

4、,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,开源软件Open Source是一种软件开发方法旨在保证更好的质量、更高的可靠性、更大的灵活性、更低的费用,结束软件开发公司对使用者所进行的“掠夺”。开源也有自己的许可,其中重要的一条就是开源软件要公开源代码,这个许

5、可尚处于讨论之中。,Linux特点,类Unix(Unix-like)操作系统其他类UNIX系统包括Solaris、Mac OS等基于GPL(GNU Public License)的自由操作系统第一个版本发行于1991年主要用C语言编写,部分代码用汇编语言编写“Linux”在不同语境下的内涵不同Linux内核、Linux系统、Linux开发套件等严格来说,Linux指由Linux Torvalds维护(及通过主要镜像网站发布)的内核,14,Linux发展史,1991年11月,芬兰赫尔辛基大学的 Linus Torvalds编写了一个小程序(取名为Linux),发布在互联网上希望借此实现一个操作系

6、统“内核”1993年一批高水平网络黑客参与,诞生Linux 1.0 版 1994年Linux 的第一个商业版 Slackware 问世1996年美国国家标准技术局计算机系统实验室确认 Linux 版本符合 POSIX 标准2001年Linux2.4版内核发布 2003年Linux2.6版内核发布,Linux简介,15,Linux操作系统特征,符合POSIX标准规范的操作系统 Portable Operation System Interface of Unix:可移植的操作系统接口由IEEE开发,ANSI和ISO标准化具备现代操作系统的基本功能抢占式多任务处理,支持多用户图形用户接口异构硬件支

7、持支持SMP支持TCP/IP多体系结构支持,支持32/64位CPU拥有其他操作系统没有的特色NFS、VFS、高效的EXT系列文件系统等,Linux简介,代表一种开源文化免费软件,开放源代码自由软件,可在原有程序基础上开发自己的程序GNU/LinuxLinux仅指Linux内核Linux系统的大部分应用都建立在GNU软件之上核心结构Linux内核Linux ShellLinux文件系统Linux应用系统GNU Tools,16,Linux精髓,Linux简介,17,Linux的系统结构,用户应用程序,系统调用,硬件资源管理接口,Shell,库函数,内核实现,Linux简介,不区分的缺陷用户直接修

8、改操作系统的数据用户直接调用操作系统的内部函数用户直接操作外设用户任意读/写物理内存区分的意义禁止用户程序和底层硬件直接打交道如果用户程序往硬件控制寄存器写入不恰当的值,可能导致硬件无法正常工作禁止用户程序访问任意物理内存,否则可能会破坏其他程序的正常执行如果对核心内核所在的地址空间写入数据,会导致系统崩溃,18,划分用户态/内核态的必要性,Linux简介,现代CPU都有几种不同指令执行级别在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态在相应低级别执行状态下,代码的掌控范围会受到限制,只能在对应级别允许的范围内活动举例intel x86 CPU有四种

9、不同的执行级别0-3Linux只使用0级和3级分别表示内核态和用户态,19,CPU对用户态/和心态划分的支持,Linux简介,cs寄存器最低两位表明当前代码的特权级CPU每条指令的读取都是通过cs:eip这两个寄存器cs:代码段选择寄存器eip:偏移量寄存器上述判断由硬件完成在Linux中,地址空间是一个显著的标志0 xc0000000以上地址空间:只能在内核态下访问0 x00000000 0 xbfffffff的地址空间:两种状态下都可访问注意,这里的地址空间是逻辑地址而不是物理地址,20,用户态/和心态的区分方法,Linux简介,Linux是单内核、多模块系统Linux内核运行在单独的内核

10、地址空间所有操作系统功能作为一个模块实现在其内核中模块均运行在内核态,直接调用函数,无需消息传递具备模块化设计、抢占式内核(Linux 2.6支持,Linux 2.4用户级抢占)、支持内核线程及动态装载内核模块的能力与Unix主要区别Linux汲取了微内核设计思想(基于模块定制内核)Unix也是单内核系统Windows NT和Mach是微内核系统,21,Linux的内核特点,Linux简介,22,Linux单内核结构,Linux简介,23,Linux的内核版本,Linux内核版本指由Linux开发小组(Linus Torvalds总协调)开发出系统内核的版本号 Linux内核采用双树系统一棵是

11、稳定树,主要用于发行另一棵是非稳定树(开发树),用于产品开发和改进 Linux内核版本号由3位数字组成,r.x.y,第1位数字r为主版本号,第2位数字x为说明版本类型的次版本号:偶数表示产品化版本 奇数表示实验版本,第3位数字y为修改号,表示错误修补的次数,Linux简介,24,主流的Linux发行版本,Linux简介,25,Linux与Windows的区别,文件系统Linux需要一个挂载根目录/的ext分区和一个作为虚拟内存的swap分区Linux没有盘符,可通过设备名挂载,挂在信息在/dev/fstab,如mount-t ntfs/dev/sda1/mnt/win_cLinux将所有设备都

12、映射成/dev目录下的一个文件用户管理系统管理员是root,使用su命令切换,Linux简介,26,主要内容,Linux简介Linux内核环境Linux编程环境Linux的系统初始化Linux的程序执行机制,27,Linux内核核心组成,进程调度程序:负责控制进程访问CPU内核管理程序:支持虚拟内存及多进程安全共享主存系统虚拟文件系统:抽象异构硬件设备细节,提供公共文件接口网络接口:提供对多种组网标准和网络硬件的访问进程间通信:为进程之间的通信提供实现机制,Linux内核环境,28,Linux内核源码的获取,下载位置以GNU zip和bzip2形式发布安装位置一般安装在/usr/src/lin

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

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

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

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

17、系统调用大部分系统调用属于基础内核(Basic kernel),也可以以内核模块方式增加新的系统调用或者覆盖现有基于内核模块方式实现的系统调用,36,内核模块的使用,Linux内核环境,程序代码:helloworld.c编译、安装方法root#gcc-c helloworld.croot#insmod helloworld.oroot#lsmodroot#rmmod helloworld,37,模块示例,#define MODULE#include int init_module(void)printk(“Hello World!n”);return 0;void cleanup_module

18、(void)printk(“Goodbye!n”);,Linux内核环境,38,内核模块与应用程序的差别,C语言程序 模块运行 用户空间 内核空间入口 main()init_module()出口 无 cleanup_module()编译 gcc-c gcc-c-D_KERNEL_-DMODULE连接 gcc insmod运行 直接运行 insmod调试 gdb kdbug,kdb,kgdb等,Linux内核环境,控制需要编译到内核的二进制映象(启动时载入)和在需要时才装入的内核模块配置选项命名形式:CONFIG_FEATURE如CONFIG_SMP表示支持对称多处理器配置项选择模式二选一:ye

19、s或no三选一:yes、no或moduleYes选项表示把代码编译进主内核映象,而不作为模块Module意味该配置项被选定,但编译时该功能的实现代码是以模块形式生成驱动程序一般都用三选一形式字符串或整数不控制编译过程,只是指定内核源码可以访问的值,如定义静态变量一般以预处理宏的形式表示,39,Linux内核编译时的模块选配参数,Linux内核环境,内核编译主要工具文件内核编译后,会在/boot目录生产以下文件vmlinuz文件initrd.img文件System.map文件,40,Linux内核编译的基本架构,Makefile定义编译链接规则、位于linux源代码各目录配置文件(config.

20、in或kconfig)提供内核的配置选择和设置配置工具文本命令行工具:make config基于ncurse的图形工具:make menuconfig基于X11的图形工具:make xconfig基于gtk+的图形工具:make gconfig创建默认配置:make defconfig配置工具输出文件.config文件:用#include包括到主Makefile中include/linux/autoconf.h:用#include包括到各个.c文件每个.c文件都有代码项,41,Linux内核配置系统组成,Linux内核环境,采用GNU编译工具对.config中的源文件列表编译完成内核文件的配置

21、、依赖关系及模块的生成,随后调用Rules.make编译文件Rules.make定义所有Makefile共用的编译规则Makefile支持的make命令make mrproper:检查.o文件及文件依赖关系的正确性make config:配置内核并生成配置文件make dep:根据配置文件创建相应的依赖关系树make clean:清除旧版本的目标文件make zImage:编译并用gzip压缩成1MB以下的内核未压缩的文件是vmlinuzmake bzImage:编译并用gzip压缩成1MB以上的内核make modules:编译模块make modules_install:安装模块depmo

22、d a:生成模块之间的依赖关系,42,主Makefile功能,Linux内核环境,准备阶段下载源码:将源码解压到/usr/src目录下tar xvjf linux-x.y.z.tar.bz2解压位置:目录下建立内核编译环境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 scsi,43,Linux内核的编译、

23、安装过程,Linux内核环境,配置内核检查文件依赖关系正确性: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

24、install,44,Linux内核环境,配置启动文件将内核映像拷贝到合适位置,并按启动要求启动ln sf/boot/vmlinuz-x.y.z/boot/vmlinuzln sf/boot/System.map-x.y.z/boot/system.map系统正常启动时不会读这个符号表;主要是为了内核引导出错时便于调试如果是LILO启动方式,编辑/etc/lilo.conf,45,Linux内核的编译、安装过程(续),Linux内核环境,lilo.conf修改方法image=/boot/vmlinux-2.4.7-10/旧内核label=linuxread-onlyroot=/dev/hdal

25、image=/boot/zImage-x.y.z/新内核label=newkernelread-onlyroot=/dev/hdal注意:必须运行lilo命令将激活新配置。如果是grub,则不需要。,46,Linux内核的编译、安装过程(续),47,Linux系统的文件系统结构,/:文件系统结构的起始点/home:用户主目录/bin:标准指令和工具程序/usr:系统使用文件和指令/usr/bin:用户命令和工具程序/usr/sbin:系统管理员命令/usr/lib:编程语言库,/usr/doc:Linux文档/usr/man:在线联机帮助手册/usr/spool:假脱机文件/sbin:管理员开

26、启系统的命令/var:时变文件,例如邮箱文件/dev:设备文件接口/etc:系统配置文件及其它系统文件,Linux内核环境,Linux网络操作系统的安装,安装基本需求 存储空间=700MB,一般桌面系统需3GB存储空间处理器:x86和x86_64内存:=64MBCD/DVD-ROM:执行光盘安装网卡:网络安装需要支持网络启动的网卡,分区与文件系统磁盘与分区文件与文件系统支持Ext2、Ext3、vFat、NTFS、HPFSLinux的分区命名a)IDE硬盘命名为hd,SCSI硬盘命名为sd;b)第一个磁盘命名为a,第二个磁盘命名为b,其余依此类推;,c)磁盘上第一个主分区命名为1,第二个主分区命

27、名为2,其余依此类推;d)磁盘上第一个逻辑分区命名为5,第二个逻辑分区命名为6,其余依此类推;例如:一台计算机中有一块IDE硬盘,分了三个分区,两个主分区,一个逻辑分区,则这三个分区的命名分别为什么?答:hda1、hda2、hda5。,Linux的安装方式光盘或者USB设备安装硬盘安装网络安装安装过程略。双系统安装方法GRUB引导WindowsWindows引导LinuxGRUB引导多个Linux,2 Linux网络参数的配置,Linux系统中主要的网络参数有主机名、IP地址、子网掩码、网关、DNS服务器等。网络参数可以通过对相关配置文件的配置来完成设置,也可以通过Linux的图形界面来配置。

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

29、关,又常称为MAC地址。inet:网卡的IP地址。bcast:网卡的广播地址。mask:显示网卡的子网掩码。lo:回环地址,一般此接口的IP地址都是。,(2)为网络接口eth0配置IP地址 假设为网卡eth0配置IP地址:。在命令行输入命令:或 注意:各参数必须用空格隔开。(3)激活网络接口eth0 在命令行输入命令:ifconfig eth0 up或 ifup eth0,(4)关闭网络接口eth0 在命令行输入命令:ifconfig eth0 down或 ifdown eth0(5)将网络接口eth0设置为动态获取IP地址 命令:ifconfig eth0 dynamic(6)为系统添加缺省

30、网关 命令:,2.2 直接修改配置文件通过命令可以快捷地进行网络参数的配置,但系统重新启动后,所设置的网络参数将丢失。直接修改配置文件可以解决该问题。所有的配置文件都在/etc目录下。以下是几个主要配置文件。,(1)文件/etc/sysconfig/network内容如下:NETWORKING=yesHOSTNAME=localhost.localdomain说明 NETWORKING:定义在系统启动时是否启动网络,如果不希望启动则设定为no。HOSTNAME:定义主机的名称。,(2)文件/etc/sysconfig/network-scripts/ifcfg-eth0,内容如下:DEVICE

31、=eth0BOOTPROTO=noneONBOOT=yesUSERCTL=noPEERDNS=noTYPE=Ethernet,说明 DEVICE:定义本文件所对应的网络接口。BOOTPROTO:定义系统启动时此本网络接口是否使用bootp协议,即是否动态获得IP地址。如果希望动态获得IP地址则设为“BOOTPROTO=dhcp”。ONBOOT:定义系统启动时是否启动此网络接口。USERCTL:定义用户是否可以启动本接口。如果设为“yes”,则所有用户都可以启动或禁用此接口,如果设为“no”则只有root用户才可以启动或者禁用此接口。PEERDNS:是否设置PEERDNS,一般不需要设置。TYP

32、E:定义此网络接口的格式,这里为以太网格式。(余下的较直观。),(3)文件/etc/resolv.conf内容如下:定义DNS服务器注意:对配置文件的修改要借助编辑器,2.3 在图形界面下配置网络参数选择“主菜单系统设置网络”选项,弹出“网络配置”对话框进行配置。这里配置的参数实际上是直接对以上介绍的配置文件进行修改。因此,从本质上来说,对文件的配置与图形下的配置相同。注意:无论用哪种方法配置网络参数,都应重新启动网络服务,以使得所做的改动生效。在图形界面中可以选择“主菜单系统设置服务器设置服务”选项,也可以用命令/etc/rc.d/init.d/network restart,VMware中

33、Linux的网络配置,1.VMware中网络的三种工作模式 VMWare中网络提供了三种工作模式,分别是:bridged(桥接模式)host-only(主机模式)NAT(网络地址转换模式)要合理应用它们,应该先了解一下这三种工作模式。,bridged(桥接模式)在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。在桥接模式下,需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局

34、域网的网关或路由器访问互联网。使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。如果想利用VMWare在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式。,host-only(主机模式)在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时就可采用host-only模式。在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。提示:在host-only模式下,虚拟系统和宿主机器系统是可以相互通信的,相当于这两台机器通过双绞线互连。在host-only模式下,虚拟系统的TCP/IP配置信息(如IP

35、地址、网关地址、DNS服务器等),都是由VMnet1(host-only)虚拟网络的DHCP服务器来动态分配的。如果想利用VMWare创建一个与网内其他机器相隔离的虚拟系统,进行某些特殊的网络调试工作,可以选择host-only模式。,NAT(网络地址转换模式)使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,不需要进行任

36、何其他的配置,只需要宿主机器能访问互联网即可。如果想利用VMWare安装一个新的虚拟系统就能直接访问互联网,建议采用NAT模式。提示:NAT模式下的VMnet8,host-only模式下的VMnet1,以及bridged模式下的VMnet0虚拟网络,都是由VMWare虚拟机自动配置而生成的,不需要用户自行设置。VMnet8和VMnet1提供DHCP服务,VMnet0虚拟网络则不提供。,软件包管理命令rpm通用参数,如:-v 显示附加信息;-vv 显示调式信息;安装rpm格式包的文件,语法:rpm-i(或-install)选项file1.rpm.fileN.rpm-h 安装时输出hash记号(#)删除以rpm安装的软件包,语法:rpm-e(或-erase)选项 pkg1.pkgNrpm命令升级软件包,语法:rpm-U(或-upgrade)选项file1.rpm.fileN.rpm rpm命令查询已安装软件包,语法:rpm-q(或-query)选项-a 查询所有已安装的软件包 rpm命令校验已安装软件包语法:rpm-V(或-verify,or-y)选项rpm命令校验软件包中的文件,语法:rpm-K(或-checksig)选项file1.rpm.fileN.rpm,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号