华中科技大学计算机学院操作系统课程设计报告[1]

华中科技大学计算机学院操作系统课程设计报告[1]
华中科技大学计算机学院操作系统课程设计报告[1]

华中科技大学

嵌入式操作系统课程设计实验报告

院系: 计算机科学与技术学院

专业:

班级:

姓名:

指导老师:

报告时间:

计算机科学与技术学院

目录

1.课程设计目的 (3)

2.课程设计环境搭建 (3)

3.内容一:熟悉和理解Linux编程环境

3.1 内容要求 (5)

3.2 设计过程及实现 (5)

4.内容二:掌握添加系统调用的方法

4.1 内容要求 (9)

4.2 设计过程及实现 (9)

5.内容三:掌握添加设备驱动程序的方法

5.1 内容要求 (17)

5.2 设计过程及实现 (17)

6.内容四:理解和分析/proc文件

6.1 内容要求 (22)

6.2 设计过程及实现 (22)

1 课程设计目的

(1)掌握Linux操作系统的使用方法;

(2)了解Linux系统内核代码结构;

(3)掌握实例操作系统的实现方法。

2 课程设计环境搭建

(1)windows 7上,利用虚拟机软件VMware软件搭建的linux平台:◎Ubuntu 11.10 (安装包:ubuntu-11.10-desktop-i386)

◎内核:linux-headers-3.0.0-12-generic

(2)更改root登录:

在现阶段Ubuntu的系统中,是不允许直接以root身份登录系统的,但是在做课设的过程中,需要大量的使用root权限来进行命令的操作。如果以普通用户登录ubuntu,会连编辑一个文件都非常周折。为此,我找到了一种修改系统文件,以达到直接使用root身份登录的方法:

◎开始的时候,只能以普通用户登录,用Ctrl+Alt+T打开终端:

初始化/修改root密码

sudo passwd root

用vi编辑器修改这个文件:

sudo vi /etc/lightdm/lightdm.conf

在文件最后加入这么一行代码:

greeter-show-manual-login=true

然后保存退出,sudo reboot 重启系统。之后就可以输入root用户登录。(3)在添加系统调用中用到的其他内核包:

◎下载和当前实验环境最为接近的系统版本(这点很重要)

使用apt-get install linux-source-3.0.0 命令,

◎下载结果是linux-source-3.0.0.tar.bz2

◎解压命令:tar –xjvf linux-source-3.0.0.tar.bz2 –C /usr/src ◎解压后,在/usr/src目录下得到内核文件夹linux-source-3.0.0

(4)在调用linux图形库时需要安装GTK环境:

◎安装gcc/g++/gdb/make 等基本编程工具

apt-get install build-essential

Tip:如果提示由于依赖项不能安装,需要使用apt的强化版aptitude,这个工具可以自动分析软件包依赖,系统一般不自带,需要先安装,具体过程是:apt-get install aptitude

aptitude install build-essential

aptitude这个工具很强大,对于解决软件包安装时的依赖问题很有帮助。

◎安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件:

apt-get install gnome-core-devel

◎安装GTK核心组件:

apt-get install libgtk2.0-dev

这个安装完成后,GTK环境就基本搭建成功,网上有些教程说要安装其他配置文件,经我亲测,发现只要安装libgtk2.0-dev这个包就能搞定。

3 内容一:熟悉和理解Linux编程环境

3.1 内容要求

(1)编写一个C程序,实现文件拷贝功能

(2)编写一个C程序,使用Linux下的图形库,分窗口显示三个并发进程运行;

3.2 设计过程及实现

(1)文件拷贝:

①文件的拷贝主要的思想就是利用文件指针操作,在两个文件之间进行按字符的fget和fput。从而完成整个文件的拷贝操作。在这个基本功能之外,需要增加程序的健壮性,具体有以下几个方面:

·源文件是否存在且能读取数据;

·是否能创建目的文件,且能向里面写入数据;

·程序需要的argc参数个数是否满足要求;

②基于以上几点和内容要求,主要的程序段如下:

if(argc!=3) //判断参数个数是否为3 ,否则返回{

printf("Error in argc!\n");

return 0;

}

if( (fsource=fopen(argv[1],"rb"))==NULL )

{

printf("Error in open source file!\n"); //判断源文件是否能打开和读出

return 0;

}

if( (ftarget=fopen(argv[2],"wb"))==NULL )

{

printf("Error in open target file!\n"); //判断目的文件时候能创建和写入

return 0;

}

while((c=fgetc(fsource))!=EOF)

{

fputc(c,ftarget); //按字符读取和写入数据}

③执行结果如下:

将source/source.txt文件拷贝到到target.txt,开始时如下图3-1所示:

图3-1 复制开始前source/source.txt文件内容

利用mycopy程序复制,查看target.txt文件复制结果如下图3-2所示:

图3-2 复制后target.txt文件的具体内容

(2)实现三个进程之间的并发程序:

这里需要用到课程实验时的fork( )程序以及GTK的图形显示。

①基本fork()程序,调用显示一个父进程和两个子进程的结构如下:

if((pid_1=fork())==0)

{

printf("Child 1# is running......\n"); //第一个子进程Child 1#

show(argc,argv,"This is Child 1#"); //调用函数显示窗口}

else

{

if((pid_2=fork())==0){

printf("Child 2# is running......\n"); //第二个子进程Child 2#

show(argc,argv,"This is Child 2#"); //调用函数显示窗口

}

else {

printf("Parent # is running......\n"); //父进程Parent #

//由于父进程需要显示全部子进程PID,所以这里直接用参数画窗口

}

}

②调用GTK显示窗体函数模块的结构:

void show(int argc,char *argv[ ],char *title ) {

gtk_init (&argc, &argv); //初始化工具包并且获取命令行参数;

window = gtk_window_new (GTK_WINDOW_TOPLEVEL); //创建新的窗口;

//设定窗口的位置;

gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

//监听窗口的destroy事件;

g_signal_connect (G_OBJECT (window),

"destroy", G_CALLBACK (destroy_progress), NULL);

gtk_window_set_title (GTK_WINDOW (window), title);//用来设定更改窗口标题;

gtk_container_set_border_width (GTK_CONTAINER (window), 20);//设定宽度;

//使用gtk_vbox_new函数建立纵向组装盒;

//为了显示构件,必须将构件放入组装盒中,并将组装盒放在窗口内;

vbox = gtk_vbox_new (FALSE, 10);

gtk_container_set_border_width (GTK_CONTAINER (vbox), 100);//设定宽度;

gtk_container_add (GTK_CONTAINER (window), vbox);

gtk_widget_show (vbox);

//使用gtk_box_pack_start函数将构件放到组装盒中;

sprintf (id_char, "%s ,My ID:%d", title,getpid ()); //显示PID号

label = gtk_label_new (id_char);

gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 10);

gtk_widget_show (label);

sprintf (id_char, "父进程ID:%d", getppid ()); //显示PPID号

label = gtk_label_new (id_char);

gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 10);

gtk_widget_show (label);

button = gtk_button_new_with_label ("close"); //关闭窗口按钮//信号登记函数,监听按钮的clicked事件。

//当窗口clicked时,gtk_widget_destroy 就会被调用。

//而gtk_widget_destroy 函数又调用gtk_main_quit() 结束程序运行。

g_signal_connect_s (G_OBJECT (button), "clicked", G_CALLBACK (gtk_widget_destroy), window);

gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 10);

GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);

gtk_widget_grab_default (button);

//函数显示窗口中的组件

gtk_widget_show (button);

gtk_widget_show (window);

//准备将窗口和所有的组件显示在屏幕上,函数必须在GTK程序的最后调用.

gtk_main ();

}

③编译代码forkgtk.c,运行;

编译命令为:gcc -o forkgtk forkgtk.c `pkg-config --cflags --libs gtk+-2.0`程序运行结果如下图3-3所示:

图3-3 三个并行显示窗口

4.内容二:掌握添加系统调用的方法

4.1 内容要求

(1)采用编译内核的方法,添加一个新的系统调用。

(2)编写一个应用程序,测试新添加的系统调用。

(3)系统调用的功能:文件拷贝。

4.2 设计过程及实现

在这一个部分,投入了比较多的时间。总结起来,主要有这么几个方面:·linux内核版本的不同,linux2.X和linux3.X直接添加系统调用和重新编译内核的方法有差异,甚至linux2.X之间,内核文件也有变化。

·再加上相关资料的步骤和方法不尽相同,甚至还有互斥的步骤,这就使得这个推进比较漫长。我之前的Ubuntu版本是13.04,后来发现因为是64位的,行不通,只好换了一个低版本的Ubuntu11.10,经过自己的实际工作,下面是在运行成功之后,总结的一个过程。(环境和内核配置见本报告第二部分)

(1)修改Makefile文件,修改系统版本后缀:如下图4-1所示:这里加的是本人的姓名的首字母,以示区分。

图4-1 修改Makefile文件版本

(2)修改/usr/src/linux-source-3.0.0/kernel/目录下的sys.c文件,在最后加入新的系统调用,拷贝函数实现。如下所示:

asmlinkage int sys_zcycopy char* s_file, const char* t_file)

{

const int BUF_SIZE = 512;

int fin,fout;

char buf[BUF_SIZE];

int copy_count;

mm_segment_t fs; //段操作的初始化

fs = get_fs();

set_fs(get_ds());

/* 系统调用打开源文件,若失败,返回-1 */

if ((fin = sys_open(s_)) == -1)

{

return -1;

printk("Error in oen source file!");

}

/* 系统调用创建并打开目标文件,若失败,返回-2 */

if ((fout = sys_open(t_ | O_CREAT | O_TRUNC,S_IRUSR | S_IWUSR)) == -1)

{

return -2;

printk("Errod in open target file!");

}

while(copy_count=sys_read(fin,buf,BUF_SIZE))

{ /* 拷贝文件,若失败,返回-3 */

if (copy_count == -1 || sys_write(fout,buf,copy_count) == -1)

{

return -3;

printk("Error in copy file!");

}

}

set_fs(fs); /* 段操作结束*/

return 0;

}

(3)修改/usr/src/ linux-source-3.0.0/arch/x86/include/asm/文件夹下面头文件:unistd_32.h,在文件的系统调用号部分添加一个新的系统调用,具体添加行如下:

#define __NR_sys_zcycopy

同时把下面的总调用号加1,变成348。具体截图如下图4-2所示。

图4-2 添加系统调用号

(4)修改/usr/src/ linux-source-3.0.0/x86/kernel/syscall_table_32.s,

①加入新的一行:

.long sys_zcycopyfile /* 347 */

②具体实现如下图4-3所示:

图4-3 填写系统调用入口表

③当用户程序需要系统提供服务的时候,比如347号调用sys_zcycopyfile,就会通过系统调用产生一个int 0x80的软中断,就会进入到系统调用的入口函数,找到这个调用函数表查找入口函数,也就是这里的.long sys_zcycopyfile,进而在sys.c中找到具体的函数实现asmlinkage int sys_zcycopy char* s_file, const char* t_file) ,从而实现系统调用。

(5)配置内核:(先cd到下载的新的内核包)

①净化解压后的源代码

make mrproper

②安装ncurses环境:

apt-get install libncurses5-dev

ncurses是一个能提供基于文本终端窗口功能的动态库, 提供字符终端处理库,包括面板和菜单。

③对内核选项进行配置

make menuconfig

执行命令之后,会弹出一个框,提示对内核裁剪或配置。这次用不到变化内核模块,直接用键盘方向键选项就行了。

④建立模块间的依赖信息

make dep

这一步正常情况会提示用户多此一举

⑤删除配置时留下的一些不用的文件

make clean

这一步一般没动作,除非是失败后再次编译内核时要用到。

(6)编译内核:

①编译内核文件bzImage:

make bzImage –j9

这一步耗费的时间比较长,所以加了一个 -j9,这种方法使用多线程编程,实际使用时发现能很大的提高效率。(这个视CPU而定,要看CPU最多支持几个线程)

