杭电操作系统实验报告模板

合集下载

操作系统实验报告模板

操作系统实验报告模板

操作系统实验报告实验1分析实验结果参照实验指导书回答下面的问题:5:6:从实验中得到了两次不同的结果原因是程序采用了多线程的写法,两个线程同时抢占CPU资源,CPU并发处理该程序。

10:11:CPU并发处理程序第一次先运行func2()中的x=x+2 再输出x=2 接着执行func2()中的y=3,然后执行func1() x=3 y=y+x, 输出y 所以结果为x=2 y=7第二次先运行func1()中的x=4 y=4 再运行func2()中y=3 x=x+2得到x=6 y=315:CPU 并发执行程序使得在完成整个循环之前输出x的值19:通过控制turn变量使得程序先完成func2()的完整循环再完成func1()的完整循环最后得到结果10023:由于信号量s 的出现通过wai(s)和signal(s)语句避免了在未完成循环前推出的情况实验2分析实验结果参照实验指导书回答下面的问题:5:11:发生死锁交换p()函数中wait(e)与wait(s)的顺序之后消费者进入缓冲池后没能够出去,一直占用缓冲池,使得生产者无法进入缓冲池生产.使得进程陷入死锁不剥夺.17:发生死锁:c()函数中wait(n)与wait(s)的顺序后.会导致生产者处于一直生产的状态.当缓冲池满后,生产者在缓冲池中,出不去,消费者也进不了缓冲池.仅使进程处于请求保持状态,还有不剥夺,环路等待状态.实验3(该实验为期中考试项目,按照期中考试要求提交报告)实验4问题1:描述内存控制块结构;描述内存控制块与内存分区和内存块的关系只有当把内存控制块与分区关联起来之后,系统才能对其进行相应的管理和控制。

它才是一个真正的动态内存区。

问题2:应用程序的源代码(请对内存操作给出注释)#include "includes.h"#define TASK_STK_SIZE 512 //任务堆栈长度OS_STK StartTaskStk[TASK_STK_SIZE];OS_STK MyTaskStk[TASK_STK_SIZE];OS_STK YouTaskStk[TASK_STK_SIZE];OS_STK HerTaskStk[TASK_STK_SIZE];INT16S key; //用于退出uCOS_II的键char *s;char *s1="MyTask--ZYS";char *s2="YouTask-ZYS";char *s3="HerTask-ZYS";INT8U err;INT8U y=0; //字符显示位置INT8U Times=0;OS_MEM *IntBuffer; //定义内存控制块指针INT8U IntPart[8][6]; //划分分区及内存块INT8U *IntBlkPtr;OS_MEM_DATA MemInfo;void StartTask(void *pdata);void MyTask(void *pdata);void YouTask(void *pdata);void HerTask(void *pdata);/************************主函数******************************************/void main (void){OSInit(); //初始化uCOS_IIPC_DOSSaveReturn(); //保存Dos环境PC_VectSet(uCOS, OSCtxSw); //安装uCOS_II中断IntBuffer=OSMemCreate(IntPart,8,6,&err);OSTaskCreate(StartTask,(void*)0,&StartTaskStk[TASK_STK_SIZE - 1], 0);OSStart();}/****************************任务StartTask *************************************************/ void StartTask (void *pdata){#if OS_CRITICAL_METHOD == 3OS_CPU_SR cpu_sr;#endifpdata = pdata;OS_ENTER_CRITICAL();PC_VectSet(0x08, OSTickISR);PC_SetTickRate(OS_TICKS_PER_SEC);OS_EXIT_CRITICAL();OSStatInit();OSTaskCreate(MyTask,(void*)0,&MyTaskStk[TASK_STK_SIZE - 1], 3);OSTaskCreate(YouTask,(void*)0,&YouTaskStk[TASK_STK_SIZE - 1], 4);OSTaskCreate(HerTask,(void*)0,&HerTaskStk[TASK_STK_SIZE - 1], 5);// 按ESC 退出ucosfor (;;){if (PC_GetKey(&key) == TRUE) {if (key == 0x1B) {PC_DOSReturn();}}OSTimeDlyHMSM(0, 0, 3, 0);}}/****************************任务MyTask *************************************************/void MyTask(void *pdata){#if OS_CRITICAL_METHOD==3OS_CPU_SR cpu_sr;#endifpdata=pdata;for(;;){PC_DispStr(10,++y,s1,DISP_BGND_BLACK+DISP_FGND_WHITE);IntBlkPtr=OSMemGet(IntBuffer,&err); //请求内存块,分区指针,错误信息OSMemQuery(IntBuffer,&MemInfo); //查询内存控制块信息,待查询内存控制块指针sprintf(s,"%0x",MemInfo.OSFreeList); // 头指针PC_DispStr(30,y,s,DISP_BGND_BLACK+DISP_FGND_WHITE);sprintf(s,"%d",MemInfo.OSNUsed); //显示已用数目PC_DispStr(40,y,s,DISP_BGND_BLACK+DISP_FGND_WHITE);if(Times>4){OSMemPut(IntBuffer,IntBlkPtr); //释放内存块,}Times++;OSTimeDlyHMSM(0,0,1,0); //等待1s}}/**********************************任务YouTask*************************************/void YouTask(void *pdata){#if OS_CRITICAL_METHOD==3OS_CPU_SR cpu_sr;#endifpdata=pdata;for(;;){PC_DispStr(10,++y,s2,DISP_BGND_BLACK+DISP_FGND_YELLOW);IntBlkPtr=OSMemGet(IntBuffer,&err); //请求内存块,分区指针,错误信息OSMemQuery(IntBuffer,&MemInfo); //查询内存控制块信息,待查询内存控制块指针sprintf(s,"%0x",MemInfo.OSFreeList); // 头指针PC_DispStr(30,y,s,DISP_BGND_BLACK+DISP_FGND_YELLOW);sprintf(s,"%d",MemInfo.OSNUsed); //显示已用数目PC_DispStr(40,y,s,DISP_BGND_BLACK+DISP_FGND_YELLOW);OSMemPut(IntBuffer,IntBlkPtr); //释放内存块,OSTimeDlyHMSM(0,0,2,0); //等待2s}}/**************************任务HerTask******************************/void HerTask(void *pdata){#if OS_CRITICAL_METHOD==3OS_CPU_SR cpu_sr;#endifpdata=pdata;for(;;){PC_DispStr(10,++y,s3,DISP_BGND_BLACK+DISP_FGND_RED);IntBlkPtr=OSMemGet(IntBuffer,&err); //请求内存块,分区指针,错误信息OSMemQuery(IntBuffer,&MemInfo); //查询内存控制块信息,待查询内存控制块指针sprintf(s,"%0x",MemInfo.OSFreeList); // 头指针PC_DispStr(30,y,s,DISP_BGND_BLACK+DISP_FGND_RED);sprintf(s,"%d",MemInfo.OSNUsed); //显示已用数目PC_DispStr(40,y,s,DISP_BGND_BLACK+DISP_FGND_RED);OSMemPut(IntBuffer,IntBlkPtr); //释放内存块,OSTimeDlyHMSM(0,0,1,0); //等待1s}}问题3:上述程序输出结果的截屏画面实验5FCFS磁盘调度算法的实现#include<stdio.h>#include<math.h>int i,j,t;int point=100,distance=0;float sum=0,average=0;int array[9]={55,58,39,18,90,160,150,38,184};int fcfs(int array[9]){int count=0;printf("从100号磁道开始");printf("\n");printf("被访问的下一个磁道号移动磁道数");printf("\n");for(i=0;i<9;i++){count = count+1;printf(" %d ",array[i]);distance= fabs(point-array[i]);point=array[i];sum=sum+distance;printf(" %d ",distance);printf("\n");}average=sum/count;printf("sum= %2f",sum);printf("\n");printf("average= %f",average);printf("\n");}void main(){fcfs(array);}。

