*** 作系统课程设计

 *** 作系统课程设计,第1张

—、计算机 *** 作系统课程设计方案

课程概况

计算机 *** 作系统是中央电大计算机科学与技术专业(本科)的一门统设必修课。课程教学总学时72,4学分,开设一学期。前修课程为计算机组成原理、面向对象程序设计和数据结构。

计算机 *** 作系统课是计算机专业的重要课程之一,通过学习使学员掌握计算机 *** 作系统的设计基本原理及组成;计算机 *** 作系统的基本概念和相关的新概念、名词及术语;了解计算机 *** 作系统的发展特点和设计技巧和方法;对常用计算机 *** 作系统(DOS、Windows和UNIX或Linux)会进行基本的 *** 作使用。

• 课程主要内容

主要内容包括:计算机 *** 作系统概述、作业管理、文件管理、存储管理、输入输出设备管理、进程及处理机管理、 *** 作系统结构及程序设计。

二、教学内容体系及教学要求

第一章 *** 作系统概述

教学内容:

*** 作系统定义及发展; *** 作系统的形成和五大类型; *** 作系统的五大功能;表征 *** 作系统的属性; *** 作系统的配置、“生成”概念

教学要求:

熟练掌握:什么是 *** 作系统;知道 *** 作系统有五大类型和五大功能;

掌握:至少掌握一种实际揽 *** 作系统的安装、使用和维护;

了解:初步了解如何认识、熟悉和解剖 *** 作系统

第二章 人机交互界面、任务、作业管理

教学内容:

人机交互界面的发展特点;第一、二、三代界面开发特点;基本的键盘命令和系统调用 *** 作系统Shell语言;作业调度算法;

教学要求:

熟练掌握:能进行一些人机接口界面的设计;

掌握:掌握 *** 作系统人机接口界面的基本设计思想;

了解: *** 作系统传统的接口界面

第三章 文件管理

教学内容:

文件管理的任务与功能;文件的结构与分类;文件的物理结构和逻辑结构;文件的目录结构;文件的存取控制和安全机制;文件系统与模型结构;

教学要求:

熟练掌握:文件的基本存取控制和系统管理;

掌握:文件系统的目录分类管理特点;

了解:文件系统的编程设计

第四章 内部存储管理

教学内容:

内存的分区、分页、分段管理概念;物理地址与逻辑地址;内存“扩充”技术;页式存储管理;段式存储管理;内存的分配算法

教学要求:

熟练掌握:内存管理中基本分配和调度方法;

掌握:掌握内存管理中各种分区、分页和分段方法的特点;

了解:内存空间的有效利用

第五章 输入输出设备管理

教学内容:

输入输出设备功能与分类;独享、共享、虚拟设备的管理特点;输入输出设备处理程序;输入输出设备的管理策略;

教学要求:

熟练掌握:掌握输入输出设备的管理特点;

掌握:掌握输入输出设备的分类设计方法;

了解:输入输出设备处理程序的编程要点

第六章 低级处理机管理

教学内容:

*** 作系统核心功能;“进程”概念;进程的并发与并行;进程的基本状态与转换;进程调度算法;进程的同步与互斥;进程的P—V *** 作;“死锁”概念;

教学要求:

熟练掌握: *** 作系统核心运行与“进程”的基本概念;

掌握:“进程”的基本转换状态与应用特点;

了解:进程调度算法的程序编制

第七章 *** 作系统程序结构

教学内容:

*** 作系统的层次、模块结构; *** 作系统的设计与检测;

教学要求:

本章教学基本要求:了解现代计算机 *** 作系统的基本设计思想与方法

三、课程教学媒体说明

本课程使用的教学媒体主要有:文字教材、录像教材和网上教学辅导。

1. 文字教材

《计算机 *** 作系统》(第2版)吴企渊著清华大学出版社

注:课程实验含在主教材中。

文字教材为该课程的主媒体。文字教材的编写既保持了学科体系的先进性、科学性,又兼顾 *** 作系统的理论、技术、实现三方面的融合,并强调能力的培养。

2. 录像教材

该课程已经制作16讲课程录像,每讲50分钟,讲授课程的重点、难点、课程总结。帮助学生理解,建立 *** 作系统的整体概念和思想,由吴企渊教授主讲。

课程录像与文字教材相对应,注意发挥录像教材艺术表现力、形象化教学的作用。

3.网上教学辅导

网上教学辅导与上述媒体有机配合,有几方面作用:(1)发布教学指导性文件、课程公告、问题咨询、参考资料;(2)按照教学进度,发布辅导文章,刊登练习自测题;(3)在课程论坛上进行实时答疑和日常答疑;(4)开展网上的教师培训和教学研讨等工作。