②编译内核模块:

make modules –j9

(7)安装内核

经过最麻烦的编译内核,接下来的安装内核就显得容易多了,输入命令sudo make modules_install 安装内核模块

sudo make install 安装内核

同样,如果嫌时间太慢的话,同样可以在最后加上–j9

(8)环境修改:

接下来主要是将编译安装生成的操作系统让系统引导程序“知道”,具体过程如下图4-4所示:

图4-4 环境修改

具体如下:

①复制内核到boot目录:

cp arch/i386/boot/bzImage /boot/vmlinuz-3.0.69.zcy

可利用Tab快速补全路径和文件,这样方便又不容易出错。

②建立要载入ramdisk的映像文件

mkinitramfs 3.0.69.zcy -o /boot/initrd.img-3.0.69-zcy

③更新启动项文件grub2.conf,直接输入命令update-grub2就行。

(9)最后需要修改/boot/grub/ 目录下 grub.cfg文件;

进入文件之后,按 Ctrl+F 查找 timeout ,将所有的timeout数值改为100;这个数值的单位是秒,这么做的目的是修改启动项的暂停时间,以便让用户有足够的时间选择要进入的操作系统。

(10)重启,进入新系统:启动项如下图4-5所示:

图4-5 系统启动项

※原版本内核比新内核小,入口在Previous Linux version 目录下,如下图4-6所示:以上做的工作相当于在添加新的系统调用的同时还更新了系统。

图4-6 旧的系统入口显示

(11)进入新系统之后,输入命令uname –a / -r查看系统新版本:执行情况如下图4-7所示。可知已经成功的进入到修改后的新内核3.0.69.zcy

图4-7 显示新内核信息

(12)编写测试程序zcopy.c,如下图4-8所示:

图4-8 测试程序,检测新的第347号系统调用

(13)编译运行,生成执行文件。然后看执行程序是否可以实现文件的拷贝,执行结果如下图4-9和图4-10所示,可看到已经成功的实现了预计的功能。

图4-9 执行程序

图4-10 程序执行显示结果

5.内容三:掌握添加设备驱动程序的方法

5.1 内容要求

(1)采用模块方法,添加一个新的设备驱动程序。

(2)要求添加字符设备的驱动。

(3)编写一个应用程序,测试添加的驱动程序

5.2 设计过程及实现

(1)Linux内核中的设备驱动程序是一组常驻内存的具有特权的共享库,是低级硬件处理例程。对用户程序而言,设备驱动程序隐藏了设备的具体细节,对各种不同设备提供了一致的接口,一般来说是把设备映射为一个特殊的设备文件,用户程序可以象对其它文件一样对此设备文件进行操作。

Linux支持3种设备:字符设备、块设备和网络设备。

设备由一个主设备号和一个次设备号标识。主设备号唯一标识了设备类型,即设备驱动程序类型,它是块设备表或字符设备表中设备表项的索引。次设备号仅由设备驱动程序解释,一般用于识别在若干可能的硬件设备中,I/O请求所涉及到的那个设备。

一个典型的驱动程序,大体上可以分为这么几个部分:

①注册设备:

在系统初启,或者模块加载时候,必须将设备登记到相应的设备数组,并返回设备的主设备号;

②定义功能函数:

对于每一个驱动函数来说,都有一些和此设备密切相关的功能函数。以最常用的块设备或者字符设备来说,都存在着诸如 open()、read()这一类的操作。当系统调用这些调用时,将自动的使用驱动函数中特定的模块。来实现具体的操作;

③卸载设备:

在不用这个设备时,可以将它卸载,主要是从/proc 中取消这个设备的特殊文件。

(2)编写Makefile文件如下:

ifneq ($(KERNELRELEASE),)

obj-m := zcydriver.o //obj-m表示编译连接后将生成zcydriver.o模块else

PWD :=$(shell pwd) //PWD为当前目录

KVER :=$(shell uname -r) //KVER为当前系统内核版本

KDIR :=/lib/modules/$(KVER)/build

all:

$(MAKE) -C $(KDIR) M=$(PWD) //调用内核模块编译

clean:

# rm -f *.cmd *.o *.mod *.ko

rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions

# $(MAKE) -C $(KDIR) M=$(PWD) clean

endif

调用Makefile文件之后,其具体过程如下:

①KERNELRELEASE是在内核源码的顶层Makefile中定义的一个变量,在第一次读取执行此Makefile时,KERNELRELEASE没有被定义,所以make将读取执行else之后的内容;

②如果make的目标是clean,直接执行clean操作,然后结束。

③当make的目标为all时,-C $(KDIR)指明跳转到内核源码目录下读取那里的Make$(PWD) 表明然后返回到当前目录继续读入、执行当前的Makefile。

④当从内核源码目录返回时,KERNELRELEASE已被定义,内核的build程序Kbuild也被启动去解析kbuild语法的语句,make将继续读取else之前的内容。

⑤else之前的内容为kbuild语法的语句,指明模块源码中各文件的依赖关系,以及要生成的目标模块名。

(3)编写设备功能函数:(zcydriver.c)

函数框架如下所示:

#define MY_MAJOR 240 //定义设备号

int zcydriver_open(struct inode *inode, struct file *filp) //打开设备ssize_t zcydriver_read(struct file *filp, char __user *buf,

size_t count, loff_t *f_pos ) //读数据

{

sprintf(s2,"%s",s1);

if(count<12)

{

if(!copy_to_user(buf,s2,count)) { return 0; }

}

else

{

if(!copy_to_user(buf,s2,strlen(s2))) { return 0; } }

return -1;

}

ssize_t zcydriver_write(struct file *filp, char __user *buf,

size_t count, loff_t *f_pos) //写数据

{

if (count < 0) return -EINVAL;

if (s1 == NULL) return -ENOMEM;

if (copy_from_user(s1, buf, count+1)) return -EFAULT;

return count;

}

int zcydriver_release(struct inode *inode, struct file *filp) //释放设备

struct zcydriver_fops = { //

.owner = THIS_MODULE,

.open = zcydriver_open,

.read = zcydriver_read,

.write = zcydriver_write,

.release = zcydriver_release,

};

