《操作系统原理》课程设计报告.doc_第1页
《操作系统原理》课程设计报告.doc_第2页
《操作系统原理》课程设计报告.doc_第3页
《操作系统原理》课程设计报告.doc_第4页
《操作系统原理》课程设计报告.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统原理课程设计报告姓 名: 学 号: 指导老师: _ 起始时间: 2010年3月4日起止时间: 2010年6月 22 日第一章 系统概述1.1 设计背景为了提高同学们的自学能力,老师决定给予一项我们没有接触过的课程设计,也是我们很不熟悉,但是在it界却是很重要的一门技艺,我觉得老师的目的就是为了锻炼我们的自学力,而不是课程设计的能力,课程设计的能力是通过自学能力表现出来的。1.2 设计目的l 掌握unix操作系统常用api的调用;了解目录操作、进程控制等相关知识。l 掌握创建子进程和信号;l 初步学会使用管道进行进程间通讯;l 掌握命令解释程序的设计方法。l 理解并发程序中的同步问题。l 培养c/c+语言程序设计技能,提高程序设计和文档编写能力。l 锻炼团队成员的交流与合作能力。1.3 开发环境操作系统:windows xp 2000 、unix系统开发平台:notepad+、 putty编译器版本:gnu gcc开发语言:c语言第二章 总体要求与设计2.1 设计要求:unix shell是unix的命令解释程序,用于让用户以一种友好的方式运行程序和执行命令。本设计要求在利用c或c+语言在linux环境下设计一个简单的命令解释程序,实现shell的基本功能。即:用户在命令行输入命令(包括内部命令和外部命令)及参数,执行该命令,以及实现输入、输出重定向等功能。1)具体功能要求:u 试验环境为unix,编程语言为c或c+;u 整个程序必须经过测试,完整实现所有基本功能;u 程序的运行必须稳定可靠,不得出现执行某命令时,系统无响应或退出现象;u 程序编写应有良好的风格,源程序必须有比较详细的注释;u 程序中不得使用system()系统调用;2)其它要求l 命令解释程序的提示符为:l 命令解释程序把命令解释为内部命令和外部命令(要执行的程序)。内部命令直接在命令解释程序中执行,外部命令则由解释程序通过fork()创建一个子进程,然后在子进程中调用exec()执行该程序;2.2 程序流程图:图2.1 程序流程图2.3 主程序:int main(int argc, char *argv) int i;init();while (exit1 = 0) int ch = 0;ch = getcommand(command, &numbercommand);switch (ch)case 1: dir1(numbercommand, command);break;case 2:cd(numbercommand, command);break;case 3:pwd(numbercommand, command);break;case 4:md(numbercommand, command);break;case 5:copy(numbercommand, command);break;case 6:date(numbercommand, command);break;case 7: time(numbercommand, command);break;case 8:ren(numbercommand, command);break;case 9:del(numbercommand, command);break;case 10:exit1(numbercommand, command);break;case 11:find(numbercommand, command);break;case 12:more(numbercommand, command);break;deluat: printf(it is not command in this progame!n); break;return 0;第三章 主要模块功能设计由于此次课程设计是以小组的形式完成的,本人主要完成了time、date、pwd、md、ren这五个模块。3.1 time/date模块:1、算法思想:先判断是否符合命令模块的基本格式;不符合的话,则退出time/date模块。符合的话,则对时间相关信息进行保存;最后根据需要打印出相关信息。2、程序实现:void date()time_t timep;struct tm *p;char *wday = sunday, monday, tuesday, wednesday, thursday, friday, saturday;if (numbercommand != 2) printf(usage: date directory_namen);return;time(&timep);p = gmtime(&timep);printf(%d %d %d %sn, (1900 + p-tm_year), (1 + p-tm_mon), p-tm_mday, wdayp-tm_wday);void time()time_t timep;struct tm *p;char *wday = sunday, monday, tuesday, wednesday, thursday, friday, saturday;if (numbercommand != 2) printf(usage: time directory_namen);return;time(&timep);p = gmtime(&timep);printf(%d %d %d %s %d:%d:%dn, (1900 + p-tm_year), (1 + p-tm_mon), p-tm_mday, wdayp-tm_wday, p-tm_hour + 8, p-tm_min, p-tm_sec);3.2 md模块:1、算法思想:调用mkdir函数即可以实现创建一个目录。2、程序实现:void md()if (numbercommand != 3) printf(usage: md directory_namen);return;if (mkdir(command1, s_irusr | s_iread) != 0) printf(create errorn);3.3 pwd模块:1、算法思想:直接打印当前目录pathname;2、程序实现:void pwd()if (numbercommand != 2) printf(usage: pwd directory_namen);return;else printf(%sn, pathname);3.3 ren模块:1、算法思想:直接调用rename函数;2、程序实现:void ren()if (numbercommand != 4) printf(usage: ren directory_namen);return;if (rename(command1, command2) = 0) ;else printf(rename errorn);第四章 总结几周的课程设计终于可以结束了,在这几周里,我们感触颇深。我们学到了很多东西,也暴露出了许多缺点。在写程序的时候我们感觉到要想写好一个程序,首先要有一个清晰的思路,只有思路清晰才能进行下一阶段的设计,这样才能很好的完成整个程序。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论