文字教材是学生学习的基本依据,录像教材是文字教材的补充,网上辅导则是教与学交互的便捷方式。总之,多种媒体的分工和搭配为学生提供较大的自学空间,便于学生自由选择、自主学习,提高学生的自学能力。

四、教学安排建议

1. 课程主教材及课程实验教学安排建议

教学点请根据中央电大的统一要求安排课程的面授辅导,见表1。

表1 课程主教材及课程实验教学安排建议

周次 教学内容 建议学时 实验内容 建议学时

一 *** 作系统课程教学安排概况介绍 2

二 *** 作系统定义、五大类型和五大功能 4

三 人机交互界面管理 2 Linux实践准备 1

四 作业管理任务调度 4

五 文件管理的任务和功能 2 Linux *** 作命令使用 1

六 文件的逻辑结构和物理结构 4

七 存储管理的任务和功能 2 命令解释程序编制 2

八 分区式分配存储管理 4

九 页式、段式分配存储管理 6 作业调度模拟编程 4

十 设备管理的任务和功能 2

十一 设备分配技术和管理 4 存储管理设计 4

十二 进程的定义和特征 4

十三 进程调度与通信 6 进程调度模拟编程 4

十四 死锁的产生和处理 2

十五 *** 作系统的层次模块结构 4

十六 (总复习) 4

总计 56 16

课程录像内容,见表2。

表2 录像教材内容

章 教学内容 课内学时 录像学时分配

一 *** 作系统概述 8学时 4

二 作业管理 8学时 2

三 文件管理 8学时 2

四 存储管理 8学时 2

五 设备管理 8学时 2

六 进程管理 10学时 4

七 *** 作系统程序结构 6学时 0

总计 56学时 16

2、网上辅导

网上辅导内容包括课程的教学文件、课程辅导、网络课堂。充分利用网络资源,定期与不定期的在网上提供有关的课程辅导材料,根据教学需要,适当安排网上辅导和考前答疑活动。具体安排如下:

• 教学文件

包括课程说明、教师介绍、教学大纲、教学设计方案。

• 课程辅导

包括课程作业及解答、专题辅导、练习和解答、期末自测、考核说明等;网上还提供了教师讲课教案,供各教学点教学使用。

• 网络课堂

包括直播课堂和IP课件。

网上教学活动:中央电大一般将每学期集中安排1次对学生的实时在线辅导,和1次对教师的教研活动。具体的时间安排每学期在电大在线主页上公布。

• 论坛:进行课程的日常答疑。

3、直播课堂

课程首开学期,通过教育电视台直播方式,安排4次直播课堂,每次50分。前3讲为对教学重点、难点,对教学过程中反映的共性问题和有代表性的问题进行辅导,后1讲为复习辅导和有关考试说明。直播课堂的内容挂在课程网页内。

4、作业

该课程有一份形成性考核册,即课程作业册。作业成绩计入课程总成绩。中央电大将不定期地抽查作业,检查作业的评审及完成情况。

关于课程考核的具体内容,请参考中央电大“计算机 *** 作系统课程考核说明”。

五、教学方法的建议

• 教学建议

(1)计算机 *** 作系统是实践性较强的课程。其特点是概念多、涉及面广。要求教学辅导要由浅入深对易混淆的概念加以详细说明,对每章的重点,管理和控制的调度算法技巧作详细介绍。

(2)在实验中着重培养学员熟练使用 *** 作系统,以及在维护 *** 作系统工作中的分析问题和解决问题能力。

• 学习建议

(1)学习 *** 作系统要从宏观和微观两方面把握。在宏观上要认识 *** 作系统在计算机系统中的地位,清楚 *** 作系统的整体结构;微观方面应掌握 *** 作系统是如何管理计算机的各种资源的(进程、处理机、存储器、文件、设备),理解有关概念、原理及技术。

(2) *** 作系统是计算机技术与管理技术的结合,学习时可以联想日常生活中熟悉的管理示例反复体会 *** 作系统的管理方法,以加深对问题的理解。

(3)注意加强对自主学习能力和动手能力的培养,努力实现“学以致用”的目标。

这是我们做的、基本上满足你的要求

#pragma warning(disable:4786)

#include <iostream>

#include <string>

#include <vector>

#include <iomanip>

using namespace std

struct File

{

string name

bool isDir

int pos

int len

File* pPre

File* pNxt

File* pChd

File* pPar

File(){name = ""isDir = falsepos = len = 0pChd = pPar = pPre = pNxt = NULL}

}

