操作系统试验报告3

合集下载

操作系统实验实验报告

操作系统实验实验报告

操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。

本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。

二、实验环境本次实验使用的操作系统为 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 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() 方法。

其中有四个由实际的低级入口点传递来的参数。

《操作系统》实验报告

《操作系统》实验报告

《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。

二、实验环境本次实验在以下环境中进行:操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、进程管理实验进程是操作系统中最基本的执行单元。

在这个实验中,我们使用C++编写程序来创建和管理进程。

通过观察进程的创建、执行和结束过程,理解进程的状态转换和资源分配。

首先,我们编写了一个简单的程序,创建了多个子进程,并通过进程标识符(PID)来跟踪它们的运行状态。

然后,使用等待函数来等待子进程的结束,并获取其返回值。

在实验过程中,我们发现进程的创建和销毁需要消耗一定的系统资源,而且进程之间的同步和通信需要谨慎处理,以避免出现死锁和竞争条件等问题。

2、内存管理实验内存管理是操作系统的核心功能之一,它直接影响系统的性能和稳定性。

在这个实验中,我们研究了动态内存分配和释放的机制。

使用 C++中的 new 和 delete 操作符来分配和释放内存。

通过观察内存使用情况和内存泄漏检测工具,了解了内存分配的效率和可能出现的内存泄漏问题。

同时,我们还探讨了内存分页和分段的概念,以及虚拟内存的工作原理。

通过模拟内存访问过程,理解了页表的作用和地址转换的过程。

3、文件系统实验文件系统是操作系统用于管理文件和目录的机制。

在这个实验中,我们对文件的创建、读写和删除进行了操作。

使用 C++的文件流操作来实现对文件的读写。

通过创建不同类型的文件(文本文件和二进制文件),并对其进行读写操作,熟悉了文件的打开模式和读写方式。

此外,还研究了文件的权限设置和目录的管理,了解了如何保护文件的安全性和组织文件的结构。

4、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。

哈工大《操作系统》实验3

哈工大《操作系统》实验3

向kernel/printk.c中添加日志打印功能,将以下代码添加到原文件中:
在kernel/fork.c、kernel/sched.c和kernel/exit.c中,找到正确的状态转换点,并添加合适的状态信息,把它输出到log文件之中。

fork.c的修改如下:
exit.c的修改如下:
sched.c的修改如下:
在虚拟机上运行ls -l /var”或“ll /var”查看process.log是否建立,及它的属性和长度;
修改时间片
include/linux/sched.h宏INIT_TASK中定义的:
0,15,15, 分别对应state、counter和priority,将priority值修改,即可实现对时间片大小的调整。

0,15,15, 分别对应state、counter和priority,
priority值修改,即可实现对时间片大小的调整。

在修改时间片将priority由15改为150后,Process 9~20 中Turnaround, Waiting, CPU Burst, I/O Burst变化不大,原因可能是程序中I/O操作占用的时间对于总时间影响的权重过大,导致处理时间体现的并不明显。

或者变化不大的原因是,子进程连续占用cpu的时间要比时间片大很多。

操作系统 实验报告

操作系统 实验报告

操作系统实验报告操作系统是计算机硬件和应用软件之间的一个重要桥梁,它提供了对硬件资源的管理和调度,为应用程序提供了一个运行环境。

在操作系统的发展历史中,经历了批处理系统、分时系统、网络操作系统等不同的阶段和发展方向。

本次实验主要涉及操作系统的进程管理、文件系统以及内存管理。

首先是进程管理,进程是计算机中最基本的执行单元,负责处理用户的请求并执行相应的操作。

在实验中,我们使用了进程调度算法来调度不同的进程。

进程调度算法的选择会直接影响到系统的性能和响应时间。

最常见的进程调度算法有FCFS(先到先服务)、SJF(短作业优先)、RR(时间片轮转)等。

本次实验中,我们实现了一个简单的RR调度算法,按照时间片的顺序轮流使用CPU资源。

实验结果显示,RR调度算法能够有效地保证多个进程同时运行且公平地使用CPU。

其次是文件系统,文件系统是操作系统中管理文件和文件夹的机制。

在实验中,我们使用了文件管理的一些基本操作如创建文件、打开文件、写入文件和关闭文件等。

在文件的操作过程中,通过文件指针来记录当前的读写位置以便于下一次读写。

实验结果显示,文件管理功能能够很好地实现对文件的读写和管理。

最后是内存管理,内存是计算机中存储数据和程序的地方,对于操作系统来说管理和分配内存是一个非常重要的任务。

在实验中,我们主要学习了内存的分区管理和分页管理。

内存的分区管理将内存划分为若干个大小不等的区域,每个程序占用相应的内存空间。

而内存的分页管理则将程序划分为固定大小的页,同时也将内存划分为页框,通过页表来进行地址映射。

