华北电力大学操作系统实验报告
操作系统实验实验报告
操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。
本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。
二、实验环境本次实验使用的操作系统为 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。
三、实验内容及步骤(一)进程创建实验1、首先,创建一个新的 C++项目。
2、在项目中,使用 Windows API 函数`CreateProcess`来创建一个新的进程。
3、为新进程指定可执行文件的路径、命令行参数、进程属性等。
4、编写代码来等待新进程的结束,并获取其退出代码。
(二)进程同步实验1、设计一个生产者消费者问题的模型。
2、使用信号量来实现生产者和消费者进程之间的同步。
3、生产者进程不断生成数据并放入共享缓冲区,当缓冲区已满时等待。
4、消费者进程从共享缓冲区中取出数据进行处理,当缓冲区为空时等待。
(三)进程通信实验1、选择使用管道来实现进程之间的通信。
2、创建一个匿名管道,父进程和子进程分别读写管道的两端。
3、父进程向管道写入数据,子进程从管道读取数据并进行处理。
四、实验结果及分析(一)进程创建实验结果成功创建了新的进程,并能够获取到其退出代码。
通过观察进程的创建和执行过程,加深了对进程概念的理解。
(二)进程同步实验结果通过使用信号量,生产者和消费者进程能够正确地进行同步,避免了缓冲区的溢出和数据的丢失。
分析结果表明,信号量机制有效地解决了进程之间的资源竞争和协调问题。
(三)进程通信实验结果通过管道实现了父进程和子进程之间的数据通信。
数据能够准确地在进程之间传递,验证了管道通信的有效性。
五、遇到的问题及解决方法(一)在进程创建实验中,遇到了参数设置不正确导致进程创建失败的问题。
通过仔细查阅文档和调试,最终正确设置了参数,成功创建了进程。
(二)在进程同步实验中,出现了信号量使用不当导致死锁的情况。
电大操作系统实验报告3_ 进程管理实验
电大操作系统实验报告3_ 进程管理实验电大操作系统实验报告 3 进程管理实验一、实验目的进程管理是操作系统的核心功能之一,本次实验的目的是通过实际操作和观察,深入理解进程的概念、状态转换、进程调度以及进程间的通信机制,掌握操作系统中进程管理的基本原理和方法,提高对操作系统的整体认识和实践能力。
二、实验环境本次实验使用的操作系统为 Windows 10,编程语言为 C 语言,开发工具为 Visual Studio 2019。
三、实验内容及步骤(一)进程的创建与终止1、编写一个 C 程序,使用系统调用创建一个子进程。
2、在父进程和子进程中分别输出各自的进程 ID 和父进程 ID。
3、子进程执行一段简单的计算任务,父进程等待子进程结束后输出结束信息。
以下是实现上述功能的 C 程序代码:```cinclude <stdioh>include <stdlibh>include <unistdh>int main(){pid_t pid;pid = fork();if (pid < 0) {printf("创建子进程失败\n");return 1;} else if (pid == 0) {printf("子进程:我的进程 ID 是%d,父进程 ID 是%d\n",getpid(), getppid());int result = 2 + 3;printf("子进程计算结果:2 + 3 =%d\n", result);exit(0);} else {printf("父进程:我的进程 ID 是%d,子进程 ID 是%d\n",getpid(), pid);wait(NULL);printf("子进程已结束\n");}return 0;}```编译并运行上述程序,可以观察到父进程和子进程的输出信息,验证了进程的创建和终止过程。
(二)进程的状态转换1、编写一个 C 程序,创建一个子进程,子进程进入睡眠状态一段时间,然后被唤醒并输出状态转换信息。
华北电力大学操作系统实验报告(含思考题答案)
华北电⼒⼤学操作系统实验报告(含思考题答案)操作系统综合实验( 20 -- 20 年度第学期)名称:题⽬:院系:班级:学号:学⽣姓名:指导教师:成绩:⽇期:年⽉实验⼀:实验环境的使⽤⼀、实验⽬的:1、熟悉操作系统集成实验环境OS Lab的基本使⽤⽅法。
2、练习编译、调试EOS操作系统内核以及EOS应⽤程序。
⼆、实验内容:1、启动OS Lab2、学习OS Lab的基本使⽤⽅法3、EOS内核项⽬的⽣成和调试4、EOS应⽤程序项⽬的⽣成和调试5、退出OS Lab6、保存EOS内核项⽬三、实验过程:本实验实验过程主要按照eos操作系统实验教程上所对应的章节来进⾏。
实验结果:(⼀)启动OS Lab :(⽆)(⼆)学习OS Lab的基本使⽤⽅法:(1)、创建了第⼀个项⽬:(2)、⽣成了第⼀个项⽬(3)、添加了func⽂件后经过⼀系列的调试,打印出了相关内容,按shift+F5结束调试。
(4)、查看变量的值:有3种⽅法:1、将⿏标移动到源代码编辑器中变量n的名称上,此时会弹出⼀个窗⼝显⽰出变量n当前的值(由于此时还没有给变量n赋值,所以是⼀个随机值)。
2、在源代码编辑器中变量n的名称上点击⿏标右键,在弹出的快捷菜单中选择“快速监视”,可以使⽤“快速监视”对话框查看变量n的值。
然后,可以点击“关闭”按钮关闭“快速监视”对话框。
3、在源代码编辑器中变量n的名称上点击⿏标右键,在弹出的快捷菜单中选择“添加监视”,变量n就被添加到了“监视”窗⼝中。
使⽤“监视”窗⼝可以随时查看变量的值和类型。
此时按F10进⾏⼀次单步调试,可以看到“监视”窗⼝中变量n的值会变为0(1)、调⽤堆栈:使⽤“调⽤堆栈”窗⼝可以在调试的过程中查看当前堆栈上的函数,还可以帮助理解函数的调⽤层次和调⽤过程。
EOS内核项⽬的⽣成和调试:(2)、新建EOS内核项⽬(3)、⽣成项⽬(4)、调试项⽬(5)、查看软盘镜像⽂件中的内容(6)、查看EOS SDK(Software Development Kit)⽂件夹EOS应⽤程序项⽬的⽣成和调试新建EOS应⽤程序项⽬⽣成项⽬:按F7⽣成项⽬调试项⽬:按F5进⾏各种调试查看软盘镜像⽂件中的内容:使⽤FloppyImageEditor⼯具打开该项⽬中的Floppy.img⽂件,查看软盘镜像中的⽂件。
操作系统实验报告
操作系统实验报告1. 实验目的本次实验的目的是通过设计一个简单的操作系统,深入理解操作系统的基本原理、结构和功能,并通过实践掌握操作系统的核心概念和实现方式。
2. 实验环境本次实验使用的实验环境如下:- 操作系统:Linux Ubuntu 18.04- 开发语言:C/C++- 开发工具:GCC编译器,GNU Make3. 实验内容及步骤本次实验包括以下几个主要内容和步骤:3.1 系统引导- 在操作系统启动时,首先执行系统引导程序,加载操作系统内核到内存中。
- 系统引导程序负责初始化硬件设备,建立起基本的运行环境,然后将控制权转交给操作系统内核。
3.2 内核初始化- 内核初始化过程包括初始化各种数据结构,建立进程控制块(PCB),初始化设备驱动程序等。
- 内核初始化完成后,操作系统进入空闲状态,等待用户的操作请求。
3.3 进程管理- 操作系统需要支持进程管理功能,包括进程的创建、销毁、调度和切换等。
- 进程管理模块负责分配和回收进程资源,根据调度算法决定进程的执行顺序,实现进程的并发执行。
3.4 内存管理- 操作系统需要支持内存管理功能,包括内存的分配和释放、内存的保护和共享等。
- 内存管理模块负责维护内存的使用情况,并根据进程的需求进行内存的分配和回收。
3.5 文件系统- 操作系统需要支持文件系统,提供对文件的创建、打开、读写和关闭等操作。
- 文件系统模块负责管理文件和目录的结构,以及实现对文件的存储和访问策略。
4. 实验结果与分析我们根据上述步骤,设计并实现了一个简单的操作系统。
通过测试和分析,得出以下实验结果和结论:4.1 系统启动与内核初始化- 当系统启动时,我们能够成功加载操作系统的内核,并初始化各种硬件设备。
- 内核初始化过程能够正确建立进程控制块(PCB),并初始化各个设备驱动程序。
4.2 进程管理- 我们能够成功创建和销毁进程,并按照设定的调度算法进行进程的切换。
- 进程间能够实现正确的互斥和同步操作,避免资源竞争和死锁等问题。
华北电力大学操作系统实验报告
华北电力大学
实验报告
|
|
实验名称操作系统综合实验
课程名称操作系统
|
|
专业班级:网络学生姓名:
学号:成绩:
指导教师:王德文/姜丽梅实验日期:2015年11月4日
2. 当loop线程在控制台1中执行,并且在控制台2中执行suspend命令时,为什么控制台1中的loop线程处于就绪状态而不是运行状态?
答:当在控制台2 中执行suspend命令时,实质上是优先级为24的控制台2线程抢占了处理器,也就是控制台2线程处于运行状态,所以此时loop线程处于就绪状态了。
图 1 调试EOS信号量的工作过程。
华北电力大学实验报告
第页共页。
《操作系统》课程实验报告
《操作系统》课程实验报告一、实验目的本次《操作系统》课程实验的主要目的是通过实际操作和观察,深入理解操作系统的工作原理、进程管理、内存管理、文件系统等核心概念,并掌握相关的操作技能和分析方法。
二、实验环境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)观察并分析在不同的并发情况下,系统的运行结果和资源竞争情况。
电力系统仿真实习报告模板(华北电力大学)
实验一 电力系统有功功率分布及分析二、实验原理图1所示为一条线路的等值电路图。
假设ij P 和ij Q 为线路ij 的有功及无功潮流,两端节点电压分别为i U 和j U ,其它参数如图所示。
则有假设1==j i U U , sin ij ij θθ=, cos 1=ij θ,0=ij r上式可以简化为式中ij x 是线路电抗。
三、实验步骤及数据记录 ① ②母线名Bus1Bus2Bus3BusaBusbBuscU(幅值) 238.85 239.75 242.21 231.29 235.02 237.22 δ(相角)2.72.14-2.73-2.030.3发电机有功P母线名Bus1Bus2Bus3BusaBusbBusc108.60 U 238.25 238.11 240.1 230.27 233.85 235.30 δ-0.102.521.86-2.89-2.220.04发电机有功P 母线名Bus1Bus2Bus3BusaBusbBusc111.75 U 237.64 236.46 237.98 229.23 232.66 233.38 δ-0.202.341.58-3.06-2.42-0.21发电机有功P 母线名Bus1Bus2Bus3BusaBusbBusc()ij ij ij ij j i ij i ij b g V V g V P θθsin cos 2+-=ijj i j i ij ij x b p /)()(`θθθθ-=--=图1 线路等值电路图 图1 线路等值电路图③第②步实验完成后,重新点击“量测分析”、“状态估计”、“调度员潮流”重新返回基态潮流,或者点击“调度员潮流”窗口上菜单栏“调度操作”项,选择“清除操作”项,系统便返回初始基态潮流。
选择母线C上的负荷进行操作,在窗口中选中负荷,按右键,在弹出的菜单中选择“负荷功率调节”,在出现的对话窗中调节负荷有功功率P。
依次调节功率,每次递增10MW,共操作十次,记录下每次操作后负荷有功功率P的值、各节点电压的幅值和电压相角值。
操作系统实验报告(三)
操作系统实验报告(三)XXXX大学实验报告实验名称实验三银行家算法课程名称操作系统专业班级:学生姓名:学号:成绩:指导教师:实验日期: | || |华北电力大学实验报告一、实验目的及要求 1、实验目的熟悉银行家算法,理解系统产生死锁的原因及避免死锁的方法,加深记意。
2、实验要求用高级语言编写和调试一个描述银行家算法的程序。
设计五个进程{P0,P1,P2,P3,P4}共享三类资源{A,B,C}的系统,{A,B,C}的资源数量分别为10,5,7。
进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。
要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源号以及为某进程分配资源后的有关资源数据。
二、所用仪器、设备 PC机三、实验原理利用银行家算法避免死锁1、银行家算法中的数据结构可利用资源向量Available 最大需求规阵Max 分配矩阵Allocation 需求矩阵Need 2、银行家算法如果Requesti<或=Need,则转向步骤2;否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。
如果Request<或=Available,则转向步骤;否则,表示系统中尚无足够的资源,P1必须等待。
系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值:Available:=Available-Requesti; Allocation:=Allocationi+Request;Needi:=Needi-request; (4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。
3、安全性算法系统所执行的安全性算法可描述如下:设置两个向量①工作向量Work。
它表示系统可提供进程继续运行所需要的各类资源数目,它含有m个元素,执行安全算法开始时,Work:=Allocation; ②Finish。
它表示系统是否有足够的资源分配给进程,使之运行完成,开始时先做Finish[i]:=false;当有足够资源分配给进程时,令Finish[i]:=true。
操作系统B实验报告(华北电力大学科技学院)
h->next->priority--;
}
void show(PCB *h)
{
PCB *p=h->next;
while(p!=NULL)
{
cout<<"
p"<<p->id <<"
"<<p->runtime <<"
"<<p->priority <<"
"<<p->status <<endl;
cout<<"---------------------------------------------------------------------- "<<endl;
课程设计报告
( 2012-- 2013 年度第 1 学期)
名 称: 操作系统原理课程设计 B
院 系: 科技学院信息工程系
班 级:
学 号:
学生姓名:
指导教师:
设计周数:
4
成 绩:
日期: 年 月 日
《操作系统原理课程设计 B》课程设计
任务书
一、 目的与要求
1. 理解和掌握操作系统的基本概念、基本组成与工作原理; 2. 理解和掌握操作系统中主要功能模块的工作原理及其实现算法; 3. 掌握软件模块设计技能;熟悉并能较好地利用软件开发环境独立编程、调试和分 析程序运行情况,逐渐形成创新思维和从事系统软件的研究和开发能力。
q=q->next; } p->next=q->next; q->next=p; } } void sort(PCB *h) { if(h->next->runtime==0) { h->next->status='E'; h->next=h->next->next; return; } PCB *p=h->next; h->next=p->next; PCB *q=h->next; if((q==NULL)||(p->priority>q->priority)) { p->next=h->next; h->next=p; return;
华北电力大学操作系统实验报告..
综合实验报告( 2013-- 2014年度第一学期)名称:计算机操作系统题目:计算机操作系统实验院系:计算机系班级:网络学号:学生姓名:指导教师:***设计周数:2周成绩:日期:2013 年11 月实验1 实验环境的使用一、实验目的1、熟悉操作系统集成实验环境OS Lab的基本使用方法。
2、练习编译、调试EOS操作系统内核以及EOS应用程序。
二、预备知识阅读本书第1章,对EOS操作系统和OS Lab集成实验环境有一个初步的了解。
重点学习第1.3节,掌握EOS操作系统内核和EOS应用程序的源代码是如何生成可执行文件的,以及OS Lab是如何将这些可执行文件写入软盘镜像文件并开始执行的。
三、实验内容1、启动OS Lab1. 在安装有OS Lab的计算机上,可以使用两种不同的方法来启动OS Lab:在桌面上双击“Tevation OS Lab”图标。
或者点击“开始”菜单,在“程序”中的“Tevation OS Lab”中选择“Tevation OS Lab”。
2. OS Lab每次启动后都会首先弹出一个用于注册用户信息的对话框(可以选择对话框标题栏上的“帮助”按钮获得关于此对话框的帮助信息)。
在此对话框中填入学号和姓名后,点击“确定”按钮完成本次注册。
3. 观察OS Lab主窗口的布局。
OS Lab主要由下面的若干元素组成:菜单栏、工具栏以及停靠在左侧和底部的各种工具窗口,余下的区域用来放置编辑器窗口。
2、学习OS Lab的基本使用方法2.1 新建Windows控制台应用程序项目新建一个Windows控制台应用程序项目的步骤如下:1. 在“文件”菜单中选择“新建”,然后单击“项目”。
2. 在“新建项目”对话框中,选择项目模板“控制台应用程序 (c)”。
3. 在“名称”中输入新项目使用的文件夹名称“oslab”。
4. 在“位置”中输入新项目保存在磁盘上的位置“C:\test”。
5. 点击“确定”按钮。
2.2 生成项目使用“生成项目”功能可以将程序的源代码文件编译为可执行的二进制文件,方法十分简单:在“生成”菜单中选择“生成项目”。
电大 操作系统实验报告2
中央广播电视大学计算机科学与技术专业操作系统(本科)实验报告院系:____计算机科学与技术____班级:___10春计(本)________学生姓名:_____ _____________学号:___________指导教师:______陈访荣____________完成日期 2011 年 12月 01日相同。
(4)在命令、选项和参数之间要用空格隔开。
连续的空格会被shell解释为单个空格。
(5)命令行的参数提供命令运行的信息或者命令执行过程中所使用的文件名。
通常,参数是一些文件名,告诉命令从哪里可以得到输入,以及把输出送到什么地方。
(6)如果命令行中没有提供参数,命令将从标准输入文件(即键盘)上接收数据,输出结果显示在标准输出文件(即显示器)上,而错误信息则显示在标准错误输出文件(即显示器)上。
可使用重定向功能对这些文件进行重定向。
(7)命令在正常执行后返回一个0值,表示执行成功;如果命令执行过程中出错,没有完成全部工作,则返回一个非零值(在shell中可用变量$?查看)。
在shell 脚本中可用此返回值作为控制逻辑流程的一部分。
序号命令序号命令1 cat:显示文件内容 6 ls:列出目录信息2 cd:改变目录路径7 more:分页显示文件内容3 cp:复制文件8 rm:删除文件或目录4 cp:复制文件9 vi:vi屏幕编辑程序5 grep:搜索、过滤信息10 who:显示登录用户信息3 vi基本操作vi是Linux最基本的文本编辑工具,功能强大并且非常高效。
(1).进入vi格式1:$ vi 文件名,创建新文件或编辑旧文件。
格式2:$ vi 创建新文件,在保存时再指定文件名。
通过输入vi的命令i、a、o等可以从命令方式进入输入方式。
在输入方式下,从键盘上输入的所有字符都被插入到正在编辑的缓冲区中,被当做该文件的正文。
进入输入方式后,输入的可见字符都在屏幕上显示出来,而编辑命令不再起作用,仅作为普通字符出现。
操作系统实验报告三
操作系统实验报告三一、实验目的本次操作系统实验的目的在于深入了解操作系统的进程管理、内存管理和文件系统等核心功能,通过实际操作和观察,增强对操作系统原理的理解和掌握,提高解决实际问题的能力。
二、实验环境本次实验在 Windows 10 操作系统环境下进行,使用了 Visual Studio 2019 作为编程工具,并借助了相关的操作系统模拟软件和调试工具。
三、实验内容与步骤(一)进程管理实验1、创建多个进程使用 C++语言编写程序,通过调用系统函数创建多个进程。
观察每个进程的运行状态和资源占用情况。
2、进程同步与互斥设计一个生产者消费者问题的程序,使用信号量来实现进程之间的同步与互斥。
分析在不同并发情况下程序的执行结果,理解进程同步的重要性。
(二)内存管理实验1、内存分配与回收实现一个简单的内存分配算法,如首次适应算法、最佳适应算法或最坏适应算法。
模拟内存的分配和回收过程,观察内存的使用情况和碎片产生的情况。
2、虚拟内存管理了解 Windows 操作系统的虚拟内存机制,通过查看系统性能监视器观察虚拟内存的使用情况。
编写程序来模拟虚拟内存的页面置换算法,如先进先出(FIFO)算法、最近最少使用(LRU)算法等。
(三)文件系统实验1、文件操作使用 C++语言对文件进行创建、读写、删除等操作。
观察文件在磁盘上的存储方式和文件目录的结构。
2、文件系统性能测试对不同大小和类型的文件进行读写操作,测量文件系统的读写性能。
分析影响文件系统性能的因素,如磁盘碎片、缓存机制等。
四、实验结果与分析(一)进程管理实验结果1、创建多个进程在创建多个进程的实验中,通过任务管理器可以观察到每个进程都有独立的进程 ID、CPU 使用率、内存占用等信息。
多个进程可以并发执行,提高了系统的资源利用率。
2、进程同步与互斥在生产者消费者问题的实验中,当使用正确的信号量机制时,生产者和消费者能够协调工作,不会出现数据不一致或死锁的情况。
操作系统实验
操作系统实验报告(一)Linux基本操作与编程(验证性 2学时)1、实验目(de):1)熟悉Linux操作系统(de)环境和使用.2)了解LINUX系统(de)安装过程.(注:表示可选择)3)掌握Linux环境下(de)命令操作.2、实验内容:(1)完成LINUX系统(de)登录,启动终端.进行下列操作并记录结果(要求:结果以屏幕截图表示).1)运行pwd命令,确定你当前(de)工作目录.2)利用以下命令显示当前工作目录(de)内容: ls –l3)运行以下命令: ls –al4)使用mkdir命令建立一个子目录subdir.5)使用cd命令,将工作目录改到根目录(/)上.6)使用ls-l命令列出/dev(de)内容.7)使用不带参数(de)命令cd改变目录,然后用pwd命令确定你当前(de)工作目录是哪里8)使用命令cd ../..,你将工作目录移到什么地方(2)在LINUX下查看你(de)文件.1)利用cd命令,将工作目录改到你(de)主目录上.2)将工作目录改到你(de)子目录subdir,然后运行命令: date > file1 将当前日期和时间存放到新建文件file1中.3)使用cat命令查看file1文件(de)内容.4)利用man命令显示date命令(de)用法: man date5)将date命令(de)用法附加到文件file1(de)后面:man date >> file16)利用cat命令显示文件file1(de)内容.7)利用ls -l file1命令列出文件file1(de)较详细(de)信息.运行ls -l/bin 命令显示目录(de)内容.8)利用ls -l/bin|more命令行分屏显示/bin目录(de)内容.9)利用cp file1 fa命令生成文件file1(de)副本.然后利用ls -l命令查看工作目录(de)内容.10)用cd命令返回你(de)主目录,输入命令ls –l后,解释屏幕显示(de)第一列内容(de)含义.(3)编写能输出“Hello world”问候语(de)C程序,并在终端中编译、执行.要求记录所使用(de)命令及结果.操作步骤:1)在文本编辑器中,编写C程序如下:include ""main(){ printf("hello"); }2) 在终端中,用gcc命令进行编译,生成可执行文件a.gcc –o a3) 在终端中执行a (de)命令如下:./a(4)编写一个程序:显示信息“Time for Play”,并能在后台运行一段时间(自定义)后,弹出信息提醒用户.要求记录所使用(de)命令及结果.(提示:使用sleep(s)函数)3、实验结果分析:(对上述实验内容中(de)各题结果,进行分析讨论.并回答下列问题)(1)进程包括哪些特征间断性, 失去封闭性, 不可再现性, 动态性, 并发性, 独立性(2)在Linux中,如何设置前、后台命令和程序(de)执行命令后直接加 & ,这个命令就在后台执行;正在运行(de)命令,使用Ctrl+z ,就挂起; jobs命令,可以现实后台,包括挂起(de)命令;使用 bg %作业号就可以把挂起(de)命令在后台执行;使用 fg %作业号就可以把后台命令调到前台(3)你所使用(de)Linux系统(de)内核版本是多少用什么命令查看内核版本目前你所了解(de)各发行版本(de)情况如何Linux version (gcc version (Red Hat (GCC) ) 1 SMP Tue Jan 2911:48:01 EST 2013(4)你对Linux系统有什么认识linux是一款开放性(de)操作系统,也可以说成是开放(de)源代码系统,这些代码可以完全自由(de)修改可以再任何(de)计算机上去运行它,也就是“可移植性”,其次大家都知道,linux是由UNIX(de)概念所开发出来(de),所以它也继承了UNIX(de)稳定和效率(de)特点4、总结:你对本次实验有什么体会或看法.操作系统实验报告(二)文件访问权限设置与输入输出重定向(2学时)一、实验目(de)1、掌握linux(de)文件访问权限设置.2、熟悉输入输出重定向和管道操作.二、实验内容1、启动进入红帽linux系统2、设置文件权限:在用户主目录下创建目录test,进入test目录,用vi 创建文件file1,并输入任意(de)文字内容.用ls -l显示文件信息,注意文件(de)权限和所属用户和组.对文件file1设置权限,使其他用户可以对此文件进行写操作:chmod o+w file1.用ls -l查看设置结果.取消同组用户对此文件(de)读取权限:chmod g-r file1.查看设置结果.用数字形式来为文件file1设置权限,所有者可读、可写、可执行;其他用户和所属组用户只有读和执行(de)权限:chmod 755 file1.设置完成后查看设置结果.3、输入、输出重定向和管道(1) 输出重定向用ls命令显示当前目录中(de)文件列表:ls –l.使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中:ls –l > list.查看文件list中(de)内容,注意在列表中会多出一个文件list,其长度为0. 这说明shell是首先创建了一个空文件,然后再运行ls命令:cat list.再次使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中.这次使用追加符号>>进行重定向:ls –l >> list.查看文件list(de)内容,可以看到用>>进行重定向是把新(de)输出内容附加在文件(de)末尾,注意其中两行list文件(de)信息中文件大小(de)区别:cat list.重复命令ls –l > list.再次查看文件list中(de)内容,和前两次(de)结果相比较,注意list文件大小和创建时间(de)区别.(2) 管道who |grep root命令(de)结果是命令ls –l |wc –l结果是4、退出linux系统操作步骤:在主菜单上选择“注销” ->关闭计算机.三、实验结果与讨论(根据实验结果回答下列问题)1. 文件(de)权限如下:-rw-r—r-- 1 root root 19274 Jul 14 11:00回答:-rw-r—r-- (de)含义是什么答:是LINUX/FTP(de)简易权限表示法:对应于本用户-所在组-其他人(de)权限,每一个用执行(x)-读取(r)-写入(w)如本题若是说自己可以读取写入不可以执行,所在组和其他人只能读取.2、文件(de)所有者添加执行权限(de)命令是答:chmod u+x 、赋予所有用户读和写文件权限(de)命令是四、答:chmod a+w,a+r 个人体会(你对本次实验有什么体会或看法)操作系统实验报告(三)文件和目录管理一、实验目(de)1) 掌握在Linux系统下(de)文件和文件系统(de)概念及命令;2) 掌握Linux系统下(de)目录操作.二、实验内容1. 进入linux终端后,用命令(de)操作结果回答下列问题:1)vi(de)三种工作模式是其中不能进行直接转换(de)是什么模式到什么模式命令模式、文本输入模式、末行模式命令模式不能直接到末行模式2)在vi中退出时,保存并退出(de)操作步骤是Ese:wq3)用vi 创建myfile1文件,并在其中输入任意文字一行,创建myfile2文件,任意输入文字3行.请问执行命令:cat <myfile1 >myfile2 后,myfile2中还有几行内容该命令(de)作用是用命令操作验证你(de)回答.myfile2中还有1行内容该命令(de)作用是替换myfile(de)内容4)请用至少两种不同(de)命令创建一个文本文件(),在其中写入“我是2014级学生,我正在使用Linux系统.”,记录命令及执行结果.1、Vi创建2、5)用___pwd________命令可查看所创建文件(de)绝对路径,写出它(de)绝对路径__/root_________;用___ls -l________命令查看该文件(de)类型及访问权限,其访问权限(数字和字母)分别是多少__-rw- r- - r- - 6 4 4______________.6)若将该文件(de)访问权限修改为:所有者有读写权限;其他用户只读;同组用户可读写,请写出命令,并记录结果.7)查找my开头(de)所有文件,可___find my_________命令,写出命令并记录结果8)在/home下创建子目录user,并在其中创建2个文件,名为file1和file2,file1(de)内容是/root目录(de)详细信息;file2(de)内容任意,最后将这两个文件合并为file3文件,请先写出命令序列,并在终端中验证,记录结果.2. 文件及目录操作,写出操作所使用(de)命令,并记录结果.在终端中完成下列命令操作,并记录结果在root用户主目录下创建一个mydir子目录和一个myfile文件,再在mydir下建立d1和d2两个子目录.查看mydir和myfile(de)默认权限查看当前myfile和mydir(de)权限值是多少将myfile文件分别复制到root 和dd1(de)主目录中将root主目录中(de)myfile改为yourfile通过从键盘产生一个新文件并输入I am a student查找文件是否包含student字符串三、实验结果与分析,回答下列问题:1、能够创建文件(de)命令有哪些vi 和cat>name2、能够查看当前目录(de)绝对路径(de)命令是pwd3、Linux中按用户属性将用户分成哪些类型根据文件(de)访问权限,用户又被分成哪些类型能够查看文件访问权限(de)命令是用户同组其他可读可写可执行 cat f1四、小结(本次实验(de)体会或小结)操作系统实验报告(四)作业调度算法模拟(验证性2学时)1、实验目(de):1)掌握作业调度(de)主要功能及算法.2)通过模拟作业调度算法(de)设计加深对作业管理基本原理(de)理解.3)熟悉Linux环境下应用程序(de)编程方法.2、实验内容:(1)作业调度算法(FCFS)编程模拟:编制一段程序,对所输入(de)若干作业,输入、输出数据样例如下表所示.按FCFS算法模拟调度,观察、记录并分析调度(de)输出结果情况.输入输出样例1:FCFS算法include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void fcfs(){ int i,j,t=0,tw=0,tt=0;for(i=0;i<SIZE-1;i++)for(j=i+1;j<SIZE;j++)if(job[i].tb>job[j].tb){x=job[i];job[i]=job[j];job[j]=x;}printf("FCFS调度结果:\n");printf("开始时间作业号到达时间运行时间完成时间等待时间周转时间\n");for(i=0;i<SIZE;i++){printf(" %d",t);t=t+job[i].tr;tw=t-job[i].tb-job[i].tr; b; o,job[i].tb,job[i].tr,t,tw,tt);}}void main(){load();fcfs();}(2)作业调度算法(SJF)编程模拟:编程实现由短作业优先算法,分别用下面两组输入、输出数据样例进行模拟,观察分析运行结果.输入输出样例2:SJF算法输入输出A 0 4B 0 3C 0 5D 0 2E 0 1A 0 6 10 10B 0 3 6 6C 0 10 15 15D 0 1 3 3E 0 0 1 1include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void sjf()n=i; pl[i].pfn=ERR;}for(i=1;i<total;i++){ pfc[i-1].next=&pfc[i];pfc[i-1].pfn=i-1;}pfc[total-1].next=NULL;pfc[total-1].pfn=total-1;freepf_head=&pfc[0];}void FIFO(int total){ int i,j;pfc_type p,t;initialize(total);busypf_head=busypf_tail=NULL;for(i=0;i<page_len;i++){if(pl[page[i]].pfn==ERR){ diseffect+=1;if(freepf_head==NULL){p=busypf_head->next;pl[busypf_head->pn].pfn=ERR; freepf_head=busypf_head;freepf_head->next=NULL;busypf_head=p;}p=freepf_head->next;freepf_head->next=NULL;freepf_head->pn=page[i];pl[page[i]].pfn=freepf_head->pfn;if(busypf_tail==NULL)busypf_head=busypf_tail=freepf_head; else{ busypf_tail->next=freepf_head;busypf_tail=freepf_head;}freepf_head=p;}}printf("FIFO:%d",diseffect);}main(){ int i; int k;printf(“请输入页(de)引用序列:\n”); for(k=0;k<page_len;k++)scanf("%d",&page[k]);for(i=4;i<=7;i++){printf("%2d page frames ",i);FIFO(i);}参考程序LRU算法,略三、实验结果分析:(对上述实验各题所使用(de)原始数据、调试数据与状态(包括出错)及最终结果进行记录并分析.)随着块数(de)增加,缺页数目也减少,4个实验中3个实验(de)块数增加到了5以后,即使块数再增加,缺页数目也是保持不变.只有实验4,块数增加到7以后,缺页数目又再次减少了四、总结:你对本次实验有什么体会或看法.。
操作系统实验报告(四)
法称为改进型 Clock 算法。其执行过程可分成以下三步:
(1)从指针所指示的当前位置开始,扫描循环队列,寻找 A=0 且 M=0 的第一类页面,将所
遇到的第一个页面作为所选中的淘汰页。在第一次扫描期间不改变访问位 A。
(2)如果第一步失败,即查找一周后未遇到第一类页面,则开始第二轮扫描,寻找 A=0 且
XXXX 大学
实验报告
| |
实验名称
实验四 存储器管理实验课程来自称操作系统| |
专业班级: 学 号: 指导教师:
学生姓名: 成 绩: 实验日期:
华北电力大学实验报告
一、实验目的及要求
一、实验目的
存储器管理的主要功能是,合理地分配内存空间,数据存储和查询。其中,请求页式存储管
理是一种具有虚拟空间技术的存储器管理系统。
在采用该算法时,应为在内存中的每个页面设置一移位寄存器,用来记录该页面被访问的频 率,该置换算法选择在最近时期使用最少的页面作为淘汰页。 2、页面缓冲算法(Page Buffering Algorithm)
虽然 LRU 和 Clock 置换算法都比 FIFO 算法好,但它们都需要一定的硬件支持,置换一个已 修改的页的开销要大。而页面缓冲算法则既改善分页系统的性能,又可采用一种较简单的置换策 略。 六、请求分页系统的性能分析 1、缺页率对有效访问的时间的影响
缺页时须先调入该页的情况时,有效访问时间表示为:有效访问时间=(1-p) ma+p 缺页中 断时间。 2、缺页中断时间的组成 (1)缺页中断时间服务时间; (2)将缺页中断读入的时间; (3)进程重新执行时间。
由于 CUP 速度很快,所以其中地(1)和(3)两部分可以不超过 1ms;而将一磁盘块读入内 存的时间,则包括寻道时间、旋转时间和数据传送时间三部分,大体上是 24ms。由此可得知缺页 中断时间约为 25ms。此处尚未考虑到进程可能因排队等待所花费的时间。将上述数据代入到工集 有效访问时间
操作系统实验报告4
操作系统实验报告4一、实验目的本次操作系统实验的目的在于深入了解和掌握操作系统中进程管理、内存管理、文件系统等核心概念和相关操作,通过实际的实验操作,增强对操作系统原理的理解和应用能力,提高解决实际问题的能力。
二、实验环境本次实验使用的操作系统为 Windows 10,编程语言为 C++,开发工具为 Visual Studio 2019。
三、实验内容与步骤(一)进程管理实验1、进程创建与终止使用 C++语言编写程序,创建多个进程,并在进程中执行不同的任务。
通过进程的标识符(PID)来监控进程的创建和终止过程。
2、进程同步与互斥设计一个生产者消费者问题的程序,使用信号量来实现进程之间的同步与互斥。
观察生产者和消费者进程在不同情况下的执行顺序和结果。
(二)内存管理实验1、内存分配与释放编写程序,使用动态内存分配函数(如`malloc` 和`free`)来分配和释放内存。
观察内存的使用情况和内存泄漏的检测。
2、内存页面置换算法实现几种常见的内存页面置换算法,如先进先出(FIFO)算法、最近最少使用(LRU)算法和最佳置换(OPT)算法。
通过模拟不同的页面访问序列,比较不同算法的性能。
(三)文件系统实验1、文件创建与读写使用 C++语言的文件操作函数,创建一个新文件,并向文件中写入数据。
从文件中读取数据,并进行数据的处理和显示。
2、文件目录操作实现对文件目录的创建、删除、遍历等操作。
观察文件目录结构的变化和文件的组织方式。
四、实验结果与分析(一)进程管理实验结果与分析1、进程创建与终止在实验中,成功创建了多个进程,并通过控制台输出观察到了每个进程的 PID 和执行状态。
可以看到,进程的创建和终止是按照程序的逻辑顺序进行的,操作系统能够有效地管理进程的生命周期。
2、进程同步与互斥在生产者消费者问题的实验中,通过信号量的控制,生产者和消费者进程能够正确地实现同步与互斥。
当缓冲区为空时,消费者进程等待;当缓冲区已满时,生产者进程等待。
操作系统实验报告
操作系统实验报告一、实验目的本次操作系统实验的主要目的是通过实际操作和观察,深入理解操作系统的工作原理和关键机制,包括进程管理、内存管理、文件系统以及设备管理等方面。
同时,培养我们解决实际问题的能力,提高对操作系统相关知识的综合运用水平。
二、实验环境本次实验使用的操作系统为 Windows 10 和 Linux(Ubuntu 2004 LTS),实验所使用的编程工具包括 Visual Studio Code、gcc 编译器等。
三、实验内容及步骤(一)进程管理实验1、进程创建与终止在 Windows 系统中,使用 C++语言编写程序,通过调用系统 API函数创建新的进程,并观察进程的创建和终止过程。
在 Linux 系统中,使用 C 语言编写程序,通过 fork()系统调用创建子进程,并通过 wait()函数等待子进程的终止。
2、进程调度观察Windows 和Linux 系统中进程的调度策略,包括时间片轮转、优先级调度等。
通过编写程序模拟进程的执行,设置不同的优先级和执行时间,观察系统的调度效果。
(二)内存管理实验1、内存分配与释放在 Windows 系统中,使用 C++语言的 new 和 delete 操作符进行内存的动态分配和释放,并观察内存使用情况。
在 Linux 系统中,使用 C 语言的 malloc()和 free()函数进行内存的分配和释放,通过查看系统的内存使用信息来验证内存管理的效果。
2、虚拟内存管理研究 Windows 和 Linux 系统中的虚拟内存机制,包括页表、地址转换等。
通过编写程序访问虚拟内存地址,观察系统的处理方式和内存映射情况。
(三)文件系统实验1、文件操作在 Windows 和 Linux 系统中,使用编程语言对文件进行创建、读取、写入、删除等操作。
观察文件的属性、权限设置以及文件在磁盘上的存储方式。
2、目录操作实现对目录的创建、删除、遍历等操作。
研究目录结构和文件路径的表示方法。
电大操作系统实验报告
电大操作系统实验报告电大操作系统实验报告一、引言操作系统是计算机系统中的核心软件,它负责管理计算机的硬件和软件资源,为用户提供良好的使用环境。
为了更好地理解和掌握操作系统的工作原理,我参加了电大的操作系统实验课程。
在这门课程中,我学习了操作系统的基本概念、功能以及常见的操作系统类型。
同时,还进行了一系列实验,通过实践来加深对操作系统的理解。
本文将对我在实验中所学到的内容进行总结和分析。
二、实验内容1. 实验一:操作系统的启动过程在这个实验中,我学习了操作系统的启动过程。
操作系统的启动过程包括硬件自检、引导加载程序的执行以及操作系统的初始化。
通过实验,我深入了解了计算机开机后,操作系统是如何加载和启动的。
2. 实验二:进程管理进程是操作系统中最基本的概念之一,它代表了一个正在运行的程序。
在这个实验中,我学习了进程的创建、调度和终止等操作。
通过实验,我了解了操作系统是如何管理多个进程的运行,并掌握了一些常用的进程管理命令。
3. 实验三:内存管理内存管理是操作系统的重要功能之一,它负责为进程分配和回收内存空间。
在这个实验中,我学习了内存的分段和分页管理方式,并了解了虚拟内存的概念和作用。
通过实验,我掌握了一些常用的内存管理命令,并学会了如何检测和解决内存泄漏等问题。
4. 实验四:文件系统文件系统是操作系统中用于管理和组织文件的一种机制。
在这个实验中,我学习了文件的创建、读写和删除等操作,并了解了文件系统的组织结构和存储方式。
通过实验,我掌握了一些常用的文件管理命令,并学会了如何进行文件权限的管理和保护。
三、实验收获通过参加这门操作系统实验课程,我收获了很多。
首先,我对操作系统的工作原理有了更深入的理解。
通过实验,我亲自操作计算机,观察和分析操作系统的运行过程。
这使我能够更直观地感受到操作系统是如何管理和调度资源的。
其次,我掌握了一些常用的操作系统命令。
在实验中,我不仅学会了如何使用这些命令,还了解了它们的原理和用途。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.新建Windows控制台应用程序
生成项目:
执行项目:
调试项目:
intFunc(Int口〕,// 芦明Fuek函数
i.nxn-0,n=FunjcdO);
printfCHello World
查看EOS SDK( Software Development Kit)文件夹:
修改EOS应用程序项目名称:
*丁N咆U<&alyOmUOOt>£k
KB¥N理UI^Ll-tlrifv1Ox&GOlBZ&D
pin:RceH.io^ficm 1 non<±i
一、实验目的和要求
1.使用EOS的信号量,编程解决生产者一消费者问题,理解进程同步的意义。2.通 过为线程增加挂起状态,加深对线程状态的理解。
2.调试跟踪EOS信号量的工作过程,理解进程同步的原理。
3.调试加载程序。Loader程序的主要任务是将操作系统内核(kernel.dll文件)加
载到内存中,然后让CPUS入保护模式并且启用分页机制,最后进入操作系统内核开始 执行(跳转到kernel.dll的入口点执行)。
4.调试内核。
5.EOS启动后的状态和行为。查看EOS的版本号:
1)在控制台中输入命令“ver”后按回车。
实验
「、实验目的和要求
1.调试线程在各种状态间的转换过程,熟悉线程的状态和转换
2.通过为线程增加挂起状态,加深对线程状态的理解。
[、实验内容及步骤
1.准备实验。启动OS Labo
2.调试线程状态的转换过程。
3.线程由阻塞状态进入就绪状态
4.线程由运行状态进入就绪状态
5.线程由就绪状态进入运行状态
6.线程由运行状态进入阻塞状态
}
retur n n Result; &ulExitCode);
}
4.
本实验主要的问题就是用hello.exe同时创建10个进程:因为编程基础不好,刚开 始的程序很难通过编译•最后使用PROCESS_INFORMAT类型定义一个有10个元素的数 组,每一个元素对应一个进程。使用一个循环创建10个子进程,然后再使用一个循环等 待10个子进程结束,得到退出码后关闭句柄。并对细节做了部分修正才成功。
!_¥2-41LX2NVA
—士nx— — p —丁11沪00<1IL电貝ihC 11I■—ppiNN
IDJSijstrsm?F't*i-nr11ityiSf? t«±e1t'ittitF!T'n<^<rs3.D1衣「■fctATrli'u五工
N£QRyaclyJLiGjcESOOIHJLVC
p:e¥N-iuch ii;mgr丄oxtpeoxSE'gn
pflMSni-E-l (Prftss Ctrl+FVFR switcli corisnlfi uiitdnu...)Ucleone to EOS shell
五、实验心得
这次是验证性试验,具体步骤和操作方法都是与实验教程参考书上一致, 实验很顺利, 实验过程没有遇到困难。通过这次实验,我掌握了OS Lab启动和退出操作;练习使用OS Lab编写一个Windows控制台应用程序,熟悉OS Lab的基本使用方法新建项目、生 成项目、调试项目等。
其中一个是不能运行的。
实验
一、
1.练习使用EOS API函数CreateProcess创建一个进程,掌握创建进程的方法,理 解进程和程序的区别。
2.调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资 源分配的单位。
2.
1.准备实验。启动OS Labo
2.练习使用控制台命令创建EOS应用程序的进程。使用控制台命令创建EO阪用程
7.为线程增加挂起状态。
COKSOLE-2 (Press CtrI+F1*F8 to switch console windoiii
Uclcame to ECS shel1
Suspend 31
Suspend threadOl) success,
8.完成Resume原语后,可以先使用suspend命令挂起loop线程,然后在控制台2中输入命令“Resume 31'(如果loop线程的ID是31)后按回车。命令执行成功的结 果如下图所示。如果切换回控制台1后,发现loop线程的执行计数恢复增长就说明Resume原语可以正常工作。
btlv2-4Unj-t-lnrf11flQG事
乂三N弓Rihmi inyiOscH GOl B^fiU
戸勻NT;U<& i1■ lyOjcB-OOiK^fjB
L-l¥2-1I4oii-t itm£0X000XB2d6I>
任匸V^-4Uni-Llnri0^000fl^r-Tl
LZEsN理U<fl i ± inyi1OjcBOOISZGiD
4.EOS应用程序项目的生成和调试;
5.退出OS Labo
三、实验内容问题及解答
1.练习使用单步调试功能(逐过程、逐语句),体会在哪些情况下应该使用“逐过 程”调试,在哪些情况下应该使用“逐语句”调试。练习使用各种调试工具(包括“监 视”窗口、“调用堆栈”窗口等)。
答:逐语句,就是每次执行一行语句,如果碰到函数调用,它就会进入到函数里面。 而逐过程,碰到函数时,不进入函数,把函数调用当成一条语句执行。因此,在需要进 入函数体时用逐语句调试,而不需要进入函数体时用逐过程调试。
华北电力大学
实验报告
|
|
实验名称操作系统综合实验
课程名称
|
|
专业班级:网络学生姓名:
学 号: 成 绩:
指导教师:王德文/姜丽梅 实验日期:2015年11月4日
实验一实验环境的使用
一、实验目的
1.熟悉操作系统集成实验环境OS Lab的基本使用方法。
2.练习编译、调试EOS操作系统内核以及EOS应用程序。
prin tf("Create10p//rocessesa nd wait for the processes exit...\n\n");
StartupI nfo.Stdl nput = GetStdHa ndle(STD_INPUT_HANDLE);
Startup In fo.StdOutput = GetStdHa ndle(STD OUTPUT HANDLE);
}
for(i=0i<10;i++){
prin tf("\nThe process %d exit with %d.\n",i,ulExitCode);
CloseHa ndle(Procl nfo[i].ProcessHa ndle);
CloseHa ndle(ProcI nfo[i].ThreadHa ndle);
1.为什么EOS操作系统从软盘启动时要使用boot.bin和loader.bin两个程序?使 用一个可以吗?它们各自的主要功能是什么?如果将loader.b in的功能移动到boot.bin文件中,则boot.bin文件的大小是否仍然能保持小于 512字节?
答:在IDE环境启动执行EOS操作系统时,会将boot.bin、loader.bin和kernel.dll三个二进制写入软盘镜像文件中,然后让虚拟机来执行软盘中的EOS操作系统。仅使用
Startupl nfo.StdError=GetStdHa ndle(STD_ERROR_HANDLE);
for(i =0; i < 10; i++){
if(CreateProcess("A:\\Hello.exe",NULL,0,&Startup Info,&ProcI nfo[i]));
else {
答:修改代码为:
STARTUPINFO StartupI nfo;
PROCESS」NF ORMATION ProcI nfo[10];
ULONG ulExitCode;
INT nResult=0;。
int i,j;//#ifdef_DEBUG__asm("i nt $3\n nop");#e dif
5.调试PsCreateProcess函数”。
6.练习通过编程的方式创建应用程序的多个进程
3.
1.在源代码文件NewTwoProc.c提供的源代码基础上进行修改,要求使用hello.exe
同时创建10个进程。提示:可以使用PROCESS_INFORMATI类型定义一个有10个元素的数组,每一个元素对应一个进程。使用一个循环创建10个子进程,然后再使用一个循 环等待10个子进程结束,得到退出码后关闭句柄。
3.修改EOS的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进 程同步的原理。
二、实验内容及步骤
1.实验准备
1)启动OS Labb
2)新建一个EOS Kernel项目。
3)生成EOS Kernel项目,从而在该项目文件夹中生成SDK文件夹。
4)新建一个EOS应用程序项目。
5)使用在第3步生成的SDK文件夹覆盖EO阪用程序项目文件夹中的SDK文件夹。
nResult = 1; return nResult;
}
for(i=0;i<10;i++){
WaitForSi ngleObject(Proc In fo[i].ProcessHa ndle, INFINITE);
GetExitCodeProcess(ProcI nfo[i].ProcessHa ndle,&ulExitCode);
COMSDLE-2 (Press CtrI+F1*F8toswitch console windaw.»+)Ucleone to EOS shel1