北邮操作系统消费者与生产者实验报告

北邮操作系统消费者与生产者实验报告

ID:35215407

大小:359.50 KB

页数:10页

时间:2019-03-21

北邮操作系统消费者与生产者实验报告_第1页
北邮操作系统消费者与生产者实验报告_第2页
北邮操作系统消费者与生产者实验报告_第3页
北邮操作系统消费者与生产者实验报告_第4页
北邮操作系统消费者与生产者实验报告_第5页
资源描述:

《北邮操作系统消费者与生产者实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、操作系统实验课程报告课题:消费者与生产者实验姓名张涛学院计算机学院班级2011211311学号20112114192013年12月14日10/101.实验目的:1) 理解线程同步的思想和方法,学会用线程同步解决临界区问题,本次实验解决生产者消费者问题  2了解windows系统或linux系统下中信号量的使用方法。2.实验预备内容(1)阅读Linux的sched.h源码文件,加深对进程管理概念的理解。这个文件长达2616行,这里截取第1221~1548行抄录在实验报告最后,即结构体task_struct,地位相当于PCB。下面对几个比较重要的参数,结合本人的了解以及网

2、上查阅的资料做一点解释。中括号内的数字为代码行号,下同。volatile long state:【1222】进程状态字,表示进程当前的状态(运行、就绪、等待、僵死、暂停、交换),分别对应已定义好的常量;TASK_RUNING:正在运行或可运行状态;TASK_INTERRUPTIBLE:可打断睡眠状态;TASK_UNINTERRUPTIBLE:不可打断睡眠状态;TASK_ZOMBLE:僵死状态;TASK_STOPPED:暂停状态;交换状态。void *stack:【1223】进程所使用的栈空间;unsigned int flags:【1225】进程标志(创建、关闭、跟踪

3、、被跟踪、内核dump等),同样对应已定义好的常量;unsigned int rt_priority:【1237】表示本进程的实时优先级;const struct sched_class*sched_class、struct sched_entityse:【1239,1240】分别是调度类和调度实体,这两个结构包含了用于任务调度的完整的信息(进程信息、调度策略等);unsigned int policy:【1260】进程的调度策略标志,有三种调度标志:SCHED_OTHER:普通进程的调度策略,基于优先权的轮转法;SCHED_FIFO:实时进程的调度策略,基于先进先出

4、的算法;SCHED_RR:实时进程的调度策略,基于优先权的轮询法。struct list_headtasks:【1274】任务队列,为一双向循环链表;int pdeath_signal:【1282】父进程终止时产生的信号;pid_tpid:【1294】进程标识符,操作系统每创建一个新的进程就要为这个新进程分配一个进程控制块(PCB),系统内核通过pid区分这些进程的;struct task_struct*real_parent:【1307】本进程的父进程的PCB;struct list_headchildren:【1312】本进程的子进程列表;struct list_

5、headptraced:【1321】本进程正在使用ptrace监视的进程列表;struct thread_structthread:【1375】本进程下属的线程集;struct signal_struct*signal、struct sighand_struct*sighand:【1383,1384】分别是进程运行时产生的信号以及信号处理模块。(2)阅读Linux的pthread.h源码文件,分析线程的创建过程。10/10pthread接口说明#include1、创建intpthread_create(pthread_t*tid,constpth

6、read_attr_t*attr,void*(*func)(void*),void*arg);attr:线程属性包括:优先级、初始栈大小,是否应该成为一个守护线程。缺省设置,NULL后面是线程要执行的函数和参数成功返回02、等待一个给定线程终止intpthread_join(pthread_ttid,void**status);等待线程结束critiction可以在进程中使用,mutex只可在进程中使用statues返回等待线程的返回值multipledefinitionof`__dso_handle' /usr/lib/gcc/i486-linux-gnu/4.4.

7、3/crtbegin.o:(.data+0x0):firstdefinedhere threadTest:Infunction`_init': (.init+0x0):multipledefinitionof`_init' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/crti.o:(.init+0x0):firstdefinedhere /tmp/cchm2SmY.o:(.data+0x0):multipledefinitionof`flag' threadTest:(.data+0x8):fi

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

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

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