操作系统实验实验报告

操作系统实验实验报告

操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。

本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。

二、实验环境本次实验使用的操作系统为 Windows 10 专业版,开发工具为Visual Studio 2019,编程语言为 C 和 C++。

实验硬件环境为一台配备Intel Core i7 处理器、16GB 内存、512GB SSD 硬盘的个人计算机。

三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新的进程,并在完成任务后终止进程。

在实验中,我们使用了 Windows API 函数 CreateProcess 和 TerminateProcess 来完成进程的创建和终止操作。

通过观察进程的创建和终止过程,深入理解了进程的生命周期和状态转换。

2、进程同步与互斥为了实现进程之间的同步与互斥,我们使用了信号量、互斥量等同步对象。

通过编写多线程程序,模拟了多个进程对共享资源的访问,实现了对共享资源的互斥访问和同步操作。

在实验中,我们深刻体会到了进程同步与互斥的重要性,以及不正确的同步操作可能导致的死锁等问题。

(二)内存管理实验1、内存分配与释放使用 Windows API 函数 VirtualAlloc 和 VirtualFree 进行内存的分配和释放操作。

通过实验,了解了内存分配的不同方式(如堆分配、栈分配等)以及内存释放的时机和方法,掌握了内存管理的基本原理和操作技巧。

2、内存分页与分段通过编程模拟内存的分页和分段管理机制,了解了内存分页和分段的基本原理和实现方法。

在实验中,我们实现了简单的内存分页和分段算法,对内存的地址转换和页面置换等过程有了更深入的理解。

(三)文件系统实验1、文件操作使用 Windows API 函数 CreateFile、ReadFile、WriteFile 等进行文件的创建、读取和写入操作。

《操作系统》实验报告

《操作系统》实验报告

《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。

二、实验环境本次实验在以下环境中进行:操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、进程管理实验进程是操作系统中最基本的执行单元。

在这个实验中,我们使用C++编写程序来创建和管理进程。

通过观察进程的创建、执行和结束过程,理解进程的状态转换和资源分配。

首先,我们编写了一个简单的程序,创建了多个子进程,并通过进程标识符(PID)来跟踪它们的运行状态。

然后,使用等待函数来等待子进程的结束,并获取其返回值。

在实验过程中,我们发现进程的创建和销毁需要消耗一定的系统资源,而且进程之间的同步和通信需要谨慎处理,以避免出现死锁和竞争条件等问题。

2、内存管理实验内存管理是操作系统的核心功能之一,它直接影响系统的性能和稳定性。

在这个实验中,我们研究了动态内存分配和释放的机制。

使用 C++中的 new 和 delete 操作符来分配和释放内存。

通过观察内存使用情况和内存泄漏检测工具,了解了内存分配的效率和可能出现的内存泄漏问题。

同时,我们还探讨了内存分页和分段的概念,以及虚拟内存的工作原理。

通过模拟内存访问过程,理解了页表的作用和地址转换的过程。

3、文件系统实验文件系统是操作系统用于管理文件和目录的机制。

在这个实验中,我们对文件的创建、读写和删除进行了操作。

使用 C++的文件流操作来实现对文件的读写。

通过创建不同类型的文件(文本文件和二进制文件),并对其进行读写操作,熟悉了文件的打开模式和读写方式。

此外,还研究了文件的权限设置和目录的管理,了解了如何保护文件的安全性和组织文件的结构。

4、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。

《操作系统》课内实验报告

《操作系统》课内实验报告

《操作系统》课内实验报告一、实验目的本次《操作系统》课内实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握常见操作系统命令的使用,提高对操作系统的实际应用能力和问题解决能力。

二、实验环境本次实验在计算机实验室进行,使用的操作系统为 Windows 10 和Linux(Ubuntu 发行版)。

实验所使用的计算机配置为:Intel Core i5 处理器,8GB 内存,500GB 硬盘。

三、实验内容1、进程管理在 Windows 系统中,通过任务管理器观察进程的状态、优先级、CPU 使用率等信息,并进行进程的结束和优先级调整操作。

在 Linux 系统中,使用命令行工具(如 ps、kill 等)实现相同的功能。

2、内存管理使用 Windows 系统的性能监视器和资源监视器,查看内存的使用情况,包括物理内存、虚拟内存的占用和分配情况。

在 Linux 系统中,通过命令(如 free、vmstat 等)获取类似的内存信息,并分析内存的使用效率。

3、文件系统管理在 Windows 系统中,对文件和文件夹进行创建、复制、移动、删除等操作,了解文件的属性设置和权限管理。

在 Linux 系统中,使用命令(如 mkdir、cp、mv、rm 等)完成相同的任务,并熟悉文件的所有者、所属组和权限设置。

4、设备管理在 Windows 系统中,查看设备管理器中的硬件设备信息,安装和卸载设备驱动程序。

在 Linux 系统中,使用命令(如 lspci、lsusb 等)查看硬件设备,并通过安装内核模块来支持特定设备。

四、实验步骤1、进程管理实验(1)打开 Windows 系统的任务管理器,切换到“进程”选项卡,可以看到当前系统中正在运行的进程列表。

(2)选择一个进程,右键点击可以查看其属性,包括进程 ID、CPU 使用率、内存使用情况等。

(3)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。

操作系统实验报告模板

