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

上传人:max****ui 文档编号:6376573 上传时间:2020-02-24 格式:PPT 页数:71 大小:1.60MB
返回 下载 相关 举报
Linux操作系统及程序设计.ppt_第1页
第1页 / 共71页
Linux操作系统及程序设计.ppt_第2页
第2页 / 共71页
Linux操作系统及程序设计.ppt_第3页
第3页 / 共71页
点击查看更多>>
资源描述
Linux操作系统及程序设计 教学目标 掌握Linux系统组成特点 常用命令和使用方法 深入了解和掌握Linux系统的内部结构 编译 调试和运行系统程序的方法 对Linux操作系统建立一个全面 系统的认识 进而对现代操作系统的设计方法和有较全面的认识 为进一步学习和应用打下基础 教学主要内容 Linux系统基本使用 shell及其编程 Linux文件系统 多进程与多线程程序设计 进程间通信 教学时数 讲解辅助下的实验30学时 第一讲Linux简介初步掌握Linux系统安装 实验环境构建和基本特点 Linux概述 Linux网络操作系统1990年 LinusTorvalds在一台386AT计算机上 根据AndrewS Tanenbaum教授的MINIX开发的一个OS内核 两个进程交替运行 分别打印A和B增加驱动程序 文件系统 Linux发展迅速 Linux的应用发展方向超级计算机系统通用计算机系统嵌入式计算机系统Linux与Unix的关系POSIX标准 1990 1996 PortableOperatingSystemInterfaceofUNIXUNIX标准之争的产物 描述了系统调用 编程接口API Shell机制和基本命令集 实时性 信号量机制等设计操作系统许多方面的规范 自由软件自由软件基金会 FSF FreeSoftwareFoundation RichardM Stallman FSF创始人自由软件是指其使用者对该软件有使用 复制 分发 研究 改写 再利用的自由 自由是关乎权利 而非价格Free指 自由 而不是 免费 Linux与自由软件和开源软件 自由权利自由之一 不论目的为何 都有使用该软件的自由 自由之二 有研究该软件如何工作的自由 并且可以改写软件 以符合使用者的需求 前提 可以获得该软件的源代码 自由之三 有重新散布该软件的自由 所以每个人都可以通过分发自由软件来帮助他人 自由之四 有改进该软件的自由 并且公开发布软件的改进版本 使整个社群都可以受益 前提 获得该软件的源代码 一般在软件许可 License 中说明 GNU项目GNU sNotUnix 有点奇怪 是什么意思呢 GNUGPL GNUGeneralPublicLicenseGNU读作g nooGNU是一个类Unix操作系统采用Linux作为内核RichardStallman专门写了一篇文章讲述来试图澄清Linux与GNU项目的关系 LinuxandtheGNUProject 典型的桌面环境 GNOME KDE 开源软件OpenSource是一种软件开发方法旨在保证更好的质量 更高的可靠性 更大的灵活性 更低的费用 结束软件开发公司对使用者所进行的 掠夺 开源也有自己的许可 其中重要的一条就是开源软件要公开源代码 这个许可尚处于讨论之中 Linux特点 类Unix Unix like 操作系统其他类UNIX系统包括Solaris MacOS等基于GPL GNUPublicLicense 的自由操作系统第一个版本发行于1991年主要用C语言编写 部分代码用汇编语言编写 Linux 在不同语境下的内涵不同Linux内核 Linux系统 Linux开发套件等严格来说 Linux指由LinuxTorvalds维护 及通过主要镜像网站发布 的内核 14 Linux发展史 1991年11月 芬兰赫尔辛基大学的LinusTorvalds编写了一个小程序 取名为Linux 发布在互联网上希望借此实现一个操作系统 内核 1993年一批高水平网络黑客参与 诞生Linux1 0版1994年Linux的第一个商业版Slackware问世1996年美国国家标准技术局计算机系统实验室确认Linux版本1 2 13符合POSIX标准2001年Linux2 4版内核发布2003年Linux2 6版内核发布 Linux简介 15 Linux操作系统特征 符合POSIX标准规范的操作系统PortableOperationSystemInterfaceofUnix 可移植的操作系统接口由IEEE开发 ANSI和ISO标准化具备现代操作系统的基本功能抢占式多任务处理 支持多用户图形用户接口异构硬件支持支持SMP支持TCP IP多体系结构支持 支持32 64位CPU拥有其他操作系统没有的特色NFS VFS 高效的EXT系列文件系统等 Linux简介 代表一种开源文化免费软件 开放源代码自由软件 可在原有程序基础上开发自己的程序GNU LinuxLinux仅指Linux内核Linux系统的大部分应用都建立在GNU软件之上核心结构Linux内核LinuxShellLinux文件系统Linux应用系统GNUTools 16 Linux精髓 Linux简介 17 Linux的系统结构 用户应用程序 系统调用 硬件资源管理接口 Shell 库函数 内核实现 Linux简介 不区分的缺陷用户直接修改操作系统的数据用户直接调用操作系统的内部函数用户直接操作外设用户任意读 写物理内存区分的意义禁止用户程序和底层硬件直接打交道如果用户程序往硬件控制寄存器写入不恰当的值 可能导致硬件无法正常工作禁止用户程序访问任意物理内存 否则可能会破坏其他程序的正常执行如果对核心内核所在的地址空间写入数据 会导致系统崩溃 18 划分用户态 内核态的必要性 Linux简介 现代CPU都有几种不同指令执行级别在高执行级别下 代码可以执行特权指令 访问任意的物理地址 这种CPU执行级别就对应着内核态在相应低级别执行状态下 代码的掌控范围会受到限制 只能在对应级别允许的范围内活动举例intelx86CPU有四种不同的执行级别0 3Linux只使用0级和3级分别表示内核态和用户态 19 CPU对用户态 和心态划分的支持 Linux简介 cs寄存器最低两位表明当前代码的特权级CPU每条指令的读取都是通过cs eip这两个寄存器cs 代码段选择寄存器eip 偏移量寄存器上述判断由硬件完成在Linux中 地址空间是一个显著的标志0 xc0000000以上地址空间 只能在内核态下访问0 x00000000 0 xbfffffff的地址空间 两种状态下都可访问注意 这里的地址空间是逻辑地址而不是物理地址 20 用户态 和心态的区分方法 Linux简介 Linux是单内核 多模块系统Linux内核运行在单独的内核地址空间所有操作系统功能作为一个模块实现在其内核中模块均运行在内核态 直接调用函数 无需消息传递具备模块化设计 抢占式内核 Linux2 6支持 Linux2 4用户级抢占 支持内核线程及动态装载内核模块的能力与Unix主要区别Linux汲取了微内核设计思想 基于模块定制内核 Unix也是单内核系统WindowsNT和Mach是微内核系统 21 Linux的内核特点 Linux简介 22 Linux单内核结构 Linux简介 23 Linux的内核版本 Linux内核版本指由Linux开发小组 LinusTorvalds总协调 开发出系统内核的版本号Linux内核采用双树系统一棵是稳定树 主要用于发行另一棵是非稳定树 开发树 用于产品开发和改进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 tntfs dev sda1 mnt win cLinux将所有设备都映射成 dev目录下的一个文件用户管理系统管理员是root 使用su命令切换 Linux简介 26 主要内容 Linux简介Linux内核环境Linux编程环境Linux的系统初始化Linux的程序执行机制 27 Linux内核核心组成 进程调度程序 负责控制进程访问CPU内核管理程序 支持虚拟内存及多进程安全共享主存系统虚拟文件系统 抽象异构硬件设备细节 提供公共文件接口网络接口 提供对多种组网标准和网络硬件的访问进程间通信 为进程之间的通信提供实现机制 Linux内核环境 28 Linux内核源码的获取 下载位置www kernel org以GNUzip和bzip2形式发布安装位置一般安装在 usr src linux 不要将该源码树用于开发在编译自己编写的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 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子目录存放网络子系统 如各种网卡和网络规程驱动程序 security目录存放安全子系统代码 sound目录存放语音子系统代码 32 Linux核心源码的组织 续 Linux内核环境 init目录存放内核引导和初始化代码许多重要文件 如main c version c就位于该目录下 lib目录存放内核需要的通用工具性内核函数 如对出错信息的处理 它能够在引导时解压内核并装入主存 scripts目录存放编译内核所用脚本和用于系统配置的命令文件 documentation目录存放内核源代码文档 33 Linux核心源码的组织 续 Linux内核环境 采用模块化的内核配置系统内核模块 LoadableKernelModule 的概念模块实际上是一种目标对象文件 没有链接 不能独立运行但是其代码可以在系统运行时链接到系统中作为内核的一部分运行 或从内核中取下 从而可以动态扩充内核的功能 不需要重新编译内核 这种目标代码通常由一组函数和数据结构组成 34 Linux内核的配置组成 Linux内核环境 使得内核更加紧凑和灵活 可扩展修改模块时 不必全部重新编译整个内核系统如果需要使用新模块 只要编译相应的模块 然后将模块插入即可模块可以不依赖于某个固定的硬件平台模块的目标代码一旦被链接到内核 它的作用域和静态链接的内核目标代码完全等价 35 内核模块的优点 Linux内核环境 并不是所有地方都使用内核模块设备驱动程序文件系统驱动程序系统调用大部分系统调用属于基础内核 Basickernel 也可以以内核模块方式增加新的系统调用或者覆盖现有基于内核模块方式实现的系统调用 36 内核模块的使用 Linux内核环境 程序代码 helloworld c编译 安装方法root gcc chelloworld croot insmodhelloworld oroot lsmodroot rmmodhelloworld 37 模块示例 defineMODULE includeintinit module void printk HelloWorld n return0 voidcleanup module void printk Goodbye n Linux内核环境 38 内核模块与应用程序的差别 C语言程序模块运行用户空间内核空间入口main init module 出口无cleanup module 编译gcc cgcc c D KERNEL DMODULE连接gccinsmod运行直接运行insmod调试gdbkdbug kdb kgdb等 Linux内核环境 控制需要编译到内核的二进制映象 启动时载入 和在需要时才装入的内核模块配置选项命名形式 CONFIG FEATURE如CONFIG SMP表示支持对称多处理器配置项选择模式二选一 yes或no三选一 yes no或moduleYes选项表示把代码编译进主内核映象 而不作为模块Module意味该配置项被选定 但编译时该功能的实现代码是以模块形式生成驱动程序一般都用三选一形式字符串或整数不控制编译过程 只是指定内核源码可以访问的值 如定义静态变量一般以预处理宏的形式表示 39 Linux内核编译时的模块选配参数 Linux内核环境 内核编译主要工具文件内核编译后 会在 boot目录生产以下文件vmlinuz文件initrd img文件System map文件 40 Linux内核编译的基本架构 Makefile定义编译链接规则 位于linux源代码各目录配置文件 config in或kconfig 提供内核的配置选择和设置配置工具文本命令行工具 makeconfig基于ncurse的图形工具 makemenuconfig基于X11的图形工具 makexconfig基于gtk 的图形工具 makegconfig创建默认配置 makedefconfig配置工具输出文件 config文件 用 include包括到主Makefile中include linux autoconf h 用 include包括到各个 c文件每个 c文件都有代码项 41 Linux内核配置系统组成 Linux内核环境 采用GNU编译工具对 config中的源文件列表编译完成内核文件的配置 依赖关系及模块的生成 随后调用Rules make编译文件Rules make定义所有Makefile共用的编译规则Makefile支持的make命令makemrproper 检查 o文件及文件依赖关系的正确性makeconfig 配置内核并生成配置文件makedep 根据配置文件创建相应的依赖关系树makeclean 清除旧版本的目标文件makezImage 编译并用gzip压缩成1MB以下的内核未压缩的文件是vmlinuzmakebzImage 编译并用gzip压缩成1MB以上的内核makemodules 编译模块makemodules install 安装模块depmod a 生成模块之间的依赖关系 42 主Makefile功能 Linux内核环境 准备阶段下载源码 www kernel org将源码解压到 usr src目录下tarxvjflinux x y z tar bz2tarxvzflinux x y z tar gz解压位置 linux x y z目录下建立内核编译环境ln sflinux x y zlinuxcd usr includerm rfasmlinuxscsiln sf usr src linux include asm i386asmln sf usr src linux include linuxlinuxln sf usr src linux include scsiscsi 43 Linux内核的编译 安装过程 Linux内核环境 配置内核检查文件依赖关系正确性 makemrproper获取默认 config文件 cp boot config uname r config生成配置文件 makeconfig创建依赖关系树 makedep清除旧版本目标文件 makeclean生成压缩形式内核文件 makebzImage或makezImage编译后的文件在 usr src linux arch i386 boot目录下编译 安装内核编译内核 make编译模块 makemodules安装模块 makemodules install生成模块依赖关系 depmod a安装内核 makeinstall 44 Linux内核环境 配置启动文件将内核映像拷贝到合适位置 并按启动要求启动 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 imgx y z如果是LILO启动方式 编辑 etc lilo conf 45 Linux内核的编译 安装过程 续 Linux内核环境 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 则不需要 46 Linux内核的编译 安装过程 续 47 Linux系统的文件系统结构 文件系统结构的起始点 home 用户主目录 bin 标准指令和工具程序 usr 系统使用文件和指令 usr bin 用户命令和工具程序 usr sbin 系统管理员命令 usr lib 编程语言库 usr doc Linux文档 usr man 在线联机帮助手册 usr spool 假脱机文件 sbin 管理员开启系统的命令 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 第二个主分区命名为2 其余依此类推 d 磁盘上第一个逻辑分区命名为5 第二个逻辑分区命名为6 其余依此类推 例如 一台计算机中有一块IDE硬盘 分了三个分区 两个主分区 一个逻辑分区 则这三个分区的命名分别为什么 答 hda1 hda2 hda5 Linux的安装方式光盘或者USB设备安装硬盘安装网络安装安装过程略 双系统安装方法GRUB引导WindowsWindows引导LinuxGRUB引导多个Linux 2Linux网络参数的配置 Linux系统中主要的网络参数有主机名 IP地址 子网掩码 网关 DNS服务器等 网络参数可以通过对相关配置文件的配置来完成设置 也可以通过Linux的图形界面来配置 实际上 Linux中几乎所有的配置都是通过配置文件来完成的 在图形界面下的配置其实也是对相关配置文件的配置 2 1用命令行配置在命令行状态下 网络参数的配置命令主要有ifconfig ifup ifdown等 下面举例说明这些命令在配置网络参数中的常见用法 1 查看网络运行情况在命令行直接输入命令 ifconfig该命令在屏幕上显示当前系统中网络参数的配置情况 如下图所示 主要显示信息 eth0 网络适配器 网卡 的网络接口 如果系统中有多个网卡 则以eth1 eth2 递增编号 Hwaddr 网卡的物理地址 是计算机中与网络硬件相关的惟一地址 由于地址格式与所用介质的访问控制方法相关 又常称为MAC地址 inet 网卡的IP地址 bcast 网卡的广播地址 mask 显示网卡的子网掩码 lo 回环地址 一般此接口的IP地址都是127 0 0 1 2 为网络接口eth0配置IP地址假设为网卡eth0配置IP地址 192 168 1 1 在命令行输入命令 ifconfigeth0192 168 1 1或ifconfigeth0192 168 1 1 24注意 各参数必须用空格隔开 3 激活网络接口eth0在命令行输入命令 ifconfigeth0up或ifupeth0 4 关闭网络接口eth0在命令行输入命令 ifconfigeth0down或ifdowneth0 5 将网络接口eth0设置为动态获取IP地址命令 ifconfigeth0dynamic 6 为系统添加缺省网关192 168 1 254命令 routeadddefaultgw192 168 1 254 2 2直接修改配置文件通过命令可以快捷地进行网络参数的配置 但系统重新启动后 所设置的网络参数将丢失 直接修改配置文件可以解决该问题 所有的配置文件都在 etc目录下 以下是几个主要配置文件 1 文件 etc sysconfig network内容如下 NETWORKING yesHOSTNAME localhost localdomain说明 NETWORKING 定义在系统启动时是否启动网络 如果不希望启动则设定为no HOSTNAME 定义主机的名称 2 文件 etc sysconfig network scripts ifcfg eth0 内容如下 DEVICE eth0BOOTPROTO noneONBOOT yesUSERCTL noPEERDNS noTYPE EthernetIPADDR 192 168 1 1NETMASK 255 255 255 0GATEWAY 192 168 0 254NETWORK 192 168 1 0BROADCAST 192 168 1 255 说明 DEVICE 定义本文件所对应的网络接口 BOOTPROTO 定义系统启动时此本网络接口是否使用bootp协议 即是否动态获得IP地址 如果希望动态获得IP地址则设为 BOOTPROTO dhcp ONBOOT 定义系统启动时是否启动此网络接口 USERCTL 定义用户是否可以启动本接口 如果设为 yes 则所有用户都可以启动或禁用此接口 如果设为 no 则只有root用户才可以启动或者禁用此接口 PEERDNS 是否设置PEERDNS 一般不需要设置 TYPE 定义此网络接口的格式 这里为以太网格式 余下的较直观 3 文件 etc resolv conf内容如下 nameserver192 168 1 1nameserver192 168 1 252定义DNS服务器注意 对配置文件的修改要借助编辑器 2 3在图形界面下配置网络参数选择 主菜单 系统设置 网络 选项 弹出 网络配置 对话框进行配置 这里配置的参数实际上是直接对以上介绍的配置文件进行修改 因此 从本质上来说 对文件的配置与图形下的配置相同 注意 无论用哪种方法配置网络参数 都应重新启动网络服务 以使得所做的改动生效 在图形界面中可以选择 主菜单 系统设置 服务器设置 服务 选项 也可以用命令 etc rc d init d networkrestart VMware中Linux的网络配置 1 VMware中网络的三种工作模式VMWare中网络提供了三种工作模式 分别是 bridged 桥接模式 host only 主机模式 NAT 网络地址转换模式 要合理应用它们 应该先了解一下这三种工作模式 bridged 桥接模式 在这种模式下 VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机 它可以访问网内任何一台机器 在桥接模式下 需要手工为虚拟系统配置IP地址 子网掩码 而且还要和宿主机器处于同一网段 这样虚拟系统才能和宿主机器进行通信 同时 由于这个虚拟系统是局域网中的一个独立的主机系统 那么就可以手工配置它的TCP IP配置信息 以实现通过局域网的网关或路由器访问互联网 使用桥接模式的虚拟系统和宿主机器的关系 就像连接在同一个Hub上的两台电脑 如果想利用VMWare在局域网内新建一个虚拟服务器 为局域网用户提供网络服务 就应该选择桥接模式 host only 主机模式 在某些特殊的网络调试环境中 要求将真实环境和虚拟环境隔离开 这时就可采用host only模式 在host only模式中 所有的虚拟系统是可以相互通信的 但虚拟系统和真实的网络是被隔离开的 提示 在host only模式下 虚拟系统和宿主机器系统是可以相互通信的 相当于这两台机器通过双绞线互连 在host only模式下 虚拟系统的TCP IP配置信息 如IP地址 网关地址 DNS服务器等 都是由VMnet1 host only 虚拟网络的DHCP服务器来动态分配的 如果想利用VMWare创建一个与网内其他机器相隔离的虚拟系统 进行某些特殊的网络调试工作 可以选择host only模式 NAT 网络地址转换模式 使用NAT模式 就是让虚拟系统借助NAT 网络地址转换 功能 通过宿主机器所在的网络来访问公网 NAT模式下的虚拟系统的TCP IP配置信息是由VMnet8 NAT 虚拟网络的DHCP服务器提供的 无法进行手工修改 因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯 采用NAT模式最大的优势是虚拟系统接入互联网非常简单 不需要进行任何其他的配置 只需要宿主机器能访问互联网即可 如果想利用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
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!