计算机系统基础概述

什么是计算机?

计算机是一种利用电子技术进行信息处理的设备,它能够接收、存储、处理和提供数据。计算机通过执行一系列预定义的指令来处理数据,这些指令通常被称为程序。计算机的核心功能包括算术运算、逻辑判断、数据存储和信息检索

计算机发展历程

计算机的发展历程可以划分为几个重要的阶段,每个阶段都有其标志性的技术和里程碑事件

  1. 原始计算时代:在这个阶段,人类使用结绳、垒石、算筹等方法进行计数和计算。中国古代的算盘是这一时期的重要发明,它采用了十进制计算,极大地提高了计算效率。

  2. 机械计算机时代:17世纪,随着机械技术的发展,出现了机械式计算机。这些计算机能够进行基本的算术运算,但速度慢且功能有限。

  3. 电子管计算机时代(1946-1957):这一时期的标志性发明是ENIAC(电子数字积分计算机),它于1946年在美国宾夕法尼亚大学诞生,主要用于军事和科学研究。ENIAC使用了约18800个电子管,虽然体积庞大、耗电量大,但运算速度快,是当时最快的计算机。

  4. 晶体管计算机时代(1958-1964):随着晶体管的发明,计算机的体积减小,成本降低,可靠性提高。这一时期还出现了如FORTRAN和ALGOL等程序设计语言,使得计算机编程变得更加便捷。

  5. 中小规模集成电路计算机时代(1965-1970):半导体工艺的发展带来了集成电路,计算机的速度更快、体积更小,开始广泛应用于社会各个领域。

  6. 大规模超大规模集成电路计算机时代(1970至今):这一时期的计算机采用了大规模和超大规模集成电路,性能得到了极大的提升,运算速度更快、体积更小、价格更亲民。个人电脑的普及改变了人们的工作和生活方式。

  7. 新一代计算机:随着人工智能、机器学习、量子计算等技术的发展,计算机科学正在迈向新的高峰。新一代计算机的特点包括智能化、多媒体化、网络化、微型化和巨型化

当今计算机行业的两极分化发展趋势:

微型化、多用途方向:

微型计算机的发展,它们正变得更加微型化,同时具备多种用途。这可能涉及到便携式设备、嵌入式系统、物联网设备等,这些设备通常体积小、能耗低,但功能多样化,能够满足个人消费者和特定行业的需要。

巨型化、超高速、并行处理、智能化方向:

巨型计算机的发展,这些计算机变得更为强大,具有超高速的计算能力、并行处理能力和智能化特征。这通常涉及到高性能计算(HPC)系统,如超级计算机,它们被用于科学研究、复杂模拟、大数据分析等领域,需要处理庞大的数据集和复杂的计算任务

什么是计算机系统?

计算机系统是一个复杂的集合体,它由硬件和软件组成,用于处理数据、执行计算、存储信息和执行各种任务

1.硬件(Hardware)

  • 中央处理单元(CPU):计算机的大脑,负责解释和执行指令。
  • 内存(RAM):临时存储数据和程序,以便CPU快速访问。
  • 存储设备:如硬盘驱动器(HDD)、固态驱动器(SSD)和光盘,用于长期保存数据。
  • 输入设备:如键盘、鼠标、触摸屏、扫描仪等,用于向计算机输入数据。
  • 输出设备:如显示器、打印机、扬声器等,用于向用户提供信息。
  • 网络接口:如以太网端口、Wi-Fi模块,用于连接到网络和其他设备。
  • 电源供应单元(PSU):为计算机的所有组件提供电力。

2.软件(Software)

按照功能分类:

  • 操作系统软件:如Windows、macOS、Linux等,是管理计算机硬件资源和提供用户界面的软件。
  • 应用程序软件:如文字处理软件(Microsoft Word)、网页浏览器(Google Chrome)、图像编辑软件(Adobe Photoshop)等,用于执行特定任务
  • 实用工具软件:如磁盘清理工具、系统优化工具、备份和恢复工具等,用于维护和优化计算机性能。
  • 驱动程序(Drivers):如显卡驱动、声卡驱动等,用于确保硬件设备与操作系统之间的兼容性和通信。

3.系统架构(System architecture):

  • 冯·诺依曼架构

