计算机操作系统实验二
- 格式:doc
- 大小:272.00 KB
- 文档页数:8
篇一:操作系统实验报告完全版《计算机操作系统》实验报告班级:姓名:学号:实验一进程控制与描述一、实验目的通过对windows 2000编程,进一步熟悉操作系统的基本概念,较好地理解windows 2000的结构。
通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解windows 2000中进程的“一生”。
二、实验环境硬件环境:计算机一台,局域网环境;软件环境:windows 2000 professional、visual c++6.0企业版。
三、实验内容和步骤第一部分:程序1-1windows 2000 的gui 应用程序windows 2000 professional下的gui应用程序,使用visual c++编译器创建一个gui应用程序,代码中包括了winmain()方法,该方法gui类型的应用程序的标准入口点。
:: messagebox( null, “hello, windows 2000” , “greetings”,mb_ok) ;/* hinstance */ , /* hprevinstance */, /* lpcmdline */, /* ncmdshow */ )return(0) ; }在程序1-1的gui应用程序中,首先需要windows.h头文件,以便获得传送给winmain() 和messagebox() api函数的数据类型定义。
接着的pragma指令指示编译器/连接器找到user32.lib库文件并将其与产生的exe文件连接起来。
这样就可以运行简单的命令行命令cl msgbox.cpp来创建这一应用程序,如果没有pragma指令,则messagebox() api函数就成为未定义的了。
这一指令是visual studio c++ 编译器特有的。
接下来是winmain() 方法。
其中有四个由实际的低级入口点传递来的参数。
操作系统实验报告专业: 计算机科学与技术班级: 计算机1303B学号: 2013080332025姓名: 龚红宇成绩:指导教师:孙悦2015年 12月 15 日实验二进入VI编辑器一.进入vi编辑器,以及命名、保存、查错和运行格式:vi 文件名例:vi sy.cVi编辑器三种工作方式:1.编辑方式:进入VI 处于编辑方式2.文本输入方式:在编辑方式下输入a ,进入追加方式,输入i,进入插入方式3.命令方式:在输入方式下,按Esc 键,由文本输入转向编辑方式,输入冒号:进入命令方式4.退出vi: wq写文件退出:w wenjianming 写文件:q! 不写退出:wq! 写退出编译c文件Gcc -o wenjianming.out wenjianming.c运行文件:./wenjianming.out二、实验内容(1)/* 父子进程之间的同步之例*/#include <stdio.h>main( ){int pid1;if(pid1=fork()) /*create child1 */{ if (fork()) /*create the child2*/,printf (“parent’s context.\n”);printf(“parent is waiting the child1 terminate.\n);wait(0);printf(“parent is waiting the child2 terminate.\n”);wait(0);printf(“parent terminate.\n”);exit(0);}else/* child2*/printf(“child2’s context.\n”);sleep(5);printf(“ child2 terminate.\n”);exit(0);}else { if(pid1==0)/* child1 */, printf(“child1’s context.\n”);sleep(10);printf(“child1 terminate.\n”);exit(0);}}}(2)管道通信机制通过使用管道实现两个和多个进程之间的通信。
《计算机操作系统》实验指导书(适合于计算机科学与技术专业)湖南工业大学计算机与通信学院二O一四年十月前言计算机操作系统是计算机科学与技术专业的主要专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
计算机操作系统的实验目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握操作系统的基本原理,加深对操作系统基本方法的理解,加深对课堂知识的理解,为学生综合运用所学知识,在Linux环境下调用一些常用的函数编写功能较简单的程序来实现操作系统的基本方法、并在实践应用方面打下一定基础。
要求学生在实验指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个实验解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,并且能够进行简单分析和判断;能够熟练使用Linux用户界面;掌握操作系统中进程的概念和控制方法;了解进程的并发,进程之间的通信方式,了解虚拟存储管理的基本思想。
同时培养学生进行分析问题、解决问题的能力;培养学生完成实验分析、实验方法、实验操作与测试、实验过程的观察、理解和归纳能力。
为了收到良好的实验效果,编写了这本实验指导书。
在指导书中,每一个实验均按照该课程实验大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式完成实验任务,最终引导学生有目的、有方向地完成实验任务,得出实验结果。
任课教师在实验前对实验任务进行一定的分析和讲解,要求学生按照每一个实验的具体要求提前完成准备工作,如:查找资料、设计程序、完成程序、写出预习报告等,做到有准备地上机。
进行实验时,指导教师应检查学生的预习情况,并对调试过程给予积极指导。
实验完毕后,学生应根据实验数据及结果,完成实验报告,由学习委员统一收齐后交指导教师审阅评定。
实验成绩考核:实验成绩占计算机操作系统课程总评成绩的20%。
指导教师每次实验对学生进行出勤考核,对实验效果作记录,并及时批改实验报告,综合评定每一次的实验成绩,在学期终了以平均成绩作为该生的实验成绩。
计算机基础实验报告实验一二参考模板一、实验目的计算机基础实验一的目的在于让学生熟悉计算机的基本操作和常用软件的使用,培养学生的动手能力和问题解决能力。
实验二则侧重于加深对计算机系统和网络知识的理解,提高学生的综合应用能力。
二、实验环境实验在学校的计算机实验室进行,每台计算机均安装了 Windows 操作系统,并配备了常用的办公软件、编程工具和网络浏览器等。
实验室还提供了稳定的网络环境,以便进行网络相关的实验操作。
三、实验内容与步骤(一)实验一1、计算机硬件的认识打开计算机主机箱,观察主板、CPU、内存、硬盘、显卡等硬件设备的外观和接口。
了解各硬件设备的主要功能和性能指标。
2、操作系统的安装与设置使用安装光盘或 U 盘启动盘,安装 Windows 操作系统。
进行系统初始化设置,如用户名、密码、日期时间等。
安装驱动程序,确保硬件设备正常工作。
3、常用办公软件的使用打开 Word 软件,进行文档的创建、编辑、排版和保存。
使用 Excel 软件进行表格的制作、数据计算和图表绘制。
利用 PowerPoint 软件创建演示文稿,添加文字、图片、动画等元素。
(二)实验二1、计算机网络基础了解计算机网络的组成、分类和拓扑结构。
学习 IP 地址、子网掩码、网关和 DNS 的概念和设置方法。
通过命令提示符(CMD)窗口,使用 Ping 命令检测网络连通性。
2、网络服务与应用配置 Web 服务器和 FTP 服务器,实现网页的发布和文件的上传下载。
学会使用浏览器访问网页、搜索信息和下载文件。
了解电子邮件的工作原理,注册邮箱并进行邮件的收发。
四、实验结果与分析(一)实验一1、硬件认识方面,学生能够准确识别计算机的主要硬件设备,并对其功能有了初步的了解。
但对于一些较新的硬件技术和性能参数的理解还不够深入。
2、操作系统的安装和设置过程较为顺利,大部分学生能够独立完成。
但在驱动程序的安装过程中,少数学生遇到了兼容性问题,需要通过更新驱动或寻求技术支持解决。
实验报告实验课程: 计算机操作系统学生姓名:XXX学号:XXXX专业班级:软件2014年12月25日目录实验一熟悉Windows XP中的进程和线程 (3)实验二进程调度 (7)实验三死锁避免—银行家算法的实现 (16)实验四存储管理 (22)实验一熟悉Windows XP中的进程和线程一、实验名称熟悉Windows XP中的进程和线程二、实验目的1、熟悉Windows中任务管理器的使用。
2、通过任务管理器识别操作系统中的进程和线程的相关信息。
3、掌握利用spy++.exe来察看Windows中各个任务的更详细信息。
三、实验结果分析1、启动操作系统自带的任务管理器:方法:直接按组合键Ctrl+Alt+Del,或者是在点击任务条上的“开始”“运行”,并输入“taskmgr.exe”。
2、调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,并完成下表:表一:统计进程的各项主要信息3、启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结束掉。
再从任务管理器中分别找到下列程序:winlogon.exe、lsass.exe、csrss.exe、smss.exe,试着结束它们,观察到的反应是任务管理器无法结束进程,原因是该系统是系统进程。
4、在任务管理器中找到进程“explorer.exe”,将之结束掉,并将桌面上你打开的所有窗口最小化,看看你的计算机系统起来什么样的变化桌面上图标菜单都消失了、得到的结论 explorer.exe是管理桌面图标的文件(说出explorer.exe进程的作用)。
5、运行“spy++.exe”应用软件,点击按钮“”,切换到进程显示栏上,查看进程“explorer.exe”的各项信息,并填写下表:进程:explorer.exe 中的各个线程6、注意某些线程前有“+”,如图所示:,说明二者之间的差异前有“+”其器线程下有窗口。
四、心得体会通过本次实验,我了解到了windows系统中进程的管理与操作,我了解了如何切出任务管理器,任务管理器应用与其他与进程相关的知识,明白了有些系统程序不能够关闭,系统中的进程与线程虽然很多,但是其中有许多关联,只要弄清楚其中的关联那么就能够运用好进程与线程,达到我们的目的。
计算机操作系统原理
实验报告
专业:1104202
学号:110420212
姓名:李敖
哈尔滨工业大学(威海)
实验二进程及其资源管理
一、实验目的
1.理解资源共享与互斥特性以及操作系统管理资源的基本方法。
2.学会使用高级语言进行多线程编程的方法。
3.掌握利用VC++或Java线程库实现一个管理器,用来实现操作系统对进程及其资源的管理功能。
4.通过该实验,学生可在源代码级完成进程及其资源管理方案的分析、功能设计、编程实现,控制进程间的同步、互斥关系。
二、实验要求
1.知识基础:学生应在完成对进程和线程、调度、死锁等章节的学习后进行。
2.开发环境与工具:
硬件平台——个人计算机。
软件平台——Windows操作系统,根据需要,任选安装VC++语言、java 语言或C语言开发环境。
三、实验内容
1.开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。
2.开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。
四、程序流程图
1.进程初始化
2.优先级策略调度
五、实验结果
创建进程1
创建进程2
查看正在运行的进程
替换进程
删除进程
进程调度进程1
进程2
进程3
FCFS
HPF
六、结果分析
有上述程序运行结果可知,此次试验已经基本达到了实验要求,能够实现进程的创建、查看、替换、删除操作以及进程的调度。
不过,在进程的创建中,要求每个资源要用到3个资源,对于再多的资源就无法保证了。
引言概述:操作系统是计算机系统中最为核心的软件之一,它负责管理计算机的硬件资源并提供用户与硬件之间的接口。
为了更好地理解和掌握操作系统的工作原理和实际应用,我们进行了操作系统的实训。
本报告是操作系统实训的第二部分,主要讨论了操作系统的进程管理、内存管理、文件系统管理、设备管理和网络管理等方面的内容。
正文:一、进程管理1.进程与线程的概念及区别2.进程调度算法的分类和比较3.进程同步与互斥的实现方法4.死锁的预防和解决策略5.线程的管理与调度方式二、内存管理1.内存的分段与分页管理方式2.虚拟内存的概念与作用3.页面置换算法的原理和性能比较4.内存管理中的页表与快表5.高级内存管理机制及其实现方法三、文件系统管理1.文件系统的基本组成和功能2.文件的存储与访问方式3.文件系统的目录结构与索引方式4.文件系统的缓存和缓冲区管理5.文件系统中的权限控制和安全性保护四、设备管理1.I/O设备的分类与特点2.设备管理的基本策略与方法3.磁盘调度算法及优化策略4.设备驱动程序的设计与实现方法5.设备管理中的错误处理和故障恢复五、网络管理1.计算机网络的基本概念与体系结构2.OSI模型与TCP/IP协议族3.IP地质的分配与路由选择4.网络传输控制协议与网络编程5.网络管理中的性能优化和安全保障总结:通过本次实训,我们深入学习了操作系统的各个方面,包括进程管理、内存管理、文件系统管理、设备管理和网络管理等。
我们对操作系统的工作原理和实际应用有了更深入的了解,并掌握了相关的技术和方法。
在未来的实际工作中,我们将能够更好地应用和运用操作系统的知识,提高计算机系统的性能和稳定性。
同时,我们也意识到操作系统的重要性和复杂性,需要不断学习和研究,以适应快速发展的信息技术时代的需求。
希望通过本报告的撰写和总结,能够对其他同学的学习和研究有所帮助。
引言概述正文内容实验搭建硬件环境配置:介绍实验所需的硬件设备,包括计算机、虚拟机等。
操作系统实验
(课程设计)实验报告
学院
专业
班级/学号
学生姓名
成绩
实验地点_
实验日期___ __
指导教师_____ ___ _____
(课程上机)实验报告
1.实验名称、实验目的、实验内容、实验要求由教师确定,实验前由教师事先填好,然后作为实验报告模版供学生使用;
2.实验准备由学生在实验或上机之前填写,教师应该在实验前检查;
3.实验过程由学生记录实验的过程,包括操作过程、遇到哪些问题以及如何解决等;
4.实验总结由学生在实验后填写,总结本次实验的收获、未解决的问题以及体会和建议等;
5.源程序、代码、具体语句等,若表格空间不足时可作为附录另外附页。
一、选择题1.在进程的组成部分之中,进程在运行中不可修改的部分是______。
A.私用程序段B.共享程序段C.数据段D.进程控制块2.响应比高者优先作业调度算法是以计算时间和______来考虑的。
A.输入时间B.完成时间C.周转时间D.等待时间3.在消息缓冲通信中,消息队列属于______资源。
A.临界B.共享C.永久D.可剥夺4.进程间的同步是指进程间在逻辑上的相互______关系。
A.联接B.制约C.继续D.调用5.最适合于分时系统的进程调度算法是______。
A.先来先服务(FCFS)B.最短作业优先(SSJF)C.优先数法D.轮转法(RR)6.进程A和进程B通过共享缓冲区协作完成数据处理,进程A负责生产数据并放入缓冲区,进程B从缓冲区中读数据并输出。
进程A和进程B之间的关系是______。
A.互斥关系B.同步关系C.互斥和同步D.无制约关系7.在优先级调度中,______类进程可能被“饿死”,即长时间得不到调度。
A.短进程B.长进程C.低优先级进程D.大内存进程8.进程从运行状态到阻塞状态可能是由于______。
A.进程调度程序的调度B.现运行进程的时间片耗尽C.现运行进程执行了wait操作D.现运行进程执行了signal操作9.银行家算法在解决死锁问题中是用于______的。
A.预防死锁B.避免死锁C.检测死锁D.解除死锁10.______不是进程调度算法。
A.时间片轮转法B.先来先服务方法C.响应比高者优先法D.均衡调度算法11.下面关于线程的叙述中正确的是______。
A.线程包含CPU现场,可以独立执行程序B.每个线程有自己独立的地址空间C.线程之间的通信必须使用系统调用函数D.进程只能包含一个线程12.并发进程之间______。
A.彼此无关B.必须同步C.必须互斥D.可能需要同步或互斥13.当一个进程运行时,系统可能基于某种原则强行将其撤下,把处理器分配给其他进程,这种调度方式是______。
计算机操作系统实验院系:机械电子工程系专业班级:计算机1101班姓名:学号: 201106060136指导教师:实验二:磁盘调度算法——先来先服务1.实验目的:为了尽可能的减少输入输出造作中的寻找时间。
磁盘调度算法有先来先服务调度算法,这个就是谁先到,谁先执行,如果有空间的话,后来的可以继续占用并调度,如果没有空间的话,必须等待。
2.实验内容:先来先服务FCFS:公平,简单,每个进程的请求都能依次得到处理。
最短时间优先调度算法SSTF:要求访问的磁道是当前磁头所在的磁道最近,每次寻道时间最短,但不能保证平均寻道时间最短。
可能导致一些请求无限期推延,产生饥饿现象。
电梯调度算法SCAN:不仅考虑当前磁道的距离,优先考虑在磁道前进方向的最短时间,排除磁头在盘面上的往复运动,避免了出现“饥饿”现象。
电梯原理。
N-SCAN:是SCAN的改良。
磁头改变方向时,以到达请求服务的最短时间。
对中间请求服务更有利。
C-SCAN:磁头单项移动。
消除N-SCAN对两端请求的不公平。
3.实验运行结果1.依次输入9个磁道数:40 90 170 38 110 20 144 48 592.选择调度算法:先来先服务算法访问顺序和平均寻道长度:最短寻道时间优先的访问顺序和平均寻道长度:扫描算法的磁道访问顺序和平均寻道长度:1.移动壁由里向外2.移动壁由外向里实验源代码:#include<stdio.h>#include<math.h>void FCFS(int b[],int n,int init) //先来先服务{int i,s,sum;int a[20];for(i=0;i<n;i++)a[i]=b[i];s=init;sum=0;for(i=0;i<n;i++){printf("第%d次访问的磁道:%d\n",i+1,a[i]);sum+=abs(s-a[i]);s=a[i];}printf("平均寻道长度:%f\n",sum*1.0/n);}void SSTF(int b[],int n,int k) //最短寻道法{int i,j,s,sum=0,p;int a[20];for(i=0;i<n;i++)a[i]=b[i];for(i=n-1;i>=0;i--){s=a[0];p=0;for(j=0;j<=i;j++)if(abs(a[j]-k)<abs(s-k)){s=a[j];p=j:}a[p]=a[i];printf("第%d次访问的磁道:%d\n",n-i,s);sum+=abs(s-k);k=s;}printf("平均寻道长度:%f\n",sum*1.0/n);}void SCAN1(int b[],int n,int k) //扫描算法{int i,j,s,sum=0,p,biaoji;int a[20];for(i=0;i<n;i++)a[i]=b[i];for(i=n-1;i>=0;i--){biaoji=0;for(j=0;j<=i;j++)if(a[j]-k<0){biaoji=1;p=j;break;}if(biaoji==1){s=a[p];for(j=0;j<=i;j++)if(a[j]<k&&k-a[j]<k-s){ s=a[j];p=j; }a[p]=a[i];printf("第%d次访问的磁道:%d\n",n-i,s);sum+=k-s;k=s;}else{s=a[0];for(j=0;j<=i;j++)if(a[j]-k<=s-k){ s=a[j];p=j;}a[p]=a[i];printf("第%d次访问的磁道:%d\n",n-i,s);sum+=abs(k-s);k=s;}}printf("平均寻道长度:%f\n",sum*1.0/n);}void SCAN2(int b[],int n,int k) //循环算法{int i,j,s,sum=0,p,biaoji;int a[20];for(i=0;i<n;i++)a[i]=b[i];for(i=n-1;i>=0;i--){biaoji=0;for(j=0;j<=i;j++)if(a[j]-k>0){ biaoji=1;p=j;break; }if(biaoji==1){ s=a[p];for(j=0;j<=i;j++)if(a[j]>k&&a[j]-k<s-k){ s=a[j];p=j; }a[p]=a[i];printf("第%d次访问的磁道:%d\n",n-i,s);sum+=s-k;k=s; }else{s=a[0];for(j=0;j<=i;j++)if(k-a[j]<=k-s){s=a[j];p=j; }a[p]=a[i];printf("第%d次访问的磁道:%d\n",n-i,s);sum+=abs(k-s);k=s;}}printf("平均寻道长度:%f\n",sum*1.0/n);}void C_SCAN(int array[],int m){int temp;int k=1;int now,l,r,d;int i,j,sum=0;int avg;for(i=0;i<m;i++){for(j=i+1;j<m;j++){if(array[i]>array[j])//对磁道号进行从小到大排列{temp=array[i];array[i]=array[j];array[j]=temp;}}}printf("请输入当前的磁道号:");scanf("%d",&now);if(array[m-1]<=now)//判断整个数组里的数是否都小于当前磁道号{ printf("CSCAN调度结果: ");for(i=0;i<m;i++){ printf("%d ",array[i]);//将磁道号从小到大输出}sum=now-array[0]+array[m-1];//计算移动距离}else if(array[0]>=now)//判断整个数组里的数是否都大于当前磁道号{printf("CSCAN调度结果: ");for(i=0;i<m;i++){printf("%d ",array[i]);//将磁道号从小到大输出}sum=array[m-1]-now;//计算移动距离}else{while(array[k]<now)//逐一比较以确定K值{k++;}l=k-1;r=k;printf("*************循环算法**************\n");printf("1.移动臂由里向外 2.移动臂由外向里\n");printf("***********************************\n");printf("请在下面输入您的选择:");scanf("%d",&d);printf("CSCAN调度结果: ");if(d==0){for(j=l;j>=0;j--){printf("%d ",array[j]);}for(j=m-1;j>=r;j--){printf("%d ",array[j]);}sum=2*(array[m-1]-array[0])-array[r]+now;//计算移动距离}//磁道号减小方向else{for(j=r;j<m;j++){printf("%d ",array[j]);}for(j=0;j<r;j++){printf("%d ",array[j]); }sum=2*(array[m-1]-array[0])+array[r-1]-now;//计算移动距离}}//磁道号增加方向avg=sum/m;printf("\n平均寻道长度: %d \n",avg);}void main(){int a[20];int i,n,k,k1,init;printf("请输入需要访问的磁道总数:");scanf("%d",&n);for(i=0;i<n;i++){printf("需要访问的磁道%d:",i+1);scanf("%d",&a[i]); }printf("请输入指针所在磁道:");scanf("%d",&init);k=1;while(k){printf("*********************************************\n");printf(" 磁盘调度算法 \n");printf("1.先来先服务(FCFS) 2.最短寻道时间优先(SSTF)\n");printf("3.扫描算法 (SCAN) 4.循环算法(C-SCAN) \n");printf("*********************************************\n");printf("请在下面输入您的选择:");scanf("%d",&k);switch(k){case 1:FCFS(a,n,init);break;case 2:SSTF(a,n,init);break;case 3:k1=1;while(k1){printf("*************扫描算法**************\n");printf("1.移动臂由里向外 2.移动臂由外向里\n");printf("0.返回上一层 \n");printf("***********************************\n");printf("请在下面输入您的选择:");scanf("%d",&k1);switch(k1){ case 1:SCAN1(a,n,init);break;case 2:SCAN2(a,n,init);break;}}break;case 4:C_SCAN(a,n,init);break;}}}。