OS实验报告1
高级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实验目的
OS实验报告格式

OS实验报告格式实验目的:本次实验旨在了解操作系统的基本概念和原理,以及对操作系统的功能和特性进行深入了解。
实验原理:操作系统是计算机系统中的重要组成部分,它承担着管理硬件资源、提供用户接口、调度任务等关键任务。
操作系统的核心功能包括进程管理、内存管理、文件系统管理和设备管理等。
在本次实验中,我们将通过实践操作系统的基本命令和功能,来加深对操作系统的理解和掌握。
实验步骤:1.打开计算机,启动操作系统。
在实验开始之前,首先需要启动计算机并进入操作系统的界面。
2.运行命令行工具。
在操作系统中,通过命令行工具可以执行各种操作系统命令,如查看系统信息、管理文件、运行程序等。
3. 创建文件和目录。
在命令行工具中,可以使用相应的命令来创建文件和目录,如mkdir命令用于创建目录,touch命令用于创建文件。
4.编写简单程序并运行。
在操作系统中,可以使用编程语言编写程序,然后通过编译运行的方式来执行程序。
5.查看系统信息。
通过系统命令可以查看操作系统的信息,如操作系统版本、内核版本、CPU信息等。
6.进程管理。
在操作系统中,可以通过相应的命令来管理进程,如查看当前运行的进程、杀死指定进程等。
7.内存管理。
操作系统通过内存管理来管理系统的内存资源,如分配和释放内存空间等操作。
8.文件系统管理。
在操作系统中,可以通过文件系统管理命令对文件进行管理,如查看文件列表、复制文件、删除文件等。
9.设备管理。
操作系统通过设备管理来管理计算机的硬件设备,如打印机、网络设备等。
实验结果:通过本次实验,我对操作系统的基本概念和功能有了更深入的了解。
我学会了如何使用命令行工具来管理文件和目录,如何编写程序并运行,如何查看系统信息,如何管理进程和内存,如何管理文件系统和设备等。
这些都是操作系统中非常重要的功能,对于理解和掌握操作系统至关重要。
实验总结:通过本次实验,我认识到了操作系统是计算机系统中的核心组件,它负责管理系统的各种资源并提供用户接口。
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实验一

00000H
IP CS
中断 类型0
00003H
003FFH
中断 类型 255
2、用到的DOS系统功能调用 31H 终止用户程序并驻留内存 35H 取中断向量 25H 置中断向量 09H 显示字符串
3、EXE文件和COM文件的区别
(1)COM文件 只有一个分段,无堆栈段 程序长度小于64KB 程序必须预留100H空间,且在位移 100H处是一条可执行指令 程序中的子程序必须具有近过程属性 (NEAR)。
DOS将一个COM文件装入内存时,寄存器 CS、DS、ES、SS指向PSP的起始地址, 代码装入程序段偏移量为100H处。
CS=DS=ES=SS CS:100H
PSP(100H) 程序
(2)EXE文件 有多个分段 程序长度受当前内存可用空间的限制 程序的起始标号与END语句说明的开 始地址一致。 该程序中的子程序既可为NEAR,也 可为FAR。
实验一 DOS系统调用的扩充
一、目的 了解并掌握扩充DOS系统调用的方法。 二、要求 1、了解DOS系统调用的实现机制: (1) DOS中断类型 (2)中断向量 (3)服务例程驻留 (4)服务的激活
三、内容 1、 在DEBUG状态下,显示中断向量表,找出一个 空闲的中断类型号,以此软中断作为新增加的系统 调用。 2、编写一个汇编程序syscall.asm,完成以下功能: (1)系统调用服务例程 新增加的功能用一个例程来描述,其功能可以很简 单,如显示一个字符串。 (2)初始化程序 设置新的中断向量,驻留新增加的服务例程 3、编写一个用户程序user.asm,调用新增加的功能。
DS=ES CS CS:IP 程序入口
PSP(100H)
程序
os实验报告

华北电力大学实验报告||实验名称 EOS操作系统实验课程名称操作系统||专业班级:网络1202 学生姓名:李忠明学号:************ 成绩:指导教师:王德文实验日期:2.2生成项目2.3执行项目在OS Lab中选择“调试”菜单中的“开始执行(不调试)”,可以执行刚刚生成的2. 在“调试”菜单中选择“启动调试”,Windows3. 激活Windows控制台应用程序的窗口,可以看到窗口中没有输出任何内容,调试命令2. 输入调试命令r后按回车,显示当前CPU中各个通用寄存器的值,其中表示IP寄存器的值为0xfff0。
3. 输入调试命令xp /1024b 0x0000,查看开始的1024个字节的物理内存。
在物理内存的值都为0,说明BIOS中断向量表还没有被加载到此处。
查看EOS启动后的进程和线程的信息:1)在控制台中输入命令“pt”后按回车。
2)输出的进程和线程信息如下图所示6. 查看有应用程序运行时进程和线程的信息:1)待 EOS启动完毕,在EOS控制台中输入命令“hello”后按回车。
此时Hello.exe应用程序就开始执行。
2)迅速按Ctrl+F2切换到控制台2,并输入命令“pt”后按回车。
输出的进程和线程信息如下图所示四、实验总结通过本次试验,对操作系统的启动有了一定了解,对后面的实验有了最基本的认识,实验过程中只要对照课本就可以很好地完成,需要细心操作。
实验三进程的创建一、实验目的及要求练习使用EOS API函数CreateProcess创建进程,掌握创建进程的方法,理解程序和进程的区别,调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源的分配单位。
二、所用仪器、设备OS Lab实验环境三、实验原理四、实验方法与步骤1.启动OS Lab、新建一个EOS Kernel项目,用debug和release模式分别生成项目,新建EOS应用程序项目;2.练习使用控制台命令创建EOS应用程序的进程3.调试CreateProcess函数4.调试PsCreateProcess函数5.练习通过编程的方式创建应用程序的多个进程去在源代码文件NewTwoProc.c提供的源代码基础上进行修改,要求使用hello.exe同时创建5个进程。
北航os实验报告