早期冯·诺依曼机

特点: 程序指令和数据一起存储在计算机内部的存储器中,使得计算机能够自动按照程序的指令执行操作

  1. 程序存储:程序指令以代码形式存储在计算机的主存储器中,按顺序执行,直至程序结束。这种存储程序的思想是由冯·诺依曼提出的,并成功应用于计算机设计之中,因此这类计算机被称为冯·诺依曼结构计算机。

  2. 五大核心组件:冯·诺依曼体系结构定义了计算机系统的五个关键组成部分,包括中央处理单元(CPU)、内存(Memory)、输入设备、输出设备和存储设备。CPU是计算机的“大脑”,负责执行存储在内存中的指令。内存用于存储程序和数据,而输入输出设备则负责与用户进行交互。

  3. 二进制运算:冯·诺依曼机采用二进制编码表示指令和数据,采用二进制运算。指令由操作码和地址码组成,操作码表示操作的类型,地址码表示操作数和操作结果的地址。

  4. 顺序执行与分支:指令在存储器中按执行顺序存放,由指令计数器指明要执行的指令所在的存储单元的地址。一般情况下,每执行完一条指令,指令计数器顺序递增。指令的执行顺序可按运算结果或外界条件而改变,但是解题的步骤仍然是顺序的。

  5. 运算器中心:机器以运算器为中心,输入/输出设备与存储器之间的数据传送都通过运算器

 现代计算机结构(在冯·诺依曼体系的基础上发展)

  1. 并行处理技术:为了突破冯·诺依曼结构中顺序执行指令的局限性,现代计算机广泛采用了并行处理技术,如超标量架构(Superscalar)、流水线(Pipelining)、多线程(Multithreading)、多核处理器(Multicore Processing)和向量处理(Vector Processing)等,以提高指令执行的效率和数据处理的吞吐量。

  2. 存储层次结构:现代计算机采用了复杂的存储层次结构,包括寄存器、缓存(Cache)、主存储器(RAM)和辅助存储器(如硬盘和固态硬盘)。缓存的使用显著提高了处理器访问数据的速度,而虚拟内存技术则允许计算机使用比物理内存更大的地址空间。

  3. 输入/输出系统的改进:现代计算机通过直接存储器访问(DMA)和输入/输出处理机等技术,减少了CPU在输入输出操作中的负担,提高了系统的吞吐率和效率。

  4. 指令集的发展:现代计算机的指令集架构(ISA)分为复杂指令集计算机(CISC)和精简指令集计算机(RISC)两大流派。CISC通过硬件实现更多功能的复杂指令集,而RISC则侧重于简化指令集,提高指令的执行效率。

  5. 多处理机和集群系统:为了进一步提高计算能力,现代计算机系统结构还包括多处理机系统和集群系统,这些系统通过互连网络连接多个处理器或计算机节点,共同协作完成任务

  • 哈佛架构

哈佛架构(Harvard Architecture)是一种计算机存储器体系结构,其核心特点是将程序指令存储和数据存储物理上分开,各自拥有独立的存储器和总线系统。这种设计允许CPU在一个机器周期内同时获取指令字(来自程序存储器)和操作数(来自数据存储器),从而提高执行速度和数据吞吐率

双独立存储空间:指令存储器和数据存储器是两个物理上独立的存储区域,分别用来存储程序指令和程序运行所需的数据。

独立编址:指令存储器和数据存储器各自拥有独立的地址空间,这意味着它们的地址范围不重叠,且访问指令和访问数据时使用不同的地址。

并行访问:由于采用了独立的总线和访问通道,处理器可以在同一时刻从指令存储器加载下一条要执行的指令,同时从数据存储器读取或写入操作数,实现了指令和数据的并行访问,显著提升了数据吞吐率和指令执行速度。

 广泛应用于嵌入式系统:哈佛架构特别适用于对实时性要求高、数据处理速度快的嵌入式系统,如微控制器(如AVR)、数字信号处理器(DSP)以及部分高性能嵌入式处理器(如ARM9、ARM10、ARM11等)

计算机系统的层次结构

计算机系统的层次结构是一个抽象的概念,它帮助我们理解计算机系统是如何组织和运作的

