081181045 高明明 操作系统实验报告

合集下载

《操作系统》实验报告

《操作系统》实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

高级操作系统实验报告

高级操作系统实验报告

一、实验背景与目的随着计算机技术的飞速发展,操作系统作为计算机系统的核心,其重要性日益凸显。

为了更好地理解操作系统的工作原理和设计思想,我们选择了高级操作系统课程,并完成了以下实验:1. 实验背景本次实验基于Linux操作系统,通过对Linux系统内部结构和操作过程的研究,掌握Linux系统的基本操作、文件系统管理、进程管理、内存管理、设备管理等方面的知识。

2. 实验目的(1)熟悉Linux操作系统的基本操作,包括登录、退出、文件与目录操作等。

(2)掌握Linux系统下的进程管理,包括进程的创建、调度、同步、通信等。

(3)了解Linux系统下的内存管理,包括虚拟内存、页面置换算法等。

(4)学习Linux系统下的设备管理,包括设备驱动程序、I/O调度等。

二、实验内容与步骤1. 实验一:Linux基本操作(1)实验目的:熟悉Linux系统的基本操作。

(2)实验步骤:① 登录Linux系统。

② 使用命令行查看系统信息,如CPU型号、内存大小等。

③ 创建和删除文件与目录。

④ 查看文件内容。

2. 实验二:文件系统管理(1)实验目的:掌握Linux系统下的文件系统管理。

(2)实验步骤:① 使用命令行查看文件系统类型。

② 查看文件系统分区。

③ 使用命令行创建和删除文件系统。

④ 使用命令行挂载和卸载文件系统。

3. 实验三:进程管理(1)实验目的:掌握Linux系统下的进程管理。

(2)实验步骤:① 使用命令行查看系统进程。

② 创建和终止进程。

③ 调整进程优先级。

④ 实现进程同步与互斥。

4. 实验四:内存管理(1)实验目的:了解Linux系统下的内存管理。

(2)实验步骤:① 使用命令行查看内存信息。

② 查看内存分配情况。

③ 实现页面置换算法。

5. 实验五:设备管理(1)实验目的:学习Linux系统下的设备管理。

(2)实验步骤:① 使用命令行查看设备信息。

② 编写简单的设备驱动程序。

③ 实现I/O调度。

三、实验结果与分析1. 实验结果通过本次实验,我们成功完成了以下任务:(1)熟悉了Linux操作系统的基本操作。

操作系统 实验报告

操作系统 实验报告

操作系统实验报告操作系统实验报告引言:操作系统是计算机系统中最重要的软件之一,它负责管理计算机硬件资源,并提供程序运行环境。

操作系统的设计和实现是计算机科学领域的重要研究方向之一。

本篇实验报告将介绍我们在操作系统实验中所进行的实践和实验结果。

一、实验目的我们的实验目的是通过实践操作系统的基本功能,深入理解操作系统的原理和实现方式。

具体来说,我们的实验目标包括:1. 学习并掌握操作系统的基本概念和原理;2. 理解操作系统与硬件之间的交互过程;3. 实践操作系统的进程管理、内存管理和文件系统等功能;4. 分析操作系统的性能和优化策略。

二、实验环境我们使用了一台配置较高的计算机作为实验环境,该计算机配备了一块主频为2.5GHz的多核处理器、8GB内存和500GB硬盘。

我们选择了一款常见的操作系统作为实验平台,以便于进行实验和调试。

三、实验过程1. 进程管理在进程管理实验中,我们实现了进程的创建、调度和终止等功能。

首先,我们编写了一个简单的程序,用于创建多个进程并进行调度。

然后,我们通过观察进程的执行顺序和时间片分配情况,分析操作系统的调度算法对系统性能的影响。

2. 内存管理在内存管理实验中,我们实现了内存的分配和回收等功能。

我们编写了一个模拟程序,用于模拟内存的分配和释放过程。

通过观察内存分配的效率和内存碎片的情况,我们评估了不同的内存管理算法的性能。

3. 文件系统在文件系统实验中,我们实现了文件的创建、读写和删除等功能。

