集美大学操作系统_实验五

合集下载

《操作系统》实验报告

《操作系统》实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

《操作系统》实验报告

《操作系统》实验报告

一、实验目的1. 理解进程的概念及其在操作系统中的作用。

2. 掌握进程的创建、调度、同步和通信机制。

3. 学习使用进程管理工具进行进程操作。

4. 提高对操作系统进程管理的理解和应用能力。

二、实验环境1. 操作系统:Windows 102. 软件环境:Visual Studio 20193. 实验工具:C++语言、进程管理工具(如Task Manager)三、实验内容1. 进程的创建与销毁2. 进程的调度策略3. 进程的同步与互斥4. 进程的通信机制四、实验步骤1. 进程的创建与销毁(1)创建进程使用C++语言编写一个简单的程序,创建一个新的进程。

程序如下:```cpp#include <iostream>#include <windows.h>int main() {// 创建进程STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory(&si, sizeof(si));si.cb = sizeof(si);ZeroMemory(&pi, sizeof(pi));// 创建进程if (!CreateProcess(NULL, "notepad.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {std::cout << "创建进程失败" << std::endl;return 1;}std::cout << "进程创建成功" << std::endl;// 等待进程结束WaitForSingleObject(pi.hProcess, INFINITE);// 销毁进程CloseHandle(pi.hProcess);CloseHandle(pi.hThread);return 0;}```(2)销毁进程在上面的程序中,通过调用`WaitForSingleObject(pi.hProcess, INFINITE)`函数等待进程结束,然后使用`CloseHandle(pi.hProcess)`和`CloseHandle(pi.hThread)`函数销毁进程。

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

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

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

二、实验环境本次实验在计算机实验室进行,使用的操作系统为 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”。

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

操作系统实验

操作系统实验

操作系统实验一、实验背景操作系统实验是计算机科学与技术专业中非常重要的一门实践课程,旨在帮助学生加深对操作系统原理的理解,并且通过实际操作,提高学生的实际动手能力。

本文将介绍我在操作系统实验中所进行的一项实验内容和实验结果。

二、实验目的本次实验的目的是通过模拟操作系统的一些核心功能和概念,加深对操作系统内部工作原理的理解,掌握操作系统的调度算法、程序设计和系统优化等技能。

三、实验步骤1. 实验环境准备为了进行本次实验,首先需要搭建相应的实验环境。

我选择使用Linux操作系统作为实验环境,并确保已经安装了必要的工具和软件,如gcc编译器和相关的调试工具。

2. 实验代码编写在实验开始之前,我阅读了相关的文档和教材,理解了实验的要求和任务。

然后,我按照要求开始编写实验所需的代码。

在代码编写过程中,我需要对操作系统内核进行修改和扩展,并且针对具体的实验要求,实现相关的功能和算法。

3. 实验测试与调试完成代码编写后,我进行了一系列的测试和调试工作。

通过编写测试用例,模拟各种场景和输入情况,验证代码的正确性和稳定性。

如果发现错误或问题,我会使用调试工具进行定位和修复。

4. 实验结果分析在完成测试和调试后,我对实验结果进行了详细的分析。

通过比较和统计实验数据,我得出了一些结论,并对实验结果进行了评估和总结。

四、实验结果与讨论通过实验,我成功完成了操作系统实验的任务,并获得了一些有价值的实验结果。

在实验过程中,我遇到了一些挑战和困难,但通过不断努力和学习,最终克服了这些困难,并获得了令人满意的成果。

五、实验心得体会通过参与操作系统实验,我深刻地认识到了操作系统在计算机系统中的重要性和作用。

实验过程中,我不仅学到了新的知识和技能,还提高了自己的动手能力和问题解决能力。

同时,我也感受到了团队合作的重要性,与同学们一起合作完成实验任务,互相学习和交流,共同进步。

六、实验结论通过本次操作系统实验,我对操作系统的工作原理和相关概念有了更深入的了解。

linux实验五 用户管理

linux实验五 用户管理

集美大学Linux系统管理课程实验报告课程名称:Linux系统管理班级:软件1115实验成绩:指导教师:范明红姓名:许云云实验项目名称:实验五:用户管理学号:2011813035上机实践日期:1.实验目的:1)熟悉Linux操作系统中的用户和组的概念。

2)掌握Linux操作系统中用户管理。

3)理解用户管理涉及的系统配置文件。

2.实验要点:1.认真阅读课本相关的内容,掌握相关指令的使用。

2. 理解系统管理中的用户管理的概念,掌握如何在Linux系统中管理用户和组。

3.实验准备:1 熟悉useradd(adduser)和userdel指令的使用2 熟悉groupadd和groupdel指令的使用3 熟悉passwd指令的使用4了解who、id、,finger,chfn,groups、whoami、newgrp指令的用法5 学习使用用户管理器管理用户4.实验内容:设置系统以字符界面方式启动:4.1用户管理1:使用useradd(adduser)指令添加名称为user1、user2、user3、user4的用户,分别为其设定密码。

2:使用userdel指令删除user4用户3.使用chfn指令添加用户的详细信息,并使用finger指令察看相关信息。

4.锁定user1用户,使其无法登陆。

(有2种方法)5.在其他终端使用用户user1、user2等登陆验证。

6.为user1解锁,使其能正常登陆。

方法一:使用usermod锁定:解锁:方法二:使用passwd锁定:解锁:4.2组管理。

1:使用groupadd指令添加user和group两个组2:使用groupdel指令删除group组3: 将用户user1、user2、user3添加到user组中。

4:指定user1为组管理员。

5.使用user1账户登陆,删除组内成员user3.6.更改user1账户的主组为user并验证。

