OS实验报告
OS上机实验报告
操作系统上机实验报告
实验名称:
学生姓名:学号:
所在学院:
专业:
指导教师:
年月日
操作系统课内上机实验报告填写说明
1.本报告作为指导教师对学生课内上机实验评分的依据材料之一。
此报告应在指导教师指导下,由学生在上机实验结束时完成,以班为单位收齐后按时交给指导教师批阅;
2.本报告内容必须用黑墨水笔工整填写或以纸质打印稿形式提交给指导教师。
打印文字采用小4号宋体,1.5倍行距,禁止打印在其它纸上后剪贴;
3.本报告中的“设计说明书”应按论文的格式成文,并直接书写(或打印)在本报告“设计说明书”栏目内。
其内容可以结合设计题目的内容和要求,根据自己在本上机实验阶段所完成的工作,阐明自己所采取的设计思想和方法(软件的算法和数据结构及其主要模块介绍、程序在测试用例下的测试运行结果等)、完成本课程设计的心得体会、设计中的不足及改进设计的设想或建议等。
说明书的篇幅应不少于2000字。
4.上机实验的软件文档(含程序编译和运行环境、源代码清单以及程序运行的有关结果)可以单独打印成册或上传到指导教师指定计算机(以学生自己的学号作为文件名),作为课程设计报告的附件。
上机实验报告的附件是指导教师对学生课内上机实验评分的另一个依据。
- 1 -
课程设计(上机实习)报告
2
- 3 -
4
- 5 -
指导教师意见
6。
os实验报告
武汉大学计算机学院课程实验(设计)报告专业(班):信安一班学号:2008302530008姓名:蔡璐墩课程名称:操作系统设计2010年10月25日设计一个按时间片轮转法实现处理器调度的程序一、实习目的本实习模拟在单处理器环境下的处理器调度,加深了解处理器调度的工作。
二、实习内容选择一个调度算法,实现处理器调度。
三、设计思想进程在队列中,每个时间片调度算法总是上一个时间片中进程的下一个投入运行,进程每运行一次已运行时间加1,从而避免了一个作业长期占用处理机,下一时间片调度算法适时再调度,首先判断下一进程是否运行完,未运行完则执行,运行完则转到下一进程,直到就绪队列为空。
四、用到的数据结构五、主函数先是完成初始化,将进程指针链接成循环链表,为了能看出运行的过程,在每个时间片后加了个_sleep(600);六、调试过程实验平台为dev-cpp进程p1,p2,p3,p4,p5分别标识为a,b,c,d,e。
七、实验总结通过处理器调度这个实验,使我学会了处理器如何处理进程调度。
这个实验使我认识到了进程调度的整个过程,感受非常深刻。
通过实验基本上完成了预期的目的,整体上对于完成较大规模的程序设计有了一定把握,并且对已经学过的数据结构思想有了加深,但在程序编写时仍然存在一定的问题,例如:对基本的结构体掌握的不是很牢靠,同时对个别模块的分析欠妥,以致在编写代码是出现了没有想到的问题,没有很好的掌握一般软件设计的方法:对于编码风格的把握不是很好,写的代码很乱,调试起来不方便。
可变分区管理方式下采用首次适应算法实现主存分配和回收一、实验目的本实验模拟存储器分配回收的管理策略,从而对存储器不同管理方式下的管理策略和技术有一定的掌握。
二、实验内容一个好的计算机系统不仅需要有一个足够容量的,存取速度高,稳定可靠的存储器,而且还应能合理使用这些存储器,当用户提出申请存储空间时,存储管理必须根据申请者的要求,按一定的策略,分析存储空间的使用情况,找出足够的空闲区域,即使的分配给申请者,当作业撤离活主动归还时,则存储管理相应的收回作业占用空间或归还部分存储空间。
高级OS实验一文件系统实验报告
实验1:Vnod e和Inod e数据结构及缓存一、实验内容及目的为了更好地支持多种类型的文件系统,Solaris操作系统在设计上使用了一种特殊的结构:虚拟文件系统框架。
在虚拟文件系统中,操作系统内核通过vnode来识别每个活动文件,对于一个具体的文件系统,例如UFS,则是由Inode来识别具体的文件。
本实验的目的是观察Solaris操作系统内核中Vnode和Inode数据结构,了解它们之间的关系,同时学习使用mdb 在内核中查找指定的数据结构。
二、实验步骤1.启动一个shell,使用vi编辑器生成文件/work/exp_design/test.txt,内容为字符串“This is a file for UFS testing.”。
2.退出vi编辑器,使用命令#/usr/sfw/bin/gcc file_access.c编译生成可执行程序a.out。
3.运行“mdb -k”,进入内核模块调试程序。
4.启动另一个shell,运行./a.out。
结果为:The file descriptor returned is 3The data read from the file tis This is a5.切换回正在运行mdb的shell,获取进程a.out的地址:> ::ps!grep a.outR 843 804 843 804 0 0x42004000 ffffffff83d25dd8 a.out ffffffff83d25dd8这个地址是proc类型的数据,也就是进程的pcb。
6.使用命令fd获得有关这个进程打开文件的file类型数据结构的地址。
> fffffffff83d25dd8::fd 3ffffffff84ldee387.打印出这个file数据结构的内容。
> ffffffff84ldee38::print struct file{f_tlock = {_opaque = [0]}f_flag = 0xlf_pad = 0xbaddf_vnode = 0xffffffff84181140f_offset = 0x9f_cred = 0xfffffff83a95bd0f_audit_data = 0f_count = 0x1}其中f_vnode就是这个文件的vnode地址。
OS实验报告(1)
(4)作业中指令的访问次序按下述原则生成:
•50%的指令是顺序执行的。
•25%的指令是均匀分布在前地址部分。
•25%的指令时均匀分布在后地址部分。
具体实施办法参见实验指导书。
3实验结果(给出编写的程序源代码和运行结果的截图)
(2)假设初始状态下,可用的内存空间为640KB,并有下列的请求序列:
•作业1申请130KB。
•作业2申请60KB。
•作业3申请100KB。
•作业2释放60KB。
•作业4申请200KB。
•作业3释放100KB。
•作业1释放130KB。
•作业5申请140KB。
•作业6申请60KB。
•作业7申请50KB。
计算机操作系统
实验报告
学号:
姓名:
提交日期:
XXXX-XX-XX
成绩:
东北大学秦皇岛分校
实验1使用动态优先权的进程调度算法的模拟
1实验目的
(1)加深对进程概念的理解
(2)深入了解系统如何组织进程,创建进程
(3)进一步认识如何实现处理机调度
2实验内容
(1)实现对N个进程采用动态优先权优先算法的进程调度。
(2)每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:
进程标识ID。
进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。
进程已占用的CPU时间CPUTIME。
进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。
进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,将进入阻塞状态。
1实验目的
系统初始化设置的实验报告
系统初始化设置的实验报告
实验目的:通过本实验,学生们能够了解到系统初始化的过程,并能够掌握系统初始
化的设置方法。
实验原理:系统初始化是指系统启动后自行加载的程序,通常是为了对计算机进行各
种必要的设置,以便于操作系统和其他应用程序的正常运行。
包括硬件自检,检测其他硬
件设备的状态,设置所需的软件环境形成稳定的运行环境,等等。
实验装置:PC机,操作系统(Windows/Linux/Mac OS)。
实验步骤:
1. 启动电脑,按下Delete/Delete+F2/F10/F12等键进入BIOS设置界面。
2. 在初始化设置界面中,可以通过方向键选择需要配置的项目,如系统时间、日期、开机密码、系统语言、启动项等。
3. 对于每个项目,可以使用Enter键进入该项目进行配置。
4. 对于系统启动项的设置,在Boot顺序设置菜单中,可以选择不同的启动顺序,如
从硬盘、光驱、U盘等设备启动。
5. 配置完成后,按下F10保存更改并退出BIOS设置界面。
实验总结:系统初始化是一项很重要的工作,通过实验,我们了解到了系统初始化的
各项设置,学生们可以自行进行系统初始化。
此外,通过本实验,学生们也掌握了一定的
计算机维护和服务知识。
OS实验一
否
进程时间 片数为0? 是 撤消该进程
撤消该进程
否
进程队列空?
是
否 结束 是 进程队列空?
2、时间片轮转算法说明 (1)PCB的结构(如下图所示):轮转法中,设PCB的结构如 右图所示,其中各数据项的含义如下: Id:进程标识符号,取值1—5。 Span:在某一轮中,分配给此进程的时间片数,取值1—3。 Used:现运行进程在本轮执行过程已用的时间片数。 Need:进程尚需的CPU时间数,初值表示该进程需要运行的 总时间,取值范围5—10。并随机产生,每运行一个时间片 need减1;need为0则进程结束。 Status:进程状态R(运行),W(就绪),F(完成);初始时 所有进程处于就绪状态。 Next:指向就绪队列中下一个进程的PCB的指针。
OS实验一
进程调度
1、实验目的:本次实验要求用C语言编写一个进程调度 模拟程序,使用优先级或时间片轮转法实现进程调 度。目的是理解进程调度算法及其应用。 2、实验环境:Turbo C 2.0/3.0或VC++6.0 3、实验学时: 4学时,必做实验。 4、实验内容 1)设计有5个进程并发执行的模拟调度程序,每 个程序由一个PCB表示。 2)模拟调度程序可任选两种调度算法之一实现。 3)程序执行中应能在屏幕上显示出各进程的状态 变化,以便于观察调度的整个过程。
RUN
1
HEAD
Tail
3
5
… …
2
0 …
…
RUN ----当前运行进程指针; HEAD──就绪进程队列的PCB链链首指针; TAIL──就绪进程队列的PCB链链尾指针;
… R
W
W
W
输入调度算法Alg
pritity
OS实验六——精选推荐
OS实验六《操作系统》实验报告实验三进程管理及进程通信⼀.实验⽬的利⽤Linux提供的系统调⽤设计程序,加深对进程概念的理解。
体会系统进程调度的⽅法和效果。
了解进程之间的通信⽅式以及各种通信⽅式的使⽤。
⼆.实验准备复习操作系统课程中有关进程、进程控制的概念以及进程通信等内容(包括软中断通信、管道、消息队列、共享内存通信及信号量概念)。
熟悉本《实验指导》第五部分有关进程控制、进程通信的系统调⽤。
它会引导你学会怎样掌握进程控制。
阅读例程中的程序段。
三.实验⽅法⽤vi 编写c 程序(假定程序⽂件名为prog1.c)编译程序$ gcc -o prog1.o prog1.c 或$ cc -o prog1.o prog1.c运⾏$./prog1.o四.实验内容及步骤⽤v i编写使⽤系统调⽤的C语⾔程序。
1.编写程序。
显⽰进程的有关标识(进程标识、组标识、⽤户标识等)。
经过5 秒钟后,执⾏另⼀个程序,最后按⽤户指⽰(如:Y/N)结束操作。
编译运⾏结果:2.编写程序。
实现⽗进程创建⼀个⼦进程。
体会⼦进程与⽗进程分别获得不同返回值,进⽽执⾏不同的程序段的⽅法。
编译运⾏:思考:⼦进程是如何产⽣的?⼜是如何结束的?⼦进程被创建后它的运⾏环境是怎样建⽴的?答:⼦进程由fork()函数创建,通过exit()函数⾃我结束,⼦进程被创建后核⼼将为其分配⼀个进程表项和进程标识符,检查同时运⾏的进程数⽬,并且拷贝进程表项的数据,由⼦进程继承⽗进程的所有⽂件。
3.编写程序。
⽗进程通过循环语句创建若⼲⼦进程。
探讨进程的家族树以及⼦进程继承⽗进程的资源的关系。
程序如下:编译运⾏:思考:①画出进程的家族树。
⼦进程的运⾏环境是怎样建⽴的?反复运⾏此程序看会有什么情况?解释⼀下。
183922472248 2252 22542249 2251 22532250每⼀次运⾏返回的进程号都不相同,但是都符合家族进程树,出现这样的情况是由于系统本⾝就是随机分配进程号的。
山东大学软件工程OS实验3实验报告
实验三进程调度算法实验姓名:班级:学号:1.1实验目的加深对进程调度概念的理解,体验进程调度机制的功能,了解 Linux 系统中进程调度策略的使用方法。
练习进程调度算法的编程和调试技术。
1.2试验环境:linux系统1.3实验步骤(1)在新建文件夹中建立以下名为 psched.c的C语言程序/** Filename : psched.c 独立实验*/#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <signal.h>#include <stdio.h>#include <stdlib.h>#include <sched.h>#include <sys/time.h>#include <sys/resource.h>//进程处理信号SIGTSTP的方法,将优先级减1void handler1(){setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,0)-1);}//进程处理信号SIGTNT的方法,将优先级加1void handler2(){setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,0)+1);}int main(int argc, char *argv[]){int pid; //存放进程号struct sched_param p; //设置调度策略时使用的数据结构//父进程循环报告其优先数和调度策略if((pid=fork()) >0){signal(SIGTSTP,handler1);//注册处理ctrl+z的信号量signal(SIGINT,handler2);//注册处理ctrl+c的信号量setpriority(PRIO_PROCESS,pid,10);// 设置子进程优先数setpriority(PRIO_PROCESS,getpid(),10);// 设置父进程优先数sleep(1);//不断循环输出各自进程号、优先数和调度策略while(1) {printf("Parent PID = %d priority = %d policy is %d\n",getpid(),getpriority(PRIO_PROCESS,0),sched_getscheduler(getp id()));sleep(3);}}//子进程循环报告其优先数和调度策略else{signal(SIGTSTP,handler1);//注册处理ctrl+z的信号量signal(SIGINT,handler2);//注册处理ctrl+c的信号量//不断循环输出各自进程号、优先数和调度策略while(1){printf("Child PID = %d priority = %d policy is %d\n",getpid(),getpriority(PRIO_PROCESS,0),sched_getscheduler(pid) );sleep(3);}exit( EXIT_SUCCESS);}return EXIT_SUCCESS;}(3)再建立程序的Makeflie文件:srcs = psched.cobjs = psched.oopts = -g -call: pschedpsched: $(objs)gcc $(objs) -o pschedpsched.o: $(srcs)gcc $(opts) $(srcs)clean:rm psched *.o(4)使用make命令编译连接生成可执行文件psched:$ gmakegcc -g -c psched.cg c c psched.o -o psched(5)改变到 root 用户$ su口令:123#(5)运行psched:# ./psched1.4实验体会(1)错误的尝试:由于自己对于C语言的了解不足,有思路但却无法实现代码。
OS课程设计实验报告
计算机与信息学院操作系统课程设计报告专业班级计算机科学与技术08-5班学生姓名及学号邹纯纯 20082681课程教学班号任课教师刘晓平、李琳、田卫东实验指导教师李琳实验地点逸夫楼5072010 ~ 2011 学年第二学期目录第一章课程设计任务、要求、目的 (3)第二章原理及算法描述 (3)第三章开发环境 (4)第四章重要算法和设计思路描述 (4)第五章程序实现---数据结构 (7)第六章程序实现---程序清单 (8)第七章总结 (24)第八章参考文献 (24)第一章课程设计任务、要求、目的1.1课程设计任务本次课程设计的任务是在windows环境下实现兼容Unix/Linux操作系统的命令接口,并实现一些指定的命令功能。
1.2课程设计要求和目的1、为Windows操作系统建立一个兼容Unix命令的命令接口;2、实现命令包括ls,cat,cp,mv,md,rd,cd,sort,more,print,命令的内容与详细格式请查阅unix命令手册;3、可以字符形式接收命令,执行命令,然后显示命令执行结果。
第二章原理及算法描述计算机的操作我们通常使用的是windows操作系统,在windows2000以上的版本中,我们只需在“搜索程序和文件”选项框中输入cmd命令进入windows 操作系统中就可以达到实现系统相关功能的目的。
同样在Unix和Linux操作平台中,也可以实现相关命令以完成操作系统的相关操作。
现在我们必须实现这样一种方法,即为windows操作系统建立一个兼容Unix 命令的命令接口。
在主程序中新建一个Windows_Unix.exe文件,然后调用相关实现相关Unix命令的函数实现命令功能。
具体命令的实现主要通过系统的API函数调用与之功能相同或相似的Dos 命令,这样就可以实现在Windows操作系统中虚拟地实现Unix命令。
第三章开发环境1、硬件环境:微型计算机。
2、软件环境:Windows 7 操作系统,语言环境为Visual C++ 6.0。
北航os实验报告
北航os实验报告北航OS实验报告一、引言操作系统(Operating System,简称OS)是计算机系统中最基础的软件之一,它负责管理和控制计算机硬件资源,为用户和应用程序提供一个可靠、高效的工作环境。
本文将对北航OS实验进行详细的报告和分析。
二、实验目的本次北航OS实验的目的是让学生深入理解和掌握操作系统的基本原理和实现方式。
通过实践,学生将学会设计和实现一个简单的操作系统,了解操作系统的核心功能和运行机制。
三、实验内容1. 系统引导实验开始时,我们需要编写引导程序,将操作系统加载到计算机的内存中,并跳转到操作系统的入口地址开始执行。
这一步骤是整个实验的起点,也是操作系统正常运行的基础。
2. 中断处理操作系统需要能够处理各种中断事件,如时钟中断、键盘中断等。
学生需要实现中断处理程序,使操作系统能够响应和处理这些中断事件,并根据具体情况进行相应的操作。
3. 进程管理操作系统需要能够管理多个进程的创建、调度和终止。
学生需要设计并实现进程管理模块,包括进程控制块(PCB)的数据结构和进程调度算法。
通过合理的调度策略,提高系统的并发性和响应速度。
4. 内存管理操作系统需要管理计算机的内存资源,包括内存的分配和释放。
学生需要设计并实现内存管理模块,使用合适的算法来管理内存的分配和回收,避免内存泄漏和碎片化问题。
5. 文件系统操作系统需要提供文件系统来管理计算机中的文件和数据。
学生需要设计并实现一个简单的文件系统,包括文件的创建、读写和删除等操作。
通过文件系统,用户可以方便地存储和管理自己的数据。
四、实验过程在实验过程中,我们遇到了许多挑战和问题,但通过不断的尝试和调试,我们最终成功实现了一个简单的操作系统。
以下是我们在实验过程中遇到的一些关键问题和解决方案:1. 内存管理在实验过程中,我们发现内存管理是一个非常关键的问题。
如果内存管理不当,容易导致内存泄漏或者内存碎片化,从而影响系统的性能和稳定性。
我们通过设计一个位图来管理内存的分配和释放,使用首次适应算法来分配内存,并通过合理地回收内存来避免内存泄漏问题。
OS实验报告2
实验2 Linux进程的软中断通信与管道通信学生姓名张锦涛学号20091602310002 专业班级2011级计本1班实验地点信息学院222 实验日期2011-04-26 指导教师张春元、卢春燕实验环境Ubuntu Linux + gcc 实验学时2学时1.实验目的(1)加深对进程概念的理解,明确进程和程序的区别;(2)进一步认识并发执行的实质;(3)分析进程争用资源的现象,学习解决进程互斥的方法;(4)了解Linux系统中进程通信的基本原理。
2.实验内容(1)编制一段程序并适当加以注释,实现软中断通信:在系统中调用signal()让父进程捕捉键盘上来的Del键中断信号实现父进程中断;使用系统调用fork()函数创建两个子进程,当父进程接受到这两个软中断的其中某一个后,父进程用系统调用kill()函数向两个子进程分别发送整数值为17和17软中断信号,子进程获得对应信号后,分别输出下列信息后终止:Child process 1 is killed by parent !Child process 2 is killed by parent !父进程调用wait()函数等待两个子进程终止后,输出以下信息后终止:Parent process is killed!!多运行几次编写的程序,简略分析出现不同结果的原因。
(2)编制一段程序并适当加以注释,实现进程的管道通信:使用系统调用pipe()建立一条管道线,两个子进程分别向管道各写一句话:Child process 1 is sending a message!Child process 2 is sending a message!而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。
要求:父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。
3.实验过程及分析(1)实验内容1源代码及运行分析:(2)实验内容2源代码及运行分析:4.实验总结(写出实验中的心得体会)。
os实验5报告
实验五文件管理
厦门大学软件学院
吴清强
一、实验目的
⏹掌握文件系统的工作机理。
⏹掌握各种文件管理算法的实现方法
⏹通过实验比较各种文件管理算法的优劣。
二、实验内容
给出一个磁盘块序列:1、2、3、……、500,初始状态所有块为空的,每块的大小为2k。
选择使用位表、链式空闲区、索引和空闲块列表四种算法之一来管理空闲块。
对于基于块的索引分配执行以下步骤:
⏹随机生成2k-10k的文件50个,文件名为1.txt、2.txt、……、50.txt,按
照上述算法存储到模拟磁盘中。
⏹删除奇数.txt(1.txt、3.txt、……、49.txt)文件
⏹新创建5个文件(A.txt、B.txt、C.txt、D.txt、E.txt),大小为:7k、5k、
2k、9k、3.5k,按照与(1)相同的算法存储到模拟磁盘中。
⏹给出文件A.txt、B.txt、C.txt、D.txt、E.txt的文件分配表和空闲区块的状态。
三、实验环境
⏹或 Windows xp + VC
四、实验中遇到的主要问题及其解决方式
Int型与char型转换问题,解决方法强制转换:’B’=1+’A’; 五、源代码
Oslab5.c
六、程序流程图
//deployFile(int blocknum,int fat)。
os实验
操作系统教程《实验报告》班级:姓名:学号:指导教师:实验一WINDOWS进程初识1、实验目的(1)学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。
(2)掌握WINDOWS API的使用方法。
(3)编写测试程序,理解用户态运行和核心态运行。
2、实验内容和步骤(1)编写基本的Win32 Consol Application步骤1:登录进入Windows,启动VC++ 6.0。
步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32 Consol Application”,然后在“Project name”处输入工程名,在“Location”处输入工程目录。
创建一个新的控制台应用程序工程。
步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”, 然后在“File”处输入C/C++源程序的文件名。
步骤4:将清单1-1所示的程序清单复制到新创建的C/C++源程序中。
编译成可执行文件。
步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows “命令提示符”窗口,然后进入工程目录中的debug子目录,执行编译好的可执行程序:E:\课程\os课\os实验\程序\os11\debug>hello.exe运行结果 (如果运行不成功,则可能的原因是什么?) :________ _______________________________________________________________________________(2)计算进程在核心态运行和用户态运行的时间步骤1:按照(1)中的步骤创建一个新的“Win32 Consol Application”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。
步骤2:在创建一个新的“Win32 Consol Application”工程,程序的参考程序如清单1-3所示,编译成可执行文件并执行。
OS综合实验报告1
综合实验报告( 2013 -- 2014 年度第 1 学期)名称:操作系统综合实验题目:基于OS Lab的操作系统综合实验院系:计算机系班级:学号:学生姓名:指导教师:王德文,王艳设计周数: 1成绩:日期:2013 年月日一、课程设计(综合实验)的目的与要求1.正文为宋体,五号字行间距为211.1------------1.2------------二、设计(实验)正文1.正文为宋体,五号字行间距为211.1------------1.2------------三、课程设计(综合实验)总结或结论1.正文为宋体,五号字行间距为211.1------------1.2------------四、参考文献[1] 作者1, 作者2 书名. 出版单位, 版本. 出版日期附录(设计流程图、程序、表格、数据等)一.实验环境的使用1.实验目的熟悉操作系统集成实验环境OS Lab的基本使用方法。
练习编译、调试EOS操作系统内核以及EOS应用程序。
2.实验内容:. 学习OS Lab的基本使用方法a.启动OSlabb.新建windows控制台程序项目,eos内核项目,eos应用程序项目;c.生成项目d.执行项目e.调试项目f.项目名称的修改及项目的保存.实验中代码的修改:1)在 func.c 文件中添加函数:int Func (int n) { n = n + 1; return n; }2)点击源代码编辑器上方的console.c标签,切换到console.c文件。
将 main 函数修改为:int main (int argc, char* argv[]){int Func (int n); // 声明Func函数int n = 0;n = Func(10);printf ("Hello World!\n");return 0;}问题答案:EOS SDk文件夹的目的和作用:主要供EOS应用程序使用。
OS实验一——精选推荐
OS实验⼀姓名、班级、学号、⽇期实验⼀Windows 2000进程的“⼀⽣”⼀、实验简介:该实验共有3个⼩实验,分别是:4.1 创建进程;4.2 正在运⾏的进程;4.3 终⽌进程。
⼆、实验⽬的:1.通过创建进程、观察正在运⾏的进程和终⽌进程的程序设计和调试操作,进⼀步熟悉操作系统的进程概念,理解Windows 2000进程的“⼀⽣”。
2.通过阅读和分析实验程序,学习创建进程、观察进程和终⽌进程的程序设计⽅法。
实验1.1:创建进程⼀、实验内容1) 调试实验3-5中的程序。
2) 观察并分析程序。
⼆、实验过程及结果步骤1:登录进⼊Windows 2000 Professional。
步骤2:在“开始”菜单中单击“程序”-“Microsoft Visual Studio 6.0”–“Microsoft Visual C++ 6.0”命令,进⼊Visual C++窗⼝。
步骤3:在⼯具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序3-5.cpp。
步骤4:单击“Build”菜单中的“Compile 3-5.cpp”命令编辑3-5.cpp步骤5:编译完成后,单击“Build”菜单中的“Build 3-5.exe”命令,建⽴3-5.exe可执⾏⽂件。
步骤6:在⼯具栏单击“Execute Program”(执⾏程序) 按钮,或者按Ctrl + F5键,或者单击“Build”菜单中的“Execute 3-5.exe”命令,执⾏3-5.exe程序。
步骤7:按Ctrl + S键可暂停程序的执⾏,按Ctrl + Pause (Break) 键可终⽌程序的执⾏。
实验说明:1)本实验显⽰了创建⼦进程的基本框架。
该程序只是再⼀次地启动⾃⾝,显⽰它的系统进程ID和它在进程列表中的位置。
2)清单3-5展⽰的是⼀个简单的使⽤CreateProcess() API函数的例⼦。
⾸先形成简单的命令⾏,提供当前的EXE⽂件的指定⽂件名和代表⽣成克隆进程的号码。
OS综合实验报告1
综合实验报告( 2013 -- 2014 年度第 1 学期)名称:操作系统综合实验题目:基于OS Lab的操作系统综合实验院系:计算机系班级:学号:学生姓名:指导教师:王德文,王艳设计周数: 1成绩:日期:2013 年月日一、课程设计(综合实验)的目的与要求1.正文为宋体,五号字行间距为211.1------------1.2------------二、设计(实验)正文1.正文为宋体,五号字行间距为211.1------------1.2------------三、课程设计(综合实验)总结或结论1.正文为宋体,五号字行间距为211.1------------1.2------------四、参考文献[1] 作者1, 作者2 书名. 出版单位, 版本. 出版日期附录(设计流程图、程序、表格、数据等)一.实验环境的使用1.实验目的熟悉操作系统集成实验环境OS Lab的基本使用方法。
练习编译、调试EOS操作系统内核以及EOS应用程序。
2.实验内容:. 学习OS Lab的基本使用方法a.启动OSlabb.新建windows控制台程序项目,eos内核项目,eos应用程序项目;c.生成项目d.执行项目e.调试项目f.项目名称的修改及项目的保存.实验中代码的修改:1)在 func.c 文件中添加函数:int Func (int n) { n = n + 1; return n; }2)点击源代码编辑器上方的console.c标签,切换到console.c文件。
将 main 函数修改为:int main (int argc, char* argv[]){int Func (int n); // 声明Func函数int n = 0;n = Func(10);printf ("Hello World!\n");return 0;}问题答案:EOS SDk文件夹的目的和作用:主要供EOS应用程序使用。
OS分析_实验一(实验前)
VMware的使用
操作系统安装注意事项
共享资源设置 网络设置
4
实验一:Linux操作系统漏洞扫描和分析 VM使用 ——共享资源设置
安装Vmware Tools工具;
CD-ROM共享方式;
共享文件夹方式; USB方式;
5
实验一:Linux操作系统漏洞扫描和分析 VM使用 ——共享资源设置 Linux下的安装方法(VM6.0)
(# rpm -ivh *.rpm) • #cd vmware-tools-distrib • #./vmware-install.pl (# ./vmware-config-tools.pl)
6
实验一:Linux操作系统漏洞扫描和分析 •使用UltraISO.exe软件将共享 VM使用 ——共享资源设置 • VM—>Setting
虚 拟 机 网 络 设 置
13
桥接网络—VMnet0 实验一:Linux操作系统漏洞扫描和分析 NAT网络—VMnet8 主机网络—VMnet1
虚 拟 机 网 络 设 置
14
实验一:Linux操作系统漏洞扫描和分析 VM使用 ——网络设置
15
实验一:Linux操作系统漏洞扫描和分析 VM使用 ——如何构建局域网—方法一
实验一:Linux操作系统漏洞扫描和分析 若虚拟机为Linux,建议手动配置 VM使用 ——如何构建局域网—方法一
记录宿主 机的DNS
20
IP范围:192.168.17.128~192.168.17.254;
实验一:Linux操作系统漏洞扫描和分析 网关:192.168.17.2; 宿主的DNS:202.106.0.20 VM使用 ——如何构建局域网—方法一
OS实验报告格式
OS实验报告格式实验目的:本次实验旨在了解操作系统的基本概念和原理,以及对操作系统的功能和特性进行深入了解。
实验原理:操作系统是计算机系统中的重要组成部分,它承担着管理硬件资源、提供用户接口、调度任务等关键任务。
操作系统的核心功能包括进程管理、内存管理、文件系统管理和设备管理等。
在本次实验中,我们将通过实践操作系统的基本命令和功能,来加深对操作系统的理解和掌握。
实验步骤:1.打开计算机,启动操作系统。
在实验开始之前,首先需要启动计算机并进入操作系统的界面。
2.运行命令行工具。
在操作系统中,通过命令行工具可以执行各种操作系统命令,如查看系统信息、管理文件、运行程序等。
3. 创建文件和目录。
在命令行工具中,可以使用相应的命令来创建文件和目录,如mkdir命令用于创建目录,touch命令用于创建文件。
4.编写简单程序并运行。
在操作系统中,可以使用编程语言编写程序,然后通过编译运行的方式来执行程序。
5.查看系统信息。
通过系统命令可以查看操作系统的信息,如操作系统版本、内核版本、CPU信息等。
6.进程管理。
在操作系统中,可以通过相应的命令来管理进程,如查看当前运行的进程、杀死指定进程等。
7.内存管理。
操作系统通过内存管理来管理系统的内存资源,如分配和释放内存空间等操作。
8.文件系统管理。
在操作系统中,可以通过文件系统管理命令对文件进行管理,如查看文件列表、复制文件、删除文件等。
9.设备管理。
操作系统通过设备管理来管理计算机的硬件设备,如打印机、网络设备等。
实验结果:通过本次实验,我对操作系统的基本概念和功能有了更深入的了解。
我学会了如何使用命令行工具来管理文件和目录,如何编写程序并运行,如何查看系统信息,如何管理进程和内存,如何管理文件系统和设备等。
这些都是操作系统中非常重要的功能,对于理解和掌握操作系统至关重要。
实验总结:通过本次实验,我认识到了操作系统是计算机系统中的核心组件,它负责管理系统的各种资源并提供用户接口。
OS 操作系统 实验1
实验步骤
1. 选择进入windows 2000.单击桌面上的 Linux80图标,打开VMWare虚拟软件
实验步骤
2. 单击"start the machine",启动Linux虚拟 系统
实验步骤
3. 以超级用户的身份登录进入操作系统
– 输入用户名:root(回车) – 输入密码:123456(回车)
2.chgrp Βιβλιοθήκη 令– 改变文件的用户组所有权属性. – 格式:chgrp 新组名 文件名
3.chmod 命令
– 改变文件有关的存取方式. – 格式:chmod 值 文件名
4.chown 命令
– 改变文件主. – 格式:chown 新用户 文件名
5.cp 命令
– – 拷贝一个文件. 格式:cp 文件1 文件2
2. 掌握C语言的编辑,编译, 运行的过程
(1) 在#提示符下,键入vi first.c,进 入文本编辑器,键入a进入插入方式 (左下角有提示),开始编写first.c文 件
(2) 编写完毕,按"ESC"键(键盘左上 角),再键入":wq"键保存后退出
(3) 在#提示符下,使用命令 "gcc – o first first.c"对文件进行编译
(4) 编译成功,当前目录下多了一个first 文件
(5) 使用命令"./first"运行first文件,察 看结果.(./表示当前目录下)
3.掌握进程创建系统调用的使用
#include <stdio.h> main() { int j,p1,p2;
p1=fork(); /* 创建一个进程 */
15.vi命令
os报告1
操作系统第三次哲学家与菜单实验报告
编程完成ncurses菜单
1.要求编程实现哲学家进餐模型
二. 实验结果
Menu
图1.Menu
补充:根据位置坐标控制相应程序的执行,在已有的源程序上进行改动,主要是可执行文件路径,结束后自动返回等,尤为注意的是fifo,先fifo放在线程中执行,然后新建终端执行fifo1.
哲学家进餐
图2.哲学家进餐
补充:模仿生产者消费者程序的流程进行编写,试验中尤为注意死锁的情况。
三.实验总结
通过这两次实验对linux编程仅仅熟悉,收获较大的是哲学家问题,通过此次编程,更深刻的了解了线程的工作原理,会使用部分pthread函数,实验中为了体现筷子的竞争,在eat时采取了随机数延时,让每个哲学家吃面条的时间不同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称:操作系统B实验项目:操作系统实验实验地点:实验室209专业班级:软件1307学生姓名:杨二冬学号:2013006071指导教师:方昀2015 年11 月实验一几种操作系统的界面一、目的和要求(一)目的本实验的目的是使学生熟悉1—2种操作系统的界面,在熟练使用机器的基础上,能了解各种操作命令和系统调用在系统中的大致工作过程。
也就是通过操作系统的外部特征,逐步深入到操作系统的内部实质内容中去。
(二)要求1.能熟练的在1—2种操作系统的环境下工作,学会使用各种命令,熟悉系统提供的各种功能,主动而有效地使用计算机。
2.熟悉系统实用程序的调用方法和各种系统调用模块的功能和作用二、内容在某种操作系统的环境下建立、修改、运行、打印源程序和结果,最后撤消一个完整的程序。
提示:可按下述步骤进行1.编写一个完整的源程序,通过编辑命令送入机器,建立源程序文件;2.编译该源文件,建立相应的目标文件;3.编译有错时,再用编辑命令修改源文件,消除全部词法和语法错误;4.连接目标文件,形成可执行文件;5.执行该文件,得到结果;6.打印输出源程序和运行结果;7.撤消本次实验中形成的所有文件。
三.程序代码#include<stdio.h>void main(){int a;scanf("%d",&a);printf("怎样编程序:%d\n",a);}四.运行结果编译:运行:五.讨论、心得在本次试验过程中,遇到了一些问题,比如最开始安装gcc,试了好几个解压命令才解压成功,后来又因为对Linux系统的不熟悉出现了很多问题,最终通过各种方式一一解决。
实验做完后,感觉学到了很多,虽然程序很简单,但是因为对系统的不熟悉才导致了这些麻烦,以后应该多多习惯各种不同的操作系统,为将来踏入IT行业做好准备。
实验二进程调度程序设计一、目的和要求(一)目的进程是操作系统最重要的概念之一,进程调度是操作系统的主要内容,本实验要求学生独立地用高级语言编写一个进程调度程序,调度算法可任意选择或自行设计,本实验可使学生加深对进程调度和各种调度算法的理解。
(二)要求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,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。
2.程序清单#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;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);}print() /*PRINT THE RUNNING PROCESS,WAITINGQUEUE 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”);}insert(int q) /*INSERT A PROCESS*/{ int p,s;p=head;s=prochain[head].nextwhile((prochain[q].priority<prochain[s].priority)&&(s!=0)) { p=s;s=prochain[s].next;}prochain[p].next=q;prochain[q].next=s;}insert2() /*PUT A PROCESS ONTO THE TAIL OF THE QUEUE*/{ prochain[tail].next=run;tail=run;prochain[run].next=0;}init() /*CREATE A WAITING QUEUE*/{ int i;head=0;if (alog==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();}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();}}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();}}运行结果:优先数法:简单轮转法:小结:每一种算法对于实验都有着不通的的效果,而通过这次试验,我更加熟悉了时间片轮转算法和优先级调度算法。