class DirSystem

{

private:

File* pRoot

public:

DirSystem(){pRoot = new FilepRoot->pChd = new FilepRoot->pPar = pRoot}

File* Append(File*&tail,const File&f)

{

tail->pNxt = new File

tail->pNxt->isDir = f.isDir

tail->pNxt->len = f.len

tail->pNxt->pos = f.pos

tail->pNxt->name = f.name

tail->pNxt->pChd = tail->pNxt->pNxt = tail->pNxt->pPar = NULL

tail->pNxt->pPre = tail

return tail->pNxt

}

void Md(File*&pCur,const File&f)

{

if(pCur->pChd == NULL)

{

pCur->pChd = new File

pCur->pChd->pPar = pCur

Append(pCur->pChd,f)

}

else

{

File* tmp = pCur->pChd

while(tmp->pNxt != NULL)

tmp = tmp->pNxt

Append(tmp,f)

}

}

void Show(File* pF)

{

if(pF == NULL)

return

File* cur = pF->pNxt

while(cur != NULL)

{

cout <<cur->name

if(cur->isDir)

cout <<"(文件夹) " <<endl

else

cout <<"(文件) " <<endl

cur = cur->pNxt

}

}

void Rd(File* pF)

{

if(pF == NULL)

cout <<"文件不存在!" <<endl

else if(pF->pChd != NULL)

cout <<"该文件夹中还有其它文件,拒绝删除!" <<endl

else

{

pF->pPre->pNxt = pF->pNxt

if(pF->pNxt != NULL)

pF->pNxt->pPre = pF->pPre

delete pF

}

}

void Init()

{

int num

cout <<"输入分区数:" <<endl

cin >>num

int i,pos

File f,*t

pos = 0

t = pRoot->pChd

f.isDir = true

f.pChd = f.pNxt = f.pPar = f.pPre = NULL

char ch = 'C'

for(i = 0i <num++i)

{

cout <<"输入分区容量:" <<endl

cin >>f.len

f.pos = pos

pos += f.len

f.name = ch++ + string(":")

t = Append(t,f)

}

}

void Run()

{

File* pCur

pCur = pRoot->pChd->pNxt

string hint,cmd,tmp

hint = pCur->name + "\\>"

while(true)

{

cout <<hint

cin >>cmd

cmd = Uniform(cmd)

if(cmd == "DIR")

{

cout <<pCur->name <<endl

Show(pCur->pChd)

}

else if(cmd == "CD")

{

cin >>cmd

cmd = Uniform(cmd)

File* ftmp = pCur

string htmp = hint

hint = ""

pCur = pRoot

bool find = false

vector<string>nm = Parse(cmd)

for(int i = 0i <nm.size()++i)

{

find = false

pCur = pCur->pChd->pNxt

while(pCur != NULL)

{

if(pCur->name == nm[i])

{

hint += nm[i] + '\\'

find = true

break

}

pCur = pCur->pNxt

}

if(!find)

break

}

if(!find)

{

pCur = ftmp

hint = htmp

cout <<"没有找到要转向的路径!" <<endl

}

else

{

if(nm.size() >1)

hint.erase(hint.end()-1)

hint += ">"

}

}

else if(cmd == "MD")

{

cin >>cmd

File f

f.isDir = true

f.pos = 0

f.len = 100

f.name = cmd

f.pChd = f.pPar = f.pNxt = f.pPre = NULL

Md(pCur,f)

}

else if(cmd == "MF")

{

cin >>cmd

File f

f.isDir = false

f.pos = 0

f.len = 100

f.name = cmd

f.pChd = f.pPar = f.pNxt = f.pPre = NULL

Md(pCur,f)

}

else if(cmd == "RD")

{

cin >>cmd

File* tar = pCur->pChd

while(tar)

{

if(tar->name != cmd)

tar = tar->pNxt

else

break

}

Rd(tar)

}

else

{

cout <<"您输入的命令本系统不识别!" <<endl

}

}

}

private:

vector<string>Parse(string tar)

{

vector<string>res

int beg,end

beg = 0

end = tar.find('\\',beg)

while(true)

{

res.push_back(tar.substr(beg,end - beg))

if(end == -1)

break

beg = end + 1

end = tar.find('\\',beg)

}

return res

}

string Uniform(string cmd)

{

string res = cmd

int offset = 'A' - 'a'

for(int i = 0i <cmd.size()++i)

{

if(cmd[i] >= 'a' &&cmd[i] <= 'z')

res[i] = cmd[i] + offset

}

return res

}

}

int main()

{

DirSystem ds

ds.Init()

ds.Run()

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11466202.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存