实验结果显示,分页管理可以有效地利用内存资源,提高系统的性能和可用性。

通过本次操作系统实验,我对操作系统的原理和实践有了更深入的理解。

在实验中,我了解了进程管理、文件系统和内存管理的基本概念和功能,并通过实验来掌握相关的操作和原理。

通过实验的过程,我深刻地认识到操作系统对计算机的重要性,以及良好的操作系统设计对系统性能的影响。

操作系统实验报告——调度算法

操作系统实验报告——调度算法

操作系统实验报告——调度算法1. 实验目的本实验旨在探究操作系统中常用的调度算法,通过编写代码模拟不同的调度算法,了解它们的特点和应用场景。

2. 实验环境本次实验使用的操作系统环境为Linux,并采用C语言进行编码。

3. 实验内容3.1 调度算法1:先来先服务(FCFS)FCFS调度算法是一种简单且常见的调度算法。

该算法按照进程到达的先后顺序进行调度。

在本实验中,我们使用C语言编写代码模拟FCFS算法的调度过程,并记录每个进程的等待时间、周转时间和响应时间。

3.2 调度算法2:最短作业优先(SJF)SJF调度算法是一种非抢占式的调度算法,根据进程的执行时间来选择下一个要执行的进程。

在本实验中,我们使用C语言编写代码模拟SJF算法的调度过程,并计算每个进程的等待时间、周转时间和响应时间。

3.3 调度算法3:轮转调度(Round Robin)Round Robin调度算法是一种经典的时间片轮转算法,每个进程在给定的时间片内依次执行一定数量的时间。

如果进程的执行时间超过时间片,进程将被暂时挂起,等待下一次轮转。

在本实验中,我们使用C语言编写代码模拟Round Robin算法的调度过程,并计算每个进程的等待时间、周转时间和响应时间。

4. 实验结果分析通过对不同调度算法的模拟实验结果进行分析,可以得出以下结论:- FCFS算法适用于任务到达的先后顺序不重要的场景,但对于执行时间较长的进程可能会导致下一个进程需要等待较久。

- SJF算法适用于任务的执行时间差异较大的场景,能够提高整体执行效率。

- Round Robin算法适用于时间片相对较小的情况,能够公平地为每个进程提供执行时间。

5. 实验总结本次实验通过模拟不同调度算法的实际执行过程,深入了解了各种调度算法的原理、特点和适用场景。

通过对实验结果的分析,我们可以更好地选择合适的调度算法来满足实际应用的需求。

在后续的学习中,我们将进一步探索更多操作系统相关的实验和算法。

安装系统实验报告格式(3篇)

安装系统实验报告格式(3篇)

第1篇一、实验目的1. 掌握操作系统安装的基本方法。

2. 熟悉安装过程中可能遇到的问题及解决方法。

3. 提高系统安装与维护能力。

二、实验环境1. 操作系统:Windows 102. 安装介质:Windows 10安装U盘3. 硬件设备:计算机(CPU、内存、硬盘等)三、实验步骤1. 准备工作(1)制作Windows 10安装U盘,确保U盘中的安装文件完整。

(2)备份重要数据,避免安装过程中数据丢失。

2. 安装系统(1)将Windows 10安装U盘插入计算机USB接口。

(2)重启计算机,进入BIOS设置,将U盘设置为第一启动设备。

(3)启动计算机,进入Windows 10安装界面。

(4)按照提示操作,选择安装类型(升级或全新安装)。

(5)选择安装磁盘,进行分区操作。

(6)确认安装路径,开始安装系统。

3. 安装完成后重启计算机,进入Windows 10桌面。

四、实验结果1. 成功安装Windows 10操作系统。

2. 系统运行稳定,无异常现象。

五、实验分析1. 在安装过程中,遇到了以下问题:(1)U盘启动速度较慢,导致安装时间较长。

(2)在分区操作时,由于操作失误,导致分区不正确。

(3)在安装过程中,遇到网络连接问题,无法正常下载驱动程序。

2. 针对上述问题,采取了以下解决方法:(1)更换高速U盘,提高启动速度。

(2)重新分区,确保分区正确。

(3)连接网络,手动下载驱动程序。

六、实验总结1. 通过本次实验,掌握了操作系统安装的基本方法。

2. 熟悉了安装过程中可能遇到的问题及解决方法。

3. 提高了系统安装与维护能力。

以下为实验报告的详细内容:一、实验目的1. 掌握操作系统安装的基本方法。

2. 熟悉安装过程中可能遇到的问题及解决方法。

3. 提高系统安装与维护能力。

二、实验环境1. 操作系统:Windows 102. 安装介质:Windows 10安装U盘3. 硬件设备:计算机(CPU、内存、硬盘等)三、实验步骤1. 准备工作(1)制作Windows 10安装U盘,确保U盘中的安装文件完整。