操作系统实验报告模板

操作系统实验报告1. 背景操作系统是计算机系统中的核心软件,负责管理和控制计算机硬件资源,为上层应用程序提供运行环境。

操作系统的性能和稳定性对计算机系统的整体效能和可靠性具有重要影响。

本次实验旨在通过设计一个简单的操作系统,深入理解操作系统的原理和功能,并通过实践来加深对操作系统的理解。

2. 分析2.1 实验目标本次实验的主要目标是设计一个简单的操作系统,并完成以下任务: - 实现进程管理功能,包括进程创建、调度、执行和终止等; - 实现内存管理功能,包括内存分配和回收等; - 实现文件管理功能,包括文件读写、文件打开关闭等; - 实现输入输出设备管理功能,包括设备驱动程序设计等。

2.2 实验环境在本次实验中,我们使用C语言进行编程,并借助模拟器来模拟计算机硬件环境。

具体环境配置如下: - 操作系统:Linux - 开发语言:C语言 - 模拟器:QEMU2.3 实验设计本次实验分为以下几个部分: 1. 进程管理:设计并实现进程控制块(PCB),包括进程状态、优先级等信息,并实现进程的创建、调度和终止等功能。

2. 内存管理:设计并实现内存管理单元(MMU),包括内存分配和回收等功能。

3. 文件管理:设计并实现文件控制块(FCB),包括文件的打开、关闭、读写等功能。

4.设备管理:设计并实现设备驱动程序,包括设备的初始化、读写操作等功能。

2.4 实验流程本次实验的主要流程如下: 1. 确定实验目标和环境。

2. 设计并实现进程管理功能。

3. 设计并实现内存管理功能。

4. 设计并实现文件管理功能。

5. 设计并实现设备管理功能。

6. 进行测试和调试,确保操作系统的正确性和稳定性。

3. 结果经过以上的设计和实现,我们成功完成了一个简单的操作系统,并具备以下特点:- 支持多进程管理,包括进程创建、调度、执行和终止等功能; - 支持内存管理,包括内存分配和回收等功能; - 支持文件管理,包括文件打开、关闭、读写等功能; - 支持输入输出设备管理,包括设备驱动程序设计等功能。

杭电计算机组成原理实验报告.doc

杭电计算机组成原理实验报告.doc

杭电计算机组成原理实验报告篇一:杭电计组实验报告9计组实验九老师:包健一、源代码测试模块代码:moduleTest_Top;// Inputsreginclk;regmem_clk;regrst;reg [3:0] SW;// Outputswire [7:0] LED;// Instantiate the Unit Under TestTop uut ,.mem_clk,.rst,.LED,.SW);reg [2:0] i;initial begin// Initialize Inputsinclk = 0;mem_clk = 0;rst = 0;SW = 0;i=0;// Wait 100 ns for global reset to finish #100;rst = 1;#100;rst =0 ;#100;foreverbegin#100;mem_clk=~mem_clk;i=i+1;ifinclk=~inclk;endendendmodule顶层模块代码:moduleMy_I_CPU;wireclk_n = ~clk;wire[31:0] codes;Inst_Fetch1 inst_fetch,.clk,.Inst_codes);wire[5:0] OP;wire[5:0] func;wire[2:0] ALU_OP;wirerd_rt_s;wireimm_s;wirert_imm_s;wirealu_mem_s;wireWrite_Reg;wireMem_Write;wire [15:0] imm;wire [31:0] imm_data ;assign imm_data = ?{{16{imm[15]}},imm}:{{16{1b0}},imm}; assign OP =codes[31:26];assignfunc = codes[5:0];assignimm = codes[15:0]; OP_Decoderop_decoder,//input.func,//input.ALU_OP,.rd_rt_s,.imm_s,.rt_imm_s,.alu_mem_s,.Write_Reg,.Mem_Write);wire[4:0] rs;wire[4:0] rt;wire[4:0] rd;assigs = codes[25:21];assigt = codes[20:16];assigd = codes[15:11];wire[4:0] W_Addr;assignW_Addr=?rt:rd;wire [31:0]W_Data;wire [31:0]R_Data_A;wire [31:0]R_Data_B; RegisterHeapregister,.R_Addr_B,.W_Addr,.Write_Reg,.Reset,.Clk,.W_Data,.R_Data_A,.R_Data_B);wire [31:0]ALU_A;wire [31:0]ALU_B;assign ALU_A = R_Data_A;assign ALU_B = ?imm_data:R_Data_B;ALU alu,.A,.B,.F,.ZF,.OF);Data_Memdata_mem , // input clka.wea, // input [0 : 0] wea .addra, // input [5 : 0] addra .dina, // input [31 : 0] dina .douta // output [31 : 0] douta);assignW_Data = ?M_R_Data:ALU_F; endmodule二、仿真波形三、电路图四、引脚配置篇二:杭电计算机组成原理取指令与指令译码实验7杭州电子科技大学计算机学院实验报告课程名称:计算机组成原理姓名实验项目:取指令与指令译码实验班级指导教师:学号:实验位置:日期:篇三:杭电计算机组成原理多功能ALU设计实验3杭州电子科技大学计算机学院实验报告课程名称:计算机组成原理姓名:实验项目:多功能ALU设计实验班级:指导教师:学号:实验位置:日期:2015年4月29日。

杭电自动化专业计算机控制系统实验报告

杭电自动化专业计算机控制系统实验报告

实验一、常规PID控制算法仿真仿真框图如下实验参数:shiyanpid Ts=0.1s,b为班号1~5,x为学号后2位,1~45实验要求:(1)画Simulinnk框图(2)设计或凑试PID三个参数,进行仿真(3)使稳态误差为0,且动态性能较满意仿真框图:实验分析:b=1,x=15。

比例系数Kp增大时系统动作灵敏,响应速度加快,过大会使振荡次数增加,系统趋向不稳定,这里取120。

积分环节可以消除稳态误差,Ti减小,系统振荡次数增加,这里取Ki为150。

微分环节可以改善系统动态性能,减小超调和调节时间,这里取Kd为10。

系统在2秒内达到稳态。

实验二、积分分离PID控制算法仿真实验参数:shiyanpidjffl Ts=0.1s,b为班号1~5,x为学号后2位,1~45实验要求:(1)画Simulinnk框图(2)使稳态误差为0,且动态性能较满意(3)尝试不同的积分分离的阈值(比如ε=0,0.1,0.2,……,0.9,1),观察阶跃响应,并确定最佳的阈值实验框图:翻译后Switch模块的说明:如果2输入满足规则,则1通道通过,否则3输入通过。

