北邮操作系统进程同步实验报告及源代码

北邮操作系统进程同步实验报告及源代码
北邮操作系统进程同步实验报告及源代码

进程管理实验报告

1.实验目的:

(1)理解进程/线程同步的方法,学会运用进程/线程同步的方法解决实际问题;(2)了解windows系统或unix/linux系统下中信号量的使用方法。

2.实验内容

编写一个有关生产者和消费者的程序:每个生产者每次生产一个产品存入仓库,每个消费者每次从仓库中取出一个产品进行消费,仓库大小有限,每次只能有一个生产者或消费者访问仓库。要求:采用信号量机制。

3、环境说明

本实验是在win7环境下使用dev编译器实现的,采用Win API的信号量机制。

4、程序设计说明

该程序根据教材中的消费者生产者问题编写的,使用了教材中提供的框架思

路以及库函数,使用CreateThread建立新的线程,使用CreateMutex创建一

个互斥信号量,使用CreateSemaphore创建信号量,使用ReleaseMutex释放

线程的互斥信号量,使用ReleaseSemaphore对指定的信号量增加指定的值,

使用WaitForSingleObject等待空位,使用CloseHandle在操作结束后关闭线程

和信号量。

在这个程序里我设计了三个函数:

Int main()是主函数,其中包含了缓冲区大小的设置,生产者消费者发出请求等内容以及线程创建等内容

DWORD WINAPI producer(LPVOID lpPara)是生产者等待缓冲区的使用权并对缓冲区进行操作

DWORD WINAPI consumer(LPVOID lpPara)是消费者等待缓冲区的使用权并对缓冲区进行操作

该程序模拟生产者消费者问题,首先要设置缓冲区的大小,输入请求资源的各个进程的信息以及请求时间,并且按照请求时间对各进程进行排序,创建线程,然后按序依次对缓冲区进行操作,详细设计见源代码。

5、程序运行结果截图:

只有生产者请求,没有消费者请求,请求满足

只有消费者请求,没有生产者请求,消费者的请求不成功:

生产者请求大于消费者请求并且消费者请求在生产者放入产品之后:

消费者请求多于生产者请求,只能满足部分消费者请求,不能满足全部:

6、源代码:

#include

#include

#include

#include

#include

#include using namespace std;

#define MAX_BUF 1000

#define MAX_REQ 20 HANDLE mutex;

HANDLE full;

HANDLE empty;

HANDLE thread[MAX_REQ]; DWORD pro_id[MAX_REQ]; DWORD con_id[MAX_REQ]; struct request{

int type;//记录生产者消费者的类型

int seq; //记录请求次序

}req[MAX_REQ];

int buf_size;

int req_size;

int no;

int buffer[MAX_BUF];

int in;

int out;

int result;

bool cmp(request a,request b)

{ return a.seq

DWORD WINAPI producer(LPVOID lpPara)

{

WaitForSingleObject(full,INFINITE);

WaitForSingleObject(mutex,INFINITE);

printf("生产者%d将第%d号产品放入缓冲区……\n",(int)lpPara,no);

buffer[in]=no++;

in=(in+1)%buf_size;

printf("成功放入缓冲区!\n\n",(int)lpPara);

ReleaseMutex(mutex);

ReleaseSemaphore(empty,1,NULL);

return 0;

}

DWORD WINAPI consumer(LPVOID lpPara)

{

WaitForSingleObject(empty,INFINITE);

WaitForSingleObject(mutex,INFINITE);

printf("消费者%d将第%d号产品从缓冲区取出……\n",(int)lpPara,buffer[out]);

buffer[out]=0;

printf("成功从缓冲区取出!\n\n",(int)lpPara);

ReleaseMutex(mutex);

out=(out+1)%buf_size;

ReleaseSemaphore(full,1,NULL);

return 0;

}

int main()

{

int i;

int p=0;

no = 1;

in=out=0;

memset(buffer, 0, sizeof(buffer));

printf("请设置缓冲区大小:");

scanf("%d",&buf_size);

printf("请输入请求使用资源进程的个数:");

scanf("%d",&req_size);

for(i=0;i

printf("请选择是消费者进程(0)还是生产者进程(1):");

scanf("%d",&req[i].type);

printf("请输入该进程的请求时间:");

scanf("%d",&req[i].seq);

}

sort(req,req+req_size,cmp);

mutex=CreateMutex(NULL,FALSE,NULL);

full=CreateSemaphore(NULL,buf_size,buf_size,NULL);

empty=CreateSemaphore(NULL,0,buf_size,NULL);

for(i=0;i

{

if(req[i].type==0){

thread[i]=CreateThread(NULL, 0, consumer, (LPVOID)i, 0, &con_id[i]);

if(thread[i]==NULL)

return -1;

printf("\n消费者请求从缓冲区中取产品,请求时间为%d\n",req[i].seq);

}

if(req[i].type==1){

thread[i]=CreateThread(NULL,0,producer,(LPVOID)i,0,&pro_id[i]);

if(thread[i]==NULL)

return -1;

printf("\n生产者请求往缓冲区中放产品,请求时间为%d\n",req[i].seq);

}

}

result = WaitForMultipleObjects(req_size, thread, TRUE, 500);

if (result == WAIT_TIMEOUT)

printf("\n请求不能被完全满足\n");

else

printf("\n能够满足所有请求\n");

for(int i=0; i

CloseHandle(thread[i]);

CloseHandle(mutex);

CloseHandle(full);

CloseHandle(empty);

system("pause");

return 0;

}

7、实验总结:

本次实验基于书上的生产者消费者问题,原理在上课的时候老师已经详细地讲解过,但是在具体编程实现的过程中也遇到了很多问题,除了书上的库函数之外还有一些函数书上并没有给出用法,比如如何创建线程等函数,通过查阅参考相关资料解决,通过编写代码也系统地理解了生产者消费者问题的操作过程,线程的创建,信号量的创建以及信号量的使用方法等情况,遇到的好多编代码上的细节问题通过反复调试解决,有较大收获。

北邮 通信网实验报告

北京邮电大学实验报告通信网理论基础实验报告 学院:信息与通信工程学院 班级:2013211124 学号: 姓名:

实验一 ErlangB公式计算器 一实验内容 编写Erlang B公式的图形界面计算器,实现给定任意两个变量求解第三个变量的功能: 1)给定到达的呼叫量a和中继线的数目s,求解系统的时间阻塞率B; 2)给定系统的时间阻塞率的要求B和到达的呼叫量a,求解中继线的数目s,以实现网络规划; 3)给定系统的时间阻塞率要求B以及中继线的数目s,判断该系统能支持的最大的呼叫量a。 二实验描述 1 实验思路 使用MA TLAB GUITOOL设计图形界面,通过单选按钮确定计算的变量,同时通过可编辑文本框输入其他两个已知变量的值,对于不同的变量,通过调用相应的函数进行求解并显示最终的结果。 2程序界面 3流程图 4主要的函数 符号规定如下: b(Blocking):阻塞率; a(BHT):到达呼叫量;

