《操作系统》课程设计说明书

《操作系统》课程设计说明书
《操作系统》课程设计说明书

河南城建学院

《操作系统》课程设计说明书

设计题目:UNIX/Linux文件系统分析

专业:计算机科学与技术

指导教师:邵国金耿永军陈红军

班级:0614082

学号:061408261

姓名:贠炳森

同组人:叶矿辉、陈宇

计算机科学与工程系

2011年1月7日

前言

在现在计算机更新如此迅速的时代要学好计算机软件技术,特别是操作系统的学习,不仅要努力学好课本上的基础知识,还要经常在图书馆看些有关这方面的书籍,而更重要的是要有足够的实践经验,也要注重和同学的交流,经常尝试性的做些小的操作系统,对自己技术的提升会有很大的帮助。

同时,学习计算机操作系统技术,除了需要刻苦努力外,还需要掌握软件和操作系统的原理与设计技巧。如何学习和掌握操作系统技术的原理与实际技巧呢?除了听课和读书之外,最好的方法恐怕就是在实践中练习。例如,自己设计一个小型操作系统,多使用操作系统,多阅读和分析操作源代码等。但由于我们的条件和学时有限,在理论学习过程中没有给同学们提供更多的实验机会。本操作系统课程设计,是给同学提供一个集中实验的机会。希望同学们通过该设计加深对所学习课程的理解。

本设计是基于课程中学到的UNIX系统调用,使用操作系统环境是Red Hat Linux 9,言语开发环境是Linux的GNU C或C++。

我做的课程设计是:Linux/Unix文件系统分析。在Linux系统下,使用与文件相关的系统调用实现对物理设备文件的读写,参照Linux系统源代码以及Grub 系统的源代码,对不同介质上的FAT格式文件系统进行分析。要求在Linux环境下设计出C语言程序,实现以下功能:

1)分析UNIX SysV/Linux系统引导记录的作用;

2)分析UNIX SysV/Linux的超级块及其结构,并建立相关数据结构,通过编程

实现UNIX SysV/Linux文件系统内各部分的定位。

3)至少要实现对给定i节点文件的只读访问

目录

一.系统环境 (3)

1.1硬件环境 (3)

1.2软件环境 (3)

二.设计目的及要求 (3)

三.总体设计 (5)

四.详细设计 (6)

五.调试与测试 (6)

六.设计中遇到的问题及解决方法 (6)

七.Linux/Unix文件系统分析源程序清单 (7)

7.1 头文件 (7)

7.2 示例程序 (10)

八.运行结果及分析 (16)

8.1 linux文件系统读取 (16)

8.2 UNIX文件系统读取 (18)

九.心得体会 (19)

十.参考文献 (20)

Linux/Unix文件系统分析

一.系统环境

1.1硬件环境

cpu为pentium4双线程技术,频率为2.8GHZ,内存为256MB。

1.2软件环境

使用操作系统环境是Red Hat Linux 9,言语开发环境是Linux的 GNU C或C++。

二.设计目的及要求

1、设计目的

学习计算机软件技术,特别是计算机操作系统技术,除了需要刻苦努力外,还需要掌握软件和操作系统的原理与设计技巧。如何学习和掌握操作系统技术的原理与实际技巧呢?除了听课和读书之外,最好的方法恐怕就是在实践中练习。例如,自己设计一个小型操作系统,多使用操作系统,多阅读和分析操作源代码等。但由于条件和学时有限,在理论学习过程中没有给提供更多的实验机会。本操作系统课程设计,是提供了一个集中实验的机会。应该通过该设计加深对所学习课程的理解。

2、设计要求

按软件工程的思想和方法进行设计,并把它作为一个工程来做。设计的每一步都有要形成文档,“成品”出来以后要有使用说明书和测试报告。最后按院方统一要求整理出软件实习“论文”,并分别以电子和书面文档的形式上交。最后,设计的程序要编译通过,并在验收时进行演示。

本设计的内容是基于《操作系统原理》教材的,但同学们必须对以前的《C 语言程序设计》和《数据结构》等内容进行认真的复习。

本设计是基于课程中学到的UNIX系统调用,使用操作系统环境是Red Hat Linux 9,言语开发环境是Linux的GNU C或C++。因此,要求课程设计者对Linux 操作系统和GNU C或C++有一定的了解。

3、设计内容

在Linux系统下,使用与文件相关的系统调用实现对物理设备文件的读写,参照Linux系统源代码以及Grub系统的源代码,对不同介质上的FAT格式文件系统进行分析。要求在Linux环境下设计出C语言程序,实现以下功能:1)分析UNIX SysV/Linux系统引导记录的作用;

2)分析UNIX SysV/Linux的超级块及其结构,并建立相关数据结构,通过编程实现UNIX SysV/Linux文件系统内各部分的定位。

3)至少要实现对给定i节点文件的只读访问。

4)建议根据文件读取文件。

文件系统必须完成下列工作:

1)为了合理的存放文件,必须对磁盘等辅助空间(或称文件空间)进行

统一管理。在用户创新新文件时为其分配空闲区,而在用户删除或修

改某个文件时,回收和调整存储区。

2)为了实现按名存取,需要有一个用户可见的文件逻辑结构,用户按照

文件逻辑结构所给定的方式进行信息的存取和加工。这种逻辑结构时

独立于物理存储设备的。

3)为了便于存放和加工信息,文件在存储和设备上应按一定的顺序存

放。这种存放方式被称为文件物理结构。

4)完成对存放在存储设备上的文件信息的查找。

5)完成文件的共享和提供保护功能。

三.总体设计

程序开始

读取超级快内容到buff

读取判断参数,打开文件系统,设置文件指针到超级快开头

判断第二个参数

UNIX 超级快内容解释程序段 LINUX 超级快内容解释程序段

显示超级快内部包含的文件系统信 显示超级块内部包含的文件系统信息

是否有第四参数 是否有第四参数

解释为i 节点号 提示输入i 节点

提示输入i 节点解释为i 节点号 根据i 节点读i 节点信息及i 节点所指向盘快信息并显示

根据i 节点读i 节点信息及i 节点所指向盘快信息并显示

四.详细设计

分析UNIX SysV/Linux系统引导记录的作用

UNIX SysV/Linux系统引导记录存放于整个硬盘的第一个扇区,即0柱面0磁头l扇区,也叫做MBR(MaserBoot Reoofd)扇区,即主引导记录。

主引导记录在计算机引导过程中起着举足轻重的作用,计算机在按下电源键以后,开始执行主板BI0S程序,进行完一系列检测和配置以后,开始按BI0S 中设定的系统引导顺序引导系统。BIOS执行完自己的程序后如何把执行投交给硬盘呢。交给硬盘后叉执行存储在哪里的程序呢?其实,称为MBR的扇区中的一段代码起着举足轻重的作用。 MBR不随操作系统的不同而小同,即不同的操作系统町能会存在相同的MBR.即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。

对文件系统的操作参看程序源代码。

实现对磁盘文件的访问,实现读写、查看文件系统的存取信息,对应各个i节点的相关信息,以及各个i节点的排列情况,使用户能清楚的看到文件系统磁盘结构。更加了解计算机文件系统的工作流程。

五.调试与测试

(1)通过输入命令cc chengxu.c将文件编译为可执行文件a.out,通过输入命令./a.out加参数执行文件。

