操作系统课程设计
操作系统原理及应用课程设计报告

《操作系统原理及应用》课程设计报告 Linux系统服务管理及安全设计学院(系): 计算机科学与工程学院班 级: 学号学生姓名:指导教师:时间: 从 2012 年 05 月14日 到 2012 年05月18日一、课程设计的目的本课程设计是学生学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及Linux安全服务管理,加强学生的动手操作能力。
二、课程设计要求设计一套安全的系统 Linux要求:1. 系统不能被破解密码;2. 系统不能被恶意重启;3. 只有指定用户才能ssh 登录系统,保障系统安全;4. 编写防火墙策略,保障系统安全,只开放允许访问的tcp 22, tcp 80,tcp 20 21;5.搭建一个Web网站;6.编写shell程序,阻止恶意攻击服务器的来源IP,连接服务器.三、课程设计内容3.1、 Redhat 基础及权限控制Linux 安装中的重要步骤:引导安装程序、磁盘分区、网络参数配置、密码设置、软件包选择Linux 系统引导过程:服务器硬件自检、引导MBR、引导Kernel、引导驱动及服务、自定义加载项、6种引导方式介绍(/etc/inittab)Linux root 密码破解:单用户模式,进行root密码破解Linux 加密防止 root 密码破解:明文加密 (password) 、非明文加密 (grub-md5-crypt )Linux防止恶意重启:禁用ctrl+alt+del 重启功能 (/etc/inittab)Linux文件权限数字表示:可读 R 4、可写 W 2、可执行 X 1Linux文件权限调整:修改所有者 chown 、修改权限 chmodLinux网络参数配置:网络IP地址配置、同一网卡配置多个IP地址Linux查看IP及route:Ipconfig、 ip add、route -nLinux常用命令文件管理类:ls cat more vi cp rm find paste wc grep head tail 磁盘管理:df du fdisk mkfs mount umount系统状态:uptime last vmstat iostat top free3.2、 软件管理及Shell编程Linux rpm 包的管理 :软件包安装、软件包升级、查询已安装的软件包Linux 源码包的管理 :源码包安装、configure、make、make test、make install、源码包删除Linux 文本处理 :文本编辑器、 vi 编辑器Linux Shell编程中常用命令条件测试:test 或者 []、-d 目录、-f 文件、-s 文件大小非0正则表达示:^ 行首、$ 行尾、以 $ 打头的命令、$? 上一个命令执行结果、$1 输入的第1个参数3.3、存储管理及系统管理Linux 系统常用服务管理 :常用系统服务启动与关闭、系统设置 服务器设置 服务常用系统服务介绍Network 网络服务、sshd ssh 远程连接服务Httpd Apache Web 服务器、Smb 文件共享服务器Vsftp FTP 服务器、Bind DNS 服务器Iptables 防火墙、Linux 进程管理进程查看 top , ps –ef 结束进程 Kill id、Kill –9 idLinux 文件系统管理磁盘分区、fdisk 、格式化分区、mkfs.ext3 、挂载分区、mount、卸载分区、umountLinux 卷管理 LVM磁盘分区 fdisk (disk type id: 8e)建立 PV pvcreate pvdispaly建立 VG vgcreate vgchange -a y (激活VG) vgdisplay建立 LV lvcreate lvdisplay格式化LV make.ext3挂载 LV mount缷载LV umountLinux 系统管理 :以图形化的形式 讲解常用系统管理 、用户和组 、日期和时间、显示Linux 系统日志管理系统日志文件位置 、/var/log/message观察日志变化、tail -f /var/log/message筛选日志内容、grep “error” /var/log/message3.4、常用服务器搭建、安全配置Linux openSSH 安全配置 (/etc/ssh/sshd_config )修改SSH服务端口:# Port 22 修改为 Port 9022修改SSH连接协议为版本2:#Protocol 2,1 修改为 Protocol 2权限只定用户连接SSH:AllowUsers user1重启ssh服务系统设置 服务器设置 服务,启动服务”sshd”、使用命令 service sshd restart使用软件连接SSH服务:在Windows上使用putty.exeLinux http服务器配置检查所需要的软件包[root@rh9 /]# rpm -qa | grep httphttpd-2.0.40-21libghttp-1.0.9-7httpd-manual-2.0.40-21redhat-config-httpd-1.0.1-18安装http服务软件包通过系统的”添加删除程序功能”进行安装、使用rpm –ivh 软件包名进行安装配置HTTP网站网页默认存放位置:/var/启动HTTP网站服务系统设置 服务器设置 服务,启动服务”httpd”、使用命令 service httpd start访问Linux Web网站: IPLinux dns服务器配置检查所需要的软件包[root@rh9 /]# rpm -qa | grep bindredhat-config-bind-1.9.0-13bind-utils-9.2.1-16ypbind-1.11-4bind-9.2.1-16安装DNS服务软件包通过系统的”添加删除程序功能”进行安装、使用rpm –ivh 软件包名进行安装配置DNS服务配置反向解析、配置正向解、异常解决 DNS服务不能启动。
linux实时时间显示课程设计