输入被标号。

1输入通过规则是输入2(偏差e)大于或等于阀值。

第一三输入为数据输入,第二输入为控制输入。

原理:|e(k)|<=ε,ki起作用|e(k)|>ε,ki不起作用,由于阶跃输入,(treshhold )ε=0.1,0.2,……,0.9,1。

由于参数原因去kp=50,ki=kd=0时,曲线最好为了体现ε的作用,积分值不取0,改为Ki=10取不同ε后的曲线ε=0.1ε=0.5ε=1分析:ε=0.1时曲线最好,ε过大起不到积分分离的作用,比如ε=1,总会存在积分作用,ε过小可能是控制不能跳出积分分离的区域,从而只存在PD作用,长时间存在静差。

实验三、不完全微分PID控制算法仿真1、不完全微分PID控制器的阶跃响应实验参数:Shiyanpidbwqwfstep Ts=0.1s,仿真时间设为10s,5s,3s P=1 I=1 D=1滤波器参数a=0.1,0.2,……,0.8,1.2,实验框图:框图1:积分输出:微分输出:可见微分只在第一个单位时间有相应,而且较大框图2:a=0.1时a=0.5时:a=1时:分析:引入惯性环节后,对微分环节对阶跃响应有明显的改善作用。

(最新版)杭电 计算机网络实验报告

(最新版)杭电 计算机网络实验报告

目录实验一、使用数据拷贝线组网 (1)实验二、制作直通双绞线组网 (4)实验三、制作交叉双绞线组网 (7)实验四、Cisco IOS基本使用 (10)实验五、交换机基本使用 (14)实验六、VLAN的使用 (18)实验七、路由器的基本使用 (25)实验八、动态路由配置 (30)实验一、使用数据拷贝线组网实验一使用数据拷贝线组网实验台号:实验时间:实验小组号:成员及本次实验分工:实验目的:学会使用并行电缆(数据拷贝线)实现双机通信和资源共享。

使用直接电缆实现两台PC机之间的通信。

实验环境说明:硬件:2台计算机、2-3根并行电缆软件:Windows XP操作系统实验过程及步骤(可另附页、使用网络拓扑图等辅助说明):(1)、使用并行电缆将两台PC机,进行物理互连;(2)、分别在两台PC机上的网上邻居中创建一个新连接。

按照新建连接向导的指示来做。

首先网络连接类型选为“设置高级连接”;然后其中作为服务器的那台PC机创建为“接受传入的连接”,作为客户机的则创建为“直接连接到其他计算机的连接”,并让此计算机担任“来宾”的角色。

接下去根据向导直至完成创建新连接。

(3)、测试两机的可通用性。

创建好连接之后可以用ping命令测试一下两台机器之间是否已经连通。

(4)、连接创建成功之后,客户机可以找到并登入到服务器,就可以实现对服务器上的资源的共享了。

当然在此之前作为服务器的主机还需要将文件夹属性设置成为可共享的。

测试数据线连接以后Ping对方说明能够Ping通在一台PC上设置共享,然后在另外一台PC上查看共享截图如下:说明通过数据拷贝线成功地连接了两台PC,实现了他们之间的通信。

实验总结(遇到的问题及解决办法、体会):刚开始配置客户机的时候出了点问题。

需要输入对方计算机的名字,我们却输入了服务器上的计算机用户的帐号,所以一直没有连接成功。

后来终于发现了这个问题。

配置也就顺利了。

实验器材、工具领用及归还负责人:验收人:实验执笔人:实验记录人:报告协助人:实验报告完成时间:小组成员签名:指导教师评议成绩评定:指导教师签名:实验二、制作直通双绞线组网实验二制作直通双绞线组网实验台号:实验时间:实验小组号:成员及本次实验分工:实验目的:1.了解双绞线的相关知识;2.学会制作直通双绞线;3.掌握用双绞线实现集线器和计算机之间的互连。

杭电过程控制实验报告

杭电过程控制实验报告

过程控制实验报告班级:组号:组员:年月日实验一、水箱液位定值控制实验一、实验目的1、通过实验熟悉单回路反馈控制系统的组成和工作原理。

2、分析分别用P、PI和PID调节时的过程图形曲线。

3、定性地研究P、PI和PID调节器的参数对系统性能的影响。

二、面板位图与实验电气连接图1、实验面板位图实验面板位图如图1-1,图1-2,图1-3所示图1-1、传感器执行器位图图1-2、电源面板位图2、实验电气接线图3、实验信号实物连接图图1-5、实验信号实物连接图三、实验原理图1-6、实验控制框图1-6为单回路水箱液位控制系统,单回路调节系统一般指在一个调节对象上用一个调节器来保持一个参数的恒定,而调节器只接受一个测量信号,其输出也只控制一个执行机构。

本系统所要保持的恒定参数是液位的给定高度,即控制的任务是控制上水箱液位等于给定值所要求的高度。

根据控制框图,这是一个闭环反馈单回路液位控制,采用工业智能仪表控制。

当调节方案确定之后,接下来就是整定调节器的参数,一个单回路系统设计安装就绪之后,控制质量的好坏与控制器参数选择有着很大的关系。

合适的控制参数,可以带来满意的控制效果。

反之,控制器参数选择得不合适,则会使控制质量变坏,达不到预期效果。

因此当一个单回路控制系统组成好以后,如何整定好控制器的参数是一个很重要的实际问题。

一个控制系统设计好以后,系统的投运和参数整定是十分重要的工作。

四、实验内容和步骤1、系统连线(1)将系统的所有电源开关打在关的位置。

(2)按照实验电气图将系统接好2、仪表操作按照实验手册设置相应参数:主要包括Inp 33;SCL 0 ; SCH 650.03、启动实验装置4、实验内容(一)比例调节(P)控制(1)启动计算机MCGS软件,进入实验系统选择水箱液位定值控制实验(2)按下水泵1启动按钮,启动水泵1,进行实验。

(3)设定给定值30,设置P(20)参数,将I(9999)参数设置为最大值,D参数设置为0,观察屏幕上的曲线,待被调参数基本稳定于给定值后,可以开始加干扰实验。

《操作系统》课程实验报告

《操作系统》课程实验报告

《操作系统》课程实验报告一、实验目的本次《操作系统》课程实验的主要目的是通过实际操作和观察,深入理解操作系统的工作原理、进程管理、内存管理、文件系统等核心概念,并掌握相关的操作技能和分析方法。

二、实验环境1、操作系统:Windows 10 专业版2、开发工具:Visual Studio Code3、编程语言:C/C++三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新进程,并观察进程的创建过程和资源分配情况。

