2014级本科《操作系统》实验1报告-1143730212+郭阳
操作系统基础实验,实验一和实验二实验报告
2.掌握Windows XP的管理程序。
文件和磁盘管理:
1.掌握“Windows资源管理器”和“我的电脑”的使用。
2.掌握文件和文件夹的常用操作。
3.掌握磁盘管理的方法。
文档的基本操作和排版:
1.掌握Word文档的建立、保存于打开。
2.掌握新建、样式和格式等任务窗格的使用。
(1)启动“画图”程序,然后打开“windows任务管理器”窗口,记录系统当前进程数和“画图”的线程数。
(2)通过“windows任务管理器”终止“画图”程序的运行。
5.在桌面上建立快捷方式和其他对象。
(1)为“控制面板”中的“系统”建立快捷方式。
(2)为“windows资源管理器”建立一个名为“资源管理器”的快捷方式。
(3)为documents and settings文件夹创建快捷方式。
(4)为windows XP主目录中的文件coffee bean .bmp创建快捷方式。
(5)简历名称为myfile.txt的文本文件和名称为“我的数据”的文件夹。
6.“回收站”的使用和设置。
(1)删除桌面上已经建立的“资源管理器”快捷方式和“系统”快捷方式。
山西财经大学《大学计算机基础》实验报告
2014年12月8日
实验题目
操作系统基础实验,实验一实验二
选课课号
(2014-2015-1)-N0810010S0-08019-5
学院
财政金融学院
班级
金融工程1班
姓名
张思静
学号
201404040102
理论课教师
尹耀兰
上机指导教师
尹耀兰
实验目的及要求:
Windows XP的基本操作和程序管理:
《操作系统》实验报告
《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。
二、实验环境本次实验在以下环境中进行:操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、进程管理实验进程是操作系统中最基本的执行单元。
在这个实验中,我们使用C++编写程序来创建和管理进程。
通过观察进程的创建、执行和结束过程,理解进程的状态转换和资源分配。
首先,我们编写了一个简单的程序,创建了多个子进程,并通过进程标识符(PID)来跟踪它们的运行状态。
然后,使用等待函数来等待子进程的结束,并获取其返回值。
在实验过程中,我们发现进程的创建和销毁需要消耗一定的系统资源,而且进程之间的同步和通信需要谨慎处理,以避免出现死锁和竞争条件等问题。
2、内存管理实验内存管理是操作系统的核心功能之一,它直接影响系统的性能和稳定性。
在这个实验中,我们研究了动态内存分配和释放的机制。
使用 C++中的 new 和 delete 操作符来分配和释放内存。
通过观察内存使用情况和内存泄漏检测工具,了解了内存分配的效率和可能出现的内存泄漏问题。
同时,我们还探讨了内存分页和分段的概念,以及虚拟内存的工作原理。
通过模拟内存访问过程,理解了页表的作用和地址转换的过程。
3、文件系统实验文件系统是操作系统用于管理文件和目录的机制。
在这个实验中,我们对文件的创建、读写和删除进行了操作。
使用 C++的文件流操作来实现对文件的读写。
通过创建不同类型的文件(文本文件和二进制文件),并对其进行读写操作,熟悉了文件的打开模式和读写方式。
此外,还研究了文件的权限设置和目录的管理,了解了如何保护文件的安全性和组织文件的结构。
4、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。
2014操作系统实验报告材料
本科实验报告课程名称:操作系统实验项目:操作系统实验实验地点:博学楼大机房专业班级:学号:201200学生姓名:指导教师:方昀2014年11月08日实验一几种操作系统的界面一、目的和要求(一)目的本实验的目的是使学生熟悉1—2种操作系统的界面,在熟练使用机器的基础上,能了解各种操作命令和系统调用在系统中的大致工作过程。
也就是通过操作系统的外部特征,逐步深入到操作系统的内部实质内容中去。
(二)要求1.能熟练的在1—2种操作系统的环境下工作,学会使用各种命令,熟悉系统提供的各种功能,主动而有效地使用计算机。
2.熟悉系统实用程序的调用方法和各种系统调用模块的功能和作用二、内容在某种操作系统的环境下建立、修改、运行、打印源程序和结果,最后撤消一个完整的程序。
提示:可按下述步骤进行1.编写一个完整的源程序,通过编辑命令送入机器,建立源程序文件;2.编译该源文件,建立相应的目标文件;3.编译有错时,再用编辑命令修改源文件,消除全部词法和语法错误;4.连接目标文件,形成可执行文件;5.执行该文件,得到结果;6.打印输出源程序和运行结果;7.撤消本次实验中形成的所有文件。
三、小节通过本次的实验,我对操作系统的界面和操作系统对用户的接口有了更加全面的认识和理解,熟悉了操作系统界面的大致结构,并通过实际运行C程序对此实验加以更加全面的分析。
实验二进程调度程序设计一、目的和要求(一)目的进程是操作系统最重要的概念之一,进程调度是操作系统的主要内容,本实验要求学生独立地用高级语言编写一个进程调度程序,调度算法可任意选择或自行设计,本实验可使学生加深对进程调度和各种调度算法的理解。
(二)要求1.设计一个有几个进程并发执行的进程调度程序,每个进程由一个进程控制块(PCB)表示,进程控制块通常应包括下述信息:进程名,进程优先数,进程需要运行的时间,占用CPU的时间以及进程的状态等,且可按照调度算法的不同而增删。
2.调度程序应包含2—3种不同的调度算法,运行时可以任选一种,以利于各种方法的分析和比较。
操作系统 实验报告
操作系统实验报告操作系统实验报告引言:操作系统是计算机系统中最重要的软件之一,它负责管理计算机硬件资源,并提供程序运行环境。
操作系统的设计和实现是计算机科学领域的重要研究方向之一。
本篇实验报告将介绍我们在操作系统实验中所进行的实践和实验结果。
一、实验目的我们的实验目的是通过实践操作系统的基本功能,深入理解操作系统的原理和实现方式。
具体来说,我们的实验目标包括:1. 学习并掌握操作系统的基本概念和原理;2. 理解操作系统与硬件之间的交互过程;3. 实践操作系统的进程管理、内存管理和文件系统等功能;4. 分析操作系统的性能和优化策略。
二、实验环境我们使用了一台配置较高的计算机作为实验环境,该计算机配备了一块主频为2.5GHz的多核处理器、8GB内存和500GB硬盘。
我们选择了一款常见的操作系统作为实验平台,以便于进行实验和调试。
三、实验过程1. 进程管理在进程管理实验中,我们实现了进程的创建、调度和终止等功能。
首先,我们编写了一个简单的程序,用于创建多个进程并进行调度。
然后,我们通过观察进程的执行顺序和时间片分配情况,分析操作系统的调度算法对系统性能的影响。
2. 内存管理在内存管理实验中,我们实现了内存的分配和回收等功能。
我们编写了一个模拟程序,用于模拟内存的分配和释放过程。
通过观察内存分配的效率和内存碎片的情况,我们评估了不同的内存管理算法的性能。
3. 文件系统在文件系统实验中,我们实现了文件的创建、读写和删除等功能。
我们编写了一个简单的文件操作程序,用于测试文件系统的性能和可靠性。
通过观察文件系统的读写速度和文件恢复的效果,我们评估了不同的文件系统实现方式的优劣。
四、实验结果通过实验,我们获得了以下结果:1. 进程管理实验中,我们发现不同的调度算法对系统性能的影响差异较大。
短作业优先算法在短时间内能够提高系统的响应速度,而时间片轮转算法则能够保证公平性。
2. 内存管理实验中,我们发现不同的内存管理算法对内存利用率和碎片情况有很大的影响。
操作系统 实验报告
操作系统实验报告操作系统是计算机硬件和应用软件之间的一个重要桥梁,它提供了对硬件资源的管理和调度,为应用程序提供了一个运行环境。
在操作系统的发展历史中,经历了批处理系统、分时系统、网络操作系统等不同的阶段和发展方向。
本次实验主要涉及操作系统的进程管理、文件系统以及内存管理。
首先是进程管理,进程是计算机中最基本的执行单元,负责处理用户的请求并执行相应的操作。
在实验中,我们使用了进程调度算法来调度不同的进程。
进程调度算法的选择会直接影响到系统的性能和响应时间。
最常见的进程调度算法有FCFS(先到先服务)、SJF(短作业优先)、RR(时间片轮转)等。
本次实验中,我们实现了一个简单的RR调度算法,按照时间片的顺序轮流使用CPU资源。
实验结果显示,RR调度算法能够有效地保证多个进程同时运行且公平地使用CPU。
其次是文件系统,文件系统是操作系统中管理文件和文件夹的机制。
在实验中,我们使用了文件管理的一些基本操作如创建文件、打开文件、写入文件和关闭文件等。
在文件的操作过程中,通过文件指针来记录当前的读写位置以便于下一次读写。
实验结果显示,文件管理功能能够很好地实现对文件的读写和管理。
最后是内存管理,内存是计算机中存储数据和程序的地方,对于操作系统来说管理和分配内存是一个非常重要的任务。
在实验中,我们主要学习了内存的分区管理和分页管理。
内存的分区管理将内存划分为若干个大小不等的区域,每个程序占用相应的内存空间。
而内存的分页管理则将程序划分为固定大小的页,同时也将内存划分为页框,通过页表来进行地址映射。
实验结果显示,分页管理可以有效地利用内存资源,提高系统的性能和可用性。
通过本次操作系统实验,我对操作系统的原理和实践有了更深入的理解。
在实验中,我了解了进程管理、文件系统和内存管理的基本概念和功能,并通过实验来掌握相关的操作和原理。
通过实验的过程,我深刻地认识到操作系统对计算机的重要性,以及良好的操作系统设计对系统性能的影响。
操作系统实验报告
《操作系统》实验报告实验序号: 3 实验项目名称:Windows基本进程管理软金二班学号1207122219 姓名邝沃佳专业、班实验地点1-418 指导教师李远敏实验时间2014/11/17 一、实验目的及要求通过观察任务管理器,来观察各个进程的动态信息。
二、实验设备(环境)及要求(1)一台WindowsXP操作系统的计算机。
(2)计算机装有Microsoft Visual Studio C++6.0专业版或企业版。
三、实验内容与步骤1、预备知识·任务管理器,了解用户计算机上正在运行的程序和进程的相关信息。
·Windows环境中的编程。
1)线程创建Create Thread()完成线程的创建。
它在调用进程的地址空间上创建一个线程,执行指定的函数,并返回新建立线程的句柄。
原型:HANDLE CreateThead(LPSECURITY ATTRIBUTES lpThreadAttributes,//安全属性指针DWORDdwStackSize,//线程堆栈大小LPTHREAD STAPT ROUTINE lpStartAddress,//线程所要执行的函数LPVOID lpParameter,//线程对应函数要传递的参数DWORD dwCreationFlags,//线程创建后所处的状态LPDWORD lpThreadId,//线程标识符指针);参数说明:(1)lpThreadAttributes:为线程指定安全属性。
为NULL时,线程得到一个默认的安全描述符。
(2)dwStackSize;线程堆栈的大小。
其值为0时,其大小与调用该线程的线程堆栈大小相同。
(3)lpStartAddress:指定线程要执行的函数。
(4)lpParameter:函数中要传递的参数。
(5)dwCreationFlags:指定线程创建后所处的状态。
若为CREATE SUSPENDED,表示创建后处于挂起状态,用ResumeThread()激活后线程才可执行。
操作系统实验-2014(DOC)
许昌学院《操作系统》实验报告手册学号: 1101120207姓名:孙萍班级:计科2班成绩:2014年02月实验一 Linux操作系统的安装与配置实验时间:实验地点:计科楼107 成绩:【实验目的】1.了解Linux操作系统的发展历史,熟悉Linux发行版和Linux内核的区别。
2.了解Linux操作系统安装的软硬件条件,熟悉Linux系统的安装方法,特别是如何在虚拟机上安装、配置该操作系统。
3.了解在多操作系统环境下如何本地安装(光盘安装)Linux系统。
4.了解Linux操作系统的文件系统结构及其特点,熟悉Linux系统的登入和登出过程【实验内容】1、安装并配置vmware虚拟机,设置运行环境,特别要启动NAT和USB支持。
2、在vmware上安装Red Hat Linux 9.0,指定最大空间为20G以上(具体视硬盘剩余空间而定)。
当对虚拟磁盘空间分区时,需至少指定10G给“/”(主目录),分区格式为ext3,还需指定与内存容量相同的swap(交换)区。
3、安装完Red Hat Linux 9.0系统后,需配置硬件(如网卡、显卡等)和软件(如编程开发软件等)。
4、启动Linux系统和退出Linux系统【实验步骤和结果】1、启动VMware,建立Linux虚拟机,完成后的结果如下图所示。
2、在vmware上安装Red Hat Linux 9.0【实验总结和体会】通过安装虚拟机等操作让我认识到Linux这系统一些基本特点,有别于我们机器上使用的系统,发现原来通过虚拟机这个软件还可以在已有系统的基础上使用其他操作系统。
这有利于我们学习。
实验二 Linux操作系统的运行模式实验时间:实验地点:计科楼107 成绩:【实验目的】1.熟悉Linux系统终端工作环境的使用,了解Linux命令的格式,学会利用常用的Linux命令来完成系统的管理和维护。
2.了解X-Windows的特点,熟悉Linux图形用户接口的使用,掌握GNOME桌面环境的基本操作。
操作系统实验报告
性能测试和优化结果
测试环境: Windows 10
操作系统, Intel Core i7 处理器,8GB
内存
测试工具: Performance
Te s t Professional
(PTP)
测试指标:响 应时间、吞吐 量、资源利用
率等
优化方案:优 化内存管理、 优化文件系统、 优化网络协议
等
优化效果:响 应时间缩短、 吞吐量提高、 资源利用率降
单击此处添加副标题
操作系统实验报告
汇报人:
目 录 CATALOG
01
单击此处 添加目录标题
04
实验步骤
02
实验目的
05
实验结果
03
实验内容
06
实验总结
01
添加章节标题
02
实验目的
理解操作系统的基本概念和原理
操作系统的定义 和功能
操作系统的组成 和结构
操作系统的工作 原理和运行机制
操作系统的优缺 点和改进方向
对未来实验的展望
实验方法:模拟真实环境, 实际操作
实验结果:成功完成各项任务, 提高了操作系统理解和应用能
力
实验不足:部分任务存在困 难,需要进一步学习和实践
实验目的:提高操作系统理 解和应用能力
展望未来:继续深入学习操作 系统,提高实践能力,为未来
工作打下坚实基础
感谢您的观看
汇报人:
进程管理:包括进程创建、调度、终止 等操作
内存管理:包括内存分配、回收、共享 等操作
网络管理:包括网络连接、断开、传输 等操作
安全防护:包括防火墙、杀毒软件、安 全策略等操作
系统优化:包括系统清理、性能优化、 系统升级等操作
操作系统实验报告
操作系统实验报告实验目的本次实验的主要目的是通过自主设计和编写一个简单的操作系统内核,进一步加深对操作系统相关理论知识的理解和实践能力的锻炼。
同时,通过实际操作和调试,了解操作系统的基本功能和特性,提高对操作系统工作原理的深入认识。
实验环境在进行本次实验之前,我们需要先搭建实验环境。
以下是本次实验所需的环境配置: - 操作系统:Windows或Linux - 开发工具:gcc编译工具链、nasm汇编器、Bochs模拟器实验过程1.机器启动过程–计算机的启动过程主要包括电源启动、BIOS自检、加载操作系统等步骤。
–在本次实验中,我们需要自行编写一个简单的引导扇区程序,将其写入磁盘的MBR(Master Boot Record)位置,以完成系统的启动。
2.引导扇区编写与加载–引导扇区是计算机启动的关键部分,它的主要任务是加载操作系统的内核到内存中,并将控制权转交给内核。
–在本次实验中,我们可以使用汇编语言编写一个简单的引导扇区程序,并将其加载到MBR位置。
3.操作系统内核设计与实现–操作系统内核是整个操作系统的核心部分,它负责管理系统的资源和提供系统调度等功能。
–在本次实验中,我们可以设计和实现一个简单的操作系统内核,包括进程管理、内存管理、文件系统等功能。
4.系统调用设计与实现–系统调用是用户程序与操作系统之间的接口,用户程序通过系统调用请求操作系统提供的服务。
–在本次实验中,我们可以设计和实现一些基本的系统调用,如文件读写、进程创建等。
5.调试与测试–在进行操作系统开发的过程中,调试和测试是非常重要的环节。
–在本次实验中,我们可以使用Bochs模拟器来模拟运行我们编写的操作系统内核,并对其进行调试和测试。
实验结果与分析经过一段时间的编写和调试,我们成功地完成了一个简单的操作系统内核的设计和实现。
在实验过程中,我们深入理解了操作系统的工作原理和基本功能,提高了对操作系统相关知识的理解和应用能力。
同时,我们还进一步锻炼了编程和调试的实践能力。
《操作系统》课内实验报告
《操作系统》课内实验报告一、实验目的操作系统是计算机系统的核心组成部分,本次《操作系统》课内实验旨在通过实际操作和观察,深入理解操作系统的基本原理、功能和运行机制。
具体目的包括:1、熟悉操作系统的常用命令和操作,如文件管理、进程管理、内存管理等。
2、掌握操作系统的资源分配和调度策略,观察其对系统性能的影响。
3、培养解决操作系统相关问题的能力,提高动手实践和分析问题的能力。
二、实验环境本次实验在以下环境中进行:1、操作系统:Windows 10 专业版2、开发工具:Visual Studio Code三、实验内容及步骤(一)文件管理实验1、创建、删除和重命名文件及文件夹打开文件资源管理器,在指定目录下创建新的文件夹和文本文件。
对创建的文件和文件夹进行重命名操作,观察文件名的变化。
选择部分文件和文件夹进行删除操作,验证是否成功删除。
2、文件复制、移动和属性设置选取一些文件,将其复制到其他目录,并观察复制过程和结果。
把特定文件移动到不同的位置,检查文件是否正确迁移。
设置文件的属性,如只读、隐藏等,查看属性设置后的效果。
(二)进程管理实验1、查看系统进程打开任务管理器,观察当前正在运行的进程列表。
了解进程的名称、PID(进程标识符)、CPU 使用率、内存占用等信息。
2、进程的终止和优先级设置选择一个非关键进程,尝试终止其运行,观察系统的反应。
调整某些进程的优先级,观察其对系统资源分配和运行效率的影响。
(三)内存管理实验1、查看内存使用情况通过系统性能监视器,查看物理内存和虚拟内存的使用情况。
观察内存使用量随时间的变化趋势。
2、内存优化操作关闭一些不必要的后台程序,释放占用的内存资源。
调整虚拟内存的大小,观察对系统性能的改善效果。
四、实验结果与分析(一)文件管理实验结果1、成功创建、删除和重命名文件及文件夹,系统能够准确响应操作,文件名和文件夹名的修改即时生效。
2、文件的复制和移动操作顺利完成,数据无丢失和损坏。
操作系统实验报告
操作系统实验报告1. 实验目的本实验旨在通过设计和实现一个基本的多道批处理操作系统来加深对操作系统基本概念和原理的理解,并加强对操作系统进行实践的能力。
2. 实验环境本实验采用如下环境进行实验:•操作系统:Windows 10•编程语言:C3. 实验内容本实验实现了一个基本的多道批处理操作系统,主要包括以下内容:3.1 进程调度操作系统通过进程调度算法,根据进程的优先级和进程的执行状态来决定下一次运行的进程,从而合理利用和分配CPU资源。
本实验中我们采用了基本的抢占式调度算法,即优先级越高的进程将会获得更多的CPU时间。
3.2 进程管理操作系统管理着多个并发运行的进程,在系统的执行过程中需要对这些进程进行管理,如创建新进程、销毁进程、挂起进程等等。
本实验中我们实现了进程的创建和销毁功能,并可以通过调用相应系统调用来挂起和恢复进程。
3.3 内存管理操作系统需要管理系统中的内存空间,为各个进程分配所需的内存。
本实验中我们实现了基本的内存管理功能,可以为进程分配内存空间,并在进程结束时回收内存资源。
3.4 文件管理操作系统能够管理文件系统,在文件系统中进行文件的创建、读取、写入和删除等操作。
本实验中我们实现了文件管理功能,可以创建和删除文件,并实现了文件的读写操作。
4. 实验结论通过本次实验,我们深入学习了操作系统的基本原理和概念,并实践了设计和实现一个基本的多道批处理操作系统。
通过实验,我们掌握了进程调度、进程管理、内存管理和文件管理等基本功能的实现方法。
在实现的过程中,我们发现操作系统的设计与实现是非常复杂且需要考虑多种因素的。
通过本次实验,我们对操作系统的工作原理有了更加深入的理解,并提升了解决问题和编程能力。
5. 实验总结通过本次实验,我们进一步了解了操作系统的工作原理和基本功能,并通过设计和实现一个基本的多道批处理操作系统来加深对操作系统的理解。
在实验过程中,我们遇到了一些问题,如进程调度算法的选择、内存资源的分配等等。
《操作系统》综合实验报告格式
///选择就绪队列优先级最高的进程作为CPU运行进程
cpuProcess = readyQueuePop();
}else{
///就绪队列中没有进程Байду номын сангаас改为选择阻塞队列优先级最高的进程
cpuProcess = blockQueuePop();
}
cpuProcess->cpuTime = 0; ///设置当前运行进程占用CPU时间
cpuProcess->priority < readyMaxPriority()){
blockQueuePush(cpuProcess); ///需抢占CPU,当前执行的进程调入阻塞队列
cpuProcess = readyQueuePop(); ///从就绪队列中选择优先级最高的进程运行
}///end if
int blockTime; ///进程已阻塞时间
STATE state; ///进程状态
struct PCB_NODE *prev; ///PCB前指针
struct PCB_NODE *next; ///PCB后指针
};
typedef struct PCB_NODE PCB;
②模拟进程队列操作函数定义:
华北科技学院计算机学院综合性实验
实验报告
课程名称《操作系统》
实验学期2016至2017学年第一学期
学生所在系部计算机学院
年级2014专业班级物联
学生姓名学号20
任课教师闫文忠
实验成绩
计算机学院制
《操作系统》综合性实验报告
开课实验室:基础七2016年12月7日
实验题目
操作系统实验报告
操作系统实验报告一、实验目的本次操作系统实验的主要目的是深入了解操作系统的基本原理和功能,通过实际操作和观察,增强对进程管理、内存管理、文件系统等核心概念的理解和掌握。
同时,培养解决实际问题的能力,提高编程和调试技能,为今后学习和工作中更好地应用操作系统知识打下坚实的基础。
二、实验环境本次实验在_____操作系统环境下进行,使用的编程语言为_____,开发工具为_____。
三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新进程,并观察进程的创建过程和资源分配情况。
同时,实现进程的正常终止和异常终止,了解进程终止时的资源回收机制。
2、进程调度算法模拟模拟实现先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)等进程调度算法。
通过对不同调度算法的模拟,分析其性能特点,如平均周转时间、平均等待时间等。
(二)内存管理实验1、分区存储管理实现固定分区和动态分区存储管理方式,观察内存的分配和回收过程,分析不同分区策略下的内存利用率和碎片情况。
2、页面置换算法模拟模拟实现先进先出(FIFO)、最近最少使用(LRU)、最佳置换(OPT)等页面置换算法。
通过对不同页面置换算法的模拟,分析其对缺页率的影响。
(三)文件系统实验1、文件的创建、删除与读写通过编程实现文件的创建、删除操作,并对文件进行读写操作,观察文件系统的工作过程。
2、文件目录结构的实现实现简单的文件目录结构,如单级目录、两级目录和树形目录结构,了解文件目录的组织和管理方式。
四、实验步骤(一)进程管理实验1、进程创建与终止(1)使用系统提供的进程创建函数创建新进程,并在新进程中执行特定的任务。
(2)在父进程中等待子进程的结束,并获取子进程的返回状态。
(3)通过设置不同的条件,实现进程的正常终止和异常终止,并观察操作系统对终止进程的处理。
2、进程调度算法模拟(1)设计数据结构来表示进程的信息,如进程 ID、到达时间、服务时间等。
操作系统实验报告
操作系统实验报告一、实验目的本次操作系统实验的主要目的是通过实际操作和观察,深入理解操作系统的工作原理和关键机制,包括进程管理、内存管理、文件系统以及设备管理等方面。
同时,培养我们解决实际问题的能力,提高对操作系统相关知识的综合运用水平。
二、实验环境本次实验使用的操作系统为 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、目录操作实现对目录的创建、删除、遍历等操作。
研究目录结构和文件路径的表示方法。
操作系统实验报告
通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。
设计程序摹拟进程的轮转法调度过程。
假设初始状态为:有n 个进程处于就绪状态,有m 个进程处于阻塞状态。
采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t 个时间片系统释放资源,唤醒处于阻塞队列队首的进程。
程序要求如下:1) .输出系统中进程的调度次序;2) .计算CPU 利用率。
硬件环境:Ghost XP SP3 纯净版Y6.0 Pentium(R) Dual-Core CPU E6700 @3.20GHz 3.19 GHz, 1.96 GB 的内存物理地址扩展软件环境:Microsoft Windows XP , Visual Studio 2022#include <iostream>#include <algorithm>#include <queue>using namespace std;const int MaxNum = 100;struct Node{int index;int arriveTime;int rest;};bool NodeCmp(const Node& a,const Node& b){return a.arriveTime < b.arriveTime;}int n; //进程数int ArrivalTime[MaxNum];int ServiceTime[MaxNum];int PServiceTime[MaxNum];int FinishTime[MaxNum];int WholeTime[MaxNum];double WeightWholeTime[MaxNum];bool Finished[MaxNum];double AverageWT,AverageWWT;bool isEnterQue[MaxNum];int cntTimes[MaxNum];void init(){memset(PServiceTime,0,sizeof(PServiceTime));memset(Finished,0,sizeof(Finished));memset(FinishTime,0,sizeof(FinishTime));memset(WholeTime,0,sizeof(WholeTime));memset(WeightWholeTime,0,sizeof(WeightWholeTime)); }int sum(int array[],int n){int sum=0;int i;for(i=0;i<n;i++){sum += array[i];}return sum;}double sum(double array[],int n){double sum=0;int i;for(i=0;i<n;i++){sum += array[i];}return sum;}void print(){int i=0;cout<<"进程完成时间:";for(i=0;i<n;i++){cout<<FinishTime[i]<<' ' ;}cout<<endl;cout<<"周转时间:";for(i=0;i<n;i++){cout<<WholeTime[i]<<' ';}cout<<endl;cout<<"带权周转时间:";for(i=0;i<n;i++){printf("%.2f ",WeightWholeTime[i]);}cout<<endl;}void SearchToEnterQue(queue<Node>& que,Node* pArr,int maxArrivalTime) {int i;for(i=0;i<n;i++){if(pArr[i].arriveTime>maxArrivalTime)break ;if(isEnterQue[pArr[i].index]==false){que.push(pArr[i]);isEnterQue[pArr[i].index] = true;}}}void Work(int q){init();memset(isEnterQue,0,sizeof(isEnterQue));memset(cntTimes,0,sizeof(cntTimes));Node* pNodeArr = new Node[n];int i;for(i=0;i<n;i++){pNodeArr[i].index = i;pNodeArr[i].arriveTime = ArrivalTime[i];pNodeArr[i].rest = ServiceTime[i];}sort(pNodeArr,pNodeArr+n,NodeCmp);int totalTime = sum(ServiceTime,n);int time=pNodeArr[0].arriveTime;queue<Node> que;que.push(pNodeArr[0]);isEnterQue[pNodeArr[0].index]=true;Node cur;cout<<"================================================="<<endl;while(!que.empty()) {cur = que.front();que.pop();cntTimes[cur.index]++;if(cntTimes[cur.index]==1)printf("在%d时刻,进程%d开始执行。
操作系统实验报告.doc
操作系统实验报告操作系统实验报告1. 实验内容采用空闲区链,运用首次适应法管理内存。
2. 程序中使用的数据结构及其符号说明本程序使用双向链表对内存进行连接管理,用结构体来存储内存的相关信息。
当每次完成内存分配后,就对内存进行从小到大排列,并且合并相邻的内存空间。
当下一个作业装载入内存时,可直接从头开始寻找到合适的地址,这样可节省查找时间。
接到内存申请时,在空闲块表中找到一个不小于请求的最小空块进行分配为作业选择分区时总是寻找其大小最接近于作业所要求的存储区域。
特点是用最小空间满足要求。
符号列表如下l rt-----定义一个结构,用来存储内存信息。
l memory----结构名字,同上。
l startaddress具体某个内存起始地址。
l size---具体某个内存的大小。
l state具体某个内存的状态,若为-1则表示分配了,为0为空闲。
l * next---为结构指针,指向当前内存空间的下一个。
l * last---为结构指针,指向当前内存空间的前一个。
l *head----结构的头指针。
l *p,*q,*g都是内存结构体的指针。
l alloc()---对内存空间进行分配的函数。
接受一个INT型值。
并返回内存空间的相关信息,如状态等。
l setfree---释放内存空间的函数。
l sort----对内存大小进行排序的函数。
调用后内存将从小到大排列。
l print---打印内存的相关信息函数。
l type---判断是不是有任务执行,输入为n时结束任务。
3.程序流程图4.程序代码如下include include typedef struct rt // 链式结构{ int startaddress; int size; int state; struct rt * next; struct rt * last; }memory; memory *headNULL; int allocint applyarea //分配内存applyarea 为作业大小{ memory *p,*q,*g; int s; phead; forpp-next;pNULL;pp-next//寻找满足的内存区{ ifp-state0 p-size-applyarea; return p-startaddress-applyarea; } else { ifp-state0 sp-startaddress; gp; qp-next; pp-last; p-nextq; q-lastp; freeg; return s; } } } return -1; return 0; } int setfree//回收内存{ int start; int size; memory *p,*q; printf“请输入回收内存地址\n“; scanf“d“, printf“请输入回收内存大小\n“; scanf“d“, phead; //leftforpp-next;pNULL;pp-next // 在左边与空闲区相连{ ifp-state0 p-sizesize; return 0; } } phead; // right forpp-next;pNULL;pp-next//在右边与空闲区相连{ ifp-state0 return 0; } } phead; // after whilep-nextNULL// 没有与空闲区相连,将内存放到链表的后面{ pp-next; } qmemory *mallocsizeofmemory; q-startaddressstart; q-state0; q-lastp; q-nextNULL; p-nextq; return 0; } int sort// 排序链表{ memory * pNULL,*qNULL; int t; int s; phead; forpp-next;pNULL;pp-next { forqp-next;qNULL;qq-next { ifq-sizesize { tp-size; p-sizeq-size; q-sizet; sp-startaddress; p-startaddressq-startaddress; q-startaddresss; } } } return 0; } int print// 打印空闲区信息{ memory *p; phead; printf“ |....................................|\n“; printf“ 开始地址大小状态“; printf“ |....................................|\n“; forpp-next;pNULL;pp-next { printf“ 3d 3d 3d |\n“,p-startaddress,p-size,p-state;printf“...........|....................................|\n“; } return 0; } int main { memory *p,*q; int i; int applyarea,start; char type; int address0; headmemory *mallocsizeofmemory; head-startaddress-1; head-size-1; head-nextNULL; head-lastNULL; qhead; fori1;istartaddressaddress; p-state0; p-sizei*20; addressi*20; p-next NULL; p-lastNULL; q-nextp; p-lastq; qp; } print f“\n 现在有任务执行么y or n “; typegetchar; whiletype y { printf“第一次空闲内存如下\n“; sort; print; printf“输入作业大小“; scanf“d“, //输入作业大小startallocapplyarea;// 分配内存sort; print; printf“分配后,内存状态如下\n“; print; ifstart-1 printf“没有多余内存空间,请等待\n“; else { printf“作业起始地址是d\n“,start; printf“作业大小是d\n“,applyarea; setfree;//回收内存sort; print; } getchar; printf“\n 现在有任务执行么y or n “; typegetchar; } return 0; } 5.程序名g.exe” C\Documents and Settings\ccbitlx\My Documents\内存管理\内存管理\01.cpp” 程序初始状态现在有任务执行么y or n y 第一次空闲内存如下|....................................| 开始地址大小状态|........................ ............| 0 20 0 | ...........|....................................| 20 40 0 | ...........|....................................| 60 60 0 | ...........|....................................| 120 80 0 | ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 输入作业大小若输入20,程序输出如下|....................................| 开始地址大小状态............| 20 40 0 | ...........|....................................| 60 60 0 | ...........|....................................| 120 80 0 | ...........|....................................| 200 100 0| ...........|....................................| 分配后,内存状态如下|....................................| 开始地址大小状态............| 20 40 0 | ...........|....................................| 60 60 0 | ...........|....................................| 120 80 0 | ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 作业起始地址是0 作业大小是20 请输入回收内存地址若输入0,输入回收内存大小20,即回收开始分配的内存空间,程序输出如下|....................................| 开始地址大小状态............| 0 60 0 | ...........|....................................| 60 60 0 | ...........|....................................| 120 80 0 | ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 现在有任务执行么y or n 现在针对一连串输入,譬如针对分配60大小的内存空间,然后收回,程序全部输出如下现在有任务执行么y or n y 第一次空闲内存如下|....................................| 开始地址大小状态|........................ ............| 0 20 0 | ...........|....................................| 20 40 0 | ...........|....................................| 60 60 0| ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 输入作业大小60 |....................................| 开始地址大小状态|........................ ............| 120 0 0 | ...........|....................................| 0 20 0 | ...........|....................................| 20 40 0 | ...........|....................................| 120 80 0 | ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 分配后,内存状态如下|....................................| 开始地址大小状态|........................ ............| 120 0 0 | ...........|....................................| 0 20 0 | ...........|....................................| 20 40 0 | ...........|....................................| 120 80 0 | ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 作业起始地址是60 作业大小是60 请输入回收内存地址60 请输入回收内存大小60 |....................................| 开始地址大小状态|........................ ............| 0 20 0 | ...........|....................................| 20 40 0 | ...........|....................................| 60 60 0| ...........|....................................| 200 100 0 | ...........|....................................| 300 120 0 | ...........|....................................| 现在有任务执行么y or n 6.收获和体会及对该题解的改进意见这次实验中,有太多的指针,我总是因为指针错误指向,苦苦思索而不得其解,跟舍友的一些交流,启发了我,使我后来再做没有这么吃力.还有,在设计中,我还借鉴了舍友的一些思路,让我明白和合作的重要性.花了两个礼拜才做完,虽然说是慢了点,但总算还是完成了。
操作系统实验报告
操作系统实验报告
一、实验目的
1. 学习操作系统中进程管理的相关知识和技术,并掌握多进程并发执行的原理与方法;
2. 掌握多进程之间的同步与通信技术;
3. 进一步理解操作系统中进程的各个状态变化过程。
二、实验内容
1. 编写一个简单的多进程模拟系统,实现多个进程在同一时间并发执行;
2. 实现进程之间的同步,避免进程之间的竞态条件;
3. 实现进程之间的通信,可以通过管道等方式进行。
三、实验步骤
1. 设计进程模型,分析进程的状态转换图,确定各个状态的处理方式;
2. 编写进程控制块(PCB)类,定义进程的各种属性和处理方法;
3. 实现进程状态的转换和进程之间的同步机制;
4. 实现进程之间的通信的方式和机制;
5. 设计并执行多个进程并发执行的测试用例;
6. 分析测试结果并进行优化和改进。
四、实验结果
本次实验编写了一个简单的模拟多进程操作系统,实现了多个进程并发执行、进程之间的同步和通信等功能。
通过编写不同的测试用例对系统进行了测试,验证了系统的正确性和可靠性,测试结果证明了系统能够有效地解决进程之间的竞态条件问题,并实现良好的并发执行效果。
五、实验感想
本次实验让我更加深入地了解了操作系统中进程管理的相关知识和技术,学习了多进程并发执行的原理与方法,并掌握了进程之间的同步与通信技术。
通过实验,我进一步理解了操作系统中进程的各个状态变化过程,在实践中深入掌握了进程控制块的定义和处理方法,也收获了许多编程技巧和思维方式。
通过不断调试和改进进程模型,我不断提高了自己的实践能力和解决问题的能力。
总之,本次实验让我得到了很大的启示和帮助,增强了自己的实践经验和能力。
《操作系统》课程综合性的实验报告
《操作系统》课程综合性的实验报告一、实验目的操作系统是计算机系统中最为关键的软件之一,它负责管理计算机的硬件资源和软件资源,为用户和应用程序提供一个良好的运行环境。
本次《操作系统》课程综合性实验的目的在于通过实际操作和实践,深入理解操作系统的工作原理和主要功能,提高对操作系统的认识和应用能力。
二、实验环境本次实验使用的操作系统为Windows 10 和Linux(Ubuntu 2004),实验所使用的计算机配置为:Intel Core i7 处理器,16GB 内存,512GB 固态硬盘。
实验所需的软件工具包括:VMware Workstation 虚拟机软件、GCC 编译器、GDB 调试器等。
三、实验内容1、进程管理进程的创建和终止进程的并发执行和同步进程调度算法的实现和比较2、内存管理内存分配和回收算法虚拟内存的实现和管理3、文件系统文件的创建、读写和删除文件目录的操作和管理文件系统的性能优化4、设备管理设备驱动程序的编写和安装设备的分配和回收I/O 控制方式的实现和比较四、实验步骤1、进程管理实验使用 C 语言编写程序,实现进程的创建和终止功能。
通过 fork()系统调用创建子进程,并在子进程中执行特定的任务,然后使用exit()系统调用终止子进程。
利用信号量机制实现进程的同步。
创建两个进程,一个进程负责生产数据,另一个进程负责消费数据,通过信号量来控制生产和消费的同步。
实现先来先服务(FCFS)、短作业优先(SJF)和时间片轮转(RR)三种进程调度算法,并对不同算法的性能进行比较。
通过模拟多个进程的到达时间、服务时间等参数,计算每种算法下的平均周转时间和平均等待时间。
2、内存管理实验实现首次适应(First Fit)、最佳适应(Best Fit)和最坏适应(Worst Fit)三种内存分配算法。
编写程序模拟内存的分配和回收过程,观察不同算法在内存利用率和分配效率方面的表现。
利用分页机制实现虚拟内存。
操作系统第一次试验报告
甘肃政法学院本科生实验报告(一)姓名:***学院: ***学院专业: 信息管理与信息系统班级: **级***班实验课程名称:操作系统实验实验日期: 2014 年 10 月日指导教师及职称:**实验成绩:开课时间: 2014 - 2015 学年第一学期甘肃政法学院实验管理中心印制2、windows下DOS命令的练习:windows+R键输入CMD进入DOS窗口;3、你虚拟机中,进入系统工具,进入终端用户,进入了Linux的DOS命令窗口。
四、实验过程与分析1、V Mware10的安装和下载,步骤如下:(1)、直接去官网下载程序。
(2)、双击程序自动解压,解压完成后进入安装向导。
(3)、安装向导,点击下一步;(4)、选择设置类型,分典型、自定义2种;点击更新修改路径。
(5)、配置组件-改你的共享主机存储路径(最好和VM安装到同一目录下方便以后更新或者删除);点击更改修改保存路径。
(6)、点击下一步,设置好后点击继续,软件安装中,这个需要几分钟时间。
(7)、输入许可证秘钥:JV2XE-AY0D5-4Z1K9-NAAQH-XXXXX 点击输入,提示安装完成;并在桌面生成快捷方式。
点击运行:(8)、软件安装完成后的界面。
2、新建Linux虚拟机步骤如下:(9)、创建虚拟机MyLinux:运行VMware Workstation 10软件,单击“创建新的虚拟机”在弹出的“新建虚拟机向导”中,选择“自定义”,单击“下一步”3(10)、硬件兼容性选择“Workstation 10.0”,选择“下一步”1. 4(11)、选择“稍后安装操作系统”,“下一步”2. 5(12)、客户机操作系统选择“linux”,然后选择相应的版本号(13)、设置虚拟机名称和存放的位置(14)、根据实际情况,设置处理器数量、核心数量(15)、设置虚拟机的内存(16)创建网络类型(17)、选择I/O控制器类型(18)、选择磁盘类型(19)、创建新虚拟磁盘(20)、指定磁盘大小等3、L inux系统安装步骤如下:(1)、选择虚拟镜像文件:(2)、启动虚拟机:打开虚拟机电源,运行虚拟机(3)、选择skip,此步为是否检测linux系统,我们选择"skip",跳过检测。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.在目录linux-0.11\boot下,分别用命令as86 -0 -a -o bootsect.o bootsect.s
和ld86 -0 -s -o bootsect bootsect.o编译和链接bootsect.s,生成bootsect 文件;
3.用命令dd bs=1 if=bootsect of=Image skip=32去掉bootsect的文件头生成
Image文件,并复制Image到linux-0.11目录下;
4.运行run命令验证运行结果是否正确;
5.重新用make命令生成BootImage,结合提示信息和makefile文件修改build.c;
把build.c文件中的和system有关的代码全部注释掉。
重新写setup.s文件。
最后编译运行,得到如下结果。
其中在改写setup.s文件时,遇到两个小错误,一个是忘记标记程序入口了,还有一个是没有把setup的段地址写入es,因为在BIOS中断输出的时候要用到。
解决这两个问题,程序就能正常运行了。
6.验证:用make是否能成功生成BootImage。
最终运行结果:
问题回答:操作系统的引导程序都完成哪些功能?你知道几个操作系统引导程序?分别是什么?
有两个程序,引导(boot strapping,简称boot)和BIOS(基本输入输出程序)
在计算机开机时,boot被自动执行,指引CPU把操作系统从大容量存储器中传送到主存储器的易失区。
一旦操作系统放到了主存储器中,boot要求CPU执行一条转移指令,转到这个存储区域,在这个时候,操作系统接管并且开始控制整个机器的活动。
在操作系统变成可用之前,boot可以执行BIOS,完成基本的输入输出活动。
开机执行BIOS(基本输入输出系统)引导程序,这个过程叫做系统自检,标识和配置所有的即插即用设备,并配置DMA通道;完成加电自检,测试内存,端口,键盘,视频适配器,磁盘驱动器等基本设备,以及CD-ROM驱动器;对引导驱动器可引导分区定位:在CMOS(complementary metal oxide semiconductor,互补金属氧化物半导体)中,可以自行设置引导顺序,一般顺序是软驱,磁盘,光驱;加载主引导记录以及引导驱动器的分区表,执行主引导记录MBR,主引导记录在硬盘上找到可引导分。