linux实时时间显示课程设计一、教学目标本课程的教学目标是让学生掌握Linux系统中实时时间显示的原理和方法。
具体包括:1.知识目标:–了解Linux操作系统的基本结构;–掌握Linux系统中的时间管理机制;–理解实时时间显示的原理和方法。
2.技能目标:–能够配置Linux系统的时钟;–能够使用命令行工具获取实时时间;–能够编写简单的脚本实现实时时间显示。
3.情感态度价值观目标:–培养学生的动手实践能力,提高他们对计算机科学的兴趣;–培养学生团队合作精神,提高他们的问题解决能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.Linux操作系统基本结构:介绍Linux操作系统的内核、文件系统、进程管理等基本组成部分;2.时间管理机制:讲解Linux系统中的时间管理机制,包括时钟、时间源、时间同步等;3.实时时间显示原理:介绍实时时间显示的原理,包括硬件时钟、软件时钟、NTP协议等;4.实时时间显示方法:讲解如何在Linux系统中实现实时时间显示,包括命令行工具的使用、脚本的编写等。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:用于讲解Linux操作系统基本结构、时间管理机制等理论知识;2.讨论法:通过小组讨论,让学生深入理解实时时间显示的原理和方法;3.案例分析法:分析实际案例,让学生掌握命令行工具和脚本的使用;4.实验法:让学生动手实践,配置Linux系统的时钟,编写实时时间显示的脚本。
四、教学资源本课程所需的教学资源包括:1.教材:《Linux操作系统原理与应用》;2.参考书:《Linux系统编程》;3.多媒体资料:PPT课件、实验指导视频等;4.实验设备:计算机、网络设备等。
以上教学资源将有助于实现本课程的教学目标,提高学生的学习效果。
五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和理解程度;2.作业:布置相关的编程练习和理论作业,评估学生对知识的掌握和应用能力;3.实验报告:评估学生在实验过程中的操作技能和对实时时间显示原理的理解;4.期末考试:采用闭卷考试的方式,全面测试学生的理论知识和实践能力。
操作系统课程设计