2023年最新的操作系统文件管理实验报告三篇

2023年最新的操作系统文件管理实验报告三篇

2023年最新的操作系统文件管理实验报告三篇操作系统文件管理实验报告一篇一、实训主要内容Word排版,表格制作与编辑。

Powerpoint的制作,初步认识计算机办公应用OFFICE。

二、实训过程第一天:初步熟悉计算机的性能和认识Word;第二天:练习Word题;第三天:认识Powerpoint并对昨天的Word练习予以测试;Excel实训作业第四天:将Word表格与Powerpoint的制作熟悉巩固;第五天:老师再次对我们Word与Powerpoint测验以及教我们一些有用的技能与方法,初步认识计算机办公应用。

OFFICE。

三、实训心得体会很快的,一个假期又过来了,面对本学期最后一次的校园生活实训,想着刚刚过去的最后一个周,紧张沉默之后更多的是感慨,印在脑海里的每一个足迹都是那么的深,真的说不出是什么感觉,伴着时间,就像是在和自己的影子赛跑,不可能从真实的两面去看清它,只是经意不经意的感受着有种东西在过去,也许更适合的只有那句话:时不待我,怎可驻足一周,短短的一周,我学到了很多不知道的东西,实在是感受颇深。

当今企业竞争范围的伴随社会市场经济的发展以及信息化程度的不断提高而日益扩大,这样就要求企业在各个方面加强管理,要求企业有更高的信息化集成来实现对企业的整体资源进行集成管理。

现代企业都意识到,企业之间的竞争是综合实力的竞争,要求企业有更强的资金实力,具备强有力的管理能力和更快的市场响应速度。

因此,引入计算机系统的意义是非常重大的。

在社会主义市场经济高速发展的今天,如果计算机的各项管理运做仍然停滞在以纸、笔为主要工具的阶段,就会因为信息量的快速增长而无法迅速、准确的运用计算机完成各项工作,这样,必将成为企业各方面发展的一个瓶颈。

而在当代这个以信息时代为主题的社会里,计算机技术高速发展,将信息技术应用于对现代企业的管理日益普及。

计算机技术不但可以提高信息的处理速度和提高信息处理的准确性,更重要的是,可以进一步的解放劳动力,将他们分配到更需要人力资源的岗位上去,从而加快社会工作的现代化、综合化的发展步伐。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

三、实验要求 1、至少完成上述实验内容中的一个。 2、自行设定内存总空间,大小单位为 KB,分页管理需要设定每个页的大小。 3、随机设置当前内存分配状态。 4、自行设计作业队列,队列中至少要有 3 个作业,设定各个作业空间大小,大小要适
中。
5、输出结果要尽量详细清晰,如果输出内容比较多,可以考虑把输出结果保存到文件
深 圳 大 学 实 验 报 告
课程名称:
计算机操作系统
实验项目名称: 连续式与分页式主存管理的模拟实现
学院:
计算机与软件
专业:
软件工程
指导教师:
梁正平
报告人: 文 成
学号:
2011150259
班级:
2
实验时间:
2013-6-01
实验报告提交时间:
2013-6-04
教务部制
一、实验目的
模拟在连续分配与分页管理两种方式下,主存空间的分配与回收,帮助学生加深了 解存储器管理的工作过程。 注意,该实验为模拟实验,并不要求进行真正的内存分配与回收,主要是编写程序 模拟其中过程即可。
6、 作业撤销后,需要回收物理块,回收过程如下: a) b) c) 根据页表,修改块表中对应各个物理块的状态 修改空闲块数,记录回收后空白块总数。 撤销页表
7、每次作业装入或回收,都需要输出块表、页表的内容,发生变化的块号,以及空闲
块数。若块表太大,可以用二维表格的方式输出,或只输出发生变化的块号。
二、实验内容
连续式分配
1、 在连续分配方式下,设计一个动态分区分配与回收的内存管理程序。 2、 动态分区分配按作业需要的主存大小来分割分区。当要装入一个作业时,根据作业 需要的主存量查看是否有足够的空闲空间,若有,则按需要量分割一个分区分配给 该作业;若无,则作业不能装入。 3、 设置一张全局分区状态表说明当前内存分配状态,例如下所示:
} int process_num()//随机产生一个进程个数的函数 { int num; int A[10]={1,2,3,4,5,6,7,8,9,10}; srand((unsigned)time(NULL)); num=rand()%10; return A[num]; } char srand_name(int k)//随机产生一个进程的名字 { char A[26]={'A','B','C','D','E','F','G','H','I', 'J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; return A[k]; } void allocate(char PRS_NAME,float X_K) //采用最优分配算法为进程 PRS_NAME 分配 X_K 大小的空间 { int i,k; float ad; k=-1; for(i=0;i<m;i++) //寻找空间大于 X_K 的最小空闲区登记项 k if(Free_table[i].length>=X_K&&Free_table[i].flag==1) if(k==-1||Free_table[i].length<Free_table[k].length) k=i; if(k==-1)//未找到可用空闲分区,返回 { printf("无可用空闲区\n"); return; } //找到可用空闲区,开始分配: if(Free_table[k].length-X_K<=M_SIZE) { Free_table[k].flag=0; ad=Free_table[k].address; X_K=Free_table[k].length; } else { Free_table[k].length=Free_table[k].length-X_K; ad=Free_table[k].address+Free_table[k].length; }

