《计算机操作系统原理》课外实验报告
- 格式:doc
- 大小:16.68 KB
- 文档页数:10
计算机操作系统实验报告一、实验目的本次实验的主要目的是深入了解计算机操作系统的工作原理和功能,通过实际操作和观察,掌握操作系统的基本概念和常用命令,提高对计算机系统的管理和控制能力。
二、实验环境1、操作系统:Windows 10 专业版2、硬件配置:Intel Core i5 处理器,8GB 内存,256GB 固态硬盘三、实验内容1、进程管理通过任务管理器观察系统中正在运行的进程,包括进程的名称、PID(进程标识符)、CPU 使用率、内存使用情况等。
尝试结束一些非关键进程,观察系统的反应。
2、内存管理使用系统自带的性能监视器查看内存的使用情况,包括物理内存、虚拟内存的总量、已使用量和可用量。
运行一些大型程序,观察内存的分配和释放过程。
3、文件管理创建、复制、移动、删除文件和文件夹,观察文件系统的操作效果。
查看文件和文件夹的属性,包括大小、创建时间、修改时间、访问权限等。
4、设备管理查看设备管理器中硬件设备的状态,包括是否正常工作、驱动程序的版本等。
尝试更新一些设备的驱动程序,观察设备性能的变化。
四、实验步骤及结果1、进程管理打开任务管理器,可以看到系统中正在运行的进程列表。
进程按照名称、PID、CPU 使用率、内存使用情况等进行排序。
例如,系统进程“System”和“svchostexe”通常占用一定的 CPU 和内存资源。
尝试结束一些非关键进程,如某些后台运行的软件进程。
在结束进程时,系统会提示可能会导致相关程序无法正常运行,确认后结束进程。
部分进程结束后,对应的程序会关闭,系统的资源占用也会相应减少。
2、内存管理打开性能监视器,在“内存”选项中可以直观地看到物理内存和虚拟内存的使用情况。
当运行大型程序时,如游戏或图形处理软件,内存的使用量会显著增加。
随着程序的关闭,已使用的内存会逐渐释放,可用内存量会回升。
3、文件管理在文件资源管理器中进行文件和文件夹的操作。
创建新文件和文件夹时,可以指定名称、类型和存储位置。
操作系统原理实验报告操作系统原理实验报告一、引言操作系统是计算机系统中的核心软件,它负责管理和协调计算机硬件资源,提供用户与计算机硬件之间的接口,使得用户可以方便地使用计算机。
在本次实验中,我们通过实际操作和观察,深入理解了操作系统的原理和工作机制。
二、实验目的本次实验的主要目的是通过模拟操作系统的运行过程,加深对操作系统原理的理解。
具体目标包括:1. 掌握操作系统的启动过程和内存管理机制;2. 理解进程调度算法的原理和实现;3. 学习文件系统的组织和管理方式;4. 了解操作系统与硬件之间的交互方式。
三、实验过程1. 启动过程在计算机启动时,操作系统首先加载到内存中,并开始执行。
我们通过模拟实验,深入了解了操作系统的启动过程。
我们观察到操作系统通过读取硬盘中的引导扇区来进行启动,并且在启动过程中会进行一系列的初始化操作,如初始化内存管理、进程管理和设备驱动等。
2. 内存管理内存管理是操作系统中的重要组成部分,它负责分配和回收内存资源,以及管理进程的内存空间。
在实验中,我们学习了内存分页和内存分段两种常见的内存管理方式,并通过实际操作和观察,对其原理和实现有了更深入的了解。
3. 进程调度进程调度是操作系统中的核心功能之一,它决定了哪些进程能够获得CPU的使用权。
在实验中,我们学习了常见的进程调度算法,如先来先服务、短作业优先和时间片轮转等。
通过模拟实验,我们观察到不同的调度算法对进程执行的影响,加深了对进程调度原理的理解。
4. 文件系统文件系统是操作系统中负责管理和组织文件的机制。
在实验中,我们学习了文件系统的组织方式,如目录结构和文件存储方式等。
通过实际操作和观察,我们了解了文件系统的工作原理和实现机制。
5. 硬件交互操作系统与硬件之间的交互是实现计算机功能的关键。
在实验中,我们学习了操作系统与硬件之间的通信方式,如中断和设备驱动等。
通过模拟实验,我们观察到操作系统是如何与硬件进行交互,并掌握了操作系统与硬件之间的配合工作。
中南大学计算机操作系统实验报告................................................................................................................................................................................................................1、增强学生对计算机操作系统基本原理、基本理论、基本算法的理解;2、提高和培养学生的动手能力。
1、每人至少选作1 题,多做不限;2、每人单独完成,可以讨论,但每人的设计内容不得彻底相同,抄袭或者有2 人/多人设计彻底一样者,不能通过;3、设计完成后,应上交课程设计文档,文档格式应是学校课程设计的标准格式,所有学生的封面大小、格式也必须一样;4、同时上交设计的软盘(或者以班刻录光盘)。
调度算法的摹拟:摹拟各种调度算法,并进行调度性能分析。
摹拟了一个作业调度算法,其中用到了先来先服务算法(FCFS)、短作业优先算法(SJF)、最高响应比优先算法(HRN)三种算法。
如下,分别为三种算法的程序流程图。
图1 - 开始界面图 2 –输入作业的信息(名字、提交时间、运行时间) 图3 –选择算法(FCFS 、SJF、HRN)图4、5 –选择FCFS 算法后输出结果图6、7 –选择SJF 算法后输出结果图8、9 –选择HRN 算法后输出结果能体现公平性;一旦一个较长的作业进入系统后就会长期的占用系统的资源,这样如果有优先级较高的短作业需要执行的话需要等待很长期。
比前者改善了平均周转时间和平均带权周转时间,缩短作业的等待时间,提高系统的吞吐量;对长作业非常不利,可能长期得不到执行,未能一句作业的紧迫程度来划分执行的优先级,难以准确估计作业的执行时间,从而影响调度性能。
这种算法是对FCFS 方式和SJF 方式的一种综合平衡。
计算机操作系统原理实验报告专业: 110420x学号: 1104202xx姓名: xxx哈尔滨工业大学(威海)实验一进程同步和互斥一、实验目的1.掌握临界资源、临界区概念及并发进程互斥、同步访问原理。
2.学会使用高级语言进行多线程编程的方法。
3.掌握利用VC++或Java语言线程库实现线程的互斥、条件竞争,并编码实现P、V操作,利用P、V操作实现两个并发线程对有界临界区的同步访问。
4.通过该实验,学生可在源代码级完成进程同步互斥方案的分析、功能设计、编程实现,控制进程间的同步、互斥关系。
二、实验要求1.知识基础:学生应在完成进程和线程及调度等章节的学习后进行。
2.开发环境与工具:硬件平台——个人计算机。
软件平台-Windows操作系统,VC++语言或Java语言开发环境。
3.运用高级语言VC++或Java语言线程库及多线程编程技术进行设计实现。
三、实验内容1.实现临界资源、临界区、进程或线程的定义与创建。
2.利用两个并发运行的进程,实现互斥算法和有界缓冲区同步算法。
四、程序流程图1.2.生产者消费者问题生产者:消费者:五、实验结果1.互斥问题2.生产者消费者问题六、结果分析有上述程序运行结果可知,此次试验已经基本达到了实验要求,在互斥问题中,由于采用了“模拟一个竞争条件——全局变量”来建立互斥,所以不会明显的条件来判断2个线程是否正确、独立的运行,所以,在运行时间上加以限制,让2个线程在有序运行时只能持续15秒。
在生产者消费者问题中,生产者与消费者的最大上限为10,并且生产者只能生产“同一种物品”,而消费者也只能购买“同一种物品”。
《计算机操作系统》课外上机
实验报告
题目:
班级:
申请等级(A优秀,B良好,C一般,D及格,E不及格)
完成时间:
组长姓名学号:组长联系电话:
组员姓名学号:组员联系电话:
组长主要任务:
组员主要任务:
一、实验目的
二、核心设计思路和实现内容
(重点扩展,不是抄书,体现自己的设计)
三、数据结构及操作函数的设计与实现(重点扩展)
(说明:可参考教材表达方法,用文字、流程图和有注释核心代码来论述关键数据结构、函数、整体程序结构。
不能只画图,必须用文字说明关键问题)
四、测试案例及运行结果分析(重点扩展)
(说明:按照功能测试设计测试用例,测试用例需针对设计功能分别列出明确的测试样本输入数据及输出结果和界面呈现,并对结果进行分析。
用文字、数据和界面来描述。
不能只有界面,必须用文字说清楚)
五、实验总结
(说明:每位同学分别总结。
可以对实验过程中具体的技术细节总结,出现的问题及解决方法、还存在问题及进一步改进建议。
)
六、实验室中遇到技术问题及解决方法
(具体说明技术细节,重点扩展,可给出进一步实验的建议)
七、用户手册
(包括:开发环境安装、运行条件、安装步骤、操作步骤、案例说明)
八、备注
(说明:提交电子资料目录、源程序文件清单及其每个文件的说明,源程序需要注释)。
计算机操作系统实验报告一、实验目的本次实验旨在深入了解计算机操作系统的基本原理和功能,通过实际操作和观察,掌握操作系统的进程管理、内存管理、文件系统管理等核心内容,提高对计算机系统的整体认识和实践能力。
二、实验环境操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容与步骤(一)进程管理实验1、创建进程使用 C++中的`CreateProcess`函数创建一个新的进程。
在代码中指定要执行的程序路径和相关参数,并观察新进程的创建和运行情况。
```cppinclude <windowsh>include <iostream>int main(){STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory(&si, sizeof(si));sicb = sizeof(si);ZeroMemory(&pi, sizeof(pi));//要执行的程序路径LPCWSTR path = L"C:\\Windows\\System32\\notepadexe";if (!CreateProcess(path, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)){std::cout <<"CreateProcess failed Error code: "<<GetLastError()<< std::endl;return 1;}//等待进程结束WaitForSingleObject(pihProcess, INFINITE);CloseHandle(pihProcess);CloseHandle(pihThread);}```2、进程同步与互斥通过编写代码实现生产者消费者问题,使用信号量来实现进程之间的同步与互斥。
```cppinclude <windowsh>include <iostream>include <queue>const int BUFFER_SIZE = 5;std::queue<int> buffer;HANDLE fullSemaphore;HANDLE emptySemaphore;HANDLE mutex;DWORD WINAPI Producer(LPVOID lpParam) {int item = 0;while (true) {WaitForSingleObject(emptySemaphore, INFINITE);WaitForSingleObject(mutex, INFINITE);if (buffersize()< BUFFER_SIZE) {bufferpush(item);std::cout <<"Producer produced: "<< item << std::endl;}ReleaseMutex(mutex);ReleaseSemaphore(fullSemaphore, 1, NULL);}return 0;}DWORD WINAPI Consumer(LPVOID lpParam) {int item = 0;while (true) {WaitForSingleObject(fullSemaphore, INFINITE);WaitForSingleObject(mutex, INFINITE);if (!bufferempty()){item = bufferfront();bufferpop();std::cout <<"Consumer consumed: "<< item << std::endl;}ReleaseMutex(mutex);ReleaseSemaphore(emptySemaphore, 1, NULL);}return 0;}int main(){fullSemaphore = CreateSemaphore(NULL, 0, BUFFER_SIZE, NULL);emptySemaphore = CreateSemaphore(NULL, BUFFER_SIZE, BUFFER_SIZE, NULL);mutex = CreateMutex(NULL, FALSE, NULL);HANDLE hProducerThread = CreateThread(NULL, 0, Producer, NULL, 0, NULL);HANDLE hConsumerThread = CreateThread(NULL, 0, Consumer, NULL, 0, NULL);WaitForSingleObject(hProducerThread, INFINITE);WaitForSingleObject(hConsumerThread, INFINITE);CloseHandle(fullSemaphore);CloseHandle(emptySemaphore);CloseHandle(mutex);CloseHandle(hProducerThread);CloseHandle(hConsumerThread);return 0;}```(二)内存管理实验1、内存分配与释放使用 C++中的`new`和`delete`操作符进行内存的动态分配和释放,并观察内存使用情况。
《计算机操作系统原理》课外实验报告
本次实验任务是学习计算机操作系统原理,主要内容为操作系统调度算法的实践操作。
在实验中,我们通过对不同调度算法的实现,深入理解了操作系统调度的工作原理以及影响因素,同时也深刻认识到不同算法对系统性能的影响。
实验过程中,我们学习了几种调度算法,其中比较典型的有先来先服务(FCFS)、时间片轮转(RR)和最短作业优先(SJF)算法。
每个算法都有其独特的工作方式和特点,我们
需要根据系统的性质和需求的不同来选择合适的调度算法。
在实际操作过程中,我们先用Python实现每个算法的代码,
并通过模拟进程的调度过程来测试其性能和正确性。
比如,我们通过模拟进程的到达时间、需要的CPU时间等信息,来模
拟真实的进程调度过程。
经过多次实验发现,不同算法的性能表现不同,需要根据实际情况灵活选择。
我们发现,FCFS算法的最大缺点是没有考虑进程的执行时间,会导致长作业无限等待,使得系统吞吐量较低。
时间片轮转算法的优点在于公平性强,但时间片太小会增加进程上下文的切换次数,降低系统性能。
最短作业优先算法的最大优势在于可以优先执行需要时间最短的任务,提高了系统的响应能力和吞吐量,但也会存在长作业等待的问题。
因此,在实际应用中,需要根据具体情况选择最优的算法。
通过这次实验,我们对操作系统调度算法有了更加深度的认识,也体会到了操作系统设计和实现的复杂性。
操作系统不仅是一
个软件,更是整个计算机系统的核心,需要我们掌握更加深入的理论知识和实践经验。
通过这次实验的学习,我们对操作系统有了更加深入的认识和理解,积累了宝贵的经验,也对今后的学习和工作有了更好的规划和准备。
计算机操作系统实验报告计算机操作系统实验报告引言:计算机操作系统作为计算机系统的核心组成部分,承担着管理和控制计算机硬件资源的重要任务。
通过实验,我们可以更好地理解操作系统的工作原理和功能,掌握操作系统的基本操作和管理技巧。
本文将结合实验结果,对操作系统实验进行总结和分析。
实验一:操作系统安装与配置在这个实验中,我们学习了操作系统的安装和配置过程。
通过选择合适的操作系统版本、设置分区和文件系统等步骤,成功地安装了操作系统。
同时,我们还学习了如何进行系统配置,包括网络设置、用户管理和软件安装等。
通过这个实验,我们对操作系统的基本安装和配置有了更深入的了解。
实验二:进程管理进程是操作系统中最基本的执行单位,也是操作系统资源管理的核心。
在这个实验中,我们学习了进程的创建、调度和终止等操作。
通过编写简单的程序,我们可以观察到进程的创建和调度过程,了解进程的状态转换和资源分配。
同时,我们还学习了进程间通信的方式,如共享内存和消息传递等。
通过这个实验,我们对进程管理有了更深入的理解。
实验三:内存管理内存管理是操作系统中重要的一部分,它负责管理和分配计算机的内存资源。
在这个实验中,我们学习了内存的分配和回收算法,如连续分配和非连续分配等。
通过编写程序,我们可以观察到内存的分配和回收过程,了解内存的管理策略和算法。
同时,我们还学习了虚拟内存的概念和实现原理,通过页面置换算法实现了虚拟内存的管理。
通过这个实验,我们对内存管理有了更深入的认识。
实验四:文件系统文件系统是操作系统中用于管理和存储文件的一种机制。
在这个实验中,我们学习了文件系统的基本操作和管理技巧。
通过创建文件、目录和链接等操作,我们可以更好地理解文件系统的结构和组织方式。
同时,我们还学习了文件的读写和权限管理等操作,通过编写程序实现了对文件的操作。
通过这个实验,我们对文件系统有了更深入的了解。
实验五:设备管理设备管理是操作系统中负责管理和控制计算机设备的一种机制。
计算机操作系统实验课实验报告实验报告实验课程: 计算机操作系统学生姓名:XXX学号:XXXX专业班级:软件2014年12月25日目录实验一熟悉Windows XP中的进程和线程.. 3实验二进程调度 (7) 实验三死锁避免—银行家算法的实现 (18)实验四存储管理 (24)实验一熟悉Windows XP中的进程和线程一、实验名称熟悉Windows XP中的进程和线程二、实验目的1、熟悉Windows中任务管理器的使用。
2、通过任务管理器识别操作系统中的进程和线程的相关信息。
3、掌握利用spy++.exe来察看Windows中各个任务的更详细信息。
三、实验结果分析1、启动操作系统自带的任务管理器:方法:直接按组合键Ctrl+Alt+Del,或者是在点击任务条上的“开始”“运行”,并输入“taskmgr.exe”。
2、调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,并完成下表:表一:统计进程的各项主要信息3、启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结束掉。
再从任务管理器中分别找到下列程序:winlogon.exe、lsass.exe、csrss.exe、smss.exe,试着结束它们,观察到的反应是任务管理器无法结束进程,原因是该系统是系统进程。
4、在任务管理器中找到进程“explorer.exe”,将之结束掉,并将桌面上你打开的所有窗口最小化,看看你的计算机系统起来什么样的变化桌面上图标菜单都消失了、得到的结论explorer.exe是管理桌面图标的文件(说出explorer.exe进程的作用)。
5、运行“spy++.exe”应用软件,点击按钮“”,切换到进程显示栏上,查看进程“explorer.exe”的各项信息,并填写下表:进程:explorer.exe 中的各个线程6、注意某些线程前有“+”,如图所示:,说明二者之间的差异前有“+”其器线程下有窗口。
《计算机操作系统原理》课外实验报告先用随机函数初始化PCB结构体,从而模拟3个进程的特性,然后void ProInsert(PCB * p) /*优先数插入算法,将进程p按其优先级插入到就绪队列中相应位置*/、void PrintPCB(PCB *q)// 输出进程控制字信息、void PrintLine(PCB *head) /*输出以p为队首的队列中所有PCB信息*/、void PrintAll()//输出某一时刻进程队列信息、void FirstIn()/*将就绪队列中进程调入运行队列*/等函数体,实现进程调度过程中最基本的功能。
在主函数中先调用void CreatePCB() /*随机产生n个进程,并对各个进程随机赋予初值*/,从而创建了就绪队列,为进程调度做好准备。
而后void SP() /*静态优先级抢占式调度策略*/、void DP() /*动态优先级抢占式调度策略*/、void RR() /*时间片轮转调度策略*/等来分别实现静态优先级抢占式调度策略、动态优先级抢占式调度策略和时间片轮转调度策略三种功能。
而最后的多级反馈调度策略实现因为与前三者有很大的不同,所以在同一cpp中我几乎是重新重构了所有的基本算法来帮助快速实现多级调度策略的。
首先,对于时间的复杂性,我在进程调度实验中忽略了运行队列(CPU处理器的模拟)处理程序是依据进程进入就绪队列的时间来调度的,所以1、静态优先级抢占式调度策略最基本的思想是循环将就绪队列中程序调入到运行队列中,再在运行队列中执行对进程的操作。
2、动态优先级抢占式调度策略的基本思想是循环的调度就绪队列中进程程序,然后再运行队列中对进程的优先级进行动态的操作,如每执行一次进程,它的优先级就相应的减2.,如果没有运行完,就将其重新按照优先级重新插入到就绪队列中,从而模拟出调度返回这一操作。
3、时间片轮转调度策略,我预先确定时间片的长度为2,在循环从就绪队列中调度进程时,在运行队列中将其执行2个时间点,若没有执行完,则重新插入。
4、而对于多级队列调度策略,则首先建立PCB *ready1,*ready2,*ready3,*ready4;//多级调度队列策略时建立的四个就绪队列,再将这些就绪队列逐渐分别(从高优先级到低优先级就绪队列)“时间片轮转法”。
最后输出运行、就绪队列1、就绪队列2、就绪队列3、就绪队列4、结束队列5个队列中进程。
我将进程随进入运行队列时间的影响与进程调度分开编写程序,进程阻塞实验来模拟进程进入CPU时,遇到阻塞情况下进入到阻塞队列中,从而简化了程序的书写。
typedef struct node{char name[10]; /*进程名*/char ID; /*进程标识名*/int priority; /*优先级*/char state; /*进程状态标志*/int in_time; /*进程进入CPU的时间*/int all_time; /*进程需要的总时间*/int run_time; /*进程已运行的时间*/int block_time; /*进程被阻塞的时间点*/int weak_time; /*进程被唤醒的时间点*/int round; /*进程时间轮转时间片*/struct node * next; /*下个PCB指针*/}PCB; /*进程控制块结构字*/PCB *run,*ready,*finish,*tail_r,*tail_f; /*队列指针,依次定义运行队列、就绪队列、结束队列*/PCB *ready1,*ready2,*ready3,*ready4;//多级调度队列策略时建立的四个就绪队列void SP() /*静态优先级抢占式调度策略*/{printf("现在开始静态优先级抢占式调度模拟\n\n");finish=NULL;while(ready!=NULL){FirstIn();PrintAll();run->run_time+=1;if(run->all_time-run->run_time<=0){run->next=finish;finish=run;finish->state='F';run=NULL;}elseProInsert(run);}PrintAll();}void DP() /*动态优先级抢占式调度策略*/{printf("现在开始动态优先级抢占式调度模拟\n\n");finish=NULL;while(ready!=NULL){FirstIn();PrintAll();run->run_time+=1;run->priority-=2; /*每运行一次优先数降低2个单位*/if(run->all_time-run->run_time<=0) /*如所需时间为0将其插入完成队列*/{run->next=finish;finish=run;run->state='F'; /*置状态为完成态*/run=NULL; /*运行队列头指针为空*/}else /*没有运行完,则将其变为就绪态插入到就绪队列*/ ProInsert(run);}PrintAll();}void RR() /*时间片轮转调度策略*/{printf("现在开始时间片轮转调度策略\n\n");int R_time=2;//时间片轮转调度法中时间为2finish=NULL;while(ready!=NULL){FirstIn();PrintAll();//就绪队列中进程进入到运行队列中后队列的显示for(int i=1;i<=R_time;i++){run->run_time+=1;run->priority-=1;if(run->all_time-run->run_time<=0) /*如所需时间为0将其插入完成队列*/{run->next=finish;finish=run;run->state='F'; /*置状态为完成态*/run=NULL;break;}if(i==R_time&&run->all_time-run->run_time>0)ProInsert(run);}}PrintAll();}void MLFQ() /*多级反馈队列调度策略*/{printf("现在开始多级反馈队列调度策略模拟\n\n");int time1=1,time2=2,time3=3,time4=4;//设置每个就绪队列所分配到的时间片长度ready1=ready;finish=NULL;while(ready1!=NULL){FirstIn_Demo1();PrintAll_MLFQ();for(int i=1;i<=time1;i++){run->run_time+=1;if(run->all_time-run->run_time<=0) /*如所需时间为0将其插入完成队列*/{run->next=finish;finish=run;run->state='F'; /*置状态为完成态*/run=NULL;break;}if(i==time1&&run->all_time-run->run_time>0)LineInsert2(run);}}while(ready2!=NULL){FirstIn_Demo2();PrintAll_MLFQ();for(int i=1;i<=time2;i++){run->run_time+=1;if(run->all_time-run->run_time<=0) /*如所需时间为0将其插入完成队列*/{run->next=finish;finish=run;run->state='F'; /*置状态为完成态*/run=NULL;break;}if(i==time2&&run->all_time-run->run_time>0)LineInsert3(run);}}while(ready3!=NULL){FirstIn_Demo3();PrintAll_MLFQ();for(int i=1;i<=time3;i++){run->run_time+=1;if(run->all_time-run->run_time<=0) /*如所需时间为0将其插入完成队列*/{run->next=finish;finish=run;run->state='F'; /*置状态为完成态*/run=NULL;break;}if(i==time3&&run->all_time-run->run_time>0)LineInsert4(run);}}while(ready4!=NULL){FirstIn_Demo4();PrintAll_MLFQ();run->run_time+=1;if(run->run_time-run->run_time<=0){run->next=finish;finish=run;run->state='F';run=NULL;ready4=ready4->next; }}PrintAll_MLFQ();}内容仅供参考。