ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:269.23KB ,
资源ID:11805914      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11805914.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统安全课程设计报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统安全课程设计报告.docx

1、操作系统安全课程设计报告中南大学操作系统安全课程设计报告学生姓名 指导教师 学 院 信息科学与工程学院 专业班级 完成时间 2015年12月19日 目 录第一章 概述 2第二章 需求分析 3第三章 总体设计 5第四章 详细设计 6一 界面设计 6二 获取正在运行的进程及其信息 8三 结束进程 9四 获取其他信息 10五 绘制图表 11第五章 调试分析 15第六章 使用说明 16第七章 测试结果 17第八章 课程设计总结 21第九章 参考文献 22操作系统安全课程设计第一章 概述操作系统安全是整个计算机系统安全的重要基础,主要针对操作系统层面的安全进行剖析,是上层运行的重要保证。与计算机原理、编

2、译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。本课程设计的目的综合应用学生所学知识,建立安全系统的概念,理解和巩固操作系统基本理论、原理和方法,掌握安全操作系统开发的基本技能。任务管理器是在Windows系统中管理应用程序和进程的工具,通常由Windows操作系统自带,也有提供增强功能的第三方软件。通过任务管理器用户可以方便的查看当前运行的程序、进程、用户、网络连接以及系统对内存和CPU的资源占用,并可以强制结束某些程序和进程,此外还可以监控系统资源的使用状况。Windows 任务管理器首次出现是在1998年美国微软公司发行的Windows98操作系统中,此后微软的各个版本的W

3、indows操作系统都集成了任务管理器。任务管理器并不是Windows系统的专利,它广泛运用于各种操作系统中,在苹果公司的Mac OS 操作系统中有类似的活动监视器(Activity Monitor),在基于Linux的ubuntu操作系统有相类似功能的系统监视器。 Windows任务管理器提供了有关计算机性能的信息,并显示了计算机上所运行的程序和进程的详细信息;如果连接到网络,那么还可以查看网络状态并迅速了解网络是如何工作的。它的用户界面提供了文件、选项、查看、窗口、关机、帮助等六大菜单项,其下还有应用程序、进程、性能、联网、用户等五个标签页。课题设计就是模拟Windows任务管理器,开发的

4、一个Windows进程管理软件。主要设计的是一个基于窗体的C#程序,在主对话框上面放置了一个标签控件,并创建了应用程序、进程和性能三个页面,标签控件用于选择并显示页面。三个页面分别用于显示当前运行的窗口程序、进程及进程模块、系统资源使用情况。程序还实现了结束任务、等对进程管理的基本功能。在的设计过程中,通过调用Windows API函数而获得任务、进程、线程模块,以及系统资源使用情况等信息。最后在Windows10系统上进行测试,实现了进程管理的基本功能。第二章 需求分析设计一个Windows或Linux下的进程管理与监控程序,要求该程序完成以下功能:(1)可获取当前正在运行的所有进程,包括进

5、程PID、进程名称、CPU使用情况、当前用户名、内存占用量等;(2)能进一步获取各进程的所有线程情况;(3)能通过命令终止某个进程的执行,终止时能将其子孙进程全部终止;(4)要求界面友好。关于Windows任务管理器:任务管理器的用户界面提供了文件、选项、查看、窗口、关机、帮助等六大菜单项,例如“关机”菜单下可以完成待机、休眠、关闭、重新启动、注销、切换等操作,其下还有应用程序、进程、性能、联网、用户等五个标签页,窗口底部则是状态栏,从这里可以查看到当前系统的进程数、CPU使用比率、更改的内存容量等数据,默认设置下系统每隔两秒钟对数据进行1次自动更新,当然你也可以点击“查看更新速度”菜单重新设

6、置。1. 应用程序这里显示了所有当前正在运行的应用程序,不过它只会显示当前已打开窗口的应用程序,而QQ、MSN Messenger等最小化至系统托盘区的应用程序则并不会显示出来。你可以在这里点击“结束任务”按钮直接关闭某个应用程序,如果需要同时结束多个任务,可以按住Ctrl键复选;点击“新任务”按钮,可以直接打开相应的程序、文件夹、文档或Internet资源,如果不知道程序的名称,可以点击“浏览”按钮进行搜索,其实这个“新任务”的功能看起来有些类似于开始菜单中的运行命令。2. 进程这里显示了所有当前正在运行的进程,包括应用程序、后台服务等,那些隐藏在系统底层深处运行的病毒程序或木马程序都可以在