分页式管理
1、 设计一个基本分页存储管理程序 2、 分页式存储器把主存分成大小相等的若干块,作业的信息也按块的大小分页,作业 装入主存时按页分散存放在主存的空闲块中。 3、 系统用一张块表记录物理块分配的情况,如下图所示,其中状态 0 表示未分配,1 表 示已分配。另外增加一个空闲块数,记录当前可用的物理块总数。 状态 第0块 第1块 第2块 第3块 第4块 1 1 0 1 0
struct { float address; float length; int flag; }Free_table[m]; float stand_length(int k)//随机产生一个分区大小的函数 { float st_length[20]; srand((unsigned)time(NULL));//srand()函数产生一个当前时间开始的随机种子 for (int i=0;i<20;i++) st_length[i]=float (rand()%1000); return st_length[k]; } float process_length(int k)//随机产生一个进程大小的函数 { float pt_length[20]; srand((unsigned)time(NULL));//srand()函数产生一个当前时间开始的随机种子 for (int i=0;i<20;i++) pt_length[i]= float (rand()%500); return pt_length[k];
0 5k 10k 14k 26k 32k
操作系统区 作业 1 作业 3 空闲区 作业 2 空闲区
640k
4、 设置一张空闲分区表描述当前空闲分区分布状况,可采用数组或链表来实现,链表 请参考课本 P108 的数据结构设计。数组可参考以下格式: 起 第一栏 第二栏 14 K 32 K 址 长 12 K 96 K 度 状 态
//寻找回收分区的空闲上下邻,上邻表目 k,下邻表目 j while(i<m&&(j==-1||k==-1)) { if(Free_table[i].flag==1) { if(Free_table[i].address+Free_table[i].length==S)k=i;//找到上邻 if(Free_table[i].address==S+L)j=i;//找到下邻 } i++; } if(k!=-1) if(j!=-1) // 上邻空闲区,下邻空闲区,三项合并 { Free_table[k].length=Free_table[j].length+Free_table[k].length+L; Free_table[j].flag=1; } else //上邻空闲区,下邻非空闲区,与上邻合并 Free_table[k].length=Free_table[k].length+L; else if(j!=-1) //上邻非空闲区,下邻为空闲区,与下邻合并 { Free_table[j].address=S; Free_table[j].length=Free_table[j].length+L; } else //上下邻均为非空闲区,回收区域直接填入 { //在空闲区表中寻找空栏目 t=0; while(Free_table[t].flag==1&&t<m) t++; if(t>=m)//空闲区表满,回收空间失败,将已分配表复原 { cout<<"内存空闲表没有空间,回收空间失败"<<endl; Used_Table[s].flag=j; return; } Free_table[t].address=S; Free_table[t].length=L; Free_table[t].flag=1; } return;
4、 需要为每个作业设置一张页表,记录页号与块号的对应关系。
页 0 1 2

块 72 56

168
5、 作业装入内存时,分配过程如下: a) 将空闲块数乘上每块空间,计算出可用空间总数,然后与作业需要空间比较, 若不能满足需要,提示不能装入。 b) 若能满足需要,为作业创建页表,在块表中寻找足够的空白块,将页号与块号 一一对应,并填入页表。同时修改块表中各个块的状态 c) 修改空闲块数,记录剩下空白块总数。
中,通过文件来查看。
6、程序代码要尽量加入注释,提高程序的清晰度与可读性。
ห้องสมุดไป่ตู้
7、在实验报告中,一方面可以对实验结果进行分析,一方面可以对两种分配方式进行
比较,分析它们的优劣。
四、实验步骤
//分页存储管理代码 #include <stdio.h> #include<iostream.h> #include<string.h> #include <stdlib.h> #include <time.h> #define n 11 //模拟实验中允许的最大进程数为 n #define m 11 //模拟实验中允许的最大分区个数为 m #define M_SIZE 2000 struct { float address; //分配给进程的起始地址 float length; //分配给进程的空闲区长度,单位为字节 int flag; //分配区表标志,用"0"已分配,用"1"表示未分配 }Used_Table[m]; //分配分区表
相关文档
最新文档