我们编写了一个简单的文件操作程序,用于测试文件系统的性能和可靠性。

通过观察文件系统的读写速度和文件恢复的效果,我们评估了不同的文件系统实现方式的优劣。

四、实验结果通过实验,我们获得了以下结果:1. 进程管理实验中,我们发现不同的调度算法对系统性能的影响差异较大。

短作业优先算法在短时间内能够提高系统的响应速度,而时间片轮转算法则能够保证公平性。

2. 内存管理实验中,我们发现不同的内存管理算法对内存利用率和碎片情况有很大的影响。

《操作系统》课内实验报告

《操作系统》课内实验报告

《操作系统》课内实验报告一、实验目的本次《操作系统》课内实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握常见操作系统命令的使用,提高对操作系统的实际应用能力和问题解决能力。

二、实验环境本次实验在计算机实验室进行,使用的操作系统为 Windows 10 和Linux(Ubuntu 发行版)。

实验所使用的计算机配置为:Intel Core i5 处理器,8GB 内存,500GB 硬盘。

三、实验内容1、进程管理在 Windows 系统中,通过任务管理器观察进程的状态、优先级、CPU 使用率等信息,并进行进程的结束和优先级调整操作。

在 Linux 系统中,使用命令行工具(如 ps、kill 等)实现相同的功能。

2、内存管理使用 Windows 系统的性能监视器和资源监视器,查看内存的使用情况,包括物理内存、虚拟内存的占用和分配情况。

在 Linux 系统中,通过命令(如 free、vmstat 等)获取类似的内存信息,并分析内存的使用效率。

3、文件系统管理在 Windows 系统中,对文件和文件夹进行创建、复制、移动、删除等操作,了解文件的属性设置和权限管理。

在 Linux 系统中,使用命令(如 mkdir、cp、mv、rm 等)完成相同的任务,并熟悉文件的所有者、所属组和权限设置。

4、设备管理在 Windows 系统中,查看设备管理器中的硬件设备信息,安装和卸载设备驱动程序。

在 Linux 系统中,使用命令(如 lspci、lsusb 等)查看硬件设备,并通过安装内核模块来支持特定设备。

四、实验步骤1、进程管理实验(1)打开 Windows 系统的任务管理器,切换到“进程”选项卡,可以看到当前系统中正在运行的进程列表。

(2)选择一个进程,右键点击可以查看其属性,包括进程 ID、CPU 使用率、内存使用情况等。

(3)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。

操作系统课程实验报告

操作系统课程实验报告

一、实验概述实验名称:操作系统课程实验实验目的:1. 理解操作系统基本概念、原理及功能;2. 掌握操作系统的基本操作和应用;3. 提高实际操作能力和分析问题、解决问题的能力。

实验内容:1. 操作系统基本概念及原理的学习;2. 操作系统基本操作的应用;3. 实验项目:文件读写、多进程、多线程。

二、实验环境操作系统:Windows 10编译器:Visual Studio语言:C/C++实验平台:Windows 10系统下的虚拟机三、实验过程1. 操作系统基本概念及原理的学习操作系统是计算机系统中最基本的系统软件,负责管理计算机硬件资源、提供用户接口以及执行各种应用程序。

在实验过程中,我们学习了以下基本概念及原理:(1)进程管理:进程是操作系统能够进行运算处理的独立单位,具有动态性、并发性、异步性和独立性等特点。

进程管理主要包括进程的创建、调度、同步、通信和终止等。

(2)内存管理:内存管理是操作系统核心功能之一,主要负责分配、回收、保护和管理内存资源。

内存管理方式有分页、分段、段页式等。

(3)文件系统:文件系统是操作系统用于存储、检索和管理文件的机制。

文件系统主要包括目录结构、文件属性、文件操作等。

(4)设备管理:设备管理负责管理计算机系统中的各种外部设备,包括输入、输出和存储设备。

设备管理主要包括设备分配、设备驱动程序、缓冲区管理等。

2. 操作系统基本操作的应用在实验过程中,我们应用以下基本操作:(1)进程管理:创建、调度、同步、通信和终止进程。

