




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西安郵電大學西安郵電大學 操作系统设计报告 题题 目 进程 线程 互斥锁目 进程 线程 互斥锁 院系名称 院系名称 计算机学院计算机学院 专业名称 专业名称 软件工程软件工程 班班 级 级 学生姓名 学生姓名 学号 学号 8 位 位 指导教师 指导教师 舒新峰舒新峰 设计起止时间 设计起止时间 2013 11 10 2013 11 20 一 一 设计目的设计目的 1 通过观察 分析实验现象 深入理解进程及进程在调度执行和内存空间 等方面的特点 掌握在 POSIX 规范中 fork 和 kill 系统调用的功能和 使用 2 通过观察 分析实验现象 深入理解线程及线程在调度执行和内存空间 等方面的特点 并掌握线程与进程的区别 掌握 POSIX 规范中 pthread create 函数的功能和使用方法 3 通过观察 分析实验现象 深入理解理解互斥锁的原理及特点掌握在 POSIX 规范中的互斥函数的功能及使用方法 二二 设计内容设计内容 1 创建一个进程 父子进程 相互交替执行 输出子进程号和进程 ID 2 创建三个线程 输出三个线程运行的次数和当前主线程运行次数以及三 个线程次数和 3 使用 POSIX 规范中的互斥函数 实现加锁解锁 4 信号量机制的方法 实现进程的加锁解锁 三 三 概要设计概要设计 1 生成一个进程 通过 switch 判断 来确定生成的进程 是子进程还是父进程 还是错误的 子进程号定义为全局变量 利 用 kill 杀死进程 退出程序 2 利用循环创建三个线程 do while 循环 每运行一次 输 出三个线程运行的次数 当输入 q 时候 退出程序 3 创建一个线程 在循环中进行申请资源 释放资源 加锁 以及解锁的操作 熟悉互斥锁的工作方式 4 4 详细设计详细设计 1 1 进程交替进行 进程交替进行 当程序执行到 for i 0 i child proc number i 循环后 调用 fork 函数创 建第一个子进程 然后父进程与该子进程交替执行 当子进程抢到 cpu 时继续 往下执行 case 0 语句中的 do something 语句 执行死循环 for 输出该 进程的相关内容 并 sleep 给其他进程抢占 cpu 的机会 这样就会使得进程 交替的执行 2 2 killkill 命令杀死进程命令杀死进程 while ch getchar q if isdigit ch i ch 0 kill pid i SIGTERM for i 0 i 10 i kill pid i SIGTERM return 3 3 进程运行次数进程运行次数 do unsigned long long sum 0 for i 0 i MAX THREAD i sum counter i printf llu n counter i printf llu llu n main counter sum while ch getchar q 4 4 进程加锁 解锁进程加锁 解锁 a for i 0 i LOOP TIMES i pthread mutex lock pthread mutex lock critical section 1 i pthread mutex unlock pthread mutex unlock pthread mutex destroy pthread mutex destroy b for i 0 i LOOP TIMES i sem wait sem wait critical section 1 i sem post sem post sem destroy sem destroy 五 测试数据及运行结果五 测试数据及运行结果 1 进程 各进程交替执行 无确定顺序 当输入要删除的进程编号时会调用一次 kill 最后输入 q 结束时会调用一次 kill 输入 q 则显示 已终止 整个程序执行结束 2 线程 输出个各线程运行的次数 main counter 和 sum 的值 3 互斥锁 2 异常测试数据及运行结果 死锁 死锁 六 调试情况 设计技巧及体会六 调试情况 设计技巧及体会 1 改进方案 1 POSIX 规范中 fork 和 kill 都是有返回值的 为了程序更加严谨 应该在 kill 命令也使用接受返回值 如果返回值为 1 则退出 2 程序退出时候使用了 return 但是书上介绍调用 exit 结束的方式会比 较好 这个需要以后注意 3 在有些地方 不应该使用死循环 虽然最后可以 q 退出 但是这样会导致 CPU 利用率很大 2 体会 在进程 线程 互斥锁编程序以后 自己对系统的运行以及管理有了初步的 了解 也明白了进程和线程都是操作系统的程序运行的基本单元 明白了进程 的创建 杀死 父子进程的关系 线程的并发执行 互斥锁的用法 但是自己 还是知道自己在这些方面的使用还不是特别的熟练 自己还需要在以后的学习 中 多多的写这方面的程序 以达到熟练掌握进程 线程 互斥锁的知识 7 7 代码代码 1 1 include include include include include include define MAX CHILD NUMBER 10 define SLEEP INTERVAL 2 int proc number 0 void do something main int argc char argv printf proc num p n int child proc number MAX CHILD NUMBER int i ch pid t child pid pid t pid 10 0 if argc 1 child proc number atoi argv 1 child proc number child proc number 10 10 child proc number for i 0 i child proc number i child pid fork switch child pid case 1 perror fork error break case 0 proc number i do something break default pid i child pid break while ch getchar q if isdigit ch i ch 0 kill pid i SIGTERM for i 0 i 10 i kill pid i SIGTERM return void do something int i printf proc num p for i 0 i 10 i printf This is process No d and its pid is d n proc number getpid sleep SLEEP INTERVAL 2 2 include include include include include define MAX THREAD 3 unsigned long long main counter counter MAX THREAD void thread worker void int main int argc char argv int i ch pthread t pthread id MAX THREAD 0 for i 0 i MAX THREAD i pthread create do unsigned long long sum 0 for i 0 i MAX THREAD i sum counter i printf llu n counter i printf llu llu n main counter sum while ch getchar q return 0 void thread worker void p int thread num thread num int p for counter thread num main counter 3 3 代码代码 1 include include include include include define LOOP TIMES 10000 pthread mutex t mutex1 PTHREAD MUTEX INITIALIZER pthread mutex t mutex2 PTHREAD MUTEX INITIALIZER void thread worker void void critical section int thread num int i int main void int rtn i pthread t pthread id 0 rtn pthread create if rtn 0 printf pthread create ERROR n return 1 for i 0 i LOOP TIMES i pthread mutex lock pthread mutex lock critical section 1 i pthread mutex unlock pthread mutex unlock pthread mutex destroy pthread mutex destroy return 0 void thread worker void p int i for i 0 i LOOP TIMES i pthread mutex lock pthread mutex lock critical section 2 i pthread mutex unlock pthread mutex unlock void critical section int thread num int i printf Thread d d n thread num i 代码代码 2 include include include include include include include define LOOP TIMES 10000 sem t S1 S2 void thread worker void void critical section int thread num int i int main int rtn i sem init sem init pthread t pthread id 0 rtn pthread create if rtn 0 perror pthread create exit EXIT FAILURE for i 0 i LOOP TIMES i sem wait sem wait critical section 1 i sem post sem p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《幼儿教师招聘》能力检测试卷附答案详解【巩固】
- 2025呼伦贝尔莫力达瓦达斡尔族自治旗尼尔基第一中学校园引才笔试备考有完整答案详解
- 未包括的互联网服务创新创业项目商业计划书
- 用户生成图文故事创作平台创新创业项目商业计划书
- 低温耐受性马铃薯品种研究创新创业项目商业计划书
- 教师招聘之《幼儿教师招聘》考试模拟试卷附参考答案详解【夺分金卷】
- 教师招聘之《幼儿教师招聘》考前冲刺测试卷附有答案详解及参考答案详解【达标题】
- 智能制造数字化全产业链解决方案
- 教师招聘之《幼儿教师招聘》强化训练模考卷及答案详解【名校卷】
- 2025年四川宜宾市珙县事业单位选调13人笔试备考题库附答案详解
- 常用玻璃仪器操作规范课件
- 《青纱帐-甘蔗林》教案- 2023-2024学年高教版(2023)中职语文基础模块下册
- TCRHA 063.1-2024 消毒供应质量管理及评价 第1部分:外包消毒供应业务
- 水资源论证、水土保持、防洪评价收费标准
- 攻读工程博士专业学位研究计划书【模板】
- NBT 10643-2021 风电场用静止无功发生器技术要求与试验方法-PDF解密
- 初中英语单词表(For-Junior)2182个 带音标
- 人教鄂教版六年级上册科学全册教案
- 财务工作内部培训课件
- 网络安全意识培训
- 建筑艺术赏析(职业通用)全套教学课件
评论
0/150
提交评论