(2)判断命令行参数进行操作,当参数为./a.out u s51k .img时进行Linux文件系统读取,当参数为../a.out x xenix.img时进行Unix文件系统读取。

(3)判断是否有第四个参数,若没有,则提示输入i节点号并实现对给定i节点文件的只读访问。

六.设计中遇到的问题及解决方法

在设计程序时。我们按自己的理解编写了一个超级块和inode节点的结构体。然后放在主程序中去读取信息,但是运行的结果大出我们的预料。没有按我们的预期读出文件系统的信息,而是输出了一堆乱码,我们有经过查资料最后终于解决了问题,程序输出正常。

七.Linux/Unix文件系统分析源程序清单

7.1 头文件

#include

typedef __s16 s16;

typedef __u16 u16;

typedef __s32 s32;

typedef __u32 u32;

typedef u16 sysv_ino_t;

/* Block numbers are 24 bit, sometimes stored in 32 bit.

On Coherent FS, they are always stored in PDP-11 manner: the least

significant 16 bits come last.

*/

typedef u32 sysv_zone_t;

/* Among the blocks ... */

/* Xenix FS, Coherent FS: block 0 is the boot block, block 1 the super-block.

SystemV FS: block 0 contains both the boot sector and the super-block. */

/* The first inode zone is sb->sv_firstinodezone (1 or 2). */

/* Among the inodes ... */

/* 0 is non-existent */

#define SYSV_BADBL_INO 1/* inode of bad blocks file */

#define SYSV_ROOT_INO 2 /* inode of root directory */

/* Xenix super-block data on disk */

#define XENIX_NICINOD 100 /* number of inode cache entries */

#define XENIX_NICFREE 100 /* number of free block list chunk entries */

struct xenix_super_block {

u16 s_isize; /* index of first data zone */

u32 s_fsize;// __packed2__; /* total number of zones of this fs */

/* the start of the free block list: */

u16 s_nfree;/* number of free blocks in s_free, <= XENIX_NICFREE */

u32 s_free[XENIX_NICFREE]; /* first free block list chunk */

/* the cache of free inodes: */

u16 s_ninode; /* number of free inodes in s_inode, <= XENIX_NICINOD */

sysv_ino_t s_inode[XENIX_NICINOD]; /* some free inodes */

/* locks, not used by Linux: */

char s_flock;/* lock during free block list manipulation */

char s_ilock;/* lock during inode cache manipulation */

char s_fmod; /* super-block modified flag */

char s_ronly;/* flag whether fs is mounted read-only */

u32 s_time;//__packed2__;/*time of last super block update*/

u32 s_tfree;// __packed2__; /* total number of free zones */

u16 s_tinode; /* total number of free inodes */

s16 s_dinfo[4]; /* device information ?? */

char s_fname[6]; /* file system volume name */

char s_fpack[6]; /* file system pack name */

char s_clean; /* set to 0x46 when filesystem is properly unmounted */ char s_fill[371];

s32 s_magic; /* version of file system */

s32 s_type; /* type of file system: 1 for 512 byte blocks

2 for 1024 byte blocks

3 for 2048 byte blocks */

};

/* SystemV FS comes in two variants:

* sysv2: System V Release 2 (e.g. Microport), structure elements aligned(2).

* sysv4: System V Release 4 (e.g. Consensys), structure elements aligned(4). */

#define SYSV_NICINOD 100 /* number of inode cache entries */

#define SYSV_NICFREE 50 /* number of free block list chunk entries */

/* SystemV4 super-block data on disk */

struct sysv4_super_block {

u16 s_isize; /* index of first data zone */

u16 s_pad0;

u32 s_fsize; /* total number of zones of this fs */

/* the start of the free block list: */

u16 s_nfree;/* number of free blocks in s_free, <= SYSV_NICFREE */

u16 s_pad1;

u32 s_free[SYSV_NICFREE]; /* first free block list chunk */

/* the cache of free inodes: */

u16 s_ninode;/* number of free inodes in s_inode, <= SYSV_NICINOD */ u16 s_pad2;

sysv_ino_t s_inode[SYSV_NICINOD]; /* some free inodes */

/* locks, not used by Linux: */

char s_flock; /* lock during free block list manipulation */

char s_ilock; /* lock during inode cache manipulation */

char s_fmod; /* super-block modified flag */

char s_ronly; /* flag whether fs is mounted read-only */

u32 s_time; /* time of last super block update */

s16 s_dinfo[4]; /* device information ?? */

u32 s_tfree; /* total number of free zones */

u16 s_tinode; /* total number of free inodes */

u16 s_pad3;

char s_fname[6]; /* file system volume name */

char s_fpack[6]; /* file system pack name */

s32 s_fill[12];

s32 s_state;/* file system state: 0x7c269d38-s_time means clean */

s32 s_magic; /* version of file system */

s32 s_type; /* type of file system: 1 for 512 byte blocks

2 for 1024 byte blocks */

};

/* SystemV/Coherent inode data on disk */

struct sysv_inode {

u16 i_mode;

u16 i_nlink;

u16 i_uid;

u16 i_gid;

u32 i_size;

union { /* directories, regular files, ... */

unsigned char i_addb[3*(10+1+1+1)+1]; /* zone numbers: max. 10 data blocks, * then 1 indirection block,

* then 1 double indirection block,

* then 1 triple indirection block.

* Then maybe a "file generation number" ??

*/

/* named pipes on Coherent */

struct {

char p_addp[30];

s16 p_pnc;

s16 p_prx;

s16 p_pwx;

} i_p;

} i_a;

u32 i_atime; /* time of last access */

u32 i_mtime; /* time of last modification */

u32 i_ctime; /* time of creation */

};

/*

* SystemV/V7/Coherent FS inode data in memory

*/

struct sysv_inode_info {

u32 i_data[10+1+1+1]; /* zone numbers: max. 10 data blocks,

* then 1 indirection block,

* then 1 double indirection block,

* then 1 triple indirection block.

*/

};

7.2 示例程序

#include

#include

#include

#include

#include

#include"sysvfs.h"

#include

main(int argc, char **argv)