(2)内存管理:分配、回收、保护和管理内存资源。

(3)文件系统:创建、删除、读写文件,实现目录结构的管理。

(4)设备管理:分配、回收、控制和管理设备。

3. 实验项目:文件读写、多进程、多线程(1)文件读写实验实验目的:掌握文件的基本操作,实现文件的创建、打开、读取、写入和关闭。

实验步骤:① 创建一个文件,命名为“test.txt”。

② 打开文件,以读写模式。

操作系统实习报告

操作系统实习报告

操作系统实习报告设计题目:处理器调度专业通信工程班级0803班学生肖伟学号2008115020319指导教师湖北师范学院计算机科学与技术学院2011 年 2 学期实验一处理器调度一、实习内容选择一个调度算法,实现处理器调度。

二、实习目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。

当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。

本实习模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。

加深对进程概念的理解,明确进程和程序的区别;深入了解系统如何组织进程、创建进程;进一步认识如何实现处理器调度。

三、实习题目本实习有两个题,学生可选择其中的一题做实习。

第一题:设计一个按优先数调度算法实现处理器调度的程序。

[提示]:(1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为:进程名指针要求运行时间优先数状态其中,进程名——作为进程的标识,假设五个进程的进程名分别为P1,P2,P3,P4,P5。

指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。

要求运行时间——假设进程需要运行的单位时间数。

优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。

状态——可假设有两种状态,“就绪”状态和“结束”状态。

五个进程的初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。

(2) 在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。

(3) 为了调度方便,把五个进程按给定的优先数从大到小连成队列。

用一单元指出队首进程,用指针指出队列的连接情况。

例:队首标志K2K1P1K2P2K3P3K4P4K5P50 K4K5K3K12 3 1 2 41 5 3 4 2R R R R RPCB1 PCB2 PCB3 PCB4 PCB5(4) 处理器调度总是选队首进程运行。

操作系统课程实验报告

操作系统课程实验报告一、实验目的操作系统是计算机系统中最核心的软件之一,它负责管理计算机的硬件资源和软件资源,为用户提供一个方便、高效、安全的工作环境。

本实验的目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握操作系统的常用命令和操作方法,提高解决实际问题的能力。

二、实验环境操作系统:Windows 10开发工具:Visual Studio Code三、实验内容1、进程管理观察进程的创建、终止和状态转换。

使用任务管理器查看系统中的进程信息,包括进程 ID、CPU 使用率、内存占用等。

通过编程实现创建和终止进程的功能。

2、内存管理了解内存的分配和回收机制。

使用 Windows 系统提供的性能监视器查看内存的使用情况。

编程实现简单的内存分配和释放算法。

3、文件系统管理熟悉文件和目录的操作,如创建、删除、复制、移动等。

研究文件的属性,如文件名、文件大小、创建时间等。

通过编程实现文件的读写操作。

4、设备管理认识设备的驱动程序和设备管理策略。

查看系统中的设备信息,如磁盘驱动器、打印机等。

模拟设备的中断处理过程。

四、实验步骤1、进程管理实验打开任务管理器,观察当前系统中正在运行的进程。

可以看到进程的名称、进程 ID、CPU 使用率、内存占用等信息。

使用 C++语言编写一个简单的程序,创建一个新的进程。

在程序中,使用`CreateProcess`函数来创建新进程,并设置进程的属性和参数。

编写另一个程序,用于终止指定的进程。

通过获取进程 ID,然后使用`TerminateProcess`函数来终止进程。

2、内存管理实验打开 Windows 性能监视器,选择“内存”选项卡,可以查看内存的使用情况,包括物理内存、虚拟内存、页面文件等的使用量和使用率。

编写一个 C 程序,使用动态内存分配函数(如`malloc`和`free`)来分配和释放内存。

在程序中,不断分配和释放一定大小的内存块,观察内存的使用情况和性能变化。

高级操作系统实验报告课程设计(doc 30页)

在设计过程中,查询了不少相关资料,不断的发现问题、提出问题、解决问题。在对自己所编写的源程序段的纠错的过程中,使我更好的理解了操作系统中文件系统的理论知识,同时在编程时用到了模块化的设计思想,这种编程方法可以使我们的编程变的更简单,可以使我们的查错与纠错变的更方便。总的来说通过这次的设计的学习使我学到了很多在平时的学习中学不到的很多东西,通过这次课程设计,使我对操作系统和编程产生兴趣,我想我会在这条路上继续前进下去。我相信,只要不断的严格要求自己,注意培养自己的思维能力,就一定会有更大更辉煌的发展和提高。
高级操作系统实验报告课程设计(doc 30页)
高级操作系统实验报告
姓 名:
学 号:
专 业:
任 课 教 师:
2014年01月18
一、课程设计题目和目的1
二、课程设计要求1
三、程序设计思想1
四、文件系统的实现2
1.数据结构设计2
2.程序功能图3
3.实体关系图3
4.数据流图4
5.程序流程图5
(1).建立文件:create(文件名,记录长度)6
int length; //文件长度
intaddr; //物理块号
int state; //0-建立,1-建立
int readptr;
};
通过结构体,将文件名字、文件在磁盘的开始位置、文件长度、文件最大长度、文件类型、创建时间结合在一起。文件类型,本模拟程序使用txt类型。设置一个线性表来存储文件。
文件夹和文件的删除,文件夹下没有打开的文件或文件没有打开才能删除,否则删除失败,删除文件夹时利用了中序历遍来删除子树。
四、文计出如下数据结构:
1typedefstructuof//文件属性
{
char filename[14]; //文件名字

操作系统实验报告

操作系统实验报告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 进程管理- 我们能够成功创建和销毁进程,并按照设定的调度算法进行进程的切换。

- 进程间能够实现正确的互斥和同步操作,避免资源竞争和死锁等问题。

操作系统实验报告

操作系统实验报告在学习计算机科学的过程中,操作系统是必不可少的一门课程。

为了更好地理解操作系统的各种概念和运作原理,我们通常需要进行实验来加深对知识的理解。

本篇文章主要介绍一次操作系统实验的报告。

实验名称:进程管理与调度实验实验目的:1. 理解进程管理的基本概念和原理。

2. 学习进程调度的算法及其实现原理。

3. 掌握在操作系统中实现进程管理与调度的方法。

实验环境:本次实验的环境为在Ubuntu系统下使用C语言编程实现。

实验内容:1. 进程管理在本次实验中,我们主要针对进程的创建、撤销、休眠和唤醒等基本操作进行了学习。

其中,进程创建的过程包括了进程控制块的初始化、资源的分配和进程调度等。

进程的撤销则需要对进程控制块进行清除和释放资源的操作。

此外,进程休眠和唤醒还需要使用信号量等同步机制来实现。

2. 进程调度在操作系统中,为了保证多个进程之间的公平性和平等性,需要使用进程调度来进行资源的合理分配。

具体来说,本次实验中我们主要学习了轮询、优先级和反馈队列三种进程调度算法,并通过程序的实现,加深了对其原理的理解。

实验结果:经过本次实验,我们成功实现了进程管理和调度的程序,并且对于其中的原理和算法有了更深入的理解。

在实验过程中,我们还遇到了各种问题和挑战,例如进程控制块的设计、死锁的预防等,但是通过团队协作和不断探索,最终都克服了这些问题。

同时,还通过本次实验深刻领悟到了操作系统的重要性,以及对于计算机科学专业而言,在操作系统上的学习和掌握是必不可少的。

结语:操作系统实验是我们学习计算机科学的关键环节之一,它能够让我们更深入地理解操作系统的原理和关键概念。

通过本次实验,我们不仅学会了如何实现进程管理和调度,也学会了如何遇到问题时积极寻找解决方案。

相信这些经验和技能可以在我们未来的学习和工作中给予帮助和指引。

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

福建农林大学计算机与信息学院实验报告系:软件工程专业:软件工程年级:08姓名:高明明学号:081181045 实验室号____田313___ 计算机号实验时间:2010.11.10 教师签字:成绩:实验一Linux基本操作与编程一、实验目的和要求1) 熟悉Linux操作系统的环境和使用。