s(Lines):中继线数量。 1)已知到达呼叫量a及中继线数量s求阻塞率b 使用迭代算法提高程序效率 B s,a= a?B s?1,a s+a?B(s?1,a) 代码如下: function b = ErlangB_b(a,s) b =1; for i =1:s b = a * b /(i + a * b); end end 2)已知到达呼叫量a及阻塞率b求中继线数量s 考虑到s为正整数,因此采用数值逼近的方法。采用循环的方式,在每次循环中增加s的值,同时调用B s,a函数计算阻塞率并与已知阻塞率比较,当本次误差小于上次误差时,结束循环,得到s值。 代码如下: function s = ErlangB_s(a,b) s =1; Bs = ErlangB_b(a,s); err = abs(b-Bs); err_s = err; while(err_s <= err) err = err_s; s = s +1; Bs = ErlangB_b(a,s); err_s = abs(b - Bs); end s = s -1; end 3)已知阻塞率b及中继线数量s求到达呼叫量a 考虑到a为有理数,因此采用变步长逼近的方法。采用循环的方式,在每次循环中增加a的值(步长为s/2),同时调用B s,a函数计算阻塞率并与已知阻塞率比较,当本次误差小于预设阈值时,结束循环,得到a值。 代码如下: function a = ErlangB_a(b,s)

北邮网络-操作系统原理-阶段作业三

一、单项选择题(共10道小题,共100.0分) 1. 不支持记录等结构的文件类型是 A. 顺序文件 B. 索引顺序文件 C. 索引文件 D. 哈希文件 2. 在I/O系统层次模型中处于最高的一个层次,负责所有设备I/O工作中均 要用到的共同的功能的模块是 A. 系统服务接口 B. I/O子系统 C. 设备驱动程序接口 D. 设备驱动程序 3. 在采用局部转换策略进行页面置换的系统中,一个进程得到3个页架。系 统采用先进先出的转换算法,该进程的页面调度序列为:1,3,2,6,2,5,6,4,6。如果页面初次装入时不计算为缺页,请问该进程在调度中会产生几次缺页。 A. 6次 B. 5次 C. 4次 D. 3次

4. 完成从物理页架号到虚地址的映射是 A. 页表 B. 反向页表 C. 多级页表 D. 快表 5. 下列设备中,()为块设备。 A. 软盘驱动器 B. MODEM C. 声卡 D. 鼠标 6. 在下列的实存管理技术中,同一进程在连续地址存储的技术是 A. 可变分区多道管理技术 B. 多重分区管理 C. 简单分页 D. 简单分段

7. 采用简单分页系统的内存管理,页面的大小是8K字节。现有一个逻辑地 址A=3580h,该进程的页表为 [0,5/1,6/2,1/3,0...],则该逻辑地址对应的物理地址A'=() A. 0580h B. D580h C. 6580h D. 7580h 8. 对于实存管理技术,实际上它不具备的功能有: A. 主存分配 B. 地址转换和重定位 C. 存储保护和主存共享 D. 存储扩充 9. 在当前的计算机系统中,通常是按()进行编址。 A. 位 B. 字节

实验一进程调度实验报告书

淮海工学院计算机工程学院实验报告书 课程名:《操作系统原理A》 题目:进程调度 班级:软件132 学号:2013122907 姓名:孙莹莹

