东北大学秦皇岛分校操作系统课设报告
《操作系统》课内实验报告

《操作系统》课内实验报告一、实验目的本次《操作系统》课内实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握常见操作系统命令的使用,提高对操作系统的实际应用能力和问题解决能力。
二、实验环境本次实验在计算机实验室进行,使用的操作系统为 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)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。
东北大学操作系统实验报告

{
public:
char name;
string status;
};
vector<Pro> ru,re,bl; //ru->running,re->ready,bl->blocked
//function declaration
int helloUI();
re.push_back(process);
else if(sta == "b")
bl.push_back(process);
else
cout << "Error!!" << endl;
cout << "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl;
cout << endl;
}
else
cout << "Error in ruTObl2." << endl;
showPCB();
return 0;
}
int blTOre()
{
if(!bl.empty()) //blockedQueue is not empty.
{
re.push_back(bl.front());
bl.erase(bl.begin());
{
int act; //choose action
helloUI();
cout << "Please initialize the process." << endl;
操作系统课程实验报告

操作系统课程实验报告一、实验目的操作系统是计算机系统中最核心的软件之一,它负责管理计算机的硬件资源和软件资源,为用户提供一个方便、高效、安全的工作环境。
本实验的目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握操作系统的常用命令和操作方法,提高解决实际问题的能力。
二、实验环境操作系统: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. 设计目标在本次操作系统课程设计中,我们的设计目标包括:•实现一个基本的中断处理、进程调度和内存管理机制;•设计一个简单的文件系统;•确保操作系统的稳定性和可靠性;•实现用户命令解析和执行功能。
3. 系统架构我们的操作系统设计采用了经典的分层结构,主要由硬件抽象层、内核和用户接口层组成。
1.硬件抽象层:负责与硬件进行交互,提供基本的底层硬件接口,如处理器管理、中断处理、设备控制等。
2.内核:实现操作系统的核心功能,包括进程管理、内存管理、文件系统管理等。
这一层是操作系统的核心,负责管理和调度系统资源。
3.用户接口层:为用户提供简单友好的界面,解析用户输入的命令并调用内核功能进行处理。
用户可以通过命令行或图形界面与操作系统进行交互。
4. 功能实现4.1 中断处理中断是操作系统与外部设备通信的重要机制,我们的操作系统设计中实现了基本的中断处理功能。
通过在硬件抽象层中捕获和处理硬件的中断信号,内核可以对中断进行相应的处理,保证系统的响应能力和稳定性。
4.2 进程调度进程调度是操作系统中的重要任务之一,它决定了系统如何分配和调度上下文切换。
我们的操作系统设计中实现了一个简单的进程调度算法,通过时间片轮转算法和优先级调度算法来管理多个进程的执行顺序,以提高系统的吞吐量和响应性能。
4.3 内存管理内存管理是操作系统中必不可少的功能,它负责对系统内存的分配和回收。
我们的操作系统设计中实现了基本的内存管理功能,包括内存分区、内存空闲管理和地址映射等。
通过合理的内存管理,可以提高系统的内存利用率和性能。
操作系统实验报告

命令名
功能
Ps
显示进程状态
Pstree
显示进程树(display a tree of processes)
Kill
给进程发信号
Killhall
按名给进程发信号(kill processes by name)
Skill,snice
报告进程状态(report process status)
(set and get scheduling algorithm/parameters)
sched_rr_get_interval
查看指定进程的SCHED_RR值(get the SCHED_RR interval for the named process)
f. Linux/UNIX进程管理类系统调用(4):与进程跟踪/进程运行时间有关的系统调用(2个)
设置静态优先级范围(get static priority range)
sched_setparam,sched_getparam
设置/查看调度参数
(set and get scheduling parameters)
sched_setscheduler,sched_getscheduler
设置/查看调度算法和参数
7,进程状态START。
8,队列指针NEXT,用来将PCB排成队列。
(3)优先数改变的原则:
1,进程在就绪队列中呆一个时间片,优先数加1。
<程序3>
#include<stdio.h>
main()
{
int p1,p2,i;
while((pl = fork ( ) ) ==-1);
东北大学操作系统实验一报告

操作系统实验报告班级物联网1302班学号姓名实验一:熟悉Linux系统目的:①熟悉和掌握Linux系统基本命令,熟悉Linux编程环境,为以后的实验打下基础。
●启动退出、ls(显示目录内容)、cp(文件或目录的复制)、mv(文件、目录更名或移动)、rm(删除文件或目录)、mkdir(创建目录)、rmdir(删除空目录)、cd(改变工作目录)…●C语言编辑、编译内容及要求:●熟练掌握Linux基本文件命令;●掌握Linux编辑程序、对源代码进行编译、连接、运行及调试的过程;●认真做好预习,书写预习报告;●实验完成后要认真总结、完成实验报告login:用户登录系统使用login命令可以允许用户登录系统。
如果没有指定参数,登录时提示输入用户名。
如果该用户不是root,且如果/etc/nologin文件存在,这个文件的内容被显示到屏幕上,登录被终止。
命令语法:Login [选项][用户名]exit:退出系统使用exit命令可以退出shell命令语法:exit[选项]ls:列出目录和文件信息使用ls命令,对于目录而言将列出其中的所有的子目录与文件信息,对于文件而言将输出命令语法:ls[选项][目录|文件]ls命令部分选项含义cp:复制文件和目录使用cp命令可以复制文件vhe目录到其他目录中。
如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有的文件或目录复制到该目录中。
若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
命令语法:cp [选项][源文件|目录][目标文件|目录]cp命令部分选项含义命令格式:mv [选项] 源文件或目录目标文件或目录.mv命令部分选项含义命令格式:rm [选项] 文件…rm命令部分选项含义能是当前目录中已有的目录命令格式:mkdir [选项] 目录..mkdir命令部分选项含义命令格式:cd [目录名]。
东北大学秦皇岛分校操作系统实验4110314董家华-代码原创(DOC)

如果所编制的程序由几十个模块组成,修改其中任一模块时都要将这几十个模块重新连接,则此时make可以大大提高工作效率,减少很多重复性劳动。
6.SHELL
Linux/UNIX的命令解释器俗称SHELL,具有以下两个功能:
(1)显示命令提示符,接收、解释、启动执行命令行。
(2)解释执行批处理文件(Shell script),提供很多内部命令和大量命令组合功能。
进程跟踪调试和进程运行时间
2
Ptrace( ), times
其他与进程/CPU管理相关的系统调用
6
Personality, vm86, prctl, acct, idle, vm86old
c.Linux/UNIX进程和CPU管理类系统调用(1):
与进程建撤和状态有关的系统调用(13个)
名/格式/参数
Linux开始引入窗口工作方式。UNIX和Linux下的窗口平台都基于X-Windows,有KDE窗口平台,GNOME窗口平台、SUN OpenWindows窗口平台等。
用户登录后就进入终端工作方式,用户可以在终端工作方式下键入“starts”命令进入窗口工作方式。进入窗口工作方式后,可以按Ctrl+Alt+F2进入终端工作方式,之后可按Ctrl+Alt+F7再从终端工作方式回到窗口工作方式。
一,实验目的:
(1)加深对进程概念的理解,明确进程和程序的区别。
(2)进一步认识并发执行的实质。
(3)加深对进程管理概念的理解。
(4)分析进程的创建过程。
二,实验内容:
(1)阅读Linux的fork.c源码文件。
(2)a. Linux/UNIX的进程和CPU管理类命令:(8个)
2123509-操作系统课程设计报告

东北大学秦皇岛分校计算机与通信工程学院操作系统课程设计设计题目OPT的模拟实现进程管理器专业名称计算机科学与技术班级学号2123509学生姓名徐泽建指导教师管莹设计时间2015.01 . 04—2015.01.15课程设计任务书专业:计算机科学与技术学号:2123509学生姓名(签名):实验一:必做题设计题目:一、设计实验条件808实验室二、设计任务及要求1.基于空闲分区表的最佳适应算法地模拟实现;2.建立一张类似课本122页的分区使用表;3.参考课本125页分配流程,采用最佳适应算法,为其在分区使用表中分配内存;4.程序要能够在图形界面下形象显示作业,及表中信息;5.最后,对最佳适应算法和其它算法做出比较分析。
三、设计报告的内容1.设计题目与设计任务(设计任务书)(1)、设计可用的内存空闲空间,并能动态输入用户作业所需的内存大小。
(2)、编程模拟各种分配算法的实施过程,按照老师要求,我采用“最佳适应算法发”来分配内存,而在发生内存空间不足时,采用最近最远使用算法(LRU)回收内存。
(3)、实现界面功能,能与用户进行交互,在用户界面建立两张表,一张表示空闲分区表,一张表示内存分配表,在软件界面,用户可以手动添加作业和删除作业。
2.前言(绪论)(设计的目的、意义等)最佳适应算法是一种理论上的算法,它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。
为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。
该算法保留大的空闲区,但造成许多小的空闲区。
通过该课题进一步加深对可变分区存储机制的理解。
加深对存储器动态分区分配算法的认识。
掌握“最佳适应算法发”的内存分配过程。
掌握内存的回收策略。
3.设计主体(各部分设计内容、分析、结论等)(1)最佳适应算法(best fit)所谓“最佳”是指每次为作业分配内存时,总是把能满足要求、又是最小的空闲分区分配给作业,避免“大材小用”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东北大学秦皇岛分校计算机与通信工程学院计算机操作系统课程设计设计题目:进程管理器专业名称计算机科学与技术班级学号xxxx学生姓名xxxx指导教师xxxxx设计时间2014-12-29~2015-1-15课程设计任务书专业:计算机科学与技术学号:学生姓名(签名):设计题目1、高优先权调度算法的模拟2、进程管理器的模拟实现二、主要内容1、目的:编程模拟实现进程管理器,加深对进程、程序概念掌握. 2、进程管理器主界面如下:(1)源代码:<1> Form1.csusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Management;using System.Diagnostics;namespace WindowsApplication1{public partial class Form1 : Form{public Form1(){InitializeComponent();this.listProcesses.MultiSelect = false;this.listProcesses.View = View.Details;this.listProcesses.Columns.Add("pname",(int)CreateGraphics().MeasureString("aaaaaaaaaaaaaaaaaaaaaa",Font).Width);this.listProcesses.Columns.Add("pID", (int)CreateGraphics().MeasureString("000000000000", Font).Width);this.listProcesses.Columns.Add("username", (int)CreateGraphics().MeasureString( "aaaaaaaaaaaaaaaaaaaaa", Font).Width);this.listProcesses.Columns.Add("priority", (int)CreateGraphics().MeasureString( "aaaaaaaaa", Font).Width);this.listProcesses.Columns.Add("Memory usage", (int)CreateGraphics().MeasureString("000000000000000",Font).Width);}private void Form1_Load(object sender, EventArgs e){RefreshList();}private void RefreshList(){Process[] processes;processes = Process.GetProcesses();this.listProcesses.Items.Clear();foreach (Process instance in processes){ListViewItem lvi = new ListViewItem(instance.ProcessName);lvi.SubItems.Add(FormatProcessID(instance.Id));lvi.SubItems.Add(GetProcessUserName(instance.Id));lvi.SubItems.Add(instance.BasePriority.ToString());lvi.SubItems.Add(FormatMemorySize(instance.WorkingSet64));string strToolTip = null;ProcessModuleCollection modules;if (pareTo("System") != 0 || pareTo("Idle") != 0){try{////当进程不充允枚举模块时会产生异常modules = instance.Modules;foreach (ProcessModule aModule in modules){strToolTip += aModule.ModuleName;strToolTip += "; ";}}catch (ponentModel.Win32Exception){}}lvi.ToolTipText = strToolTip;this.listProcesses.Items.Add(lvi);}}//格式化内存字符串private string FormatMemorySize(long lMemorySize){return String.Format("{0,8:N0} K", lMemorySize / 1000);}private string FormatProcessID(int id){return String.Format("{0,8}",id);}private static string GetProcessUserName(int pID){string text1 = null;SelectQuery query1 =new SelectQuery("Select * from Win32_Process WHERE processID=" + pID);ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(query1);try{foreach (ManagementObject disk in searcher1.Get()){ManagementBaseObject inPar = null;ManagementBaseObject outPar = null;inPar = disk.GetMethodParameters("GetOwner");outPar = disk.InvokeMethod("GetOwner", inPar, null);text1 = outPar["User"].ToString();break;}}catch{text1 = "SYSTEM";}return text1;}private void StopProcess_Click(object sender, EventArgs e){Process process = Process.GetProcessById(int.Parse(this.listProcesses.SelectedItems[0].SubItems[1].Text));process.Kill();RefreshList(); //释放进程的资源}private void Refresh_Click(object sender, EventArgs e){RefreshList();}private void CreateProcess_Click(object sender, EventArgs e){DialogBox dlg = new DialogBox();if (dlg.ShowDialog() == DialogResult.OK){try{Process.Start(dlg.FileName);}catch (ponentModel.Win32Exception){MessageBox.Show(String.Format("can't find the files '{0}',please make sure of the name of files then try again。
\n press [start] to search files",dlg.FileName));}}}}}<2> Form1.Designer.csnamespace WindowsApplication1{partial class Form1{/// <summary>/// 必需的设计器变量。
/// </summary>private ponentModel.IContainer components = null;/// <summary>/// 清理所有正在使用的资源。
/// </summary>/// <param name="disposing">如果应释放托管资源,为 true;否则为false。
</param>protected override void Dispose(bool disposing){if (disposing && (components != null)){components.Dispose();}base.Dispose(disposing);}#region Windows 窗体设计器生成的代码/// <summary>/// 设计器支持所需的方法/// 使用代码编辑器修改此方法的内容。
/// </summary>private void InitializeComponent(){this.listProcesses = new System.Windows.Forms.ListView(); this.StopProcess = new System.Windows.Forms.Button();this.btnRefresh = new System.Windows.Forms.Button();this.CreateProcess = new System.Windows.Forms.Button();this.SuspendLayout();//// listProcesses//this.listProcesses.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.Anchor Styles.Top | System.Windows.Forms.AnchorStyles.Bottom)| System.Windows.Forms.AnchorStyles.Left)| System.Windows.Forms.AnchorStyles.Right)));this.listProcesses.Location = new System.Drawing.Point(-1, 10); = "listProcesses";this.listProcesses.ShowItemToolTips = true;this.listProcesses.Size = new System.Drawing.Size(363, 297);this.listProcesses.TabIndex = 0;eCompatibleStateImageBehavior = false;//// StopProcess//this.StopProcess.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorSt yles.Bottom | System.Windows.Forms.AnchorStyles.Right)));this.StopProcess.Location = new System.Drawing.Point(274, 313); = "StopProcess";this.StopProcess.Size = new System.Drawing.Size(100, 23); this.StopProcess.TabIndex = 1;this.StopProcess.Text = "StopProcess";eVisualStyleBackColor = true;this.StopProcess.Click += new System.EventHandler(this.StopProcess_Click);//// btnRefresh//this.btnRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorSt yles.Bottom | System.Windows.Forms.AnchorStyles.Left)));this.btnRefresh.Location = new System.Drawing.Point(12, 313); = "btnRefresh";this.btnRefresh.Size = new System.Drawing.Size(75, 23);this.btnRefresh.TabIndex = 2;this.btnRefresh.Text = "Reflesh(&R)";eVisualStyleBackColor = true;this.btnRefresh.Click += new System.EventHandler(this.Refresh_Click);//// CreateProcess//this.CreateProcess.Anchor = System.Windows.Forms.AnchorStyles.Bottom;this.CreateProcess.Location = new System.Drawing.Point(141, 313); = "CreateProcess";this.CreateProcess.Size = new System.Drawing.Size(100, 23); this.CreateProcess.TabIndex = 3;this.CreateProcess.Text = "CreateProcess";eVisualStyleBackColor = true;this.CreateProcess.Click += new System.EventHandler(this.CreateProcess_Click);//// Form1//this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;this.ClientSize = new System.Drawing.Size(364, 344);this.Controls.Add(this.CreateProcess);this.Controls.Add(this.btnRefresh);this.Controls.Add(this.StopProcess);this.Controls.Add(this.listProcesses); = "Form1";this.Text = " Process Manager";this.Load += new System.EventHandler(this.Form1_Load);this.ResumeLayout(false);}#endregionprivate System.Windows.Forms.ListView listProcesses; private System.Windows.Forms.Button StopProcess;private System.Windows.Forms.Button btnRefresh;private System.Windows.Forms.Button CreateProcess;}}<3> DialogBox.csusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsApplication1{public partial class DialogBox : Form{public DialogBox(){InitializeComponent();StartPosition = FormStartPosition.CenterParent;bel1.Text = "open file...";}private void DialogBox_Load(object sender, EventArgs e){}private void OK_Click(object sender, EventArgs e){DialogResult = DialogResult.OK;}private void Cancel_Click(object sender, EventArgs e){DialogResult = DialogResult.Cancel;}private void btnShow_Click(object sender, EventArgs e){OpenFileDialog dlg = new OpenFileDialog();dlg.Filter = "program|*.exe|" + "all files|*.*";if (dlg.ShowDialog() == DialogResult.OK){boBox1.Text = dlg.FileName;}}public string FileName{get{return boBox1.Text;}}}}<4> DialogBox.Designer.csnamespace WindowsApplication1{partial class DialogBox{/// <summary>/// 必需的设计器变量。