OS实验六
黄河科技学院操作系统实验指导书
计算机操作系统实验指导书学院:信息工程学院适用专业:计算机各专业制定人:杨志武教研室:软件工程教研室信息工程学院2009 年9 月前言操作系统是计算机的核心和灵魂。
操作系统软件的设计对整个计算机的功能和性能起着至关重要的作用,所以此门课也是必不可少的,是面向计算机科学与技术、网络工程、软件工程等大多数计算机专业本科生和研究生开设的一门计算机专业课程。
操作系统是计算机系统的核心,《操作系统》课程是计算机科学与技术专业的重要必修课。
本课程的目的是使学生掌握现代计算机操作系统的基本原理、基本设计方法及实现技术,具有分析现行操作系统和设计、开发实际操作系统的基本能力。
操作系统实验是操作系统课程的重要组成部分,属于学科基础实验范畴。
作为与相关教学内容配合的实践性教学环节,应在操作系统理论课教学过程中开设。
操作系统是计算机科学与技术专业必修的专业基础课程,操作系统实验的作用是:理解操作系统的设计和实现思路,掌握典型算法。
基本要求是:理解进程的概念,理解死锁,掌握银行家算法;掌握请求页式存储管理的实现原理及页面置换算法。
学生应具有高级语言编程能力、具有数据结构等基础知识。
实验要求为了顺利完成操作系统课程实验,学生应做到:(1)实验前,认真学习教材以及实验指导书的相关内容,提前做好实验准备。
(2)实验结束一周后提交实验报告。
实验报告内容应包括:实验目的、实验内容、设计思路和流程框图,源程序(含注释)清单、测试结果以及实验总结。
(3)遵守机房纪律,服从辅导教师指挥,爱护实验设备。
(4)实验的验收将分为两个部分:第一部分是上机操作,随机抽查程序运行和即时提问;第二部分是提交书面的实验报告。
此外杜绝抄袭现象,一经发现雷同,双方成绩均以0分计算。
目录前言 (I)实验要求 (II)目录...................................................................................................................... I II 实验一 LINUX及其使用环境(一) (1)实验一 LINUX及其使用环境(二) (5)实验一 LINUX及其使用环境(三) (8)实验一 LINUX及其使用环境(四) (13)实验二LINUX环境的文本编辑 (17)实验三 Linux系统的shell编程 (22)实验四LINUX环境下C语言的编译及调试 (24)实验五 LINUX环境下进程管理 (27)实验六Linux存储管理 (32)实验七 LINUX中的设备加载与卸载 (35)实验八(LINUX环境下)OS经典算法模拟(一) (36)实验九使用Windows 2000/xp注册表屏蔽桌面上的“回收站” (41)实验十 Linux 文件管理 (42)实验十一(LINUX环境下)OS经典算法模拟(二) (45)实验一 LINUX及其使用环境(一)LINUX常用命令简介——目录操作、系统询问与权限口令实验目的1.了解Linux的命令及使用格式。
OS-homework-6
实验六实验名称:管道通信实验报告:实验要求:1.阅读以下程序:#include <unistd.h>#include <stdio.h>#include <stdlib.h>main(){int filedes[2];char buffer[80];if(pipe(filedes)<0) //创建一个新管道err_quit(“pipe error”);if(fork()>0){char s[ ] = “hello!\n”;close(filedes[0]); //关闭读write(filedes[1],s,sizeof(s)); //从父进程写入管道close(filedes[1]); //在退出程序前关闭写}else{close(filedes[1]); //关闭写read(filedes[0],buffer,80); //从管道读并且保存在buffer中printf(“%s”,buffer);close(filedes[0]);}}编译并运行程序,分析程序执行过程和结果,注释程序主要语句。
2.阅读以下程序:#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>main(){char buffer[80];int fd;unlink(FIFO); //(如果有FIFO文件,先删掉)mkfifo(FIFO,0666); //创建一个FIFO文件if(fork()>0){char s[ ] = “hello!\n”;fd = open (“FIFO”,O_WRONL Y); //此处是文件名FIFO加上引号write(fd,s,sizeof(s));close(fd);}else{fd= open(FIFO,O_RDONL Y);read(fd,buffer,80);printf(“%s”,buffer);close(fd);}}编译并运行程序,分析程序执行过程和结果,注释程序主要语句。
操作系统实验报告心得体会范文大全(8篇)
操作系统实验报告心得体会范文大全(8篇)操作系统实验报告心得体会范文大全篇一:通过这一学期学习,才慢慢接触专业课。
刚开始觉得挺难得我都有点不想学这个专业了,慢慢的我觉得有趣多了。
虽然我学的不是很好,最起码我能给自己装系统了。
我给自己的电脑装过window7、xp系统。
从一开始连个cmos设置都不会进去,到现在能装各种机型的系统。
让我最高兴的事是我会建立网站了,以及能制作出复杂点的,漂亮的网页了。
从刚开始学装windowserver20xx时,我真的懵懵懂懂的,那开始是真的不想学这个专业了,那段时间还学java编程,我真的快崩溃了,后悔自己干嘛学这个专业,我根本就是没有天赋,感觉大学这四年完蛋了,大一大二还没有感觉,现在真实的感受到了,但后来发现,我是越来越感觉有兴趣了,只要肯付出课后肯钻研,就一定会有一点收获的。
通过这次网页课程设计激发学习兴趣,调动学习的自觉性,自己动脑、动手,动口,运用网络资源,结合教材及老师的指导,通过自身的实践,创作出积聚个人风格、个性的个人网页。
总体来说,整个学期的学习过程,我学会了很多知识,在此次网页设计中,我充分利用了这次设计的机会,全心全意投入到网页世界,去不断的学习,去不断的探索;同时去不断的充实,去不断的完善自我,在网络的天空下逐渐的美化自己的人生!做好页面,并不是一件容易的事,它包括个人主页的选题、内容采集整理、图片的处理、页面的排版设置、背景及其整套网页的色调等很多东西。
本次课程设计不是很好,页面过于简单,创新意识反面薄弱,这是我需要提高的地方。
需要学的地方还有很多,需要有耐心、坚持,不断的学习,综合运用多种知识,才能设计出好的web页面。
总体来说,通过这次的对网页和网站课程设计,有收获也有遗憾、不足的地方,但我想,我已经迈入了网页设计的大门,只要我再认真努力的去学习,去提高,凭借我对网页设计的热情和执着,我将来设计出的网页会更加专业,更完善。
操作系统实验报告心得体会范文大全篇二:转眼间,学习了一个学期的计算机操作系统课程即将结束。
操作系统 Windows 2000XP 中断处理
实验六 Windows 7 中断处理专业班级:学号:姓名:教师评分:实验项目名称:Windows 7 中断处理一、实验目的和要求:目的:对Windows 2000/XP操作系统中中断处理的机制与过程进行验证。
要求:在学习操作系统中断处理原理的基础上,了解Windows 2000/XP系统中各中断请求的分级与屏蔽,了解Windows 2000/XP系统的硬件中断处理过程,了解Windows 2000/XP 系统中系统服务调度的过程。
二、实验内容:1、查看IRQ配置信息2、中断冲突的解决3、如何防止中断冲突三、实验原理:中断(interrupt)是指程序执行过程中,当发生某个事件时,中止CPU上现行程序的运行,引出处理该事件的服务程序执行的过程。
IRQ的全称是Interrupt Resquest,是中断请求通道的含义,是主板提供的硬件中断端口,一般有8或16个。
四、注意事项:IRQ的数目是有限的,一台计算机虽然一共有16个IRQ(从IRQ0至IRQ15),但很多IRQ 已被预先分配给特定的硬件,例如IRQ0被系统计时器所占用,IRQ1被键盘所占用,IRQ3被COM2所占用,IRQ4被COM1所占用,IRQ6被磁盘所占用,IRQ7被并行接口所占用,IRQ8被CMOS时钟所占用,IRQ12被PS/2鼠标所占用,IRQ13被算术处理器所占用,IRQ14被PrimaryIDE控制器所占用,IRQ15被Secondary IDE控制器所占用,因此剩余下来的就只有IRQ5、IRQ9、IRQ10、IRQ11这几个了。
正常情况下,Windows操作系统会自动向硬件分配可用的IRQ,但需要使用IRQ的周边设备实在太多,例如声卡、网卡等PCI或ISA设备都需要占用一个IRQ,因此有时难免会有两个硬件设备同时使用一个IRQ,此时就会发生中断冲突,这是因为计算机无法正确判断收到的中断请求来自哪一个设备,比较常见的是网卡与声卡、网卡与内“猫”发生中断冲突。
OS课程简介
课程名称:操作系统原理(修订)Operating System Principles课程代码:总学时/学分:64/4(其中含实验学时:14)要求具备知识和能力:已修课程为,微机原理与接口技术(80/5),C程序设计语言(80/5),C++程序设计语言(52/4),数据结构与算法(84/5)适用专业:计算机科学与技术,网络工程专业学生课程目的:本课程目的是使学生掌握现代计算机操作系统的基本原理、基本设计方法及实现技术,具有分析现行操作系统和设计、开发实际操作系统的基本能力。
课程内容:操作系统是当代计算机软件系统的核心,是计算机系统的基础和支撑,它管理和控制着计算机系统中的所有软、硬件资源,可以说操作系统是计算机系统的灵魂。
操作系统课程是计算机专业学生必须学习和掌握的基础课程, 是计算机应用人员深入了解和使用计算机的必备知识, 是进行系统软件开发的理论基础,也是计算机科学与技术专业的一门理论性和实践性并重的核心主干课程。
操作系统课程主要介绍操作系统的设计方法和实现技术,讲授众多操作系统的设计精髓及操作系统最新技术。
包括操作系统各组成部分的概述,互斥性和同步性,处理器实现,调度算法,存储管理,设备管理,文件系统以及网络与分布式操作系统。
教材和重要参考书:教材:汤小丹,梁红兵,哲凤屏,汤子瀛. 计算机操作系统(第三版). 西安:西安电子科技大学出版社. 2007年5月(新世纪计算机类本科规划教材.部级优秀教材)。
参考书:[1]张尧学,史美林,张高. 计算机操作系统教程(第3版). 北京:清华大学出版社[2](荷)ANDREW S. TANENBAUM. 陈向群,马洪兵. 现代操作系统(第2版). 北京:机械工业出版社, 2005年6月[3](美)ANDREW S.TANENBAUM, ALBERT S.WOODHULL. 陈渝,谌卫军译. 操作系统设计与实现(第三版). 北京:电子工业出版社,2007年3月[4]陈向群杨芙清. 操作系统教程(第二版). 北京:北京大学出版社, 2006年6月[5]ABRAHAM SILBERSCHATZ,PETER BAER GALVIN,GREG GAGNE. 郑扣根译. 操作系统概念(第六版翻译版). 北京:高等教育出版社, 2004年1月[6](美)WILLIAM STALLINGS. 陈渝译. 操作系统——精髓与设计原理(第五版).北京:电子工业出版社, 2006年2月考核方式:本课程为考试课。
《OS》课程介绍
(第2版) 邹恒明 机械工业出版社
《计算机操作系统教程》张尧学 史美林
清华大学出版社
《计算机操作系统》徐甲同等 西安电科大
出版社
《操作系统原理》(第四版) 庞丽萍
华中
科技大学出版社
九、推荐参考书书和学习网站
操作系统网上学习系统
/upload/
三、为什么要学操作系统
深入到操作系统内部,理解并掌握操作系
统的基本原理、设计方法和实现技术 ----打开计算机系统的“汽车前盖” ;
掌握、理解操作系统的基本理论,具备开
发核心系统软件的技能,设计操作系统或 者修改现有的系统;
三、为什么要学操作系统
选用、购买、使用合适的操作系统,我们
并不总使用Windows;
各种命令:dir
copy del
format
WINDOWS、UNIX 等提供多任务或多用户环
境
系统调用:例如INT指令
你知道操作系统不能做什么吗?
不做天气预报
不做房屋设计 不是编译工具、不是编辑工具
总之,操作系统不直接解决具体应用 问题,也不负责编辑、编译源程序...
操作系统能做什么?
《操作系统原理》
----课程介绍----
一、认识操作系统
以下这些软件,哪些是操作系统?
DOS
LINUX WORD UNIX IOS 一个C语言源程序
WINDOWS TURBO-C FOXPRO VI MAC-OS-X
流行过的操作系统
微软:Windows系列(以前的MS-DOS)
UNIX家族:Solaris, AIX, HP UX, SVR4,
四学习操作系统的关注点操作系统提供一种折衷权衡软件操作系统程序和其他程序的相互关系操作系统的资源管理包括系统安全和方便用户的两大角色五涉及到计算机科学的领域计算机体系结构软件设计程序设计语言数据结构与算法信息安全计算机网络六本课程的先修课程序设计数据结构汇编语言计算机组成原理七本课程的主要内容介绍操作系统的基本概念基本结构及运行环境
计算机组成原理编程实验
实验五 类型转换和移位操作运算(第 3 章)
实验目的: 了解高级语言中数据类型的转换和移位操作结果, 从而能更好地理解指令系统设 计和计算机硬件设计所需满足的要求和需要考虑的问题。 实验要求: ,编程实现以下各种操作: (1) 给定一个 short 型数据 -12345,分别转换为 int、unsigned short、unsigned int、float 类型的数据; (2)给定一个 int 型数据 2147483647, 分别转换为 short、 unsigned short、 unsigned int、float 类型的数据; (3)给定一个 float 型数据 123456.789e5,转换成 double 型数据; (4)给定一个 double 型数据 123456.789e5,转换成 float 型数据; (5) 按 short 和 unsigned short 类型分别对-12345 进行左移 2 位和右移 2 位操作。 要求分别用十进制和十六进制形式打印输出以上各种操作的结果。 实验报告: 1. 给出源程序(文本文件)和执行结果。 2. 根据实验结果,回答下列问题。 (1) 无符号数和带符号整数的扩展操作方式是否相同?各是如何进行的? (2) 补码整数(如 int 型数)是否总能转换为等值的 float 类型数据?为什么? (3) float 型数据是否总能转换成等值的 double 型数据?为什么? (4) 长数被截断成短数后可能发生什么现象?为什么? (5) C 语言中移位操作规则与操作对象的数据类型有关吗? (6) 左移 2 位和右移 2 位操作分别相当于扩大和缩小几倍? 报告提交截止日期:5 月 10 日
实验三 浮点数的表示(第 2 章)
实验目的:了解 IEEE 754 浮点数在机器中的应用,特别是一些特殊值的处理。 实验要求:通过编程得出 float 和 double 类型的精度(即十进制有效位的位数) ; 编程检查“-8.0/0” 、 “sqrt(-4.0) ”的运算结果。 实验报告: 1. 给出源程序(文本文件)和执行结果。
操作系统课程实验报告-实验六文件系统
hierarchy, filesCompareOutput = diffDir(sys.argv[1], sys.argv[2])
print('{0}\n 比较文件结构:\n{0}'.format(' '*10)) PrintHierarchy(hierarchy) print() if len(filesCompareOutput) != 0:
subname[1])
# 合并结果
filesCompareOutput += subCompareOutput
sameFileHierarchy.append(('{0}'.format(name),
subFileHierarchy))
elif ( os.path.isfile(subname[0])
华南理工大学 操作系统课程实验报告
实验概述
【实验目的及要求】
加深对 linux 文件系统的理解。 实现一个“difftree”命令,其功能是比较两个目录下的文件结构和文件信 息。当在命令行方式下执行“difftree <dir1> <dir2>”命令时,能够比较目录 dir1 和 目录 dir2 是否具有相同的结构,对相同的部分,进一步比较相同文件名的 文件内容。列出比较的文件系统结构图。 本实验是对单个文件比较的扩展,设计中需要考虑目录操作。
for item in hierarchy: if isinstance(item, tuple): print(' '*level*3 + ' ' + item[0] + '/') PrintHierarchy(item[1], level+1) else: print(' '*level*3 + ' ' + item)
嵌入式系统原理与应用实验指导书(合稿+习题)
嵌入式系统原理与应用实验指导书南航金城学院2013.2目录目录 (1)第一部分试验箱硬件结构 (2)第二部分实验 (11)实验一ADS1.2集成开发环境练习 (11)实验二汇编指令实验1 (17)实验三汇编指令实验2 (20)实验四汇编指令实验3 (23)实验五ARM微控制器工作模式实验 (28)实验六 C语言程序实验 (33)实验七 C语言调用汇编程序实验 (36)实验八GPIO输出控制实验 (39)实验九GPIO输入实验 (46)实验十外部中断实验 (50)实验十一UART通讯实验 (56)实验十二I2C接口实验 (64)实验十三定时器实验 (75)实验十四PWM DAC实验 (81)实验十五ADC实验 (87)实验十六RTC实验 (94)实验十七步进电机控制实验 (101)实验十八直流电机控制实验 (105)附录1 DeviceARM2410 专用工程模板 ..................................................... 错误!未定义书签。
第一部分试验箱硬件结构MagicARM2410教学实验开发平台是一款可使用μC/OS-II、Linux和WinCE操作系统、支持QT、MiniGUI图形系统、集众多功能于一身的ARM9教学实验开发平台。
采用Samsung公司的ARM920T内核的S3C2410A微处理器,扩展有充足的存储资源和众多典型的嵌入式系统接口。
MagicARM2410实验箱参考如图1.1所示。
图1.1 MagicARM2410实验箱外观图MagicARM2410实验箱功能框图如图1.2所示。
图1.2 MagicARM2410实验箱功能框图1.1 S3C2410A芯片简介S3C2410A是Samsung公司推出的16/32位RISC处理器(ARM920T内核),适用于手持设备、POS机、数字多媒体播放设备等等,具有低价格、低功耗、高性能等特点。
华北电力大学操作系统实验报告
华北电力大学
实验报告
|
|
实验名称操作系统综合实验
课程名称操作系统
|
|
专业班级:网络学生姓名:
学号:成绩:
指导教师:王德文/姜丽梅实验日期:2015年11月4日
2. 当loop线程在控制台1中执行,并且在控制台2中执行suspend命令时,为什么控制台1中的loop线程处于就绪状态而不是运行状态?
答:当在控制台2 中执行suspend命令时,实质上是优先级为24的控制台2线程抢占了处理器,也就是控制台2线程处于运行状态,所以此时loop线程处于就绪状态了。
图 1 调试EOS信号量的工作过程。
华北电力大学实验报告
第页共页。
北航os实验报告
北航os实验报告北航OS实验报告一、引言操作系统(Operating System,简称OS)是计算机系统中最基础的软件之一,它负责管理和控制计算机硬件资源,为用户和应用程序提供一个可靠、高效的工作环境。
本文将对北航OS实验进行详细的报告和分析。
二、实验目的本次北航OS实验的目的是让学生深入理解和掌握操作系统的基本原理和实现方式。
通过实践,学生将学会设计和实现一个简单的操作系统,了解操作系统的核心功能和运行机制。
三、实验内容1. 系统引导实验开始时,我们需要编写引导程序,将操作系统加载到计算机的内存中,并跳转到操作系统的入口地址开始执行。
这一步骤是整个实验的起点,也是操作系统正常运行的基础。
2. 中断处理操作系统需要能够处理各种中断事件,如时钟中断、键盘中断等。
学生需要实现中断处理程序,使操作系统能够响应和处理这些中断事件,并根据具体情况进行相应的操作。
3. 进程管理操作系统需要能够管理多个进程的创建、调度和终止。
学生需要设计并实现进程管理模块,包括进程控制块(PCB)的数据结构和进程调度算法。
通过合理的调度策略,提高系统的并发性和响应速度。
4. 内存管理操作系统需要管理计算机的内存资源,包括内存的分配和释放。
学生需要设计并实现内存管理模块,使用合适的算法来管理内存的分配和回收,避免内存泄漏和碎片化问题。
5. 文件系统操作系统需要提供文件系统来管理计算机中的文件和数据。
学生需要设计并实现一个简单的文件系统,包括文件的创建、读写和删除等操作。
通过文件系统,用户可以方便地存储和管理自己的数据。
四、实验过程在实验过程中,我们遇到了许多挑战和问题,但通过不断的尝试和调试,我们最终成功实现了一个简单的操作系统。
以下是我们在实验过程中遇到的一些关键问题和解决方案:1. 内存管理在实验过程中,我们发现内存管理是一个非常关键的问题。
如果内存管理不当,容易导致内存泄漏或者内存碎片化,从而影响系统的性能和稳定性。
我们通过设计一个位图来管理内存的分配和释放,使用首次适应算法来分配内存,并通过合理地回收内存来避免内存泄漏问题。
计算机操作系统实训资料
计算机操作系统实验(训)指导书学院:电子信息工程学院班级:13计算机科学与技术本01班学号:姓名:指导教师:西安思源学院电子信息工程学院前言操作系统是计算机科学与技术专业的一门重要的专业课,是一门实践性很强的技术课程。
掌握操作系统原理、熟悉操作系统的使用是各层次计算机软硬件开发人员必不可少的基本技能。
操作系统课程讲授理论原理比较容易,而如何指导学生进行实践则相对较难,导致学生不能深刻地理解操作系统的本质,也不能在实际中应用所学的操作系统理论知识及操作系统所提供的功能来解决实际问题。
本实验课程在操作系统原理课程教学中占有重要地位,目的是让学生及时掌握和巩固所学的基本原理和基础理论,加深理解。
提高学生自适应能力,为将来使用和设计各类新的操作系统打下基础。
一般来说,学习操作系统分为以下几个层次:1.学习并掌握操作系统的基本概念及原理,了解操作系统的实现机制。
2.掌握常用操作系统的使用、操作和维护,成为合格的系统管理员。
目前最常用的操作系统主要有UNIX、Linux、Windows等等。
3.通过分析操作系统源代码,掌握修改、编写操作系统的能力。
开放源代码的操作系统Linux的出现为我们提供了机遇。
操作系统本身的构造十分复杂,如何在有效的时间内,使学生既能了解其实现原理又能对原理部分进行有效的实践,是操作系统教学一直在探索的内容。
本实验课程以Windows和Linux操作系统为主要平台,从基本原理出发,通过几个实验,使学生能对操作系统的基本原理有更深入的了解,为将来从事操作系统方面的研究工作打下一定的基础。
目录实验一Windows的用户界面 (4)实验二Windows2003的任务与进程管理器 (6)实验三Linux使用环境 (10)实验四Linux进程管理、内存管理、设备管理 (13)实验五Windows2003内存管理 (16)实验六目录和文件管理 (19)实验七用户与组群管理 (21)实验一Windows的用户界面一、实验目的(1)熟悉Windows的GUI界面和命令控制界面(2)学习并熟悉Windows的命令行解释器及常用命令(3)理解批处理文件及批处理文件的使用二、实验理论基础及教材对应关系1、实验理论基础:(1)W indows的命令解释器及字符用户界面。
操作系统实验---进程的创建与控制
实验报告实验题目姓名:学号:课程名称:操作系统实验所在学院:信息科学与工程学院专业班级:计算机任课教师:核心为fork( )完成以下操作:(1)为新进程分配一进程表项和进程标识符进入fork( )后,核心检查系统是否有足够的资源来建立一个新进程。
若资源不足,则fork( )系统调用失败;否则,核心为新进程分配一进程表项和唯一的进程标识符。
(2)检查同时运行的进程数目超过预先规定的最大数目时,fork( )系统调用失败。
(3)拷贝进程表项中的数据将父进程的当前目录和所有已打开的数据拷贝到子进程表项中,并置进程的状态为“创建”状态。
(4)子进程继承父进程的所有文件对父进程当前目录和所有已打开的文件表项中的引用计数加1。
(5)为子进程创建进程上、下文进程创建结束,设子进程状态为“内存中就绪”并返回子进程的标识符。
(6)子进程执行虽然父进程与子进程程序完全相同,但每个进程都有自己的程序计数器PC(注意子进程的注意子进程的PC 开始位置),然后根据pid 变量保存的fork( )返回值的不同,执行了不同的分支语句。
四、实验过程、步骤及内容1、编写一段程序,使用系统调用fork( )创建两个子进程。
当此程序运行时,在系统中有一个父进程和两个子进程活动。
让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。
试观察记录屏幕上的显示结果,并分析原因。
2、修改上述程序,每一个进程循环显示一句话。
子进程显示'daughter …'及'son ……',父进程显示'parent ……',观察结果,分析原因。
3、用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容4、用fork( )建立如下形式的进程树:A进程B进程C进程D进程各个进程中都打印出本身PID 和其父进程的PID,并用wait( )来控制进程执行顺序,打印出正确和期望的结果。
实验六偏振光的观测与分析
二.观测布儒斯特及测定玻璃折射率
三.在起偏器P1后,插入测布儒斯特角的装置,再在P1和装置 之间插入一个带小孔的光屏。调节玻璃平板,使反射的光束 与入射光束重合。记下初始角。
05 添加标题
所以,可以用1/4波片 获得椭圆偏振光和圆偏 振光。
03 添加标题
3当 = /2时, Ae=Ao获得圆偏振光。
【实验内容与步骤】
起偏与检偏鉴别自然光与偏振光,验证马吕斯定律。
在光源至光屏的光路上插入起偏器P1,旋转P1,观察光屏上光斑强度 的变化情况。
在起偏器P1后面再插入检偏器P2。固定P1的方位,旋转P2 ,旋转 3600,观察光屏上光斑强度的变化情况。有几个消光方位?
取 为除00和900外的其他值,观察转动P2时屏
上光强的变化,其结果与椭圆偏振光对应。特别
是当 =450时,P2转动时屏上光强几乎不变,
这便是圆偏振光对应的状态。
取 =900,使检偏器P2转动,这时也可以从屏上
光强的变化看到经过1/4波片后的光为线偏振光。 其振动面与 = 00 时的振动面垂直。
三.偏振片、波片及其作用
四.偏振片
偏振片是利用某些有机化合物晶体的二向色性。 将其渗入透明塑料薄膜中,经定向拉制而成。 它能吸收某一方向振动的光,而透过与此垂直 方向振动的光,由于在应用时起的作用不同, 用来产生偏振光的偏振片叫做起偏器;用来检 验偏振光的偏振片,叫做检偏器。
按照马吕斯定律,强度为I0的线偏振光通过检偏器后,透射
按照光的电磁理论,光波就是电磁波,它的电矢量E和磁矢 量H相互垂直。两者均垂直于光的传播方向。从视觉和感 光材料的特性上看,引起视觉和化学反应的是光的电矢量, 通常用电矢量E代表光的振动方向,并将电矢量E和光的传 播方向所构成的平面称为光振动面。
操作系统指导书
《计算机操作系统》实验指导书适用专业:计算机科学与技术信息与计算机江南大学物联网工程学院2015年4月前言计算机操作系统(Operating System简称OS)是计算机中最重要的系统软件,也是最活跃的学科之一,是计算机相关本科专业的核心课程。
通过本课程的学习使学生掌握操作系统的基本概念、技术、原理,具备一定的从不同层次分析与使用操作系统功能的能力。
了解计算机操作系统方面的新技术、新理论与新发展。
本实验指导书,是根据《操作系统》课程教学大纲的要求而编写的,目的是让学生能够进一步了解操作系统的基本概念、原理,通过综合性、验证性和设计性等实验,熟练掌握操作系统的运行机理和各种算法思想,尤其是操作系统的核心功能。
同时还希望通过实验进一步提高学生的动手能力和综合运用先修课程的能力。
由于编写仓促,难免有错误和不足之处,恳请读者不吝赐教。
目录前言 (1)实验一进程调度 (3)实验二作业调度实验 (6)实验三银行家算法 (9)实验四存储管理 (13)实验一进程调度实验学时:4学时实验类型:设计实验要求:必修一、实验目的多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。
因而引起进程调度。
本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。
二、实验内容1.优先权法、轮转法简化假设1)进程为计算型的(无I/O)2)进程状态:ready、running、finish3)进程需要的CPU时间以时间片为单位确定2.算法描述1)优先权法——动态优先权当前运行进程用完时间片后,其优先权减去一个常数。
2)轮转法三、流程图产生n 需的时间片数,已占用CPU 的时间片数置为0按进程产生的先后次序拉成就绪队列链=0? 撤销该进程就绪队列为空吗?=轮转时间片数?NYYY 结束N开始键盘输入进程数n ,和调度方法的选择优先权法? 轮转法产生n 个进程,对每个进程产生一个PCB ,并用随机数产生进程的优先权及进程所需的CPU 时间 按优先权大小,把n 个进程拉成一个就绪队列 撤销进程就绪队列为空?结束NYY四、实验要求1.产生的各种随机数的取值范围加以限制,如所需的CPU时间限制在1~20之间。
实验六 终端技术对讯号品质的影响
實驗六終端技術對訊號品質的影響一、原理說明終端技術的目的在於提供一個完全阻抗匹配的傳輸環境以確保訊號的品質(signal integrity)。
當訊號在印刷電路板佈線(PCB trace)上傳輸時必有起點及終點,起點為使用邏輯閘的輸出端有其輸出阻抗而終點為輸入端亦有其輸入阻抗,一個輸出端可能推動好幾個輸入端。
若要考慮阻抗匹配的問題時相當複雜,很幸運的是在訊號的工作頻率不高時不需要考慮阻抗匹配的問題,即可獲得很好的訊號品質。
但是電路板的工作頻率越來越高,已經高到必須正視訊號品質的問題,否則設計的電路會因系統內的雜訊干擾太多而影響電路的正常工作以至於發生誤動作,因此在高速電路裏阻抗匹配的做法在電路設計階段就必須仔細考慮,然而電路太複雜要很完美的完成阻抗匹配不太容易,終端匹配技術就應運而生。
其主要目的為儘可能的達成阻抗匹配以減少訊號的反射現象的發生或降低因反射產生高頻成分的雜訊造成的串音干擾。
但必須注意的是如果選擇錯誤的終端技術,非但不能減少反射的現像同時更會造成更多的串音及電源干擾雜訊以至於降低系統雜訊的容忍度。
常見的幾種終端技術為:1.並連終端技術(End Termination)。
2.戴維寧終端技術(Thevenin Termination)。
3.串連終端技術(Source Termination)。
4.交流終端技術(AC Termination)。
5.二極體終端技術(Diode Termination)。
以下針對這幾種終端技術的做法及其優缺點說明如下:1.並連終端技術(End Termination)一般並連終端技術是在訊號的輸入端(即遠端)並連電阻,依其並連至地或電源端可概分為三種做法:(1)並連電阻到地(2) 並連電阻到電源端(3)同時並連電阻到地及電源端,又稱為戴維寧終端技術。
(1)並連電阻到地的終端技術:圖6.1為並連電阻到地的接法,在訊號的接收端;即遠端並連一圖6.1 並連電阻到地的接法與傳輸線阻抗相同大小之電阻至接地端,這種接法的特性為(a) 驅動端的波形傳輸會全部降在這條線上。
《操作系统课程》实验(实训)指导大纲
《操作系统课程》实验(实训)指导大纲课程编号:G611SG0004课程性质:学科基础课适用专业:计算机科学与技术网络工程数字媒体实验学时:16实验教材:自编符合《认证标准》:具有运用工程基础知识和本专业基本理论知识解决问题的能力,具有系统的工程实践学习经历;完成本课程实验(实训)总软件最少行数: 2000实验成绩评价方法:学生每完成一个实验项目,要求独立认真的填写实验报告。
实验指导教师将根据学生完成实验的态度和表现,结合填写的实验报告评定实验成绩,成绩的评定按百分制评分。
老师根据平时实验的分数之和取平均分,得出综合成绩。
实验(实训)内容:实验一操作系统安装及熟练使用(一)实验目的熟悉Windows//Linux操作系统的安装过程与安装方法,并掌握该操作系统所提供的用户接口环境,并为后续实验做好编程环境准备。
(二)实验项目内容1、熟悉Windows//Linux操作系统的安装过程与安装方法,并掌握该操作系统所提供的用户接口环境,通过系统提供的用户管理程序、查看系统中的用户情况、进程、线程、内存使用情况等,学会使用它进行监视进程的状况、系统资源的使用情况及用户情况。
并为后续实验做好编程环境准备。
2、用C语言编写一小段程序,使其可以通过某个系统调用来获得OS提供的某种服务。
(三)主要仪器设备一台PC机(四)实验室名称计算机中心实验室(五)实验报告撰写(撰写的格式采用教务处所提供的样本见附件)......实验二编程模拟进程间的同步和互斥(一)实验目的通过实验加强对进程同步和互斥的理解,并掌握进程(线程)的创建和调用方法。
学会使用信号量解决资源共享问题。
学生可以自己选择在Windows或Linux系统下编写。
代码不得少于200行。
(二)实验项目内容1.以下为Linux系统下参考程序,请编译、运行并观察程序的输出,并分析实验结果,写出实验报告。
#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<time.h>#include<sys/types.h>#include<sys/wait.h>#include<linux/sem.h>#define NUM_PROCS 5#define SEM_ID 250#define FILE_NAME "/tmp/sem_aaa"#define DELAY 4000000void update_file(int sem_set_id, char *file_path, int number){struct sembuf sem_op;FILE *file;//等待信号量的数值变为非负数,此处设为负值,相当于对信号量进行P操作sem_op.sem_num=0;sem_op.sem_op=-1;sem_op.sem_flg=0;semop(sem_set_id,&sem_op,1);//写文件,写入的数值是当前进程的进程号file=fopen(file_path,"w");if(file){//临界区fprintf(file,"%d\n",number);printf("%d\n",number);fclose(file);}//发送信号,把信号量的数值加1,此处相当于对信号量进行V操作sem_op.sem_num=0;sem_op.sem_op=1;sem_op.sem_flg=0;semop(sem_set_id,&sem_op,1);}//子进程写文件void do_child_loop(int sem_set_id,char *file_name){ pid_t pid=getpid();int i,j;for(i=0;i<3;i++){update_file(sem_set_id,file_name,pid);for(j=0;j<4000000;j++);}}int main(int argc,char **argv){int sem_set_id; //信号量集的IDunion semun sem_val; //信号量的数值,用于semctl()int child_pid;int i;int rc;// 建立信号量集,ID是250,其中只有一个信号量sem_set_id=semget(SEM_ID,1,IPC_CREAT|0600);if(sem_set_id==-1){perror("main: semget");exit(1);}//把第一个信号量的数值设置为1sem_val.val=1;rc=semctl(sem_set_id,0,SETVAL,sem_val);if(rc==-1){perror("main:semctl");exit(1);}//建立一些子进程,使它们可以同时以竞争的方式访问信号量for(i=0;i<NUM_PROCS;i++){child_pid=fork();switch(child_pid){case -1:perror("fork");case 0: //子进程do_child_loop(sem_set_id,FILE_NAME);exit(0);default: //父进程接着运行break;}}//等待子进程结束for(i=0;i<NUM_PROCS;i++){int child_status;wait(&child_status);}printf("main:we're done\n");fflush(stdout);return 0;}2.写一程序模拟PV操作同步机构,且用PV操作解决生产者——消费者问题。
实验六地层原油饱和压力的测定
实验六地层原油饱和压力的测定一.实验目的1.掌握地层油饱和压力的测定原理及方法;2.掌握地层油的单次脱气的方式及方法;3.掌握原油体积系数、溶解气油比等参数的计算方法;4.掌握落球法测量地层油粘度的原理及方法。
二.实验原理(1)地层油的体积随压力的降低而增加。
在泡点压力前后,体积-压力曲线的斜率不同,拐点处对应的应力即为泡点压力。
(2)使PVT 筒内的压力保持在原始压力,保持压力不变,将PVT 筒内一定量的地层油放入分离瓶中,记录放油的地下体积。
从量气瓶中测量分出气体体积,测量分离瓶中脱气油的体积,便可计算地层油的溶解气油比、体积系数等数据。
(3)在层流条件下,钢球在光滑盛液标准管中自由下落,液体的粘度计算公式如下:μ= k (ρ1 −ρ2)t其中μ—绝对粘度,mPa.s;t—钢球下落时间,s;ρ1、ρ2—钢球和原油的密度,g/cm3;k—粘度计常数。
三.实验流程图6-1 高压物性试验装置流程图1.恒温水浴;2.计量泵;3.压力表;4.储液罐;5.保温套;6.阀门;7.分离瓶;8.量气瓶;9.盐水口瓶四.实验步骤1.泡点压力测定(1)粗测泡点压力。
从地层压力起退泵降压(以恒定的速度退泵),并注意观察压力表指针变化,当压力表指针降低速度减慢或不下降甚至回升时,停止退泵。
压力表指针稳定后的压力数值即为粗测饱和压力值。
(2)细测泡点压力A.升压至地层压力,让析出的气体完全溶解到油中。
从地层压力开始降压,每降低一定压力(如1.0MP)记录压力稳定后的体积(注意升压、降压过程中应不断搅拌PVT 筒);B.当压力降至泡点压力以下时,每降低一定体积(如3ml),记录稳定以后的压力(泡点压力前后至少安排四个测点)。
C.最后一点测完后,升压到地层压力,进行搅拌,使分出的气体重新溶解到原油中,为原油脱气做好准备。
2.一次脱气A.将PVT 筒中的地层原油加压至地层压力,搅拌原油样品使温度、压力均衡,记录泵的读数。
B.准备干燥洁净已称重的分离瓶3-5 个,检查量气瓶密封情况,并充满饱和盐水。
rtos实验内容手册
rtos实验内容手册一、实验目的本实验旨在通过实时操作系统(RTOS)来学习并掌握嵌入式系统开发的基本概念、原理和方法。
通过实际操作RTOS,了解其在嵌入式系统中的应用,提高实践能力和理论水平。
二、实验原理RTOS是一种实时操作系统,能够实现多任务调度、进程管理、内存管理、设备驱动等功能。
与通用操作系统类似,RTOS具有任务调度器、中断处理、定时器、消息队列、信号量等核心组件。
通过在RTOS上进行实验,可以深入理解嵌入式系统中任务调度、资源管理、同步与通信等基本概念。
三、实验步骤1.实验环境搭建:选择适合的RTOS平台,如FreeRTOS、uC/OS等,并搭建实验环境。
包括交叉编译工具链、调试工具等。
2.实验程序编写:根据实验要求,编写实验程序。
包括任务的创建、调度、通信、同步等基本功能。
可以使用C语言或汇编语言进行编写。
3.程序编译与调试:将程序编译为可执行文件,并将其烧录到目标板上进行调试。
在调试过程中,可以使用调试工具进行单步执行、断点设置、变量查看等操作。
4.性能分析:通过在RTOS上运行多个任务,分析并比较各个任务的响应时间、执行效率等性能指标。
了解RTOS在不同任务负载下的表现,并优化程序以改善性能。
5.功能扩展:在掌握基本实验内容的基础上,可以尝试扩展实验功能。
例如,添加文件系统支持、网络通信等功能,提高实验复杂度和实用性。
四、实验内容与要求1.创建任务:在RTOS中创建多个任务,并分别为每个任务分配不同的优先级。
任务可以是周期性任务或非周期性任务,根据实际需求进行设计。
2.任务调度:实现任务的调度与切换。
通过编写调度器代码,实现不同优先级任务的调度和执行。
同时,确保任务的切换过程中不会发生数据冲突或丢失。
3.资源共享与同步:实现多个任务对共享资源的访问和操作。
例如,使用消息队列或信号量来实现任务之间的通信与同步,确保资源访问的安全性和正确性。
4.中断处理:实现中断处理函数,处理外部硬件中断。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《操作系统》实验报告实验三进程管理及进程通信一.实验目的利用Linux提供的系统调用设计程序,加深对进程概念的理解。
体会系统进程调度的方法和效果。
了解进程之间的通信方式以及各种通信方式的使用。
二.实验准备复习操作系统课程中有关进程、进程控制的概念以及进程通信等内容(包括软中断通信、管道、消息队列、共享内存通信及信号量概念)。
熟悉本《实验指导》第五部分有关进程控制、进程通信的系统调用。
它会引导你学会怎样掌握进程控制。
阅读例程中的程序段。
三.实验方法用vi 编写c 程序(假定程序文件名为prog1.c)编译程序$ gcc -o prog1.o prog1.c 或$ cc -o prog1.o prog1.c运行$./prog1.o四.实验内容及步骤用v i编写使用系统调用的C语言程序。
1.编写程序。
显示进程的有关标识(进程标识、组标识、用户标识等)。
经过5 秒钟后,执行另一个程序,最后按用户指示(如:Y/N)结束操作。
编译运行结果:2.编写程序。
实现父进程创建一个子进程。
体会子进程与父进程分别获得不同返回值,进而执行不同的程序段的方法。
编译运行:思考:子进程是如何产生的?又是如何结束的?子进程被创建后它的运行环境是怎样建立的?答:子进程由fork()函数创建,通过exit()函数自我结束,子进程被创建后核心将为其分配一个进程表项和进程标识符,检查同时运行的进程数目,并且拷贝进程表项的数据,由子进程继承父进程的所有文件。
3.编写程序。
父进程通过循环语句创建若干子进程。
探讨进程的家族树以及子进程继承父进程的资源的关系。
程序如下:编译运行:思考:①画出进程的家族树。
子进程的运行环境是怎样建立的?反复运行此程序看会有什么情况?解释一下。
183922472248 2252 22542249 2251 22532250每一次运行返回的进程号都不相同,但是都符合家族进程树,出现这样的情况是由于系统本身就是随机分配进程号的。
②修改程序,使运行结果呈单分支结构,即每个父进程只产生一个子进程。
画出进程树,解释该程序。
用一个break;语句使父进程在子进程结束后跳出循环,运行结果如下:进程家族树如下:200424012402240324044.编写程序。
使用fork( )和exec( )等系统调用创建三个子进程。
子进程分别启动不同程序,并结束。
反复执行该程序,观察运行结果,结束的先后,看是否有不同次序。
编译代码如下:编译运行:思考:子进程运行其它程序后,进程运行环境怎样变化的?反复运行此程序看会有什么情况?解释一下。
答:子进程运行其他程序后,这个进程就完全被新程序代替。
由于并没有产生新进程所以进程标识号不改变,除此之外的旧进程的其他信息,代码段,数据段,栈段等均被新程序的信息所代替。
新程序从自己的main()函数开始进行。
反复运行此程序发现结束的先后次序是不可预知的,每次运行结果不一样。
原因是当每个子进程运行其他程序时,他们的结束随着其他程序的结束而结束,所以结束的先后次序在改变。
5.编译程序,验证子进程继承父进程的程序、数据等资源。
如用父、子进程修改公共变量和私有变量的处理结果;父、子进程的程序区和数据区的位置。
编译源代码如下:编译运行结果:思考:子进程被创建后,对父进程的运行环境有影响吗?解释一下。
答:子进程被创建后,对父进程的运行环境无影响,因为当子进程在运行时,他有自己的代码段和数据段,这些都可以作修改,但是父进程的代码段和数据段是不会随着子进程数据段和代码段的改变而改变。
6.参照《实验指导》第五部分中“管道操作的系统调用”。
复习管道通信概念,编写一个程序。
父进程创建两个子进程,父子进程之间利用管道进行通信。
要求能显示父进程、子进程各自的信息,体现通信效果。
源代码:编译运行:思考:①什么是管道?进程如何利用它进行通信的?解释一下实现方法。
②修改睡眠时机、睡眠长度,看看会有什么变化。
请解释。
③加锁、解锁起什么作用?不用它行吗?答:1.管道是指能够连接一个写进程和一个读进程,并允许他们以生产者-消费者方式进行通信的一个共享文件,又称pipe文件。
由写进程从管道的入端将数据写入管道,而读进程则从管道出端读出数据来进行通信。
2.修改睡眠时机和睡眠长度都会引起进程被唤醒的时间不一,因为睡眠时机决定进程在何时睡眠,睡眠长度决定进程何时被唤醒。
3.加锁、解锁是为了解决临界资源的共享问题。
不用它将会引起无法有效管理数据,即数据会被修改导致读错了数据。
7.编程验证:实现父子进程通过管道进行通信。
进一步编程,验证子进程结束,由父进程执行撤消进程的操作。
测试父进程先于子进程结束时,系统如何处理“孤儿进程”的。
把上题中的父进程中的wait()都去掉,运行结果如下:思考:对此作何感想,自己动手试一试?解释一下你的实现方法。
答: 只要在父进程后加上wait()函数,然后打印“子进程已经结束”,一旦子进程结束,父进程撤销进程。
把父进程中的wait()去掉,父进程先于子进程终止时.所有子进程的父进程改变为init进程,称为进程由init进程领养。
8.编写两个程序一个是服务者程序,一个是客户程序。
执行两个进程之间通过消息机制通信。
消息标识MSGKEY 可用常量定义,以便双方都可以利用。
客户将自己的进程标识(pid)通过消息机制发送给服务者进程。
服务者进程收到消息后,将自己的进程号和父进程号发送给客户,然后返回。
客户收到后显示服务者的pid和ppid,结束。
运行结果:服务者:客户程序:思考:想一下服务者程序和客户程序的通信还有什么方法可以实现?解释一下你的设想,有兴趣试一试吗。
答:还可以用信号量机制来实现。
信号量是一个整形计数器,用来控制多个进程对共享资源的访问。
或者通过消息队列信号机制,通过向消息队列发送信息、接收信息来实现进程间的通信。
9.这部分内容涉及《实验指导》第五部分中“有关信号处理的系统调用”。
编程实现软中断信号通信。
父进程设定软中断信号处理程序,向子进程发软中断信号。
子进程收到信号后执行相应处理程序。
源代码如下:编译运行:思考:这就是软中断信号处理,有点儿明白了吧?讨论一下它与硬中断有什么区别?看来还挺管用,好好利用它。
答:硬中断是由外部硬件产生的,而软中断是CPU根据软件的某条指令或者软件对标志寄存器的某个标志位的设置而产生的。
10.怎么样,试一下吗?用信号量机制编写一个解决生产者—消费者问题的程序,这可是受益匪浅的事。
本《实验指导》第五部分有关进程通信的系统调用中介绍了信号量机制的使用。
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>#include <semaphore.h>#include <signal.h>#define N 5 // 消费者或者生产者的数目#define M 10 // 缓冲数目//int M=10;int in = 0; // 生产者放置产品的位置int out = 0; // 消费者取产品的位置int buff[M] = { 0 }; // 缓冲初始化为0,开始时没有产品sem_tempty_sem; // 同步信号量,当满了时阻止生产者放产品sem_tfull_sem; // 同步信号量,当没产品时阻止消费者消费pthread_mutex_tmutex; // 互斥信号量,一次只有一个线程访问缓冲intproduct_id = 0; //生产者idintprochase_id = 0; //消费者id//信号处理函数voidHandlesignal(intsigno){printf("程序退出\n",signo);exit(0);}/* 打印缓冲情况*/void print() {inti;printf("产品队列为");for(i = 0; i< M; i++)printf("%d", buff[i]);printf("\n");}/* 生产者方法*/void *product() {intid = ++product_id;while(1) {//重复进行//用sleep的数量可以调节生产和消费的速度,便于观察sleep(2);sem_wait(&empty_sem);pthread_mutex_lock(&mutex);in= in % M;printf("生产者%d在产品队列中放入第%d个产品\t",id, in);buff[in]= 1;print();++in;pthread_mutex_unlock(&mutex);sem_post(&full_sem);}}/* 消费者方法*/void *prochase() {intid = ++prochase_id;while(1) {//重复进行//用sleep的数量可以调节生产和消费的速度,便于观察sleep(5);sem_wait(&full_sem);pthread_mutex_lock(&mutex);out= out % M;printf("消费者%d从产品队列中取出第%d个产品\t",id, out);buff[out]= 0;print();++out;pthread_mutex_unlock(&mutex);sem_post(&empty_sem);}}int main() {printf("生产者和消费者数目都为5,产品缓冲为10,生产者每2秒生产一个产品,消费者每5秒消费一个产品,Ctrl+退出程序\n");pthread_tid1[N];pthread_tid2[N];inti;intret[N];//结束程序if(signal(SIGINT,Handlesignal)==SIG_ERR){//按ctrl+C产生SIGINT信号printf("信号安装出错\n");}// 初始化同步信号量intini1 = sem_init(&empty_sem, 0, M);//产品队列缓冲同步intini2 = sem_init(&full_sem, 0, 0);//线程运行同步if(ini1 && ini2 != 0) {printf("信号量初始化失败!\n");exit(1);}//初始化互斥信号量intini3 = pthread_mutex_init(&mutex, NULL);if(ini3 != 0) {printf("线程同步初始化失败!\n");exit(1);}// 创建N个生产者线程for(i = 0; i< N; i++) {ret[i]= pthread_create(&id1[i], NULL, product, (void *) (&i));if(ret[i] != 0) {printf("生产者%d线程创建失败!\n", i);exit(1);}}//创建N个消费者线程for(i = 0; i< N; i++) {ret[i]= pthread_create(&id2[i], NULL, prochase, NULL);if(ret[i] != 0) {printf("消费者%d线程创建失败!\n", i);exit(1);}}//等待线程销毁for(i = 0; i< N; i++) {pthread_join(id1[i], NULL);pthread_join(id2[i],NULL);}exit(0);五. 研究并讨论1.讨论Linux 系统进程运行的机制和特点,系统通过什么来管理进程?在Linux中,每个进程在创建时都会被分配一个数据结构,称为进程控制块(Process Control Block,简称PCB)。