广工_操作系统_实验报告

合集下载

操作系统实验实验报告

操作系统实验实验报告

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

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

二、实验环境本次实验使用的操作系统为 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、父进程向管道写入数据,子进程从管道读取数据并进行处理。

四、实验结果及分析(一)进程创建实验结果成功创建了新的进程,并能够获取到其退出代码。

通过观察进程的创建和执行过程,加深了对进程概念的理解。

(二)进程同步实验结果通过使用信号量,生产者和消费者进程能够正确地进行同步,避免了缓冲区的溢出和数据的丢失。

分析结果表明,信号量机制有效地解决了进程之间的资源竞争和协调问题。

(三)进程通信实验结果通过管道实现了父进程和子进程之间的数据通信。

数据能够准确地在进程之间传递,验证了管道通信的有效性。

五、遇到的问题及解决方法(一)在进程创建实验中,遇到了参数设置不正确导致进程创建失败的问题。

通过仔细查阅文档和调试,最终正确设置了参数,成功创建了进程。

(二)在进程同步实验中,出现了信号量使用不当导致死锁的情况。

《操作系统》实验报告

《操作系统》实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

操作系统课程设计实验报告

操作系统课程设计实验报告

操作系统课程设计实验报告操作系统课程设计实验报告引言:操作系统是计算机科学中的重要课程,通过实验设计,可以帮助学生更好地理解操作系统的原理和实践。

本文将结合我们在操作系统课程设计实验中的经验,探讨实验设计的目的、实验过程和实验结果,以及对操作系统的理解和应用。

一、实验设计目的操作系统课程设计实验的目的是帮助学生深入理解操作系统的工作原理和实际应用。

通过设计和实现一个简单的操作系统,学生可以更好地掌握操作系统的各个组成部分,如进程管理、内存管理、文件系统等。

同时,实验设计还可以培养学生的动手能力和问题解决能力,提高他们对计算机系统的整体把握能力。

二、实验过程1. 实验准备在进行操作系统课程设计实验之前,我们需要对操作系统的基本概念和原理进行学习和理解。

同时,还需要掌握一些编程语言和工具,如C语言、汇编语言和调试工具等。

这些准备工作可以帮助我们更好地进行实验设计和实现。

2. 实验设计根据实验要求和目标,我们设计了一个简单的操作系统实验项目。

该项目包括进程管理、内存管理和文件系统三个主要模块。

在进程管理模块中,我们设计了进程创建、调度和终止等功能;在内存管理模块中,我们设计了内存分配和回收等功能;在文件系统模块中,我们设计了文件的创建、读写和删除等功能。

通过这些模块的设计和实现,我们可以全面了解操作系统的各个方面。

3. 实验实现在进行实验实现时,我们采用了分阶段的方法。

首先,我们实现了进程管理模块。

通过编写相应的代码和进行调试,我们成功地实现了进程的创建、调度和终止等功能。

接下来,我们实现了内存管理模块。

通过分配和回收内存空间,我们可以更好地管理系统的内存资源。

最后,我们实现了文件系统模块。

通过设计文件的读写和删除等功能,我们可以更好地管理系统中的文件资源。

三、实验结果通过实验设计和实现,我们获得了一些有意义的结果。

首先,我们成功地实现了一个简单的操作系统,具备了进程管理、内存管理和文件系统等基本功能。

操作系统 实验报告

操作系统 实验报告

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

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

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

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

具体来说,我们的实验目标包括: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”。

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

操作系统课程实验报告

操作系统课程实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

操作系统实验报告学院_____计算机学院_______ 专业______软件工程________ 班级______ ________ 学号_____ _______ 姓名_______ _________ 指导教师(2010年10 月)学号:姓名:协作者:________实验__一__题目__ 进程调度___第周星期___一、实验目的用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。

二、实验内容和要求编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行调度。

·每个进程有一个进程控制块(PCB)表示。

进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行的时间、已用CPU时间、进程状态等。

·进程的优先数以及需要的运行时间事先由人为指定(也可以随机数产生)。

·如果运行一个时间片后进程的已占用CPU时间已达到所需要的运行时间,则撤销该进程,如果还未达到,则把它送回队尾。

三、实验主要仪器设备和材料实验环境硬件环境:IBM-PC 或兼容机软件环境:C语言编程环境四、实验原理及设计方案1、实验原理将程序顺序的输入进程队列后,开始执行程序,当运行了一个时间片后,如果进程所占的CPU时间达到所需的运行时间时,该进程完成,并撤销该进程,否则则把进程送回队尾。

2、设计方案用一个进程控制块(PCB)表示进程。

输入进程名称,优先级,运行时间后,通过模拟系统对进程采用“轮转法”调度,得到各个时间片进程的运行情况。

3、相关数据结构的说明struct pcb // 定义进程控制块 PCB{char name[10]; // 进程名称char state; // 进程当前状态int super; // 进程优先级int ntime; // 进程运行所需时间int rtime; // 进程已运行时间struct pcb* link; // 连接到队列中下一个进程的指针}4、程序流程图(详细)5、给出程序中源程序名和可执行程序名。