7、这里找到,当然前提是你要知道它的名称。找到需要结束的进程名,然后执行右键菜单中的“结束进程”命令,就可以强行终止,不过这种方式将丢失未保存的数据,而且如果结束的是系统服务,则系统的某些功能可能无法正常使用。Windows的任务管理器只能显示系统中当前进行的进程,而Process Explorer可以树状方式显示出各个进程之间的关系,即某一进程启动了哪些其他的进程,还可以显示某个进程所调用的文件或文件夹,如果某个进程是Windows服务,则可以查看该进程所注册的所有服务,需要的朋友可以从下载。3. 性能从任务管理器中我们可以看到计算机性能的动态概念,例如CPU和各种内存的使用情况。CPU使用情况

8、:表明处理器工作时间百分比的图表,该计数器是处理器活动的主要指示器,查看该图表可以知道当前使用的处理时间是多少。CPU使用记录:显示处理器的使用程序随时间的变化情况的图表,图表中显示的采样情况取决于“查看”菜单中所选择的“更新速度”设置值,“高”表示每秒2次,“正常”表示每两秒1次,“低”表示每四秒1次,“暂停”表示不自动更新。PF使用情况:正被系统使用的页面文件的量。页面文件使用记录:显示页面文件的量随时间的变化情况的图表,图表中显示的采样情况取决于“查看”菜单中所选择的“更新速度”设置值。总数:显示计算机上正在运行的句柄、线程、进程的总数。执行内存:分配给程序和操作系统的内存,由于虚拟内存

9、的存在,“峰值”可以超过最大物理内存,“总数”值则与“页面文件使用记录”图表中显示的值相同。物理内存:计算机上安装的总物理内存,也称RAM,“可用”表示可供使用的内存容量,“系统缓存”显示当前用于映射打开文件的页面的物理内存。内核内存:操作系统内核和设备驱动程序所使用的内存,“页面”是可以复制到页面文件中的内存,由此可以释放物理内存;“非分页”是保留在物理内存中的内存,不会被复制到页面文件中。4. 联网这里显示了本地计算机所连接的网络通信量的指示,使用多个网络连接时,我们可以在这里比较每个连接的通信量,当然只有安装网卡后才会显示该选项。5. 用户这里显示了当前已登录和连接到本机的用户数、标识(

10、标识该计算机上的会话的数字ID)、活动状态(正在运行、已断开)、客户端名,可以点击“注销”按钮重新登录,或者通过“断开”按钮连接与本机的连接,如果是局域网用户,还可以向其他用户发送消息。第三章 总体设计我决定用java语言完成本次课程设计的题目。设计思路:java可以通过一些命令拿到所需要的信息,比如系统版本名称、内存使用情况、CPU使用情况、进程状况、线程状况等等,拿到这些信息以后就可以制作一个简易的任务管理器了。相对来说,java语言写界面是比较简单的,因此任务管理器的界面可以完全仿照Windows自带任务管理器的界面来完成。 下图为主要的设计方案,java中可以通过如下两个包来获取所需的

11、信息,所以这些信息采用get、 set方法获取后直接打印的方法展示。进程的信息则需要获取权限,我采用用system函数调dos命令的方法来实现。进程的新建、关闭也同样用dos命令完成。Windows任务管理器由性能、进程、应用程序三大部分组成。其实这三大部分是有机的联系在一起的,尤其是性能和进程,性能中除了CPU使用率以外,其余的数据都是由进程模块顺便取得的。 Windows的任务管理器通过NtQuerySystemInformation的调用来获取各类信息,如CPU使用率,内存使用率,句柄总数,线程总数,进程总数等等。在任务管理器中的几乎所有信息都是来自该函数。我的理解中,这两个包里的函数和

