西安工业大学
操作系统课程设计报告
课 目:¬¬¬¬ 银行家算法
学 院: 计算机科学与工程学院
指导教师: 姜虹
学 生: 王丽娇
班 级: 网络工程080610127
完成时间:2010年12月25日
操作系统课程设计报告
课 目:¬¬¬¬ 银行家算法
学 院: 计算机科学与工程学院
指导教师: 姜虹
学 生: 王丽娇
班 级: 网络工程080610127
目 录
1、项目内容、要求与分组情况总体介绍 2
2、概要设计 2
2.1开发工具及环境 2
2.2 任务及需求分析 2
2.3 功能模块设计 2
2.4 工作原理 3
3、 具体实现 3
3.1 类设计 3
3.2 模块及实现代码介绍 3
4、运行调试与分析讨论 4
5、设计体会与小结 6
6、参考文献 7
附录:(源程序) 7
1、项目内容、要求与分组情况总体介绍
项目内容、要求:
本次实验的目标是制作一个计算器,可以进行简单的四则运算(加、减、乘、除)。
小组的具体分工情况见下表:
小组组长 谌江波
成员 子项目名称 具体要求
谌江波 模块的组合及测试 查找出程序的错误并改正
肖权 数字键的注册 将数字键注册监听者,使其功能正常
刘达辉 窗口的创建和分配 设计计算器的界面
李晓阳 组合其余同学的工作 是程序完整化
詹烨刚 编写具体的计算方法 添加运算符号及功能代码
2、概要设计
2.1开发工具及环境
文本编辑器:记事本;
运行环境:命令提示符(DOS环境)。
2.2 任务及需求分析
设计简易计算器程序,实现简单的运算(加减乘除),具体任务如下:
1) 计算器窗口界面布局设计;
2) 各种计算功能的算法分析;
3) 编程实现具体的计算功能;
4) 运行测试程序,调试纠正运行错误。
5) 调试无误,运行,测试具体算法功能。
2.3 功能模块设计
计算器的模块设计图如下:
2.4 工作原理
点击相应的数字键,即会在显示文档中显示该数字。进行相应的运算,首先输入第一个计算数字,然后输入运算符,再输入第二个计算数字,点击“=”按钮即得计算结果。同时,还有归零功能,点击该按钮,显示栏中即可归零。
3、 具体实现
3.1 类设计
类名:jisuanqi
作用:功能代码,窗口布局设定
public class Calculator extends WindowAdapter
{}
¬WindowAdapter实现了WindowListener的类,实现了WindowListener
frame.addWindowListener(new WindowAdapter(){});———————————————————————————
类名:WindowDestroyer
作用:用于退出窗口动作
关键代码:
class close implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
3.2 模块及实现代码介绍
Frame fm = new Frame("简单计算器");
for (int i = 0; i <= 16; i++) {
b[i] = new Button(ss[i]);
}
for (int i = 0; i <= 15; i++) {
p2.add(b[i]);
} //创建按钮 并添加到P2
b[16].setBackground(Color.yellow);
txt = new TextField(15);
txt.setEditable(false);
for (int i = 0; i <= 16; i++) {
b[i].addActionListener(new buttonlistener());…… }
注:此方法主要设置窗口、面板、各个按键。对各个按键进行定义(定义好各按键该实现什么功能)、排布,将各个按键注册到监听器上。
———————————————————————————
txt.setText(txt.getText() + btn.getLabel());
if (btn.getLabel() == "归零")
txt.setText("");
注:该代码使每次进入时的文本都清空
———————————————————————————
class close implements ActionListener {//退出
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
注:该方法实现了窗口的关闭
4、运行调试与分析讨论
调试运行4*5运算,运算过程如下所示:
1)命令提示符中运行计算器程序,如下图:
2)计算器界面显示,输入第一个运算值“4”,如下图:
3)输入运算符“*”,如下图:
4)输入第二个运算值“5”,如下图所示:
5)点击计算器按钮“=”,得出计算结果。如下图:
5、设计体会与小结
通过这次课程设计,我们了解到java也是可以分工合作的,虽然最后的整合过程非常麻烦,但是在整合完后,我们发现,课本被翻过很多遍,很多以前不知道的东西就这样豁然开朗了。我们还引用了很多从来没有用过的语句块,大多是从网上找到,然后自己整合进入代码,再实现我们想要的功能。
编程是个艰难的过程,很多功能语句都需要上网或者是查其他书籍来查看他们的用法,课本上的东西对我们来说远远不够,我们要把目光放长远一些。
这次的课程设计使我对JAVA的许多东西都有了更深一步的了解,以前对自己的要求是看得懂就行,现在才发现,光能看懂是远远不够的,能看懂并不代表你会!只有自己真的亲身体验到了,才会知道。
这个礼拜的课程设计是这个学期最累的一个礼拜,但是,我们的付出总算有回报,虽然我们的计算器可能还存在不少的问题,但是,至少它可以正常运行四则运算,基本达到了我们预期的要求,所以,这个礼拜同样是我最充实的一个礼拜。
6、参考文献
[1]杜春涛,《面向对象程序设计—Java语言》,中国铁道出版社.
[2]丁振凡,《JAVA语言实用教程》,北京邮电大学出版社.
[3]
附录:(源程序)
import java.awt.*;
import java.awt.event.*;
public class jisuanqi extends WindowAdapter {
Panel p1 = new Panel();
Panel p2 = new Panel();
Panel p3 = new Panel();
TextField txt;
private Button[] b = new Button[17];
private String ss[] = { "7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "归零", "0", "=", "/", "关闭" };
static double a;
static String s, str;//定义变量 创建对像
public static void main(String args[]) {
(new jisuanqi()).frame();
}
public void frame() {
Frame fm = new Frame("简单计算器");
for (int i = 0; i <= 16; i++) {
b[i] = new Button(ss[i]);
}
for (int i = 0; i <= 15; i++) {
p2.add(b[i]);
} //创建按钮 并添加到P2
b[16].setBackground(Color.yellow);
txt = new TextField(15);
txt.setEditable(false);
for (int i = 0; i <= 16; i++) {
b[i].addActionListener(new buttonlistener());//添加监听器
}
b[16].addActionListener(new close());
fm.addWindowListener(this);
fm.setBackground(Color.red);
p1.setLayout(new BorderLayout());
p1.add(txt, "North");
p2.setLayout(new GridLayout(4, 4));
p3.setLayout(new BorderLayout());
p3.add(b[16]);
fm.add(p1, "North");
fm.add(p2, "Center");
fm.add(p3, "South");
fm.pack();
fm.setVisible(true);//都是些窗中设置 添加相关组件和监听器
}
public void windowClosing(WindowEvent e) {
System.exit(0);//退出系统
}
class buttonlistener implements ActionListener {
//编写监听器事件 通过按键得出给果
public void actionPerformed(ActionEvent e) {
Button btn = (Button) e.getSource();
if (btn.getLabel() == "=") {
jisuan();
str = String.valueOf(a);
txt.setText(str);
s = "";
} else if (btn.getLabel() == "+") {
jisuan();
txt.setText("");
s = "+";
} else if (btn.getLabel() == "-") {
jisuan();
txt.setText("");
s = "-";
} else if (btn.getLabel() == "/") {
jisuan();
txt.setText("");
s = "/";
} else if (btn.getLabel() == "*") {
jisuan();
txt.setText("");
s = "*";
} else {
txt.setText(txt.getText() + btn.getLabel());
if (btn.getLabel() == "归零")
txt.setText("");
}
}
public void jisuan() {//编写具体计算方法
if (s == "+")
a += Double.parseDouble(txt.getText());
else if (s == "-")
a -= Double.parseDouble(txt.getText());
else if (s == "*")
a *= Double.parseDouble(txt.getText());
else if (s == "/")
a /= Double.parseDouble(txt.getText());
else
a = Double.parseDouble(txt.getText());
}
}
}
class close implements ActionListener {//退出
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
大学计算机科学导论论文
计算机科学与技术这一门科学深深的吸引着我们这些同学们,原先不管是国内还是国外都喜欢把这个系分为计算机软件理论、计算机系统、计算机技术与应用。后来又合到一起,变成了现在的计算机科学与技术。我一直认为计算机科学与技术这门专业,在本科阶段是不可能切分成计算机科学和计算机技术的,因为计算机科学需要相当多的实践,而实践需要技术;每一个人(包括非计算机专业),掌握简单的计算机技术都很容易(包括原先Major们自以为得意的程序设计),但计算机专业的优势是:我们掌握许多其他专业并不"深究"的东西,例如,算法,体系结构,等等。非计算机专业的人可以很容易地做一个芯片,写一段程序,但他们做不出计算机专业能够做出来的大型系统。今天我想专门谈一谈计算机科学,并将重点放在计算理论上。
1)计算机语言
随着20世纪40年代第一台存储程序式通用电子计算机的研制成功,进入20世纪50年代后,计算机的发展步入了实用化的阶段。然而,在最初的应用中,人们普遍感到使用机器指令编制程序不仅效率低下,而且十分别扭,也不利于交流和软件维护,复杂程序查找错误尤其困难,因此,软件开发急需一种高级的类似于自然语言那样的程序设计语言。1952年,第一个程序设计语言Short Code出现。两年后,Fortran问世。作为一种面向科学计算的高级程序设计语言,Fortran的最大功绩在于牢固地树立了高级语言的地位,并使之成为世界通用的程序设计语言。Algol60的诞生是计算机语言的研究成为一门科学的标志。该语言的文本中提出了一整套的新概念,如变量的类型说明和作用域规则、过程的递归性及参数传递机制等。而且,它是第一个用严格的语法规则——巴科斯范式(BNF)定义语言文法的高级语言。程序设计语言的研究与发展在产生了一批成功的高级语言之后,其进一步的发展开始受到程序设计思想、方法和技术的影响,也开始受到程序理论、软件工程、人工智能等许多方面特别是实用化方面的影响。在“软件危机”的争论日渐平息的同时,一些设计准则开始为大多数人所接受,并在后续出现的各种高级语言中得到体现。例如,用于支持结构化程序设计的PASCAL语言,适合于军队各方面应用的大型通用程序设计语言ADA,支持并发程序设计的MODULA-2,支持逻辑程序设计的PROLOG语言,支持人工智能程序设计的LISP语言,支持面积对象程序变换的SMALLTALK、C等。而且,伴随着这些语言的出现和发展,产生了一大批为解决语言的编译和应用中所出现的问题而发展的理论、方法和技术。有大量的学术论文可以证明,由高级语言的发展派生的各种思想、方法、理论和技术触及到了计算机科学的大多数学科方向,但内容上仍相对集中在语言、计算模型和软件开发方法学方面。
(2)计算机模型与软件开发方法
20世纪80年代是计算机网络、分布式处理和多媒体大发展的时期。在各种高级程序设计语言中增加并发机构以支持分布式程序设计,在语言中通过扩展绘图子程序以支持计算机图形学程序设计成为当时程序设计语言的一种时尚。之后,在模数/数模转换等接口技术和数据库技术的支持下,通过扩展高级语言的程序库又实现了多媒体程序设计的构想。进入20世纪90年代之后,并行计算机和分布式大规模异质计算机网络的发展又将并行程序设计语言、并行编译程序、并行操作系统、并行与分布式数据库系统等试行软件的开发的关键技术依然与高级语言和计算模型密切相关,如各种并行、并发程序设计语言,进程代数,PETRI网等,它们正是软件开发方法和技术的研究中支持不同阶段软件开发的程序设计语言和支持这些软件开发方法和技术的理论基础——计算模型。
(3)计算机应用
用计算机来代替人进行计算,就得首先研究计算方法和相应的计算机算法,进而编制计算机程序。由于早期计算机的应用主要集中在科学计算领域,因此,数值计算方法就成为最早的应用数学分支与计算机应用建立了联系。最初的时候,由于计算机的存储器容量很小,速度也不快,为了计算一些稍稍大一点的题目,人们常常要挖空心思研究怎样节省存储单元,怎样减少不需要的操作。为此,发展了像稀疏矩阵计算理论来进行方程组的求解;发展了杂凑函数来动态地存储、访问数据;发展了虚拟程序设计思想和程序覆盖技术在内存较小的计算机上运行较大的程序;在子程序和程序包的概念提出之后,许多人开始将数学中的一些通用计算公式和计算方法写成子程序,并进一步开发成程序包,通过简洁的调用命令向用户开放。子程序的提出是今日软件重用思想的开端。
在计算机应用领域,科学计算是一个长久不衰的方向。该方向主要依赖于应用数学中的数值计算的发展,而数值计算的发展也受到来自计算机系统结构的影响。早期,科学计算主要在单机上进行,经历了从小规模数值分析到中大规模数值分析的阶段。随着并行计算机和分布式并行计算机的出现,并行数值计算开始成为科学计算的热点,处理的问题也从中大规模数值分析进入到中大规模复杂问题的计算。所谓中大规模复杂问题并不是由于数据的增大而使计算变得困难,使问题变得复杂,而主要是由于计算中考虑的因素太多,特别是一些因素具有不确定性而使计算变得困难,使问题变得复杂,其结果往往是在算法的研究中精度与复杂性的矛盾难于克服。
几何是数学的一个分支,它实现了人类思维方式中的数形结合。在计算机发明之后,人们自然很容易联想到了用计算机来处理图形的问题,由此产生了计算机图形学。计算机图形学是使用计算机辅助产生图形并对图形进行处理的科学。并由此推动了计算机辅助设计(CAD)、计算机辅助教学(CAI)、计算机辅助信息处理、计算机辅助测试(CAT)等方向的发展。
在各种实际应用系统的开发中,有一个重要的方向值得注意,即实时系统的开发。
利用计算机证明数学定理被认为是人工智能的一个方向。人工智能的另一个方向是研究一种不依赖于任何领域的通用解题程序或通用解题系统,称为GPS。特别值得一提的是在专家系统的开发中发展了一批新的技术,如知识表示方法、不精确性推理技术等,积累了经验,加深了对人工智能的认识。20世纪70年代末期,一部分学者认识到了人工智能过去研究工作基础的薄弱,开始转而重视人工智能的逻辑基础研究,试图从总结和研究人类推理思维的一般规律出发去研究机器思维,并于1980年在《Artificial Intelligence》发表了一组非单调逻辑的研究论文。他们的工作立即得到一大批计算机科学家的响应,非单调逻辑的研究很快热火朝天地开展起来,人工智能的逻辑基础成为人工智能方向发展的主流。
数据库技术、多媒体技术、图形学技术等的发展产生了两个新方向,即计算可视化技术与虚拟现实技术。
随着计算机网络的发展,分布在全世界的各种计算机正在以惊人的速度相互连接起来。网络上每天都在进行着大量政治、经济、军事、外交、商贸、科学研究与艺术信息的交换与交流。网络上大量信息的频繁交换,虽然缩短了地域之间的距离,然而同时也使各种上网的信息资源处在一种很难设防的状态之中。于是,计算机信息安全受到各国政府的高度重视。除了下大力气研究对付计算机病毒的软硬件技术外,由于各种工作中保密的需要,计算机密码学的研究更多地受到各国政府的重视。
实际上,在计算机科学中计算机模型和计算机理论与实现技术同样重要。但现在许多学生往往只注重某些计算机操作技术,而忽略了基础理论的学习,并因为自己是“操作高手”而沾沾自喜,这不仅限制了自己将研究工作不断推向深入,而且有可能使自己在学科发展中处于被动地位。例如,在20世纪50年代和20世纪60年代,我国随着计算机研制工作和软件开发工作的发展,陆续培养了在计算机制造和维护中对计算机某一方面设备十分精通的专家,他们能准确地弄清楚磁芯存储器、磁鼓、运算器、控制器,以及整机线路中哪一部分有问题并进行修理和故障排除,能够编制出使用最少存储单元而运算速度很快的程序,对机器代码相当熟悉。但是,当容量小的磁芯存储器、磁鼓、速度慢的运算器械、控制器很快被集成电路替代时,当程序设计和软件开发广泛使用高级语言、软件开发工具和新型软件开发方法后,这批技术精湛的专家,除少量具有坚实的数学基础、在工作中已有针对性地将研究工作转向其他方向的人之外,相当一部分专家伴随着新技术的出现,在替代原有技术的发展过程中而被淘汰。因此,在计算机科学中,计算比实现计算的技术更重要。只有打下坚实的理论基础,特别是数学基础,学习计算机科学技术才能事半功倍,只有建立在高起点理论基础之上的计算机科学技术,才有巨大的潜力和发展前景。
计算机理论的一个核心问题
我国计算机科学系里的传统是培养做学术研究,尤其是理论研究的人(方向不见得有多大的问题,但是做得不是那么尽如人意)。而计算机的理论研究,说到底了,如网络安全学,图形图像学,视频音频处理,哪个方向都与数学有着很大的关系,虽然也许是正统数学家眼里非主流的数学。这里我还想阐明我的一个观点:我们都知道,数学是从实际生活当中抽象出来的理论,人们之所以要将实际抽象成理论,目的就在于想用抽象出来的理论去更好的指导实践,有些数学研究工作者喜欢用一些现存的理论知识去推导若干条推论,殊不知其一:问题考虑不全很可能是个错误的推论,其二:他的推论在现实生活中找不到原型,不能指导实践。严格的说,我并不是一个理想主义者,政治课上学的理论联系实际一直是指导我学习科学文化知识的航标(至少我认为搞计算机科学与技术的应当本着这个方向)。
我个人的浅见是:计算机系的学生,对数学的要求固然跟数学系不同,跟物理类差别则更大。通常非数学专业的所?高等数学",无非是把数学分析中较困难的理论部分删去,强调套用公式计算而已。而对计算机系来说,数学分析里用处最大的恰恰是被删去的理论部分。记上一堆曲面积分的公式,难道就能算懂了数学?那倒不如现用现查,何必费事记呢?再不然直接用Mathematica或是Matlab好了。退一万步。华罗庚在数学上的造诣不用我去多说,但是他这光辉的一生做得我认为对我们来说,最重要的几件事情:首先是它筹建了中国科学院计算技术研究所,这是我们国家计算机科学的摇篮。在有就是他把很多的高等数学理论都交给了做工业生产的技术人员,推动了中国工业的进步。第三件就是他一生写过很多书,但是对高校师生价值更大的就是他在病期间在病床上和他的爱徒王元写了《高等数学引论》(王元与其说是他的爱徒不如说是他的同事,是中科院数学所的老一辈研究员,对歌德巴赫猜想的贡献全世界仅次于陈景润)这书在我们的图书馆里居然找得到,说实话,当时那个书上已经长了虫子,别人走到那里都会闪开,但我却格外感兴趣,上下两册看了个遍,我的最大收获并不在于理论的阐述,而是在于他的理论完全的实例化,在生活中去找模型。这也是我为什么比较喜欢具体数学的原因,正如我在上文中提到的,理论脱离了实践就失去了它存在的意义。正因为理论是从实践当中抽象出来的,所以理论的研究才能够更好的指导实践,不用于指导实践的理论可以说是毫无价值的。
正如上面所论述的,计算机系的学生学习高等数学:知其然更要知其所以然。你学习的目的应该是:将抽象的理论再应用于实践,不但要掌握题目的解题方法,更要掌握解题思想,对于定理的学习:不是简单的应用,而是掌握证明过程即掌握定理的由来,训练自己的推理能力。只有这样才达到了学习这门科学的目的,同时也缩小了我们与数学系的同学之间思维上的差距。
关于计算机技术的学习我想是这样的:学校开设的任何一门科学都有其滞后性,不要总认为自己掌握的某门技术就已经是天下无敌手了,虽然现在Java,VB,C,C++用的都很多,怎能保证没有被淘汰的一天,我想.NET平台的诞生和X#语言的初见端倪完全可以说明问题。换言之,在我们掌握一门新技术的同时就又有更新的技术产生,身为当代的大学生应当有紧跟科学发展的素质。举个例子,就像有些同学总说,我做网页设计就喜欢直接写html,不愿意用什么Frontpage,Dreamweaver。能用语言写网页固然很好,但有高效的手段你为什么不使呢?仅仅是为了显示自己的水平高,unique? 我看真正水平高的是能够以最快的速度接受新事物的人。高级程序设计语言的发展日新月异,今后的程序设计就像人们在说话一样,我想大家从xml中应是有所体会了。难道我们真就写个什么都要用汇编,以显示自己的水平高,真是这样倒不如直接用机器语言写算了。反过来说,想要以最快的速度接受并利用新技术关键还是在于你对计算机科学地把握程度。
计算机系统概论
主要内容:
计算机的设计思想(存储程序与程序控制)
计算机的硬件组成
计算机的层次结构(在不同人眼中的计算机)
计算机的工作过程
一,什么是计算机
计算机不同于一般的电子设备,它是由硬件,软件组成的复杂的自动化设备,是能够自动,高速,准确地对信息进行加工,处理,存储的电子设备.
计算机与一般的电子设备的最大区别:不仅有硬件,同时还有软件.
二,计算机的分类
计算机从总体上分为:
模拟计算机
数字计算机 (电脑)
计算机从用途上分为:
专用机
通用机
数字计算机按性能进一步分为:
巨型机,大型机,中型机,小型机,微型机,单片机.
主要区别在于体积,功耗,性能指标,存储容量,指令系统,机器价格.
不同数字计算机的差别
三,计算机的应用
科学计算
自动控制
测量与测试
信息处理
教育和卫生
家用电器
人工智能
四,计算机的设计思想
计算机如此神奇,那它到底是如何工作的 又是怎么构成的
世界上第一台电子数字计算机是1946年2月15日在美国宾夕法尼亚大学诞生的ENIAC.
世界上第一台计算机ENIAC
ENIAC的特点:
采用十进制
20 个10位的累加器
用开关手动编程
18,000个电子管
重30 吨
占地170平方米
耗电140 KW
5,000次/秒加法运算
在今天看来,ENIAC并不完善,但它的诞生是具有里程碑意义的.
冯·诺依曼型计算机
在研制ENIAC的同时,以美籍匈牙利数学家冯·诺依曼为首的研制小组提出了"存储程序,程序控制"的计算机设计思想,体现该设计思想的计算机EDVAC在1951年问世.
冯·诺依曼的存储程序控制概念概括起来为:
计算机硬件应由运算器,控制器,存储器,输入设备和输出设备五大基本部件组成.
计算机内部采用二进制来表示指令和数据.
将编好的程序和原始数据事先存入存储器中,然后启动计算机工作.这一点最为重要,即存储程序控制的思想.
目前绝大多数计算机仍然建立在存储程序,程序控制概念的基础上,称为冯·诺依曼型计算机.
五,信息的数字化表示
数字代码可以表示信息
用数字代码表示数值型数据
用数字代码表示指令
用数字代码表示图像
数字信号可以表示数字代码
电平的高低 :高表示1,低表示0
脉冲的有无 :有表示1,无表示0
——信息可以数字化表示,可以用1,0表示
六,存储程序的工作方式
根据求解问题事先编制程序
将程序存入计算机中
启动计算机自动执行程序
——体现了用计算机求解问题的过程
七,计算机的硬件组成
存储器
运算器
控制器
主存储器
输入设备
输出设备
辅助存储器
CPU
控制
数据
地址/指令
主机
外设
1,运算器
运算器的功能是执行算术运算,逻辑运算以及数据转换.
通常采用二进制数进行运算,1和0可以用电压的高和低,脉冲的有和无来表示 .
二进制数的运算规则简单,容易用电子线路来实现,可靠性高.
2,控制器
控制器的作用是协调计算机各部件自动地进行工作.具体讲,从内存中取出解题步骤(指令),加以分析后执行某种操作.
指令的作用是告诉控制器做什么操作,数从哪里来,结果到哪里去.指令由两大部分构成:
指令用二进制表示,并预先存放在存储器中,称为存储程序.
控制器依据存储的程序来控制计算机完成计算任务,称为程序控制.
存储程序,程序控制是冯·诺依曼型计算机的重要设计思想.
操作码
地址码
3,存储器
存储器的功能是用来存放程序和数据.
存储器由半导体器件构成,一个触发器表示1位二进制,16位需要16个触发器.
保存一个数的所有触发器合起来称为一个存储单元 .每个单元都有编号,这个编号叫地址.
存储器的所有存储单元的总数称为存储容量,一般用KB,MB,GB表示.存储容量越大,表示能记忆的信息越多.
4,输入设备
输入设备的任务是把编好的程序和原始数据送到计算机中去,并把它们转换成计算机能识别,能接受的信息形式 .
输入设备的种类非常多,比如鼠标,键盘,扫描仪等是输入设备.
5,输出设备
输出设备的任务是把计算机的处理结果以人或者其它设备能接受的形式送出计算机 .
输出设备的种类也非常多,比如显示器,打印机等是输出设备.
CPU,主机,外设
中央处理器CPU:
CPU = 运算器 + 控制器
计算机主机:
主机 = 中央处理器 + 主存储器
外部设备:
主机以外的硬件装置
八,计算机总线结构
总线是一组能够为多个功能部件分时共享的信息传输的公共通路,是构成计算机系统的互连机构
总线的特点:分时,共享
单总线是总线结构中的一种,单总线并不是一根信号线,内含地址总线,数据总线,控制总线.
系统总线
接口
接口
外设
外设
…
CPU
主存储器
九,计算机的软件
软件分为两大类:
系统软件
应用软件.
系统软件分为四类:
服务性程序
语言类程序
操作系统
数据库管理系统
应用软件举例:
工程设计程序
数据处理程序
自动控制程序
企业管理程序
情报检索程序
科学计算程序等.
软件的发展
机器语言
汇编语言
算法语言
操作系统
数据库管理系统
汇编程序
这算什么,
我来翻译
解释程序/编译程序
这也没什么,我
们来解释/翻译
100101110
001100101
110000110
……
十,计算机系统的层次结构
计算机不能简单地认为是一种电子设备,它是一个十分复杂的由硬件,软件结合而成的整体.
在不同的观测者面前,计算机是一个不完全一样的电子设备.
一般用户观察到的计算机
专业用户观察到的计算机
计算机设计者观察到的计算机
计算机的层次结构
计算机通常被认为由6个不同的级组成:
第六级
应用语言级
第五级
高级语言级
第四级
汇编语言级
第三级
操作系统级
第二级
一般机器级
第一级
微程序级
为满足某种用途而专门设计,其语言是各种面向问题的应用语言.用户看到的是能解决某些专门问题的智能机器.
高级语言级是为方便用户编写应用程序而设置的,由各种高级语言编译程序支持,面向程序员.
提供一种符号语言即汇编语言,以减少程序编写复杂性,并由汇编程序翻译成机器语言,这一级由汇编程序支持.
由操作系统实现.它要直接管理传统机器的软硬件资源,是传统机器的延伸;同时要对整个系统的任务进行调度.
机器语言是该机的指令集,机器语言程序可由微程序解释,即由微程序解释机器指令系统.这一级是软硬件的分界面.
微指令编写的微程序直接由硬件执行,微程序被固化于只读存储器ROM中,常称为"固件".1,2级面向机器设计者
虚拟机
物理机
软件和硬件的逻辑等价性
硬件是计算机系统存在的基础,软件则是计算机系统运行的灵活.
任何操作既可以由硬件来实现,又可以由软件实现;任何指令的执行可由软件来完成,也可以由硬件来完成.这就是软件和硬件的逻辑等价性.
第一级和第二级的边界正在向第三级乃至更高级扩展.软件有固化的趋势,固化了的程序称为固件.
计算机执行程序的过程
将编制好的程序放在主存中,由控制器控制逐条取出指令执行.以单累加寄存器结构的运算器为例,计算a+b-c=
计算机的技术指标
机器字长:能直接处理的二进制信息的位数.字长标志着精度,字长越长,精度越高.
主 频:CPU的时钟频率.一般情况下,时钟频率越高,运算速度越快.
总线宽度:数据总线一次能并行传输信息的位数.一般指外部数据总线的宽度.
存储容量:系统能存储的二进制字的总数,单位:KB,MB,GB,TB,PB.
运算速度:每秒能执行多少条指令,以百万条指令/每秒为单位.
十一,计算机的过去和未来
世界上第一台电子数字计算机是1946年2月15日在美国宾夕法尼亚大学诞生的ENIAC.从今天的眼光来看,这台计算机功耗大又不完善,但却是科学史上一次划时代的创新,它奠定了电子计算机的基础.自从这台计算机问世以来,计算机大致经历了五个阶段的变化.
计算机的过去
第一代:1946年开始的电子管计算机.
第二代:1958年开始的晶体管计算机.
第三代:1965年开始的中小规模集成电路计算机.
第四代:1971开始大规模和超大规模集成电路计算机.
第五代:1986年开始的巨大规模集成电路计算机.
从1946年计算机诞生以来,大约每五年运算速度提高10倍,可靠性提高10倍,成本降低10倍,体积缩小10倍.60年来计算机的发展过程,是在冯·诺依曼型计算机结构的基础上,紧紧围绕如何提高速度,扩大存储容量,降低成本,提高系统可靠性和使用的方便性为目的,不断采用新器件和研制新软件的过程.
计算机的未来
微型计算机将向更微型化,网络化,高性能,多用途的方向发展."小的更小".
巨型计算机向更巨型化,超高速,并行处理,智能化的方向发展."大的更大".
进入以通讯为中心的体系结构,计算机就是网络.