- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式Linux操作系统第5章 操作系统进程 第1章 嵌入式Linux操作系统简介 第2章 Linux操作系统使用与系统配置 第3章 嵌入式Linux编程环境 第4章 存储管理 第5章 操作系统进程 第6章 进程间通信 第7章 中断与系统调用 第8章 文件管理 第9章 设备管理 第10章 嵌入式Linux的构建 课程安排: * 第5章 操作系统进程 5.1 进程的基本概念 5.2 Linux系统进程 5.3 Linux进程的创建 5.4 Linux进程相关的系统调用 5.5 Linux的进程调度 5.6 实时Linux 思考题 本章课程: * 5.1 进程的基本概念 在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单元都是进程。程序是一个普通文件,是机器代码指令和数据的集合,这些指令和数据存储在磁盘上的一个可执行映象(Executable Image)中。进程是由正文段(Text)、用户数据段(User Segment)以及系统数据段(System Segment)共同组成的一个执行环境,它是一个动态实体。相对的,程序是硬盘上存放的一个文件(代码)。当程序被运行,它也就成为了进程。 程序和进程的区别: * 5.1 进程的基本概念 进程的组成部分如下: 正文段:存放被执行的机器指令。这个段是只读的,它允许系统中正在运行的两个或多个进程之间能够共享这一代码,但是不能对其内容进行更改。 用户数据段:存放进程在执行时直接进行操作的所有数据,包括进程使用的全部变量在内。显然,这里包含的信息可以被改变。虽然进程之间可以共享正文段,但是每个进程需要有它自己的专用用户数据段。 系统数据段:该段有效地存放程序运行的环境。如上图所示,这也是进程和程序的不同的一个原因之一。 * 5.1 进程的基本概念 Windows和Linux操作系统都属于多任务系统,可以同时运行多个进程。我们经常使用的Windows任务管理器可以清楚的列出当前系统运行的进程 线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。对于操作系统来说,其调度单元是线程。一个进程至少包括一个线程,通常将该线程称为主线程。一个进程从主线程的执行开始进而创建一个或多个附加线程,就是所谓基于多线程的多任务。 在Linux 2.6内核中,Linux采用了更为先进的线程模型:NPTL(Native POSIX Thread Library)。与传统的LinuxThreads线程模型比,NPTL与POSIX标准兼容,并且性能提升明显,也具备更好的可伸缩性。对Linux内核而言,线程和进程没有本质的区别,它们都是调度的基本单位(实际上,Linux内核基于进程机制实现线程),本书重点介绍进程的内容。 * 5.2 Linux系统进程 5.2.1 Linux进程基础 Linux进程一般分为交互进程、批处理进程和守护进程三类。与Windows任务管理器一样,我们在Linux中可以通过ps命令查看系统当前的进程,例如下面的命令列出系统所有的进程: [root@localhost ~]# ps -aux 如果进程太多,可以把ps命令的输出保存到一个文件中: [root@localhost ~]# ps -aux? mypsout ps是Linux进程管理中最重要的一个命令,它提供了很多的选项参数 ps命令的选项参数 * 5.2 Linux系统进程 5.2.1 Linux进程基础 ps的输出列说明: Linux进程状态: * 5.2 Linux系统进程 5.2.2 进程描述符 Linux系统的每一个可调度实体都有一个进程描述符。进程描述符可以表示进程的各种状态信息,是内核操作进程的手段。进程描述符用task_struct数据结构表示,该结构包含了一个进程所拥有的各种信息,非常庞大,在内核文件的sched.h中定义。 每一个进程都有自己的进程号,该数字在系统中是唯一的,它存放在进程描述符的成员变量pid中: pid_t pid; 同样的,线程组号存放在成员变量tgid中: pid_t tpid; 这个结构大致可以分为以下几类: 进程状态。将纪录进程在等待、运行、或死锁; 调度信息。由哪个调度函数调度,怎样调度等; 进程的通讯状况; 因为要插入进程树,必须有联系父子兄弟的指针; 时间信息。比如计算好执行的时间,以便cpu 分配; 标号。决定改进程归属; 可以读写打开的一些文件信息; 进程上下文和内核上下文; 处理器上下文; 内存信息。 * 5.2 Linux系统进程 5.2.3 进程的状态与转换 进程对系统资源的竞争和进程之间的并发执行,使得一个进程在从创建到销毁的这个生命周期内要经历各种不同的状态的变化。一个进程的各种状态在t
文档评论(0)