太原理工大学操作系统实验报告2016
太原理工大学微机原理实验报告课案
本科实验报告课程名称:微机原理及应用实验项目:实验地点:专业班级:机械xxx班学号:xxxxxxxxxx 学生姓名:xx指导教师:2016年12月28日实验一汇编语言程序开发环境与程序调试一、实验要求和目的1.熟悉在微机上编辑、汇编、连接、调试和运行汇编语言程序的过程,掌握PC 环境下命令行方式的特点。
2.熟悉汇编过程中一些常见出错信息。
3.熟悉程序调试的方法, DOS命令窗口的debug的常用命令。
二、实验内容1、项目要求:在屏幕上显示字符串‘Hello,world!’。
2、程序设计思想:运用DOS系统功能调用(INT 21H)的9号功能。
DOS系统功能调用的9号功能是显示字符串,它调用的参数DS:DX=串地址,且字符串以“$”结束。
程序流程图如图1-1:图1-1 程序流程图3、程序清单:完整指令代码如下(简化段定义格式):.model small ;定义程序的存储模式.486 ;说明使用的80x86微处理器指令.stack ;定义堆栈段.data ;定义数据段String db 'Hello, world!','$'.code ;定义代码段.startup ;程序执行开始Mov ax, seg String ;把String的段地址送axMov ds,ax ;ax送ds,ds取得string的段地址mov dx,offset String ;String的偏移地址送dxmov ah,9 ;字符串显示功能int 21h ;DOS功能调用mov ax,4c00hint 21h ;返回DOS.exitend三、结果与分析指导教师:年月实验二内存数据的移动一、实验要求与目的:1、实验要求:编写程序实现把数据段的字符串数据移动到附加段中。
2、实验目的:通过项目学习汇编的数据传送指令和串处理类指令,巩固寻址方式,学习汇编程序设计。
二、实验内容:1、项目要求:把数据段中以dstring地址标号为开始地址的“hello world!”字符串移动到附加段以sstring地址标号为开始地址中去。
太原理工大学软件测试实验报告材料2016
本科实验报告课程名称:软件测试技术实验项目:软件测试技术实验实验地点:逸夫楼304专业班级:软件1415学号:2014005960 学生:朱伟指导教师:兰方鹏2016 年 9 月 12日测试用例表用例编号输入期望结果覆盖标准覆盖路径实际结果1 x=4,y=6,z=7;j=1;k=23语句覆盖abcdfghjj=1k=232 x=4,y=6,z=7j=1;k=23判定覆盖abcdfghjj=1;k=233 x=4,y=4,z=11j=2;k=0判定覆盖abeghjj=2;k=0;4 x=4,y=4,z=11j=2;k=0条件覆盖abeghjj=2;k=05 x=0,y=6,z=9j=1;k=0条件覆盖abeghjj=1;k=06 x=4, j=1; 基本路径覆盖abcdfghj j=1;k=23期望结果与实际结果相同一、语句覆盖:(覆盖路径:abcdfghj)二、判定覆盖:(1)覆盖路径(abcdfghj)(2)覆盖路径(abeghj)三、条件覆盖(1)覆盖路径(abeghj)(2)覆盖路径(abeghj)四、基本路径覆盖(1)覆盖路径(abcdfghj)(2)覆盖路径(abcdfij)(3)覆盖路径(abeghj)(4)覆盖路径(abeij)五、程序代码#include<stdlib.h>#include<stdio.h>#include<math.h>void DoWork(int x,int y,int z){ int k=0,j=0;if ((x>0)&&(z<10)){k=x*y-1;j=sqrt(k);}if((x=4)||(y>5)){j=x*y+10;}j=j%3;printf("j=%d\n",j);printf("k=%d\n",k);}void main(){int a,b,c;图3⑶在弹出的“RecordandRunSettings”对话框中切换至“Windows Applications”标签,如图4 所示:图4⑷在弹出的对话框中,选择“Application details:”中右边的“+”标签,如图 5所示:图5⑸在弹出的对话框中按照默认选项选择,然后点击“ok”按钮,如图6 所示:图6⑹在弹出的“Login”界面中输入用户名和密码,如图7 所示。
太原理工大学计算机网络实验报告
本科实验报告课程名称:计算机网络B实验地点:专业班级:学号:学生姓名:指导教师:2016年12月2日实验1 Packet Trace基本使用一.实验目的掌握Cisco Packet Tracer软件的基本使用方法。
二.实验任务在Cisco Packet Tracer中使用HUB组建局域网,利用PING命令检测机器的互通性。
三.实验设备集线器(HUB)一台,工作站PC三台,直连电缆三条。
四.实验环境实验环境如图所示:五.实验步骤1.运行Cisco Packet Tracer软件,在逻辑工作区放入一台集线器(HUB)和三台终端设备PC,用直连线按实验环境图所示将HUB和PC工作站连接起来,HUB端接Port口,PC端分别接以太网(Fastethernet)口。
2.分别点击各工作站PC,进入其配置窗口,选择桌面(Desktop)项,选择运行IP地址配置(IP Configuration),设置IP地址和子网掩码分别为PC0:1.1.1.1,255.255.255.0;PC1:1.1.1.2,255.255.255.0;PC2:1.1.1.3,255.255.255.0。
3.点击Cisco Packet Tracer软件右下方的仿真模式(Simulation Mode)按钮,将Cisco Packet Tracer的工作状态由实时模式(Realtime)转换为仿真模式(Simulation)。
4.点击PC0进入配置窗口,选择桌面(Desktop)项,选择运行命令提示符。
在上述DOS 命令行窗口中输入Ping 1.1.1.2命令,运行回车。
然后在仿真面板(Simulation Panel)点击自动捕获/播放(Auto Capture/Play)按钮。
5.观察数据包发送的演示过程,对应地在仿真面板的时件列表(Event List)中观察数据包的类型。
六.实验心得本次实验掌握了PackTracer模拟器基本使用,掌握在Cisco Packet Tracer中使用HUB组建局域网,利用PING命令检测机器的互通性,PC的IP地址配置和Ping命令检测机器连通性。
太原理工大学计算机网络实验报告
本科实验报告课程名称:计算机网络B 实验地点:行勉楼专业班级:学号学生姓名:指导教师:实验成绩:2016年 6 月 14 日实验3 VLAN基本配置一、实验目的掌握交换机上创建VLAN、分配静态VLAN成员的方法。
二、实验任务1、配置两个VLAN:VLAN 2和VLAN 3并为其分配静态成员。
2、测试VLAN分配结果。
三、实验设备Cisco交换机一台,工作站PC四台,直连网线四条,控制台电缆一条。
四、拓扑结构五、实验结果PC0到PC1 想通PC0到PC2 不通,不在相同VLANPC2到PC3 不通,网段不同。
Switch#sh runBuilding configuration...Current configuration : 1127 bytes!versionno service timestamps log datetime msecno service timestamps debug datetime msecno service password-encryption!hostname Switch!!spanning-tree mode pvst!interface FastEthernet0/1!interface FastEthernet0/2switchport access vlan 2!interface FastEthernet0/3switchport access vlan 2!interface FastEthernet0/4switchport access vlan 2!interface FastEthernet0/5switchport access vlan 3!interface FastEthernet0/6switchport access vlan 3!interface FastEthernet0/7switchport access vlan 3!六、实验心得输入容易出现错误。
太原理工大学系统分析实验报告
本科实验报告课程名称:系统分析与设计实验项目:《系统分析与设计》实验实验地点:行逸楼B114专业班级:软件学号:学生姓名:指导教师:孟东霞2015年11月4日一、实验目的通过《系统分析与设计》实验,使学生在实际的案例中完成系统分析与系统设计中的主要步骤,并熟悉信息系统开发的有关应用软件,加深对信息系统分析与设计课程基础理论、基本知识的理解,提高分析和解决实际问题的能力,使学生在实践中熟悉信息系统分析与设计的规,为后继的学习打下良好的基础。
二、实验要求学生以个人为单位完成,自选题目,班题目不重复,使用UML进行系统分析与设计,并完成实验报告。
实验报告以纸质版(A4)在课程结束后二上提交(12)。
三、实验主要设备:台式或笔记本计算机四、实验容1 选题及项目背景美食评价系统背景:互联网时代下网络评论越来越随意,希望可以规化的进行。
2 定义美食评价系统为用户提供美食指导和参考。
任人都可注册为会员,个人资料包括姓名,性别,收藏的餐厅以及口味爱好。
会员可以收藏餐馆,浏览餐馆信息以及其他会员的评价。
餐厅必须向管理人员提出注册并审核通过后才能显示。
管理人员需到工商局和餐厅具体审查后才能通过。
会员可以提供来自餐馆提供的小票在次日来对用餐进行评价,一小票仅可提供一次评价。
餐馆则提供当日用餐小票记录给管理人员,用以核对用户提供的小票是否正确,然后系统则会审核评价有无不良信息,审核通过发布在餐厅信息上,并根据会员评价次数对给会员评星(1-5)。
个人信息和餐馆信息可被所有人访问,管理员信息只能管理员访问。
3 参考资料1.GB8567-88 《计算机软件产品文件编制规》2.GB/T11457-1995 《软件工程术语》3.GB 1526—89 信息处理--数据流程图、程序流程图、系统流程图、程序网络图和系统资源图的文件编制符号及约定4.GB8566-88 《软件开发规》4 系统分析与设计4.1需求分析4.1.1识别参与者用户,餐厅,管理人员4.1.2 对需求进行捕获与描述1用例名称:注册个人用户执行者:用户目的:完成一次注册个人用户的完整过程。
太原理工大学web程序设计基础实验报告2016
课程名称:WEB程序设计基础实验项目:WEB程序设计基础实验实验地点:逸夫楼402 专业班级:软件1415班学生姓名:朱伟学号:2014005960指导教师:田玉玲2016年11 月21 日实验一HTML语言一、实验目的1.掌握常用的HTML语言标记;2.利用文本编辑器建立HTML文档,制作简单网页。
二、实验要求1.独立完成实验。
2.书写实验报告书。
三、实验内容1.在文本编辑器“记事本”中输入如下的HTML代码程序,以文件名sy1.html保存,并在浏览器中运行。
(请仔细阅读下列程序语句,理解每条语句的作用)(1)程序代码:<!doctype html><html lang="en"><head><meta charset="UTF-8"><title>Example</title></head><body bgcolor="#00DDFF"><h1><B><I><FONT COLOR="#FF00FF"><MARQUEE BGCOLOR="#FFFF00"direction=left behavior=alternate>welcome to you</MARQUEE></FONT></I></B></h1><hr><h2 align=center><FONT COLOR="#0000FF">A simple HTML document</FONT></h2><EM> Welcome to theworld of Html</EM><p>This is a simple HTML document.It is to give you an outline of how to write HTML file and how the <b>markup tags </b>work in the<I>HTML</I>file</p><p>Following is three chapters<ul><li>This is the chapter one</li><li><A HREF="#item">This is the chapter two</A></li><li>This is the chapter three</li></ul></p><hr><p><A NAME="item">Following is items of the chapter two</A></p><table border=2 bgcolor=gray width="40%"><tr><th>item</th><th>content</th></tr><tr><td>item1</td><td>font</td></tr><tr><td>item2</td><td>table</td></tr><tr><td>item3</td><td>form</td></tr></table><hr><p>1<p>2<p>3<p>4<p>5<p>6<p>7<p><B><I><FONT COLOR=BLUE SIZE=4>End of the example document</FONT></I></B> </p></body></html></body></html>(2)实验结果2.编写一个能输出如图所示界面的HTML文件。
太原理工大学数据结构实验报告2016
《数据结构》实验报告专业:软件工程班级:软件姓名:2016年12月太原理工大学学生实验报告}[运行情况]Input a linktable(a string):lopui↙Build link is :lopuiPlease input a char you want to insert after:p↙Please input a char you want to insert:y↙After p insert y,link is:lopyuiPlease input a char you want to delete:p↙after delete p,link is:loyuiOpsite result is :iuyol三.实习题用单链表ha 存储多项式A(x )=a0+a1x1+a2x2+…+a n x n(其中a I为非零系数),用单链表hb 存储多项式B (x )=b0+b1x1+b2x2+…+b m x m(其中b j为非零系数),要求计算C(x )= A(x )+B(x ),结果存到单链表hc中。
试写出程序。
实验程序:#include"stdio.h"#include <malloc.h>#include"stdafx.h"#include<malloc.h>static int n;static int m;static int max;struct Polynomial{float data;struct Polynomial* next;};struct Polynomial* Creat_H(int k){struct Polynomial* L;struct Polynomial* p;p = (struct Polynomial*)malloc(sizeof(struct Polynomial));L = p;float temp;int i;printf("请依次输入系数(中间用空格隔开):\n");for (i = 0; i <= k; i++){scanf_s("%f", &temp);p->data = temp;if (i == k){p->next = NULL;break;}p->next = (struct Polynomial*)malloc(sizeof(struct Polynomial));p = p->next;}return L;}struct Polynomial* Calculate(struct Polynomial* Pa, struct Polynomial* Pb){ struct Polynomial* Pc;struct Polynomial* L;int i;max = n >= m ? n : m;Pc = (struct Polynomial*)malloc(sizeof(struct Polynomial));L = Pc;for (i = 0; i <= max; i++){if (i == max){Pc->next = NULL;break;}Pc->next = (struct Polynomial*)malloc(sizeof(struct Polynomial));Pc = Pc->next;}Pc = L;while (Pa != NULL&&Pb != NULL){Pc->data = Pa->data + Pb->data;Pc = Pc->next;Pa = Pa->next;Pb = Pb->next;}if (Pa == NULL){while (Pb != NULL){Pc->data = Pb->data;Pc = Pc->next;Pb = Pb->next;}}else if (Pb == NULL){while (Pa != NULL){Pc->data = Pa->data;Pc = Pc->next;Pa = Pa->next;}}return L;}int main(){int i;struct Polynomial *Ha, *Hb, *Hc;printf("请输入多项式a的最高次系n:\n");scanf_s("%d", &n);Ha = Creat_H(n);printf("请输入多项式b的最高次系m:\n");scanf_s("%d", &m);Hb = Creat_H(m);Hc = Calculate(Ha, Hb);printf("系数: 次数:\n");for (i = 0; i <= max; i++){printf("%f%-4d\n", Hc->data, i);if (i == max){break;}Hc = Hc->next;}return 0;}太原理工大学学生实验报告太原理工大学学生实验报告temp=(struct VNode*)malloc(sizeof(struct VNode));temp->position=k;temp->next=NULL;p[i].first=temp;p[i].mark=0;flag=temp;scanf("%d",&k);while(k!=-1){temp=(struct VNode*)malloc(sizeof(struct VNode));temp->position=k;temp->next=NULL;flag->next=temp;flag=temp;scanf("%d",&k);}}}i=0;while(p[i].mark==0){DFS(p,(p+i));num++;i=0;while(p[i].mark!=0&&i<n){i++;}}printf("此图的连通分量个数为:%d\n",num);return 0;}return Search(a, k, mid + 1, hight);}}int main(){int *p;int i, n, key, position;printf("输入数据数量:\n");scanf("%d", &n);p = (int*)malloc(n*sizeof(int));printf("请按非递减序列输入你的数据(整型),并用空格隔开:\n");scanf("%d", &p[0]);for (i = 1; i<n; i++){scanf("%d", &p[i]);while (p[i]<p[i - 1]){printf("你输入的数据不合理,请重新输入:\n");scanf("%d", &p[i]);}}printf("请输入你要查找的数据:\n");scanf("%d", &key);position = Search(p, key, 0, n - 1);if (position == 0){printf("没有找到你要查找的数据!\n");}else{printf("你所查找的数据位于原有序表的第%d个位置!\n", position);}return 0;}if (n == 0)return;int x;NODE *p;p = (NODE*)malloc(sizeof(NODE));head->next = p;scanf("%d", &x);p->x = x;read(p, n - 1);}void write(NODE *head, int n){NODE *p;if (n == 0)return;p = head->next;printf("%d ", p->x);write(p, n - 1);}void px(NODE *head, int n){if (n == 0)return;int min;int i, s = 0;NODE *p;NODE *r;NODE *t;p = head->next;r = head->next;t = head;min = p->x;for (i = 0; i<n; i++){if (min>p->x){min = p->x;r = p;s = i;}p = p->next;}for (i = 0; i<s; i++)t = t->next;t->next = r->next;r->next = head->next;head->next = r;px(head->next, n - 1);}void main(){int n;NODE *head;head = (NODE *)malloc(sizeof(NODE));printf("输入数据个数n:\n");scanf("%d", &n);printf("输入%d个数据,并用空格隔开\n", n);read(head, n);printf("输入数据为:\n");write(head, n);printf("\n排序后数据为:\n");px(head, n);write(head, n);}。
太原理工大学计算机操作系统期末总结
太原理工大学计算机操作系统期末总结操作系统复习大纲1.设置操作系统的目的:①有效性:提高系统资源利用率;提高系统的吞吐量;②方便性:方便用户;③可扩展性;开放性2.操作系统的定义:操作系统是一组控制和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合。
3.操作系统功能与特征(14、18)特征:并发性、共享性、虚拟性、异步性。
功能:处理机管理、存储器管理、设备管理、文件管理、操作系统与用户之间的接口。
4.多道程序设计与并发性进程的含义:进程是程序的一次执行;进程是一个程序及其数据在处理机上顺序执行时所发生的活动;进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
为使程序能并发执行,且为了对并发执行的程序加以描述和控制,引入“进程”。
结构特征(由程序段、相关的数据段、PCB构成进程实体)、动态性、并发性、独立性、异步性5.进程控制块的内容与作用(41)作用:是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。
或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。
进程控制块中的信息:进程标识符、处理机状态、进程调度信息、进程控制信息。
6.引起进程创建的事件(44)用户登录、作业调度、提供服务、应用请求7.进程的3种基本状态及其转换(38)就绪状态、执行状态、阻塞状态(图2-5)8.线程的定义,引入线程的目的,进程与线程的主要区别(71、72、73)比进程更小的能独立运行的基本单位——线程;为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性;区别:①调度性:线程作为调度和分派的基本单位,而进程作为资源拥有的基本单位;②并发性:在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行,使得操作系统具有更好的并发性,从而能更加有效地提高系统资源的利用率和系统的吞吐量;③拥有资源:一般而言,线程自己不拥有系统资源,但它可以访问其隶属进程的资源,即一个进程的代码段、数据段及所拥有的系统资源;④系统开销:操作系统所付出的开销明显大于线程创建或撤销时的开销。
太 原 理 工 大 学 实 习 报 告
太原理工大学实习报告洛阳一拖实习报告姓名:专业班级:指导老师:实习日期:实习内容及要求:(1)通过深入生产第一线进行观察和调查研究,开阔视野,增长见识。
力求了解和掌握本专业基础的生产实际,巩固和加深已学过的理论知识,为今后的课程设计,毕业设计做好准备,并且为以后更好能把所学的知识运用到实际工作中打下坚实的基础。
(2)通过参观实习,加强对零件典型机械加工工艺的分析,熟悉了解零件加工过程中所用的机床,夹具量具等工艺装备,把理论知识和实践相结合起来,提高分析和解决专业问题的能力。
(3)通过参观实习,了解理论和实际相冲突的难点问题,并通过撰写实习日记和实习报告,学会综合运用所学知识,提高分析和解决专业问题的能力。
(4)通过观察了解工厂的生产过程、生产设备以及生产线布局;(5)在实习过程中了解企业生产管理模式,学习先进的管理方式方法。
实习日记:3 各实习单位的实习内容3.1安全教育?2013年10月14日上午,我们顺利到达洛阳一拖。
坐了一夜的火车,非常疲倦,一切安排妥当之后,我们都休息了几小时。
下午我们在一拖培训中心进行了安全教育。
老师给我们看安全生产记录还有事故案例,一幕幕血淋淋的惨剧,不得不引起我们的高度重视。
老师对我们进行的安全教育主要分为以下三方面:1、进入厂区应注意事项(1)允许从四、五号门进入参观,但是毛主席身后的两个大门禁止通行。
(2)要求排成两列纵队,有序进入。
(3)爱护厂区环境卫生。
(4)生产厂区禁止拍照。
(5)厂区禁止抽烟,违者罚款处理。
(6)上班前和在岗期间禁止饮酒。
(7)不要挪动生产厂区的图纸,更不允许随意带走,注意自己的言行举止。
2、进入厂房后的要求(1)衣着穿戴①不允许穿凉鞋、拖鞋、高跟鞋。
②不允许穿背心、光膀子,不允许穿裙子、七分裤、短裤。
③女同学必须戴帽子,并且要把头发盘进帽子里。
④热加工单位必须配戴安全帽。
(2)不要追逐打闹,影响不好。
(3)看清道路上的车辆,在安全通道内行走。
太原理工大学微机原理实验报告课案
本科实验报告课程名称:微机原理及应用实验项目:实验地点:专业班级:机械xxx班学号:xxxxxxxxxx 学生姓名:xx指导教师:2016年12月28日实验一汇编语言程序开发环境与程序调试一、实验要求和目的1.熟悉在微机上编辑、汇编、连接、调试和运行汇编语言程序的过程,掌握PC 环境下命令行方式的特点。
2.熟悉汇编过程中一些常见出错信息。
3.熟悉程序调试的方法, DOS命令窗口的debug的常用命令。
二、实验内容1、项目要求:在屏幕上显示字符串‘Hello,world!’。
2、程序设计思想:运用DOS系统功能调用(INT 21H)的9号功能。
DOS系统功能调用的9号功能是显示字符串,它调用的参数DS:DX=串地址,且字符串以“$”结束。
程序流程图如图1-1:图1-1 程序流程图3、程序清单:完整指令代码如下(简化段定义格式):.model small ;定义程序的存储模式.486 ;说明使用的80x86微处理器指令.stack ;定义堆栈段.data ;定义数据段String db 'Hello, world!','$'.code ;定义代码段.startup ;程序执行开始Mov ax, seg String ;把String的段地址送axMov ds,ax ;ax送ds,ds取得string的段地址mov dx,offset String ;String的偏移地址送dxmov ah,9 ;字符串显示功能int 21h ;DOS功能调用mov ax,4c00hint 21h ;返回DOS.exitend三、结果与分析指导教师:年月实验二内存数据的移动一、实验要求与目的:1、实验要求:编写程序实现把数据段的字符串数据移动到附加段中。
2、实验目的:通过项目学习汇编的数据传送指令和串处理类指令,巩固寻址方式,学习汇编程序设计。
二、实验内容:1、项目要求:把数据段中以dstring地址标号为开始地址的“hello world!”字符串移动到附加段以sstring地址标号为开始地址中去。
太原理工大学Linux实验报告
实验由本人当时亲自完成仅供参考,希望会帮助大家课程名称:LINUX系统及其编程实验项目:LINUX系统及其编程实验实验地点:逸夫楼304教室专业班级:嵌入式专业202学生姓名:氣宇軒昂学号:指导教师:2013年13 月13 日实验1、Linux操作基础和系统界面的熟悉一.实验目的通过本实验,可以掌握Linux的基本操作、Linux的文本编辑以及Linux系统界面的转换和使用,使学生对Linux有一个基本的了解。
二.操作步骤及要求:1、Linux的基本操作。
1)在超级用户下新建立一个用户,查看/etc/passwd文件中新用户添加完成后的情况。
(1)useradd student(2)passwd 12345(3)cat /etc/passwd2)用此用户名和口令登录系统,并用passwd命令修改口令,使用chfn命令输入用户的个人资料,并用finger查看该用户的详细资料。
(1)passwd student(2)chfn student(3)finger student3)用who命令查看当前登录在系统中的用户列表、登录终端和登录时间以及系统中的用户总数。
2、熟悉Linux操作系统vi编辑器的使用。
1)首先使用vi编辑器编辑一个C语言源程序hello.c,程序的功能是接受用户输入的姓名,然后在屏幕上输出一条语句“Welcome 姓名”。
#include <stdio.h>Main(){char name[20];printf(“Please input your name:”);scanf(“%s”,name);printf(“Welcome %s!\n”,name);reture 0;}2)对上述的hello.c文件进行增、删、改操作。
(1)增加文字时用i命令。
(2)删除文字时用dd命令。
(3)修改文字时用x命令。
(4)使用命令“gcc –o hello hello.c”编译源程序,如果发现程序错误,则需要反复使用vi编辑器修改源程序文件并且在修改后重新编译。
操作系统实验报告.doc
操作系统实验报告操作系统实验报告1. 实验内容采用空闲区链,运用首次适应法管理内存。
2. 程序中使用的数据结构及其符号说明本程序使用双向链表对内存进行连接管理,用结构体来存储内存的相关信息。
当每次完成内存分配后,就对内存进行从小到大排列,并且合并相邻的内存空间。
当下一个作业装载入内存时,可直接从头开始寻找到合适的地址,这样可节省查找时间。
接到内存申请时,在空闲块表中找到一个不小于请求的最小空块进行分配为作业选择分区时总是寻找其大小最接近于作业所要求的存储区域。
特点是用最小空间满足要求。
符号列表如下l rt-----定义一个结构,用来存储内存信息。
l memory----结构名字,同上。
l startaddress具体某个内存起始地址。
l size---具体某个内存的大小。
l state具体某个内存的状态,若为-1则表示分配了,为0为空闲。
l * next---为结构指针,指向当前内存空间的下一个。
l * last---为结构指针,指向当前内存空间的前一个。
l *head----结构的头指针。
l *p,*q,*g都是内存结构体的指针。
l alloc()---对内存空间进行分配的函数。
接受一个INT型值。
并返回内存空间的相关信息,如状态等。
l setfree---释放内存空间的函数。
l sort----对内存大小进行排序的函数。
调用后内存将从小到大排列。
l print---打印内存的相关信息函数。
l type---判断是不是有任务执行,输入为n时结束任务。
3.程序流程图4.程序代码如下include include typedef struct rt // 链式结构{ int startaddress; int size; int state; struct rt * next; struct rt * last; }memory; memory *headNULL; int allocint applyarea //分配内存applyarea 为作业大小{ memory *p,*q,*g; int s; phead; forpp-next;pNULL;pp-next//寻找满足的内存区{ ifp-state0 p-size-applyarea; return p-startaddress-applyarea; } else { ifp-state0 sp-startaddress; gp; qp-next; pp-last; p-nextq; q-lastp; freeg; return s; } } } return -1; return 0; } int setfree//回收内存{ int start; int size; memory *p,*q; printf“请输入回收内存地址\n“; scanf“d“, printf“请输入回收内存大小\n“; scanf“d“, phead; //leftforpp-next;pNULL;pp-next // 在左边与空闲区相连{ ifp-state0 p-sizesize; return 0; } } phead; // right forpp-next;pNULL;pp-next//在右边与空闲区相连{ ifp-state0 return 0; } } phead; // after whilep-nextNULL// 没有与空闲区相连,将内存放到链表的后面{ pp-next; } qmemory *mallocsizeofmemory; q-startaddressstart; q-state0; q-lastp; q-nextNULL; p-nextq; return 0; } int sort// 排序链表{ memory * pNULL,*qNULL; int t; int s; phead; forpp-next;pNULL;pp-next { forqp-next;qNULL;qq-next { ifq-sizesize { tp-size; p-sizeq-size; q-sizet; sp-startaddress; p-startaddressq-startaddress; q-startaddresss; } } } return 0; } int print// 打印空闲区信息{ memory *p; phead; printf“ |....................................|\n“; printf“ 开始地址大小状态“; printf“ |....................................|\n“; forpp-next;pNULL;pp-next { printf“ 3d 3d 3d |\n“,p-startaddress,p-size,p-state;printf“...........|....................................|\n“; } return 0; } int main { memory *p,*q; int i; int applyarea,start; char type; int address0; headmemory *mallocsizeofmemory; head-startaddress-1; head-size-1; head-nextNULL; head-lastNULL; qhead; fori1;istartaddressaddress; p-state0; p-sizei*20; addressi*20; p-next NULL; p-lastNULL; q-nextp; p-lastq; qp; } print f“\n 现在有任务执行么y or n “; typegetchar; whiletype y { printf“第一次空闲内存如下\n“; sort; print; printf“输入作业大小“; scanf“d“, //输入作业大小startallocapplyarea;// 分配内存sort; print; printf“分配后,内存状态如下\n“; print; ifstart-1 printf“没有多余内存空间,请等待\n“; else { printf“作业起始地址是d\n“,start; printf“作业大小是d\n“,applyarea; setfree;//回收内存sort; print; } getchar; printf“\n 现在有任务执行么y or n “; typegetchar; } return 0; } 5.程序名g.exe” C\Documents and Settings\ccbitlx\My Documents\内存管理\内存管理\01.cpp” 程序初始状态现在有任务执行么y or n y 第一次空闲内存如下|....................................| 开始地址大小状态|........................ ............| 0 20 0 | ...........|....................................| 20 40 0 | ...........|....................................| 60 60 0 | ...........|....................................| 120 80 0 | ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 输入作业大小若输入20,程序输出如下|....................................| 开始地址大小状态............| 20 40 0 | ...........|....................................| 60 60 0 | ...........|....................................| 120 80 0 | ...........|....................................| 200 100 0| ...........|....................................| 分配后,内存状态如下|....................................| 开始地址大小状态............| 20 40 0 | ...........|....................................| 60 60 0 | ...........|....................................| 120 80 0 | ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 作业起始地址是0 作业大小是20 请输入回收内存地址若输入0,输入回收内存大小20,即回收开始分配的内存空间,程序输出如下|....................................| 开始地址大小状态............| 0 60 0 | ...........|....................................| 60 60 0 | ...........|....................................| 120 80 0 | ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 现在有任务执行么y or n 现在针对一连串输入,譬如针对分配60大小的内存空间,然后收回,程序全部输出如下现在有任务执行么y or n y 第一次空闲内存如下|....................................| 开始地址大小状态|........................ ............| 0 20 0 | ...........|....................................| 20 40 0 | ...........|....................................| 60 60 0| ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 输入作业大小60 |....................................| 开始地址大小状态|........................ ............| 120 0 0 | ...........|....................................| 0 20 0 | ...........|....................................| 20 40 0 | ...........|....................................| 120 80 0 | ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 分配后,内存状态如下|....................................| 开始地址大小状态|........................ ............| 120 0 0 | ...........|....................................| 0 20 0 | ...........|....................................| 20 40 0 | ...........|....................................| 120 80 0 | ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 作业起始地址是60 作业大小是60 请输入回收内存地址60 请输入回收内存大小60 |....................................| 开始地址大小状态|........................ ............| 0 20 0 | ...........|....................................| 20 40 0 | ...........|....................................| 60 60 0| ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 现在有任务执行么y or n 6.收获和体会及对该题解的改进意见这次实验中,有太多的指针,我总是因为指针错误指向,苦苦思索而不得其解,跟舍友的一些交流,启发了我,使我后来再做没有这么吃力.还有,在设计中,我还借鉴了舍友的一些思路,让我明白和合作的重要性.花了两个礼拜才做完,虽然说是慢了点,但总算还是完成了。
太原理工大学实习报告
实习报告实习目的及意义:通过三年的理论学习,修完教学计划规定的全部课程,现进入毕业设计阶段。
毕业设计是完成教学计划达到培养目标的重要环节,也是学习阶段理论与实践相结合的重要环节,为今后的安全生产技术工作奠定基础。
通过本次生产实习,巩固所学的专业理论知识,加深对所学基础知识及专业理论知识的理解,进一步巩固和扩大专业知识面,培养在采矿开采技术领域发现问题、分析问题、解决问题集实际动手能力。
为走上新的岗位打下坚实的时间基础。
实习时间:2015年 7月5日——2011年7月26日实习地点:山西煤炭运销集团七一煤业有限公司实习内容:了解矿山机电设备的生产加工过程,熟悉矿山设备的基本情况,熟悉掌握自己课题内容所涉及相关的皮带机,传动方面的知识一.矿井概况与井田地质特征1.1.矿井概况1.1.1交通位置山山西煤炭运销集团七一煤业有限公司位于高平市东南约12km的米山镇北庄、郭村,河西镇朵则、西李门村一带,行政区划隶属河西镇管辖。
地理坐标为东经112°58′18″~112°59′52″,北纬35°42′29″~35°44′24″。
北距长治市62km,南距晋城市33km。
井田南侧紧靠河西镇—陵川附城镇公路,矿井有简易公路与之相连;西距207国道2km左右,距长(治)—晋(城)高速公路高平口约10km,矿井经河西镇—陵川附城镇公路与之相连;正在建设中的高(平)陵(川)高速公路从井田南部穿过;距南陈铺铁路6km,交通十分便利。
1.1.2地形地貌井田地处太行山南段西侧,地表大部被第四系黄土覆盖,属黄土丘陵地貌。
井田内土梁及冲沟发育,但较平缓,切割较浅,属侵蚀剥蚀地貌。
井田地势东部略高,西部较低,最高点位于井田东部,海拔937.50m,最低点位于井田西部祁寨村南沟谷,海拔830.27m,最大相对高差107.23m。
1.1.3气象及地震情况本区属温带大陆性气候,春季干燥多风,夏季湿热多雨,秋季温凉气爽,冬季寒冷。
太原理工大学系统分析与设计实验报告2016资料
本科实验报告课程名称:系统分析与设计实验项目:《学术出版物的网上商店在线销售系统》实验地点:逸夫楼302专业班级:软件1415班学号:2014005960学生姓名:朱伟指导教师:雷红2016年10月23 日一、实验目的通过《系统分析与设计》实验,使学生在实际的案例中完成系统分析与系统设计中的主要步骤,并熟悉信息系统开发的有关应用软件,加深对信息系统分析与设计课程基础理论、基本知识的理解,提高分析和解决实际问题的能力,使学生在实践中熟悉信息系统分析与设计的规范,为后继的学习打下良好的基础。
二、实验要求学生以个人为单位完成,自选题目,班内题目不重复,使用UML进行系统分析与设计,并完成实验报告。
实验报告以纸质版(A4)、电子版在课程结束前提交(10周)。
三、实验主要设备:台式或笔记本计算机四、实验内容1 选题及项目背景学术出版物的网上商店在线销售系统2 定义某出版社拟开发一个在线销售各种学术出版物的网上商店(ACShop),其主要的功能需求描述如下:1、ACShop在线销售的学术出版物包括论文、学术报告或讲座资料等。
2、ACShop的客户分为两种,未注册客户和注册客户。
3、未注册客户可以浏览或检索出版物,将出版物添加到购物车中。
未注册客户进行注册操作之后,成为ACShop注册客户。
4、注册客户登录之后,可将待购买的出版物添加到购物车中,并进行结账操作,结账操作的具体流程描述如下:(1)从预先填写的地址列表中选择一个作为本次交易的收货地址。
如果没有地址信息,则可以添加新地址。
(2)选择付款方式。
ACShop支持信用卡付款和银行转账两种方式。
注册客户可以从预先填写的信用卡或银行卡账号中选择一个付款。
若没有付款方式信息,则可以添加新付款方式。
(3)确认提交购物车中待购买的出版物后,ACShop会自动生成与之相对应的订单。
5、管理员负责维护在线销售的出版物目录,包括添加新出版物或者更新在售出版物信息等操作。
太原理工大学嵌入式系统实验报告
课程名称:嵌入式系统B 实验项目:嵌入式系统B 实验地点:明向实验楼308 专业班级:班学号:201 学生姓名:指导教师:2016 年11 月 6 日实验一嵌入式虚拟开发环境的搭建以及内核编译一、实验目的和要求1.熟悉ARM虚拟平台Skyeye的搭建2.熟悉交叉编译开发环境的搭建3.熟悉编译ARM-Linux4.熟悉在Skyeye平台上仿真ARM-Linux5.拓展:尝试移植其他版本的Linux,并且在Skyeye上运行二、实验内容和原理本实验是通过在PC机上搭建嵌入式开发环境虚拟环境(Skyeye),熟悉嵌入式交叉编译开发环境以及ARM-Linux系统移植的主要步骤。
实验虚拟平台SMDK2410CPU三星S3C2410(ARM920T),核心频率为62.400MHz,I-Cache 16K,D-Cache 16K内存32MB,内存频率62.400MHz实验软件介绍SkyEye是一个开源软件(OpenSource Software)项目,中文名字是“天目”,SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统(这里假定“仿真”和“模拟”的意思基本相同);可在SkyEye上运行u CLinux以及u C/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。
SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU 指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件。
由于SkyEye的目标不是验证硬件逻辑,而是协助开发,调试和学习系统软件,所以在实现上SkyEye 与真实的硬件环境相比还是有一定差别的。
编译ARM-Linux内核,熟悉ARM-Linux的移植过程。
编译成功后,同学们需要将ARM内核在SkyEye的ARM硬件模拟环境运行测试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称:操作系统B实验项目:操作系统实验实验地点:逸夫楼402、逸夫楼502教室专业班级:软件1415班学生姓名:朱伟学号:********** 指导教师:***2016年11月28日实验一几种操作系统的界面一、目的和要求(一)目的本实验的目的是使学生熟悉1—2种操作系统的界面,在熟练使用机器的基础上,能了解各种操作命令和系统调用在系统中的大致工作过程。
也就是通过操作系统的外部特征,逐步深入到操作系统的内部实质内容中去。
(二)要求1.能熟练的在1—2种操作系统的环境下工作,学会使用各种命令,熟悉系统提供的各种功能,主动而有效地使用计算机。
2.熟悉系统实用程序的调用方法和各种系统调用模块的功能和作用二、实验内容在某种操作系统的环境下建立、修改、运行、打印源程序和结果,最后撤消一个完整的程序。
提示:可按下述步骤进行1.编写一个完整的源程序,通过编辑命令送入机器,建立源程序文件;2.编译该源文件,建立相应的目标文件;3.编译有错时,再用编辑命令修改源文件,消除全部词法和语法错误;4.连接目标文件,形成可执行文件;5.执行该文件,得到结果;6.打印输出源程序和运行结果;7.撤消本次实验中形成的所有文件。
三、实验步骤及程序流程图1、按住Windows键+R输入notepad回车调出记事本。
2、编辑一个java程序选择另存为F:。
3、按住Windows键+R输入cmd回车。
4、进入Dos界面输入F:。
5、输入dir查看java文件,使用javac命令进行编辑四、程序清单class demo{public static void main(String [] args){System.out.print("软件1415班朱伟 2014005960");}}五、实验心得这次实验是在win7操作系统下进行的,通过编译连接一个java小程序熟悉DOS命令的使用。
实验中用到的DOS工具:dir:列出当前控制台所在的路径下的所有文件以及文件夹。
javac:编译。
这次实验,通过查找一些常用的DOS命令,进一步熟悉了DOS命令的使用,了解了部分操作命令和系统调用在系统中的工作过程。
实验二进程调度程序设计一、目的和要求(一)目的进程是操作系统最重要的概念之一,进程调度是操作系统的主要内容,本实验要求学生独立地用高级语言编写一个进程调度程序,调度算法可任意选择或自行设计,本实验可使学生加深对进程调度和各种调度算法的理解。
(二)要求1.设计一个有几个进程并发执行的进程调度程序,每个进程由一个进程控制块(PCB)表示,进程控制块通常应包括下述信息:进程名,进程优先数,进程需要运行的时间,占用CPU的时间以及进程的状态等,且可按照调度算法的不同而增删。
2.调度程序应包含2—3种不同的调度算法,运行时可以任选一种,以利于各种方法的分析和比较。
3.系统应能显示或打印各进程状态和参数的变化情况,便于观察。
二、示例1.题目本程序可选用优先数法或简单轮转法对五个进程进行调度。
每个进程处于运行R(run)、就绪W(wait)和完成F(finish)三种状态之一,并假定起始状态都是就绪状态W。
为了便于处理,程序中进程的运行时间以时间片为单位计算。
各进程的优先数或轮转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。
进程控制块结构如表2-1所示:表2-1PCB进程控制块链结构如图2-1所示:RUN HEAD TAIL图2-1 进程控制块链结构其中:RUN—当前运行进程指针;HEAD—进程就绪链链首指针;TAIL—进程就绪链链尾指针。
2. 算法与框图程序框图如图2-2所示。
图2-2 进程调度框图(1)优先数法。
进程就绪链按优先数大小从大到小排列,链首进程首先投入运行。
每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3。
理由是该进程如果在一个时间片中完成不了,优先级应降低一级。
接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续运行,否则,调度就绪链链首进程投入运行。
原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。
(2)简单轮转法。
进程就绪链按各进程进入的先后次序排列,链首进程首先投入运行。
进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相应于优先数法的优先数记录项位置)。
每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。
三、实验代码:#include<stdio.h>#include<stdlib.h>#define furthest 5struct process /*PCB STRUCTURE*/{int id;int priority;int cputime;int alltime;char state;int next;}prochain[furthest - 1];int procnum;int rand();int algo;int run, head, tail, j;void print();void insert(int q);void insert2();void timesch();void init();void prisch();int main() /*MAIN PROGRAM*/{agan: printf("type the algorithm is (1:RR,2:PRIO):");scanf("%d", &algo);if (algo == 2){printf("output of priority.\n");init();prisch();}else{if (algo == 1){printf("output of round robin.\n");init();timesch();}else{printf("try again,please\n");goto agan;}}for (j = 1; j <= 40; j++){printf("=");}printf("\n\n");for (j = 1; j <= 40; j++){printf("=");}printf("\n\n");printf("system finished\n");getchar();}void print() /*PRINT THE RUNNING PROCESS,WAITING QUEUE AND PCB SEQUENCE LIST*/{int k, p;for (k = 1; k <= 40; k++)printf("=");printf("\nrunning proc. "); printf("waiting queue.");printf("\n %d ", prochain[run].id); p = head;while (p != 0){printf("%5d", p);p = prochain[p].next;}printf("\n");for (k = 1; k <= 40; k++)printf("=");printf("\n");printf(" id ");for (k = 1; k<furthest + 1; k++)printf("%5d", prochain[k].id);printf("\n");printf("priority ");for (k = 1; k<furthest + 1; k++)printf("%5d", prochain[k].priority); printf("\n");printf("cputime ");for (k = 1; k<furthest + 1; k++)printf("%5d", prochain[k].cputime); printf("\n");printf("alltime ");for (k = 1; k<furthest + 1; k++)printf("%5d", prochain[k].alltime); printf("\n");printf("state ");for (k = 1; k<furthest + 1; k++)printf("%5c", prochain[k].state);printf("\n");printf("next ");for (k = 1; k<furthest + 1; k++)printf("%5d", prochain[k].next);printf("\n");}void insert(int q) /*INSERT A PROCESS*/{int p, s;p = head;s = prochain[head].next;while ((prochain[q].priority<prochain[s].priority) && (s != 0)) {p = s;s = prochain[s].next;}prochain[p].next = q;prochain[q].next = s;}void insert2() /*PUT A PROCESS ONTO THE TAIL OF THE QUEUE*/{ prochain[tail].next = run;tail = run;prochain[run].next = 0;}void init() /*CREATE A WAITING QUEUE*/{int i;head = 0;if (algo == 2){for (i = 1; i<furthest + 1; i++){prochain[i].id = i;prochain[i].priority = (rand() + 11) % 41;prochain[i].cputime = 0;prochain[i].alltime = (rand() + 1) % 7;prochain[i].state = 'W';prochain[i].next = 0;if ((prochain[i].priority<prochain[head].priority) && (head != 0)) insert(prochain[i].id);else{prochain[i].next = head;head = prochain[i].id;}}}else{for (i = 1; i<furthest + 1; i++){prochain[i].id = i;prochain[i].priority = (rand() + 1) % 3 + 1;prochain[i].cputime = 0;prochain[i].alltime = (rand() + 1) % 7;prochain[i].state = 'W';prochain[i].next = (i + 1) % (furthest + 1);}head = 1;tail = furthest;prochain[furthest].next = 0;}run = head;prochain[run].state = 'R';head = prochain[head].next;prochain[run].next = 0;print();}void prisch() /*THE PROCESS WITH PRIO ALGORITHM*/{while (run != 0){prochain[run].cputime += 1;prochain[run].priority -= 3;prochain[run].alltime -= 1;if (prochain[run].alltime == 0){prochain[run].state = 'F';prochain[run].next = 0;if (head != 0){run = head;prochain[run].state = 'R';head = prochain[head].next;}else{prochain[0].id = prochain[run].id;run = 0;}}else{if ((prochain[run].priority< prochain[head].priority) && (head != 0)){prochain[run].state = 'W';insert(run);run = head;prochain[run].state = 'R';head = prochain[head].next;}}print();}}void timesch() /*THE PROCESS WITH RR ALRORITHM*/ {while (run != 0){prochain[run].alltime -= 1;prochain[run].cputime += 1;if (prochain[run].alltime == 0){prochain[run].state = 'F';prochain[run].next = 0;if (head != 0){run = head;prochain[run].state = 'R';head = prochain[head].next;}else{prochain[0].id = prochain[run].id;run = 0;}}else{if ((prochain[run].cputime == prochain[run].priority) && (head != 0)){prochain[run].state = 'W';prochain[run].cputime = 0;insert2();run = head;prochain[run].state = 'R';head = prochain[head].next;}}print();四、实验结果:(1)(2)五、实验心得:通过本次实验,加深了对进程调度和调度算法的理解。