12、方法都会用到这个函数。 java.lang.management.ManagementFactorycom.sun.management.OperatingSystemMXBean在这个任务管理器中,除了应该可以显示上面提到的信息之外,还要有新建和结束进程、画出内存和CPU使用情况图的功能。第四章 详细设计1界面设计预计设计为类似Windows自带的任务管理器的界面,需要用到java自有包java.awt.*,javax.swing.*。这两个包中包含了许多制作窗口所需的方法。这里需要用到许多控件来实现,如JTabbedPane控件,用于加入选项卡。还需要放置表格用来显示进程的各项信息。JTa

13、bbedPane jtp; JPanel process_tab; JPanel service_tab; JPanel function_tab; /显示进程的表格 JTable pTable = new JTable(); /显示服务的表格 JTable sTable = new JTable(); /中间面板 JPanel mainpanel;final Vector pb = new Vector(5); final Vector sb = new Vector(5); /进程信息面板 JLabel process_num;各个面板的各项配置也在界面设计中完成,如选项卡出现的位置、名称

14、以及颜色等。/选项卡布局public void setTab() throws Exception jtp = new JTabbedPane(JTabbedPane.TOP); process_tab = new JPanel(); process_tab.setLayout(null); ProcessTab(); service_tab = new JPanel(); /service_tab.setLayout(null); ServiceTab(); function_tab = new JPanel(); function_tab.setLayout(null); Function

15、Tab(); process_tab.setBackground(Color.WHITE); service_tab.setBackground(Color.WHITE); function_tab.setBackground(Color.WHITE); jtp.add(进程 ,process_tab); jtp.add(待定,service_tab); jtp.add(性能 ,function_tab); mainpanel = new JPanel(); mainpanel.setBounds(0, 0, 545, 580); mainpanel.add(jtp); this.getCon

16、tentPane().add(mainpanel); southPanel(); 接着只要取到各项选项卡所需的信息,将其加入各个选项卡内即可,进程选项卡还需添加表格中各个选项,这里用一个字符串数组来完成。String cname = 映像名称, 用户名, 优先权, PID, 线程数 ; for (int i = 0; i 5; i+) pb.add(cnamei);2获取正在运行的进程及其信息获得进程及其信息采用通过命令行获取的方式,在此之前必须先建立一个类(命名为ProcessImformation)来放置取到的信息,所需信息有:进程名称、用户名、优先权、进程PID、线程数,建立一个函数,再

17、增加该函数变量的get方法。 ProcessImformation(String caption, String csname, String priority, String processId, String threadCount) this.caption = caption; this.csname = csname; this.priority = priority; this.processId = processId; this.threadCount = threadCount;取进程信息的命令:String procCmd = System.getenv(windir) +

