你好,欢迎来到经管之家 [登录] [注册]

设为首页 | 经管之家首页 | 收藏本站

2005-2006学年第二学期《操作系统课程设计》任务书_自动化专业毕业论文

发布时间:2014-12-19 来源:人大经济论坛
2005-2006学年第二学期《操作系统课程设计》任务书_自动化专业毕业论文   一、课程设计的目的  在从事本课程设计之前,学生们已经通过一个学期的系统学习,掌握了操作系统的原理,对操作系统的各个组成部分的工作原理有了一定的认识。然而由于操作系统的复杂性,使得学生对操作系统个部分的理解可能是分散的和不深入的。设置本课程设计的目的,就是让学生通过课程设计,对操作系统有进一步深入的理解,对系统工作原理有一个整体认识。 二、学生完成的任务之一  修改MINIX系统,使得系统启动时显示出你自己的班级、姓名、学号。信息格式如下:  Welcome to MyMinix! Class-?, Name-????????, Num-?? 例如:Welcome to MyMinix! Class-2, Name-LiHua, Num-16,即2班,李华,16号。要求保留原来的内核映像文件,以便系统出错时,可以从一个能够正确工作的版本中启动系统。 三、学生完成的任务之二  修改MINIX系统,使得MINIX为程序员提供一个新的系统功能调用getpids。Getpids的功能描述如下:  int getpids(pid_t *child, pid_t *parent); getpids返回调用者进程和它的父进程的PID,分别放在child和parent所指向的地址中。 四、任务二的提示  (1) 修改目录/usr/include/minix/callnr.h文件,加入新系统调用编号:  #define GETPIDS 78 增加系统调用数目 #define NCALLS 79  (2) 增加_getpid2.c文件到/usr/src/lib/other子目录之下,内容为: /* _getpid2.c */ #include lib.h #define getpid2 _getpid2 #include unistd.h PUBLIC pid_t getpid2(pid_t *child, pid_t *parent) {  message m;  _syscall(MM, GETPIDS, &m);  *child = m.m_type;  *parent = m.m2_i1;   } 在同一个子目录之下,修改文件Makefile,其内容为: OBJECTS = \  $(LIBRARY)(_getpid2.o) \  $(LIBRARY)(_brk.o) \  $(LIBRARY)(_reboot.o) \    …  $(LIBRARY): $(OBJECTS)   aal cr $@ *.o   rm *.o $(LIBRARY)(_getpid2.o): _getpid2.c  $(CC1) _getpid2.c $(LIBRARY)(_brk.o): _brk.c $(CC1) _brk.c   … 在同样的目录下,发出make命令: make   将新的函数_getpid2加入到函数库之中。  (3) 添加新文件getpids.s到目录/usr/src/lib/syscall之中: .sect .text .extern __getpid2                   ! 注意,是2个下划线 .define _getpids .align 2 _getpids:  jmp __getpid2 在同一个子目录之下,修改文件Makefile:  OBJECTS = \  $(LIBRARY)(_getpids.o) \  $(LIBRARY)(_exit.o) \    …  $(LIBRARY): $(OBJECTS)   aal cr $@  *.o   rm *.o  $(LIBRARY)(_getpids.o): _getpids.s   $(CC1) _getpids.s  $(LIBRARY)(_exit.o): _exit.s  $(CC1) _exit.s    … 在同样的目录下,发出make命令: make   将新的函数getpids加入到函数库之中。  (4)修改minix中内存管理部分,以提供系统调用 修改/usr/src/mm/table.c,在数组call_vec[ ]的最后一行之后加入语句: … … do_svrctl,  /* 77 = svrctl  */ do_getset, /* 78 = getpids */ 修改/usr/src/mm/getset.c,在语句 CASE GET_PID:之上加入代码 case GETPIDS:  /* fall through */ case GETPID:  r = mproc[who].mp_pid;  rmp-reply_res2 = mproc[rmp-mp_parent].mp_pid;  break;  (5)测试系统调用是否可用 在/usr/include/中加入getpids.h #ifndef _GETPIDS_H #define _GETPIDS_H #ifndef _ANSI_H #include ansi.h #endif _PROTOTYPE (int getpids, (pid_t * child, pid_t *parent)); #endif   /* _GET_PIDS_H */ 编写一个用户级程序test.c来测试 #include stdio.h #include unistd.h #include getpids.h int main(void){  int pid, ppid;  getpids(&pid, &ppid);  printf(“child = %d, parent = %d\n”, child, parent); } cc test.c ./a.out 五、学生完成的任务之三  修改MINIX系统,使得MINIX为程序员提供系统功能调用get_cursor和set_cursor,分别返回和设置屏幕光标位置,其参数由学生自己定义。编写一个应程序,利用这两个系统调用,在屏幕固定位置每隔1秒钟显示系统当前时间。 六、要求提交的材料 课程设计报告。写出每一天的工作日记,主要步骤所涉及到的工作原理分析,程序代码分析。A4纸,5页。第18周星期一由班长收齐统一上交。 每名同学将改造之后的MINX,压缩为rar文档,文件名格式:r或w + 2位班序号+学号中的2位序号.RAR,例如网络1班12号同学的文件名为:w0112.rar。最后每位同学的rar文件汇总到班长处,由班长制作成光盘,同设计报告一起上交。 七、时间与地点 第16周作准备,查阅资料等 第17周编写程序 上机地点:微机2室 + 宿舍
经管之家“学道会”小程序
  • 扫码加入“考研学习笔记群”
推荐阅读
经济学相关文章
标签云
经管之家精彩文章推荐