1.物理层(Hardware Layer)

  • 中央处理单元(CPU)
  • 内存(Memory)
  • 存储设备(Storage Devices)
  • 输入/输出(I/O)设备
  • 网络接口
  • 电源供应

2. 操作系统层(Operating System Layer)

操作系统层位于硬件之上,是管理和抽象硬件资源的软件。操作系统的主要功能包括:

  • 资源管理:管理CPU时间、内存空间、存储空间和其他I/O资源。
  • 进程管理:允许多个程序同时运行,通过创建、调度和终止进程来实现。
  • 设备驱动:为硬件设备提供标准的接口,使得应用程序能够使用这些设备,而无需关心具体的硬件细节。
  • 文件系统管理:管理文件和目录的存储、检索和更新。
  • 用户接口:提供命令行界面(CLI)或图形用户界面(GUI),使用户能够与操作系统交互。
  • 系统调用:为应用程序提供一组API,允许它们请求操作系统的服务。

操作系统是用户程序与硬件之间的桥梁,它隐藏了硬件的复杂性,为应用程序提供了一个更易于管理和使用的抽象层

3.应用程序层(Application Layer)

应用程序层包括所有用户直接使用的软件。这些应用程序运行在操作系统之上,为用户提供特定的功能和服务。应用程序层的例子包括:

  • 办公软件:如文字处理、电子表格和演示文稿软件。
  • 数据库管理系统:用于存储、检索和管理数据。
  • 网页浏览器:用于访问和浏览互联网上的资源。
  • 媒体播放器:用于播放音频和视频文件。
  • 开发工具:如编程语言、集成开发环境(IDE)和调试器。
  • 游戏:提供娱乐和休闲的软件

应用程序层是用户与计算机系统交互的最直接层面,它满足了用户在工作、学习和娱乐等方面的需求

4.网络层(Network Layer)

网络层涉及计算机系统如何连接和通信。这包括网络硬件、协议和标准,它们使得计算机能够相互连接和交换数据。网络层的关键组件包括:

  • 网络协议:如TCP/IP,定义了数据在网络中传输的规则和标准。
  • 通信标准:如以太网、Wi-Fi,规定了数据传输的物理和数据链路层的细节。
  • 路由器和交换机:网络设备,负责在网络中转发数据包。
  • 网络接口:如前面提到的网卡,它们使计算机能够连接到网络。
  • 网络安全:包括防火墙、加密和认证机制,保护网络通信的安全和隐私。

网络层使得计算机系统能够扩展到更广泛的环境,如企业网络、互联网等。

5.用户层(User Layer)

用户层是用户与计算机系统交互的界面。它关注用户的体验和满意度,包括:

  • 用户界面(UI):设计用于帮助用户与系统交互的视觉元素,如窗口、按钮、菜单和图标。
  • 用户体验(UX):涉及用户使用系统时的整体体验,包括易用性、可访问性和满意度。
  • 交互设计:研究用户如何与系统交互,并设计出直观、高效的交互方式。
  • 辅助功能:为残障用户提供支持,如屏幕阅读器、语音识别和大字体。
  • 个性化:允许用户根据自己的喜好和需求定制界面和功能。

用户层是计算机系统与用户之间的直接联系点,它的设计直接影响用户的满意度和效率。

编程语言发展的概述

  1. 机器语言(1940年代之前):最早期的编程语言是机器语言,它由0和1组成的二进制代码构成,计算机可以直接执行,但对人类来说极其难以理解和编写。

  2. 汇编语言(1940年代):为了简化编程,出现了汇编语言。它使用助记符代替机器指令的二进制代码,使得编程工作稍微人性化了一些,但仍然与特定硬件紧密相关,难以移植。

  3. 高级编程语言(1950与1960年代):1950年代出现了第一批高级编程语言,如Fortran(1955年)、LISP(1958年)和COBOL(1959年)。这些语言使用更接近人类语言的语法,极大地提高了编程效率。

  4. 结构化编程与面向对象编程(1967-1978):1960年代晚期至1970年代晚期,编程语言的发展确立了基础范型,如支持面向对象开发的Simula、系统编程语言C(1969-1973年)、Smalltalk和逻辑编程语言Prolog。

  5. 增强、模块、性能(1980年代):1980年代,C++(1983年)合并了面向对象和系统程序设计,Ada(1980年)被标准化用于国防承包,函数式编程语言如ML和Lisp得到发展。

  6. 互联网时代(1990年代):1990年代,随着互联网的兴起,许多以提升程序员生产力为目标的语言出现,如Python(1991年)、Java(1995年)、JavaScript(1995年)和PHP(1995年)。

  7. 现代趋势(2000年代至今):21世纪以来,编程语言持续发展,出现了如C#(2001年)、F#(2002年)、Scala(2003年)、Go(2009年)和Swift(2014年)等语言。这些语言注重安全性、模块化、并发性和移动应用开发。

