linux操作系统及程序设计4试卷.ppt

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四讲 多进程编程 初步掌握Linux环境下进程和线程的概念、相关系统调用使用、多进程、线程编程基本方法,了解进程间通信的主要方式。;进程(process): 处于执行期的程序及其所包含资源的总称 程序:可执行程序代码 资源:打开文件、挂起信号、地址空间、数据段等 线程(thread) 进程中活动的对象 有独立的程序计数器、进程栈及一组进程寄存器 节省主存、减少管理开销、快速切换 ;从形态角度 一个进程可包含一个或多个线程 从调度角度 进程是资源分配的基本单位 线程是处理器调度的独立单位 从虚拟化角度 进程提供两种虚拟机制 虚拟处理器:进程独享处理器的假象 虚拟内存:进程拥有系统内所有内存资源的假象 线程之间可共享虚拟内存,但各自拥有独立虚拟处理器 对Linux系统而言,线程只是一种特殊的进程!;●用户空间 可执行映象:用户进程本身的程序和数据 进程堆栈:进程运行用户程序时使用的堆栈 进程控制/管理信息:如进程控制块等。 ●系统空间: 内核被映射到所有进程的系统空间中 只允许进程在核心态下访问 进程只能通过系统调用转换为核心态后,才能访问系统空间 ; 进程上下文 系统提供给进程处于动态变化的运行环境 系统上下文 系统完成自身任务时的运行环境,内核在系统上下文中执行时不会阻塞 ;进程描述符 数据结构:struct task_struct 定义位置:include/linux/sched.h 进程描述符向量结构 数据结构:task[NR_TASKS] 定义位置: include/linux/sched.h 定义格式 struct task_struct *task[NR_TASKS] = {init_task} #define NR_TASKS 512 说明:全局变量NR_TASKS记录系统可容纳进程数,默认大小是512 ;pid_t pid:内核通过pid标识每个进程 pid与进程描述符之间有严格的一一对应关系 pid_t实际上是一个int类型,范围:0 ~ 32767 最大值修改:/proc/sys/kernel/pid_max 生成新pid:get_pid() 获取进程pid 1)ps命令(用法?) 2)访问/proc/pid 3)getpid()?sys_getpid();Linux进程创建方法;fork()函数;;vfork()函数;exec()函数;exec()函数;;;进程等待wait()函数;进程等待wait()函数;进程终止exit()函数;●实验1:完成教科书P66创建进程实验。 ●如何实现等待指定的子进程结束? ●如何实现一个父进程创建多个(比如10个)子进程? ;●实践 调式更正教科书P49-50的示例程序,使其可以运行,真正实现一个程序启动另一个程序后自身仍然在运行。 ;Linux的线程描述机制;举例(包含两个线程的进程) 对于非Linux系统 有一个包含两个不同线程指针的进程描述符 每个线程指针描述其独占资源 对于Linux系统 创建两个进程并分配两个普通task_struct结构 建立两个进程时只要指定它们共享的某些资源 ;Linux的线程分类;Linux线程的创建; ;●实验2:完成教科书P67创建线程实验。 阅读教科书P61-64内容,了解线程同步的基本方法。 ●实验3:完成教科书P68利用多线程实现单词统计的实验。; 1 ;*;*;*;*;*;*;*;*;*;*;*;错误原因分析;练习;*;练习--改进;*;;线程的执行顺序;*;*;*;*;*;*;*;*;为什么要互斥---可重入函数;2)可重入函数: ;3)不可重入函数: ;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;;分析;本章知识点小结; 1)有一int型全局变量g初始值为0; 2)创建线程1,打印“thread1”,并将g设置为1 3)创建线程2,打印“thread2”,并将g设置为2 4)线程2需要在线程1退出后才能退出 5)主线程在检测到g从1变为2,或者从2变为1的时候退出(提示:在主线程中使用pthread_cond_wait,在线程1和线程2中发出signal)

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档