操作系统原理实验——进程调度实验报告 一、目的与要求 1)进程是操作系统最重要的概念之一,进程调度是操作系统内核的重要功能,本实验要求用C 语言编写一个进程调度模拟程序,使用优先级或时间片轮转法实现进程调度。本实验可加深对进程调度算法的理解。 2)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果) 3)于2015年4月18日以前提交本次实验报告(含电子和纸质报告,由学习委员以班为单位统一打包提交)。 二、实验内容或题目 1)设计有5个进程并发执行的模拟调度程序,每个程序由一个PCB表示。 2)模拟调度程序可任选两种调度算法之一实现(有能力的同学可同时实现两个调度算法)。 3)程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。 4)本次实验内容(项目)的详细说明以及要求请参见实验指导书。 三、实验步骤与源程序 (1)流程图

(2)实验步骤 1)PCB的结构:优先级算法中,设PCB的结构如下图所示,其中各数据项的含义如下: Id:进程标识符号,取值1—5。 Priority:优先级,随机产生,范围1—5。 Used:目前已占用的CPU时间数,初值为0;当该进程被调用执行时,每执行一个时间片,Used加1。 Need:进程尚需的CPU时间数,初值表示该进程需要运行的总时间,取值范围为5—10。并随机产生,每运行一个时间片need减1;need为0则进程结束。 Status:进程状态R(运行),W(就绪),F(完成);初始时都处于就绪状态。 Next:指向就绪队列中下一个进程的PCB的指针。 2)初始状态及就绪队列组织: 5个进程初始都处于就绪状态,进程标识1—5,used初值都为0。各进程的优先级随机产生,范围1—5。处于就绪状态的进程,用队列加以组织,队列按优先级由高到低依次排列,队首指针设为head,队尾指针为tail。 3)调度原则以及运行时间的处理: 正在执行的进程每执行一个时间片,其优先级减1(允许优先级为负)。进程调度将在以下情况发生:当正在运行的程序其优先级小于就绪队列队首进程的优先级时。程序中进程的运行时间以逻辑时间片为单位。

北邮通电实验报告

实验3 集成乘法器幅度调制电路 信息与通信工程学院 2016211112班 苏晓玥杨宇宁 2016210349 2016210350

一.实验目的 1.通过实验了解振幅调制的工作原理。 2.掌握用MC1496来实现AM和DSB的方法,并研究已调波与调制信号,载波之间的关系。3.掌握用示波器测量调幅系数的方法。 二.实验准备 1.本实验时应具备的知识点 (1)幅度调制 (2)用模拟乘法器实现幅度调制 (3)MC1496四象限模拟相乘器 2.本实验时所用到的仪器 (1)③号实验板《调幅与功率放大器电路》 (2)示波器 (3)万用表 (4)直流稳压电源 (5)高频信号源 三.实验内容 1.模拟相乘调幅器的输入失调电压调节。 2.用示波器观察正常调幅波(AM)波形,并测量其调幅系数。 3.用示波器观察平衡调幅波(抑制载波的双边带波形DSB)波形。 四.实验波形记录、说明 1.DSB信号波形观察

2.DSB信号反相点观察 3.DSB信号波形与载波波形的相位比较 结论:在调制信号正半周期间,两者同相;负半周期间,两者反相。

4.AM正常波形观测 5.过调制时的AM波形观察(1)调制度为100%

(2)调制度大于100% (3)调制度为30% A=260.0mv B=140.0mv

五.实验结论 我们通过实验了解振幅调制的工作原理是:调幅调制就是用低频调制信号去控制高频振荡(载波)的幅度,使其成为带有低频信息的调幅波。目前由于集成电路的发展,集成模拟相乘器得到广泛的应用,为此本实验采用价格较低廉的MC1496集成模拟相乘器来实现调幅之功能。 DSB信号波形与载波波形的相位关系是:在调制信号正半周期间,两者同相;负半周期间,两者反相。 通过实验了解到了调制度的计算方法 六.课程心得体会 通过本次实验,我们了解了振幅调制的工作原理并掌握了实现AM和DSB的方法,学会计算调制度,具体见实验结论。我们对集成乘法器幅度调制电路有了更好的了解,对他有了更深入的认识,提高了对通信电子电路的兴趣。 和模电实验的单独进行,通电实验增强了团队配合的能力,两个人的有效分工提高了实验的效率,减少了一个人的独自苦恼。

北邮通信原理实验 基于SYSTEMVIEW通信原理实验报告

北京邮电大学实验报告 题目:基于SYSTEMVIEW通信原理实验报告 班级:2013211124 专业:信息工程 姓名:曹爽 成绩:

目录 实验一:抽样定理 (3) 一、实验目的 (3) 二、实验要求 (3) 三、实验原理 (3) 四、实验步骤和结果 (3) 五、实验总结和讨论 (9) 实验二:验证奈奎斯特第一准则 (10) 一、实验目的 (10) 二、实验要求 (10) 三、实验原理 (10) 四、实验步骤和结果 (10) 五、实验总结和讨论 (19) 实验三:16QAM的调制与解调 (20) 一、实验目的 (20) 二、实验要求 (20) 三、实验原理 (20) 四、实验步骤和结果 (21) 五、实验总结和讨论 (33) 心得体会和实验建议 (34)