2)* 了解LINUX系统的安装过程。

(注:*表示可选择)3)熟悉Linux的进程机制。

4)熟悉LINUX环境编程。

二、实验内容和原理(1)完成红旗LINUX系统的登录,启动终端。

(2)创建一个新用户,名为dd1。

要求记录操作步骤。

(3)编写能输出“Hello world!”问候语的C程序,并在终端中编译、执行。

要求记录所使用的命令及结果。

(4)编写一个程序:显示信息“Time for Play!”,并能在后台运行一段时间(自定义)后,弹出信息提醒用户。

要求记录所使用的命令及结果。

(5)进程的创建:编制一段程序,使用系统调用fork( )创建两个子进程,这样在此程序运行时,在系统中就有一个父进程和两个自进程在活动。

让每一个进程在屏幕上显示一个字符:父进程显示字符a,子进程分别显示字符 b和字符c。

试观察、记录并分析屏幕上,进程调度的情况。

系统调用函数说明:fork()函数,创建一个新进程,会返回两个值。

可以通过检查‘fork()’函数的返回值知道哪个是父进程,哪个是子进程。

父进程得到的返回值是子进程的进程号(>0),而子进程则返回0。

如果调用失败,则返回-1三、实验环境(1)硬件:PC机(2)软件:linux 操作系统、虚拟机四、实验步骤(1)首先在虚拟机上安装LINUX操作系统,然后完成红旗LINUX系统的登录,并启动终端。

