操作系统:进程,线程,互斥

操作系统:进程,线程,互斥

ID:9988295

大小:287.55 KB

页数:12页

时间:2018-05-19

操作系统:进程,线程,互斥_第1页
操作系统:进程,线程,互斥_第2页
操作系统:进程,线程,互斥_第3页
操作系统:进程,线程,互斥_第4页
操作系统:进程,线程,互斥_第5页
资源描述:

《操作系统:进程,线程,互斥》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、西安郵電大學操作系统设计报告题目:进程、线程、互斥锁院系名称:计算机学院专业名称:软件工程班级:学生姓名:学号(8位):指导教师:舒新峰设计起止时间:2013.11.10—2013.11.20一.设计目的1)通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在POSIX规范中fork和kill系统调用的功能和使用。2)通过观察、分析实验现象,深入理解线程及线程在调度执行和内存空间等方面的特点,并掌握线程与进程的区别。掌握POSIX规范中pthread_create()函数的功能和使用方法。3)通过观察、分析实验现象,深入理解理解互斥锁的原理及特

2、点掌握在POSIX规范中的互斥函数的功能及使用方法。二.设计内容1)创建一个进程,父子进程相互交替执行,输出子进程号和进程ID。2)创建三个线程,输出三个线程运行的次数和当前主线程运行次数以及三个线程次数和。3)使用POSIX规范中的互斥函数,实现加锁解锁。4)信号量机制的方法,实现进程的加锁解锁。三.概要设计1)生成一个进程,通过switch()判断,来确定生成的进程是子进程还是父进程,还是错误的;子进程号定义为全局变量;利用kill()杀死进程,退出程序。2)利用循环创建三个线程,dowhile循环,每运行一次:输出三个线程运行的次数,当输入q时候,退出程序。3)创建一

3、个线程,在循环中进行申请资源,释放资源,加锁,以及解锁的操作,熟悉互斥锁的工作方式。四.详细设计1)进程交替进行当程序执行到for(i=0;i

4、=ch-'0';kill(pid[i],SIGTERM);}}for(i=0;i<10;i++){kill(pid[i],SIGTERM);}return;}3)进程运行次数do{unsignedlonglongsum=0;for(i=0;i

5、read_mutex_lock(&mutex1);pthread_mutex_lock(&mutex2);critical_section(1,i);pthread_mutex_unlock(&mutex2);pthread_mutex_unlock(&mutex1);}pthread_mutex_destroy(&mutex1);pthread_mutex_destroy(&mutex2);b、for(i=0;i

6、sem_post(&S2);}sem_destroy(&S1);sem_destroy(&S2);五.测试数据及运行结果1、进程.各进程交替执行,无确定顺序。当输入要删除的进程编号时会调用一次kill,最后输入q结束时会调用一次kill。输入q则显示“已终止”,整个程序执行结束。2)线程输出个各线程运行的次数,main_counter和sum的值。3)互斥锁2.异常测试数据及运行结果死锁:六.调试情况,设计技巧及体会1.改进方案1)POSIX规范中fork和kill都是有返回值的,为了程序更加严谨,应该在kill命令也使用接受返回值,如果返回值为-1,则退出。2)程序退出时

7、候使用了return(),但是书上介绍调用exit()结束的方式会比较好,这个需要以后注意。3)在有些地方,不应该使用死循环,虽然最后可以q退出,但是这样会导致CPU利用率很大。2.体会在进程,线程,互斥锁编程序以后,自己对系统的运行以及管理有了初步的了解,也明白了进程和线程都是操作系统的程序运行的基本单元,明白了进程的创建,杀死,父子进程的关系,线程的并发执行,互斥锁的用法,但是自己还是知道自己在这些方面的使用还不是特别的熟练,自己还需要在以后的学习中,多多的写这方面的程序,以达到熟练掌握进程,线程,互斥锁的知识

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。