实验一:抽样定理 一、 实验目的 1. 掌握抽样定理。 2. 通过时域频域波形分析系统性能。 二、 实验要求 改变抽样速率观察信号波形的变化。 三、 实验原理 一个频率限制在0f 的时间连续信号()m t ,如果以0 12S T f 的间隔进行等间隔均匀抽样,则()m t 将被所得到的抽样值完全还原确定。 四、 实验步骤和结果 1. 按照图1.4.1所示连接电路,其中三个信号源设置频率值分别为10Hz 、15Hz 、20Hz ,如图1.4.2所示。 图1.4.1 连接框图

图1.4.2 信号源设置,其余两个频率值设置分别为15和20 2.由于三个信号源最高频率为20Hz,根据奈奎斯特抽样定理,最低抽样频率应 为40Hz,才能恢复出原信号,所以设置抽样脉冲为40Hz,如图1.4.3。 图1.4.3 抽样脉冲设置 3.之后设置低通滤波器,设置数字低通滤波器为巴特沃斯滤波器(其他类型的 低通滤波器也可以,影响不大),截止频率设置为信号源最高频率值20Hz,如图1.4.4。

操作系统的进程调度 实验报告

《计算机操作系统2》实验报告 实验一题目:操作系统的进程调度 姓名:学号:12125807 实验日期:2014.12 实验要求: 1.设计一个有n个进程工行的进程调度程序。每个进程由一个进程控制块(PCB)表示。 进程控制块通常应包含下述信息:进程名、进程优先数、进程需要运行的时间、占用CPU的时间以及进程的状态等,且可按调度算法的不同而增删。 2.调度程序应包含2~3种不同的调度算法,运行时可任意选一种,以利于各种算法的分 析比较。 3.系统应能显示或打印各进程状态和参数的变化情况,便于观察诸进程的调度过程 实验目的: 1.进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。本实习要 求学生独立地用高级语言编写和调试一个简单的进程调度程序。调度算法可任意选择或自行设计。例如,简单轮转法和优先数法等。本实习可加深对于进程调度和各种调度算法的理解。 实验内容: 1.编制和调试示例给出的进程调度程序,并使其投入运行。 2.自行设计或改写一个进程调度程序,在相应机器上调试和运行该程序,其功能应该不亚 于示例。 3.直观地评测各种调度算法的性能。 示例: 1.题目 本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程处于运行R(run)、就绪W(wait)和完成F(finish)三种状态之一,并假设起始状态都是就绪状态W。为了便于处理,程序进程的运行时间以时间片为单位计算。各进程的优先数或轮转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。 进程控制块结构如下:

PCB 进程标识数 链指针 优先数/轮转时间片数 占用CPU时间片数 进程所需时间片数 进程状态 进程控制块链结构如下: 其中:RUN—当前运行进程指针; HEAD—进程就绪链链首指针; TAID—进程就绪链链尾指针。 2.算法与框图 (1) 优先数法。 进程就绪链按优先数大小从高到低排列,链首进程首先投入运行。每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3,理由是该进程如果在一个时间片中完成不了,优先级应该降低一级。接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运行。原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。 (2) 简单轮转法。 进程就绪链按各进程进入的先后次序排列,进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相当于优先数法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。(3) 程序框图如下图所示。

北邮微波实验报告整理版

北京邮电大学信息与通信工程学院 微波实验报告 班级:20112111xx 姓名:xxx 学号:20112103xx 指导老师:徐林娟 2014年6月

目录 实验二分支线匹配器 (1) 实验目的 (1) 实验原理 (1) 实验内容 (1) 实验步骤 (1) 单支节 (2) 双支节 (7) 实验三四分之一波长阻抗变换器 (12) 实验目的 (12) 实验原理 (12) 实验内容 (13) 实验步骤 (13) 纯电阻负载 (14) 复数负载 (19) 实验四功分器 (23) 实验目的 (23) 实验原理 (23) 实验内容 (24) 实验步骤 (24) 公分比为1.5 (25) 公分比为1(等功分器) (29) 心得体会 (32)