北航os实验报告北航OS实验报告一、引言操作系统(Operating System,简称OS)是计算机系统中最基础的软件之一,它负责管理和控制计算机硬件资源,为用户和应用程序提供一个可靠、高效的工作环境。
本文将对北航OS实验进行详细的报告和分析。
二、实验目的本次北航OS实验的目的是让学生深入理解和掌握操作系统的基本原理和实现方式。
通过实践,学生将学会设计和实现一个简单的操作系统,了解操作系统的核心功能和运行机制。
三、实验内容1. 系统引导实验开始时,我们需要编写引导程序,将操作系统加载到计算机的内存中,并跳转到操作系统的入口地址开始执行。
这一步骤是整个实验的起点,也是操作系统正常运行的基础。
2. 中断处理操作系统需要能够处理各种中断事件,如时钟中断、键盘中断等。
学生需要实现中断处理程序,使操作系统能够响应和处理这些中断事件,并根据具体情况进行相应的操作。
3. 进程管理操作系统需要能够管理多个进程的创建、调度和终止。
学生需要设计并实现进程管理模块,包括进程控制块(PCB)的数据结构和进程调度算法。
通过合理的调度策略,提高系统的并发性和响应速度。
4. 内存管理操作系统需要管理计算机的内存资源,包括内存的分配和释放。
学生需要设计并实现内存管理模块,使用合适的算法来管理内存的分配和回收,避免内存泄漏和碎片化问题。
5. 文件系统操作系统需要提供文件系统来管理计算机中的文件和数据。
学生需要设计并实现一个简单的文件系统,包括文件的创建、读写和删除等操作。
通过文件系统,用户可以方便地存储和管理自己的数据。
四、实验过程在实验过程中,我们遇到了许多挑战和问题,但通过不断的尝试和调试,我们最终成功实现了一个简单的操作系统。
以下是我们在实验过程中遇到的一些关键问题和解决方案:1. 内存管理在实验过程中,我们发现内存管理是一个非常关键的问题。
如果内存管理不当,容易导致内存泄漏或者内存碎片化,从而影响系统的性能和稳定性。
我们通过设计一个位图来管理内存的分配和释放,使用首次适应算法来分配内存,并通过合理地回收内存来避免内存泄漏问题。
os报告1

操作系统第三次哲学家与菜单实验报告
编程完成ncurses菜单
1.要求编程实现哲学家进餐模型
二. 实验结果
Menu
图1.Menu
补充:根据位置坐标控制相应程序的执行,在已有的源程序上进行改动,主要是可执行文件路径,结束后自动返回等,尤为注意的是fifo,先fifo放在线程中执行,然后新建终端执行fifo1.
哲学家进餐
图2.哲学家进餐
补充:模仿生产者消费者程序的流程进行编写,试验中尤为注意死锁的情况。
三.实验总结
通过这两次实验对linux编程仅仅熟悉,收获较大的是哲学家问题,通过此次编程,更深刻的了解了线程的工作原理,会使用部分pthread函数,实验中为了体现筷子的竞争,在eat时采取了随机数延时,让每个哲学家吃面条的时间不同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1 Ubuntu Linux操作系统及开发环境
学生姓名张锦涛学号20091602310002 专业班级2011级计本1班实验地点信息学院222 实验日期2011-04-19 指导教师张春元、卢春燕实验环境Ubuntu Linux + gcc+g++ 实验学时2学时
1.实验目的
(1)熟悉Ubuntu Linux操作系统;
(2)掌握vi编辑器的使用;
(3)掌握gcc编译器与g++编译器的使用。
2.实验内容
(1)用vi编辑器和C语言编辑实现如下程序ex1_1.c,用gcc编译并运行
#include <stdio.h>
//输入3个整数,求其最大值
main(){
int a,b,c,max;
printf("请输入3个整数”);
scanf("%d,%d,%d",&a,&b,&c);
if(a>=b && a>=c)
max=a;
else if(b>=a && b>=c)
max=b;
else if(c>=a && c>=b)
max=c;
printf("3个整数的最大值=%d\n",max);
}
编译:gcc ex1_1.c –o ex1_1
运行:./ex1_1
(2)用vi编辑器和C++语言输入以下程序,用g++编译并运行
#include <iostream>
using namespace std;
//输入一个年份,判断该年份是否是闰年
int main(){
int year;
bool IsLeapYear;
cout << "Enter the year: ";
cin >> year;
IsLeapYear = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
if (IsLeapYear)
cout << year << " is a leap year" << endl;
else
cout << year << " is not a leap year" << endl;
return 0;
}
编译:gcc ex1_2.cpp –o ex1_2
运行:./ex1_2
3.实验过程及分析
(1)实验内容1采用vi编辑器编辑和gcc编译运行截屏如下:
(2)实验内容2采用vi编辑器编辑和g++编译运行截屏如下:
4.实验总结(写出实验中的心得体会)。