东北大学操作系统实验报告
操作系统实验实验报告

操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。
本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。
二、实验环境本次实验使用的操作系统为 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 等进行文件的创建、读取和写入操作。
东北大学linux实验报告

东北大学linux实验报告东北大学Linux实验报告引言:在当今信息技术高速发展的时代,计算机科学与技术已经成为了各个领域不可或缺的一部分。
作为计算机领域的重要组成部分,操作系统在实际应用中起着至关重要的作用。
Linux作为一种开源的操作系统,具有稳定性、安全性和灵活性等优势,因此在学术界和工业界均得到了广泛的应用和研究。
本文将对东北大学Linux实验进行总结和分析,以期对Linux操作系统有更深入的了解。
一、实验背景东北大学开设的Linux实验课程旨在帮助学生掌握Linux操作系统的基本原理和应用技巧。
通过实验,学生能够了解Linux的启动过程、文件系统管理、用户权限管理、网络配置等关键概念和操作。
实验采用了虚拟机技术,使得学生可以在实验室或家中的个人电脑上进行实验,提高了实验的灵活性和便捷性。
二、实验内容1. Linux的安装与启动在本实验中,我们首先需要在虚拟机中安装Linux操作系统。
通过选择适当的Linux发行版和版本,进行分区、格式化、安装等步骤,最终完成Linux的安装。
安装完成后,我们需要了解Linux的启动过程,包括BIOS、MBR、GRUB等关键环节。
2. 文件系统管理Linux操作系统以文件为中心,因此文件系统管理是Linux实验的重要内容之一。
通过实验,我们学会了使用命令行和图形界面两种方式来管理文件和目录,包括创建、删除、复制、移动、重命名等操作。
此外,还学习了文件权限和所有权的概念,掌握了chmod、chown等命令的使用方法。
3. 用户权限管理在Linux系统中,用户权限管理是非常重要的一部分。
通过实验,我们学会了创建用户、设置密码、分配权限等操作。
同时,还了解了Linux的用户组概念,学习了添加用户到用户组、设置用户组权限等操作。
4. 网络配置网络配置是Linux实验中的另一个重要内容。
通过实验,我们了解了网络接口的配置和管理,包括IP地址、子网掩码、网关等参数的设置。
《操作系统》实验报告

《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。
二、实验环境本次实验在以下环境中进行:操作系统: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)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。
东北大学操作系统实验报告4-2017

东北⼤学操作系统实验报告4-2017实验四进程的管道通信⼀、实验⽬的1、加深对进程概念的理解,明确进程和程序的区别。
2、学习进程创建的过程,进⼀步认识进程并发执⾏的实质。
3、分析进程争⽤资源的现象,学习解决进程互斥的⽅法。
4、学习解决进程同步的⽅法。
5、掌握Linux系统中进程间通过管道通信的具体实现⼆、实验内容使⽤系统调⽤pipe()建⽴⼀条管道,系统调⽤fork()分别创建两个⼦进程,它们分别向管道写⼀句话,如:Child process1 is sending a message!Child process2 is sending a message!⽗进程分别从管道读出来⾃两个⼦进程的信息,显⽰在屏幕上注:实际要求最好创建两个以上⼦进程,但不需要太多三、实验要求1、这是⼀个设计型实验,要求⾃⾏、独⽴编制程序。
2、两个⼦进程要并发执⾏。
3、实现管道的互斥使⽤。
当⼀个⼦进程正在对管道进⾏写操作时,另⼀个欲写⼊管道的⼦进程必须等待。
使⽤系统调⽤lockf(fd[1],1,0)实现对管道的加锁操作,⽤lockf(fd[1],0,0)解除对管道的锁定。
4、实现⽗⼦进程的同步,当⽗进程试图从⼀空管道中读取数据时,便进⼊等待状态,直到⼦进程将数据写⼊管道返回后,才将其唤醒。
四、程序流程图⽗进程⼦进程五、程序代码及注释#include#include//写管程⽤到的那些函数⽤到的头⽂件#include#include//wait⽤到这个int main(){int fd[2];pipe(fd); //⽗进程创建管道char outpipe[50],inpipe[50]; //存放字符串int pid1,pid2,pid3; //存放返回值while((pid1 = fork()) == -1); //创建不成功就跳不出来了if(pid1 == 0) //⼦进程1{sleep(1); //sleep函数可以决定⼦进程的顺序,等的时间长的话进⼊就晚,输出也就晚lockf(fd[1], 1, 0); //对管道写⼊端⼝加锁sprintf(outpipe,"\n child process 1 is sending message !\n");write(fd[1], outpipe, 50); //把字符串内容写⼊管道写⼊⼝lockf(fd[1], 0, 0); //对管道写⼊⼝解锁exit(0);}else//⽗进程{while((pid2 = fork()) == -1);if(pid2 == 0) //⼦进程2{sleep(2);lockf(fd[1], 1, 0);sprintf(outpipe,"\n child process 2 is sending message !\n");write(fd[1], outpipe, 50);lockf(fd[1], 0, 0);exit(0);}else//⽗进程{while((pid3 = fork()) == -1);if(pid3 == 0) //⼦进程3{sleep(3);lockf(fd[1], 1, 0);sprintf(outpipe,"\n child process 3 is sending message !\n");write(fd[1], outpipe, 50);lockf(fd[1], 0, 0);exit(0);}else//⽗进程{wait(0); //阻塞,等待⼦进程read(fd[0], inpipe, 50); //从管道读出⼝读出信息放到数组printf("%s\n",inpipe);wait(0);read(fd[0], inpipe, 50);printf("%s\n",inpipe);wait(0);read(fd[0], inpipe, 50);printf("%s\n",inpipe); //三个⼦进程,要输出三次exit(0);}}}}六、运⾏结果及说明因为加了锁,不会出现⼦进程同时往管道⾥写的情况,所以,⼦进程互斥地往管道⾥写,⽗进程从管道⾥读并输出,就显⽰成了如上图模样注:⼀个之前不明⽩的流程由fork创建的新进程被称为⼦进程(child process)。
j计算机操作系统实验报告1

