姓名。学号。指导老师。
起始时间: 2024年3月4日。
起止时间: 2024年6月 22 日。
为了提高同学们的自学能力,老师决定给予一项我们没有接触过的课程设计,也是我们很不熟悉,但是在it界却是很重要的一门技艺,我觉得老师的目的就是为了锻炼我们的自学力,而不是课程设计的能力,课程设计的能力是通过自学能力表现出来的。
掌握unix操作系统常用api的调用;了解目录操作、进程控制等相关知识。
掌握创建子进程和信号;
初步学会使用管道进行进程间通讯;
掌握命令解释程序的设计方法。
理解并发程序中的同步问题。
培养c/c++语言程序设计技能,提高程序设计和文档编写能力。
锻炼团队成员的交流与合作能力。
操作系统:windows xp 2000 、unix系统。
开发平台:notepad++、putty
编译器版本:gnu gcc
开发语言:c语言。
unix shell是unix的命令解释程序,用于让用户以一种友好的方式运行程序和执行命令。本设计要求在利用c或c++语言在linux环境下设计一个简单的命令解释程序,实现shell的基本功能。即:
用户在命令行输入命令(包括内部命令和外部命令)及参数,执行该命令,以及实现输入、输出重定向等功能。
1)具体功能要求:
试验环境为unix,编程语言为c或c++;
整个程序必须经过测试,完整实现所有基本功能;
程序的运行必须稳定可靠,不得出现执行某命令时,系统无响应或退出现象;
程序编写应有良好的风格,源程序必须有比较详细的注释;
程序中不得使用system()系统调用;
2)其它要求。
命令解释程序的提示符为:@
命令解释程序把命令解释为内部命令和外部命令(要执行的程序)。内部命令直接在命令解释程序中执行,外部命令则由解释程序通过fork()创建一个子进程,然后在子进程中调用exec()执行该程序;
图2.1 程序流程图。
int main(int argc, char *ar**)
int i;
init();
while (exit1 ==0)
return 0;
由于此次课程设计是以小组的形式完成的,本人主要完成了time、date、pwd、md、ren这五个模块。
1、算法思想:先判断是否符合命令模块的基本格式;不符合的话,则退出time/date模块。符合的话,则对时间相关信息进行保存;最后根据需要打印出相关信息。
2、程序实现:
void date()
time_t timep;
struct tm *p;
char *wday
if (numbercommand !=2)
time(&timep);
p = gmtime(&timep);
printf("%d %d %d %s", 1900 + p->tm_year), 1 + p->tm_mon), p->tm_mday, wday[p->tm_wday]);
void time()
time_t timep;
struct tm *p;
char *wday
if (numbercommand !=2)
time(&timep);
p = gmtime(&timep);
printf("%d %d %d %s %d:%d:%d", 1900 + p->tm_year), 1 + p->tm_mon),
p->tm_mday, wday[p->tm_wday], p->tm_hour + 8, p->tm_min, p->tm_sec);
1、算法思想:调用mkdir函数即可以实现创建一个目录。
2、程序实现:
void md()
if (numbercommand !=3)
if (mkdir(command[1], s_irusr | s_iread) !0)
1、算法思想:直接打印当前目录pathname;
2、程序实现:
void pwd()
if (numbercommand !=2)
else 1、算法思想:直接调用rename函数;
2、程序实现:
void ren()
if (numbercommand !=4)
if (rename(command[1], command[2]) 0)
else几周的课程设计终于可以结束了,在这几周里,我们感触颇深。我们学到了很多东西,也暴露出了许多缺点。在写程序的时候我们感觉到要想写好一个程序,首先要有一个清晰的思路,只有思路清晰才能进行下一阶段的设计,这样才能很好的完成整个程序。
由于平时缺乏锻炼,很少去写这种**较多的程序,我们发现在宏观的控制和把握上很缺乏经验。也许主要的问题还是自己能力的问题,语音运用能力差,掌握性差,希望能在以后的学习中多一些这样的机会,多多锻炼。
unix环境高级编程》中文版 《现代操作系统原书(第2版)》
自己动手写操作系统设计及实现 (第三版)
《操作系统原理》课程设计报告
操作系统原理 课程设计报告书。题目 进程控制模块的设计与实现。专业 网络工程 学号 131007111 学生姓名 李亚豪。指导教师 刘双红。完成日期 2015 12 05 第1章课题概述 3 1.1 设计要求 3 1.2 设计理论依据 3 第2章设计简介和内容 6 2.1 设计简介 6 2.2 设计...
操作系统原理 课程设计报告
掌握linux操作系统的使用方法 了解linux系统内核 结构 掌握实例操作系统的实现方法 本次课程设计采用的操作系统环境是windows10 ubuntu双系统,ubuntu系统版本号为16.04,内核版本号为linux 4.4.4 前两个实验在当前ubuntu环境下完成,后两个实验在win10下...
操作系统原理课程设计
操作系统原理 课程设计。课题名称 进程调度算法。姓名 班级 学号 课程设计起止时间 2005年1月2日 2005年1月7日。指导教师成绩 课程设计任务书。进程调度算法。一 设计说明。该程序实现了进程的创建,且对该进程队列进行动态优先权抢占式和时间片轮转算法的调度。二 详细设计。1.流程图。2.程序运...