西安理工大学《linux操作系统》Linux-第二讲1.ppt
文本预览下载声明
* 计算机科学与工程学院 * Unix/Linux操作系统分析 地址:西安理工大学金花校区计算机学院206 电话E-mail:heixinhong@ 黑 新宏 第2 讲 关于Linux – 内核结构 内核结构总体介绍 内核源码 内核开发 2.1 内核介绍 操作系统是指在整个计算机系统中负责完成最基本功能和系统管理的部分,应包括: 内核 设备驱动程序 启动引导程序 命令行Shell或其他用户界面 基本的文件管理工具和系统工具 应用程序、内核与硬件的关系 应用程序1 应用程序2 应用程序3 系统调用接口 内核子程序 设备驱动程序 内核空间 用户空间 硬件 硬件 文件系统 进程管理 进程间通信 内存管理 网络 内核 模 块 系统调用 内核状态 用户状态 或 内核状态 应用软件 应用软件 用户状态 …… 处理器的运行状态 运行于用户空间, 执行用户进程 运行于内核空间, 处于进程上下文 (代表某个特定的进程执行) 运行于内核空间, 处于中断上下文, 与任何进程无关, (处理某个特定的中断) 处理器在任何指 时间点上的活动可以大体总结为三种情况 单内核就是整体上被作为一个单独的大过程实现,并同时运行在一个单独的地址空间。它具有简单高性能的特点,被大多数Unix系统所采用。 相反,微内核的功能被划分为独立的过程,每个过程为一个服务器,各种服务器之间通过进程间通信(IPC)机制互通消息,这避免了服务器之间的失效传递,Windows NT和Mac OS X采用微内核。 Linux是一个单内核,但同时采用模块化设计,支持抢占式内核线程以及动态装载内核模块的能力。而且, Linux让所有任务都运行在内核态,直接调用函数,无须消息传递,避免了IPC机制的开销。 Linux内核与传统Unix内核的比较-单内核与微内核 支持动态加载内核模块 支持对称多处理机制(SMP) 内核可以抢占 内核不区分线程和其他进程 提供具有设备类的面向对象设备模型,热插拔事件以及用户空间的设备文件系统 Linux内核与传统Unix内核的比较-Linux的改进 从版本号为6(这是一个开发版内核) Linux内核版本 主版本号为2 修订版本号为0 2.6.0 在Linux内核官方网站: 随时获取当前Linux内核的源代码,可以是完整的压缩形式,也可以是增量补丁形式 内核压缩以GNU ZIP(GZIP)和BZIP2两种格式发布,下载后可以对其解压。若是BZIP2格式 2.2 内核源码-获取源码 2.2 内核源码-获取源码 若是BZIP2格式,输入如下命令解压缩: $ tar xvjf linux-x.y.z.tar.bz2 若是GNU zip格式,运行如下命令解压缩: $ tar xvzf linux-x.y.z.tar.gz 2.3 内核源码-源码树 根目录及其描述 arch 特定体系结构的源码 crypto Crypto API(内核本身所用的加密 API ) documentation 内核源码文档 drivers 设备驱动文件 fs VFS和各种文件系统 include 内核头文件 init 内核引导和初始化 ipc 进程间通信代码 kernel 核心子系统(如调度程序) lib 通用内核函数 mm 内核管理子系统和VM net 网络子系统 scripts 编译内核所用的脚本 security Linux安全模块 sound 语音子系统 usr 早期用户空间代码 2.2 内核源码-编译内核 编译内核之前,需要进行配置和定制。可配置的各种选项以CONFIG_。。。的形式出现。选项可以二选一或三选一。 $ make config $ make menuconfig $ make xconfig $ make gconfig $ make defconfig $ make oldconfig $ make 配置 开始编译 2.2 内核源码-安装内核 具体安装方法与体系结构和引导工具有关 Grub与Lilo就不相同。 模块的安装独立于体系结构,运行一个命令即可自动完成。 一定要保证随时有1-2个可以正常启动的内核,以防止新编译的内核出问题 编译时会在根目录下创建一份符号对照表:System.map, 以将内核符号与其内存起始地址相对应 LILO(LInux Loader) GNU GRUB 2.3 内核开发的主要特点 内核编程时不能访问C库 必须使用GNU C 缺乏像用户空间编程那样的内存保护机制 很难使用浮点数 内核只有一个很小的定长堆栈 由于内核支持异步终端、抢占和SMP,因此必须时刻注意同步和并发 须考虑可移植性 2.3.1
显示全部