4.3其他指令使用who、id、whoami、groups等指令1:使用who指令查看当前登陆系统的用户2:使用id指令查看当前用户的UID与GID3:使用whoami指令查看当前使用shell的用户名称4.4 打开用户管理配置文件/etc/passwd,/etc/shadow,/etc/group察看内容:查看/etc/passwd文件部分内容:查看/etc/ shadow文件部分内容:查看/etc/group文件部分内容:4.5 打开图形界面,使用用户管理器管理用户和组。

操作系统课程实验报告

操作系统课程实验报告

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

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

二、实验环境操作系统: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. 实验目的本次实验的目的是通过设计一个简单的操作系统,深入理解操作系统的基本原理、结构和功能,并通过实践掌握操作系统的核心概念和实现方式。

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

集美大学计算机操作系统教程课程实验报告
一、实验目的
1、加深对进程概念及进程管理各部分内容的理解。

2、熟悉进程管理中主要数据结构的设计和进程调度算法实施。

二、实验内容
调试并运行一个允许n 个进程并发运行的进程调度模拟系统。

(可在HRN和HPF中选择一个实现。

由于本实验是模拟运行,所选中进程并不实际启动运行,可以使用简单的输出来模拟进程的一次运行)。

三、实验要求
(1)给出程序中使用的数据结构及符号说明。

(2)给出程序流程图和源程序,源程序中要有详细的注释。

(3)设置合理的参数以满足进程调度算法需求。

(4)可根据输入的内容填写PCB。

并根据选中算法安排进程调度。

(5)能打印程序运行时的初值和调度运行结果,要求如下
a)每个进程用一个PCB 表示可显示各进程控制块的初始状态;
b)输入各进程相关参数,输入完成后可显示各进程控制块的初始状态;
c)输出调度结果:能较直观地显示各进程执行顺序,占用时间等
d)计算每个作业的周转时间,带权周转时间及均值。

四、实验步骤
用HRN(最高响应比优先)实现进程调度
代码如下:
#include<stdio.h>
#include<stdlib.h>
int n;
float T1=0,T2=0;
int times=0;
struct jcb //作业控制块
{
char name[10]; //作业名
int reachtime; //作业到达时间
int starttime; //作业开始时间
int needtime; //作业需要运行的时间
float super; //作业的响应比
int finishtime; //作业完成时间
float cycletime; //作业周转时间
float cltime; //作业带权周转时间
char state; //作业状态
struct jcb *next; //结构体指针
}*ready=NULL,*p,*q;
typedef struct jcb JCB;
void inital() //建立作业控制块队列,先将其排成先来先服务的模式队列{
int i;
printf("\n输入作业数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
p=(JCB*)malloc(sizeof(JCB));
printf("\n输入作业名:");
scanf("%s",p->name);
p->reachtime=i;
printf("作业默认到达时间:%d",i);
printf("\n输入作业要运行的时间:");
scanf("%d",&p->needtime);
p->state='W';
p->next=NULL;
if(ready==NULL)
ready=q=p;
else{
q->next=p;
q=p;
}
}
}
void disp(JCB* q) //显示作业运行后的周转时间及带权周转时间等{
printf("\n作业%s正在运行,估计其运行情况:\n",q->name);
printf("开始运行时刻:%d\n",q->starttime);
printf("完成时刻:%d\n",q->finishtime);
printf("周转时间:%f\n",q->cycletime);
printf("带权周转时间:%f\n",q->cltime);
printf("响应比:%f\n",q->super);
}
void running(JCB *p) //运行作业
{
if(p==ready) //先将要运行的作业从队列中分离出来
{
ready=p->next;
p->next=NULL;
}
else
{
q=ready;
while(q->next!=p)
q=q->next;
q->next=p->next;
}
p->starttime=times; //计算作业运行后的完成时间,周转时间等等p->state='R';
p->finishtime=p->starttime+p->needtime;
p->cycletime=(float)(p->finishtime-p->reachtime);
p->cltime=(float)(p->cycletime/p->needtime);
T1+=p->cycletime;
T2+=p->cltime;
disp(p); //调用disp()函数,显示作业运行情况
times+=p->needtime;
p->state='F';
printf("\n%s has been finished!\n",p->name);
free(p); //释放运行后的作业
}
void super() //计算队列中作业的高响应比
{
JCB *padv;
padv=ready;
do{
if(padv->state=='W'&&padv->reachtime<=times)
padv->super=(float)(times-padv->reachtime+padv->needtime)/padv->needtime;
padv=padv->next;
}while(padv!=NULL);
}
void final() //最后打印作业的平均周转时间,平均带权周转时间
{
float s,t;
t=T1/n;
s=T2/n;
printf("\n\n作业已经全部完成!");
printf("\n%d个作业的平均周转时间是:%f",n,t);
printf("\n%d个作业的平均带权周转时间是%f:\n\n\n",n,s); }
void hrn() //高响应比算法
{
JCB *min;
int i,iden;
inital();
for(i=0;i<n;i++)
{
p=min=ready;iden=1;
super();
do{
if(p->state=='W'&&p->reachtime<=times)
if(iden)
{
min=p;
iden=0;
}
else if(p->super>min->super)
min=p;
p=p->next;
}while(p!=NULL);
if(iden)
{
i--;times++;
//printf("\ntime=%d:\tno JCB submib...wait...",time); if(times>1000)
{
printf("\nruntime is too long...error...");
}
}
else
{
running(min); //调用running()函数
}
}
final(); //调用final()函数
}
void main() //主函数
{
hrn();
}
运行结果如下:
五、实验总结
通过本实验对于最高响应比优先算法和进程调度的功能及进程调度算法有了深入理解。

在实验开始之前我对于最高响应比优先理解并不深,导致了响应比的计算错误,从而加大了完成代码的时间量。

对于这个问题,使我更明白了基础知识的重要性。

相关文档
最新文档