源程序名:pcb.cpp可执行程序名:pcb.exe输入数据:in.txt输出数据:out.txt6、程序清单(源程序中要附有详细的注释)#include <stdio.h>#define getpch(type) (type*)malloc(sizeof(type))struct pcb // 定义进程控制块PCB{char name[10]; // 进程名称char state; // 进程当前状态int super; // 进程优先级int ntime; // 进程运行所需时间int rtime; // 进程已运行时间struct pcb* link;}*ready,*p,*rear;typedef struct pcb PCB;void push() // 建立将进程按FCFS 排入队列的函数{rear->link = p;rear = p;p->link = NULL;p->state = 'w'; // 插入队尾后把状态改成'w'}void input() // 建立进程控制块函数{int i,num;printf(" 请输入进程数量");scanf("%d",&num);p=getpch(PCB); // 给p 分配空间for( i=0; i< num; i++){printf("\n 进程号No.%d ",i);p = getpch(PCB);printf(" 输入进程名:");scanf("%s",p->name);printf(" 输入进程优先等级:");scanf("%d",&p->super);printf(" 输入进程所需运行时间:");scanf("%d",&p->ntime);p->rtime = 0; // 为进程的已运行时间初始化为0p->state = 'w'; // 为进程的状态初始化为'w'p->link = NULL;push();}}void disp(PCB* pr) // 建立进程显示函数{printf("\n qname\tstate\tsuper\tndtime\truntime \n");printf("| %s\t",pr->name);printf("|%c\t",pr->state);printf("|%d\t",pr->super);printf("|%d\t",pr->ntime);printf("|%d\t",pr->rtime);printf("\n");}void check() // 建立进程查看函数{system("cls");PCB *pr;pr=ready->link;while(pr!=NULL) // 队列从头到尾显示进程{disp(pr);pr = pr->link;}}void destroy() // 建立进程撤消函数{disp(p);printf("\n 进程[%s] 已完成。

\n",p->name);free(p); // 释放p}void running() // 建立进程就绪函数{p->rtime++; // 已运行时间增加if(p->rtime == p->ntime) // 当已运行时间等于所需运行时间时{p->state = 'f'; // 状态更新为'f'ready->link = p->link;destroy(); // 调用destory()函数,释放pp = ready->link;system("pause"); // 暂停,可了解当前状态}else // 如果进程还没达到所需运行时间,则把进程送入队尾{ready->link = p->link;push();p = ready->link;}}int main() // 主函数{int t=0; // 定义t表示已用的时间片rear = getpch(PCB); // 为rear分配内存ready = rear; // 把ready指向rearinput(); // 输入进程p = ready->link;check();while(ready->link) // 当进程队列中还有进程时运行{t++;p->state = 'r'; // 将进程状态设置为readycheck();printf("第%d个时间片:",t);printf("正在运行\n");system("pause"); // 显示正在运行的进程队列running();check();printf("第%d个时间片:",t);printf("运行完成\n");system("pause"); // 显示运行完成后的进程队列}printf("\n全部进程已运行完成!\n");system("pause");return 0;}五、实验结果及分析1、运行结果(要求截图)(能动态说明执行结果)(要求截图尺寸大小适中)(1)输入数据(2)开始运行,进程队列如图(3)经过3个时间片,进程【333】完成(4)经过9个时间片,进程【555】完成(5)经过10个时间片,进程【111】完成(6)经过12个时间片,进程【444】完成(7)经过13个时间片,进程【222】完成(8)全部进程运行完成2、实验结果的分析及说明程序输出与编写程序的目的一致,直观的反应了轮转法进程调度的运行规则,显示了完成各个进程运行所需要的时间,以及各个进程完成的顺序。

六、调试总结及心得体会(调试过程中小结、所遇问题及解决方法、心得体会)整个调试过程中并未遇到太大的问题,程序编写过程也很顺利,运行程序模拟进程调度之后,更直观的了解了轮转法进程调度的过程。

七、思考题1、分析不同调度算法的调度策略,比较不同调度算法的优缺点,总结它们的适用范围。

答:动态有限权算法:动态优先权是指在创建进程时所创建的优先权,会随进程的推进或者等待时间的增加而改变,以便获得更好的调度性能。

处理机为每个进程分配一定的时间片,在就绪队列中,优先权高的进程将优先获得处理机,进程在进去运行完响应的时间片后,如没完成,优先权减1,从新回到就绪队列等待分配处理机。

时间片的轮转法:系统将所有进程排成一个队列,按照先来先服务的原则,对队列首的进程进行处理,每个进程在用完自己的时间片后,从新回到队尾进行排队。

每运行一次,进程的需要时间减1,直到就绪队列为空!学号:姓名:协作者:________实验__二__题目__ 作业调度___第周星期___一、实验目的本实验要求学生模拟作业调度的实现,用高级语言编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。

二、实验内容和要求作业调度算法:采用基于先来先服务的调度算法。

可以参考课本中的方法进行设计。

对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。

三、实验主要仪器设备和材料硬件环境:IBM-PC或兼容机软件环境:C语言编程环境四、实验原理及设计方案1、实验原理采用多道程序设计方法的操作系统,在系统中要经常保留多个运行的作业,以提高系统效率。

作业调度从系统已接纳的暂存在输入井中的一批作业中挑选出若干个可运行的作业,并为这些被选中的作业分配所需的系统资源。

对被选中运行的作业必须按照它们各自的作业说明书规定的步骤进行控制。

2、设计方案(1)作业调度程序负责从输入井选择若干个作业进入主存,为它们分配必要的资源,当它们能够被进程调度选中时,就可占用处理器运行。

作业调度选择一个作业的必要条件是系统中现有的尚未分配的资源可满足该作业的资源要求。

但有时系统中现有的尚未分配的资源既可满足某个作业的要求也可满足其它一些作业的要求,那么,作业调度必须按一定的算法在这些作业中作出选择。

相关文档
最新文档