计算机基础之编程
1.什么是编程语言?
python和中文,英语一样,都是一门语言只要是语言,其实就可以看成是一种事物和另外一种事物沟通的介质。python属于编程语言,编程语言的程序猿和计算机之间沟通的介质,中文和英语则是人与人之间沟通的介质
2.什么是编程?
编程指的是:程序猿基于某种编程语言的语法格式将自己脑子中想要的计算机做的事,写到文件中。所以说编程的结果就是一堆文件,这一堆文件就是程序。
3.为什么要编程?
计算机就像是人的奴隶,编程的目的就是想要奴役计算机,把计算机当成人类的努力,让计算机帮人类工作,因而取代人力。
计算机组成原理
计算机分为五大组成部分,分别为:控制器、运算器、存储器、输入设备、输出设备。其中控制器+运算器是计算机的中央处理器(CPU),相当于人类的大脑。
1.控制器
计算机的指挥系统。大脑指挥全身的器官运作,但是大脑不会随意的指挥身体行动,大脑只有在接受指令后才会控制身体行动。
2.运算器
运算器是计算机的运算系统。大脑除了指挥,无时无刻还在运算。即实现算术运算和逻辑运算。
- 算术运算:1+1=2
- 逻辑运算:碰到疯狗,表白?
3.控制器加运算器(计算机的中央处理器)
吃饭流程示例。
- 当你吃饭的时候,大脑会接受吃饭的指令,之后把指令翻译成你身体需要进行的动作(控制器)
- 如果吃的是西餐,则使用勺子;如果吃的是中餐,则使用筷子(运算器)
4.存储器
计算机的存储系统。需要注意的是:无论是内存还是外存,计算机存储的数据格式都是01,01的形式,0和1由电压的电频控制(了解知识点)。计算机的存储的一个二进制单位称为1bit,8bit=1Bytes称为一个字节,1024Bytes=1KB,1024KB=1MB,1024MB=1GB,1024GB=1TB,1024TB=1PB。
下图展示了目前市面上常用的存储器,从图中可以看出存储器的速度、容量和价格是相互矛盾的。
4.1 内存(主存)
内存是计算机内临时存储数据的硬件设备。由于内存读取数据速度较快内存,CPU下达的指令会直接传输给内存,即CPU会与内存直接交互。常见的内存有内存条。
- 优点(较于外存):
- 存取速度快。
- 缺点(较于外存):
- 容量小。
- 由于内存基于电存储数据,因此断电数据马上会消失。
4.2外存
外存是计算机内永久存储数据的硬件设备,由于外存容量大,所以外存主要用于存储软件等占用量大的数据。当需要使用外存上的某个软件时,CPU下达的指令需要传输给内存后,内存再从外存中读取软件信息,即CPU不与外存直接交互。常见的外存有磁带、磁盘和u盘等。
- 优点(较于内存):
- 容量大
- 可以永久存储数据。
- 缺点(较于内存):
- 存取速度慢。
5.CPU+内存+外存(计算机三大核心组件)
电脑打开QQ流程示例。
- 双击QQ图标,CPU先向内存发出取指的命令(CPU+内存)
- 内存从硬盘中取出 运行QQ 的指令(硬盘)
- 控制器分析 运行QQ 的指令并告知运算器工作(控制器)
- 运算器进行一系列的算术运算和逻辑运算打开QQ,并从硬盘从读取QQ的代码至内存(运算器+内存+硬盘)
- 计算机在内存中运行QQ的代码(内存)
- 如果此时从QQ好友接受一个文件并下载,该文件将会永久保存在硬盘中(硬盘)
- 关闭QQ时CPU向内存发出关闭QQ的指令,内存关闭QQ并清理内存中QQ的代码(内存)
6.输入设备
计算机输入信息(程序、数据、声音、文字、图形、图像等)的设备。
常见的输入设备有:键盘、鼠标、图形扫描仪、触摸屏、条形码输入器、光笔等。外存储器(U盘等)也是一种输入设备。
7.输出设备
计算机输出信息的设备。
常见的输出设备有:显示器、打印机和绘图仪等。外存储器也是一种输出设备。
存储器既是输入设备也是输出设备
8.计算机五大部件组成部分补充
8.1 cpu相关
多核CPU:多个CPU,电脑可以同时干多件事,如4核CPU的电脑可以同时干四件事。
X86-64位:X86是CPU的一种型号,64表示CPU每次能取64位二进制数。X86-32表示CPU每次取32位二进制数。CPU具有向下兼容性,即64位电脑能下载32位的软件,而32位的软件下载64位的软件会丢失数据。
8.2 存储器相关
ROM存储器:ROM只读存储器(不可写)在工厂中就被编程完毕,然后再也不能修改。它一般存放BIOS(Basic input output system)程序,该程序一般用于启动计算机,或用于处理底层设备的控制。
CMOS存储器:CMOS存储器由一块电脑内置的电池驱动供电,它一般用来保持当前时间和日期的更新,也就是说,即使计算机没有充电,时间也会持续更新;同时它也可以存储启动磁盘的路径。(装机的时候一般会告诉计算机操作系统在计算机中的位置,如C:/)
8.3 总线
总线相当于人类的神经、血管,连接计算机的所有硬件设备。
8.4 启动计算机的流程
- 计算机加电。
- BIOS开始运行,检测硬件:CPU、内存、硬盘灯。
- BIOS读取CMOS存储器中的参数,选择启动设备等。
- 从启动设备上读取第一个扇区的内容。
- 根据分区信息读入bootloader启动装载模块,启动操作系统。
- 操作系统询问BIOS,获得配置信息。对于每种设备,系统会检查其设备驱动是否存在,如果没有,系统则会要求用户按照设备驱动程序,一旦有了全部的设备驱动程序,操作系统则会将它们调入内核,然后初始有关的表格(如进程表)。
8.5 硬盘工作原理
如今市场上的硬盘分为机械硬盘和固态硬盘两大类,我们将从这两大类出发和同学们介绍硬盘的工作原理
8.6 机械硬盘
机械硬盘主要由机械手臂、磁道和扇区组成,接下来我们将从这三个方面展开介绍机械硬盘的工作原理。
-
机械手臂:机械硬盘通过机械手臂读取数据,机械手臂的末端是磁头。
-
磁道:磁道是机械硬盘的磁面中的一个一个圈,磁道用于存储数据。
-
扇区:扇区的最小单位通常为512KB(由于磁盘大小不断增大,也有部分厂商设定每个扇区的大小是4096字节)。为了减小IO操作,机械硬盘也会将多个相邻的扇区组合在一起,形成一个块,这个块便就是我们在Windows系统中看到的C、D分区。
-
平均寻道时间:由于数据存放在磁道上,因此机械手臂需要读取数据首先要找到磁道。受限于工业水平的限制,目前机械手臂找到磁道的时间为5ms,这个时间被称为平均寻道时间。
-
平均延迟时间:机械手臂寻道之后,需要寻找数据。由于数据的位置是不确定的,而目前的机械硬盘寻找数据会从硬盘的头部扫描到尾部。以7200r/min的硬盘为例,如果碰巧在硬盘头部找到数据,时间约为0ms;如果在硬盘尾部找到数据,时间约为8.3ms,因此我们采用一个平均时间4.15ms作为机械手臂在磁道找到数据的时间,这个时间被称为平均延迟时间。
寻找数据的时间=平均寻道时间+平均延迟时间
8.7 固态硬盘
随着人们对数据需求增多,存储系统的瓶颈越来越明显。而在嵌入式领域移动设备和工业自动化控制等恶劣环境下,传统硬盘机械结构已经无法满足要求,而所有这一切随着固态存储(SSD)的到来而发生了改变。
传统的机械硬盘(HDD)运行主要是靠机械驱动头,包括马达、盘片、磁头摇臂等必需的机械部件,它必须在快速旋转的磁盘上移动至访问位置,至少95%的时间都消耗在机械部件的动作上。SSD却不同机械构造,无需移动的部件,主要由主控与闪存芯片组成的SSD可以以更快速度和准确性访问驱动器到任何位置。传统机械硬盘必须得依靠主轴主机、磁头和磁头臂来找到位置,而SSD用集成的电路代替了物理旋转磁盘,访问数据的时间及延迟远远超过了机械硬盘。SSD有如此的“神速”,完全得益于内部的组成部件:主控--闪存--固件算法。SSD通过这套组成部件,让数据以电荷的方式存储在每个NAND存储单元内。
上面讲了这么多,牢记一点:固态硬盘是基于固态电子(SSD,断电数据也会保留)和算法实现数据存储的。
计算机操作系统
1.操纵系统的引入
可能有很多同学都有碰到下面我说的这个场景,当我们花了8888大洋买了一台16G内存的专业吃鸡电脑时,打开电脑发现自己的电脑内存只有15G不到,然后就开始了吃鸡之旅。
但是如果你对你少掉的内存关心的话,你会发现并不是厂商为了节省造价成本,而这少掉的内存被某种东西给占用了,这种东西就是我们这篇文章的主角——操作系统。
2.什么是操作系统?
在了解操作系统之前,我们首先回顾下编程的目的,编程的目的是奴役计算机,取代人力。
现在想象一个这样的场景,如果你是奴隶主(人),你在黑市上买了一个奴隶(计算机),你想让这个奴隶干扫地的活,但是这个奴隶可能不明白扫地是什么意思,甚至可能都不知道你全程在逼逼啥。这个时候你可能会考虑买一个管家(操作系统),这个管家既能和你交流,也能和奴隶交流,然后你有任何命令都将由这个管家传达给奴隶。
2.1什么是文件?
现在让我们来想象我们在计算机上打开一个文件的流程:首先我们需要开机,其次我们需要打开一个文件。可能我们所有人都会认为这没啥,但是,这个时候你需要注意,文件它是什么呢?因为我们太习以为常了,所以我们忽略了这个问题:文件是什么呢?这个时候我不得不告诉你,你可以把文件理解成一个虚拟的单位,有了这个虚拟的单位,我们不再需要考虑机械手臂的运转,你只需要文件可以双击打开、可以写入数据、可以CTRL+S保存。
现在让我们来思考文件这个虚拟的单位是谁提供的呢?如果有使用过linux系统的同学应该知道,linux系统中看不到任何一个文件的图标,只有一行一行的代码?(但是Linux一切皆文件)
inux系统既然看不到文件的图标,那么windows系统的电脑上文件图标是谁提供的呢?毫无疑问。这个时候我们可以得知windows系统电脑上的文件这个虚拟单位是windows操作系统提供的。也正是在启动计算机的时候,计算机开启了操作系统这个软件(计算机除了硬件,就是软件,软件一般用来控制硬件)。但是需要注意的是,只要你想打开一个文件,归根结底都是需要你去操作硬件的,只不过是操作系统不仅给我们提供了文件这个概念,并且把对文件打开的这个复杂操作封装成了一个双击文件的接口给我们。
2.2 什么是应用程序?
刚刚和同学们聊了聊计算机打开文件的流程。我们知道了文件这个虚拟概念是操作系统给我们的。这个时候我们需要回过头来看看我们的计算机,计算机创建的初心不是让我们写一个操作系统来控制硬件的。
计算机创建的目的是为了让我们人奴役他们,让它们替我们干活。那是不是说我们可以通过计算机开发一款ATM系统,让它们每天24小时不停歇的吞钱、吐钱呢?毫无疑问是可以的。有了操作系统在计算机上的一切操作都将变得很简单,那是不是说我们就需要在每台计算机上都写一套操作系统呢?通过常识来看,我们是不需要的,我们只需要复制其他人的操作系统即可,但是在计算机创建初期是需要自己手写操作系统的?但如今,如果真的让我们写一个操作系统出来,可能我们一辈子都使出吃奶的劲都无能为力。
应用程序其实很好理解,计算机只由硬件和软件组成,应用程序一定不是硬件,那么软件中除了操作系统我们都可以称之为应用程序。说了这么多,其实就像让你明白一件事:应用程序位于操作系统之上,它主要用来帮助人干各种各样的工作,它不直接与硬件交互。
3.操作系统的定义
通过上面从文件到应用软件的铺垫,我们在这里直接给出操作系统的定义:操作系统位于计算机硬件与应用软件之间,它是一个协调管理计算机资源和软件资源的控制程序。它把对硬件的复杂操作,封装成一个一个简单的接口,供人们使用。
4.为什么由操作系统?
为了明白为什么要有操作系统。我们在这里再给出一个计算机系统的组成:一套完整的计算机系统由计算机硬件、操作系统和应用程序组成,对这三个组件的解释如下:
- 应用程序:应用程序位于操作系统之上,它主要用来帮助人干各种各样的工作,它不直接与硬件交互。如快播、同花顺和抖音等。
- 操作系统:操作系统一般用来控制硬件,把对硬件复杂的操作封装成一个简单又优美的接口,给用户或应用程序使用。也就是说,但凡需要用硬件的地方,都需要用到操作系统。如Linux、Windows和ios等。
- 计算机硬件:以二进制的形式存储数据。如CPU、内存和硬盘等。
5.操作系统有什么用
由于我们以后开发都是都是应用程序,应用程序无法操作硬件,但凡需要操作硬件,都是调用操作系统的接口。
6.操作系统和应用程序的启动
操作系统的启动:操作系统代码由硬盘读入内存(BIOS程序),CPU运行操作系统代码(CMOS存储器),运行成功后操作系统接管操作硬件的工作。
应用程序的启动:应用程序代码有硬盘读入内存,CPU运行应用程序码,运行成功即可使用应用程序。虽然应用程序的启动和操作系统的启动有着异曲同工之处,但是得明确一点:装了操作系统之后才能装应用程序,才有应用程序这个概念。因此上述应用程序对硬件控制的每一步操作,都依赖于操作系统的帮助。
7.QQ启动的详细流程(windows)
- 双击Windows桌面的QQ图标(qq.exe对应路径的快捷方式)
- 双击图标就是给操作系统发送指令,告诉操作系统QQ软件对应的硬盘地址,并让操作系统启动这个路径
- 操作系统接收到指令操控CPU发送指令给内存
- 内存接受指令后发送指令给硬盘,硬盘读取QQ软件代码给内存,QQ启动