同时,实现进程的正常终止和异常终止,并分析其对系统的影响。

2、进程同步与互斥使用信号量、互斥锁等机制实现进程之间的同步与互斥。

通过模拟多个进程对共享资源的访问,观察并解决可能出现的竞争条件和死锁问题。

(二)内存管理实验1、内存分配与回收实现不同的内存分配算法,如首次适应算法、最佳适应算法和最坏适应算法。

观察在不同的内存请求序列下,内存的分配和回收情况,并分析算法的性能和优缺点。

2、虚拟内存管理研究虚拟内存的工作原理,通过设置页面大小、页表结构等参数,观察页面的换入换出过程,以及对系统性能的影响。

(三)文件系统实验1、文件操作实现文件的创建、打开、读取、写入、关闭等基本操作。

观察文件在磁盘上的存储方式和文件系统的目录结构。

2、文件系统性能优化研究文件系统的缓存机制、磁盘调度算法等,通过对大量文件的读写操作,评估不同优化策略对文件系统性能的提升效果。

四、实验步骤(一)进程管理实验步骤1、进程创建与终止(1)使用 C/C++语言编写程序,调用系统函数创建新进程。

(2)在子进程中执行特定的任务,父进程等待子进程结束,并获取子进程的返回值。

(3)通过设置异常情况,模拟子进程的异常终止,观察父进程的处理方式。

2、进程同步与互斥(1)定义共享资源和相关的信号量或互斥锁。

(2)创建多个进程,模拟对共享资源的并发访问。

(3)在访问共享资源的关键代码段使用同步机制,确保进程之间的正确协作。

(4)观察并分析在不同的并发情况下,系统的运行结果和资源竞争情况。

电大操作系统(本科)实验报告5

电大操作系统(本科)实验报告5

中央广播电视大学计算机科学与技术专业操作系统(本科)实验报告院系:浙江广播电视大学(本部)班级: K13秋学生姓名: xxxxxx学号: xxxxxxxxxxxxx指导教师:郑伟完成日期 2014 年 12 月 1 日一、实验题目:文件管理二、实验目的和要求:目的:1.掌握Linux有关文件和目录操作的常用命令。

2.学会用系统调用和库函数进行编程,实现对文件的创建、打开、关闭、读和写。

要求:1.浏览文件系统:运行pwd命令,确定当前工作目录;运行ls -l命令,理解各字段含义;使用cd命令,改变工作目录;用mkdir建立一个子目录subdir,将工作目录改到subdir。

2.文件操作:验证当前工作目录在subdir;运行date > file1,然后运行cat file1,看到什么信息?运行cat subdir,会有什么结果?为什么?利用ls -l file1,了解链接计数是多少?运行cp file1 file2,然后ls -l,看到什么?运行mv file2 file3,然后ls -l,看到什么?运行rm file3,然后ls -l,结果如何?运行ls -l,理解各文件的权限是什么?用两种方式改变file1的权限。

3.利用系统调用编写一个C程序,完成对用户指定文件的内容进行拷贝。

4.利用系统调用和库函数进行编程,将用户输入的信息插入到已存文件的不同位置。

三、实验内容:1.在用户主目录下对文件进行操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等。

2.对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限、链接文件等。

3.使用系统调用对文件进行操作,编程实现对文件的创建、打开、关闭、读和写。

四、实验技术和方法:Linux命令五、实验环境:putty六、实验步骤和结果:用ls,ls-a命令显示目录和文件名内容Tree命令显示“树”建立四个目录,用tree表示Ps到abc目录下用cp命令复制ps.txt到ps1.txt 连同目录一起复制到ABC目录用mv命令改名用mv命令移动文件用rm命令删除文件删除目录用cd命令到etc文件夹下创建几个文档用ls命令查看编译,创建文档编译,查看文档创建text.txt文档七、实验结果分析:无。

杭电电子线路实习实验报告

杭电电子线路实习实验报告

杭电电子线路实习实验报告一、实验目的1. 加深对电子线路理论知识的理解,提高实际操作能力。

2. 掌握基本电子仪器的使用方法,如示波器、信号发生器、万用表等。

3. 学习电子线路的安装与调试方法,培养动手能力和团队协作精神。

二、实验内容本次实验为电子线路安装与调试实验,主要包括以下内容:1. 根据电路图搭建电路;2. 正确使用仪器进行测试;3. 分析测试数据,判断电路是否存在问题;4. 调整电路参数,使电路达到预期性能;5. 撰写实验报告。

三、实验过程1. 根据实验指导书给出的电路图,搭建电路。

在搭建过程中,要注意元器件的极性、引脚顺序等,确保电路的正确性。

2. 使用万用表测量电路中的电压、电流等参数,初步判断电路是否正常。

3. 使用示波器观察电路中的信号波形,分析电路的性能。

如有问题,需调整电路参数,如电阻值、电容值等。

4. 针对电路中可能存在的问题,进行多次调试,直至电路性能达到预期。

5. 撰写实验报告,总结实验过程中遇到的问题及解决方法,反思实验过程中的不足。

四、实验结果与分析1. 实验结果:通过多次调试,最终使电路达到了预期性能,信号波形稳定,电路工作正常。

2. 结果分析:在实验过程中,我们掌握了电子仪器的使用方法,提高了动手能力。

同时,通过分析测试数据,我们学会了判断电路是否存在问题,并能够针对问题进行调整。

此外,实验过程中的团队协作也使我们更好地完成了任务。

五、实验收获1. 掌握了电子线路安装与调试的基本方法;2. 学会了使用电子仪器,如示波器、信号发生器、万用表等;3. 提高了动手能力和团队协作精神;4. 加深了对电子线路理论知识的理解。

六、实验反思1. 在实验过程中,我们要严谨认真,确保电路搭建的正确性;2. 学会分析测试数据,判断电路是否存在问题;3. 调整电路参数时,要耐心细致,切勿急躁;4. 加强团队协作,共同完成实验任务。

总之,本次电子线路实习实验使我们受益匪浅,不仅提高了实际操作能力,还加深了对电子线路理论知识的理解。

杭电实验报告模版

杭电实验报告模版

