操作系统及程序设计.ppt
《操作系统及程序设计.ppt》由会员分享,可在线阅读,更多相关《操作系统及程序设计.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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 程序设计
链接地址:https://www.31ppt.com/p-6472724.html