第5章 Linux内核简介.

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

高级服务器设计和实现 1 —— 基础与进阶 余锋
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
1 张惠娟 副教授 Linux 进程管理. 2 内容 进程组成 进程环境 进程管理内容 进程控制块 进程状态 进程调度 进程控制 进程通信.
Linux 系统. 操作系统发展需求 1 没有操作系统 2 简单批处理操作系统 3 多道程序设计的批处理 4 多道程序设计的分时操作系统 5 多处理机并行系统 6 网络操作系统 7 分布式操作系统.
进 程. “ 程序 ” 和 “ 进程 ” 进程是 OS 对 CPU 执行的程序的运行过程的一种抽象。进程有自 己的生命周期,它由于任务的启动而创建,随着任务的完成(或 终止)而消亡,它所占用的资源也随着进程的终止而释放。 Linux 内核中通常把进程称为任务,每个进程主要通过一个称为进程描 述符(
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
2017年3月5日 单片机原理与应用 背景知识调查.
第2章 文 件 系 统 2.1 文件系统及其分类 2.2 二级扩展文件系统ext2构成 2.3 虚拟文件系统VFS 2.4 缓冲区的缓存
实用操作系统概念 张惠娟 副教授 1.
Oracle数据库 Oracle 子程序.
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Hadoop I/O By ShiChaojie.
SVN的基本概念 柳峰
存储系统.
实践演练 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
辅导课程六.
网络常用常用命令 课件制作人:谢希仁.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
文件读写实践 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
逆向工程-汇编语言
如何生成设备节点 广州创龙电子科技有限公司
CPU结构和功能.
Windows 7 的系统设置.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
实验一、进程控制 一、实验目的 1、加深对进程的理解,进一步认识并发执行的实质; 2、分析进程争用资源现象,学习解决进程互斥的方法;
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
微机系统的组成.
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
分裂对象模型 C++ otcl.
实验七 安全FTP服务器实验 2019/4/28.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
信号量(Semaphore).
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
数据报分片.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
Google的云计算 分布式锁服务Chubby.
阻塞式模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
入侵检测技术 大连理工大学软件学院 毕玲.
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
Presentation transcript:

第5章 Linux内核简介

主要内容 Linux核心的一般结构 进程的概念、进程的调度和进程通信 文件系统的构成和管理 内存管理 设备驱动及中断处理

5.1 概 述 Linux系统大致可分为三层: 靠近硬件的底层是内核,即Linux操作系统常驻内存部分。 5.1 概 述 Linux系统大致可分为三层: 靠近硬件的底层是内核,即Linux操作系统常驻内存部分。 中间层是内核之外的shell层,即操作系统的系统程序部分。 最高层是应用层,即用户程序部分

从结构上看,Linux操作系统是采用单块结构的操作系统。 一般说来,可以将操作系统划分为内核和系统程序两部分。 ●进程控制系统用于进程管理、进程同步、进程通信、进程调度和内存管理等。 ●内存管理控制内存分配与回收。 ●文件系统管理文件、分配文件空间、管理空闲空间、控制对文件的访问并为用户检索数据。 ●Linux系统支持三种类型的硬件设备:字符设备、块设备和网络设备。 ●核心底层的硬件控制负责处理中断以及与机器通信。

5.2 进程管理 5.2.1 进程和线程的概念 1.进程及其状态 简单说来,进程就是程序的一次执行过程。 5.2 进程管理 5.2.1 进程和线程的概念 1.进程及其状态 简单说来,进程就是程序的一次执行过程。 进程至少要有三种基本状态。这三种基本状态是:运行态、就绪态和封锁态(或等待态)。 进程的状态可依据一定的条件和原因而变化

2.Linux进程状态

3.进程的模式和类型 在Linux系统中,进程的执行模式划分为用户模式和内核模式 按照进程的功能和运行的程序来分,进程划分为两大类:一类是系统进程,另一类是用户进程

4.Linux线程 Linux把线程定义为进程的“执行上下文” 具有一段可执行的程序、专用的系统堆栈空间、私有的“线程控制块”(即thread_struct数据结构) 缺少自己的存储空间

5.2.2 进程的结构 1.task_struct结构 task_struct结构包含下列几方面的信息: ·进程状态 ·调度信息 ·标志符 5.2.2 进程的结构 1.task_struct结构 task_struct结构包含下列几方面的信息: ·进程状态 ·调度信息 ·标志符 ·内部进程通讯 ·链接信息 ·时间和计时器 ·文件系统 ·虚拟内存 ·处理器信息

2.进程系统堆栈 每个进程都有一个系统堆栈,用来保存中断现场信息和进程进入内核模式后执行子程序(函数)嵌套调用的返回现场信息。 每个进程的系统堆栈和task_struct数据结构之间存在紧密联系,因而二者物理存储空间也连在一起 系统堆栈的大小静态确定,用户堆栈可在运行时动态扩展

5.2.3 对进程的操作 1.进程的创建 各个进程构成了树形的进程族系 5.2.3 对进程的操作 1.进程的创建 各个进程构成了树形的进程族系 内核在引导并完成了基本的初始化以后,就有了系统的第一个进程(即初始化进程,实际上是内核线程)。除此之外,所有其他的进程和内核线程都由这个原始进程或其子孙进程所创建。 除初始化进程外,其他进程都是用系统调用fork( )和clone( )创建的。 fork( )是全部复制 ,而clone( ) 有选择地复制

2.进程的等待 父进程可用系统调用wait3( )等待它的任一个子进程终止,也可以用系统调用wait4( )等待某个特定的子进程终止。 wait3( )算法如下: (1)如果父进程没有子进程,则出错返回。 (2)如果发现有一个终止的子进程,则取出子进程的进程号,把子进程的CPU使用时间等加到父进程上,释放子进程占用的task_struct和系统空间堆栈,以供新进程使用。 (3)如果发现有子进程,但都不处于终止态,则父进程睡眠,等待由相应的信号唤醒。

3.进程的终止 进程可使用系统调用exit( )终止自己 其实现算法如下: (1)撤消所有的信号量。 (2)释放其所有的资源,包括存储空间、已打开的文件、工作目录、信号处理表等。 (3)置进程状态为“终止态”(TASK_ZOMBIE)。 (4)向它的父进程发送子进程终止的信号。 (5)执行进程调度。

ELF可执行文件格式示意图 4.进程映像的更换 改换进程映像的工作很复杂,是由系统调用execve( )实现的,它用一个可执行文件的副本来覆盖该进程的内存空间。 ELF可执行文件格式示意图 execve( )系统调用的基本算法如下: (1)验证文件的可执行性,即用户 有权执行它。 (2)读文件头,检查它是一个可装入模块。 (3)释放原有的内存空间。 (4)按照可执行文件的要求分配新的内存空间,并装入内存。

5.2.4 进程调度 进程调度机制主要涉及到调度方式、调度时机和调度策略 1.调度方式 基本上采用“抢占式优先级”方式 5.2.4 进程调度 进程调度机制主要涉及到调度方式、调度时机和调度策略 1.调度方式 基本上采用“抢占式优先级”方式 2.调度策略——三种不同的调度策略 SCHED_FIFO——短实时进程,对时间性要求比较强 SCHED_RR——较长时间的实时进程,对应“时间片轮转法” SCHED_OTHER——交互式的分时进程,这类进程的优先权取决于两个因素:一个因素是进程剩余时间配额;另一个是进程的优先数nice ——优先数越小,其优先级越高 后台进程的优先级低于任何交互(前台)进程的优先级

3.调度时机 (1)当前进程调用系统调用nanosleep( )或者pause( ),使自己进入睡眠状态,主动让出一段时间的CPU使用权。 (2)进程终止,永久地放弃对CPU的使用。 (3)在时钟中断处理程序执行过程中,发现当前进程连续运行的时间过长。 (4)当唤醒一个睡眠进程时,发现被唤醒的进程比当前进程更有资格运行。 (5)一个进程通过执行系统调用来改变调度策略或者降低自身的优先权(如nice命令),从而引起立即调度。 4.调度算法

5.2.5 shell基本工作原理 它不属于内核部分, 而是在核心之外, 以用户态方式运行。 其基本功能是解释并 执行用户打入的各种 命令,实现用户与 Linux核心的接口。

5.3 文 件 系 统 5.3.1 ext2文件系统 ext2文件系统支持标准UNIX文件类型:普通文件、目录文件、特别文件和符号链接。 5.3 文 件 系 统 支持多种不同的文件系统,如:ext, FAT, ext2, ext3, MINIX, MS DOS, SYSV等。目前,Linux主要使用的文件系统是ext3。 5.3.1 ext2文件系统 ext2文件系统支持标准UNIX文件类型:普通文件、目录文件、特别文件和符号链接。 ext2文件系统可以管理特别大的分区。 ext2文件系统支持长文件名,最大长度为255个字符。 ext2文件系统为超级用户保留了一些数据块,约为5%。

1.ext2文件系统的物理结构

2.块组的构造 每个块组中包含超级块、组描述结构、块位图、索引节点位图、索引节点表和数据块。 (1)超级块(Superblock) 超级块中包含有文件系统本身的大小和形式的基本信息。 每个块组都一个超级块。 超级块中包含:幻数、修订级别 、安装计数和最大安装数 、块组号码 、数据块大小 、每组数据块的个数、空闲块 、空闲索引节点 、第一个索引节点 (2)块组描述结构(Block Group Descriptor) 每个数据块组都有一个描述它的数据结构,即块组描述结构。 包含以下信息:数据块位示图 、索引节点位示图、索引节点表 、空闲块数、空闲索引节点数和已用目录数。

3.索引节点(Inode) 索引节点又被称为I节点,每个文件都有惟一一个索引节点。ext2文件系统的索引节点起着文件控制块的作用,利用这种数据结构可对文件进行控制和管理。 索引节点有两种形式:盘索引节点(如ext2_inode)和内存索引节点(如inode)。 盘索引节点包括以下一些主要内容: (1)文件模式,描述文件属性和类型。 (2)文件属主信息,包括文件主标志号和同组用户标志号。 (3)文件大小,即文件的字节大小。 (4)时间戳,包括索引节点建立的时间、最近访问时间、最后修改时等。 (5)文件链接计数。 (6)数据块索引表。利用多重索引表的结构存放指向文件数据块的指针。 内存索引节点除了具有盘索引节点的主要信息外,还增添了反映该文件动态状态的项目

4.多重索引结构

5.ext2中的目录项 当创建一个文件时,就构成一个目录项,并添加到相应的目录文件中。一个目录文件可以包含很多目录项,每个目录项(如ext2文件系统的ext2_dir_entry_2)包含的信息有: ●索引节点号 ●目录项长度 ●名字长度 ●文件类型 ●文件名字

6.位示图 利用一串二进位的值来反映该块组中数据块的分配情况,也称作位向量(Bit Vector)法。 设下列数据块是空闲的: 2,3,4,5,8,9,10,11,12,13,17,18,25,26,27,... 则块位示图的表示为:100001100000011100111111000...

5.3.2 虚拟文件系统 1.VFS系统结构 VFS是建立在具体文件系 统之上的,它为用户程序 提供一个统一的、抽象的、 5.3.2 虚拟文件系统 1.VFS系统结构 VFS是建立在具体文件系 统之上的,它为用户程序 提供一个统一的、抽象的、 虚拟的文件系统界面。这 个抽象的界面主要由一组 标准的、抽象的有关文件 操作构成,以系统调用的 形式提供给用户程序

2.VFS超级块 每个安装的文件系统都有一个VFS超级块,其中包含以下主要信息: ●设备标识符 ●索引节点指针 ●数据块大小 ●超级块操作集 ●文件系统类型 ●文件系统的特殊信息 3.VFS索引节点 VFS中每个文件和目录都有一个且只有一个VFS索引节点

4.Linux文件系统的逻辑结构

5.文件系统的安装与拆卸 根文件系统一旦安装上,则在整个系统运行过程中是不能卸载的 其他的文件系统(例如, 由软盘构成的文件系统) 可以根据需要(如从硬盘 向软盘复制文件),作为 子系统动态地安装到 主系统中

6.VFS索引节点缓存和目录缓存 其基本思想是,VFS索引节点在数据结构上被链入不同的散列队列,具有相同散列值的VFS索引节点在同一队列中。设置一个散列表,其中每一项包含一个指向VFS索引节点散列队列的头指针。散列值是根据文件系统所在块设备的标志符和索引节点号码计算出来的 目录缓存也采用散列表的方法 进行管理。表中每一项都是一 个指针,指向有相同散列值的 目录缓存队列。散列值是利用 文件系统所在设备的号码和目 录名来计算的

7.数据块缓冲区 采用多重缓冲技术,来平滑和加快文件信息从内存到磁盘的传输 一个缓冲区由两部分组成:存放数据的缓冲区和一个缓冲控制块 缓冲区和缓冲控制块是一一对应的。系统通过缓冲控制块来实现对缓冲区的管理 所有处于“空闲”状态的buffer_head 都链入自由链中,它只有一条。具有相同散列值(是由设备的标志符和数据块的块号生成的)的缓冲区组成一条散列队列,可以有多个散列队列。

5.4 内 存 管 理 5.4.1 请求分页机制 Linux系统采用了虚拟内存管理机制,就是交换和请求分页存储管理技术 1.分页概念 5.4 内 存 管 理 Linux系统采用了虚拟内存管理机制,就是交换和请求分页存储管理技术 5.4.1 请求分页机制 1.分页概念 逻辑空间分页 内存空间分页 页面和内存块的大小是由硬件确定的 逻辑地址表示 内存分配原则 页表

2.请求分页的基本思想 请求分页提供虚拟存储器 在每一个页表项中增加一个状态位表示一个页面是否已装入内存块 如果地址转换机构遇到一个具有N状态的页表项时,便产生一个缺页中断

3.Linux的多级页表 Linux进程的虚存空间 Linux系统采用三级页表的方式

4.内存页的分配与释放 Linux系统采用两种方法来管理内存页:位图和链表 页组中内存页的数量依次按2的倍数递增

5.4.2 内存交换 内核的交换守护进程kswapd :有自己的进程控制块task_struct结构,它与其他进程一样受内核的调度。但是,它没有自己独立的地址空间,只使用系统空间,所以也把它称为线程。它的任务就是保证系统中有足够的空闲内存页。 当系统启动时,交换守护进程由内核的init(初始化)进程启动。被定时唤醒 。 所做的工作主要分为两部分:将若干不常用的活跃内存页面变为不活跃状态;清理不活跃的“脏”页面,或者回收一些内存页,使之成为空闲的内存页。 作为交换空间的交换文件实际就是普通文件,但它们所占的磁盘空间必须是连续的

5.5 进 程 通 信 5.5.1 信号机制 1.信号概念 信号(signal,称为软中断)机制是在软件层次上对中断机制的一种模拟 5.5 进 程 通 信 5.5.1 信号机制 1.信号概念 信号(signal,称为软中断)机制是在软件层次上对中断机制的一种模拟 该机构通常包括三部分: (1)信号的分类、产生和传送。 (2)对各种信号预先规定 的处理方式。 (3)信号的检测和处理。

2.信号分类 信号号码 符号表示 含义 1 SIGHUP 远程用户挂断 2 SIGINT 输入中断信号(Ctrl+C) 信号号码 符号表示 含义 1 SIGHUP 远程用户挂断 2 SIGINT 输入中断信号(Ctrl+C) 3 SIGQUIT 输入退出信号(Ctrl+\) 4 SIGILL 非法指令 5 SIGTRAP 遇到调试断点 6 SIGIOT IOT指令 7 SIGBUS 总线超时 8 SIGFPE 浮点异常 9 SIGKILL 要求终止进程(不可屏蔽) 10 SIGUSR1 用户自定义 11 SIGSEGV 越界访问内存 12 SIGUSR2 用户自定义 13 SIGPIPE 管道文件只有写进程,没有读进程 14 SIGALRM 定时报警信号 15 SIGTERM 软件终止信号 17 SIGCHLD 子进程终止 19 SIGSTOP 进程暂停运行 30 SIGPWR 电源故障

进程接到信号后,在一定时机(如中断处理末尾)做相应处理,可采取以下处理方式: 3.进程对信号可采取的处理方式 进程彼此间也可用系统提供的系统调用(如kill( ))发送信号 普通进程只能向具有相同uid和gid的进程发送信号或向相同进程组中的其他进程发送信号 进程接到信号后,在一定时机(如中断处理末尾)做相应处理,可采取以下处理方式: (1)忽略信号。进程可忽略收到的信号,但不能忽略SIGKILL和SIGSTOP信号。 (2)阻塞信号。进程可以选择对某些信号予以阻塞。 (3)由进程处理该信号。用户在trap命令中可以指定处理信号的程序,从而进程本身可在系统中标明处理信号的处理程序的地址。当发出该信号时,就由标明的处理程序进行处理。 (4)由系统进行默认处理。如上所述,系统内核对各种信号(除用户自定义之外)都规定了相应的处理程序。在默认情况下,信号就由内核处理,即执行内核预定的处理程序。

4.对信号的检测和处理流程 信号的检测与处理的过程如图所示。图中的①~⑤标出处理流程的顺序。从图中可以看出,信号的检测是在系统空间中进行,而对信号的处理却是在用户空间中执行。

5.5.2 管道文件 一个管道线就是连接两个进程的一个打开文件 5.5.2 管道文件 一个管道线就是连接两个进程的一个打开文件 由系统自动处理二者间的同步、调度和缓冲。管道文件允许两个进程按先入先出(FIFO)的方式传送数据,而它们可以彼此不知道对方的存在 每个管道只有 一个内存页面用 做缓冲区,该页 面是按环型缓冲 区的方式来使用 的。 Linux系统也支持 命名管道

5.5.3 System V IPC机制 Linux系统也支持UNIX System V版本中的三种进程间通信机制,它们是: 消息通信 共享内存 信号量

5.6 设 备 管 理 5.6.1 设备管理概述 所有设备都作为特别文件,从而在管理上就具有下列共性: 5.6 设 备 管 理 5.6.1 设备管理概述 所有设备都作为特别文件,从而在管理上就具有下列共性: (1)每个设备都对应文件系统中的一个索引节点,都有一个文件名。 (2)应用程序通常可以通过系统调用open( )打开设备文件,建立起与目标设备的连接。 (3)对设备的使用类似于对文件的存取。 (4)设备驱动程序是系统内核的一部分,它们必须为系统内核或者它们的子系统提供标准的接口。 (5)设备驱动程序利用一些标准的内核服务,如内存分配等。另外,大多数Linux设备驱动程序都可以在需要时装入内核,不需要时卸载下来。

设备驱动的分层结构

5.6.2 设备驱动程序和内核之间的接口 1.可安装模块 5.6.2 设备驱动程序和内核之间的接口 1.可安装模块 可安装模块是可以在系统运行时动态地安装和拆卸的内核模块,即经过编译但尚未连接的目标文件(后缀为.o)。 设备驱动程序或者与设备驱动紧密相关的部分(如文件系统)都是利用可安装模块实现的。 在通常情况下,用户利用系统提供的插入模块工具和移走模块工具来装卸可安装模块。

2.字符设备 用户对字符设备的使用就和存取普通文件一样。在应用程序中使用标准的系统调用来打开、关闭、读写字符设备。

3.块设备 对块设备的存取与对文件的存取方式一样,其实现机制也与字符设备使用的机制相同。

5.7 中断、异常和系统调用 5.7.1 中断处理 1.中断响应 一般说来,中断响应顺序执行下述三步动作: (1)中止当前程序的执行; 5.7 中断、异常和系统调用 5.7.1 中断处理 1.中断响应 一般说来,中断响应顺序执行下述三步动作:   (1)中止当前程序的执行;   (2)保存原程序的断点信息(主要是程序计数器PC和程序状态寄存器PS的内容);   (3)从中断控制器取出中断向量,转到相应的处理程序。

2.中断处理 核心对中断处理的顺序主要由以下动作完成: ⑴ 保存正在运行进程的各寄存器的内容,把它们放入核 心栈的新帧面中。 ⑵ 确定“中断源”或者核查中断发生,识别中断的类型(如时钟中断或者是盘中断)和中断的设备号(如哪个磁盘引起的中断)。系统接到中断后,就从机器那里得到一个中断号,它是检索中断向量表的位移。中断向量因机器而异,但通常都包括相应中断处理程序入口地址和中断处理时处理机的状态字。 ⑶ 核心调用中断处理程序,对中断进行处理。 ⑷ 中断处理完成并返回。中断处理程序执行完以后,核心便执行与机器相关的特定指令序列,恢复中断时寄存器内容和执行核心栈退栈,进程回到用户态。如果设置了重调度标志,则在本进程返回到用户态时做进程调度。

5.7.2 系统调用 系统调用象普通C函数调用那样出现在C程序中。只发生在用户空间。 5.7.2 系统调用 系统调用象普通C函数调用那样出现在C程序中。只发生在用户空间。 能把进程的状态从用户态变为核心态,Linux的系统调用是通过中断指令“INT 0x80”实现的。Linux内核在系统调用时是通过寄存器而不是堆栈传递参数。 所有的系统调用都集中在系统调用入口表中统一管理。系统调用入口表是一个函数指针数组(大小为256),以系统调用号为下标在该数组中找到相应的函数指针,进而就能确定用户使用的是哪一个系统调用。 当CPU执行到中断指令“INT 0x80”时,硬件就作出一系列响应,其动作与上述的中断响应相同

5.8 网 络 系 统 在Linux网络中,网络数据从 用户进程传输到网络设备需 要经历四个层次

5.8.1 socket 一个套接字就是与网络的一个连接 socket在逻辑上有三个特征(或要素): (1)网域。它表明一个插口用于哪一种网络。 (2)类型。它表明在网络中通信所遵循的模式。网络通信中有两种主要的模式,一种称为“有连接”模式,一种称为“无连接”模式。 (3)协议。它表明具体的网络规程。

5.8.2 网络分层结构