操作系统实验报告哈工大
- 格式:doc
- 大小:13.72 MB
- 文档页数:35
操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。
本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。
二、实验环境本次实验使用的操作系统为 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、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。
向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的时间要比时间片大很多。
《操作系统》课内实验报告一、实验目的本次《操作系统》课内实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握常见操作系统命令的使用,提高对操作系统的实际应用能力和问题解决能力。
二、实验环境本次实验在计算机实验室进行,使用的操作系统为 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)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。
操作系统课程实验报告一、实验目的操作系统是计算机系统中最核心的软件之一,它负责管理计算机的硬件资源和软件资源,为用户提供一个方便、高效、安全的工作环境。
本实验的目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握操作系统的常用命令和操作方法,提高解决实际问题的能力。
二、实验环境操作系统: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进程的描述与控制Windows 2000编程(实验估计时间:100分钟)1.1 背景知识Windows 2000 可以识别的应用程序包括控制台应用程序、GUI应用程序和服务应用程序。
控制台应用程序可以创建GUI,GUI应用程序可以作为服务来运行,服务也可以向标准的输出流写入数据。
不同类型应用程序间的惟一重要区别是其启动方法。
Windows 2000是以NT技术构建的,它提供了创建控制台应用程序的能力,使用户可以利用标准的C++工具,如iostream库中的cout和cin对象,来创建小型应用程序。
当系统运行时,Windows 2000的服务通常要向系统用户提供所需功能。
服务应用程序类型需要ServiceMail()函数,由服务控制管理器(SCM)加以调用。
SCM是操作系统的集成部分,负责响应系统启动以开始服务、指导用户控制或从另一个服务中来的请求。
其本身负责使应用程序的行为像一个服务,通常,服务登录到特殊的LocalSystem账号下,此账号具有与开发人员创建的服务不同的权限。
当C++编译器创建可执行程序时,编译器将源代码编译成OBJ文件,然后将其与标准库相链接。
产生的EXE文件是装载器指令、机器指令和应用程序的数据的集合。
装载器指令告诉系统从哪里装载机器代码。
另一个装载器指令告诉系统从哪里开始执行进程的主线程。
在进行某些设置后,进入开发者提供的main()、Servicemain()或WinMain()函数的低级入口点。
机器代码中包括控制逻辑,它所做的事包括跳转到Windows API函数,进行计算或向磁盘写入数据等。
Windows允许开发人员将大型应用程序分为较小的、互相有关系的服务模块,即动态链接库(DLL)代码块,在其中包含应用程序所使用的机器代码和应用程序的数据。
操作系统实验报告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 进程管理- 我们能够成功创建和销毁进程,并按照设定的调度算法进行进程的切换。
- 进程间能够实现正确的互斥和同步操作,避免资源竞争和死锁等问题。
哈尔滨工业大学远程教育课程操作系统实验一(选做)主讲人:张英涛背景知识n计算机执行的任何程序都必须首先读入内存,CPU 通过内存来访问程序,而安装操作系统实际上是把存放在光盘上的操作系统执行代码存入硬盘的过程•从硬盘上加载程序到内存很方便•操作系统中的文件系统主要是靠硬盘提供物理支持n安装操作系统到硬盘,实际上有两方面的作用•在硬盘上建立文件系统•把操作系统的全部内容事先存放在硬盘上以备使用•当使用计算机时,从硬盘上加载操作系统到内存,然后将机器控制权转给操作系统内核来执行背景知识n在本实验中,通过Windows 2000 Professional 的安装,来了解Windows操作系统的安装及配置,包括安装前的准备工作、驱动程序的配置以及系统的设定等内容n Windows 2000一共有四个版本,即Professional、Server、Advanced Server和Datacenter Server,它们的差别在于功能以及支持CPU、RAM数量上的不同背景知识n由于用户计算机环境的不同,需要的安装方式和内容也会有所不同。
•升级安装:保存计算机的现有文件及设置,并将原Windows系统升级为Windows 2000 Professional•全新安装:有助于提升系统性能。
但不保存计算机中原有的文件及设置,机器中的所有应用程序都要重新安装•多重开机安装:使计算机拥有多种操作系统,每次开机时,可以选择所要启动的系统背景知识n多重开机安装•Windows 2000 Professional的多重开机安装支持下列操作系统:Windows NT 3.51/4.0、Windows 9x、Windows 3.x和MS-DOS•采用多重开机安装方式,首先需要进行硬盘分区,因为每个操作系统都要求安装在不同的分区•此外,还提高了对硬件的需求,因为安装多个操作系统的硬盘空间用量非常大•各个操作系统的安装次序也要注意,原则上次序是MS-DOS、Windows 3.x、Windows 9x优先安装,然后是Windows NT,再安装Windows 2000实验目的n通过对Windows 2000 Professional的安装操作,了解操作系统应用环境建立的初步过程n掌握对Windows操作系统的基本系统设置n了解Windows多操作系统安装的方法工具/准备工作n Windows 2000对系统的要求比较高•CPU:Pentium 166MHz以上•内存:32MB,建议64MB以上•磁盘空间(可用空间/总空间) :650MB/2GB,建议1.5GB/4GB•CD-ROM或DVD-ROM光驱•网卡和调制解调器•VGA显卡及显示器、键盘、鼠标实验内容与步骤n本实验以光盘启动为例n可以利用Windows 2000 Professional光盘来直接开机启动,开机后自动执行安装程序n安装过程可分为两个阶段•文字模式阶段:选择用来安装Windows 2000的硬盘。
《操作系统》课内实验报告一、实验目的操作系统是计算机系统的核心组成部分,本次《操作系统》课内实验旨在通过实际操作和观察,深入理解操作系统的基本原理、功能和运行机制。
具体目的包括:1、熟悉操作系统的常用命令和操作,如文件管理、进程管理、内存管理等。
2、掌握操作系统的资源分配和调度策略,观察其对系统性能的影响。
3、培养解决操作系统相关问题的能力,提高动手实践和分析问题的能力。
二、实验环境本次实验在以下环境中进行:1、操作系统:Windows 10 专业版2、开发工具:Visual Studio Code三、实验内容及步骤(一)文件管理实验1、创建、删除和重命名文件及文件夹打开文件资源管理器,在指定目录下创建新的文件夹和文本文件。
对创建的文件和文件夹进行重命名操作,观察文件名的变化。
选择部分文件和文件夹进行删除操作,验证是否成功删除。
2、文件复制、移动和属性设置选取一些文件,将其复制到其他目录,并观察复制过程和结果。
把特定文件移动到不同的位置,检查文件是否正确迁移。
设置文件的属性,如只读、隐藏等,查看属性设置后的效果。
(二)进程管理实验1、查看系统进程打开任务管理器,观察当前正在运行的进程列表。
了解进程的名称、PID(进程标识符)、CPU 使用率、内存占用等信息。
2、进程的终止和优先级设置选择一个非关键进程,尝试终止其运行,观察系统的反应。
调整某些进程的优先级,观察其对系统资源分配和运行效率的影响。
(三)内存管理实验1、查看内存使用情况通过系统性能监视器,查看物理内存和虚拟内存的使用情况。
观察内存使用量随时间的变化趋势。
2、内存优化操作关闭一些不必要的后台程序,释放占用的内存资源。
调整虚拟内存的大小,观察对系统性能的改善效果。
四、实验结果与分析(一)文件管理实验结果1、成功创建、删除和重命名文件及文件夹,系统能够准确响应操作,文件名和文件夹名的修改即时生效。
2、文件的复制和移动操作顺利完成,数据无丢失和损坏。
《操作系统》课程实验报告一、实验目的本次《操作系统》课程实验的主要目的是通过实际操作和观察,深入理解操作系统的工作原理、进程管理、内存管理、文件系统等核心概念,并掌握相关的操作技能和分析方法。
二、实验环境1、操作系统:Windows 10 专业版2、开发工具:Visual Studio Code3、编程语言:C/C++三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新进程,并观察进程的创建过程和资源分配情况。
同时,实现进程的正常终止和异常终止,并分析其对系统的影响。
2、进程同步与互斥使用信号量、互斥锁等机制实现进程之间的同步与互斥。
通过模拟多个进程对共享资源的访问,观察并解决可能出现的竞争条件和死锁问题。
(二)内存管理实验1、内存分配与回收实现不同的内存分配算法,如首次适应算法、最佳适应算法和最坏适应算法。
观察在不同的内存请求序列下,内存的分配和回收情况,并分析算法的性能和优缺点。
2、虚拟内存管理研究虚拟内存的工作原理,通过设置页面大小、页表结构等参数,观察页面的换入换出过程,以及对系统性能的影响。
(三)文件系统实验1、文件操作实现文件的创建、打开、读取、写入、关闭等基本操作。
观察文件在磁盘上的存储方式和文件系统的目录结构。
2、文件系统性能优化研究文件系统的缓存机制、磁盘调度算法等,通过对大量文件的读写操作,评估不同优化策略对文件系统性能的提升效果。
四、实验步骤(一)进程管理实验步骤1、进程创建与终止(1)使用 C/C++语言编写程序,调用系统函数创建新进程。
(2)在子进程中执行特定的任务,父进程等待子进程结束,并获取子进程的返回值。
(3)通过设置异常情况,模拟子进程的异常终止,观察父进程的处理方式。
2、进程同步与互斥(1)定义共享资源和相关的信号量或互斥锁。
(2)创建多个进程,模拟对共享资源的并发访问。
(3)在访问共享资源的关键代码段使用同步机制,确保进程之间的正确协作。
(4)观察并分析在不同的并发情况下,系统的运行结果和资源竞争情况。
操作系统课程实验报告操作系统课程实验报告一、引言操作系统是计算机系统中最基础的软件之一,扮演着管理计算机硬件和软件资源的重要角色。
为了更好地理解操作系统的工作原理和实践操作系统的相关技术,我们在本学期的操作系统课程中进行了一系列的实验。
二、实验一:进程管理在本实验中,我们学习了进程管理的基本概念和实现方法。
通过编写代码,我们实现了一个简单的进程管理系统。
在这个系统中,我们可以创建、销毁和调度进程,并且实现了进程间的通信和同步机制。
通过这个实验,我们深入了解了进程的创建、调度和通信机制,以及进程的状态转换和资源管理。
三、实验二:内存管理内存管理是操作系统中非常重要的一部分。
在这个实验中,我们学习了内存管理的基本原理和实现方法。
通过编写代码,我们实现了一个简单的内存管理系统。
在这个系统中,我们可以分配和释放内存块,并且实现了虚拟内存和页面置换算法。
通过这个实验,我们深入了解了内存的分配和释放机制,以及虚拟内存的概念和实现。
四、实验三:文件系统文件系统是计算机系统中用于管理和组织文件的一种机制。
在这个实验中,我们学习了文件系统的基本概念和实现方法。
通过编写代码,我们实现了一个简单的文件系统。
在这个系统中,我们可以创建、读取和写入文件,并且实现了文件的目录结构和权限控制。
通过这个实验,我们深入了解了文件的组织和管理机制,以及文件的访问和保护机制。
五、实验四:设备管理设备管理是操作系统中负责管理计算机硬件设备的一部分。
在这个实验中,我们学习了设备管理的基本原理和实现方法。
通过编写代码,我们实现了一个简单的设备管理系统。
在这个系统中,我们可以管理设备的分配和释放,并且实现了设备的互斥和同步机制。
通过这个实验,我们深入了解了设备的管理和调度机制,以及设备的并发和互斥机制。
六、实验总结通过这一系列的实验,我们对操作系统的工作原理和实践操作系统的相关技术有了更深入的了解。
我们学习了进程管理、内存管理、文件系统和设备管理的基本概念和实现方法,并且通过编写代码实现了简单的操作系统功能。
(5)重新编写一个setup.s,然后将其中的显示的信息改为:“Now we are in SETUP”。
再次编译,重新用make命令生成BootImage,结合提示信息和makefile文修改build.c,具体将setup.s改动如下:mov cx,#27mov bx,#0x0007 ! page 0, attribute 7 (normal)mov bp,#msg1mov ax,#0x1301 ! write string, move cursorint 0x10dieLoop:j dieLoopmsg1:.byte 13,10,13,10.ascii "Now we are in SETUP".byte 13,10,13,10将build.c改动如下:if(strcmp("none",argv[3]) == 0)//添加判断return 0;if ((id=open(argv[3],O_RDONLY,0))<0)die("Unable to open 'system'");// if (read(id,buf,GCC_HEADER) != GCC_HEADER)// die("Unable to read header of 'system'");// if (((long *) buf)[5] != 0)// die("Non-GCC header of 'system'");for (i=0 ; (c=read(id,buf,sizeof buf))>0 ; i+=c )if (write(1,buf,c)!=c)die("Write call failed");close(id);fprintf(stderr,"System is %d bytes.\n",i);if (i > SYS_SIZE*16)die("System is too big");return(0);(6)验证:用make是否能成功生成BootImage,运行run命令验证运行结果。
《操作系统》实验报告一、实验目的操作系统是计算机系统的核心组成部分,本次实验的主要目的是深入理解操作系统的工作原理和功能,通过实际操作和观察,掌握操作系统的进程管理、内存管理、文件系统管理等方面的知识和技能。
二、实验环境本次实验使用的操作系统为 Windows 10,开发工具为 Visual Studio 2019,编程语言为 C++。
三、实验内容及步骤1、进程管理实验(1)创建进程通过编程实现创建新的进程。
在代码中使用了 Windows API 函数CreateProcess 来创建一个新的进程。
首先,设置进程的启动信息,包括命令行参数、工作目录等。
然后,调用CreateProcess 函数创建进程,并检查返回值以确定创建是否成功。
(2)进程同步使用互斥量(Mutex)实现进程间的同步。
创建一个共享资源,多个进程尝试访问该资源。
通过互斥量来保证同一时间只有一个进程能够访问共享资源,避免了数据竞争和不一致的问题。
(3)进程通信采用管道(Pipe)进行进程间的通信。
创建一个匿名管道,一个进程作为发送端,向管道写入数据;另一个进程作为接收端,从管道读取数据。
通过这种方式实现了进程之间的数据交换。
2、内存管理实验(1)内存分配使用 Windows API 函数 VirtualAlloc 来分配内存。
指定分配的内存大小、访问权限等参数,并检查返回的内存指针是否有效。
(2)内存释放在不再需要使用分配的内存时,使用 VirtualFree 函数释放内存,以避免内存泄漏。
(3)内存保护设置内存的保护属性,如只读、读写等,以防止非法访问和修改。
3、文件系统管理实验(1)文件创建与写入使用 CreateFile 函数创建一个新文件,并通过 WriteFile 函数向文件中写入数据。
(2)文件读取使用 ReadFile 函数从文件中读取数据,并将读取的数据输出到控制台。
(3)文件属性操作获取文件的属性信息,如文件大小、创建时间、修改时间等,并进行相应的操作和显示。
操作系统实验报告哈尔滨工程大学计算机科学与技术学院第三讲进程的创建一、实验概述1. 实验名称进程的创建2. 实验目的✍✍练习使用EOS API函数CreateProcess创建一个进程,掌握创建进程的方法,理解进程和程序的区别。
✍✍调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。
3. 实验类型设计4. 实验内容4.1 准备实验按照下面的步骤准备本次实验:1. 启动OS Lab。
2. 新建一个EOS Kernel项目。
3. 分别使用Debug配置和Release配置生成此项目,从而在该项目文件夹中生成完全版本的EOS SDK文件夹。
4. 新建一个EOS应用程序项目。
5. 使用在第3步生成的SDK文件夹覆盖EOS应用程序项目文件夹中的SDK文件夹。
4.2 练习使用控制台命令创建EOS应用程序的进程练习使用控制台命令创建EOS应用程序进程的具体步骤如下:1. 在EOS应用程序项目的“项目管理器”窗口中双击Floppy.img文件,使用FloppyImageEditor工具打开此软盘镜像文件。
2. 将本实验文件夹中的Hello.exe文件拖动到FloppyImageEditor工具窗口的文件列表中释放,Hello.exe文件即被添加到软盘镜像文件中。
Hello.exe一个EOS应用程序,其源代码可以参见本实验文件夹中的Hello.c源文件。
3. 在FloppyImageEditor中选择“文件”菜单中的“保存”后关闭FloppyImageEditor。
4. 按F7生成EOS应用项目。
5. 按F5启动调试。
OS Lab会弹出一个调试异常对话框,并中断应用程序的执行。
6. 在调试异常对话框中选择“否”,忽略异常继续执行应用程序。
7. 激活虚拟机窗口,待该应用程序执行完毕后,在EOS的控制台中输入命令“A:\Hello.exe”后回车。
8. Hello.exe应用程序开始执行,观察其输出。
操作系统课程实验报告一、实验目的操作系统是计算机系统中最为关键的软件之一,它负责管理计算机的硬件资源和软件资源,为用户提供一个良好的工作环境。
通过操作系统课程实验,旨在深入理解操作系统的基本原理和功能,提高对操作系统的实际操作能力和问题解决能力。
二、实验环境本次实验使用的操作系统为Windows 10 和Linux(Ubuntu 1804),开发工具包括 Visual Studio Code、gcc 编译器等。
三、实验内容(一)进程管理1、进程创建与终止在 Windows 系统中,使用 C++语言创建多个进程,并通过进程句柄控制进程的终止。
在 Linux 系统中,使用 fork()系统调用创建子进程,并通过 exit()函数终止进程。
2、进程同步与互斥使用信号量实现进程之间的同步与互斥。
在 Windows 中,利用CreateSemaphore()和 WaitForSingleObject()等函数进行操作;在Linux 中,通过 sem_init()、sem_wait()和 sem_post()等函数实现。
(二)内存管理1、内存分配与释放在 Windows 中,使用 HeapAlloc()和 HeapFree()函数进行动态内存的分配与释放。
在 Linux 中,使用 malloc()和 free()函数完成相同的操作。
2、内存页面置换算法实现了几种常见的内存页面置换算法,如先进先出(FIFO)算法、最近最少使用(LRU)算法等,并比较它们的性能。
(三)文件系统管理1、文件创建与读写在 Windows 和 Linux 系统中,分别使用相应的 API 和系统调用创建文件,并进行读写操作。
2、目录操作实现了目录的创建、删除、遍历等功能。
四、实验步骤(一)进程管理实验1、进程创建与终止(1)在 Windows 系统中,编写 C++程序,使用 CreateProcess()函数创建新进程,并通过 TerminateProcess()函数终止指定进程。
计算机操作系统课程实验报告专业信息管理与信息系统班级 1203601学号 120360117姓名乐云指导教师周学权计算机操作系统课程实验报告专业信息管理与信息系统班级 1203601学号 120360114姓名郭鑫指导教师周学权操作系统实验实验1 使用虚拟机安装系统 4学时【实验目的】1.了解虚拟机软件的使用。
2.了解使用虚拟机安装Windows及Ubuntu操作系统。
【实验内容】1. 安装虚拟机软件VirtualBox。
2. 配置VirtualBox环境安装WindowsXP,并在虚拟机中启动windowsXP。
3. 配置VirtualBox环境安装Ubuntu 10.10,并在虚拟机中启动Ubuntu。
【实验环境】VirtualBox4.0Windows XPUbuntu 8.04【实验过程】一、创建虚拟机首先运行VirtualBox,单击左上角的“新建”。
单击下一步。
出现如下图的界面,在名称后输入自己起的名字,如test选择自己想要安装的系统类型和版本,本次试验是安装windows xp系统设置完成后,单击下一步。
接下来是设置虚拟机的内存大小,本次实验操作的计算机内存为4GB,所以我选择分配给我的虚拟机的内存为512MB,然后单击下一步。
接着创建虚拟硬盘,选择创建新的虚拟硬盘,单击下一步。
选择虚拟硬盘的类型,默认选择了VDI类型,单击下一步。
接下来选择为动态扩展类型,因为计算机的存储空间不大。
单击下一步。
动态扩展:如果你为你的虚拟磁盘分配的是10G空间,虚拟磁盘占用真实磁盘空间的范围就为0~10G。
固定大小:如果你为你的虚拟磁盘分配的是10G空间,虚拟磁盘占用真实磁盘空间永远不是10G,不管虚拟磁盘空间是否被全部使用。
选择虚拟机在本地磁盘中的位置和大小,单击下一步。
确认虚拟机的详细情况,点击下一步。
这时我们已经成功的创建了一个虚拟机了,接下来我们要开始配置这个虚拟机安装操作系统选择刚才创建的虚拟机,然后单击上方的“开始”弹出了首次运行向导,单击下一步。
2021级本科《操作系统》实验报告(实验3)学生姓名曾帅学号12院系软件学院任课教师范国祥实验TA XXX实验地点软件学院三楼实验室实验时间2016年05月26日星期四实验题目进程管理实验学时3学时实验目的:●掌握Linux下的多进程编程技术;●通过对进程运行轨迹的跟踪来形象化进程的概念;●在进程运行轨迹跟踪的基础上进行相应的数据统计,从而能对进程调度算法进行实际的量化评价,更进一步加深对调度和调度算法的理解,获得能在实际操作系统上对调度算法进行实验数据对比的直接经验。
实验内容及要求:(1)基于模板“”编写多进程的样本程序,实现如下功能:●所有子进程都并行运行,每个子进程的实际运行时间一般不超过30秒;●父进程向标准输出打印所有子进程的id,并在所有子进程都退出后才退出。
(2)在Linux 上实现进程运行轨迹的跟踪。
基本任务是在内核中维护一个日志文件/var/,把从操作系统启动到系统关机过程中所有进程的运行轨迹都记录在这一log文件中。
(3)在修改过的上运行样本程序,通过分析log文件,统计该程序建立的所有进程的等待时间、完成时间(周转时间)和运行时间,然后计算平均等待时间,平均完成时间和吞吐量。
可以自己编写统计程序,也可以使用python脚本程序“”进行统计。
(4)修改进程调度的时间片,然后再运行同样的样本程序,统计同样的时间数据,和原有的情况对比,体会不同时间片带来的差异。
实验过程描述、结果及思考:简要描述实验过程(含操作步骤及看到的结果)。
(1)在ubuntu下,利用系统提供的进程控制函数fork、wait系统调用编写多进程程序,编译运行,分析运行结果,之后开始修改内核。
(2)在init/中的main()中添加创建日志文件/var/的语句。
需要在把log文件关联到文件描述符3,0 1 2分别是stdin stdout和stderr,按照如下方式修改:(3)向kernel/中添加日志打印功能,将以下代码添加到原文件中:(4)在kernel/、kernel/和kernel/中,找到正确的状态转换点,并添加合适的状态信息,把它输出到log 文件之中。
计算机操作系统课程实验报告专业信息管理与信息系统班级 1203601学号 120360117姓名乐云指导教师周学权计算机操作系统课程实验报告专业信息管理与信息系统班级 1203601学号 120360114姓名郭鑫指导教师周学权操作系统实验实验1 使用虚拟机安装系统 4学时【实验目的】1.了解虚拟机软件的使用。
2.了解使用虚拟机安装Windows及Ubuntu操作系统。
【实验内容】1. 安装虚拟机软件VirtualBox。
2. 配置VirtualBox环境安装WindowsXP,并在虚拟机中启动windowsXP。
3. 配置VirtualBox环境安装Ubuntu 10.10,并在虚拟机中启动Ubuntu。
【实验环境】VirtualBox4.0Windows XPUbuntu 8.04【实验过程】一、创建虚拟机首先运行VirtualBox,单击左上角的“新建”。
单击下一步。
出现如下图的界面,在名称后输入自己起的名字,如test选择自己想要安装的系统类型和版本,本次试验是安装windows xp系统设置完成后,单击下一步。
接下来是设置虚拟机的内存大小,本次实验操作的计算机内存为4GB,所以我选择分配给我的虚拟机的内存为512MB,然后单击下一步。
接着创建虚拟硬盘,选择创建新的虚拟硬盘,单击下一步。
选择虚拟硬盘的类型,默认选择了VDI类型,单击下一步。
接下来选择为动态扩展类型,因为计算机的存储空间不大。
单击下一步。
动态扩展:如果你为你的虚拟磁盘分配的是10G空间,虚拟磁盘占用真实磁盘空间的范围就为0~10G。
固定大小:如果你为你的虚拟磁盘分配的是10G空间,虚拟磁盘占用真实磁盘空间永远不是10G,不管虚拟磁盘空间是否被全部使用。
选择虚拟机在本地磁盘中的位置和大小,单击下一步。
确认虚拟机的详细情况,点击下一步。
这时我们已经成功的创建了一个虚拟机了,接下来我们要开始配置这个虚拟机安装操作系统选择刚才创建的虚拟机,然后单击上方的“开始”弹出了首次运行向导,单击下一步。
选择安装介质,单击下一步。
单击启动。
在菜单栏找到设备,单击,找到分配光驱,然后单击,选择choose a virtual CD/DVD disk file...找到存放xp系统镜像的路径下,选择镜像。
安装程序启动,按下Enter键选择NTFS文件系统格式化磁盘分区,按下Enter键继续。
安装中安装完毕,进入欢迎界面。
输入密钥进入系统为安装好系统安装驱动。
选择虚拟机窗口上方的“设备”,“安装增强功能”。
这时在虚拟机内会弹出安装向导,单击NEXT。
安装完毕后选择立即重启,单击完成。
接下来配置文件共享,方便实体机和虚拟机进行文件交换。
单击设备,选择分配数据空间,选择右侧文件夹带加号的按钮,这时弹出“添加数据空间”窗口,选择“数据空间位置”、“其他”,然后选择在本地要共享的目录。
如果要让这个共享一直保持的话记得要勾选“固定分配”,完成后点“OK”。
接下来打开虚拟机中的网上邻居,选择“添加一个网上邻居”。
单击下一步。
单击浏览,选择"VirtualBox Shared Folders"网络下你共享的文件夹,然后单击“确定”。
单击完成。
以后要和实体机交换文件的时候,在实体机中只需把文件拖到共享的文件夹里即可。
在虚拟机中只需打开网上邻居将文件拖进共享的文件夹就可以了。
下图为实现了实体机与虚拟机的文件交换。
将软件安装包放在实体机的共享文件夹中,打开虚拟机网上邻居中的共享文件夹,找到了要交换的软件包,并且实现了软件的安装。
二、Ubuntu 安装过程向前面一样,单击新建,出现下面的对话框后,输入名称,选择系统类型,然后单击下一步。
为ubuntu图的安装选择内存大小,单击下一步。
选择创建新的虚拟硬盘,单击下一步。
选择乌班图的镜像路径,单击打开。
选中ubuntu然后点击开始。
出现错误百度后将设置中的处理器中的扩展特性选项选中,问题解决选择语言为中文(简体),点击安装点击继续选择磁盘,点击现在安装安装中点击继续设定用户名和登陆密码。
单击继续安装成功,重新启动实验2 Windows操作系统实践 2学时【实验目的】1.了解Windows 系统的设计思想和实现目标。
2.了解注册表的结构和使用。
3.掌握Windows系统中各种进程的功能以及所提供的服务。
4.掌握NTFS文件系统的相关特性。
【实验内容】1. 通过使用注册表设置前后台时间配额、添加和删除启动时自动运行的程序。
2. 观察系统启动完毕后任务管理器中的进程,说明除Idle进程外10个以上进程的功能及其提供的服务。
3. 通过启用文件压缩、磁盘限额等特性,了解NTFS的特点和其设计目标。
4. 结合授课内容和使用体验,尝试说明Windows存储系统的特点。
【实验环境】Windows XP。
一、通过使用注册表设置前后台时间配额、添加和删除启动时自动运行的程序。
1.设置前后台时间配额。
可以对其进行修改,时间配额长度字段、前后台变化字段、前台进程时间配额字段。
2.添加和删除启动时自动运行的程序。
找到注册表的如下路径:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion,找到RUN,单击,在右边的窗口中,单击鼠标右键,选择“新建”,“字符串值”,然后添加上程序的名字,输入正确的路径。
如图,添加spider为开机自动启动项。
检验:关机重启后,一开机就发现spider启动了,打开任务管理器也可以看到相应的进程。
删除进程只要在注册表中选中相应的启动项名字,单击右键选择删除即可。
二、观察系统启动完毕后任务管理器中的进程,说明除Idle进程外10个以上进程的功能及其提供的服务。
1.ctfmon.exe监视活动窗口,并为语音识别、书写识别、键盘、翻译和其他中文可选用户输入方法技术提供文本输入服务支持。
erinit.exe管理不同的启动顺序。
系统刚启动时,如果调出任务管理器就会看到userinit.exe ,但过一段时间,系统各项加载完毕后,userinit.exe就会自动消失的。
3.taskmgr.exe用于Windows任务管理器。
本进程是一项重要的系统进程,只有在打开任务管理器时才会被启动。
功能上主要用来实现:显示系统中正在运行的进程、管理其他程序、了解资源状况。
4.svchost.exe系统启动的时候,Svchost.exe将检查注册表中的位置来创建需要加载的服务列表。
多个Svchost.exe如果同时运行,则表明当前有多组服务处于活动状态,多个DLL文件在调用它。
5.lsass.exe用于微软Windows系统的安全机制。
它用于本地安全和登陆策略,管理 IP 安全策略以及启动 ISAKMP/Oakley (IKE) 和 IP 安全驱动程序。
6.Services.exeWindows操作系统的一部分。
用于管理启动和停止服务。
该进程也会处理在计算机启动和关机时运行的服务。
这个程序对系统的正常运行是非常重要的,终止进程后会重启。
7.winlogon.exeWindows NT 用户登陆程序,管理用户登录和退出。
8.csrss.exe是微软客户端、服务端运行时子系统,windows的核心进程之一。
本进程的主要是控制图形子系统、负责管理线程,并执行MS-DOS环境的图形窗口及其他某些部分,会随系统的启动而自动开启并一直运行。
9.smss.exe该进程为会话管理子系统用以初始化系统变量,启动用户会话,包括已经正在运行的Windows登录程序(winlogon.exe),Win32子系统(csrss.exe)线程和设定的系统变量作出反映。
10.Wmiprvse.exeWindows操作系统的一部分。
用于通过WinMgmt.exe程序处理WMI操作。
这个程序对计算机系统的正常运行是非常重要的。
三、通过启用文件压缩、磁盘限额等特性,了解NTFS的特点和其设计目标。
1.启用文件压缩打开c盘,找到一个文件夹,单击右键选择属性,然后如图所示,看到文件夹的大小和占用空间的大小,选择高级,在压缩或加密属性部分,将压缩内容以便节省磁盘空间打上对号,单击确定。
选择完毕后,点击确定,然后再重新打开该文件夹的属性,这时发现文件夹的占用空间缩小。
体现了NTFS支持文件数据的压缩。
NTFS可以透明地执行压缩和解压缩,应用程序不必修改就可利用这一特点。
目录也可以压缩,这指该目录中以后所建文件均会被压缩。
文件压缩能将文本性质的应用程序代码和数据文件压缩大约50 %,将可执行文件压缩大约40%。
2.磁盘限额选择磁盘属性,在配额里,可以选择启用配额管理,单击配额项可以进行添加和删除。
三、NTFS的特点和其设计目标特点:1、支持更大的磁盘容量,很好地适应不断扩大的磁盘容量需求2、基于Unicode的名称,让全球的NT使用者都能使用本地语言处理他们的文件。
3、通用索引机制,提高了文件管理的效率4、动态坏簇重印映射5、以文件的形式对数据进行管理,以簇为单位存储数据6、内建一个事物日志记录,对于任何的修改操作都进行登记记录,如果系统崩溃, NTFS会检查日记文件并利用他是磁盘恢复到数据损失最小的一致状态。
7、磁盘限额8、支持加密与压缩功能9、碎片整理设计目标:1、可恢复性2、安全性3、数据冗余和容错四、结合授课内容和使用体验,尝试说明Windows存储系统的特点。
1、进程私有,每个进程都只能访问属于自己的地址空间。
2、基于页,虚拟地址空间被划分为多个称为“页”的单元,虚拟内存地址空间的申请和释放,以及内存和磁盘的数据传输或置换都是以页为最小单位进行的。
3、Win32将低区的2GB留给进程使用,高区的2GB则留给系统使用。
4、调页文件用来存放被虚拟内存管理器置换出内存的数。
5、Win32中分配内存分为两个步骤:“预留”和“提交”。
因此在进程虚拟地址空间中的页有3种状态:自由(free)、预留(reserved)和提交(committed)。
6、Win32虚拟内存管理中使用demand-paging策略的,即不到真正访问时,不会为某虚拟地址分配真正的物理内存。
将工作分段完成,提高总体性能;不必为它们开辟存储空间或将其置换进物理内存,这样可以提高存储空间(磁盘和物理内存)的使用效率。
7、Win32通过一个两层表结构来实现地址映射,因为4 GB虚拟地址空间为每个进程私有,相应地,每个进程都维护一套自己的层次表结构用来实现其地址映射。
实验3 Ubuntu操作系统实践 2学时【实验目的】1.了解Ubuntu Linux系统的设计思想和实现目标。
2.了解Ubuntu Linux的核心和桌面系统。
3.了解Ubuntu Linux 中各种进程的功能。
4.了解EXT2文件系统的特点。