201121111x 班-xx 号-xx ——电磁场与微波技术实验报告 实验二 分支线匹配器 实验目的 1.熟悉支节匹配器的匹配原理 2.了解微带线的工作原理和实际应用 3.掌握Smith 图解法设计微带线匹配网络 实验原理 支节匹配器是在主传输线上并联适当的电纳(或者串联适当的电抗),用附加的反射来抵消主传输线上原来的反射波,以达到匹配的目的。 单支节匹配器,调谐时主要有两个可调参量:距离d 和由并联开路或短路短截线提供的电纳。匹配的基本思想是选择d ,使其在距离负载d 处向主线看去的导纳Y 是Y0+jB 形式。然后,此短截线的电纳选择为-jB ,根据该电纳值确定分支短截线的长度,这样就达到匹配条件。 双支节匹配器,通过增加一个支节,改进了单支节匹配器需要调节支节位置的不足,只需调节两个分支线长度,就能够达到匹配(但是双支节匹配不是对任意负载阻抗都能匹配的,即存在一个不能得到匹配的禁区)。 微带线是有介质εr (εr >1)和空气混合填充,基片上方是空气,导体带条和接地板之间是介质εr ,可以近似等效为均匀介质填充的传输线,等效介质电常数为 εe ,介于1和εr 之间,依赖于基片厚度H 和导体宽度W 。而微带线的特性阻抗与其等效介质电常数为εe 、基片厚度H 和导体宽度W 有关。 实验内容 已知:输入阻抗Z 75in ,负载阻抗Z (6435)l j ,特性阻抗0Z 75 ,介质基片 2.55r ,1H mm 。 假定负载在2GHz 时实现匹配,利用图解法设计微带线单支节和双支节匹配网络,假设双支节网络分支线与负载的距离114d ,两分支线之间的距离为21 8 d 。画出几种可能的电路图并且比较输入端反射系数幅度从1.8GHz 至2.2GHz 的变化。 实验步骤 1.根据已知计算出各参量,确定项目频率。 2.将归一化阻抗和负载阻抗所在位置分别标在Smith 圆上。 3.设计单枝节匹配网络,在图上确定分支线与负载的距离以及分支线的长度,根据给定的介质基片、特性阻抗和频率用TXLINE 计算微带线物理长度和宽度。此处应该注意电长度和实际长度的联系。 4.画出原理图,在用微带线画出基本的原理图时,注意还要把衬底添加到图中,将各部分的参数填入。注意微带 分支线处的不均匀性所引起的影响,选择适当的模型。 5.负载阻抗选择电阻和电感串联的形式,连接各端口,完成原理图,并且将项目的频率改为1.8—2.2GHz 。 6.添加矩形图,添加测量,点击分析,测量输入端的反射系数幅值。 7.同理设计双枝节匹配网络,重复上面的步骤。

进程调度算法模拟实验

华北科技学院计算机系综合性实验 实验报告 课程名称操作系统C 实验学期2012至2013学年第2学期学生所在系部计算机系 年级专业班级 学生姓名学号 任课教师杜杏菁 实验成绩 计算机系制

《操作系统C》课程综合性实验报告 开课实验室:基础六机房2013年6月3日 实验题目进程调度算法模拟 一、实验目的 通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。 二、设备与环境 1.硬件设备:PC机一台 2.软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C \C++\Java等编程语言环境。 三、实验内容 (1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态优先权调度)的调度。 (2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段: ?进程标识数ID。 ?进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。 ?进程已占用CPU时间CPUTIME。 ?进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。 ?进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进 入阻塞状态。 ?进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将 转换成就绪状态。 ?进程状态STATE。 ?队列指针NEXT,用来将PCB排成队列。 (3)优先数改变的原则: ?进程在就绪队列中呆一个时间片,优先数增加1。 ?进程每运行一个时间片,优先数减3。 (4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。

北邮《现代通信技术》实验报告一

现代通信技术实验报告 班级: 2012211110 学号: 2012210299 姓名:未可知

在学习现代通信技术实验课上,老师提到的一个词“通信人”警醒了我,尽管当初填报志愿时选择了通信工程最终也如愿以偿,进入大三,身边的同学忙着保研、考研、出国、找工作,似乎大家都为了分数在不懈奋斗。作为一个北邮通信工程的大三学生,我也不断地问自己想要学习的是什么,找寻真正感兴趣的是什么,通信这个行业如此之大,我到底适合什么。本学期,现代通信技术这本书让我了解到各种通信技术的发展和规划,也让我对“通信人”的工作有了更深刻的认识。 一、通信知识的储备 《现代通信技术》第一页指出,人与人之间通过听觉、视觉、嗅觉、触觉等感官,感知现实世界而获取信息,并通过通信来传递信息。所谓信息,是客观事物状态和运动特征的一种普遍形式,客观世界中大量地存在、产生和传递着以这些方式表示出来的各种各样的信息。信息的目的是用来“消除不可靠的因素”,它是物质运动规律总和。因此,我们通信人的任务就是利用有线、无线等形式来将信息从信源传递到信宿,在传输过程中保证通信的有效性和可靠性。 而具体来讲,要实现信息传递,通信网是必需的通信体系,其中通信网分层的结构形式需要不同的支撑技术,包括业务网技术,向用户提供电话、电报、数据、图像等各种电信业务的网络;介入与传送网技术,实现信息由一个点传递到另一个点或一些点的功能。对此,我们通信工程专业学习课程的安排让我们一步步打下基础,建立起知识储备。 知识树如下: 如知识树所述,通信工程课程体系可以大致分为一下6类基础:

数学基础:工科数学分析,线性代数,复变函数,概率论基础,随机过程; 电路基础:电路分析,模拟电子技术,数字逻辑电路,通信电子电路; 场与波基础:电磁场与电磁波,微波技术,射频与天线; 计算机应用能力:C 语言程序设计,微机原理与接口技术,计算机网络,数据结构,面向对象程序设计,实时嵌入式系统 信号处理类课程:信号与系统,信号处理,图像处理,DSP 原理及应用; 通信类课程:通信原理,现代通信技术,信息论基础,移动通信,光纤通信等。 从大一开始学习的工科数学分析,大学物理,大学计算机基础等课程为基础类课程,旨在培养我们的语言能力,数学基础,物理基础,计算机能力,然后逐步加大难度,细化课程,方向逐渐明朗详细。同时,课程中加入了各种实验,锻炼了我们的动手能力。 二、通信知识的小小应用 实验课上老师说过,以我们所学的知识已经可以制作简单通信的手机的草图了,我对此跃跃欲试。经过思考和调研,以下是我对于简单手机设计的原理框图和思考结果。 一部手机的结构包括接收机、发射机、中央控制模块、电源和人机界面部分,如下图 手机结构设计图 电路部分包括射频和逻辑音频电路部分,射频电路包括从天线到接收机的解调输出,与发射的I/O 调制到功率放大器输出的电路。其中,射频接收电路完成接收信号的滤波、信号放大、解调等功能;射频发射电路完成语音基带信号的调制、变频、功率放大等功能。要用到的超外差接收机、混频器、鉴相器等在《通信电子电路》书本中的知识。逻辑音频包括从接收解调到接收音频输出、送话器电路到发射I/O 调制器及逻辑电路部分的中央处理单元、数字语音处理及各种存储器电路。由核心控制模块CPU 、EEPROM 、 FLASH 、SRAM 等部分组成,一个基本 天线 接收机 发射机 频率合成 电源 逻 辑 音 频 人 机 交 互

北京邮电大学2009年操作系统期末试卷

北京邮电大学2008——2009学年第一学期 《操作系统》期末考试试题(A) 1.FILL IN BLANKS (10 points) 1.1 A _trap___ is a software-generated interrupt caused either by an error or by a specific request from a user program that an operating-system services be performed. 1.2 A ______ is used in Unix systems to notify a process that a particular event has occurred. 1.3 To manage the process executing, OS records the state and other information (e.g. the priority) of the process in . 1.4 The scheduling criteria include CPU utilization, throughput, turnaround time, waiting time, and response time .

1.5 For n concurrent processes that mutual exclusively use some resources, the code segmentations, in which the processes access the resources, are called deadlock . 1.6. The ___visual memory___ scheme enables users to run programs that are larger than actual physical memory, this allows the execution of a process that is not completely in memory. 1.7. The __FIFO___ page replacement algorithm associates with each page the time when that page was brought into memory. When a page must be replaced, the oldest page is chosen. 1.8The file system resides permanently on , which is designed to hold a large amount of data permanently. 1.9The file system itself is generally composed of many different levels, including the logical file system, the file-organization module, the and the I/O control. 1.10 T he kernel’s I/O subsystem provides numero us services. Among these are I/O scheduling, , caching, spooling, device reservation, and error handling, and name translation. 2.CHOICE ( 10 points ) 2.1 _____ operating systems have well defined, fixed time constraints. Processing must be done within the defined constrains, or the system will fail. A. Multimedia B. Real-time C. Clustered D. Network 2.2 Which one of the following OS is implemented based on microkernel structure? _____

(完整word版)操作系统实验报告 实验一 进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5));