结语:

无论你是初学者还是有经验的开发者,我希望我的博客能对你的学习之路有所帮助。如果你觉得这篇文章有用,不妨点击收藏,或者留下你的评论分享你的见解和经验,也欢迎你对我博客的内容提出建议和问题。每一次的点赞、评论、分享和关注都是对我的最大支持,也是对我持续分享和创作的动力

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1555297.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA基础开发配置以及和git的联动

1.1方向一:工具介绍 我今天要介绍的就是学习Java大部分情况下都会选择的一款工具-----IDEA,这个和我们熟悉的这个pycharm一样,都是属于这个Jetbrains公司的,虽然我对于这个并不是很了解,但是确实知道一点,…

七、泛型数组集合类

泛型&数组&集合类 泛型定义官方高阶扩展函数协变与逆变*泛型界限*类型擦除* 数组数组的创建数组的使用可变长参数原生类型数组嵌套数组 集合类List集合Set集合Map集合迭代器集合与数组扩展操作序列 泛型 定义 为了统计学生成绩,要求设计一个Score对象&…

25游卡(服务器)面试经验 游卡最常见面试问题总结

目录 【面试经历】 问题+详细答案 面试流程 面试攻略 【面试经历】 秋招目前面了十多家,第一家不开摄像头且表示麦不好要求找个耳机的。贴面经(纯八股) 1.HTTP与HTTPS 2.MTU如何设置,过大过小的后果 3.DNS过程 4.如何创建进程/线程,孤儿进程 5.java从文件到运行的过程…

LinuxO(1)调度算法

概念 在Linux中,O(1)调度算法是一种进程调度算法。O(1)表示算法的时间复杂度是常数级别的,与系统中的进程数量无关。 运行队列结构 他采用了两个运行队列,一个活动队列和一个过期队列。活动队列中的进程是有资格获取CPU时间片的进程&#x…

进程概念 | 进程状态 | 进程优先级

进程的基本概念 课本概念:程序的一个执行实例,正在执行的程序等。核心观点:担当分配系统资源(cpu时间、内存)的实体。 资源占用 它占用系统资源向CPU时间,内存等不同进程的资源是相互隔离的,确…

X3U·可编程控制器的定位控制

FX3U可编程控制器的定位控制进行说明。 一、概要 FX3U可编程控制器可以向伺服电机、步进电机等输出脉冲信号,从而进行定位控制。 脉冲频率高的时候,电机转得快:脉冲数多的时候,电机转得多。用脉冲频率、脉冲数来设定定位对象…

【牛顿迭代法求极小值】

牛顿迭代法求极小值 仅供参考 作业内容与要求 作业内容 作业要求 递交报告 代码 编程实现 计算偏导数 故上述非线性方程组的根可能为 f ( x , y ) f(x, y) f(x,y)的极值点,至于是极小值点还是极大值点或鞍点,就需要使用微积分中的黑塞矩阵来判断了。…

25重庆长安深蓝控制器开发面试经验 深蓝最常见面试问题总结

【面试经历】 秋招气氛组选手的第一场面试,9.17网申,9.24电话约面,9.26线上面试。问得很细,全长约1个小时 1. 自我介绍、项目介绍 2.项目细节,遇到了哪些困难;有没有PCB设计经验DC-DC芯片选型,电源噪声的原因、怎么消除、 3.画BUCK和BOOST拓扑图,讲原理 4.了解MCU的主…

C(十三)for、while、do - while循环的抉择 --- 打怪闯关情景

