课程概况
计算机 *** 作系统是中央电大计算机科学与技术专业(本科)的一门统设必修课。课程教学总学时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
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)