计算机操作系统 计算机操作系统实验报告学 姓号: 名:2080121 2080121 王佰荣 2009-122009-12-14提交日期: 成 绩:东北大学秦皇岛分校实验报告【实验编号】 实验编号】1【实验名称】 实验名称】 Linux 安装实验 实验内容 1.熟练掌握 内容】 2.掌握虚拟机的使用 掌握虚拟机的使用。
【实验内容】1.熟练掌握 Linux 系统的安装 2.掌握虚拟机的使用。
实验步骤 步骤】 【实验步骤】 一.虚拟机的使用 <1>.新建虚拟机 <1>.新建虚拟机 Vmware,单击菜单“file—new— machine” 1. 打开 Vmware,单击菜单“file—new—virtual machine”,开始创建虚拟机 虚拟机提供两种安装方式“Typical” Custom” 选择“Typical” 2. 虚拟机提供两种安装方式“Typical”和“Custom”,选择“Typical” 选择需要安装的操作系统, Linux— 3. 选择需要安装的操作系统,选择 Linux—Red Hat Linux 4. 输入虚拟机名称和保存文件夹 选择网络连接方式,选择“ networking” 5. 选择网络连接方式,选择“Use bridged networking” 6. 设定虚拟机的硬盘容量为 3G <2>.调整虚拟机的参数 <2>.调整虚拟机的参数 单击出现的“ settings” 调整虚拟机的参数. 单击出现的“Edit virtual machine settings”,调整虚拟机的参数.单击 Memory”可以调整虚拟机的内存; “Memory”可以调整虚拟机的内存;单击 internet”可以调整网卡的工作 “internet” 模式;单击“cd-rom” 文件代替光盘, 模式;单击“cd-rom”可以设置虚拟机的光驱使用 ISO 文件代替光盘,单 add” remove”按钮可以添加、删除硬件。
【免费下载】东北大学操作系统第三次实验报告