static int zcydriver_init(void) //设备初始化

{

rc = register_chrdev(MY_MAJOR, "zcydriver", &zcydriver_fops); //注册

if(rc < 0)

{

printk("...register %s dev error\n", "zcydriver"); //失败返回错误

return -1;

}

printk("...register zcydriver dev OK\n"); //成功注册设备return 0;

}

static void zcydriver_exit(void)

{

unregister_chrdev(MY_MAJOR, "zcydriver"); //注销设备

printk("...Good Bye!\n");

}

MODULE_LICENSE("GPL");

module_init(zcydriver_init);

module_exit(zcydriver_exit);

(4)设备加载,安装过程如下:

①进入Makefile文件和zcydriver.c文件所在目录,清除make产生的残留文件。命令为:

make clean

②删除先前可能加载过的模块,命令为:

rmmod /dev/zcydriver

③卸载设备:

rm /dev/zcydriver

④编译设备文件,产生模块文件

make

⑤加载模块

insmod zcydriver.ko

⑥加载设备,分配设别号

mknod /dev/zcydriver c 240 0

⑦更改用户对设备的操作权限为可读、可写

chmod 666 /dev/zcydriver

操作系统课程设计

课程设计报告 2015~2016学年第一学期 操作系统综合实践课程设计 实习类别课程设计 学生姓名李旋 专业软件工程 学号130521105 指导教师崔广才、祝勇 学院计算机科学技术学院 二〇一六年一月

- 1 -

- 2 -

一、概述 一个目录文件是由目录项组成的。每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;后14B为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX 的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。UNIX中的文件系统磁盘存储区分配图如下: 本次课程设计是要实现一个简单的模拟Linux文件系统。我们在内存中开辟一个虚拟磁盘空间(20MB)作为文件存储器,并将该虚拟文件系统保存到磁盘上(以一个文件的形式),以便下次可以再将它恢复到内存的虚拟磁盘空间中。文件存储空间的管理可采用位示图方法。 二、设计的基本概念和原理 2.1 设计任务 多用户、多级目录结构文件系统的设计与实现。可以实现下列几条命令login 用户登录 logout 退出当前用户 dir 列文件目录 creat 创建文件 delete 删除文件 open 打开文件 close 关闭文件 - 3 -

read 读文件 write 写文件 mkdir 创建目录 ch 改变文件目录 rd 删除目录树 format 格式化文件系统 Exit 退出文件系统 2.2设计要求 1) 多用户:usr1,usr2,usr3,……,usr8 (1-8个用户) 2) 多级目录:可有多级子目录; 3) 具有login (用户登录)4) 系统初始化(建文件卷、提供登录模块) 5) 文件的创建:create (用命令行来实现)6) 文件的打开:open 7) 文件的读:read8) 文件的写:write 9) 文件关闭:close10) 删除文件:delete 11) 创建目录(建立子目录):mkdir12) 改变当前目录:cd 13) 列出文件目录:dir14) 退出:logout 新增加的功能: 15) 删除目录树:rd 16) 格式化文件系统:format 2.3算法的总体思想 - 4 -

操作系统课程设计报告书

题目1 连续动态内存管理模拟实现 1.1 题目的主要研究内容及预期达到的目标 (1)针对操作系统中内存管理相关理论进行设计,编写程序并进行测试,该程序管理一块虚拟内存。重点分析三种连续动态内存分配算法,即首次适应算法、循环首次适应算法和最佳适应算法。 (2)实现内存分配和回收功能。 1.2 题目研究的工作基础或实验条件 (1)硬件环境:PC机 (2)软件环境:Windows XP,Visual C++ 6.0 1.3 设计思想 首次适应算法的实现:从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。为适应这种算法,空闲分区表中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高址空间保留大的空闲区。 循环首次适应算法的实现:在分配内存空间时,不再每次从表头开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。 最佳适应算法的实现:从全部空闲区中找到能满足作业要求的、且最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表中的空闲分区要按从小到大进行排序,从表头开始查找第一个满足要求的自由分配。 1.4 流程图 内存分配流程图,如图1-1所示。

图1-1 内存分配流程图内存回收流程图,如1-2所示。

