计算机基础知识加油包
今天是生信星球陪你的第86天
你想找辆共享单车,发现满街都是别家车,没有一辆你能骑。
你想学点生信,搜了“初学者教程”,满眼尽是高大上,没有一句能看懂。
终于你跨越茫茫宇宙,来到生信星球,发现了初学者的新大陆!
写在前面:豆豆和花花周末短聚,去看了电影–西虹市首富。作为开心麻花粉,真心佩服这个神一样的搞笑天团。沈腾好像胖啦,但是并不影响他卖萌耍贱追女神。搞笑之余,讽刺了一些社会现象比如碰瓷党,是非不分的路人甲,道貌岸然的伪君子直男癌,股票跟风啊,见钱眼开啊之类的。最后在撒糖之余还吐槽了一下社会现象,感叹生娃养娃买房压力大到账单列不完啊……感觉今年的电视剧和电影似乎都开窍了,傻白甜女主不见了,尬演没了,反派不雷人改为卖萌,连放弃金钱拯救真爱都演的很真实,痛哭流涕的小人物,远比毫不犹豫的正人君子要真实。
不管是扶摇,延禧攻略还是西虹市首富,都有自己的创新也有了深度,今年真的是大饱眼福啊!
现在开始正题,深入学习Linux,加油补充一下计算机基础还是有好处的。
. 计算机体系结构
-
相信你对计算机的大体构造有所了解了,电路板、电线还有一些硬件,这是必需品
-
数据格式二进制 :
计算机是个电子设备,它的数字来源在于控制线路通电与否;
采用二进制相对于十进制更精确,能够方便控制电路板上的电流,有电代表数字1,无电代表数字0;
想想,如果采用十进制,怎样精确控制电流的强弱来表示0-9呢?那会很麻烦!
. CPU包括运算器和控制器 【相当于工厂的工人和总监】
-
运算器– 工人(装货):通常是加法器、逻辑运算器
加法器:加减乘除运算都使用加法器完成;
加法器使用加数与被加数(这些数据都在存储器中获取);
【一般来讲,每个加法器只能进行一位加法运算,例如3位数的加法至少有3个加法器。 那么如果要计算32位的加法,就会有32个加数和32个被加数; 他们各需要32根线来进行运算,这势必很臃肿!那么如何解决?】~ 这里引入了线路复用 ,可以同时传输指令、加数、被加数,很高效。但有两个问题:
Q1. 如何识别指令和数据呢?
A1. 靠的就是CPU上的控制位,数值1为指令,0为数据。Q2. 如果刚传进来加数,想再传被加数,那么电路板上的电压就会调整为被加数的,之前的加数如果不存放起来,就消失了,怎么办?
A2. 只需将前一个数据存放在寄存器 -
控制器– 总监(调配):协调运算器到存储器哪个存储单元读取数据,另外运算完还要靠它去找存储器中还有什么空闲位置存放数据
. 存储器RAM:【相当于工厂的仓库,有进有出】
就是内存,每一个存储单元在全局上有唯一的地址;
程序是由指定+数据构成的,而指令和数据都存储在存储器中,控制器要在存储器中获取控制指令,靠一根电线:指令/控制总线;
【出厂的时候内存条中什么也没有,那么我们需要将执行的程序放到存储器中去,需要一个外围设备,辅助用户先存储一些指令和数据】
缺点:断电丢失数据。所以需要一个外置设备保存数据或者用显示器显示出来
. I/O设备
外围/辅助设备(键盘、鼠标、硬盘、显示器、网卡)
中断interrupt:硬件通知机制。比如敲一下键盘,电信号会传输到CPU,告诉CPU停下手头的工作,过来看看发生了什么。所以任何的硬件发生了改动,哪怕很小就像敲一下键盘,都会产生一次interrupt。因此,中断越多,CPU的效率越低~
【但是,当一次中断发生时,CPU怎么知道是键盘还是鼠标发生的改变呢?】
【CPU的针脚和中断控制器相连~控制器上有多根线,每根线表示一个设备。
但是如果外部设备非常多时怎么办?比如一个服务器连了500块硬盘,那么是不是需要500根线呢?
并不科学!控制器的一根线上可以同时标示多个不同设备,也有点线路复用的意思】
. 其他一些概念:
北桥:
直接连CPU,高速总线控制器,快速实现数据交换。
南桥:
离CPU远,低速,连接外围设备。所有外围设备通过南桥汇总后,由同一根线连接到北桥,由北桥再转给CPU
【我们现在打开的网页都是存储在web服务器上的文件,相信你一定遇到过打开网页很卡,长时间加载不出来的情况~有没有想过是为什么?】
【原因不难理解:我们日常上网的流程就是:网页文件内容存储在web服务器硬盘,访问时需要先通过南桥再汇总到北桥,再交由CPU处理给网卡,发给各个用户。假如一个界面有2M,同时100万人访问,南桥连接的硬盘是支撑不了的,就会卡顿,严重会报废;那么你可能会想:为什么刷淘宝这么流畅?
一个原因可能是,你的手机争抢网速比较给力,把阿里web服务器分配的有限的名额抢到手就能访问;
另一个原因就是:为了避免高峰时段用户访问过多,南桥效率低下的问题,服务商会使用固态硬盘和北桥直接连接。当然,如果使用的是机械硬盘,南桥北桥差别不大,因为都很慢!】
主频:
前面说到,数据的输入是利用电信号的识别,也就是扳开关。有电为1,没电为0。扳一次开关为1Hz,那么我们平时所说的CPU主频2.9GHz,意思就是一秒能扳2.9 x 10^9^ 次,也就能有这么多次的数据变换
CPU与内存主频关系:
CPU主频(以GHz为单位)要高于内存(以MHz为单位),也就是说,比如CPU一次可以处理十个数据,但内存一次就能提供一个数据。那么CPU的强大会因为内存被拖慢。但是呢,目前升级CPU容易,升级内存主频成本会相当高。
其实人生就是在不断的妥协、权衡和放弃当中,来追求最大化的幸福,计算机亦如此
利用 缓存 解决这个问题,它就是一个折中。你可能听过一级、二级、三级缓存;级别越小,距离CPU距离越近,速度就越快。
缓存原则–> 程序局部性原理:
时间局部性:刚访问过的再次访问会快
空间局部性:距离访问过的数据存储位置近的访问快
低级 vs 高级语言:
低级语言:微码(汇编语言,人能识别但机器不能,因为很低层所以难学)–>编译器(机器能理解,转换为机器语言)–> 机器语言(0,1代码;二进制)
高级语言(汇编语言的上一级;兼具人类思考习惯和机器识别特性):
要先转换为汇编再转换为对应芯片上的机器语言,需要额外机制(API – application program interface。不同CPU用汇编语言写的有相同功能的程序,使用API虚拟相同的执行环境)来满足不同机器上运行同一个程序。
. 多任务处理:
-
交叉进行;
-
切分CPU与内存
CPU:按照时间顺序划分为多个time slice( 比如两个任务,第一个5ms第二个5ms,然后反复交替)
内存:按照任务数分段机制(第一段和第二段,有着相对的地址); 对于32位系统,最多使用2^32^ = 4G物理内存;64位系统,2^64^ 基本无上限 -
如何指定哪个任务该做什么呢?指挥官就是——操作系统。负责一个程序的启动、终止和回收,程序的切换等工作。【运行的程序称为“进程”】
内核: Kernel
-
通过 System call 系统调用来实现统一接口。操作系统(Windows, Mac, Linux)就是种内核。
【系统调用处于底层,相当于买馒头给了你一袋子小麦,利用起来比较麻烦,需要磨面、发面等,但是能做的事情很多,不止能做馒头,还能做包子面条】
功能: -
进程管理
-
内存管理
-
提供文件系统
-
提供网络功能
-
提供硬件驱动
-
提供安全机制
. 库: API
任何程序执行都需要一个执行入口。库也是一堆程序集合,他是可执行程序,但是它没有执行入口,因此不能直接执行,只能等其他程序调用时才执行,执行的时候又可以提供一个统一的调用机制(call)。
有了操作系统(内核)以后任何程序都不能直接和硬件打交道,必须要通过操作系统(内核)来进行协调。但由于系统调用过于底层,就将其再次封装起来,使其功能更加强大(直接给你馒头,不需要自己将小麦加工成面粉),这种更高级的接口就是库(API,application program interface)。
所以程序员写程序直接通过库来写就行,调用其功能来开发程序(没必要“造轮子”)。利用不同内核的库编的程序,由于库的内部细节不同,一般不能跨平台运行,但如果调用接口相同,就能运行。
-
windows下dll(Dynamic Link Library)动态链接库
-
linux下.so(Shared Object)共享对象

