东北大学秦皇岛分校操作系统课设报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东北大学秦皇岛分校计算机与通信工程学院
计算机操作系统课程设计
设计题目:进程管理器
专业名称计算机科学与技术
班级学号xxxx
学生姓名xxxx
指导教师xxxxx
设计时间2014-12-29~2015-1-15
课程设计任务书
专业:计算机科学与技术学号:学生姓名(签名):设计题目
1、高优先权调度算法的模拟
2、进程管理器的模拟实现
二、主要内容
1、目的:
编程模拟实现进程管理器,加深对进程、程序概念掌握. 2、进程管理器
主界面如下:
(1)源代码:
<1> Form1.cs
using 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);