- 1、本文档共53页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章进程与存储管的理示例
第6章 进程与存储管理示例 Linux进程和存储管理简介 Linux进程结构 Linux进程控制 Linux进程调度 进程通信 Linux存储管理 第6章 进程与存储管理示例 6.1 Linux进程和存储管理简介 Linux系统的核心部分,从整体上分两大部分: “静”的文件系统 “动”的进程控制系统 两者之间通过数据结构和函数调用相互作用 Linux将一个程序看作是一个可执行文件,而把一个进程看作是程序的执行或执行中的程序实例 6.1 Linux进程和存储管理简介 Linux系统的启动 系统自举,并初始化各种数据结构与表格、初始化Linux核心的各个子系统等 建立0#进程或idle进程——唯一一个静态建立的进程 建立控制终端进程及运行shell进程的init进程(也称为1#进程) 不同终端创建相应的终端管理进程和shell进程 在建立shell进程之后,出现相应的提示符,等待用户输入命令 图6.1 Linux系统中各进程的关系 6.1 Linux进程和存储管理简介 Linux系统中各进程的关系 0#进程或idle进程——祖先进程 1#进程或init进程——终端管理进程与shell进程的父进程 用户进程——由Shell进程创建,是Shell进程的子孙进程 6.1 Linux进程和存储管理简介 0#进程运行在核心态,而init进程以及由init进程衍生的其他进程都可以在用户态和核心态下执行 用户态与核心态的区别 用户态下的进程只能存取它们自己的指令与数据,而核心态下的进程可以存取核心和用户地址 在不同的执行模式下,同一进程使用不同的堆栈,分别称为核心态堆栈与用户态堆栈。 6.1 Linux进程和存储管理简介 核心线程:只在核心态下执行的进程 核心线程有:0#进程、kblockd、ksoftirqd、kswapd等等,常用于处理一些周期性事务 6.1 Linux进程和存储管理简介 Linux的进程控制系统在逻辑上有4个模块 与文件系统的接口部分 进程本身的控制部分 进程间的控制部分 存储管理部分 6.1 Linux进程和存储管理简介 Linux调度模块 调度原则:抢占式、动态优先级调度法 调度过程schedule()和时钟中断修改进程的动态优先级 6.1 Linux进程和存储管理简介 Linux中引起进程调度的情况 当前执行进程申请资源未得到满足,自己调用sleep过程,放弃CPU,进入睡眠状态 为了与其他进程保持同步,调用wait过程,主动放弃CPU,进入睡眠状态 时间片用完,或某个更高优先级进程被唤醒,系统设置need_resched调度标志。当系统在核心态下的程序执行完毕,由核心态转入用户态时,即在中断陷入总控处理程序结束之前的瞬间,检查need_resched标志并进行调度 当前进程调用exit,自我终止时 6.1 Linux进程和存储管理简介 Linux进程通信 包括:用于控制各并发进程执行速度和资源共享与竞争的低级通信,以及进程间大量传递信息的高级通信 同步机制 在核心态下执行时,系统进程使用:信号量、自旋锁、关闭中断、使用原子操作等 在用户态下执行时,用户进程使用:软中断信号、管道、调用系统调用wait或sleep使得当前执行进程进入等待状态 6.1 Linux进程和存储管理简介 Linux存储管理模块 控制存储分配 管理进程在内存和外存之间的信息转移,以便所有进程都得到公平执行的机会 6.2 Linux进程结构 进程的概念 进程的虚拟地址结构 进程上下文 进程的状态和状态转换 6.2 Linux进程结构 介绍Linux进程的静态构成,定义进程上下文及其状态转换 6.2.1 进程的概念 进程的含义与特性 进程控制块:Linux的task_struct结构 标识进程状态用的状态位:5个状态编码 进程标识符 描述进程家族关系、组成成员的指针 …… 6.2 Linux进程结构 6.2.2 进程的虚拟地址结构 Linux进程的虚拟地址结构依赖于硬件 在Intel 80x86中,每个进程拥有一个4GB的虚拟空间。其中: 0~3GB的地址空间由用户进程使用,可以对其直接访问; 3~4GB的地址空间称为核心地址空间,在所有的进程中共享,存放核心的正文和数据,只被核心使用,用户进程不能直接访问 6.2.2 进程的虚拟地址结构 Linux将用户进程的所有地址空间有关的信息保存在mm_struct数据结构中,该结构的指针保存进程描述符中 Linux的进程由逻辑段组成,而这些逻辑段则存放在若干个虚拟区域中。正文、数据和栈分别存放于各自的区中。 Linux的区类似于段页式管理中的段,但区的虚拟地址是一维的 6.2.2 进程的虚拟地址结构 虚拟区域的管理 名称:区命名为vm_area,简写为VMA 管
文档评论(0)