北邮arduino实验报告

电子电路综合实验设计 实验名称: 基于 Arduino 的电压有效值测量电路设计与实现 学院: 班级: 学号: 姓名: 班内序号:

实验 基于Arduino 的电压有效值测量电路设计与实现 一. 摘要 Arduino是一个基于开放原始码的软硬件平台,可用来开发独立运作、并具互动性的电子产品,也可以开发与PC 相连的周边装置,同时能在运行时与PC 上的软件进行交互。为了测量正弦波电压有效值,首先我们设计了单电源供电的半波整流电路,并进行整流滤波输出,然后选择了通过Arduino设计了读取电压有效值的程序,并实现使用此最小系统来测量和显示电压有效值。在频率和直流电压幅度限定在小范围的情况下,最小系统的示数基本和毫伏表测量的值相同。根据交流电压有效值的定义,运用集成运放和设计的Arduino最小系统的结合,实现了运用少量元器件对交流电压有效值的测量。 关键字:半波整流整流滤波 Arduino最小系统读取电压有效值 二. 实验目的 1、熟悉Arduino 最小系统的构建和使用方法; 2、掌握峰值半波整流电路的工作原理; 3、根据技术指标通过分析计算确定电路形式和元器件参数; 4、画出电路原理图(元器件标准化,电路图规范化); 5、熟悉计算机仿真方法; 6、熟悉Arduino 系统编程方法。 三. 实验任务及设计要求 设计实现 Arduino 最小系统,并基于该系统实现对正弦波电压有效值的测量和显示。 1、基本要求 (1)实现Arduino 最小系统,并能下载完成Blink 测试程序,驱动Arduino 数字13 口LED 闪烁; (2)电源部分稳定输出5V 工作电压,用于系统供电; (3)设计峰值半波整流电路,技术指标要求如下:

北邮通信原理实验报告

北京邮电大学通信原理实验报告 学院:信息与通信工程学院班级: 姓名: 姓名:

实验一:双边带抑制载波调幅(DSB-SC AM ) 一、实验目的 1、了解DSB-SC AM 信号的产生以及相干解调的原理和实现方法。 2、了解DSB-SC AM 信号波形以及振幅频谱特点,并掌握其测量方法。 3、了解在发送DSB-SC AM 信号加导频分量的条件下,收端用锁相环提取载波的原理及其实现方法。 4、掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波的调试方法。 二、实验原理 DSB 信号的时域表达式为 ()()cos DSB c s t m t t ω= 频域表达式为 1 ()[()()]2 DSB c c S M M ωωωωω=-++ 其波形和频谱如下图所示 DSB-SC AM 信号的产生及相干解调原理框图如下图所示