图1-2 内存回收流程图 1.5 主要程序代码 (1)分配内存 void allocate(char z,float l) { int i,k; float ad; k=-1; for(i=0;i= l && free_table[i].flag == 1) if(k==-1 || free_table[i].length

操作系统课程设计报告

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级: 13软件工程1班 提交时间: 2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。

二、环境条件 系统: WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景 计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。

(4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。 2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<

华科计算机考研复试数据库复习资料

第一章绪论 1.掌握数据、数据库、数据库管理系统和数据库系统等四个概念2.了解数据管理技术的三个发展阶段 3.数据模型(理解、掌握) 概念、三要素,理解教材关于“三个世界”的描述; 有关“信息世界”的几个概念;(实体、属性、码、域、实体型、实体集、联系) 概念模型及其表示方法;(E-R图) 三大经典数据模型的基本数据结构、数据操作、数据约束、优缺点。4.数据库系统结构(理解、掌握) 数据库系统的三层模式和两级映象结构,基本机构特征、作用; 数据库系统的主从式、分布式、C/S方式等结构及其特征;(了解) 数据库系统的组成; DBMS的功能和组成; 5.数据库系统访问过程(了解) 6.数据库系统特点(理解、掌握) 数据结构化;数据共享性高、冗余度低、易于扩充;数据独立性高;数据由DBMS统一管理和控制。 第二章关系数据库(理解,实践) 1.关系基本概念(掌握) 2.关系模型(熟练掌握) 数据结构;实体完整性和参照完整性;用户自定义完整性 3.关系数据操纵语言(熟练掌握,实践) 关系代数,8种运算符(并、交、差、笛卡尔积、投影、选择、连接、除),其中5种基本运算符(并、差、笛卡尔积、投影、选择)。 第三章SQL语言(理解,实践) 1.SQL语言概述(理解) SQL体系结构和三级模式两层影射结构;SQL特点 SQL语言的基本功能 SQL语言中的几个动词 2.数据定义功能 数据库、表、索引的创建、修改和删除 3.数据查询功能 一般格式(与关系代数的等价性,理解) 简单查询 连接查询 嵌套查询(各种谓词的使用,相关和不相关嵌套查询) 4.数据更新功能 插入、删除、更新 5.视图 概念、定义、删除、视图更新的限制、作用 6.数据控制功能 授权和回收权限

操作系统课程设计报告

上海电力学院 计算机操作系统原理 课程设计报告 题目名称:编写程序模拟虚拟存储器管理 姓名:杜志豪.学号: 班级: 2012053班 . 同组姓名:孙嘉轶 课程设计时间:—— 评语: 成绩: 目录 一、设计内容及要求 (4) 1. 1 设计题目 (4) 1.2 使用算法分析: (4)

1. FIFO算法(先进先出淘汰算法) (4) 1. LRU算法(最久未使用淘汰算法) (5) 1. OPT算法(最佳淘汰算法) (5) 分工情况 (5) 二、详细设计 (6) 原理概述 (6) 主要数据结构(主要代码) (6) 算法流程图 (9) 主流程图 (9) Optimal算法流程图 (10) FIFO算法流程图 (10) LRU算法流程图 (11) .1源程序文件名 (11) . 2执行文件名 (11) 三、实验结果与分析 (11) Optimal页面置换算法结果与分析 (11) FIFO页面置换算法结果与分析 (16) LRU页面置换算法结果与分析 (20) 四、设计创新点 (24) 五、设计与总结 (27)

六、代码附录 (27) 课程设计题目 一、设计内容及要求 编写程序模拟虚拟存储器管理。假设以M页的进程分配了N

块内存(N

华中科技大学计算机网络试题

华中科技大学本科生课程考试试卷(A卷) 课程名称:计算机网络课程类别:专业课考试形式:闭卷 学生班级考试日期 2012.05 学生所在院系控制系 学号姓名任课教师 一、填空题(每题2分,共30分) 1、计算机网络的混合模型分为层,其中网络层的主要功能是。 2、居民区网络用户接入计算机网络的方式有多种,请给出至少2中接入方式、 。 3、物理层协议的四个重要特性分别是、、和。 4、TI标准可以同时传输路音频信号,传输的数据速率为Mb/s。 5、物理层常用的信道复用技术有多种,常用的四种分别为、、 和。 6、数据链路层成帧(帧同步)的主要方法有四种,分别是、、 和。 7、若待发送的数据比特序列为“110111011”,采用CRC编码技术对其进行抗干扰编码,生成多项式为1011,则抗干扰编码为。 8、一个电话话路的频带范围为900Hz-4000Hz,信道的信噪比为30分贝,根据香农公式,该信道上的最大传输速度为bps。 9、在TCP/IP环境下,ICMP协议允许主机或路由器提供差错或异常情况的报告,ICMP报文的类型可以分报文和报文。 10、某单位分配到一个IP地址,其网络号(Net-ID)为:213.15.74.0,根据该单位的具体情况,需要划分六个子网,则其子网掩码应为。 11、IEEE802标准将数据链路层划分为一个子层和一个子层。 12、互联网上自治系统内部常用的路由协议有和。 13、在HDLC协议中,数据比特串011111011111010装帧后实际发出去的比特串为。 14、IPV6的地址是位,其地址类型有三类,分别是、和。 15、滑动窗口协议中发送窗口中的编号代表。

大学计算机实验报告

《大学计算机基础Ⅰ》课程 实验报告 (以上由学生填写) 西南大学计算机与信息科学学院 计算机基础教育系 2017年12月8日 实验成绩记载 课程Array实验报告一 一、实验题目:Win7得基本操作、文件管理与控制面板得使用 二、实验目得: 1.掌握“计算机"(资源管理器)得使用。 2.掌握文件与文件夹得基本操作。 3.了解显示属性得相关内容,掌握显示属性得设置。 4.掌握鼠标、键盘得属性设置。 5.掌握应用程序得添加/删除功能。 6.掌握输入法得设置方法.

7.掌握系统属性得设置方法。 8.掌握计算机名或域得查瞧及更改方法。 三、实验主要内容及过程(实验主要内容得介绍、主要得操作步骤) (列出实验主要内容通过截屏显示出操作过程以及实验结果) (一)文件与文件夹得管理 1、双击桌面上“计算机"→选择D盘→空白处右击选择“新建”重命名 文件夹→改名为“windows练习”→双击“windows练习"→右击空白处分别新建三个文件夹为“LX1”、“LX2”、“LX3”. 2、双击“C盘”打开→搜索框搜索“*、wmf”单击搜索按钮→选择任 意三个图片文件→右击→选择“复制”→粘贴至“LX1"文件夹中→并对三个文件分别重命名为“图片1、wmf”、“图片2、wmf”、“图片3、wmf”。 3、打开“LX1”文件夹→右击图片“1、wmf”→剪切→打开“LX2” 文件夹→右击空白处点击“粘贴”→选中剩下得两个文件→复制→打开“LX3”文件夹→右击选择“粘贴”→右击“LX2”选择“剪切” →打开“LX1”文件夹→右击选择“粘贴”

4、右击“LX3”文件夹→选择“属性”→选择“常规”属性卡→勾选“隐 藏”→右击“LX2"文件夹→选择“常规"属性卡→勾选“已读"

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告学院:计算机学院 专业班级:13软件工程1班 提交时间:2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。 二、环境条件 系统:WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景

计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。 (4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。 2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下: 钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<

2007年华中科技大学计算机专业基础综合(计算机组成原理)真题试卷

2007年华中科技大学计算机专业基础综合(计算机组成原理) 真题试卷 (总分:62.00,做题时间:90分钟) 一、填空题(总题数:13,分数:26.00) __________________________________________________________________________________________ 正确答案:(正确答案:1.1101) __________________________________________________________________________________________ 正确答案:(正确答案:111111) 3.磁盘的平均存取时间是指______,该时间由______时间和平均等待时间组成,对于7200转的磁盘而言,其平均等待时间约为______ms(取整数)。 __________________________________________________________________________________________ 正确答案:(正确答案:CPU发出读写命令后,磁头从某一起始位置移动到新的位置,以及从盘片上读写信息所需的平均时间、平均找道、4ms) 4.在微指令格式设计过程中,有8个互斥型的微命令被分配到一组,当该组采用编码方法表示时,微指令格式的相关字段至少需要______位。 __________________________________________________________________________________________ 正确答案:(正确答案:4) 5.CPU中保存当前正在执行指令的寄存器是______。 __________________________________________________________________________________________ 正确答案:(正确答案:指令寄存器LR) 6.CPU的功能包括指令的序列控制_______、_______和_______。 __________________________________________________________________________________________ 正确答案:(正确答案:操作控制、时间控制、数据加工) __________________________________________________________________________________________ 正确答案:(正确答案:1100) 8.设计一个64位全并行的ALU需要______片74181和______片______部件74182。 __________________________________________________________________________________________ 正确答案:(正确答案:16、5、先行进位) 9.响应中断必须具备下列几个条件,它们分别是中断源有中断请求、允许接受中断请求和______。 __________________________________________________________________________________________ 正确答案:(正确答案:现行指令执行结束) __________________________________________________________________________________________ 正确答案:( 11.“数据线双向传输”这句话描述了总线的______特性。 __________________________________________________________________________________________

大学计算机实验报告2

《大学计算机基础Ⅰ》课程 实验报告手册 \ 实验教师(签字) 西南大学计算机与信息科学学院 计算机基础教育系 年月日

一、实验说明 本课程实验分为一般性实验(验证和简单设计)和综合性实验(课程设计)两部分。从第3周开始参考实验任务书(本报告中的五部分)完成每周规定的实验,并根据进度按要求认真填写本实验报告中的六、七部分,此实验报告将作为实验成绩评定的依据之一。 本课程实验从开课学期第3周开始实习,每周2学时,16周结束,共28学时。除统一安排的时间外,学生还可根据自己的实际适当安排课余时间上机。上机内容参见本报告中的“五、实验任务书”部分。 二、实验目的 通过本实验,让学生掌握计算机的基本操作和基本技能,能够学会知识的运用与积累,能够举一反三,具备一定的独立解决问题的能力和信心,培养学生熟练地使用常用软件的能力及严肃认真的科学作风,为今后的学习和工作打下良好的基础。 三、实验要求 1、每次实验课将考勤,并作为实验成绩的重要依据。 2、每次实验前学生必须充分准备每次的实验内容,以保证每次上机实验的效果。实验过程中必须独立完成。 3、学期结束时,每位同学应将自己的《实验报告》交各专业班长或学习委员,由班长或学习委员以专业为单位、按学号从小到大排列好统一交给实验指导老师,否则无实验成绩。 四、实验报告要求 一共要求填写3个阶段性实验报告、1个综合性实验报告和1份学期总结,与每份实验报告对应产生的电子文档交由实验老师指定的位置,该电子文档也将作为实验成绩评定的依据之一。 五、实验任务书 教材:《大学计算机基础》第五版高等教育出版社 实验参考书:《大学计算机基础实践教程》高等教育出版社 实验一:指法练习、汉字录入 实验目的: 1.掌握鼠标和键盘的使用及正确的操作指法。 2.掌握微型计算机的打开和关闭操作 3.熟悉键盘指法和文字录入 4.了解中英文切换,全半角的切换 实验任务: 1.参见实验参考书中的实验1-1-1中的[任务1](7页) 2.参见实验参考书中的实验1-1-1中的[任务3](7页) 实验二:Windows的基本操作和文件管理操作 实验目的: 1.掌握Windows的基本知识和基本操作 2.掌握“Windows资源管理器”和“我的电脑”的使用 实验任务: 1.参见实验参考书中的实验1-2-1中的全部任务(14页) 2.参见实验参考书中的实验1-2-2中的全部任务(18页)

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级:13软件工程1班 提交时间:2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。 二、环境条件

系统:WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景 计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。 (4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。

2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<

华科计算机学院博士毕业条件

华中科技大学计算机学院2008级博士论文规定 根据《华中科技大学申请博士学位发表学术论文的规定》,我院博士研究生申请博士学位前,须按以下要求之一发表学术论文: 1、A类、B类或学院规定的国际顶尖学术会议论文一篇; 2、SCI期刊论文一篇,C类一篇,国内权威刊物一篇; 3、SCI期刊论文一篇,国内权威刊物二篇; 4、SCI期刊论文一篇,C类二篇。 A、B、C类期刊参照《华中科技大学期刊分类办法》中规定的计算机科学与技术及其它相关学科的期刊执行,其中C类含被EI检索的国际会议论文。 学院规定的国内权威刊物指中国科学、科学通报、Journal of computer Science and Technology、计算机学报、软件学报、计算机研究与发展、Fronties of computer Science in China、电子学报、自动化学报、通信学报、数学学报、应用数学学报、计算机辅助设计与图形学学报及其它相关学科的一级学会学报。 学位申请人发表或接收发表的学术论文中,至少有一篇是以外文全文在C类及以上刊物上发表。 学位申请人发表或被接收发表的学术论文必须是其学位论文的重要组成部分,是学位申请人在导师指导下独立完成的科研成果,以华中科技大学为第一署名单位,以申请人为第一作者(与导师共同发表的论文,导师为第一作者,申请人可以第二作者)。对于“同等贡献作者”排名的认定,参照《华中科技大学期刊分类办法》(校人[2008]28号文)执行。 本规定自2008年入学博士生起执行。本规定的解释和修改权属计算机科学与技术学院学位审议委员会。 华中科技大学计算机科学与技术学院学位审议委员会

操作系统(一个小型操作系统的设计与实现)课程设计

南通大学计算机科学与技术学院操作系统课程设计报告 专业: 学生姓名: 学号: 时间:

操作系统模拟算法课程设计报告 设计要求 将本学期三次的实验集成实现: A.处理机管理; B.存储器管理; C.虚拟存储器的缺页调度。 设计流程图 主流程图 开始的图形界面 处理机管理存储器管理缺页调度 先来先服务时 间 片 轮 转 首 次 适 应 法 最 佳 适 应 法 先 进 先 出 L R U 算 法

A.处理机调度 1)先来先服务FCFS N Y 先来先服务算法流程 开始 初始化进程控制块,让进程控制块按进程到达先后顺序让进程排队 调度数组中首个进程,并让数组中的下一位移到首位 计算并打印进程的完成时刻、周转时间、带权周转时间 其中:周转时间 = 完成时间 - 到达时间 带权周转时间=周转时间/服务时间 更改计时器的当前时间,即下一刻进程的开始时间 当前时间=前一进程的完成时间+其服务时间 数组为空 结束

2)时间片轮转法 开始 输入进程总数 指针所指的进程是 否结束 输入各进程信息 输出为就绪状态的进程的信息 更改正在运行的进程的已运行时间 跳过已结束的程序 结束 N 指向下一个进程 Y 如果存在下一个进程的话 Y N 输出此时为就绪状态的进程的信息 时间片轮转算法流程图

B.存储器管理(可变式分区管理) 1)首次适应法 分配流程图 申请xkb内存 由链头找到第一个空闲区 分区大小≥xkb? 大于 分区大小=分区大小-xkb,修改下一个空闲区的后向指针内容为(后向指针)+xkb;修改上一个空闲区的前向指针为(前向指针)+xkb 将该空闲区从链中摘除:修改下一个空闲区的后向地址=该空闲区后向地址,修改上一个空闲区的前向指针为该空闲区的前向指针 等于 小于延链查找下 一个空闲区 到链尾 了? 作业等待 返回是 否 登记已分配表 返回分配给进程的内存首地址 开始

操作系统课程设计报告

操作系统课程设计实验报告 实验名称:进程控制 姓名/学号: 一、实验目的 学习、理解和掌握Linux与windows的进行控制系统调用的功能,熟悉主要的几个系统调用命令的格式和如何利用系统调用命令进行编程。通过学习,理解如何创建一个进程、改变进程执行的程序、进程和线程终止以及父子进程的同步等,从而提高对进程和线程控制系统调用的编程能力。 二、实验内容 设计并实现Unix的“time”命令。“mytime”命令通过命令行参数接受要运行的程序,创建一个独立的进程来运行该程序,并记录程序运行的时间。 三、实验环境 CPU: Inter ×2 2.10GHz RAM: 3.00GB Windows 7 旗舰版 Linux Ubuntu 10.04 编译: VS2010 四、程序设计与实现 4.1进程控制系统的调用 4.1.1 windows进程控制调用程序中使用的数据结构及主要符号说明 SYSTEMTIME starttime,endtime; //进程开始时间和结束时间 PROCESS_INFORMATION pi //该结构返回有关新进程及 //其主线程的信息 STARTUPINFO si //该结构用于指定新进程的主窗口特性4.1.2 linux进程控制调用程序中使用的数据结构及主要符号说明 struct timeval starttime,endtime //进程开始时间和结束时间 pid_t pid //进程标志符

4.2 程序流程图 图1 windows进程控制调用图2 linux进程控制调用程序运行流程图程序运行流程图 五、实验结果和分析 5.1 windows实验结果和分析

大学生计算机实验报告(完整版)

《大学计算机基础》实验3.1 文件和文件夹的管理 实验报告 专业班级:经贸1103 姓名——- 学号201118910315 指导教师:———完成时间:2011.10 一、实验题目 文件和文件夹的管理 二、实验目的 1.熟悉Windows XP的文件系统。 2.掌握资源管理器的使用方法。 3.熟练掌握在Windows XP资源管理器下,对文件(夹)的选择、新建、移动、复制、删除、重命名的操作方法。 三、实验内容 1.启动资源管理器并利用资源管理器浏览文件。 2.在D盘创建文件夹 3.在所创建文件夹中创建Word文件。 4.对所创建文件或文件夹执行复制、移动、重命名、删除、恢复、创建快捷方式及设置共享等操作。 四、实验步骤 (一)文件与文件夹管理 1.展开与折叠文件夹。右击开始,打开资源管理器,在左窗格中点击“+”展开,点击“—”折叠 2.改变文件显示方式。打开资源管理器/查看,选择缩略、列表,排列图标等

3.建立树状目录。在D盘空白处右击,选择新建/文件夹,输入经济贸易学院,依次在新建文件夹中建立经济类1103班/王帅、王鹏 4..创建Word并保存。打开开始/程序/word,输入内容。选择文件/另存为,查找D盘/经济贸易学院/1103班/王帅,单击保存 5.复制、移动文件夹 6.重命名、删除、恢复。右击文件夹,选择重命名,输入新名字;选择删除,删除文件 7.创建文件的快捷方式。右击王帅文件夹,选择发送到/桌面快捷方式

8.设置共享文件。右击王帅,选择属性/共享/在网络上共享这个文件/确定 9.显示扩展名。打开资源管理器/工具/文件夹选项/查看/高级设置,撤销隐藏已知文件的扩展名 (二)控制面板的设置。 1.设置显示属性。右击打开显示属性/桌面、屏幕保护程序 2.设置鼠标。打开控制面板/鼠标/按钮(调整滑块,感受速度)、指针 3.设置键盘。打开控制面板/键盘/速度(调整滑块,感受速度)、硬件 4.设置日期和时间打开控制面板/日期和时间 5.设置输入法。打开控制面板/区域与语言选项/详细信息/文字服务与输入语言

华中科技大学计算机与网络习题

《计算机网络与通信》作业 姓名:毛春翔 学号:U201211804 班级:电气1204班 1.试比较电信网络和Internet:他们有什么相似之处,又有哪些不同? 答:相同:都是传输数据的网络。 不同:电信网络:电路交换、面向连接、实时性好、有QoS; Internet:分组交换、面向非连接、实时性不好。 2.数据链路层的目标是什么?为了实现这些目标,数据链路层采用了哪些方 法? 答:该层要解决的问题是如何在有差别的线路上进行无差别传输。 数据链路层采用了差错控制,透明传输和寻址的方法。 3.试证明:当用n比特进行数据帧的编号时,若接收窗口等于1,则仅在发送 窗口不超过时(单位为帧),连续ARQ协议才能正常运行。 证明:连续ARQ协议采用边传边等的方式,最坏的结果是每一帧数据都出现问题,每次出现问题时需从错误处重传次,累加则得到发送窗口最大数。 4.以太网的目标是要解决什么问题?采用的是什么方法?以太网从出现至今, 已发生了巨大的变化,请简述:变的是什么,不变的又是什么?

答:以太网的目标是寻找简单的方法把一些距离不太远的计算机互相连接起来,使他们可以很方便和很可靠地进行较高速率的数据通信。采用CSMA/CD方法。变的是速率,不变的是其最短有效帧长为64字节(数据字节最短为46字节),字段不超过1518个字节,采用星形拓扑结构,MAC地址不变。 5.对于目前的IP网络来说,IP地址不足是一个非常现实的问题。就你所知,目 前有哪些方法用于解决这一问题? 答:有无类别域间路由技术和网络地址翻译技术。 6.综合所学内容,请简述计算机网络中采用了哪些方法实现可靠数据传输。 答:数据链路层采用了差错控制,透明传输和寻址的方法。TCP协议其自身提供机制保证数据的可靠性传输。 7.试比较RIP和OSPF协议。 答: 一从网络结构看: RIP的拓扑简单,适用于中小型网络。没有系统内外、系统分区、边界等概念,用的不是分类的路由。每一个节点只能处理以自己为头的至多16个节点的链,路由是依靠下一跳的个数来描述的,无法体现带宽与网络延迟。 OSPF适用于较大规模网络。它把AS(自治系统)分成若干个区域,通过系统内外路由的不同处理,区域内和区域间路由的不

计算机操作系统课程设计

计算机操作系统课程设计 班级:计091-1 姓名: 学号: 使用语言:C++ 指导老师: 学院:

一、系统要求 1、实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 2、实验内容 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条); login 用户登陆 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。

二、系统分析 1、设计思想 本文件为二级文件系统,即要实现对文件的增删改查,同时又具备登陆系统、注册用户的功能,各个用户之间的文件系统互不干扰。 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 系统采用结构体来存储用户、文件目录、文件数据内容: 0 48*5 48*5+44*50 48*5+44*50+264*200 每个分区都是由结构体组成,每个个去的结构体的个数由格式化系统是决定。

整个系统的编码构成主要分为: Allstruct.h 定义了每个分区的结构体; Mysys.h 声明了对系统操作的各种方法;Myuserfile.h 声明了对文件操作的各种方法; Mymain.cpp 整个系统的主函数,操作入口; Mysys.cpp 包含了mysys.h,实现了操作系统的各种方法;Myuserfile.cpp 包含了myuserfile.h,实现了操作文件的各种方法; 2、主要数据结构 Allstruct.h文件的内容: struct s_user //用户区结构体 { long isuse; //是否使用 char name[20]; //用户名 char psd[20]; //密码 long address; //目录地址 };

《大学计算机基础》上机实验报告

《大学计算机基础》 上机实验报告 班级: 姓名: 学号: 授课教师: 日期:年月日

目录 一、Windows操作系统基本操作 ............................. - 1 - 二、Word文字处理基本操作 ................................ - 4 - 三、Excel电子表格基本操作 ............................... - 6 - 四、PowerPoint幻灯片基本操作 ............................ - 8 - 五、网页设计基本操作..................................... - 9 - 六、Access数据库基本操作 ............................... - 10 - 上机实验作业要求: ○1在实验报告纸上手写并粘贴实验结果; ○2每人将所有作业装订在一起(要包封面); ○3全部上机实验结束后全班统一上交; ○4作业内容不得重复、输入的数据需要有差别。

实验名称一、Windows操作系统基本操作 实验目的1、掌握Windows的基本操作方法。 2、学会使用“画图”和PrntScr快捷键。 3、学会使用“计算器”和Word基本操作。 实验内容 1、日历标注 利用“画图”和Word软件,截取计算机上日历的图片并用文字、颜色、图框等标注出近期的节假日及其名称,并将结果显示保存在下面(参考下面样图)。 运行结果是: 主要操作步骤是: 2、科学计算 利用“计算器”和Word软件,计算下列题目,并将结果截图保存在下面(参考样图)。 ○1使用科学型计算器,求8!、sin(8)、90、74、20、67、39、400、50.23、ln(785)的平均值、和值,并用科学计数法显示。 运行结果是: ②将以下十、八、十六进制数转换为二进制数:(894.8125)10、(37.5)8、(2C.4B)16 运行结果是:(需要下载使用“唯美计算器”) ○3计算下列二进制数的加法与乘法:101.1+11.11;1101*1011 运行结果是:(参考样图) 写出主要操作步骤: 3、实验心得体会

操作系统课程设计报告模板

中国石油大学(华东)操作系统课程设计报告 姓名: 学号: 成绩: 目录

实验一、螺旋矩阵 (3) 实验二、用Shell程序实现文件的批量管理 (4) 实验三、驱动下的螺旋矩阵程序 (7) 实验四、哲学家进餐问题 (10) 实验五、NCURSE程序框架 (14) 实验一、螺旋矩阵

一、实验任务 用C语言编写一个螺旋矩阵程序,实现输入行数和列数即可形成A~Z的螺旋矩阵,并用Makefile完成编译。 二、实验环境和工具 VMware Workstation红帽子 Linux-2.4.20-8 三、关键代码 1、螺旋矩阵实现代码(SpiralMatrix.c) #include #define N 10 int main() { int row,col,i,j,x,y,startNum; int dx[4]={0,1,0,-1};//方向 int dy[4]={1,0,-1,0}; int Matrix[N][N]; printf("请输入行数和列数:"); scanf("%d %d",&row,&col); for (i=0;i=0&&x=0&&y

相关文档
最新文档