(2)在开始菜单的系统设置里的用户和组群创建一个新用户,名为dd1。

(3)在文本编辑器里编写能输出“Hello world!”问候语的C程序,并在终端中编译、执行。

操作步骤:1)在文本编辑器中,编写C程序a.c如下:#include "stdio.h"main(){ printf("hello"); }2) 在终端中,用gcc命令进行编译,生成可执行文件a。

gcc a.c –o a3) 在终端中执行a 的命令如下:./a(4)编写一个程序:显示信息“Time for Play!”,1)在文本编辑器中,编写C程序h.c如下:#include "stdio.h"main(){sleep(60);printf("Time for Play!\n");}(5)进程的创建:编制一段程序,使用系统调用fork( )创建两个子进程,这样在此程序运行时,在系统中就有一个父进程和两个自进程在活动。

让每一个进程在屏幕上显示一个字符:父进程显示字符a,子进程分别显示字符b和字符c。

试观察、记录并分析屏幕上,进程调度的情况。

系统调用函数说明:fork()函数,创建一个新进程,会返回两个值。

可以通过检查…fork()‟函数的返回值知道哪个是父进程,哪个是子进程。

父进程得到的返回值是子进程的进程号(>0),而子进程则返回0。

如果调用失败,则返回-11)在文本编辑器中,编写C程序fork.c如下:#include <stdio.h>main(){ int p1,p2;while((p1=fork())= =-1);if(p1= =0)putchar( 'b');else{ while((p2=fork())= =-1);if(p2= =0)putchar('c');elseputchar('a');} }五、调试过程在终端中,用gcc命令进行编译时发现gcc命令不可以用,经调试发现原来是没有安装gcc相应的配置,在输入gcc a.c –o a命令时发现无法调试,经查明是没有到根目录下运行,后来先把终端目录转到a.c的父目录下,然后再运行该命令。

六、实验结果分析(2)的运行结果如下所示:(3)的运行结果如下所示:(4)的运行结果如下所示:(5)的运行结果如下所示:七、总结通过本次实验,对LINUX操作系统的基本操作和基础有了一个比较概要的认识。

中途一些操作不熟悉,但是同学讨论一下然后进行改正终于完成。

福建农林大学计算机与信息学院实验报告系:软件工程系专业:软件工程年级:08姓名:高明明学号:081181045 实验室号___田313____ 计算机号实验时间:2010.11.17 教师签字:成绩:实验二作业调度算法模拟一、实验目的和要求1)掌握作业调度的主要功能及算法。