18、 system32wbemwmic.exe process get Caption,CSName,Priority,ProcessId,ThreadCount;/ 取进程信息readProcess(Runtime.getRuntime().exec(procCmd);String handCmd = System.getenv(windir)+ system32wbemwmic.exe process get Name,HandleCount;/ 取句柄信息 readHandle(Runtime.getRuntime().exec(handCmd);hand.getOutputStream()

19、.close();InputStreamReader ir = new InputStreamReader(hand.getInputStream();LineNumberReader input = new LineNumberReader(ir);String line = input.readLine();int cn = line.indexOf(Name);int ch = line.indexOf(HandleCount); while (line = input.readLine() != null) if (line.length() cn) continue; int han

20、dle = Integer.parseInt(line.substring(ch, cn-1).trim(); i += handle; proc.getOutputStream().close();InputStreamReader ir = new InputStreamReader(proc.getInputStream();LineNumberReader input = new LineNumberReader(ir);String line = input.readLine();int capidx = line.indexOf(Caption);int cmdidx = line

21、.indexOf(CSName);int prioidx = line.indexOf(Priority);int pid = line.indexOf(ProcessId);int tc = line.indexOf(ThreadCount);while (line = input.readLine() != null) if (line.length() tc) continue; / 字段出现顺序:Caption,CommandLine,Priority,ProcessId,ThreadCount String caption = line.substring(capidx, cmdid

22、x - 1).trim(); String caname = line.substring(cmdidx, prioidx - 1).trim(); String priority = line.substring(prioidx, pid - 1).trim(); String processId = line.substring(pid, tc - 1).trim(); String ThreadCount = line.substring(tc, line.length() - 1).trim(); procei = new ProcessImformation(caption, can

23、ame, priority,processId, ThreadCount); /int th = Integer.parseInt(ThreadCount); i = i + 1; /t += th; 3结束进程 结束进程同样通过命令行实现,在进程表格中选中某进程后点击结束进程按钮,弹出对话框显示“确定要结束进程(加入进程名称)吗?”,点击“是”后可以结束进程。/ 结束进程按钮JButton kill = new JButton(结束进程(E);kill.setBounds(400, 425, 98, 23);kill.addActionListener(this);process_tab.a

24、dd(kill);用户点击按钮之后转到如下函数:public void actionPerformed(ActionEvent args) if(args.getActionCommand().equals(结束进程(E) if (pTable.getSelectedRow() != -1) if (pTable.getValueAt(pTable.getSelectedRow(), 0) != null) / Toolkit.getDefaultToolkit().beep(); String pname = pTable.getValueAt(pTable.getSelectedRow()

25、, 0).toString(); pname = pname.replace(, ); pname = pname.trim(); int n = JOptionPane.showConfirmDialog(this, 确定要结束进程 + pname + 吗?, 确认对话框, JOptionPane.YES_NO_OPTION); if (n = JOptionPane.YES_OPTION) try String kill = wmic process where name= + pname + call terminate; Runtime.getRuntime().exec(kill);

26、 catch (Exception ex) JOptionPane.showMessageDialog(this, pname + 已结束!, 消息, JOptionPane.WARNING_MESSAGE); elseJOptionPane.showMessageDialog(this, 没有选中项!, 消息,JOptionPane.WARNING_MESSAGE);4获取其他信息获得其他信息的方式与获得进程及其信息的方式相同,在此之前必须先建立一个类(命名为OSInformation)来放置取到的信息,所需信息有:操作系统名称及版本、总物理内存、已使用物理内存、剩余物理内存、CPU使用情况

27、,建立一个函数,再增加该函数变量的get、set方法。由于方法与获得进程及其信息的方法相同,不再赘述。int kb = 1024;OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();/ 操作系统String osName = System.getProperty(os.name);String osVersion = System.getProperty(os.version);/ 总的物理内存long totalMemorySize = osmxb

28、.getTotalPhysicalMemorySize() / (kb * kb);/ 剩余的物理内存long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize() / (kb * kb);/ 已使用的物理内存Long usedMemory = (osmxb.getTotalPhysicalMemorySize() -osmxb.getFreePhysicalMemorySize() / (kb * kb);if (osName.toLowerCase().startsWith(windows) this.getProcessFo

29、rWindows(); / 构造返回对象OSInformation infoBean = new OSInformation();infoBean.setFreePhysicalMemorySize(freePhysicalMemorySize);infoBean.setOsName(osName + +osVersion);infoBean.setTotalMemorySize(totalMemorySize);infoBean.setUsedMemory(usedMemory);return infoBean;5绘制图表绘制CPU和内存使用情况。首先需要建立一个坐标类,由于要绘制两个图,所

30、以需要x1、x2、y1、y2四个坐标变量。绘制图表需要用到时钟函数,令其可以自动刷新,自动取到所需的信息并且绘图。每取到新的结果,旧的结果(上一个结果)则向左移动一格。public void updateChart() /物理内存使用记录中的表格 for(int i = 0;i10;i+) XY xy = new XY(); xy.x1 = 0; xy.y1 = (i+1)*13; xy.x2 = 500; xy.y2 = (i+1)*13; if(!checkEqual(xy,X_memory_record) X_memory_record.add(xy); Y_memory_record.clear(); for(int i = 0;i70;i+) XY xy = new XY(); xy.x1 = (i+1)*13-move; xy.y1 = 0; xy.x2 = (i+1)*13-move; xy.y2 = 200; if(!checkEqual(xy,Y_memory_record) Y_memory_record.add(xy); /物理内存使用记录中的数据 List temp_memory_reco

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1