计算机系统基础概述

什么是计算机?

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

计算机发展历程

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

  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.rhkb.cn/news/439756.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32 通用定时器

一、概述 STM32内部集成了多个定时/计数器,根据型号不同,STM32系列芯片最多包含8个定时/计数器。其中,TIM6、TIM7为基本定时器,TIM2~TIM5为通用定时器,TIM1、TIM8为高级控制定时器。 1.定时器的类型 基本定时器通用定…

微信小程序-npm支持-如何使用npm包

文章目录 1、在内建终端中打开2、npm init -y3、Vant Weapp4、通过 npm 安装5、构建 npm 1、在内建终端中打开 Windows PowerShell 版权所有 (C) Microsoft Corporation。保留所有权利。尝试新的跨平台 PowerShell https://aka.ms/pscore6PS C:\Users\dgq\WeChatProjects\minip…

python泵站设备运行预警信息管理系统

目录 功能介绍具体实现截图技术栈和环境说明python语言解决的思路性能/安全/负载方面核心代码部分展示详细视频演示源码获取方式 功能介绍 用户端 注册登录:用户可以注册账号并登录系统。 西电泵站简介:提供泵站的历史、功能和重要性等详细介绍。 泵站…

余承东直播论道智能驾驶:激光雷达不可或缺,华为ADS 3.0引领安全创新

华为余承东:激光雷达,智能驾驶安全性的关键 9月29日,华为消费者业务集团CEO余承东在一场引人注目的直播中,与知名主持人马东就智能驾驶技术的最新进展进行了深入交流。在这场直播中,余承东针对激光雷达在智能驾驶中的必要性问题,发表了明确且深刻的观点,引发了业界和公众…

在Docker中运行微服务注册中心Eureka

1、Docker简介: 作为开发者,经常遇到一个头大的问题:“在我机器上能运行”。而将SpringCloud微服务运行在Docker容器中,避免了因环境差异带来的兼容性问题,能够有效的解决此类问题。 通过Docker,开发者可…

角色动画——RootMotion全解

1. Unity(2022)的应用 由Animtor组件控制 在Animation Clip下可进行详细设置 ​ 官方文档的介绍(Animation选项卡 - Unity 手册) 上述动画类型在Rag选项卡中设置: Rig 选项卡上的设置定义了 Unity 如何将变形体映射到导入模型中的网格,以便能够将其动画化。 对于人…

Linux驱动开发——LED驱动开发

文章目录 1 概述1.1 说明 2 基础知识2.1 地址映射2.1.1 ioremap函数2.1.2 iounmap函数 2.2 I/O内存访问函数2.2.1 读操作函数2.2.2 写操作函数 3 硬件原理图分析4 RK3568 GPIO驱动原理4.1 引脚复用设置4.2 引脚驱动能力配置4.3 GPIO输入输出设置4.4 GPIO引脚高低电平设置 5 实验…

【GeekBand】C++设计模式笔记5_Observer_观察者模式

1. “组件协作”模式 现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。典型模式 Template MethodStrategyObserver / Event 2.…

HarmonyOS/OpenHarmony 自定义弹窗页面级层级控制解决方案

关键词:CuntomDialog自定义弹窗、SubWindow子窗口、页面级、弹窗层级控制、鸿蒙、弹窗展示层级异常 问题存在API版本:API10 - API12(该问题已反馈,期望后续官方能增加页面级控制能力) 在正常的鸿蒙app开发过程中&…

aws(学习笔记第二课) AWS SDK(node js)

aws(学习笔记第二课) 使用AWS SDK(node js) 学习内容: 使用AWS SDK(node js) 1. AWS SDK(node js) AWS支持多种SDK开发(除了AWS CLI,还支持其他的SDK) AndroidPythonNode.js(Javas…

约数个数约数之和

好久没发文章了.......不过粉丝还是一个没少...... 今天来看两道超级恶心的数论题目! No.1 约数个数 No.2 约数之和 先来看第一道:约数个数 题目描述 给定 n 个正整数 ai​,请你输出这些数的乘积的约数个数,答案对 10^97 取模 输入格式 第一行包含…

五种IO模型与阻塞IO

一、前言 在网络中通信的本质其实是网络中的两台主机的进程间进行通信,而进程通信的本质就是IO。 IO分为输入(input)和输出(output)站在进程的角度讲,进程出去数据为输出,外部数据进入进程为输…

YOLOv8 基于NCNN的安卓部署

YOLOv8 NCNN安卓部署 前两节我们依次介绍了基于YOLOv8的剪枝和蒸馏 本节将上一节得到的蒸馏模型导出NCNN,并部署到安卓。 NCNN 导出 YOLOv8项目中提供了NCNN导出的接口,但是这个模型放到ncnn-android-yolov8项目中你会发现更换模型后app会闪退。原因…

[ComfyUI]Flux:太强了!任意扩图神器,小红书极致逼真风格出游打卡写实风

随着人工智能技术的不断发展,图像生成与反推技术已经成为了AI领域的一大热点。今天,我们就来为大家详细介绍一款由ComfyUI团队开发的超强图像反推工具——Flux,以及如何使用它实现任意扩图和极致逼真风格出游打卡写实风。 一、Flux&#xff…

【AI大模型】使用Embedding API

一、使用OpenAI API 目前GPT embedding mode有三种,性能如下所示: 模型每美元页数MTEB得分MIRACL得分text-embedding-3-large9,61554.964.6text-embedding-3-small62,50062.344.0text-embedding-ada-00212,50061.031.4 MTEB得分为embedding model分类…

centos7安装配置nginx

先安装依赖 安装依赖之前最好先执行下update yum update yum install gcc gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel -y cd /usr/local/nginx wget http://nginx.org/download/nginx-1.18.0.tar.gz tar -zxvf nginx-1.18.0.tar.gz cd /usr/local/ngi…

双非本 985 硕,上岸快手大模型算法岗!

最近已有不少大厂都在秋招宣讲,也有一些已在 Offer 发放阶段了。 节前,我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行…

高校校园交友系统小程序的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,用户管理,基础数据管理,论坛管理,公告信息管理,轮播图信息管理 微信端账号功能包括:系统首页,用户&#…

反调试—1

IsDebuggerPresent() CheckRemoteDebuggerPresent() 其内部实际调用NtQueryInformationProcess() bool _stdcall ThreadCall() {while (true){BOOL pbDebuggerPresent FALSE;CheckRemoteDebuggerPresent(GetCurrentProcess(), &pbDebuggerPresent);if (pbDebuggerPres…

fiddler抓包18-2_导出jmeter、postman脚本(带请求头)

课程大纲 1. Fiddler导出请求为curl脚本 选中请求,“文件” - “导出会话” - “选中的会话” - “cURL Script”。 2. 导入jmeter ① 复制curl脚本。 ② 打开jmeter,“工具” - “import from cURL”,粘贴脚本,勾选“Add cooki…