- 2
- 0
- 约1.34万字
- 约 83页
- 2018-02-18 发布于浙江
- 举报
linux操作的系统及程序设计4
第四讲 多进程编程 初步掌握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()获取进程pid1)ps命令(用法?)2)访问/proc/pid3)getpid()?sys_getpid() ●实验1:完成教科书P66创建进程实验。●如何实现等待指定的子进程结束?●如何实现一个父进程创建多个(比如10个)子进程? ●实践 调式更正教科书P49-50的示例程序,使其可以运行,真正实现一个程序启动另一个程序后自身仍然在运行。 ●实验2:完成教科书P67创建线程实验。 阅读教科书P61-64内容,了解线程同步的基本方法。 ●实验3:完成教科书P68利用多线程实现单词统计的实验。 1 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) * mutex变量使用示例—修改前 Linux线程编程技术 * mutex变量使用示例—修改前 运行结果 main线程和function线程是交替运行,都可对run_now进行操作 Linux线程编程技术 * mutex变量使用示例—修改后 Linux线程编程技术 定义work_mutex变量,实现互斥访问 * mutex变量使用示例—修改后 Linux线程编程技术 * mutex变量使用示例—修改后 Linux线程编程技术 * mutex变量使用示例—修改后 Linux线程编程技术 * mutex变量使用示例—修改后 运行结果 Linux线程编程技术 * 条件变量 互斥锁的缺点 通过控制存取数据来实现线程同步 线程不断轮询条件是否满足(忙等),资源消耗大 条件变量 利用线程间共享的全局变量实现同步 条件变量使线程睡眠等待特定条件出现(无需轮询) 使用方法 通常条件变量和互斥锁同时使用 一个线程因等待“条件变量的条件成立”而挂起 另一个线程使“条件成立”(发送“条件成立”信号) Linux线程编程技术 * 条件变量典型使用步骤 申明/初始化需要同步的全局数据/变量(如count) 申明和初始化一个条件变量对象 申明和初始化对应的mutex 创建若干进程,并运行之 Linux线程编程技术 * 条件变量检测 条件
您可能关注的文档
- Java的面向对象程序设计第11章_输入流与输出流1.ppt
- Java程序设计实的验指导书2016年版本.doc
- Java程序设计期末考的试题.pdf
- JAVA第一次上的课笔记.docx
- java类加载器与的反射.docx
- JAVA第9章 输的入输出.ppt
- JAVA简单邮件发送客户的端程序设计.doc
- Java程序编写编译与的运行软件.pptx
- JAVA系统开发的规范.doc
- java类库和常用的类简介.ppt
- 腾讯安全沙龙:红队视角下的海外SRC猎场:战略、战术与突破.pdf
- 【icap】ETS的范围扩展:设计和政策挑战.docx
- bcg -美国最高法院关于关税的裁决对你的企业意味着什么 What Does the US Supreme Court Ruling on Tariffs Mean for Your Business.pdf
- 2026届甘肃兰州市高三下学期第一次模拟考试历史试卷(扫描版,含答案).docx
- bcg -零售银行如何让人工智能代理发挥作用 How Retail Banks Can Put AI Agents to Work.pdf
- 住宅项目规范解读(GB 55038-2025) -培训 - 房地产-2025.docx
- 盘扣式脚手架工程量自动计算表 -培训 -房地产-2025.pdf
- 广东省汕头市2024-2025学年高三下学期第一次模拟考试英语学试题(含答案).docx
- 品牌研究+_+2025+CAPSE中国航司品牌榜单.pdf
- 【银河专题】如何看待豆粕内外价差关系.pdf
最近下载
- 广州市教育局直属事业单位招聘教师笔试真题2024.docx VIP
- 2024人教版一年级数学下册 第三单元《100以内数的认识》教案.pdf VIP
- 新能源汽车检测与维修初级工理论知识考试题库.docx VIP
- 淋病培训课件.ppt VIP
- (核心素养目标)2.1 认识自己导学案(含解析)七年级道德与法治上册(统编版2024).docx VIP
- 华电集团机械类笔试题目及答案.doc VIP
- 2026年党支部在学习贯彻党的创新理论、加强党性锤炼等“对照五个方面”存在的问题及整改措施与党支部班子在对照执行上级组织决定、抓好自身建设等“六个对照方面”检查材料【2篇文】.docx VIP
- 2023-2024学年南京市第一中学英语高三上期末统考试题含解析.pdf VIP
- 《NFC技术概述》课件.ppt VIP
- 迷宫中级难度80个.pdf VIP
原创力文档

文档评论(0)