前言: 继C(十)for循环 --- 黑神话情景之后👉 https://blog.csdn.net/2401_87025655/article/details/142684637 今天,杰哥想用一个打怪闯关的场景让与大家一起初步认识一下for、while、do - while循环的抉择。&#xf…

【FPGA开发】Modelsim如何给信号分组

前面已经发布过了一篇关于 Modelsim 的入门使用教程,针对的基本是只有一个源文件加一个仿真tb文件的情况,而实际的工程应用中,往往是顶层加多个底层的源文件结构,如果不对信号进行一定的分组,就会显得杂乱不堪&#xf…

一个真实可用的登录界面!

需要工具: MySQL数据库、vscode上的php插件PHP Server等 项目结构: login | --backend | --database.sql |--login.php |--welcome.php |--index.html |--script.js |--style.css 项目开展 index.html: 首先需要一个静态网页&#x…

【深度学习】— 多层感知机介绍、 隐藏层、从线性到非线性、线性模型的局限性

【深度学习】— 多层感知机介绍 4.1 多层感知机4.1.1 隐藏层线性模型的局限性引入隐藏层 4.2 从线性到非线性线性组合的局限性引入非线性堆叠更多隐藏层 4.1 多层感知机 在第 3 节中,我们介绍了 softmax 回归,并实现了其从零开始的实现和基于高级 API 的…

MFC多媒体定时器实例(源码下载)

用MFC多媒体定时器做一个每1秒钟加一次的计时器,点开始计时按钮开始计时,点关闭计时按钮关闭计时。 1、在库文件Med_timeDlg.h文件中添加代码 class CMed_timeDlg : public CDialog { // Construction public:CMed_timeDlg(CWnd* pParent NULL); // st…

EEPROM读写实验——FPGA学习笔记18

一、EEPROM简介 Electrically Erasable Progammable Read Only Memory:是指带电可擦可编程只读存储器,是一种常用的非易失性存储器(掉电数据不丢失) EEPROM发展历史 我们这次实验所用的AT24C64存储容量为64Kbit,内部分成256页&am…

成都睿明智科技有限公司真实可靠吗?

在这个日新月异的电商时代,抖音作为短视频与直播电商的佼佼者,正以前所未有的速度重塑着消费者的购物习惯。而在这片充满机遇与挑战的蓝海中,成都睿明智科技有限公司以其独到的眼光和专业的服务,成为了众多商家信赖的合作伙伴。今…

《python语言程序设计》2018版第8章19题几何Rectangle2D类(中)-同志们我要起飞了

前言 昨天的原始绘制两个矩形的代码段draw_rec2原始draw_rec2运行结果我们不是上面往右转90.我怎么往左转90不对吗??? ☺️结果利用已建立完的Rectangle2D类来实现Rectangle2D类的代码可以找上集看,今天是锻炼的一天好几个倒立体式解锁了.祝大家愉快 经过昨天晚上的努力我终…

97. UE5 GAS RPG 实现闪电链技能(二)

书接上回,如果没有查看上一篇文章的同学推荐先看上一章,我们接着实现闪电链技能。 在上一章最后,我们实现了闪电链的第一条链,能够正确显示特效,接下来,我们先实现它的音效和一些bug修复。 我们在多端网络里…

cnn突破四(生成卷积核与固定核对比)

cnn突破三中生成四个卷积核,训练6万次,91分,再训练6万次,95分,不是很满意,但又找不到问题点,所以就想了个办法,使用三个固定核,加上三层bpnet神经网络,看看效…

双十一狂欢派对 五款市面上获得好评的好物

一年一度的双十一购物狂欢派对即将到来,这一天不仅是广大消费者的福利日,也是各大品牌展示实力的战场。随着市场的不断发展与消费者需求的多样化,双十一已经不仅仅是降价促销的代名词,更是品质与创新的竞技场。在琳琅满目的商品中…

产品经理产出的原型设计 - 需求文档应该怎么制作?

需求文档,产品经理最终产出的文档,也是产品设计最终的表述形式。本次分享呢,就是介绍如何写好一份需求文档。 所有元件均可复用,可作为管理端原型设计模板,按照实际项目需求进行功能拓展。有需要的话可分享源文件。 …