操作系统课程设计一、课程目标知识目标:1. 理解操作系统的基本概念、功能、类型和结构,掌握操作系统的五大核心功能模块(处理器管理、存储器管理、设备管理、文件管理、用户接口);2. 掌握操作系统的发展历程、主要操作系统(如Windows、Linux、Mac OS)的特点及应用场景;3. 了解操作系统的设计与实现原理,包括进程管理、内存管理、设备管理、文件系统等关键技术;4. 学会使用操作系统提供的命令行或图形界面进行基本的系统操作与维护。
技能目标:1. 培养学生对操作系统的实际操作能力,能够熟练使用至少一种操作系统进行日常管理与维护;2. 培养学生运用操作系统原理解决实际问题的能力,如分析系统性能、诊断故障、优化配置等;3. 提高学生的编程能力,使其能够编写简单的系统程序或脚本,实现特定功能。
情感态度价值观目标:1. 培养学生对操作系统的兴趣,激发学生学习计算机科学的热情;2. 培养学生的团队合作意识,使其在讨论、分析、解决问题的过程中学会倾听、交流、协作;3. 培养学生具备良好的信息素养,关注操作系统领域的最新发展,增强信息安全意识。
课程性质:本课程为计算机科学与技术专业(或相关领域)的必修课,具有较强的理论性和实践性。
学生特点:学生已具备一定的计算机基础知识,具有较强的学习兴趣和动手能力,但可能对操作系统原理的理解和应用尚有不足。
教学要求:注重理论与实践相结合,以案例驱动、任务导向的方式进行教学,注重培养学生的实际操作能力和问题解决能力。
通过本课程的学习,使学生能够掌握操作系统的基本原理,提高实际应用水平,为后续专业课程学习打下坚实基础。
二、教学内容1. 操作系统概述:介绍操作系统的基本概念、功能、类型,比较不同操作系统的特点,分析操作系统的发展趋势。
教材章节:第一章 操作系统概述2. 进程与线程管理:讲解进程与线程的概念、状态与转换,进程调度算法,同步与互斥,死锁与饥饿问题。
教材章节:第二章 进程管理3. 存储管理:介绍内存分配与回收策略,虚拟内存技术,页面置换算法,内存保护机制。
操作系统课程设计报告

操作系统课程设计报告概述:本课程设计旨在使学生熟悉文件管理系统的设计方法,加深对所学各种文件操作的了解及其操作方法的特点。
通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识,加深对教材中的重要算法的理解。
同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。
主要任务:本课程设计的主要任务是设计和实现一个简单的文件系统,包括建立文件存储介质的管理机制、建立目录(采用一级目录结构)、文件系统功能(显示目录、创建、删除、打开、关闭、读、写)和文件操作接口(显示目录、创建、删除、打开、关闭、读、写)。
系统设计:本系统模拟一个文件管理系统,要完成对文件的基本操作,包括文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。
系统建立了文件目录树,存储文件系统中的所有文件。
对于用户名下的文件,用文件目录树的分支来存储。
采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作即可。
整体设计框架:系统初始化界面由创建用户存储空间、管理文件、退出系统三个模块组成。
用户创建由创建用户存储空间、进入目录、删除用户存储空间、显示所有用户存储空间等模块组成。
然后各个模块再由一些小模块组成。
其中创建文件、打开关闭文件、读写文件等文件操作模块包括在进入目录模块里面。
系统实现:以下是本课程设计的主要内容的实现程序代码:cincludeincludeincludetypedef struct file{ char name[10];struct file *next; File;typedef struct content{ char name[10];File *file;int f_num;struct content *next; Content;typedef struct user{ char name[10];char psw[10]; Content *con;struct user *next; User;char cur_user[20];XXX;int user_num=0;添加文件:在该函数中,我们首先需要获取文件名,然后检查是否已经存在该文件。
操作系统课程设计报告

课程设计报告课程名称操作系统课题名称生产、消费面包问题一、设计内容与设计要求1.设计内容:[问题描述] 面包房有五个盘子,生产者生产面包放入其中。
生产时不能消费。
盘子中有面包才能消费。
五只盘子全满时不能生产。
[基本功能](1)生产者进程(2)消费者进程2.设计要求:课程设计报告规范1)需求分析a.程序的功能。
b.输入输出的要求。
2)概要设计a.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。
b.课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
3)详细设计a.采用C++语言定义相关的数据类型。
b.写出各模块的类C码算法。
c.画出各函数的调用关系图、主要函数的流程图。
4)调试分析以及设计体会a.测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。
b.程序调试中遇到的问题以及解决问题的方法。
c.课程设计过程经验教训、心得体会。
5)使用说明用户使用手册:说明如何使用你编写的程序,详细列出每一步的操作步骤。
6)书写格式a.设计报告要求用A4纸打印成册:b.标题为:黑体二号(加粗):正文为:宋体5号。
行间距为固定值22。
c. 封面格式如第1页。
7)附录a.参考书目b.源程序清单(带注释)●考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。
具体考核标准包含以下几个部分:1、平时出勤(占10%)2、系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%)3、程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%)4、设计报告(占30%)注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。
5、独立完成情况(占10%)。
●课程验收要求①运行所设计的系统。
操作系统精髓与设计原理第八版课程设计