2)通过模拟作业调度算法的设计加深对作业管理基本原理的理解。

二、实验内容和原理1)编写程序p.c,其功能是从键盘输入两个实数,输出这两个实数的平方和,生成可执行文件为pow。

记录编译的命令和结果。

2)作业调度算法(FCFS)编程模拟:编制一段程序,用下面定义的结构类型来表示作业的一些信息,对所输入的若干作业,要求输入作业的作业号、开始时间、运行时间,按FCFS算法模拟调度,显示出其调用的次序及其作业完成时间、周转时间,观察、记录并分析调度的输出结果情况。

struct Job_type{int no; //作业号int atime; //作业到达时间(分)int runtime; //运行时间(分)};3)作业调度算法(SJF)编程模拟:编程实现由短作业优先算法对模拟作业的调度,并观察分析运行结果。

三、实验环境(1)硬件:PC机(2)软件:linux 操作系统、虚拟机四、实验步骤(1)在记事本编写p.c程序然后在终端运行,从键盘输入两个实数,结果输出这两个实数的平方和。

程序如下:#include "math.h"main(){float x,y;scanf("%f,%f",&x,&y);printf("%6.3f",x*x+y*y);}(2)作业调度算法(FCFS)编程模拟:编写如下程序,在终端运行并输出结果。

#include <iostream.h>#include<stdio.h>#define n 20typedef struct{int id; //进程名int atime; //进程到达时间int runtime; //进程运行时间}fcs;void main(){int amount,i,j,diao,huan;fcs f[n];printf("input a number: ");scanf("%d",&amount);for(i=0;i<amount;i++){printf("请输入进程名,进程到达时间,进程运行时间: "); scanf("%d",&f[i].id);scanf("%d",&f[i].atime);scanf("%d",&f[i].runtime);}for(i=0;i<amount;i++) //按进程到达时间的先后排序 { //如果两个进程同时到达,按在屏幕先输入的先运行 for(j=0;j<amount-i-1;j++){if(f[j].atime>f[j+1].atime){diao=f[j].atime;f[j].atime=f[j+1].atime;f[j+1].atime=diao;huan=f[j].id;f[j].id=f[j+1].id;f[j+1].id=huan;}}}for(i=0;i<amount;i++){printf("进程:%d",f[i].id);printf("从%d",f[i].atime);printf("开始,在:%d",f[i].atime+f[i].runtime);printf("之前结束\n");f[i+1].atime=f[i].atime+f[i].runtime;}}(3)作业调度算法(SJF)编程模拟:编写如下程序,在终端运行并输出结果。

job.c#include <iostream.h>#include<stdio.h>#define n 20typedef struct{int id; //进程名int atime; //进程到达时间int runtime; //进程运行时间}fcs;void main(){int amount,i,j,diao,huan;fcs f[n];printf("input a number: ");scanf("%d",&amount);for(i=0;i<amount;i++){printf("请输入进程名,进程到达时间,进程运行时间: "); scanf("%d",&f[i].id);scanf("%d",&f[i].atime);scanf("%d",&f[i].runtime);}for(i=0;i<amount;i++) //按进程到达时间的先后排序{ //如果两个进程同时到达,按在屏幕先输入的先运行for(j=0;j<amount-i-1;j++){if(f[j].atime>f[j+1].atime){diao=f[j].atime;f[j].atime=f[j+1].atime;f[j+1].atime=diao;huan=f[j].id;f[j].id=f[j+1].id;f[j+1].id=huan;}}}for(i=0;i<amount;i++){printf("进程:%d",f[i].id);printf("从%d",f[i].atime);printf("开始,在:%d",f[i].atime+f[i].runtime);printf("之前结束\n");f[i+1].atime=f[i].atime+f[i].runtime;}}五、调试过程调试过程并无出错。

六、实验结果分析(1)、实验结果(2)、实验结果(3)、实验结果结果分析:先来先服务调度算法可用于作于调度也可用于进程调度。

相关文档
最新文档