将均值为零的模拟基带信号m(t)与正弦载波c(t)相乘得到DSB—SC AM信号,其频谱不包含离散的载波分量。 DSB—SC AM信号的解调只能采用相干解调。为了能在接收端获取载波,一种方法是在发送端加导频,如上图所示。收端可用锁相环来提取导频信号作为恢复载波。此锁相环必须是窄带锁相,仅用来跟踪导频信号。 在锁相环锁定时,VCO输出信号sin2πf c t+φ与输入的导频信号cos2πf c t 的频率相同,但二者的相位差为φ+90°,其中很小。锁相环中乘法器的两个 输入信号分别为发来的信号s(t)(已调信号加导频)与锁相环中VCO的输出信号,二者相乘得到 A C m t cos2πf c t+A p cos2πf c t?sin2πf c t+φ =A c 2 m t sinφ+sin4πf c t+φ+ A p 2 sinφ+sin4πf c t+φ 在锁相环中的LPF带宽窄,能通过A p 2 sinφ分量,滤除m(t)的频率分量及四倍频载频分量,因为很小,所以约等于。LPF的输出以负反馈的方式控制VCO,使其保持在锁相状态。锁定后的VCO输出信号sin2πf c t+φ经90度移相后,以cos2πf c t+φ作为相干解调的恢复载波,它与输入的导频信号cos2πf c t 同频,几乎同相。 相干解调是将发来的信号s(t)与恢复载波相乘,再经过低通滤波后输出模拟基带信号 A C m t cos2πf c t+A p cos2πf c t?cos2πf c t+φ =A c 2 m t cosφ+cos4πf c t+φ+ A p 2 cosφ+cos4πf c t+φ 经过低通滤波可以滤除四倍载频分量,而A p 2 cosφ是直流分量,可以通过隔直

实验一处理器调度实验报告

处理器调度一、实验内容 选择一个调度算法,实现处理器调度。 二、实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。 当就绪状态进程 个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下处理器调度,帮助学生加深了解处理器调度的工作。 三、实验题目 设计一个按优先数调度算法实现处理器调度的程序 提示: (1)假定系统有五个进程,每一个进程用一个进程控制块PCB来代表。进 程控制块的格 式为: 其中,进程名----作为进程的标识,假设五个进程的进程名分别是R, P2, P3, P4,R。 指针—按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块

首地址,最后一个进程中的指针为“ 0”。 要求运行时间-- 假设进程需要运行的单位时间数。 优先数-赋予进程的优先数,调度时总是选取优先数大的进程先执行。 状态-可假设有两种状态,“就绪”状态和“结束“状态,五个进程的初 始状态都为 “就绪“状态,用“ R”表示,当一个进程运行结束后,它的状态变为“结束”, 用“ E”表示。 (2)在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数” 和“要求运行时间”。 (3)为了调度方便,把五个进程按给定的优先数从大到小连成队列,用一单元指出队首 进程,用指针指出队列的连接情况。例: 队首标志 (4)处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优 先数就减“ 1”。由于本实验是模拟处理器调度,所以,对被选中的进程并不实际的 启动运行,而是执行: 优先数- 1 要求运行时间-1 来模拟进程的一次运行提醒注意的是:在实际的系统中,当一个进程被选中运

北邮高级操作系统期末试卷

2017,2015,2013北邮高级操作系统 试题 学号: 姓名: 成绩: 、分布式操作系统中的透明性主要是什么?其中那些透明性容易实现?哪些难实现????分? 难点: 、创建一个分布式数据库系统可提供有效的存取手段来操纵这些结点上的子数据库。 、不确定性,控制比较复杂,尤其是在资源管理上要附加许多协调操作—资源属于局部工作站,性能、可靠性对网络的依赖性强,安全保密——基础不好。用户掌握有许软件接口,相应的应用软件较少,需要大力开发。 、分布式互斥中集中式算法、分布式算法、令牌算法。分析一下其中那个算法比较实用,为什么????分? 集中式算法:集中式算法借鉴了集中式互斥算法的思想,在分布式系统

中,选出一个进程为协调者 ?通过科学的分析制定一套规则? 。协调者对所有的请求进行排队并根据一定的规则授予许可。协调者接受请求以后,检查临界区内的资源是否被其他进程占用。如果是,则它将当前请求进程插入到对应临界资源的请求队列中 否则,回复一个同意消息给请求进程,通知它可以访问该临界资源。该算法通俗易懂,既能够杜绝死锁、饥饿等现象发生,又能保证资源的互斥访问顺利进行。 但是它也有缺点,由于是集中式管理,所以一旦管理进程出现故障,则整个系统将处于瘫痪状态。因此,管理进程的性能完全决定了算法的效率,应用范围小,难以普及。 分布式算法:分布式算法中运用到广播请求通信,当进程想请求共享资源时,需要首先建立三个变量 准备进入临界区,实时时间和处理器号,并利用广播通信发送给正在运行的所有进程。该算法的核心思想如下 当进程想进入临界区时 要建立一个包括进入的临界区名字、处理器号和当前时间的消息 并把消息发送给所有其它进程。当进程接收到另一个进程的请求消息时 将分下面三种情况来区别对待 ?若接收者不在临界区中 也不想进入临界区 就向发送者发送 ?消息; ?若接收者已经在临界区内就不必回答 而是负责对请求消息排队; ?若接收者要进入临界区 但还没进入 它就会把接收的消息和它发送的消息的时间戳进行对比 取小的那个。如果接收的消息时间戳小 就发 ?消息 如果发送的消息时间戳小 那么接收者负责排列请求队列而不发送任何消息。当进程接收到允许消息时 它就进入临界区。从临界区退出时 向队列中的所有进程发送 ?消息 并将自己从队列中删除。该算法可以保证访问临界区的互斥性以及无死锁进程、无饥饿进程。但是这种算法有个严重的缺点是算法太复杂并且不健壮 任何一个进程崩溃都会影响到算法的正确性。二是令牌丢失 令牌算法:令牌算法中引入了令牌,所有的进程组成一个环模型,环中每个进程需要知道它的下一个位置的节点的名称。令牌在环上顺序传递,当