要跑起来一个程序,只需要提供三个东西:内核、程序依赖的库、shell
所以说,操作系统并不复杂,这三样最简单的只需要2M或3M空间就够了
【补充一下:应用程序放在硬盘上叫程序,但启动起来叫进程process】
要做一个web服务器,你只需要提供程序和它依赖的库就能行
那么你会想,为什么日常装的操作系统这么大,十几个G?
有各种文件,作为对这个主线的补充;为了提供图形界面,会装很多图片
. 开机启动的模式:

. 启动程序的方式:
-
随开机一起启动,称为“后台服务”
-
按需求启动,手动启动,称为“交互式程序”
shell:人机交互接口【下面会有更详细介绍】
用户与系统(内核)进行交互
分为: -
GUI( graphic user interface) 可视化
Gnome: C 开发; KDE: C++; XFace:嵌入式轻量系统 -
CLI( command line interface) 命令行:效率更高!
sh,bash(最广泛,开源),csh,zsh,ksh,tcsh等
点击底部的“阅读原文”,获得更好的阅读体验哦😻
初学生信,很荣幸带你迈出第一步。
我们是生信星球,一个不拽术语、通俗易懂的生信知识平台。需要帮助或提出意见请后台留言、联系微信或发送邮件到Bioplanet520@outlook.com
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!