zoukankan      html  css  js  c++  java
  • 鸟哥的Linux私房菜之基础学习篇

    鸟哥的Linux私房菜之基础学习篇

    后面的一些内容都将会介绍我在鸟哥这本书上看到的对Linux操作系统学习的内容

    目录

    1. 计算机概论

    2. 软件程序的运行

    1. 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、网络基础的建立

    9、一本好的指导书(要亲自看过内容并且知道可以接受)

  • 相关阅读:
    搭建appium的android环境
    SonarQube的安装、配置与使用
    使用jsonpath解析json内容
    浅析selenium的page object模式
    java读取word内容
    Java之XML操作:从XML中直接获取数据
    Java之指定Junit测试方法的执行顺序举例
    Mybatis之执行自定义SQL举例
    SpringBoot之处理JSON数据举例
    Mybatis之执行insert、update和delete操作时自动提交
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14044885.html
Copyright © 2011-2022 走看看