操作系统精髓与设计原理第八版课程设计背景操作系统是计算机科学中的核心领域,其作为系统软件,承担着管理硬件资源和提供高效服务的工作,是计算机系统中至关重要的部分。
操作系统的发展历程相当漫长,经过了多个版本和迭代,不断加入新的功能和技术,才能适应现代计算机的需求。
目的本次课程设计旨在通过学习操作系统精髓与设计原理第八版这本经典教材,深入了解操作系统的核心思想、设计原理和实现方法,掌握操作系统的实现技术,并通过实践操作系统内核的设计和实现,提高学生的操作系统设计和实现能力。
同时,通过本次课程的学习,可以很好的帮助学生理解其他系统软件和计算机领域中的相关知识。
内容课程大纲1.操作系统简介2.进程和线程3.内存管理4.文件系统5.设备管理和驱动程序6.操作系统安全和保护7.操作系统性能和优化8.操作系统的未来课程要求和评估方式1.每周阅读指定章节并提交阅读报告;2.完成多个实践项目,包括进程调度、内存管理、文件系统等模块的设计和实现; 3.参与小组讨论和课堂演示,并提交课堂小结和总结; 4.期末考试,重点测试学生对操作系统的理解和实现能力。
实践项目1.实现一个简单的操作系统内核;2.实现进程调度算法,如FCFS、RR等;3.实现一个简单的内存管理器,如按需分配、固定大小分配等;4.实现一个简单的文件系统,如FAT32、Ext2等;5.编写设备驱动程序,如键盘驱动、磁盘驱动等。
难点和解决方案1.操作系统内核的实现:需要深入了解操作系统的体系结构和内核实现技术,可以参考已有的一些简单的内核实现和设计原理,如minix、linux的内核实现等。
2.进程调度算法的设计和实现:可以参考已有的一些经典算法和文献,如进程优先级调度、时间片轮转调度等。
3.内存管理器的设计和实现:需要掌握内存管理的基本原理和技术,如虚拟内存、内存页面置换等。
4.文件系统的设计和实现:需要深入了解文件系统的基本原理和技术,如文件存储结构、文件索引表等。
操作系统课程设计Linux
操作系统课程设计Linux一、教学目标本课程的教学目标是使学生掌握Linux操作系统的核心概念、原理和应用技能。
通过本课程的学习,学生将能够:1.理解操作系统的基本原理,包括进程管理、内存管理、文件系统和输入/输出系统。
2.掌握Linux操作系统的安装、配置和管理方法。
3.熟练使用Linux命令行界面,进行日常操作和系统管理。
4.掌握Linux常用命令、 shell脚本编写和系统监控工具的使用。
5.了解Linux操作系统在服务器、嵌入式设备和云计算等领域的应用。
二、教学内容本课程的教学内容分为五个部分:1.操作系统概述:介绍操作系统的定义、功能和分类,以及Linux操作系统的历史和发展。
2.进程管理:讲解进程的基本概念、进程控制、进程同步和互斥、死锁及其解决方法。
3.内存管理:介绍内存分配与回收策略、内存保护、虚拟内存和分页分段机制。
4.文件系统:讲解文件和目录结构、文件访问控制、文件系统性能优化和磁盘空间分配策略。
5.输入/输出系统:介绍I/O设备管理、中断和DMA机制、设备驱动程序和I/O调度策略。
三、教学方法本课程采用多种教学方法相结合的方式,以提高学生的学习兴趣和主动性:1.讲授法:教师讲解操作系统的核心概念和原理,引导学生掌握基本知识。
2.讨论法:学生针对实际案例和问题进行讨论,培养学生的思考和分析能力。
3.案例分析法:分析Linux操作系统的实际应用案例,使学生了解操作系统的应用场景。
4.实验法:安排实验室课时,让学生亲自动手进行系统安装、配置和调试,提高学生的实践能力。
四、教学资源本课程的教学资源包括:1.教材:选用权威、实用的Linux操作系统教材,如《Linux操作系统原理与应用》。
2.参考书:提供相关的学术论文、技术博客和在线文档,供学生拓展阅读。
3.多媒体资料:制作课件、教学视频和演示文稿,辅助学生理解和记忆。
4.实验设备:提供Linux服务器、虚拟机和实验室环境,让学生进行实际操作。
操作系统课程设计报告
实践课设计报告课程名称操作系统课程设计模拟设计内存管理中的地址题目转换(动态分区、页式十进制)学院班级学号姓名指导教师年月日课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 模拟设计内存管理中的地址转换(动态分区、页式十进制)初始条件:1.预备内容:阅读操作系统的内存管理章节内容,理解动态分区、页式、段式和段页式存储管理的思想及相应的分配主存的过程。
2.实践准备:掌握一种计算机高级语言的使用。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.下列内部存储器管理中地址转换,在完成指定存储管理技术中的地址转换基础上还可以选择其它内部存储器管理中的地址转换进行模拟设计并实现:⑴动态分区方案,用最先适用算法对作业实施内存分配,然后把作业地址空间的某一逻辑地址转换成相应的物理地址。
能够处理以下的情形:输入某一逻辑地址,程序能判断地址的合法性,如果合法,计算并输出相应的物理地址。
如果不能计算出相应的物理地址,说明原因。
⑵页式存储管理中逻辑地址到物理地址的转换(十进制)。
能够处理以下的情形:输入某一十进制逻辑地址,能检查地址的合法性,如果合法进行转换,否则显示“地址非法”;物理地址用十进制表示。
⑶页式存储管理中逻辑地址到物理地址的转换(八进制)。
能够处理以下的情形:输入某一八进制逻辑地址,能检查地址的合法性,如果合法进行转换,否则显示“地址非法”;物理地址用八进制表示。
⑷页式存储管理中逻辑地址到物理地址的转换(十六进制)。
能够处理以下的情形:输入某一十六进制逻辑地址,能检查地址的合法性,如果合法进行转换,否则显示“地址非法”;物理地址用十六进制表示。
⑸段式存储管理中逻辑地址到物理地址的转换。
能够处理以下的情形:指定内存的大小,进程的个数,每个进程的段数及段大小;能检查地址的合法性,如果合法进行转换,否则显示地址非法的原因。
⑹段页式存储管理中逻辑地址到物理地址的转换。
操作系统课程设计银行家算法
《操作系统--课程设计报告》银行家算法姓名:学号:专业:指导老师:目录一、设计目的 ............................................................................... 错误!未定义书签。
二、设计要求ﻩ错误!未定义书签。
三、设计内容和步骤 ................................................................... 错误!未定义书签。
四、算法描述ﻩ错误!未定义书签。
五、实验结果ﻩ错误!未定义书签。
六、实验心得 ............................................................................... 错误!未定义书签。
一、设计目的银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算法程序。
加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。
二、设计要求在了解和掌握银行家算法的基础上,能熟练的处理课本例题中所给状态的安全性问题,能编制银行家算法通用程序,将调试结果显示在计算机屏幕上。
具体程序的功能要求:1.设定进程对各类资源最大申请表示及初值确定。
2.设定系统提供资源初始状况(已分配资源、可用资源)。
3.设定每次某个进程对各类资源的申请表示。
4.编制程序,依据银行家算法,决定其申请是否得到满足。
三、设计内容和步骤设计内容银行家算法的思路:先对用户提出的请求进行合法性检查,即检查请求的是不大于需要的,是否不大于可利用的。
若请求合法,则进行试分配。
最后对试分配后的状态调用安全性检查算法进行安全性检查。
若安全,则分配,否则,不分配,恢复原来状态,拒绝申请。
设计步骤1、为实现银行家算法,系统中需要设置若干数据结构,用来表示系统中各进程的资源分配及需求情况。
操作系统课程设计
操作系统课程设计报告1、概述一、设计目的1.对死锁避免中的银行家算法作进一步理解。
2.加深理解死锁的概念。
3.加深理解安全序列和安全状态的概念。
4.通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁地发生。
二、开发环境操作系统Windows xp编译环境VC++6.0生成文件银行家算法.cpp2、需求分析一、死锁概念:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程.由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了死锁。
二、关于死锁的一些结论:1.参与死锁的进程最少是两个(两个以上进程才会出现死锁)2.参与死锁的进程至少有两个已经占有资源3.参与死锁的所有进程都在等待资源4.参与死锁的进程是当前系统中所有进程的子集如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃。
三、资源分类:永久性资源:可以被多个进程多次使用(可再用资源)1)可抢占资源2)不可抢占资源临时性资源:只可使用一次的资源;如信号量,中断信号,同步信号等(可消耗性资源)“申请--分配--使用--释放”模式四、产生死锁的四个必要条件:1、互斥使用(资源独占)一个资源每次只能给一个进程使用2、不可强占(不可剥夺)资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放3、请求和保持(部分分配,占有申请)一个进程在申请新的资源的同时保持对原有资源的占有(只有这样才是动态申请,动态分配)4、循环等待存在一个进程等待队列{P1 , P2 , … , Pn}, 其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河北大学工商学院2011级本科生学年论文(课程设计) 学年论文(课程设计)题目:操作系统课程设计——文件管 理与用户接口学 部 信息科学与工程学部学科门类 工学专 业 电气信息学 号 201148姓 名指导教师 朱亮2013年 6月 22 日装订线目录一引言 (4)1.1性质 (4)1.2 课程设计目的 (4)1.3 课程设计内容 (4)1.4小组成员及编程语言 (4)1.5 论文结构安排 (4)二需求分析 (5)2.1整体架构 (5)2.2具体分析 (5)2.2.1文件的逻辑结构 (5)2.2.2文件的物理结构 (5)2.2.3目录结构 (6)2.2.4磁盘分配与回收 (7)2.2.5用户接口 (8)2.2.6屏幕显示 (9)三总体设计及实现 (9)3.1磁盘管理 (9)3.1.1磁盘的创建 (9)3.1.2磁盘的分配 (9)3.1.3磁盘的回收 (10)3.1.4磁盘状态的显示 (11)3.2目录结构的实现 (11)3.2.1创建目录 (11)3.2.2删除空目录 (14)3.2.3删除目录 (16)3.3文件 (19)3.3.1创建文件 (19)3.3.2保存文件 (22)3.3.3拷贝文件.............................. - 22 -3.3.4删除文件 (26)3.3.5移动文件.............................. - 22 -3.3.6编辑文件 (28)3.4用户接口 (29)3.5系统整体界面 (29)四设计总结 (30)参考文献 (30)一、引言1.1性质操作系统是计算机科学与技术专业的主要专业基础课和主干课。
操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。
1.2 课程设计目的通过模拟操作系统的实现,加深对操作系统工作原理理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。
1.3 课程设计内容模拟采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。
1.4 小组成员及编程语言小组成员:组长:尚思雨(存储管理)组员:张琳(进程管理)许婷婷(文件管理与用户接口)郭娜娜(设备管理)编程语言:C#1.5 论文结构安排论文主要分为四部分内容:(1)引言,主要说明本次操作系统课程设计的性质、目的、内容要求以及论文的结构安排;(2)需求分析,主要阐述系统的主要功能模块以及每个模块计划采用的实现方法和原理;(3)总体设计及实现,通过流程图等工具描述主要模块的实现流程;(4)结束语,主要书写已经实现的本系统存在的不足、改进方案和在课程设计中的实际感受。
二、需求分析2.1整体架构文件管理与用户接口部分实现的主要是单用户的磁盘文件管理部分,包括文件的逻辑结构、物理结构、目录、磁盘分配回收、文件的保护和用户接口的实现。
2.2具体分析2.2.1文件的逻辑结构文件的逻辑结构采用流式结构;文件均采用文本文件;系统中有两种文件,一种是存放任意字符的文件,一种是可执行文件。
可执行文件的内容就是模拟系统内进程的程序体。
文件中要有一种特定命令的“可执行”文件,文件中的命令非常简单,包括:x=?; 给x赋值一位数x++; x加1x--; x减1;第一个?为A,B,C中某个设备,第二个?为一位数,表示使用设备的时间(由于没有实际设备,所以无法知道设备何时工作完成,所以假定一个数,这个数随着系统时间增加而递减,减到0时,认为是设备工作完成);end. 表示文件结束,同时将结果写入文件out,其中包括文件路径名和x 的值。
2.2.2文件的物理结构文件的物理结构采用索引文件,每个文件分配一个索引块(存放索引的盘块)把分配给该文件的所有盘块号都记录在该索引块中,按照这种分派方式存储的文件就是索引文件。
由于索引块就是一个存放许多盘块号的盘块,因此,为使系统能找到文件存放的地址,文件目录项记录该文件索引块的盘块号和文件长度。
为一个大文件分配磁盘空间时,如果所分配除去盘块的盘块号,已经装满一索引块时,便需再为该文件分配另一个索引块,用于将以后继续分配给该文件的盘块号记录其中,以此类推。
同时,应为这些索引块再建立一级索引,即系统再分配一索引块,作为一级索引块的索引块,将第一块、第二块、第三块、……索引块的盘块号写入此索引块中,这样便形成了二级索引的分配方式,如果文件非常大的时候,还可以用三级、四级索引分配方式。
本系统实现二级索引,如图2-1所示:图2-1 文件索引分配方式2.2.3目录结构目录结构采用树形目录结构,根目录项既可以表示一个普通文件,也可以是下一级目录的目录文件的一个说明项,如此层层类推,形成一个树形层次结构,如图2-2所示:2.2.4磁盘分配与回收磁盘分配:磁盘的分配采用链接结构(显式链接)的分配。
系统采用文件分配表方式记录磁盘空间的使用情况和链接结构的指针。
磁盘回收:每删除一个文件则释放一个盘块,该盘块由蓝色变为灰色。
磁盘使用情况用空闲块成组链接法来记录:把空闲块分成若干组,把指向一组中各空闲块的指针集中在一起,每一组的第一个空闲块中登记下一组空闲块的块号和空闲块数,余下不足一组块数的空闲块的块号级快数登记在一个专用块中,这样既可方便查找,又可减少为修改指针而启动的磁盘的次数,在本系统中将第0块作为专用块,如图2-3是空闲块成组链接示意图:图2-3 空闲块成组链接示意图2.2.5 用户接口用户接口提供用户命令接口,具体实现以下命令:1.创建文件:create 文件名2.拷贝文件:copy 源文件名目标文件名(拷贝文件可同名拷贝,也可更名拷贝)3.删除文件:delete 文件名4.移动文件:move 源文件名目标文件名(磁盘内和磁盘间文件移动不同,磁盘内的移动实际只是目录的改变,并不需要真的移动文件;磁盘间的文件移动实际上是先拷贝文件到目标磁盘,然后再删除源文件。
)5.显示文件:type 文件名(仅仅是显示文件内容)6.编辑文件:edit 文件名(此命令完成对文件的编辑,只读文件不可以修改。
)7.改变文件属性:change 文件名属性(将文件在只读和非只读、隐藏和非隐藏之间转换。
)8.磁盘格式化命令:format9.建立目录: makdir 目录名(建立目录,若有同名目录存在,则建立失败。
)10.删除空目录:rdir 目录名(只能删除空目录,非空目录不能删除)11.删除目录:deldir 目录名(既可以删除空目录,又可以删除非空目录,对与非空目录,首先要删除其下文件和目录,然后才能删除其本身。
)2.2.6屏幕显示屏幕显示要求包括:用户命令接口,用于系统运行时用户输入命令;磁盘目录显示,要求显示磁盘的树型目录结构;磁盘使用情况,显示磁盘每一个磁盘块的空间是占用还是空闲。
三、系统实现3.1磁盘管理3.1.1磁盘的创建磁盘的创建主要采用的文件流的方式,采用了二位byte数组进行储存。
3.1.2磁盘的分配空闲块的分配和回收都是针对专用块来操作的,没分配一块后,把空闲块数减1,但要把一组中的第一个空闲块分配除去之前应该把登记在该块中的下一组的块号及块数保存到专用快中(原专用块中的信息已经无用,因为它指示的一组空闲块都已被分配),如图3-1-2所示:3.1.3磁盘的回收当归还一块时,只要把归还块的块号登记到专用块的当前组中且将空闲块数加1,如果当前组已经满10块,则把专用块中的内容写到归还的那块中,该归还块作为新组的第一块,如图3-2所示:3.1.4磁盘状态的显示磁盘的状态在每次分配和回收磁盘块的函数过程中实现,绿色表示系统占用的磁盘,每分配一个空闲块,将相应lable灰色改为蓝色,表示该磁盘块已经被占用;每回收一块磁盘块的时候,将相应Label由蓝色改为灰色,表示该磁盘块空闲。
3.2目录结构的实现3.2.1创建目录建立目录首先要找到建立目录的位置(父目录),然后查找该目录是否存在,如果父目录不存在,不能建立,如果存在,查找是否存在同名目录,存在,不能建立,不存在,则查找一个空目录项,,为该目录项申请一个盘块,并填写目录内容,如图3-2-1所示:实现创建目录功能的代码如下:#region CreateMenu(建立目录)public void CreateMenu(string pathname,string harddisk){int searchresult = Search(pathname,harddisk);if (searchresult == 1){MessageBox.Show("文件路径不存在!","注意",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);return;}else if (searchresult == 0){string[] pnames = pathname.Split(new char[] { '\\' }); //分割路径string halfpathname = pathname.Remove(pathname.Length - 4); //去掉最后一个目录名UTF8Encoding utf = new UTF8Encoding();int disknum = FindFAT(harddisk);byte disknumber = Convert.ToByte(disknum);if (halfpathname.Length != 2){if (FindNullItem(Search(halfpathname,harddisk),harddisk) == 0) //没有空目录项{MessageBox.Show("目录已满!");return;}WriteFile(Search(halfpathname,harddisk),FindNullItem(Search(halfpathname,harddisk),harddisk),CreateFCB(utf.GetBytes(pnames[pnames.Length - 1]), 0, 8, disknumber,Convert.ToChar(0)),harddisk);RecordMenuFAT(disknum,harddisk);}else{if (FindNullItem(3,harddisk) == 0) //没有空目录项{MessageBox.Show("目录已满!");return;}WriteFile(3, FindNullItem(3,harddisk),CreateFCB(utf.GetBytes(pnames[pnames.Length - 1]), 0, 8, disknumber,Convert.ToChar(0)),harddisk);RecordMenuFAT(disknum,harddisk);}}else{MessageBox.Show("文件存在!", "注意", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);return;}}#endregion创建目录过程截图:创建目录过程截图3.2.2删除空目录删除空目录首先要找到该目录,如果目录不存在,删除失败;如果存在,但是,是非空目录,显示不能删除,操作失败;若是空目录,将目录在树形目录和磁盘中删除,如图3-2-2所示:实现判断空目录功能的代码:#region FindNullItem(判断是否为空目录项)public int FindNullItem(int dnum,string harddisk){FileStream Disk = new FileStream(harddisk, FileMode.Open);int n = 0;int flag=0;for (int i = 0; i < 8; i++){Disk.Seek(64 * (dnum - 1) + 4 + n, SeekOrigin.Begin); //读fcb 中的attributeif (Disk.ReadByte() == 0){flag = i+1;break;}n = n + 8;}Disk.Close();return flag;}#endregion3.2.3删除目录删除目录是在删除空目录的基础上增加了删除非空目录的功能。