一、实验模块实验名称:____________________实验课程:____________________实验时间:____________________实验地点:____________________实验人员:____________________二、实验标题____________________三、实验目的1. 了解____________________2. 掌握____________________3. 培养____________________四、实验原理____________________五、实验仪器与设备1. 仪器名称:____________________2. 仪器型号:____________________3. 仪器规格:____________________4. 其他设备:____________________六、实验步骤1. 实验步骤一:(1)____________________(2)____________________(3)____________________2. 实验步骤二:(1)____________________(2)____________________(3)____________________3. 实验步骤三:(1)____________________(2)____________________(3)____________________(注:根据实际实验内容,添加相应步骤)七、实验过程1. 实验过程一:(1)____________________(2)____________________(3)____________________2. 实验过程二:(1)____________________(2)____________________(3)____________________3. 实验过程三:(1)____________________(2)____________________(3)____________________(注:根据实际实验内容,添加相应过程)八、实验数据记录与分析1. 实验数据记录:(注:根据实际实验内容,添加数据记录表格)2. 实验数据分析:(注:根据实际实验内容,对实验数据进行分析)九、实验结论1. 实验结果:(1)____________________(2)____________________(3)____________________2. 实验结论:(1)____________________(2)____________________(3)____________________十、实验讨论1. 实验中遇到的问题及解决方法:(1)____________________(2)____________________(3)____________________2. 实验改进建议:(1)____________________(2)____________________(3)____________________十一、实验总结通过本次实验,我了解了____________________,掌握了____________________,培养了____________________。

操作系统实验报告书参考模板

操作系统实验报告书参考模板

《操作系统原理》实验报告书班级:学号:姓名:指导教师:2011-2012 学年第一学期实验名称:LINUX 用户界面实验时间:年月日第周星期一、实验目的二、实验预习(预备知识的问题及回答)1.为什么在Linux系统中,诸如光盘、U盘等要先挂载而后才能使用?如何获得U盘的设备名?装载点在文件系统中的位置是什么?2.从虚拟机界面退出进入Windows OS界面的操作是,从Windows OS 界面进入虚拟机界面的方法是。

3.权限的含义是什么?如何使用数字法设定文件的权限?4.什么过滤操作?在Linux中如何实现?5.在Linux中挂载u盘并能显示其文档的中文信息,所使用的挂载命令是:。

6.什么是vi? 其三种操作模式的含义是什么?给出三种工作模式间的转换图。

三、实验内容(包含实验所用命令或相关程序源代码)1.shell操作命令(给出每题所用的Shell命令或命令结果)(1)创建名为stu1、stu2的2个用户,设置密码分别为student1和student2 ,并将它们设为组group1中的成员。

(2)在每个用户的主目录下建立2个目录,分别命名为dir1和dir2。

(3)查找stu1用户主目录、下属各子目录的默认存取权限,并给出结论。

(4)调试pwd和cd命令,回答下列关于Linux文件系统中目录的有关问题。

①用户主目录的绝对路径如何表示?②根目录如何表示?③.和..分别表示什么目录?④~表示什么目录?⑤当前目录如何表示?(5)新建用户stu3,设置其密码为student3,并将其设置为group2中成员。

尔后,以stu3登录,在其主目录下建立名为text的目录,在text目录下再建立名为dir1的子目录,并使其成为当前目录。

(6)使用cat>sneakers.txt命令,分析命令行cat sneakers.txt的显示结果。

$ cat>sneakers.txtbuy some sneakersthen go to the coffee shopthen buy some coff^D$cat sneakers.txt(7)使用上题的方法,在dir1目录中建立home.txt文件,其内容为:bring the coffee hometake off shoesput on sneakersmake some coffeerelax!(8)试写出实现下列功能的shell命令:①将home.txt文件移至其上级目录中(即text目录下)。

电大操作系统(本科)实验报告

电大操作系统(本科)实验报告

中央广播电视大学计算机科学与技术专业操作系统(本科)实验报告院系:浙江广播电视大学(本部)班级:____ ___K13秋 ______学生姓名:________xxxxxx _________学号:_____xxxxxxxxxxxxx_______指导教师:__________郑伟____________完成日期 2014 年 12 月 1 日一、实验题目:安装Linux系统二、实验目的和要求:目的1.学会在操作系统安装之前,根据硬件配置情况,制订安装计划。

2.学会在安装多操作系统前,利用硬盘分区工具(如PQMagic)为Linux准备分区。

3.学会Linux操作系统的安装步骤和简单配置方法。

4.学会Linux系统的启动、关闭步骤,初步熟悉Linux系统的用户界面。

要求1.制订安装计划。

2.如果在机器上已安装了Windows系统,而且没有给Linux预备硬盘分区,则安装硬盘分区工具(如PQMagic),运行它,为Linux划分出一块“未分配”分区。

3.在光驱中放入Linux系统安装盘,启动系统。

按照屏幕提示,选择/输入相关参数,启动安装过程。

4.安装成功后,退出系统,取出安装盘。

重新开机,登录Linux系统。

5.对Linux系统进行配置,如显示设备、打印机等。

6.利用鼠标对图形界面进行操作。

三、实验内容:1.安装并使用硬盘分区工具(如PQMagic),为Linux准备好分区。

2.安装Linux系统(如红旗Linux桌面版)。

3.配置Linux系统运行环境。

4.正确地启动、关闭系统。

5.对图形界面进行一般操作。

四、实验技术和方法:本实验使用VMware虚拟机安装,只需熟悉VMware虚拟机和linux安装过程即可五、实验环境:VMware虚拟机SUSE linux六、实验步骤和结果:1.首先打开虚拟机选择——新建虚拟机2.弹出个对话框选择——下一步3.之后有两个对话框,咱们这里选——自定义,下一步4.之后是——新的-工作站5,下一步5.在客人操作系统中选——linux,在版本下拉菜单中找到SUSE Linux,下一步6.在这里虚拟机名称默认不动,但位置最好在除C盘(系统盘)外的较大盘符,下一步之后选择主机处理器数,有几个选几个7.这里配置的是虚拟机的使用内存,用户视自己情况而定,下一步8.出现四个选项,用户按自己PC设置而定,本人选择第一项,下一步9.三个选项建议用第一个,下一步10.分配磁盘大小是自己情况而定,说下下面第二个选项,如果要是FAT32格式的硬盘则复选,否则不用11.之后各种默认即可,不用更改12.设置完向导后双击CD-ROM1(IDE1:0)选项在连接选项卡中选择使用ISO映像并找到SUSE linux映像位置13.确定之后单机命令标题下的——启动此虚拟机,选项,之后虚拟机出现在安装linux界面上(开始时英文,如果英语不太好的童鞋可按F2键选择中文,例如像me),之后就开始真正装linux了14.安装15.各种同意,下一步16.设置时区,下一步17.选择桌面两个都可以,我选的是第二个,下一步18.这里用户可以更改刚刚设置的选项,可根据具体需求选择各种程序,这里我选的是gcc和gcc-c++编译器,接受19.安装过程20.经过漫长的安装后,我们要输入一个root(超级用户)的密码(千万不要忘记)21.这里可以更改网络配置,下一步22.用户本地23.设置完整用户名和登录口令24.最后可以更改打印机等配置25.大功告成26.SUSE linux的X-window,七、实验结果分析:无。