命中次数++
被访问次数最少的
进程退出
};
int page_no;
char flag;
struct one_frame M_Frame[frame_num];
int main()
{
int i,j,k,t,m,kk,r1,r2,p1,p2;
int temp1,temp2,temp3;
int diseffect1=0,diseffect2=0;
实验 5:页面置换算法
一、 题目:编程实现 FIFO 和 LRU 算法
二、 目的: 进一步理解父子进程之间的关系; 理解内存页面调度的机理; 掌握页面置换算法的实现方法; 通过实验比较不同调度算法的优劣; 培养综合运用所学知识的能力。 页面置换算法是虚拟存储管理实现的关键,通过本次试验理解内存页面调度
int k1=0,k2=0,f1=0,f2=0;
float f;
int Access_series[total_instruction];
for(i=0; i<frame_num; i++) M_Frame[i].page_no=-1; printf("页面: ");
for(i=0; i<8; i++)
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的
熟悉和掌握Linux系统基本命令,熟悉Linux编程环境,为以后的实验打下基础。
二、实验原理
基于linux系统的基础操作
三、实验内容(源码、注释、基础内容、扩展点等)
启动、退出、ls(显示目录内容)、cp(文件或目录的复制)、mv(文件、目录更名或移动)、rm(删除文件或目录)、mkdir(创建目录)、rmdir(删除空目录)、cd(改变工作目录)…
cout << "Status contains r1(running),r2(ready) and b(blocked)." << endl;
cin >> sta;
= sta;
if(sta == "r1") ame << ",";
}
cout << endl;
cout << "ready:";
for(i=0; i<(); i++)
C语言编辑、编译
四、实验结果(截图)
ls mkdir:
cd:
rmdir:
实验二进程状态
一、实验目的
自行编制模拟程序,通过形象化的状态显示,使学生理解进程的概念、进程之间的状态转换及其所带来的PCB内容 、组织的变化,理解进程与其PCB间的一一对应关系。
二、实验原理
1.进程在内存中存在三种基本状态:就绪态、执行态、阻塞态
showPCB();
return 0;
}
int main()
{
int act; << endl;
iniQ();
while(1)
{
cout << "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl;
cout << "Please select the action to take." << endl;
cout << "####################################" << endl;
cout << endl;
}
return 0;
}
拓展点:五状态模型
四、实验结果(截图)
创建进程ed:
状态blockedready:
());
());
if()) << endl;
cout << endl;
Pro process;
char nam;
string sta;
cout << "Please enter processes names." << endl;
cin >> nam;
= nam;
= "r2";
(process);
cout << "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl;
2.三种状态在满足某种条件时会发生转换:
①就绪——》运行:调度程序选择一个新的进程运行
②运行——》就绪:运行进程用完了时间片
运行进程被中断,因为一高优先级进程处于就绪状态
③运行——》阻塞:当一进程等待某一事件的发生时,如
请求系统服务; 初始化I/O 且必须等待结果;
无新工作可做; 等待某一进程提供输入 (IPC)
cout << "2:running-->ready" << endl;
cout << "3:running-->blocked" << endl;
cout << "4:blocked-->ready" << endl;
cout << "5:new-->ready" << endl;
cout << "6:running-->exit" << endl;
东北大学操作系统实验报告
计算机科学与工程学院实验报告
实验课程名称
操作系统实验
实验成绩
专业
计算机科学与技术
班级
1507班
指导教师签字
学号
姓名
罗艺博
实验报告批改时间
实验项目目录
1.实验一熟悉Linux系统
2.实验二进程状态
3.实验三进程同步和通信
4.实验四进程的管道通信
5.实验五页面置换算法
实验报告正文
()); {
());
());
if(!())
{
());
());
}
else
cout << "Error in ruTObl1." << endl;
}
else
cout << "Error in ruTObl2." << endl;
showPCB();
return 0;
}
int blTOre()
{
if(!()) {
④阻塞——》就绪:当所等待的事件发生时
三、实验内容(源码、注释、基础内容、扩展点等)
#include <iostream>
#include <vector>
#include <>
#include <algorithm> << endl;
cout << "#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#" << endl;
{
cout << re[i].name << ",";
}
cout << endl;
cout << "blocked:";
for(i=0; i<(); i++)
{
cout << bl[i].name << ",";
}
cout << endl;
return 0;
}
int ruTOre()
{
if(!()) {
cout << endl;
cout << endl;
return 0;
}
int iniQ() << endl;
cout << endl;
for(i=0; i<5; i++) << endl;
cin >> nam;
= nam;
cout << "Please enter processes status." << endl;
cin >> act;
if(act == 2)
ruTOre();
else if(act == 3)
ruTObl();
else if(act == 4)
blTOre();
else if(act == 5)
neTOre();
else if(act == 6)
ruTOex();
else
cout << "Error in select."<<endl;
cout << endl;
if())
{
());
());
}
showPCB();
return 0;
}
int ruTOex()
{
if(!()) {
());
if(!())
{
());
());
}
else
cout << "Error in ruTOex1." << endl;
}
else
cout << "Error in ruTOex2." << endl;