资源简介
华中科技大学操作系统课程设计专用,内含5个部分:
1.1 利用系统调用实现文件拷贝(含代码和makefile)
1.2 多进程编程,实现三个子进程窗口(含代码和makefile)
2 自己的系统调用,只有系统调用实现的代码,系统调用需要自己编译内核
3 字符设备驱动的编写(含代码和makefile)
4 GTK编写系统监视器,可以监测系统很多方面(含代码和makefile)
5 虚拟文件系统(实现的比较简单)(含代码和makefile)
说明:GTK实现的系统监视器,功能如下:
1.CPU各种信息,包括物理信息以及CPU利用率绘图
2.内存各种信息,包括利用率,内存使用率绘图等
3.进程信息,可以杀死进程,查看进程,以及运行新进程,同时可以查看进程详细信息
4.系统信息,关于系统的信息,如系统版本等
5.时间计时,开机时间以及运行时间计算,还有各种小功能
6.总代码量在1050行多一点
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “MenuBar.h“
#include “CPUinfo.h“
#include “Meminfo.h“
#include “Processinfo.h“
#include “Sysinfo.h“
//Create the main version window
void CreateVersion(GtkWidget *vbox);
void CreatePageFour(GtkWidget *notebook);
gint refresh_clock(gpointer data);
GtkWidget *statusbar;
int main(int argc char* argv[])
{
GtkWidget *window *main_vbox;
gtk_init(&argc &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window) “System monitor“);
gtk_window_set_default_size(GTK_WINDOW(window) 800 600);
gtk_window_set_position(GTK_WINDOW(window) GTK_WIN_POS_CENTER);
gtk_widget_show(window);
g_signal_connect(G_object(window)“destroy“G_CALLBACK(gtk_main_quit)NULL);
main_vbox = gtk_vbox_new(FALSE 10);
gtk_container_set_border_width(GTK_CONTAINER(main_vbox) 5);
gtk_container_add(GTK_CONTAINER(window) main_vbox);
gtk_widget_show(main_vbox);
//Create menubar
CreateMenuBar(main_vbox);
CreateVersion(main_vbox);
gtk_timeout_add(500 refresh_cpu NULL);
gtk_timeout_add(500 refresh_mm NULL);
gtk_timeout_add(500 refresh_swap NULL);
gtk_widget_show_all(window);
gtk_main();
}
//Create the main version window
void CreateVersion(GtkWidget *vbox)
{
GtkWidget *notebook;
gint context_id;
notebook = gtk_notebook_new();
gtk_notebook_set_tab_pos((GtkNotebook *)notebook GTK_POS_TOP);
gtk_notebook_set_show_border((GtkNotebook *) notebook FALSE);
gtk_box_pack_start(GTK_BOX(vbox) notebook TRUE TRUE 0);
gtk_widget_show(notebook);
statusbar = gtk_statusbar_new();
gtk_box_pack_start(GTK_BOX(vbox) statusbar TRUE TRUE 0);
gtk_widget_show(statusbar);
context_id = gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar) “Timestatus“);
gtk_timeout_add(1000 refresh_clock GINT_TO_POINTER(context_id));
refresh_clock(GINT_TO_POINTER(context_id));
CreatePageOne(notebook);
CreatePageTwo(notebook);
CreatePageThree(notebook);
// CreatePageFour(notebook);
CreatePageFive(notebook);
gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook) 1);
}
void CreatePageFour(GtkWidget *notebook)
{
GtkWidget *label *vbox *frame;
frame = gtk_frame_new(““);
gtk_container_set_border_width(GTK_CONTAINER(frame) 10);
gtk_widget_show(frame);
gtk_notebook_append_page(GTK_NOTEBOOK(notebook) frame gtk_label_new(“Page4“));
}
gint refresh_clock(gpointer data)
{
//GtkWidget *stbar = data;
time_t t;
t=time(NULL);
char msg[1000] temp[100];
char *buf *p;
buf = ctime(&t);
//there are some
p = strtok(buf “\n“);
strcpy(msg buf);
//strcat(msg “ CPU used :“);
sprintf(temp “ CPU used: %2.2lf%%“ cpu_rate * 100);
strcat(msg temp);
sprintf(temp “ Memory used: %2.2lf%
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6552 2015-03-12 23:29 4-mymonitor\CPUinfo.h
文件 3204 2015-03-10 18:57 4-mymonitor\main.c
文件 96 2015-03-12 19:41 4-mymonitor\makefile
文件 7742 2015-03-12 23:38 4-mymonitor\Meminfo.h
文件 2374 2015-03-12 23:33 4-mymonitor\MenuBar.h
文件 31 2015-03-12 23:52 4-mymonitor\path
文件 6984 2015-03-13 08:03 4-mymonitor\Processinfo.h
文件 3783 2015-03-13 01:06 4-mymonitor\Sysinfo.h
目录 0 2015-04-14 17:26 4-mymonitor
----------- --------- ---------- ----- ----
30766 9
相关资源
- 缓冲池 操作系统课设
- 操作系统课设计 SPOOLing系统
- 操作系统课设 linux 下编程模拟多进程
- 操作系统课设.docx
- 广工操作系统课设代码及文档
- 操作系统课设 Ubuntu下运行读者写者问
- 多用户多目录文件系统设计与实现
- 操作系统课设之页面置换
- InCtrl5 1.0.0.0(系统监视) 简体中文版
- 广工操作系统课设
- 用多线程同步方法解决生产者-消费者
- 操作系统课设 模拟二级文件系统管理
- 华南理工大学操作系统课设
- 操作系统课设 缓冲池的管理模拟
- 操作系统课设银行家算法(C源码+报告
- 操作系统课设-贪吃蛇游戏实现
- 用多进程同步方法演示“生产者-消费
- 付晓帆--华科操作系统课设
- 操作系统课设用多进程同步方法演示
- 操作系统课设磁盘空间管理实验
评论
共有 条评论