操作系统实验报告通用(两篇)2024

操作系统实验报告通用(两篇)2024

操作系统实验报告通用引言:操作系统是计算机系统中的一个重要组成部分,它主要负责管理计算机硬件和软件资源,并为用户提供一个友好的界面。

操作系统实验是计算机科学与技术专业的一门重要实践课程,通过实际操作和实验验证,可以深入理解操作系统的工作原理和实现方法。

本文将以《操作系统实验报告通用》为题,从引言概述、正文内容、总结等方面详细阐述操作系统实验的一般结构和内容。

概述:操作系统实验是计算机科学与技术专业的一门实践课程,通过实际操作和实验验证来了解操作系统的工作原理和实现方法。

在操作系统实验中,学生将学习操作系统的基本概念、运行机制和实现技术,并通过实验验证来加深对操作系统的理解。

操作系统实验通常涉及到操作系统的各个模块,如进程管理、文件系统、内存管理等,并通过实际操作来了解操作系统的具体实现。

操作系统实验通常包括实验报告、实验代码以及实验总结等部分。

正文内容:1. 实验背景和目的1.1 实验背景在操作系统实验中,学生将学习操作系统的基本概念、运行机制和实现技术,通过实验来了解操作系统的具体实现和应用。

1.2 实验目的操作系统实验的主要目的是通过实际操作和实验验证来加深对操作系统的理解,并培养学生的动手能力和解决问题的能力。

2. 实验内容2.1 实验一:进程管理进程管理是操作系统中的核心模块之一,它负责管理和调度系统中的进程。

在这个实验中,学生需实现一个简单的进程管理器,并能够模拟多个进程的并发执行和互斥访问。

2.2 实验二:文件系统文件系统是操作系统中的另一个重要模块,它负责管理和组织计算机中的文件和目录。

在这个实验中,学生需实现一个简单的文件系统,并能够进行文件的创建、打开、读写和关闭操作。

2.3 实验三:内存管理内存管理是操作系统中的关键模块之一,它负责管理系统中的内存资源。

在这个实验中,学生需实现一个简单的内存管理器,并能够进行内存的分配和释放操作。

2.4 实验四:设备管理设备管理是操作系统中的另一个重要模块,它负责管理和调度计算机中的各种设备。

操作系统课程实验报告

操作系统课程实验报告

操作系统课程实验报告一、实验目的操作系统是计算机系统中最为关键的软件之一,它负责管理计算机的硬件资源和软件资源,为用户提供一个良好的工作环境。

通过操作系统课程实验,旨在深入理解操作系统的基本原理和功能,提高对操作系统的实际操作能力和问题解决能力。

二、实验环境本次实验使用的操作系统为Windows 10 和Linux(Ubuntu 1804),开发工具包括 Visual Studio Code、gcc 编译器等。

三、实验内容(一)进程管理1、进程创建与终止在 Windows 系统中,使用 C++语言创建多个进程,并通过进程句柄控制进程的终止。

在 Linux 系统中,使用 fork()系统调用创建子进程,并通过 exit()函数终止进程。

2、进程同步与互斥使用信号量实现进程之间的同步与互斥。

在 Windows 中,利用CreateSemaphore()和 WaitForSingleObject()等函数进行操作;在Linux 中,通过 sem_init()、sem_wait()和 sem_post()等函数实现。

(二)内存管理1、内存分配与释放在 Windows 中,使用 HeapAlloc()和 HeapFree()函数进行动态内存的分配与释放。

在 Linux 中,使用 malloc()和 free()函数完成相同的操作。

2、内存页面置换算法实现了几种常见的内存页面置换算法,如先进先出(FIFO)算法、最近最少使用(LRU)算法等,并比较它们的性能。

(三)文件系统管理1、文件创建与读写在 Windows 和 Linux 系统中,分别使用相应的 API 和系统调用创建文件,并进行读写操作。

2、目录操作实现了目录的创建、删除、遍历等功能。

四、实验步骤(一)进程管理实验1、进程创建与终止(1)在 Windows 系统中,编写 C++程序,使用 CreateProcess()函数创建新进程,并通过 TerminateProcess()函数终止指定进程。

操作系统实验报告模板

操作系统实验报告模板

操作系统实验报告模板一、实验目的本次操作系统实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握操作系统的相关知识和技能,提高对操作系统的认识和应用能力。

二、实验环境1、操作系统:_____(具体操作系统名称及版本)2、硬件环境:_____(列出计算机的主要硬件配置,如 CPU、内存、硬盘等)3、开发工具:_____(如编程语言、编译器、调试工具等)三、实验内容(一)进程管理实验1、进程创建与撤销编写程序实现创建多个进程,并观察进程的创建和撤销过程。

分析进程创建和撤销时操作系统所做的工作。

2、进程同步与互斥使用信号量或互斥锁实现进程之间的同步与互斥。

观察不同同步与互斥机制的效果,分析其优缺点。

(二)内存管理实验1、内存分配与回收实现不同的内存分配算法,如首次适应、最佳适应、最坏适应等。

对不同算法进行性能测试和比较,分析其适用场景。

2、虚拟内存管理配置操作系统的虚拟内存参数,观察虚拟内存的使用情况。

分析虚拟内存对系统性能的影响。

(三)文件系统实验1、文件操作编写程序进行文件的创建、读写、删除等操作。

观察文件系统对文件操作的处理过程,了解文件的存储结构。

2、目录管理实现目录的创建、删除、遍历等功能。

分析目录结构对文件查找和管理的影响。

四、实验步骤(一)进程管理实验步骤1、进程创建与撤销编写 C 或 C++程序,使用系统调用创建多个子进程。

在子进程中执行特定的任务,父进程等待子进程结束。

观察进程的创建和撤销过程,通过系统提供的工具查看进程状态。

2、进程同步与互斥使用信号量或互斥锁机制,编写多线程或多进程程序。

在线程或进程之间共享资源,通过同步与互斥机制保证资源的正确访问。

运行程序,观察同步与互斥的效果,分析程序的输出结果。

(二)内存管理实验步骤1、内存分配与回收选择一种编程语言,实现不同的内存分配算法。

生成大量的内存请求和释放操作,统计每种算法的分配时间和内存利用率。

分析实验数据,比较不同算法的性能。

杭州电子科技大学简单文件系统的实现的实验报告