{

int i,j,k,typ,fd,L=5;

char*file_sys,*tmp,buff[1024],buff_i[1025];

struct sysv4_super_block *sbu;

struct xenix_super_block *sbx;

struct sysv_inode *inode;

int inode_size, inode_no,blk_size;

int i_start,d_start;

long ll;

ulong i_add[13];

if(argc<3) {

fprintf(stderr,"Usage:\n\t%argv[0] u|x filesystem\n",argv[0]);

exit(1);

}

switch(argv[1][0]){

case'U':

case'u':

typ=1;

break;

case'X':

case'x':

typ=2;

break;

default:

typ=0;

}

file_sys=argv[2];

if((fd=open(file_sys, O_RDONLY))==-1){

fprintf(stderr,"File System '%s' OPEN error!\a\n",file_sys);

exit(2);

}

if(lseek(fd,typ*512,SEEK_SET)!=typ*512){

fprintf(stderr,"File System '%s' SEEK error!\a\n",file_sys);

close(fd);exit(3);

}

if(read(fd,buff,512*typ)!=512*typ){

fprintf(stderr,"File System '%s' READ error!\a\n",file_sys);

close(fd);exit(4);

}

if(typ==1) goto unix_;

if(typ==2) goto xenix_;

exit(100);

unix_:

sbu=(struct sysv4_super_block *)buff;

printf("index of first data zone:%x\n",sbu->s_isize);

printf("s_pad0:%x\n", sbu->s_pad0);

printf("total number of zones of this fs:%x\n",sbu->s_fsize);

printf("/* the start of the free block list: */\n");

printf("number of free blocks in s_free, <= SYSV_NICFREE:%x\n",sbu->s_nfree);

printf("s_pad1:%x\t%ud\n", sbu->s_pad1, sbu->s_pad1);

printf("/* the cache of free inodes: */\n");

printf("number of free inodes in s_inode, <= SYSV_NICINOD:%x\n",sbu->s_ninode);

printf("s_pad2:%x\n" ,sbu->s_pad2);

printf("some free inodes:\n");

printf("/* locks, not used by Linux: */\n");

printf("time of last super block update:%x\n" ,sbu->s_time);

printf("total number of free zones:%x\n" ,sbu->s_tfree);

printf("total number of free inodes:%x\n" ,sbu->s_tinode);

printf("file system volume name:%x\n" ,sbu->s_fname);

char s_fpack[6]; /* file system pack name */

printf("s_state:%x\n" ,sbu->s_state);

/* file system state: 0x7c269d38-s_time means clean */

printf("s_magic:%x\n" ,sbu->s_magic);

/* version of file system */

/* type of file system: 1 for 512 byte blocks */

blk_size=512*sbu->s_type;

i_start=2;d_start=sbu->s_isize;//+i_start-1;

printf("Inode_from:%x\n",2*512*i_start);

printf("Data_from:%x\n",2*512*d_start);

inode_size=sizeof(struct sysv_inode);

printf("Size of INODE struct= %d\n",inode_size);

// get inode_no

if(argc>=4){

if(!isnum(argv[3])) inode_no=atoi(argv[3]);

else{

fprintf(stderr,"%s is not a INT");

close(fd);exit(9);

}

}

else {

printf("\n\n\tPlease input INODE_NO:");

scanf("%d",&inode_no);

}

printf("=========== inode=%d ==============\n",inode_no);

--inode_no;

j=inode_no*inode_size/1024;

k=(inode_no*inode_size/*-1*/)%1024;

j+=i_start;

if((ll=lseek(fd,blk_size*j,SEEK_SET))!=blk_size*j){

fprintf(stderr,"File System '%s' SEEK error!\a\n",file_sys);

close(fd);exit(5);

}

printf("LL=%dl\n",ll);

if(read(fd,buff_i,blk_size)!=blk_size){

fprintf(stderr,"File System '%s' READ error!\a\n",file_sys);

close(fd);exit(6);

}

tmp=buff_i+k;

inode=(struct sysv_inode *)tmp;

printf("i_mode=%x\n" ,inode->i_mode);

printf("i_link=%x\n" ,inode->i_nlink);

printf("I_ADDR:\n");

for(i=0;i<40;i++) printf("%x| " ,inode->i_a.i_addb[i]);

printf("I_ADDR_ALL:\n");

for(i=0;i<64;i++) printf("%x| " ,tmp[i]);

printf("\n");

i=0;

for(j=0;j<39;j+=3){

i_add[i]=inode->i_a.i_addb[j]+256*inode->i_a.i_addb[j+1]+256*256*inode->i_a .i_addb[j+2];

++i;

}

for(i=0;i<13;i++) printf("i_add[%d]=%d |", i,i_add[i]);

printf("\n");

// direct Block

for(i=0;i<10;i++){

if((ll=lseek(fd,blk_size*i_add[i],SEEK_SET))!=blk_size*i_add[i]){ fprintf(stderr,"File System '%s' SEEK error!\a\n",file_sys);

close(fd);exit(7);

}

if(read(fd,buff_i,blk_size)!=blk_size){

fprintf(stderr,"File System '%s' READ error!\a\n",file_sys);

close(fd);exit(8);

}

buff_i[blk_size]='\0';

fprintf(stderr,"%s",buff_i);

}

close(fd);

exit('U');

xenix_:

sbx=(struct xenix_super_block *)buff;

uint isize,nfree,ninode,tinode,*ii;

ulong fsize,*ul;

tmp=buff;isize=sbx->s_isize;

tmp+=2;ul=(ulong *)tmp;fsize=*ul;

printf("index of first data zone:%x\n",sbx->s_isize);

printf("total number of zones of this fs:%lx\n",fsize);

printf("/* the start of the free block list: */\n");

tmp=buff;tmp+=6;nfree=tmp[0]+256*tmp[1];

printf("number of free blocks in s_free, <= SYSV_NICFREE:%x\n",nfree);

tmp=buff+1024-4;

ll=*(long *)tmp;

/* type of file system: 1 for 512 byte blocks */

blk_size=512*ll;

printf("blk_size=%d\n",blk_size);

i_start=2;d_start=sbx->s_isize;//+i_start-1;

printf("Inode_from:%x\n",2*512*i_start);

printf("Data_from:%x\n",2*512*d_start);

inode_size=sizeof(struct sysv_inode);

printf("Size of INODE struct= %d\n",inode_size);

// get inode_no

if(argc>=4){

if(!isnum(argv[3])) inode_no=atoi(argv[3]);

else{

fprintf(stderr,"%s is not a INT");

close(fd);exit(9);

}

}

else {

printf("\n\n\tPlease input INODE_NO:");

scanf("%d",&inode_no);

}

printf("=========== inode=%d ==============\n",inode_no);

--inode_no;

j=inode_no*inode_size/1024;

k=(inode_no*inode_size)%1024;

j+=i_start;

if((ll=lseek(fd,blk_size*j,SEEK_SET))!=blk_size*j){

fprintf(stderr,"File System '%s' SEEK error!\a\n",file_sys);

close(fd);exit(5);

}

printf("LL=%dl\n",ll);

if(read(fd,buff_i,blk_size)!=blk_size){

fprintf(stderr,"File System '%s' READ error!\a\n",file_sys);

close(fd);exit(6);

}

tmp=buff_i+k;

printf("\n\n");

for(i=0;i

inode=(struct sysv_inode *)tmp;

printf("i_mode=%x\n" ,inode->i_mode);

printf("i_link=%x\n" ,inode->i_nlink);

printf("I_ADDR:\n");

for(i=0;i<40;i++) printf("%x| " ,inode->i_a.i_addb[i]);

printf("I_ADDR_ALL:\n");

for(i=0;i<64;i++) printf("%x| " ,tmp[i]);

printf("\n");

i=0;

for(j=0;j<39;j+=3){

i_add[i]=inode->i_a.i_addb[j]+256*inode->i_a.i_addb[j+1]+256*256*inode->i_a .i_addb[j+2];

++i;

}

for(i=0;i<13;i++) printf("i_add[%d]=%d |", i,i_add[i]);

printf("\n");

// direct Block

for(i=0;i<10;i++){

if((ll=lseek(fd,blk_size*i_add[i],SEEK_SET))!=blk_size*i_add[i]){ fprintf(stderr,"File System '%s' SEEK error!\a\n",file_sys);

close(fd);exit(7);

}

if(read(fd,buff_i,blk_size)!=blk_size){

fprintf(stderr,"File System '%s' READ error!\a\n",file_sys);

close(fd);exit(8);

}

fprintf(stderr,"%s",buff_i); // Maybe write to a file

}

close(fd);

exit('X');

}

isnum(char *s)

{

int i;

for(i=0;s[i]!='\0';i++)

if(!isdigit(s[i])) return 1;

return 0;

}

八.运行结果及分析

8.1 linux文件系统读取

8.2 UNIX文件系统读取

九.心得体会

为期一周的课程设计即将告一段落,这次课程设计中,我收获了很多。由于之前学的并不十分扎实,再加上准备不够充足,刚接到题目时感觉无从下手,不知所措。于是开始查阅资料,回顾学过的知识,不知不觉中初步掌握了计算的基本要领。

这次的课程设计中,我们组一共有三个人,分工明确,合作顺利。接下来就是分工和设计,由全组人来共同完成这项任务。通过与同组同学的合作,加强了我们的团体合作能力。通过对Linux这种大型软件代码的分析,看到大型软件的编程习惯,我们组成员深感我们平时的编程习惯与良好的编程习惯相差甚远,小组成员决定在以后的编程过程中养成良好的编程习惯,这样有助于自己所编的程序清晰明了便于该错还有助于别人来立解你的程序。同时通过这次课程设计我们形成了通过从各方面查找资料来丰富的知识的能力。学习了一个学期的操作系统课程,感觉这是一门理论性很强的课程。但是这次课程设计改变了我的看法。通过这次课程设计,我认识到操作系统也是一门实践性很强的课程

这次我们课程设计的题目是Linux/Unix文件系统分析。虽然在课本上学洗了ext2文件系统的基本结构。但是在课程设计的时候感到所学知识的严重不足。首先虽然我知道ext2文件系统的大致结构分为引导区、超级块以及索引节点等,但是并不清楚它们内部的信息以及相关的存储结构。通过查阅资料与向老师和同学请教。终于解决了许多疑惑。顺利进入程序设计阶段。

这次紧张又充实的的课程设计让我认识到课本上的知识是机械的,表面的。

此次的课程设计,使我对于UNIX/Linux文件系统有了更深刻的理解。对于理论

微机原理-交通灯课程设计报告

微型计算机原理及应用课程设计说明书 交通灯控制系统设计 班级:1401班 姓名: 学号: 指导教师: 日期:2016年6月

一.课程设计目的: 在车辆日渐增多的今天,人们也越来越关注交通问题,而交通灯在安全行车过程中无疑起着十分重要的作用。现在交通灯一般都设在十字路口,用红、绿、黄三种颜色的指示灯和一个倒计时的显示计时器来控制行车, 对一般情况下的安全行车、车辆分流发挥着作用, 但根据实际行车过程中出现的情况, 主要有如下几个缺点: 1、车道轮流放行时间相对固定, 不能根据实际情况中两个车道的车辆多少来设置改变通行时间;2、没有考虑紧急车辆通过时, 两车道应采取的措施。譬如, 有消防车通过执行紧急任务时, 两个车道的车都应停止, 让紧急车辆通过。因此如何合理高效地利用交通灯指示交通情况,是一个亟需解决的问题。 交通灯是采用计算机通过编写汇编语言程序控制的。红灯停,绿灯行的交通规则。广泛用于十字路口,车站, 码头等公共场所,成为人们出行生活中不可少的必需品,由于计算机技术的成熟与广泛应用,使得交通灯的功能多样化,远远超过老式交通灯, 交通灯的数字化给人们生产生活带来了极大的方便,而且大大地扩展了交通灯的功能。诸如闪烁警示、鸣笛警示,时间程序自动控制、倒计时显示,所有这些,都是以计算机为基础的。还可以根据主、次干道的交通状况的不同任意设置各自的不同的通行时间。或者给红绿色盲声音警示的人性化设计。现在的交通灯系统很多都增加了智能控制环节,比如对闯红灯的车辆进行拍照。当某方向红灯亮时,此时相应的传感器开始工作,当有车辆通过时,照相机就把车辆拍下。 要将交通灯系统产品化,应该根据客户不同的需求进行不同的设计,应该在程序中增加一些可以人为改变的参数,以便客户根据不同的需要随时调节交通灯。因此,研究交通灯及扩大其应用,有着非常现实的意义 二.课程设计内容: 设有一个十字路口,1、3为南北方向,2、4为东西方向。初始为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车;延时一段时间后,1、3路口的绿灯开始闪烁,闪烁若干次以后,1、3 路口黄灯亮,后1、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车;延时一段时间后,2、4 路口的绿灯熄灭,而绿灯开始闪烁,闪烁若干次以后,1、3路口红灯亮,而2、4路口黄灯亮,再切换到1、3路口方向,之后重复上述过程。 三.问题分析及硬件介绍: 本次课程设计的内容为利用8086、8255等接口,实现控制十二个二极管亮灭的过程。需要PC机一台,8255并口:用做接口芯片。LED:共12个LED灯。还有8086芯片,8253a定时器等器材. 将8086和74273、74154和8255连接起来.需用到8255的六个输出端口。所以要求8255工作在方式0,因为二极管是共阳的,所以输出低电平二极管才会亮。8086用作cpu,三个74273是锁存器,锁存地址。 用软件proteus7.8画出电路图,加载程序到8086cpu,进行模拟。 系统硬件设计

操作系统课程设计

课程设计报告 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 -

交通灯课程设计说明书

华北水利水电学院 院系:机械学院 专业:机械设计制造及其自动化 班级: 59班 学号: 200905918 姓名:杨亚坤 指导老师:雷冀南 2012年5月11日

目录 目录 (2) 2、设计要求 (3) 二、交通管理的方案论证 (3) 三、总体方案设计 (4) 1.系统框图 (4) 2.工作原理 (4) 2.1、正常模式 (4) 3.计时控制方案 (6) 4.显示控制方案 (6) 四、芯片的选择与简介 (6) 3. 80C51单片机的外接晶体引脚 (7) 4. 80C51单片机的控制线 (7) 5. 80C51单片机复位方式 (7) 五系统电路设计 (8) 1.电路原理图 (8) 3.单片机最小系统 (9) 4.显示部分 (10) 6.主程序模块 (10) 7.显示程序模块 (11) 七、结论 (11) 八、参考文献 (12) 附录2:电路原理图 (18) 一、课程设计任务书及计划书

1 、设计目的及任务 《单片机应用基础》课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的就是配合本课程的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。 课程设计任务:根据给定的模拟交通灯控制任务要求选择合适的单片机和其他电子元器件,进行系统硬件电路设计和软件编程,根据系统制作并调试系统电路板,使之实现任务要求。 2、设计要求 (1)运用所学的知识设计一个交通灯控制系统。 (2)上电的时候南北方向的红灯亮30秒;东西方向的绿灯亮30秒,黄灯秒闪5秒。再接下来东西方向的红灯亮30秒;南北方向的绿灯亮30秒,黄灯秒闪5秒。如此循环。 (3)各种信号灯所亮的时间由数码管显示出来。 (4)外接4个控制按钮,分别实现紧急模式、夜间模式、主干道绿灯支道红灯模式、管理模式。 二、交通管理的方案论证 东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。设南北道比东西道的车流量大,指示灯燃亮的方案如表2。 表2说明:

塑料模具课程设计说明书范本

塑料模具课程设计 说 明 书 专业:模具设计与制造 班级:081 姓名:严超 学号:20082400511047 指导老师:罗刚

一、塑件分析、塑料的选取及其工艺性分析 该塑件应该是一个塑料板、称套,且承载不高,此符合低压聚乙烯(PE)的特点,并且聚乙烯还拥有硬、耐磨、耐蚀、耐热、及绝缘性好等优点,价格也比较便宜。而且聚乙烯流动性好、对压力变化敏感,适用高压注射,料温均与,填充速度快、保压充分、易脱模。 聚乙烯的缺点就是成型收缩率范围及收缩值大,易产生缩孔,在流动方向与垂直方向上的收缩差异较大,方向性明显,易变形、翘曲等。所以,在成型时应控制模温,冷却时应保证冷却均匀、稳定、速度慢且充分冷却。 结果:塑料用聚乙烯成型方式为注塑成型 附:聚乙烯(PE)的主要技术指标 密度ρ(g/cm3):0.19-0.96 收缩率s:1.5-3.6 成型温度t/°C:140-22 二.确定注射机 选用注射机型号为:ft-s200/400型卧式注射机 ft-s200/400型卧式注射机有关技术参数如下: 最大开合模行程/mm:260 模具厚度/mm:165——406 喷嘴圆弧半径/mm:18 喷嘴孔直径/mm: 4 拉杆空间/mm:290×368 锁模力/KN:2540 额定注射量/cm3:200/400 最大注射压力/MPa:109 最大注射面积/cm2:645 三、型腔数目确定 我们小组采用按注射机的额定锁模力来确定型腔数目n,有 npA ≤Fp – pA1 式中Fp——注射机的额定锁模力254000(N) A——单个塑件在分型面上的投影面积8167.14(mm2) A1——浇注系统在分型面上的投影面积200(mm2) P ——塑料熔体对型腔的成型压力(MPa),其大小一般是注射压力的80%。 代值计算得n = 14.27 故取值为14 综合考虑塑件的尺寸及表面的精度要求以及塑件的结构,宜采用盘型浇口。若采用一模多腔设计、加工难度大,成本高。所以采用一模两腔。 结果:型腔数目为二 四、分型面的选择及浇注系统设计

单片机课程设计_基于单片机的交通灯控制系统设计说明

目录 1.硬件设计方案............................................... - 3 -1.1总方案设计 (3) 1.2中央处理单元 (4) 1.3红、绿、黄灯显示部分 (4) 1.4时间显示部分 (4) 1.5按键部分 (5) 2.主要电路原理分析和说明 ..................................... - 6 -2.1红、绿、黄灯显示电路.. (6) 2.2时间显示电路 (6) 2.3按键电路 (8) 2.4时钟及复位电路, (9) 其电路原理图如图2.4所示 (9) 2.5完整电路原理图 (9) 2.6单片机相应管脚及功能说明 (12) 3.软件设计流程及描述......................................... - 14 - 3.1程序流程图 (14) 4.调试....................................................... - 16 -(1)硬件调试 (16) (2)软件调试 (16)

5.结束语..................................................... - 17 - 6.参考文献................................................... - 17 - 7.附录....................................................... - 19 - 1.源程序代码 (19) 2.实物图 (22)

操作系统课程设计报告

上海电力学院 计算机操作系统原理 课程设计报告 题目名称:编写程序模拟虚拟存储器管理 姓名:杜志豪.学号: 班级: 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

塑料模具课程设计说明书

南昌航空大学 塑料成型工艺及模具设计 课程设计说明书 题目:肥皂盒底盖塑料模具设计 专业:模具设计与制造 班级: 姓名:简洪伟 学号:---------------------------- 指导老师: 时间:2010年4月28日

引言 本说明书为塑料注射模具设计说明书,是根据塑料模具手册上的设计过程及相关工艺编写的。本说明书的内容包括:目录、课程设计指导书、课程设计说明书、参考文献等。 编写本说明书时,力求符合设计步骤,详细说明了塑料注射模具设计方法,以及各种参数的具体计算方法,如塑件的成型工艺、塑料脱模机构的设计。 本说明书在编写过程中,得到江五贵老师和同学的大力支持和热情帮助,在此谨表谢意。 由于本人设计水平有限,在设计过程中难免有错误之处,敬请各位老师批评指正。 设计者:简洪伟 2010.4.28

课程设计指导书 一、题目: 塑料肥皂盒材料:PVC 二、明确设计任务,收集有关资料: 1、了解设计的任务、内容、要求和步骤,制定设计工作进度计划 2、将UG零件图转化为CAD平面图,并标好尺寸 3、查阅、收集有关的设计参考资料 4、了解所设计零件的用途、结构、性能,在整个产品中装配关系、技术要求、生产批量 5、塑胶厂车间的设备资料 6、模具制造技能和设备条件及可采用的模具标准情况 三、工艺性分析 分析塑胶件的工艺性包括技术和经济两方面,在技术方面,根据产品图纸,只要分析塑胶件的形状特点、尺寸大小、尺寸标注方法、精度要求、表面质量和材料性能等因素,是否符合模塑工艺要求;在经济方面,主要根据塑胶件的生产批量分析产品成本,阐明采用注射生产可取得的经济效益。 1、塑胶件的形状和尺寸: 塑胶件的形状和尺寸不同,对模塑工艺要求也不同。 2、塑胶件的尺寸精度和外观要求: 塑胶件的尺寸精度和外观要求与模塑工艺方法、模具结构型式及制造精度等有关。 3、生产批量 生产批量的大小,直接影响模具的结构型式,一般大批量生产时,可选用一模多腔来提高生产率;小批量生产时,可采用单型腔模具等进行生产来降低模具的制造费用。 4、其它方面 在对塑胶件进行工艺分析时,除了考虑上诉因素外,还应分析塑胶件的厚度、

交通灯课程设计报告

摘要 在今天的交通情况下,很多路口都出现拥堵与秩序混乱的情况,由此可见交通灯在生活中的重要性。我们本次课程设计的题目就是交通灯控制器设计,要求设计并制作主/支交通信号灯控制器。我们小组成员通过共同交流与努力,完成了仿真图的设计、电路板的焊接、原理图的绘制。在由主干道与支干道汇成的十字路口,主、支道分别装有红、绿、黄三色信号灯,并完成数码管的置数。 通过本次课设,我们小组成员对数字电路的知识有了更深刻地了解。明白了在课设的各个阶段,我们都必须对元器件的原理非常了解。

目录 1 设计内容及要求 (1) 2 方案论证 (1) 3 单元设计电路 (2) 3、1 总原理 (2) 3、2 控制电路 (3) 3、3 时钟产生电路 (3) 3、4 显示电路 (4) 3、5 器件 (5) 3、5、1可预置的十进制同步计数器74LS160 (5) 3、5、2 3 线-8 线译码器74LS138 (5) 3、5、3双时钟方式的十进制可逆计数器74LS192 (bcd,二进制) (6) 3、5、4 七段码译码器CD4511 (6) 4 组装及调试 (7) 4、1 通电前检查 (7) 4、2 通电检查 (7) 4、2、1 555电路模块的检查 (7) 4、2、2 CD4511的检查 (7) 4、2、3 74LS192的检查 (8) 4、2、4 控制电路及相关门电路的检查 (8) 4、2、5 发光二极管的检查 (9) 4、3 结果分析 (9) 5 设计总结 (10) 5、1 体会 (10) 5、2 设计电路的特点与方案的优缺点 (11) 5、3 改进方法 (11) 参考文献、附录Ⅰ、附录Ⅱ.................................................................. 错误!未定义书签。

塑料模具课程设计说明书

材料工程系模具设计与制造专业 注塑模具CAD/CAM实训说明书 姓名: 学号: 指导教师: 日期:2011年12月 河南机电高等专科学校 注塑模具CAD/CAM实训任务书 题目: 内容:(1) (2) (3) (4) (5) (6) 原始资料: 年月 设计课题: 学生姓名: 班级: 塑料材料:ABS 产品收缩率:0.006 生产批量:30万件/年课程设计(论文)开始与完成时间:

年月日至年月日 摘要 塑料工业是当今世界上增长最快的工业门类之一,而塑料模是其中发展较快的种类。因此,研究注塑模具对了解塑料产品的生产过程和提高产品质量有很大意义。 本设计介绍了注射成型的基本原理,特别是单分型面注射模具的结构与工作原理,对注塑产品提出了基本的设计原则;详细介绍了冷流道注射模具浇注系统、成型零部件和顶出机构(推管推出)的设计过程,并对模具强度要求做了说明。 通过对塑料成型模具的设计,对常用塑料在成型过程中对模具的工艺要求有了更深一层的理解,掌握了塑料成型模具的结构特点及设计计算方法,对独立设计模具具有了一次新的锻炼,对注射模具有一个初步的认识,注意到设计中的某些细节问题,了解模具结构及工作原理。通过用PRO E对塑件分模和利用AutoCAD对模具的排位与设计,从而有效的提高工作效率。通过对塑料工艺的正确分析,设计了一副一模六腔的塑料模具。详细地叙述了模具成型零件包括定模板板、型腔、动模板、型芯、支承板等设计与加工工艺过程,重要零件的工艺参数的选择与计算,推出机构与浇注系统以及其它结构的设计过程。 目录 前言--------------------------------------------------------------------1 1. 塑料制品的工艺性分析----------------------------------------2 2.注射机型号的初步拟定----------------------------------------5 3.模具结构方案的确定-------------------------------------------6 3.1 分型面的确定---------------------------------------------------------------------6

注射模塑料仪表盖课程设计说明书

* 目录 1 塑件的工艺性分析 (1) 塑件的分析 (1) 外形尺寸 (1) 精度等级 (1) 脱模斜度 (1) PP的性能分析 (1) 物理性能 (1) % 力学性能 (1) 热性能 (2) 化学稳定性 (2) PP的主要性能指标 (2) PP的注射成型过程及工艺参数 (3) 成型特性 (3) 注塑模工艺条件 (3) PP的注塑工艺参数 (4) @

2 拟定模具的结构形式 (5) 分型面位置的确定 (5) 确定型腔数 (5) 排列方式 (5) 模具结构形式的确定 (6) 注射机型号的确定 (6) 注射量的计算 (6) 浇注系统凝料体积的估算 (6) ^ 选择注射机 (7) 注射机的相关参数校核 (7) 3 浇注系统的设计 (9) 主流道的设计 (9) 主流道尺寸 (9) 主流道衬套形式 (10) 主流凝料体积 (10) 主流道剪切速率校核 (10) · 浇口的设计 (10)

浇口的主要作用: (10) 浇口的形式 (11) 浇口位置的选择 (11) 浇口的尺寸的确定 (12) 冷料穴的设计 (12) 主流道冷料穴的设计 (12) 分流道冷料穴的设计 (12) ~ 分流道的布置形式 (12) 分流道的长度设计 (13) 分流道的当量直径计算 (13) 分流道的截面形状设计 (14) 分流道的截面尺寸计算 (14) 分流道的凝料体积计算 (14) 分流道熔体的剪切速率的校核 (15) 分流道的表面粗糙度和脱模斜度 (15) · 4 成型零件的结构设计和计算 (16) 成型零件的结构设计 (16)

凹模的结构设计 (16) 凸模的结构设计(型芯) (16) 成型零件钢材的选用 (17) 成型零件工作尺寸的计算 (17) 凹模径向尺寸的计算 (17) 凹模深度尺寸的计算 (18) ? 型芯径向尺寸的计算 (18) 型芯高度尺寸的计算 (19) 成型零件尺寸及动模垫板厚度的计算 (19) 凹模侧壁厚度的计算 (19) 承板(动模垫板)厚度的计算 (20) 5 模架的确定 (22) 模架的确定和标准件的选用 (22) 定模座板(350mm×300mm、厚25mm) (22) @ 定模板(型腔固定板)(350mm×250mm、厚60mm) (22) 动模型芯固定板(350mm×250mm、厚25mm) (22) 型芯固定板(350mm×250mm、厚25mm) (22)

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

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

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

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

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

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

塑料模具课程设计说明书

塑料模具设计课程设计任务书 学院材料科学与工程专业材料成型及控制工程学生姓名学号 设计题目盖 设计依据 原始资料:塑料产品图纸 生产纲领:大批量生产 二、工作项目 1、成型工艺、成型方案的设计 2、设计模具和选择设备的各种必要计算 3、绘制模具装配图,成型零件图及塑件图 4、编写设计说明书(3000字以上) 三、设计应完成的技术文件 1、总装图 1 张,零件图 3 张,产品图 1 张。 2、填写工艺卡片(一份) 3、设计说明书(一份) 四、进度安排(见塑料模具课程设计指导书) 指导教师(签字): 年月日学院院长(签字): 年月日

目录 1 塑件的工艺分析,确定方案,设备校核 (1) 1.1 塑件工艺分析,填写工艺卡 (1) 1.1.1 塑件的工艺分析 (1) 1.2 确定模具结构方案 (2) 1.2.1 分型面 (2) 1.2.2 型腔数目的确定 (2) 1.3 选择设备,进行校核 (2) 1.3.1 选择注射机 (2) 1.3.2 设备校核 (2) 2 浇注系统的设计,排溢系统的设计 (4) 2.1 主流道的设计与定位圈的设计 (4) 2.1.1 主流道的设计 (4) 2.1.2 定位圈设计 (4) 2.2 分流道设计 (4) 2.3 冷料穴及浇口设计 (5) 2.3.1 冷料穴的设计 (5) 2.3.2 浇口设计 (5) 3 成型零部件的设计及校核 (6) 3.1 凹模的设计与校核 (6) 3.1.1 凹模直径 (6) 3.1.2 凹模深度 (6) 3.2 凸凹模尺寸 (7) 3.2.1 凸模高度 (8) 3.3 中心距计算 (8) 3.4 模底厚度计算 (8) 3.5 模壁厚度计算 (8) 4 导向机构的设计 (10) 4.1 导向机构的总体设计 (10)

塑料注射模课程设计

第1章塑件成型工艺性分析 1.1塑件的分析 1.1.1外形尺寸该塑件壁厚2.5mm,塑件外形尺寸不大,塑件熔体流程不太长,适合于注射成型,如图1.1所示。

1.1.2 精度等级精度等级要求为MT5. 1.1.3 脱模斜度ABS属无定型塑料,成型收缩率较小,参考教材表2-10选择该塑件上型芯和凹模的统一斜度为1°。 1.2 PMMA的性能分析 1.2.1 使用性能综合性能好,冲击强度和力学强度较高,尺寸稳定,耐化学性,电气性能良好;易于成型和机械加工,其表面可镀铬,适合制作一般机械零件、减摩零件、传动零件和结构零件。 1.2.2 成型性能 1.2. 2.1 无定型塑料其品种很多,各品种的机电性能及成型特性也各有差异,应按品种来确定成型方法及成型条件。 1.2.2.2 吸湿性强含水量应小与0.3%(质量),必须先充分干燥。要求表面光泽的塑件应要求长时间预热干燥。 1.2.2.3流动性中等溢边料0.04mm左右。 1.2.2.4模具设计时要注意浇注系统,选择好进料口位置和形式推出力过大或机械加工时塑件表面呈白色痕迹。 1.2.3PMMA的主要性能其性能指标见表1.1 表1.1 PMMA的性能指标 1.PMMA的注射成型成型过程及工艺参数

1.3.1 注射成型过程 1.3.1.1成型前的准备对PMMA的色泽、粒度和均与度等进行检验,由于PMMA吸水性较大,成型前应该进行充分干燥。 1.3.1.2 注射过程塑件在注射机料筒内经过加热、塑化达到流动状态后,由模具的浇注系统进入模具型腔成型,其过程可分为充模、压实、保压、倒流和冷却五个阶段。 1.3.1.3 塑件的后处理处理的介质为空气和水,处理温度为60~70℃,处理时间为16~20s. 1.3.2注射工艺参数 1.3.2.1 注射机: 螺杆式,螺杆转速为30r/min。 1.3.2.2料筒温度(℃): 后段150~170; 中断165~180; 前段180~200。 1.3.2.3 喷嘴温度(℃):170~180。 1.3. 2.4 模具温度(℃): 50~80。 1.3.2.5 注射压力(MPa):60~100。 1.3. 2.6 成型时间(s): 30(注射时间取1.6,冷却时间20.4,辅助时间8s。 第2章拟定模具的结构形式 2.1分型面位置的确定 2.2注射机型号的确定 2.3.1 注射量的计算通过三维建模设计分析计算得 塑件体积: V 塑 =11.561cm3 塑件质量: m 塑=pV 塑 =1.16×11.561g=13.4g 式中p参考表1取1.16g/cm3。

交通灯课程设计报告

摘要 在今天的交通情况下,很多路口都出现拥堵和秩序混乱的情况,由此可见交通灯在生活中的重要性。我们本次课程设计的题目是交通灯控制器设计,要求设计并制作主/支交通信号灯控制器。我们小组成员通过共同交流和努力,完成了仿真图的设计、电路板的焊接、原理图的绘制。在由主干道和支干道汇成的十字路口,主、支道分别装有红、绿、黄三色信号灯,并完成数码管的置数。 通过本次课设,我们小组成员对数字电路的知识有了更深刻地了解。明白了在课设的各个阶段,我们都必须对元器件的原理非常了解。

目录 1 设计容及要求 (1) 2 方案论证 (1) 3 单元设计电路 (2) 3.1 总原理 (2) 3.2 控制电路 (3) 3.3 时钟产生电路 (3) 3.4 显示电路 (4) 3.5 器件 (5) 3.5.1可预置的十进制同步计数器74LS160 (5) 3.5.2 3 线-8 线译码器74LS138 (5) 3.5.3双时钟方式的十进制可逆计数器74LS192 (bcd,二进制) (6) 3.5.4 七段码译码器CD4511 (6) 4 组装及调试 (7) 4.1 通电前检查 (7) 4.2 通电检查 (7) 4.2.1 555电路模块的检查 (7) 4.2.2 CD4511的检查 (7) 4.2.3 74LS192的检查 (8) 4.2.4 控制电路及相关门电路的检查 (8) 4.2.5 发光二极管的检查 (9) 4.3 结果分析 (9) 5 设计总结 (10) 5.1 体会 (10) 5.2 设计电路的特点和方案的优缺点 (11) 5.3 改进方法 (11) 参考文献、附录Ⅰ、附录Ⅱ ........................................................... 错误!未定义书签。

计算机操作系统课程设计

计算机操作系统课程设计 班级:计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; //目录地址 };

交通灯课程设计说明书

1 选题背景 随着城市和机动车辆的不断增加, 城市交通问题越来越引起人们的关注。人、车、路三者之间关系的协调,已经成了交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据监测, 交通信号灯控制与交通疏导的计算机综合管理系统。它是现代城市交通监控指挥系统中最重要的组成部。 近年来, 许多大城市都出现了交通超负荷运行的情况。因此, 一些大城市纷纷修建市区高速公路, 在高速公路建完初期, 它们也曾有效地改善了城市交通状况。然而, 随着交通流量的快速增长和缺乏对高速道路的系统研究和控制, 这 些高速道路并没有充分发挥预期的作用。传统的交通灯只是红绿黄交替,经常有某条路上没车而交通灯又是绿灯亮起,这样就造成有车的不能过,大大浪费了人们的时间,因而设计一个能控制有无车行驶的交通灯能最大限度的缓解城市及周边地区的交通拥堵状况,回受到广大用户的欢迎。 1.1 指导思想 由秒脉冲发生器,控制器,定时器和译码器等部分组成电路。秒脉冲时该系统中控制器与定时器的标准时钟信号源,555定时器输出脉冲信号,通过计数器与数码管设计显示电路,逻辑开关模拟道路有无车辆,计数器主控发光二极管的亮灭。 1.2 方案论证 方案一:用数电电子技术来实现交通灯控制 它主要由控制器、定时器、译码器和秒脉冲信号发生器等部分组成。秒脉冲发生器是该系统中定时器和控制器的标准时钟信号源,译码器输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作,控制器是系统的主要部分,由它控制定时器和译码器的工作。即采用正计时计数器,用1个计数器做主控电路,2个计数器计数,1个数据选择器来控制红绿黄亮灯的时间。特点:成本低廉,元器件少,系统运行稳定。 方案二:用单片机技术来实现交通灯控制 用单片机技术来来实现交通灯控制是最容易实现的,而且该电路可靠性也很高,但是这是要求设计者要有单片机编程的基础上才能完成设计。 综合考虑,我选用了数字电子技术来实现交通灯控制,即方案一。 1.3 设计任务 设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯。红灯亮禁止通行,绿灯亮允许通行,黄灯亮则停止行驶(给行驶中的车辆有时间停在禁行线以外)。具体要求如下: (1)让主干道处于常允许通行的状态,支干道有车时才交替通行。

操作系统课程设计题目

操作系统课程设计 一、课程设计题目 实现一个模拟操作系统。 二、课程设计的目的 通过模拟操作系统原理的实现,加深对操作系统工作原理理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。 三、小组人数 建议3~4人一组共同完成模拟系统的实现。 四、编程语言 建议使用VC、VB、C#、Java等Windows环境下的程序设计语言,以借助这些语言环境来模拟硬件的一些并行工作。 五、课程设计内容 模拟采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。 六、课程设计具体要求和内容 1.文件管理和用户接口 文件管理和用户接口部分实现的主要是单用户的磁盘文件管理部分,包括文件的逻辑结构、物理结构、目录、磁盘分配回收、文件的保护和用户接口的实现。 ⑴文件的逻辑结构 文件的逻辑结构采用流式结构; 文件的内容均采用文本文件; 系统中有两种文件,一种是存放任意字符的文件,一种是可执行文件。可执行文件的内容就是模拟系统内进程的程序体。 文件中要有一种特定命令的“可执行”文件,该文件中的命令有: x=?; 给x赋值一位数 x++; x加1 x--; x减1 !??;第一个?为A,B,C中某个设备,第二个?为一位数,表示使用设备的时间(由于没有实际设备,所以无法知道设备何时工作完成,所以假定一个数,这个数随着系统时间增加而递减,减到0时,认为是设备工作完成); end. 表示文件结束,同时将结果写入文件out,其中包括文件路径名和x的值。 ⑵磁盘模拟 用一个文件disk1模拟磁盘c,用一个文件disk2模拟磁盘d。两个磁盘一样大小,磁盘的每个盘块64字节,模拟磁盘共有128块。第0、1块存放文件分配表,第2块存放根目录,其余存放子目录和文件。 ⑶目录结构 目录结构采用树型目录结构。 ①目录项内容(8个字节): 目录名、文件名:3个字节; 扩展名:2个字节(可执行文件扩展名为ex,目录没有扩展名); 目录、文件属性:1字节(1位标识是文件还是目录,1位标识只读还是非只读,1位是隐藏属性,标识显示还是不显示); 起始盘块号:1个字节; 文件长度:1字节(目录没有长度)。

交通灯控制器课程设计说明书

交通灯控制器课程设计说明书

课程设计说明书 学生姓名:学号: 学院: 专业: 题目: 交通灯控制器 指导教师:职称: 2010 年 1 月 15 日

目录 1、实验任务 (3) 2、实验目的 (3) 3、设计方案 (3) 4、参考电路设计 (4) 5、实验仪器设备 (9) 6、实验心 得 (10)

一.实验任务 设计一个交通灯控制器,具体要求如下: 1、以红,黄,绿三种颜色的发光管作为交通灯。绿灯亮表示可以通行, 红灯亮表示禁止通行.黄灯亮表示未通过的车辆禁止通行. 2、每次放行时间为30秒,红转绿或绿转红时,需黄灯亮5秒作为过度。 二.实验目的 1、掌握电子电路的一般设计方法和设计流程。 2、学习使用PROTEL软件绘制电路原理图和印刷版图。] 3、掌握应用EWB对设计的电路进行仿真,通过仿真结果验证设计的 正确性。 三.设计方案 图1 图1为交通灯控制器的一个参考设计方案。在这一方案中,系统主要由控制器.定时器.脉冲信号发生器.译码器.信号灯组成。 TL.TY为定时器的输出信号,ST为控制器的输出信号。 当车道绿灯亮时,定时器开始记时,当记时到30秒时,TL输出为1,否则,TL=0;当车道黄灯亮后,定时器开始记时,当记时到5秒时,TY输出为1,否则,TY=0;

ST为状态转换信号,当定时器数到规定的时间后,由控制器发出状态转换信号,定时器开始下一个工作状态的定时计数。 交通信号灯Array有四个状态,用S0. S1. S2 .S3来表示,并且分别分配编码状态为 00 .01 .11. 10 ,控制状态为: 表 1.状态转换 表 图2 画出了控制器的状态转换图,图中TY和TL为控制器的输入信号, ST为控制器的输出信号。

山东理工大学—操作系统课程设计选题

山东理工大学:操作系统课程题目要求 说明:(1)未做特别说明的均参照任务书的要求,每位同学独立完成课程设计。(2)设计中所涉及到的存储结构采用链式,除非题目中有特殊要求;(3)自己所编写的代码不能少于总代码的1/3(输入输出语句不算在内),否则为不合格 1.银行家算法的设计与实现(2人) 要求:(1)设计一个小型的死锁避免系统,在系统中体现银行家算法及安全性算法;(2)用户请求及系统当前的资源分配状态从键盘输入; (3)输出能够判断当前的系统状态是否是安全的?若安全,给出至少一个安全序列;若不安全,给出原因(4)某进程提出一个请求,该请求能够满足,但会使系统进入不安全状态(5)某进程提出一个请求,该请求不能满足 可参考教材上的例题实现 2.基于FCFS和SPF的进程管理系统的设计(2人) 要求:(1)设计一个完整的进程调度系统,

系统中至少包括5个进程;(2)定义PCB;(3)采用链表管理就绪队列;(4)结果要能够显示出进程的调度序列及进入系统的时间、运行时间等必要信息;(5)设计的输入数据要能体现算法的思想 3.基于静态优先权和响应比的进程管理系统的设计(2人) 要求:(1)设计一个完整的进程调度系统,系统中至少包括5个进程;(2)定义PCB,在PCB中定义进程的初始优先权(用整数表示);(3)采用链表管理就绪队列;(4)结果要能够显示出进程的调度序列及初始优先权、响应比等必要信息(5)设计的输入数据要能体现算法的思想 4.基于多级反馈队列的进程管理系统的设计(2人) 要求:(1)设计三级队列,每一队列至少三个进程;(2)定义PCB(3)为每一队列设置不同的时间片,后一队列通常是前一队列的2倍,依次类推(4)采用链表管理就绪队列;(5)结果要能够显示出进程的调度过程

操作系统课程设计

课程设计说明书 (操作系统) 题目:进程调度 院系:计算机科学与工程学院 专业班级:信息安全13—2 学号: 20133029xx 学生姓名: xx 指导教师:xx 2015年12月 15日 ?安徽理工大学课程设计(论文)任务书 计算机科学与工程学院

安徽理工大学课程设计(论文)成绩评定表

摘要 现代计算机系统中,进程就是资源分配与独立运行得基本单位,就是操作系统得核心概念.因而,进程就成为理解操作系统如何实现系统管理得最基本,也就是最重要得概念。进程调度就是进程管理过程得主要组成部分,就是必然要发生得事件。 在现代操作系统中,进程得并发机制在绝大多数时候,会产生不断变化得进程就绪队列与阻塞队列。处于执行态得进程无论就是正常或非正常终止、或转换为阻塞状态,都会引发从就绪队列中,由进程调度选择一个进程进占C PU。 进程调度得核心就是进程调度得算法。在本课程设计中,用良好清晰得界面向用户展示了进程调度中得时间片轮转调度算法.在最终实现得成果中,用

户可指定需要模拟得进程数,CPU时间片与进程得最大执行时间,并且选择需要演示得算法,界面将会动态得显示进程调度过程及各个队列得变化。通过此进程调度模拟系统,用户可以对时间片轮转调度算法有进一步以及直观得了解。 关键词:进程,调度,PCB,时间片轮转?目录 1、设计目得................................................................................................................. 错误!未定义书签。 2、设计思路................................................................................................................. 错误!未定义书签。 3、设计过程................................................................................................................. 错误!未定义书签。 3、1流程图............................................................................................................. 错误!未定义书签。 3、2算法?错误!未定义书签。 3、3数据结构.......................................................................................................... 错误!未定义书签。 3、4源代码?错误!未定义书签。 4、实验结果及分析..................................................................................................... 错误!未定义书签。 4、1使用说明?错误!未定义书签。 4、2程序演示?错误!未定义书签。 5、实验总结................................................................................................................. 错误!未定义书签。 6、参考文献................................................................................................................. 错误!未定义书签。

相关文档
最新文档