操作系统原理-进程调度实验报告

一、实验目的 通过对进程调度算法的设计,深入理解进程调度的原理。 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。 进程调度分配处理机,是控制协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选中一个进程,把CPU的使用权交给被选中的进程。 进程通过定义一个进程控制块的数据结构(PCB)来表示;每个进程需要赋予进程ID、进程到达时间、进程需要运行的总时间的属性;在RR中,以1为时间片单位;运行时,输入若干个进程序列,按照时间片输出其执行序列。 二、实验环境 VC++6.0 三、实验内容 实现短进程优先调度算法(SPF)和时间片轮转调度算法(RR) [提示]: (1) 先来先服务(FCFS)调度算法 原理:每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该进程完成或因发生事件而阻塞,才退出处理器。 将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理,是一种最普遍和最简单的方法。它优先考虑在系统中等待时间最长的作业,而不管要求运行时间的长短。 按照就绪进程进入就绪队列的先后次序进行调度,简单易实现,利于长进程,CPU繁忙型作业,不利于短进程,排队时间相对过长。 (2) 时间片轮转调度算法RR

原理:时间片轮转法主要用于进程调度。采用此算法的系统,其程序就绪队列往往按进程到达的时间来排序。进程调度按一定时间片(q)轮番运行各个进程. 进程按到达时间在就绪队列中排队,调度程序每次把CPU分配给就绪队列首进程使用一个时间片,运行完一个时间片释放CPU,排到就绪队列末尾参加下一轮调度,CPU分配给就绪队列的首进程。 固定时间片轮转法: 1 所有就绪进程按 FCFS 规则排队。 2 处理机总是分配给就绪队列的队首进程。 3 如果运行的进程用完时间片,则系统就把该进程送回就绪队列的队尾,重新排队。 4 因等待某事件而阻塞的进程送到阻塞队列。 5 系统把被唤醒的进程送到就绪队列的队尾。 可变时间片轮转法: 1 进程状态的转换方法同固定时间片轮转法。 2 响应时间固定,时间片的长短依据进程数量的多少由T = N × ( q + t )给出的关系调整。 3 根据进程优先级的高低进一步调整时间片,优先级越高的进程,分配的时间片越长。 多就绪队列轮转法: (3) 算法类型 (4)模拟程序可由两部分组成,先来先服务(FCFS)调度算法,时间片轮转。流程图如下:

北邮程序设计实验报告

程序设计实践 设 计 报 告 课题名称:邮件客户端学生姓名: 班级: 2 班内序号:16 学号: 2 日期:2014.6.4

1.课题概述 1.1课题目标和主要内容 本课题主要通过MFC的方式,利用SOCKET以及SMTP相关知识,来实现邮件(可携带附件)的定向发送,借此来复习和巩固C++编程的基本思想;学习SOCKET以及SMTP的相关知识,了解复杂网络应用程序的设计方法,并独立完成一个网络应用。 1.2系统的主要功能 1.邮件的发送(不携带附件) 2.邮件的发送(携带附件) 3.邮件接收 2. 系统设计 2.1 系统总体框架 程序的功能由MyEmailClientDlg.cpp,SMTP.cpp,MailMessage.cpp,Base64.cpp, MIMECode.cpp,MIMEContentAgent.cpp,MIMEMessage.cpp,AppOctetStream.cpp, MyEmailClient.cpp,StdAfx.cpp,TextPlain.cpp来实现。其中MIMECode.cpp, MIMEContentAgent.cpp,MIMEMessage.cpp, AppOctetStream.cpp, TextPlain.cpp来对MIME 协议进行封装,Base64.cpp来对Base64编码进行封装,SMTP.cpp是对SMTP协议进行封装,MailMessage.cpp是利用MIME协议对邮件内容的一个处理,最终通过MyEmailClientDlg.cpp 来实现邮件的发送的功能。 2.2 系统详细设计 [1] 模块划分图及描述 协议模块:包括网络应用程序中的各种协议,包括STMP协议,MIME协议等。 处理模块:主要实现对数据的进行编码以及解码。 实现模块:主要内容为邮件发送的具体步骤,相关按钮操作。 [2] 类关系图及描述 协议类:CSMTP, CTEXTPlai, CMIMECode,C MIMEContentAgent,C MIMEMessage, CAppOctetStream, CTextPlain.主要为协议中信息处理的中作用 编码类:Base64, MailMessage.主要为对邮件信息的处理

相关文档
最新文档