第三次实验报告
- 格式:doc
- 大小:1.42 MB
- 文档页数:16
第三次实验课 反相器(下)实验日期:20142.3 分析如下电路,解答下列问题上面的电路用两种方式实现了反相器,左图只使用了NMOS ,右图则使用了CMOS(NMOS 和PMOS)。
试完成:V F 3.0-=φ1.仿真得到两个电路的VTC 图形答:红色的为仅用NMOS 实现的反相器的VTC 图形;蓝色的为使用CMOS 的反相器的VTC 图形,如图:2.计算两种电路的V OH ,V OL 及V M 。
可参考波形确定管子的工作状态。
答:①当Vin=2.5V 时,N 管导通有在体偏置条件下阀值电压公式:)22(0F SB F T T V V V φφγ-+-+=()()()⎥⎦⎤⎢⎣⎡--=⎥⎦⎤⎢⎣⎡--=⎥⎦⎤⎢⎣⎡--=22220'2011'222'OL OL T in n DS DS T GS M M n d DSAT DSAT T DD M M n DSAT V V V V L W k V V V V L W k I V V V V L W k I (M2速度饱和)将下列数据代人VV V A k V V V D SAT n F T 63.0,/10115,3.0,43.026'0=⨯=-==-φ25.075.0,25.0375.01122==M M M M L W L W解得: V V OL 2875.0=当Vin=0V 时,N 管截止,Vout=OH V =2.5V求解M V :当out in V V =时,由于GS DS V V =,M1工作在饱和区此时流过M1(速度饱和)的电流为:()⎥⎥⎦⎤⎢⎢⎣⎡--=22011'1DSAT DSAT T in M M n DSAT V V V V L W k I (1) 流过M2的电流为(速度饱和)()⎥⎥⎦⎤⎢⎢⎣⎡---=2222'2DSAT DSAT T out DD M M n DSAT V V V V V L W k I (2) )22(0F SB F T T V V V φφγ-+-+=(3)M out in SB V V V V ===联立方程解得M V =1.017V②对于CMOS 器件当Vin=0时,V V V out O H 5.2==当Vin=2.5时,V V V out O L 0==求解M V :当out in V V =时,由于GS DS V V =,NMOS 与PMOS 工作在饱和区由于T M D SAT V V V -<,此时已经发生了速度饱和(参考波形)代入,联立解得:将下列数据V V V V V V V V V A k V A k L W k k L W k k V k V k r r V V V r V V V V V V V V k V V V V k DSATp DSATn Tp Tn p n pp p p nn n n DSATnn DSATpp DSAT TP DD DSAT Tn M DSATp Tp DD M DSATp p DSATn Tn M DSATn n 1,63.04.0,43.0,/1030,/101151)2/()2/(0)2/()2/(26'26'''-==-==⨯-=⨯====+++++==---+----M V =1.132315968V3.哪一种结构的反相器的功能性更好,为什么?(噪声容限,再生性,过渡区增益)答:CMOS 反相器更好。
华南师范大学学生姓名:叶青学号:20102501058专业:生物科学年级班级:10生物科学3班课程名称:生理学实验实验项目:大鼠防御性条件反射的建立和消退、血压的测定、心音的听诊、心电图的描记实验时间:2013.4.22实验指导老师:胡学军老师实验评分:1实验目的1.1学习并掌握间接测量人体血压的原理和方法;1.2学习心音听诊的方法,识别第一心音和第二心音;1.3学习心电图的记录方一法和心电图波形的测量方法。
1.4学习用动物建立条件反射的的基本技术方法,通过小白鼠条件反射的建立、分化和消退,了解条件反射活动的基本规律与生物学意义。
2实验材料小白鼠、大白鼠、人;迷宫刺激器、Y型三等分迷宫;血压计、听诊器、心电图仪。
3实验方法3.1条件反射的建立3.1.1检查迷宫灯光通电情况;3.1.2让动物适应环境,调节最适电压(保持不变)、延时2s;3.1.3开始测试,随机按I或II或III臂,O键暂停;3.1.4判断反应标准,根据标准:走对打勾,错打叉;3.1.5休息30s,随机测下一个迷宫臂,共测试10次,计算反应正确率,90%以上为达学会标准;3.1.6停30分钟或60分钟或24小时,再测试10次,检查是否达90%;3.1.7自然消退:过段时间再检测学习效果。
3.2血压的测量3.2.1受试者取坐位,心脏与血压计零点同一水平,安静;3.2.2松开充气球上的螺丝,将压脉带内的空气排空,再将螺丝旋紧;3.2.3将压脉带裹于左上臂距肘窝3cm处,将听诊器置于肱动脉搏动位置上;3.2.4充气加压听声,声消失再加压30mmHg,然后缓慢放气,听血管音的变化;3.2.5听声音的变化:从无到有,而后由低到高,最后突然变低,完全消失。
如此反复进行2-3次。
3.2.6测量正常的动脉血压:重复步骤5-6,同时注意检压计读数。
当放气第一次听到的血管音即收缩压,最后声音突然变低或完全消失时的代表舒张压。
放空压脉带,使压力降至零。
测试平均值。
半导体功率器件与智能功率IC实验学生姓名:田瑞学号:201422030143指导教师:乔明一、实验室名称:211楼803 工作站二、实验项目名称:半导体功率器件与智能功率IC实验——LDMOS器件版图设计实验三、实验原理:首先,设计版图的基础便是电路的基本原理,以及电路的工作特性,硅加工工艺的基础、以及通用版图的设计流程,之后要根据不同的工艺对应不同的设计规则,一般来说通用的版图设计流程为:1.制定版图规划记住要制定可能会被遗忘的特殊要求清单2.设计实现考虑特殊要求及如何布线创建组元并对其进行布3.版图验证执行基于计算机的检查和目视检查,进行校正工作最终步骤工程核查以及版图核查版图参数提取与后仿真完成这些之后需要特别注意的是寄生参数噪声以及布局等的影响,具体是电路而定,在下面的实验步骤中会体现到这一点。
IC设计与制造的主要流程四、实验目的:掌握版图设计的基本理论。
掌握版图设计的常用技巧。
掌握定制集成电路的设计方法和流程。
熟悉Cadence Virtuoso Layout Edit软件的应用学会用Cadence软件设计版图、版图的验证以及后仿真熟悉Cadence软件和版图设计流程,减少版图设计过程中出现的错误。
五、实验内容:结合LDMOS的版图文件,完成LDMOS器件的版图绘制。
六、实验器材(设备、元器件):CADENCE软件七、实验步骤:LDMOS的版图文件nwell 16400 8000pwell1 10 7000pwell2 70 34003550 40504220 45204740 49905250 54705770 59206350 8000poly 20400 18005000 7400nimplant 20400 74007700 8000pimplant 10 7700omicont 20300 07000900 7600metal 20 20004800 8000nitride 20 06006300 8000八、实验数据及结果分析:整体版图版图下部分别为:源端pad,漏端pad以及栅极pad九、实验结论:通过实验,了解LDMOS器件的版图设计,熟悉CADENCE软件的使用。
第三次实验报告——直流并励电动机1、 实验内容1 1. 工作特性和机械特性保持U=UN 和If =IfN 不变,测取n 、T2 、n=f(Ia)及n=f(T2)。
1.1实验拍照、数据、图表表1-8 U=U N =220V I f =I fN =1.1 A K a =20Ω 1.2 实验结果分析与理解实 验 数 据 I a (A )1.101.00 0.85 0.75 0.63 0.57 0.40 0.25 n (r/min ) 1261 1289 1317 1340 1363 1387 1402 1428 T 2(N.m )2.73 2.512.211.801.571.421.160.84计 算 数 据P 2(w ) 361.5 339.7 305.6 253.3 224.7 206.8 170.8 125.9 P 1(w ) 484.0 462.0 429.0 407.0 380.6 367.4 330.0 297.0 η(%)74.773.5 71.2 62.2 59.0 56.3 51.7 42.4 △n (%)电磁转矩T越大,转速n越低,其特性是一条下斜直线。
原因是T增大,电枢电流Ia与T成正比关系,Ia也增大;电枢电动势Ea则减小,转速n降低。
2、实验内容2调速特性(1)改变电枢端电压的调速2.1实验拍照、数据、图表U a(V)153 123 78 72 66 60 56 0.42n(r/min)858 638 295 276 185 158 138 83I a(A)0.55 0.65 0.93 0.90 0.88 0.86 0.82 0.612.2实验结果分析与理解电枢电压减小时,Ce与电动机本身决定,Φ由励磁电流决定,负载转矩T 不变,只有转速n会随着电枢电压减小而降低,从而实现调速。
改变电枢电压调速,电枢电流几乎不变。
改变电枢电压调速,可以实现连续平滑地无级调速,调速范围大,效率高,机械特性硬,但只能从额定转速向下调节。
实验十六中波调幅发射机组装及调试标准实验报告一、实验室名称科A402二、实验项目名称中波调幅发射机组装及调试三、实验原理图16-1 中波调幅发射机该调幅发射机组成原理框图如图16-1所示,发射机由音频信号发生器,音频放大,AM调制,高频功放四部分组成。
实验箱上由模块4,8,10构成。
四、实验目的1.在模块实验的基础上掌握调幅发射机整机组成原理,建立调幅系统概念。
2.掌握发射机系统联调的方法,培养解决实际问题的能力。
五、实验内容完成调幅发射机整机联调六、实验器材(设备、元器件)1.高频实验箱 1台2.双踪示波器 1台七、实验步骤在做本实验前请调试好与本实验相关的各单元模块1.将模块10的S1的2拨上,即选通音乐信号,经U4放大从J6输出,调节W2使J6处信号峰-峰值为200mV左右,连接J6和模块4的J5将音频放大信号送入模拟乘法器的调制信号输入端。
同时将1MHz (峰-峰值500mV左右)的载波从模块4的J1端输入。
2.调节W1使得有载波出现,调节W2 从J3处观察输出波形,使调幅度适中。
3.将AM调制的输出端(J3)连到集成线性宽带功率放大器的输入端J7,从TH9处可以观察到放大的波形。
4.将已经放大的高频调制信号连到模块10的天线发射端TX1,并按下开关J2,这样就将高频调制信号从天线发射出去了,观察TH3处波形。
八、实验数据及结果分析1.画出调幅发射机组成框图和对应点的实测波形并标出测量值大小。
图1.蓝色为音频信号放大后波形,黄色为AM调制后波形图2.高频功率放大后的波形图3.发射前天线信号波形图4. 发射时天线信号波形九、实验结论实验通过对音频信号进行放大,AM调制处理,将语音信号调制到载波信号中发射出去。
让接收机能够接收到语音信号并进行解调,但在实验过程中,仪器工作正常,但是接收机无法接收到信号。
原因:实验室内电磁环境复杂,天线拉的太长,接收到了过多的噪声。
解决方法:用导线连接两者的天线,或者讲天线收短。
第1篇一、实验目的1. 了解燃烧的条件。
2. 掌握火焰燃烧的基本特性。
3. 通过实验,验证燃烧的必要条件。
二、实验原理燃烧是一种氧化还原反应,通常需要满足以下条件:可燃物、氧气和达到一定温度的点火源。
燃烧的手掌实验旨在通过观察手掌在不同条件下燃烧的情况,验证燃烧的必要条件。
三、实验材料1. 纯棉布一块2. 氧气瓶一个3. 点火器一个4. 酒精灯一个5. 钳子一把6. 量筒一个7. 水盆一个8. 玻璃杯一个9. 手套一副四、实验步骤1. 将纯棉布剪成手掌大小,折叠成多层。
2. 将纯棉布放在水盆中浸泡,使其吸水。
3. 取出纯棉布,用钳子将其夹住,悬挂在氧气瓶上方。
4. 用酒精灯点燃点火器,将其放在纯棉布下方。
5. 观察纯棉布是否燃烧。
6. 将纯棉布放在空气中,用点火器点燃,观察燃烧情况。
7. 将纯棉布放在水中,用点火器点燃,观察燃烧情况。
8. 将纯棉布放在密封的玻璃杯中,用点火器点燃,观察燃烧情况。
五、实验结果与分析1. 当纯棉布在氧气瓶中燃烧时,火焰较大,燃烧较旺。
2. 当纯棉布在空气中燃烧时,火焰较小,燃烧较弱。
3. 当纯棉布在水中燃烧时,火焰熄灭,无法燃烧。
4. 当纯棉布在密封的玻璃杯中燃烧时,火焰熄灭,无法燃烧。
六、实验结论1. 燃烧需要氧气,氧气浓度越高,燃烧越旺。
2. 燃烧需要可燃物,纯棉布是可燃物。
3. 燃烧需要点火源,点火器可以提供点火源。
4. 燃烧需要达到一定温度,纯棉布在点火器点燃后可以燃烧。
5. 燃烧的必要条件:可燃物、氧气、点火源和达到一定温度。
七、实验总结本次实验通过观察燃烧的手掌在不同条件下燃烧的情况,验证了燃烧的必要条件。
在实验过程中,我们发现氧气浓度、可燃物、点火源和温度对燃烧有重要影响。
通过本次实验,我们对燃烧的基本原理有了更深入的了解。
在日常生活中,我们要注意防火,防止火灾的发生。
第2篇一、实验目的1. 了解手掌在燃烧过程中的温度变化。
2. 探究燃烧过程中手掌的热量传递方式。
第三次实验报告实验内容用户和用户组管理实验内容:用户和用户组的文件/etc/passwd 用户账号文件/shadow 用户口令文件/etc/group 用户组账号文件/gshadow 用户组口令文件添加用户useradd为用户设置口令passwd姓名:学号:520913080429专业:信息安全09-041、用户和用户组的文件/etc/passwd 用户账号文件root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news:uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinrpm:x:37:37::/var/lib/rpm:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinavahi:x:70:70:Avahi daemon:/:/sbin/nologinmailnull:x:47:47::/var/spool/mqueue:/sbin/nologinsmmsp:x:51:51::/var/spool/mqueue:/sbin/nologinnscd:x:28:28:NSCD Daemon:/:/sbin/nologinvcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologinhaldaemon:x:68:68:HAL daemon:/:/sbin/nologinrpc:x:32:32:Portmapper RPC user:/:/sbin/nologinrpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologinnfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinpcap:x:77:77::/var/arpwatch:/sbin/nologinntp:x:38:38::/etc/ntp:/sbin/nologingdm:x:42:42::/var/gdm:/sbin/nologinapache:x:48:48:Apache:/var/www:/sbin/nologindistcache:x:94:94:Distcache:/:/sbin/nologinpostgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bashmysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bashdovecot:x:97:97:dovecot:/usr/libexec/dovecot:/sbin/nologinwebalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologinsquid:x:23:23::/var/spool/squid:/sbin/nologinxfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologinnamed:x:25:25:Named:/var/named:/sbin/nologinsabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinamanda:x:33:6:Amanda user:/var/lib/amanda:/bin/bashcyrus:x:76:12:Cyrus IMAP Server:/var/lib/imap:/bin/bashmailman:x:41:41:GNU Mailing List Manager:/usr/lib/mailman:/sbin/nologinradiusd:x:95:95:radiusd user:/:/bin/falseexim:x:93:93::/var/spool/exim:/sbin/nologinprivoxy:x:73:73::/etc/privoxy:/sbin/nologinquagga:x:92:92:Quagga routing suite:/var/run/quagga:/sbin/nologinradvd:x:75:75:radvd user:/:/sbin/nologinldap:x:55:55:LDAP User:/var/lib/ldap:/bin/falsetomcat:x:91:91:Tomcat:/usr/share/tomcat5:/bin/shpegasus:x:66:65:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin student:x:500:500:student:/home/student:/bin/bash账号名称,密码,UID:用户ID,GID:用户组ID,用户信息,用户组目录,2、 用户口令文件 /etc/shadow用户密码用户组IDroot:$1$SI/4xwLM$g2zi4WBPwh87mLxspgx3m1:15223:0:99999:7::: bin:*:15223:0:99999:7:::daemon:*:15223:0:99999:7:::adm:*:15223:0:99999:7:::lp:*:15223:0:99999:7:::sync:*:15223:0:99999:7:::shutdown:*:15223:0:99999:7:::halt:*:15223:0:99999:7:::mail:*:15223:0:99999:7:::news:*:15223:0:99999:7:::uucp:*:15223:0:99999:7:::operator:*:15223:0:99999:7:::games:*:15223:0:99999:7:::gopher:*:15223:0:99999:7:::ftp:*:15223:0:99999:7:::nobody:*:15223:0:99999:7:::rpm:!!:15223:0:99999:7:::dbus:!!:15223:0:99999:7:::avahi:!!:15223:0:99999:7:::mailnull:!!:15223:0:99999:7:::smmsp:!!:15223:0:99999:7:::nscd:!!:15223:0:99999:7:::vcsa:!!:15223:0:99999:7:::haldaemon:!!:15223:0:99999:7:::rpc:!!:15223:0:99999:7:::rpcuser:!!:15223:0:99999:7:::nfsnobody:!!:15223:0:99999:7:::sshd:!!:15223:0:99999:7:::pcap:!!:15223:0:99999:7:::ntp:!!:15223:0:99999:7:::gdm:!!:15223:0:99999:7:::apache:!!:15223:0:99999:7:::distcache:!!:15223:0:99999:7:::postgres:!!:15223:0:99999:7:::mysql:!!:15223:0:99999:7:::dovecot:!!:15223:0:99999:7:::webalizer:!!:15223:0:99999:7:::squid:!!:15223:0:99999:7:::xfs:!!:15223:0:99999:7:::named:!!:15223:0:99999:7:::sabayon:!!:15223:0:99999:7:::postfix:!!:15223:0:99999:7:::amanda:!!:15223:0:99999:7:::cyrus:!!:15223:0:99999:7:::mailman:!!:15223:0:99999:7:::radiusd:!!:15223:0:99999:7:::exim:!!:15223:0:99999:7:::privoxy:!!:15223:0:99999:7:::quagga:!!:15223:0:99999:7:::radvd:!!:15223:0:99999:7:::ldap:!!:15223:0:99999:7:::tomcat:!!:15223:0:99999:7:::pegasus:!!:15223:0:99999:7:::student:$1$OweFzAd9$BO6WG8WVpsoak0JTfl5y3/:15223:0:99999:7:::3、用户组账号文件 /etc/grouproot:x:0:rootbin:x:1:root,bin,daemondaemon:x:2:root,bin,daemonsys:x:3:root,bin,admadm:x:4:root,adm,daemontty:x:5:disk:x:6:rootlp:x:7:daemon,lpmem:x:8:kmem:x:9:wheel:x:10:rootmail:x:12:mail,postfix,eximnews:x:13:newsuucp:x:14:uucpman:x:15:games:x:20:dip:x:40:ftp:x:50:lock:x:54: nobody:x:99: users:x:100: rpm:x:37:dbus:x:81: utmp:x:22: utempter:x:35: avahi:x:70: mailnull:x:47: smmsp:x:51: nscd:x:28: floppy:x:19: vcsa:x:69: haldaemon:x:68: rpc:x:32: rpcuser:x:29: nfsnobody:x:65534: sshd:x:74:pcap:x:77:ntp:x:38: slocate:x:21: gdm:x:42: apache:x:48: distcache:x:94: postgres:x:26: mysql:x:27: dovecot:x:97: webalizer:x:67: squid:x:23:xfs:x:43: named:x:25: sabayon:x:86: postdrop:x:90: postfix:x:89: saslauth:x:76:cyrus mailman:x:41: radiusd:x:95: exim:x:93: privoxy:x:73: quaggavt:x:85: quagga:x:92:screen:x:84: ldap:x:55: tomcat:x:91: pegasus:x:65: student:x:500:4、用户组口令文件etc/gshadowroot:::root bin:::root,bin,daemondaemon:::root,bin,daemonsys:::root,bin,admadm:::root,adm,daemontty:::disk:::rootlp:::daemon,lpkmem::: wheel:::root mail:::mail,postfix,exim news:::news uucp:::uucp man::: games::: gopher:::dip:::ftp:::lock::: nobody::: users:::rpm:x::dbus:x::utmp:x:: utempter:x::avahi:x::mailnull:x:: smmsp:x::nscd:x::floppy:x::vcsa:x:: haldaemon:x::rpc:x::rpcuser:x:: nfsnobody:x::sshd:x::pcap:x::ntp:x::slocate:x::gdm:x::apache:x:: distcache:x:: postgres:x::mysql:x::dovecot:x:: webalizer:x::squid:x::xfs:x::named:x:: sabayon:x:: postdrop:x::saslauth:x::cyrusmailman:x::radiusd:x::exim:x::privoxy:x::quaggavt:x::quagga:x::radvd:x::screen:x::ldap:x::tomcat:x::pegasus:x::student:!!::5、添加用户Useradd[root@localhost etc]# useradd lisi[root@localhost etc]# at /default/useradd syntax error. Last token seen: /Garbled time[root@localhost etc]# cat /etc/default/useradd # useradd defaults fileGROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skel[root@localhost etc]#6、为用户设置口令passwd# useradd defaults file GROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skel[root@localhost etc]# passwd lisi Changing password for user lisi. New UNIX password:Retype new UNIX password:passwd: all authentication tokens updated successfully. [root@localhost etc]#7、修改用户信息Usermod修改用户为lisi的UID为558,用户组ID为500[root@localhost etc]# passwd lisiChanging password for user lisi.New UNIX password:Retype new UNIX password:passwd: all authentication tokens updated successfully. [root@localhost etc]# usermod -u 558 -g 500 lisi [root@localhost etc]# grep lisi[1]+ Stopped grep lisi[root@localhost etc]# grep lisi /etc/passwdlisi:x:558:500::/home/lisi:/bin/bash[root@localhost etc]#8、删除用户userdel[root@localhost etc]#Userdel lisi9、用户身份的切换[lisi@localhost etc]$ su root 口令:[root@localhost etc]#切换用户root输入密码:切换用户。
第三次实验报告:几种查找算法的实现和比较//2019-12-4//1.随机生成5万个整数,存入一个文件;//2.算法实现:(1)顺序查找:读入文件中的数据,查找一个key,统计时间;// (2)二分查找:读入文件,排序,二分查找key,统计时间;// (3)分块查找:读入文件,分100块,每块300+数字,查找key,统计时间// (4)二分查找树:读入文件,形成BST,查找key,统计时间//二叉排序树:建立,查找#include "stdio.h"#include "time.h"#include "stdlib.h"struct JD{//定义分块查找的链表结点结构int data;JD *next;};struct INDEX_T{//定义分块查找中,索引表结构int max;//这一块中最大的数字,<maxJD *block;//每一块都是一个单向链表,这是指向块的头指针};INDEX_T myBlock[100];//这是索引表的100项struct NODE{//定义的二分查找树结点结构int data;NODE *left;NODE *right;};const int COUNT=50000;//结点个数int key=666;//待查找的关键字int m=1;//int *array2;void createData(char strFileName[]){//产生随机整数,存入文件srand((unsigned int)time(0));FILE *fp=fopen(strFileName,"w");for(int i=1;i<=COUNT;i++)fprintf(fp,"%d,",rand());fclose(fp);}void createBST(NODE* &bst){//产生5万个随机整数,创建二叉排序树FILE *fp=fopen("data.txt","r");for(int i=1;i<=COUNT;i++){int num;fscanf(fp,"%d,",&num);//从文件中读取一个随机整数//若bst是空子树,第一个结点就是根结点//若bst不是空子树,从根结点开始左小右大,查找这个数字,找到了直接返回,//找不到,就插入到正确位置//创建一个结点NODE* p=new NODE;p->data=num;p->left=0;p->right=0;if(0==bst)//空子树{bst=p;continue;}//非空子树,//在bst中,查找给结点,NODE *q=bst;//总是从根结点开始查找while(1){if(p->data == q->data)//找到了,直接退出break;if(p->data < q->data && q->left==0){//小,往左找,且左边为空,直接挂在q之左q->left=p;break;}if(p->data < q->data && q->left!=0){//小,往左找,且左边非空,继续往左边找q=q->left;continue;}if(p->data > q->data && q->right==0){//大,往右找,且右边为空,直接挂在q之右q->right=p;break;}if(p->data > q->data && q->right!=0){//大,往右找,且右边非空,继续往右边找q=q->right;continue;}}}}int BST_Search(NODE *bst,int key){//在bst中找key,if(0==bst)return -1;//非空子树,//在bst中,查找给结点,NODE *q=bst;//总是从根结点开始查找while(1){if(key == q->data)//找到了,直接退出return 1;if(key < q->data && q->left==0)//小,往左找,且左边为空,找不到return -1;if(key < q->data && q->left!=0)//小,往左找,且左边非空,继续往左边找{q=q->left;continue;}if(key > q->data && q->right==0)//大,往右找,且右边为空,找不到return -1;if(key > q->data && q->right!=0){//大,往右找,且右边非空,继续往右边找q=q->right;continue;}}}void inOrder(NODE *bst){if(bst!=0){inOrder(bst->left);array2[m]=bst->data;//反写回array数组,使数组有序// printf("%7d",array2[m]);m++;inOrder(bst->right);}}int getBSTHeight(NODE *bst){if(bst==0)return 0;else{int hl=getBSTHeight(bst->left);int hr=getBSTHeight(bst->right);int h=hl>hr?hl:hr;return h+1;}}void makeArray(int array[],char strFileName[]) {//生成5万个随机整数FILE *fp=fopen(strFileName,"r");int i=1;while(!feof(fp)){fscanf(fp,"%d,",&array[i]);// printf("%6d",array[i]);i++;}}int Seq_Search(int array[],int key){//在无序顺序数组中,找data是否存在,-1=不存在,存在返回位置下标//监视哨:把要找的那个数放到首部array[0]=key;//for(int i=COUNT;array[i]!=key;i--);if(i>0)//找到了,返回下标return i;return -1;//查找不成功,返回-1}int Bin_Search(int array[],int key){//在有序存储的数组中查找key,找到返回位置,找不到返回-1 int low=1,high=COUNT,mid;while(1){if(low>high)//找不到return -1;mid=(low+high)/2;if(key == array[mid])return mid;else if(key<array[mid])high=mid-1;elselow=mid+1;}}void makeBlock(INDEX_T myBlock[],char strFileName[]) {//从文件中读取整数,分配到块中去//1.初始化块索引表,分100块,400,800,1200,for(int i=0;i<=99;i++){myBlock[i].max=400+400*i;//400,800,1200, (40000)myBlock[i].block=0;}//2.打开文件,读取整数,把每一个整数分配到相应的块中去FILE *fp=fopen(strFileName,"r");while(!feof(fp)){int num=0;fscanf(fp,"%d,",&num);//把num分配到num/400块中,挂到该块链表第一个int blockID=num/400;//求出应该挂在的块号//生成一个新节点,把num放进去,挂上JD *p=new JD;p->data=num;p->next=myBlock[blockID].block;myBlock[blockID].block=p;}fclose(fp);}int Block_Search(INDEX_T myBlock[],int key){int blockID=key/400;//找到块号JD* p=myBlock[blockID].block;while(p!=0){if(p->data==key)return blockID;//能找到p=p->next;}return -1;//找不到}void main(){clock_t begin,end;int pos=-1;//1.生成文件,存入5万个随机整数createData("data.txt");//2.顺序查找int *array=new int[COUNT+1];makeArray(array,"data.txt");//从文件中读取数据begin=clock();for(int k=1;k<=10000;k++)pos=Seq_Search(array,key);end=clock();printf("顺序查找:%d所在的位置=%d.时间=%d毫秒\n",key,pos,end-begin);//3.二分查找树NODE *bst=0;createBST(bst);//产生5万个随机数字,建立一个二叉排序树begin=clock();for(k=1;k<=10000;k++)pos=BST_Search(bst,key);//在bst中找key,找到返回1,找不到返回-1end=clock();printf("二叉排序树查找:%d所在的位置=%d.时间=%d毫秒\n",key,pos,end-begin);array2=new int[COUNT+1];inOrder(bst);//中序输出bst// int height=getBSTHeight(bst);//求出bst的高度// printf("BST高度=%d.\n\n",height);//4.二分查找,利用前面二叉排序树产生的array2,查找key begin=clock();for(k=1;k<=10000;k++)pos=Bin_Search(array2,key);end=clock();printf("二分查找:%d所在的位置=%d.时间=%d毫秒\n",key,pos,end-begin);//5.分块查找,关键字范围[0,32767],分配到100块中去,每一块中存400个数字makeBlock(myBlock,"data.txt");//从文件中读取数据,产生块begin=clock();for(k=1;k<=10000;k++)pos=Block_Search(myBlock,key);//在block中查找key,找到返回块号,找不到返回-1end=clock();printf("分块查找:%d所在的块=%d.时间=%d毫秒\n",key,pos,end-begin);/*for(k=0;k<=99;k++){printf("\n\n\n第%d块<%d:\n",k,myBlock[k].max);JD *q=myBlock[k].block;//让q指向第k块的第一个结点while(q!=0){//输出第k块中所有数字printf("%7d ",q->data);q=q->next;}}*/}。
实验报告(学生打印后提交)实验名称: 生产者和消费者问题实验时间: 2023年 5 月 5日●实验人员:●实验目的:掌握基本的同步互斥算法, 理解生产者和消费者模型。
●了解Windows 2023/XP中多线程的并发执行机制, 线程间的同步和互斥。
●学习使用Windows 2023/XP中基本的同步对象, 掌握相应的API●实验环境: WindowsXP + VC++6.0●运用Windows SDK提供的系统接口(API, 应用程序接口)完毕程序的功能。
API是操作系统提供的用来进行应用程序设计的系统功能接口。
使用API, 需要包含对API函数进行说明的SDK头文献, 最常见的就是windows.h实验环节:1.读懂源程序.2.编辑修改源程.......................................实验陈述:1.基础知识:本实验用到几个API函数:CreateThread CreateMutex, WaitForSingleObject, ReleaseMutexCreateSemaphore, WaitForSingleObject, ReleaseSemaphore, ReleaseMutex, nitializeCriticalSection, EnterCriticalSection, LeaveCriticalSection。
这些函数的作用:CreateThread, 功能:创建一个线程, 该线程在调用进程的地址空间中执行。
CreateMutex,功能:产生一个命名的或者匿名的互斥量对象。
WaitForSingleObject(相应p操作)锁上互斥锁, ReleaseMutex(相应v操作)打开互斥锁.。
CreateSemaphore, 创建一个命名的或者匿名的信号量对象。
信号量可以看作是在互斥量上的一个扩展。
WaitForSingleObject, 功能:使程序处在等待状态, 直到信号量(或互斥量)hHandle出现或者超过规定的等待最长时间, 信号量出现指信号量大于或等于1, 互斥量出现指打开互斥锁。
浙江大学实验报告课程名称:Linux应用技术基础实验类型:验证型实验项目名称:Linux shell 基本命令学生姓名:孙禹达专业:工信学号:3120000431电子邮件地址:bless.sunyuda.death@实验日期:2013年05 月22 日1、实验目的和要求(必填)1.学习Linux的文件访问权限,用户的类型和文件访问权限的类型2.学习如何确定一个文件的访问权限3.学习如何设置和改变一个文件的访问权限4.学习如何在文件或目录的创建时设置缺省访问权限5.学习理解硬链接、符号链接6.学习理解链接和文件访问权限之间的关系7.学习了解Linux进程的属性8.学习理解Linux的前台进程、后台进程及守护进程9.学习理解Linux命令的顺序执行和并发执行10.学习使用挂起进程操作和终止进程操作11.了解系统中Linux进程的层次结构12.学习使用Linux定时作业调度13.学习使用Linux的I/O重定向操作和管道操作14.学习使用id、chmod、chgrp、chown、umask、ln、ps、kill、fg、bg、job、top、pstree、crontab、at、|、<、>等命令2、实验内容和原理(必填)1.根据下列的要求,写出得到这些信息的会话过程:1)你的用户名;2)你的用户ID;3)你的组ID和组名字;4)在你同一组中的其它用户名。
2.系统管理员给你的主目录设置的权限是什么?使用什么命令来得到这个答案,给出你的会话过程。
3.在你的系统中有文件或目录分别是:/ 、/etc/passwd 、/bin/df 、~ 。
用长列表格式显示这些文件或目录,并填写下列表格。
文件文件类型存取权限链接数所有者组文件大小//etc/passwd/bin/df~4.在你的主目录中的temp、professional和personal三个子目录,设置使自己(owner)拥有读、写、执行3种访问权限,设置其它用户只有读和执行权限。
在~/temp目录下创建名为d1、d2和d3的目录。
在d1目录下,用touch命令创建一个名为f1的空文件。
给出d1、d2、d3和f1的访问权限。
给出完成这些工作的会话。
5.在~/temp目录下创建名为d1、d2和d3的目录。
把文件smallFile拷贝到d1目录下,长列表格式显示文件smallFile,显示的内容包括inode号、访问权限、硬链接数、文件大小。
给出完成这些工作的会话。
6.在~/temp目录下,把当前目录改变成d2。
创建一个名字为newFile.hard硬链接到d1目录下的smallFile文件。
长列表格式显示newFile.hard文件,与smallFile文件的属性进行比较。
你如何确定smallFile和smallFile.hard是同一文件的两个名字,是链接数吗?给出你的会话过程。
7.创建一个名字为~/temp/d2/smallFile.soft软链接到~/temp/d1/smallFile文件。
长列表格式显示smallFile.soft文件,比较这两个文件的属性。
你如何确定smallFile 和smallFile.soft 是两个不同的文件?是这两个文件的大小吗?给出你的会话过程。
8.在你使用的Linux系统中,有多少进程在运行?进程init、bash、ps的PID是多少?init、bash和ps进程的父进程是哪一个?这些父进程的ID是什么?给出你得到这些信息的会话过程。
9.有多少个sh、bash、csh和tcsh进程运行在你的系统中?给出会话过程。
10.linux系统中,进程可以在前台或后台运行。
前台进程在运行结束前一直控制着终端。
若干个命令用分号(;)分隔形成一个命令行,用圆括号把多个命令挂起来,他们就在一个进程里执行。
使用―&‖符作为命令分隔符,命令将并发执行。
可以在命令行末尾加―&‖使之成为后台命令。
请用一行命令实现以下功能:它1小时(实验中可以用1分钟代替)分钟后在屏幕上显示文字―Time for Lunch!‖来提醒你去吃午餐。
给出会话过程。
11.写一命令行,使得date 、uname –a 、who 和ps并发执行。
给出会话过程。
12.写一命令行,先后执行date 、uname –a 、who 和ps命令,后面3个命令的执行条件是:当只有前面一个命令执行成功后,才能执行后面一个命令。
给出会话过程。
13.在shell下执行下面的命令。
3个pwd命令的运行结果是什么?$ pwd$ bash$ cd /usr$ pwd$<Ctrl-D> #终止shell$ pwd―$‖为系统提示符14.搜索并显示你主目录下foobar文件的绝对路径,错误信息重定向到/dev/null中。
给出你的会话。
(提示:若没有foorbar文件,可以创建一个)15.搜索你主目录下foobar文件,保存它的绝对路径到foobar.path文件中,错误信息写到/dev/null中,再显示foobar.path文件的内容。
给出会话过程。
16.有一个pro1程序,输入从标准输入设备中读入,输出送到标准输出设备中。
现在运行这个程序,要求输入从student.records中读入,输出结果重定向到output.data文件中,错误重定向到error.log文件中。
用一条命令来实现上述过程。
17.写出一个命令将shell的标准输入(stdin)更改到当前目录下名为fdata文件,标准输出(stdout)更改到当前目录下名为fout的文件。
如果fdata文件包含下面的内容,那么在命令执行后会发生什么?echo –n ―The time now is:‖dateecho –n ―The users presently logged on are:‖who提示:使用exec命令18.计算命令ls -l的输出中的字符数、单词数和行数,并把它显示在显示器上。
给出命令和输出结果。
19.在/bin目录下有多少个普通文件、目录文件和符号链接文件?如何得到这个答案?20.用pstree命令显示你系统中进程层次结构。
3、主要仪器设备操作系统:Microsoft Windows 7 旗舰版Service Pack 1 (build 7601), 64-bit主板:Dell Inc. 03RG89处理器:Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz 四核内存:8.00 GB硬盘:希捷ST9750420AS (750GB) 使用时间:4559小时温度:49℃显卡:NVIDIA GeForce GT 555M虚拟机:VMwareLINUX版本:Ubuntu 13.04Kylin//填写您的计算机配置,操作系统环境,LINUX版本4、实验结果与分析(必填)1.a)id -n -gb)id -uc)id –G id –n -Gd)cat /etc/group | grep sunyuda2.ls –ld3.ls -l文件文件类型存取权限链接数所有者组文件大小/ d rwxr-xr-x 24 Root Root 4096 /etc/passwd - rw-r—r-- 1 Root Root 1723 /bin/df - rwxr-xr-x 1 Root Root 93208 ~ d rwxr-xr-x 18 sunyuda sunyuda 40964.mkdir tempmkdir professionalmkdir personalchmod u=rwx *chmod o-w *cd tempmkdir d1 d2 d3cd d1touch f15.cp smallFile ~/temp/d1/cd temp/d1/ls –l –i6.cd d2ln ~/temp/d1/smallFile newFile.hard两个文件的索引节点号相同所以是一个文件7.ln –s ~/temp/d1/smallFile ~/temp/d2/smallFile.soft ls –il ~/temp/d2/smallFile.soft不是同一个文件,因为索引节点号不相同8.ps –Al9.ps | grep sh |wc –l ps | grep bash |wc –l ps | grep tcsh |wc –l10.cat>test<<stopsleep 1h;cat test11.date&uname –a&who&ps12.date && uname -a && who && ps13.14.sudo find ~/ -name foobar 2>/dev/null15.sudo find ~/ -name foobar >footbat.path 2>/dev/null cat foobar.path16.cat student.records 1> output.date 2>error.log17.bash < ./fdata > ./fout18.ls –l >1wc –c –l –w 119.find /bin -type f|wc -lfind /bin -type d|wc -lfind /bin -type l|wc –l20.5、讨论、心得进一步的加深了对shell命令的理解,同时也了解到了很多实用的小技巧(PS:UbuntuKylin版还是不如10.10稳定,新版的ubuntu的界面还是用不习惯//在这里写:实验过程中遇到的问题及解决的方法,您做本实验体会。