计算机基础
【一】计算机组成原理
(1)什么是计算机?
-
计算机是一种通电的智能设备,被称为电脑,拥有处理数据、执行指令的能力,是现代科技和信息社会的重要工具
电脑又可以理解为通电的大脑
电脑二字蕴含了人类对计算机的终极期望,希望它能真的像人脑一样去工作,实现自动化,提高工作效率,解放人力。
(2)为什么发明计算机?
- 计算机的发明是为了解决人类在处理大量数据和复杂计算时的困难,提高工作效率,减轻人力负担,实现自动化。
- 计算机能够执行重复性、繁琐的任务,从而解放人类的思维和创造力,让人们能够更专注于创新和发展。
(3)计算机的五大组成部分
-
控制器
- 控制器相当于计算机的大脑,负责指挥和协调其他部件的工作。
-
运算器
- 运算器执行各种算术和逻辑运算,实现计算机的计算功能。
- 算术运算:数字之间的运算,例如 + - * /
- 逻辑运算:根据某个条件是否成立,决定是否要做事情
- 运算器执行各种算术和逻辑运算,实现计算机的计算功能。
-
存储器
-
存储器用于存储计算机运行时所需的数据和指令,分为内存(短期)和外存(长期)
在运行程序时,数据必须先加载到内存中,CPU才能够快速访问和处理这些数据
-
内存是计算机用于临时存储数据和程序的地方,是CPU能够直接访问的存储介质。
(内存条)-
断电数据丢失:内存是一种易失性存储器,断电后存储在其中的数据将丢失。
-
读取速度快:由于内存是直接与CPU相连的,因此读取速度非常快。
-
-
外存用于永久存储数据,即使在断电的情况下数据也不会丢失。
(磁盘)- 断电数据不会丢失:外存是一种非易失性存储器,数据在断电后依然保持。
- 读取速度慢:与内存相比,外存的读取速度较慢,因为需要通过外部设备进行读取。
-
-
-
输入设备
- 输入设备用于将外部信息输入到计算机,让计算机能够处理。如键盘、鼠标、麦克风、扫描仪。
-
输出设备
- 输出设备将计算机处理后的结果呈现给用户或其他设备。如显示器、打印机。
- 小结
- cpu是人的大脑,负责控制全身和运算
- 内存是人的记忆,负责临时存储
- 硬盘是人的笔记本,负责永久存储
- 输入设备是耳朵或眼睛或嘴巴,负责接收外部的信息存入内存
- 输出设备是你的脸部(表情)或者屁股,负责经过处理后输出的结果
- 以上所有的设备都通过总线连接,总线相当于人的神经
(4)计算机的三大核心硬件
- 程序在计算机中的运行涉及到 CPU、内存和硬盘等核心硬件的协同工作
-
CPU(中央处理器)
由控制器和运算器组成。用于计算数据,执行程序的指令。负责控制计算机的操作。计算机的"大脑",决定程序执行的顺序和过程。
-
内存
读取速度快,基于电工作。用于存储正在运行的程序和临时数据。断电后数据立即丢失,是一种易失性存储器。作为CPU直接访问的存储介质,提供了高速的数据读写能力。
-
硬盘
读取速度相对较慢。用于永久保存数据,包括操作系统、应用程序和用户数据等。断电后数据不会丢失,是一种非易失性存储器。作为长期存储的主要设备,容量通常较大。
-
程序最先是存放于硬盘中的
程序的运行是先从硬盘把代码加载到内存中,然后cpu是从内存中读取指令运行。
执行速度:CPU >>> 内存 >>> 硬盘
(5)程序的执行过程
- 加载阶段: 程序首先存放在硬盘中。
- 加载到内存: 在运行时,操作系统将程序从硬盘加载到内存中,以便CPU能够直接访问。
- CPU执行: CPU从内存中读取程序的指令,进行相应的计算和操作。
- 运算过程: 运算器进行算术和逻辑运算,控制器负责指令的执行流程。
- 结果返回: 计算结果可能被存储回内存,最终可能被写回硬盘以保持数据的持久性。
【二】操作系统
- 操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。
(1)操作系统的由来
01.操作系统出现的目的
- 操作系统的出现是为了简化硬件操作,提供统一的接口供应用程序使用。
- 在开发应用程序时,不同开发者无需重复编写控制硬件的底层代码,而是调用操作系统提供的接口。
- 这样,开发者能够专注于应用程序的业务逻辑,提高开发效率。
02.开发程序示例
- 倘若我们要开发一个应用程序,比如暴风音影
- 该软件的一个核心业务就是播放视频,开发者若要编写程序完成播放视频这个业务逻辑,必先涉及到底层硬件硬盘的基本运作(视频文件都是先存放于硬盘中),这意味着开发者在编写业务逻辑代码之前,必须先编写一个控制硬盘基本运行的控制程序,然而这仅仅只是一个开始
- 事实上,在编写应用程序的业务逻辑前,需要开发者编写出一套完整的控制程序用来控制所有硬件的基本运行(这要求开发者需要详细了解计算机硬件的各种控制细节,例如我们必须把CPU里面所有指令集都掌握一遍)
- 如此,所有的开发者在开发程序时都必须依次开发两种:
- 1、编写一套完整的的控制程序用来控制硬件的基本运行,以及把复杂的硬件的操作封装成简单的接口;
- 2、基于控制程序的接口开发包含一系列业务逻辑的程序,为了与控制程序区分,可以称为应用程序;
03.举例说明:
-
如果没有操作系统,每个应用程序都需要自行编写控制硬盘读写的代码、控制内存的代码、管理输入输出设备的代码等。
-
这将导致大量的重复劳动,而且每个程序员都需要深入了解硬件的底层细节,这是一项繁琐且容易出错的任务。
(2)操作系统的主要功能
- 硬件管理: 控制和管理计算机的硬件,包括CPU、内存、硬盘、输入输出设备等。
- 文件系统: 提供文件和目录的管理,让应用程序能够方便地读取和存储数据。
- 进程管理: 管理运行在计算机上的各个进程,确保它们有序、安全地运行。
- 内存管理: 分配和释放内存,以及虚拟内存的管理。
- 设备驱动程序: 提供硬件设备的驱动程序,使应用程序能够通过操作系统与硬件交互。
- 用户界面: 提供用户与计算机交互的界面,如图形用户界面(GUI)或命令行界面。
(3)常见的操作系统
01.客户端(PC)
-
Windows(微软)
-
macOS(苹果)
-
Linux(服务器)
02.移动端(APP)
-
安卓
-
iOS
-
鸿蒙
(4)系统软件与应用软件
01.系统软件(操作系统)
-
操作系统是一种系统软件,作为计算机硬件和应用软件之间的中介,负责协调、管理、控制计算机硬件与应用软件资源的控制程序。
-
其主要功能包括硬件管理、文件系统、进程管理、内存管理、设备驱动程序、用户界面等。
-
常见的操作系统有Windows、macOS、Linux等。
02.应用软件(应用软件)
-
应用软件是为了满足用户特定需求而开发的软件,通过操作系统运行。
-
它包括各种各样的程序,涵盖了几乎所有计算机用户可能需要的功能。
-
例如:
- QQ: 一款即时通讯软件,用于文字、语音、视频通话以及文件传输等功能。
- 微信: 一款综合性社交平台软件,除了即时通讯外,还包括朋友圈、小程序等功能。
- Word: 一种文字处理软件,用于创建、编辑文档,处理文本内容。
-
这些应用软件通过操作系统提供的接口与硬件交互,使用户能够方便地完成各种任务。
-
应用软件的种类丰富多样,涵盖了各个领域,满足了用户的不同需求。
(5)计算机系统的三层架构
- 我们开发应用程序本质是在控制硬件,但是我们直接打交道的是操作系统,应用程序都是通过操作系统来间接地操作硬件的,所以一套完整的计算机系统分为三层
01.应用层
- 在计算机系统的顶层是应用层,这是用户直接交互的层面。
- 我们的主要关注点通常是在这个层次上。
- 在这里,我们编写和设计各种应用程序,包括但不限于网页应用、桌面应用、移动应用等。
- 编写代码的目标是实现用户需求,而这些应用程序通过操作系统提供的接口来与底层硬件进行通信。
02.操作系统层
- 操作系统层是连接应用层和硬件层的桥梁。
- 它提供了一系列的系统调用和服务,使应用程序能够在硬件上运行。
- 这一层包括操作系统的内核,负责管理系统资源、进程调度、文件系统等。
- 不同操作系统有不同的特性,例如Linux、Windows等,以及它们在开发中的影响。
03.硬件层
- 硬件层是计算机系统的最底层,包括处理器、内存、存储设备、输入输出设备等。
- 在这个层次上,我们关注计算机体系结构、指令集架构、存储器层次结构等概念。
- 理解硬件层对于优化应用程序性能和解决一些底层问题至关重要。
04.图片示例
(6)平台的概念
01.什么是平台
- 应用程序都是运行于操作系统(系统软件)之上
- 而操作系统则是运行于硬件之上的,
- 所以承载应用程序的是一台运行有操作系统的计算机,称之为应用程序的运行平台
- 即:硬件 + 系统软件 == 平台
02.常见的平台
- windows系统+某款硬件
- linux系统+某款硬件
- ubuntu+某款硬件等
03.跨平台性的优势
- 在开发应用程序时,考虑跨平台性是至关重要的。
- 这意味着无论用户使用的是Windows、Linux还是其他操作系统,应用程序都能够在不同平台上运行。
- 这为开发者提供了更广泛的用户群体,减少了开发和维护的成本,同时增加了应用程序的灵活性。
04.编程语言的选择
- 决定应用软件的跨平台性的确关键因素之一是选择合适的编程语言。
- 不同的语言在这方面有着不同的表现。
- Python作为一种解释型语言,具有卓越的跨平台性,这是因为Python解释器本身可以在各种操作系统上运行,而且许多Python库和框架也是跨平台的。
05.Python的跨平台性
- Python的设计理念之一就是"Write once, run anywhere",即一次编写,到处运行。
- 这得益于Python解释器的能力,使得开发者无需担心底层平台细节,只需专注于编写高级代码。
- 这对于培训零基础小白来说,降低了学习和开发的门槛,使他们更容易进入开发领域。