杭州电子科技大学简单文件系统的实现的实验报告

杭州电子科技大学操作系统课程设计课程设计题目:简单文件系统的实现姓名:***班级:12052315学号:********学院:计算机学院专业:计算机科学与技术负责老师:贾刚勇报告完成日期:2014.12.30简单文件系统的实现一,课程设计的目的1.通过具体的文件爱你存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部数据结、功能及实现过程的理解二,设计要求1.在内存中开辟一个虚拟磁盘空间作为文件存储分区,在其上实现一个简单的基于多级目录的但用户单任务系统的文件系统。

在退出文件系统的使用时,应将虚拟文件系统一个Windows文件的方式保存到磁盘中,以便下次再将它恢复到内存的虚拟磁盘空间中2.文件存储空间的分配可采用显示链接分配或其它方法3.空闲磁盘空间的管理可选择位示图或其它方法4.文件目录结构采用多级目录结构5.需要提供一以下操作命令i.Formatii.Mkdiriii.Rmdiriv.Lsv.Cdvi.Createvii.Openviii.Closeix.Writex.Readxi.Rmxii.Exit三,程序设计思想以及总流程图1.程序设计思想i.首先,在文件系统启动时,申请一块较大的内存,用来当作文件系统的磁盘空间ii.然后,对其进行格式化,虚拟磁盘的空间布局是仿照FAT16文件系统,结构如下:1块2块2块995块引导块FAT1 FAT2 数据区格式化时,主要包括引导块,FAT1,FAT2,的一些初始化工作例如设置文件魔数,文件系统的信息,FAT1,FAT2的信息等等iii.根据用户输入的命令,调用对应的函数.2.程序流程图四,系统关键数据结构(1)文件控制块FCB用于记录文件的描述和控制信息,每个文件设置一个FCB,它也是文件的目录项的内容。

typedef struct FCB //仿照FAT16设置的{char filename[8]; //文件名char exname[3];//文件扩展名unsigned char attribute;//文件属性字段:为简单起见,我们只为文件设置了两种属性://值为0时表示目录文件,值为1时表示数据文件unsigned short time;//文件创建时间unsigned short data;//文件创建日期unsigned short first;//文件起始盘块号unsigned long length;//文件长度(字节数)char free;//表示目录项是否为空,若值为0,表示空,值为1,表示已分配}fcb;(2)文件分配表FATtypedef struct FAT{unsigned short id;}fat;(3)用户打开文件表USEROPEN当打开一个文件时,必须将文件的目录项中的所有内容全部复制到内存中,同时还要记录有关文件操作的动态信息,如读写指针的值等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统课程设计报告
基于DOS的多任务系统的实现
专业:信息工程学院(软件工程)
班级:
姓名:
学号:
指导老师:
20101223
一、课程设计的目的
1. 加深多线程和进程概念的理解,明确进程和程序的区别。

2. 加深对CPU调度过程(现场保护、CPU的分派和现场恢复)的理解。

3. 进一步认识并发执行的概念,明确顺序执行和并发执行的区别。

4. 加深对临界资源,临界区,信号量以及同步机制的理解。

5. 加深对消息缓冲通信的理解。

二、课程设计要求
1. 用C语言完成线程的创建和撤消,并按优先权加时间片轮转算法对多个线程进行调度;
2. 改变时间片的大小,观察结果的变化。

思考:为什么时间片不能太小或太大;
3. 假设两个线程共用同一软件资源(如某一变量,或某一数据结构),请用记录型信号量来实现对它的互
斥访问;
4. 假设有两个线程共享一个可存放5个整数的缓冲,一线程不停的计算1到50的平方,并将结果放入缓冲
中,另一个线程不断的从缓冲中取出结果,并将他们打印出来,请用记录型信号量实现这一生产者和消费者的同步问题;
5. 实现消息缓冲通信,并于3,4中的简单通信进行比较;
6. 思考:在线程间进行消息缓冲通信时,若对消息队列的访问没有满足互斥要求,情况会怎么样?
三、程序的设计细想和框图[根据自己的代码写]
1.调度算法:用TCB数组下标音隐含把所有线程排成一个循环队列,当时间片到时,有线程正在执行,则停止它,将其变为就绪,把现场信息压入私有栈堆。

2.调度原因:时间片到时,线程执行完毕,正在执行的线程等待某种事件而不能继续执行。

3.时钟中断的截取
4. 线程的阻塞及唤醒
引起进程阻塞的典型事件为等待操作的完成:相对高速的而言,设备的速度显得较慢,这里引起线程阻塞的典型事件有两个:一是并发执行的线程间临界资源的竞争;二是相互合作的线程间的同步。

一个正在只在执行的线程因某种原因而阻塞时,必须给出因该原因而阻塞的阻塞队列的对手信息,阻塞原语所做的主要工作有:将线程的状态改为阻塞态,将线程插入指定的阻塞队列末尾,并重新进行CPU调度。

当阻塞线程所等待的事件完成后,必须唤醒相应线程。

阻塞原语中同样需指出跟指定事件有关的阻塞队列队首信息。

另外,有可能同时有多个线程在等待该事件完成,食粮中采取的方法是首先唤醒阻塞队列头上的第一个线程,所做的工作主要有:把阻塞队列头上的第一个线程的TCB取下来,并将起状态改为就绪态。

5. 线程的同步与互斥
在许多线程并发执行时,由于它们共享资源,相互协作的完成总的任务,线程之间存在着同步和互斥的问题,所以必须有一同步机制来实现线程的同步和互斥。

6. 利用消息缓冲队列进行线程间的通信——消息的发送与接收
在发送消息时,消息的发送者必须提供接受者的标识符、消息的长度及消息正文的起始地址等信息。

然后在发送原语里申请一空闲的消息缓冲区,用相应的信息来装配该消息缓冲区,并将它插到接受者的消息队列中去。

在接受时,接受者必须指出发送者的标识符、接受区的起始地址等信息,然后从自己的消息队列中取得相应发送者发来的消息缓冲区,将消息正文复制到接收区中,并释放相应的消息缓冲区。

在线程通信时,发送者和接受者都有可能在消息处理以前被撤消。

其中,当一接受者等待一来自己终止的线程的消息时,若不采取相应的动作,接收者将无限期阻塞下去。

系统一旦发现这种情况,应结束接收动作,而避免接收者被无限期阻塞。

7. 本程序流程图如下:
四、程序调试遇到的问题的分析
1 自己添加
五、结果分析和总结
自己写
六、程序清单如下:
程序的源代码
七、参考文献。

相关文档
最新文档