后面的一些内容都将会介绍我在鸟哥这本书上看到的对Linux操作系统学习的内容
目录
计算机概论
软件程序的运行
Linux是什么?如何学习?
计算机概论
(本章节主要介绍七个知识)
1.1-1:CPU(Central Processing Unit)
在介绍CPU之前呢首先要说的是冯 诺依曼体系。(在之前的内容中有涉及到)
CPU的架
两大类:
(1)精简指令集(Reduced Instruction Set Computer,RISC):
特点:
执行性能较佳。代表公司:ARM公司,代表CPU:ARM架构CPU。
目前世界上使用范围最广的CPU可能就是ARM架构的CPU
(2)复杂指令集(Complex Instruction Set Computer,CISC)
特点:
指令数目多而且复杂。代表公司:AMD,代表CPU:AMD架构的CPU(64位)
"64位"中的位是什么意思?
指的是:CPU一次读取数据的最大量。CPU一次可以读写64位数据。
1.1-2:内存(Main Memory)
特点:
软件程序或文件数据都要读入内容后CPU才能利用。个人电脑内存主要组件为动态随机存取内存(Dynamic Random Access Memory,DRAM)
DRAM特点:
断电之后数据消失。(这就是为什么以前电脑卡就重启的原因)
ROM(Read Only Memory,ROM)
定义:
一个存储芯片,没有通电时也能够记录数据。BIOS界面的存储场所。
BIOS界面(Basic Input Output System):
一个程序,写死在主板上面的一个存储芯片中
1.1-3 主板
作用:
负责各个电脑组件之间的通信,上面有设备的I/O地址以及有发出IRQ中断的作用。
什么是I/O地址?
类似每个设备的门牌号码,每个设备都有它自己的地址,不能有两个设备使用同一个I/O地址。
什么是IRQ中断(Interrupt)?
IRQ中断请求来告知CPU该设备的工作情况,方便关闭不用接口打开要是用的接口。(资源管理更高效)
主板上的另一个重要程序:CMOS
功能:
记录用电、系统时间、CPU电压、频率、各项设备的I/O地址与IRQ...
BIOS与CMOS的关联:
BIOS是写入主板上某一块flash或者EEPROM的程序,可以在计算机启动时调用CMOS当中的参数,并尝试调用存储设备中的引导程序,进一步进入操作系统当中
(BIOS程序可以修改CMOS当中的数据)
1.1-4 字符编码系统:
计算机自能识别0和1,编码系统相当于一个字码对照表。
当我们输入字符数据,该文字数据由编码对照表将该字符转换成数字后存入文件。
常用英文编码表:ASCII系统
万国码编码表(非英语系国家编码表):Unicode编码系统(UTF-8)
软件程序运行
没插电的电脑是一堆废铁
插了电没有软件的运行的电脑是一堆会电人的废铁
由以上两句话可以得出:软件是电脑的灵魂。
电脑系统的分类:
1、系统软件
2、应用程序
系统在计算机上运行的过程:
我们知道电脑的运算与逻辑判断在CPU内部。CPU具有指令集
我们需要电脑帮忙工作就要参考指令集的内容,然后编写让CPU读得懂的脚本给CPU执行
理论上讲,要写出这样的脚本要学习机器语言(由0和1组成)
由于每台计算机CPU几乎不一样,程序不一样,参考的指令集不一样。理论上讲脚本不具备可移植性。
所以计算机科学家创造了程序语言和编译器。 人类通过编写程序语言经过编译器转译成计算机看得懂的机器码
(目前常见的编译器:C、C++、Java、Fortran等)
有了这些语言以后仅仅只是解决了计算机能读懂的问题。要讲写好的内容放到内存当中给CPU计算还需要自行分配一个内存区让自己写的数据填上去,这时候就需要了解内容的地址是如何定位的等知识。复制且庞大的知识量让很多人望而却步
为了解决硬件方面需要重复编写的问题,就诞生了操作系统(Operating System,OS)(非常重要)
操作系统的本质:
一组程序
操作系统的作用:
1、驱动系统中所有硬件。(操作系统的内核(Kernel))
2、系统调用(System Call)(管理电脑的所有活动)
(内核程序放置到内存当当中的区块是受保护的,并且启动后就一直常驻在内存中)
内核的功能:
(1)系统调用接口(System call interface)
(2)进程管理(Process control)
(3)内存管理(Memory management)
(4)文件系统管理(Filesystem management)
(5)设备驱动(Device drivers)
由于硬件由内核管理,要开发软件就要去了解内核相关功能,这样等价于从去了解硬件函数转变成了参考内核功能,性质没变。
为了解决这个问题,操作系统会提供一套应用程序编程接口(Application Programming Interface,API)给程序员开发软件。只要工程师遵守该API即可开发软件。
例子:
学C语言只需要参考C语言函数即可,不必考虑内核相关功能,因为内核系统调用接口会主动地将C语言的相关语法转换成内核可以了解的人物函数,内核就能顺利运行该程序了。
到这里可以看到计算机的一个完整框架(由内而外):
硬件(最里层)
内核(调用硬件驱动,系统的调用。)
系统调用层(API接口所存在的层级,遵循公认的系统调用参数即可开发软件)
应用程序(开发出的软件,壳程序)
操作系统其实就是内核及其提供的接口工具
应用程序
定义:
参考操作系统提供的API所开发出来的软件
Linux是什么?
定义:
Linux就是一组软件,是一个操作系统(包含内核以及系统调用层)
特点:
开放源代码,这里的开源不等于免费。免费是免费,开源是开源。
开源的定义:
1、取得软件与源代码:根据自己的需求来使用这个自由软件
2、复制:自由地复制该软件
3、修改:可以将源代码进行修改,使之适合自己
4、再发行:可以将修改过后的软件再度自由发行
5、回馈:将修改过的程序代码回馈于社区
6、修改授权:不能将一个GPL授权的自由软件,在修改后而将他取消GPL授权
7、单纯销售:不能单纯销售自由软件
应用场景:
1、企业
2、个人
3、云应用
如何学习Linux?
鸟叔的建议:
1、基于命令行,不要基于X-windows学习
2、计算机概论与硬件相关知识(了解)
3、从Linux的安装与命令学起
4、Linux操作系统的基础技能
5、学会vi文本编辑器(重点)
6、Shell与Shell脚本的学习(重点)
7、会软件管理
8、网络基础的建立