学习笔记(连载)之Linux系列

Note:本学习笔记源自《鸟哥的Linux私房菜(基础学习篇)》一书,为此书重要内容的摘要和总结,对于一些常识性的知识不再归纳

新型冠状病毒引发的肺炎战“疫”到了关键时期,在家无事可做,突发奇想将自己对于后端技术的学习成果通过Markdown格式记录下来,发表在博客上,帮助自己回顾学过的东西。《鸟哥的Linux私房菜》是一套很好的Linux学习材料,讲得很详细,也很深入。之前我学习Linux都是“用到哪儿,学到哪儿”,是搜索积累式的,但难免会欠缺系统性。看到这本书的口碑不错,就拿来读一读。对于有一定基础的朋友,可能会觉得本书过于啰嗦,完整阅读浪费时间,再此我将要点完整的做了整理和二次归纳,如果能帮助到您,我会倍感荣幸!Linux的学习永无止境,再此与君共勉!武汉加油!

零、Linux预备知识

0、硬件小知识

  • 精简指令集RSIC处理器的指令少,单个指令运行快但复杂任务所需要的指令多:Oracle公司的SPARC架构,IBM公司的PowerPC架构,ARM架构等;复杂指令集CSIC:Intel公司x86架构及其兼容型
  • 为了与32位的x86架构区分开来,x86_64专指64位x86架构;同属于x86架构,i386指80386机,i686指Pentium II/Intel Celeron或AMD Athlon(K7)机
  • 比TB(Tera Bytes)更大的容量单位好友EB(Exa Bytes)和ZB(Zetta Bytes)
  • 存储上(Bytes),相邻单位为1024倍的关系,而速度(Hz)上,通常为1000倍的关系;值得注意的是,硬盘制造商通常会采用1000倍关系,这与扇区(sector)数有关(传统的1个扇区=512Bytes,现在有了4K大小的扇区)
  • 北桥连接CPU和内存、显卡,总线速度较快;南桥连接硬盘控制器、外设等速度较慢的设备;新的Intel架构主板往往将内存控制器集成在CPU中,采用单个桥芯片(南桥),以提高速度,CPU与内存、显卡、南桥之间通过QPI与DMI(Intel)或Hyper Transport(AMD)技术通信
  • 前端总线FSB是内存控制器与内存之间的总线
  • L2 Cache一般为容量小、单位容量晶体管数目多、速度比DRAM快的SRAM存储器,设计在CPU内部,运行在与CPU一样的频率上,存放一些经常被使用的数据,减少低速的内存访问
  • SATA每10Bits数据都有2Bits用作校验,带宽计算需要注意
  • SAS即串行SCSI(Serial Attached SCSI),比SATA快但成本高
  • IOPS:Input/Output Operations Per Second
  • PCIe(PCI Express)总线的xn是可以累计计算的,比如一个x16控制器可以带动两个x8的设备或一个x8和两个x4的设备全速工作;PCIe通道有的是直连CPU的,速度快,有的是通过南桥的PCIe 2.0/3.0控制器间接控制,速度较慢(有时候DMI总线宽度会成为PCIe的瓶颈);有些x16插槽只有x8或更少的部分有金手指,需要查阅主板说明书
  • GT/s即千兆传输每秒(Giga Transmission per second),是物理层通信速度,需要按照通信协议和总线宽度的不同转换为文件传输速率GByte/s
  • 使用cat /proc/cpuinfolspci命令可以查看硬件信息

1、Linux的历史

  • MIT的兼容分时系统CTSS(Compatible Time-Sharing System)利用终端机访问和共享大型机资源,终端机仅有I/O功能

  • MIT&GE发起Multics计划,强化多用户分时系统,Bell实验室退出Multics计划

  • Bell实验室Ken Tompson用汇编语言写出Unix核心原型(两个重要思想:程序和系统装置都是文件;程序只有一个目的,且要有效地完成目标)

  • 1973年Unix诞生,随后被以高级语言重构(Dennis Ritchie),伴随C语言的诞生,高级语言带来强大的可移植性

  • 1977年加州大学伯克利分校,类Unix系统BSD诞生

  • 1979年,AT&T发布System V,一个x86上的Unix发行版,Unix向小型机和个人计算机迁移

    Note:发行版-将操作系统和工具软件(如图形界面)、安装程序、文档等打包发布

  • 1979年,AT&T决定不再公开Unix原始码

  • 为了在拿不到原始码的情况下进行Unix内核教学,1984年x86架构下Minix系统开始编写,非免费

  • 1984年,Stallman发起GNU(GNU‘s Not Unix)计划,参考Unix上的软件自己写了一些自由的小软件,并筹划编写GNU C Compiler(gcc),向Unix移植了自己写的Emacs编辑器,成立自由软件基金会FSF,编写GNU C Library(glibc)和Bash Shell,起草通用公共许可证GPL防止自由软件被利用

  • 1988年MIT主导发表了X Window System,成立XFree86组织,编写图形GUI

  • 1991年Linus Torvalds开发出Linux v0.02核心原型,开放源代码,Linux诞生并在开发者社区文化下迅速发展

2、有关Linux的小知识

  • Linux是操作系统,包括核心(含有少量核心工具)和系统调用两层,是硬件和应用程序之间的接口
  • 最初Linux基于Intel 80386架构编写,在FTP上共享源代码(GNU GPL协议),BBS上进行开发交流,很快被移植到其他平台架构
  • Linux的开发参考了IEEE为Unix设计的标准的POSIX(Portable Operating System Interface)规范,是一种类Unix(Unix Like)操作系统
  • Linux内核采用模块化开发,新功能引入快
  • Linux的内核版本号:主版本.次版本.释出版本-修改版本,通过uname -r命令查询;注意区分发行版版本和内核版本
    • 2.6.x版本以前,主、次版本为奇数是发展中版本,偶数为稳定版本;新功能累积产生新的释出版本;针对某个版本的核心修改程序产生修改版本
    • 3.0版本后主要依据主线版本(MainLine)开发核心,如3.9主线版本继续开发产生3.10主线版本
    • 有些核心版本在结束开发后不再有人维护(End of Live,EOL),有些则是长期维护版本(LTS)
  • 不同Linux发行版使用同样的Linux内核,应用软件大同小异,基本上都遵守Linux Standard Base(LSB)和File system Hierarchy Standard(FHS)规范以约束开发者;商业公司开发的发行版通常比社群版更加保守稳定
    • 采用RPM软件管理的发行版:RHEL和SuSE(商业);Fedora、CentOS和OpenSuSE(社群)等
    • 采用DPKG软件管理的发行版:Ubuntu(商业);Debian(社群)等
    • 其他发行版:Arch、Gentoo等
  • 自由(Freedom)!=免费(Free),“自由”包括:取得软件与源码、复制、修改、再发行和回馈社群的权利与义务,不可以修改自由软件的许可证,也不能将其单纯贩卖(贩卖服务、手册等附加价值是可以的)
  • 自由软件是许可证更加严格的开源软件,非自由的开源软件再发布的授权可以与原软件不同,其全部或部分可作为其他软件的一部分,对商业行为相对更加友好,比如Apache授权、MIT授权和BSD授权

3、关于Linux学习方法

  • 兴趣+成就感

  • 习惯命令行,抛弃X Window(X11)环境
  • 从头学习Linux基础,不要急于搞网络应用
  • 找一本好的工具书,用作命令参考
  • 多多上机练习,简易在实体机上装个Linux发行版(Distribution)
  • 遇到问题先自己摸索尝试解决
    • 在主机或网络数据库上查询How-To/FAQ
    • 注意屏幕信息输出,勤于查看/var/log里的日志
  • 善于提问,《提问的智慧》
  • 参与讨论、协助回答问题
  • 尝试Debug,不要利用重启/重装系统解决问题
  • 养成做记录和整理的习惯,初学时多多借鉴他人的资料
  • 尝试多种解决问题的办法,举一反三,培养长远、整体的眼光
  • 不要有知识偏见
  • 生产环境下的操作一定要谨慎,打字过快容易出现错误

【学习笔记】Linux基础(零):预备知识的更多相关文章

  1. 受限玻尔兹曼机(RBM)学习笔记(一)预备知识

    去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算法原 ...

  2. 《C++ Primer Plus》学习笔记 第1章 预备知识

    第一章 预备知识C++在C语言的基础上添加了对"面向对象编程"的支持和对"泛型编程"的支持.类 —— 面向对象模板 —— 泛型编程1.1 C++简介1.2 C+ ...

  3. c语言学习笔记(2)——预备知识

    c语言预备知识 1.cpu 内存条 硬盘 显卡 主板显示器 之间的关系 硬盘里的<猛龙过江>(双击)--->内存条   cpu---->显卡,声卡--->显示器 2.he ...

  4. 《马哥出品高薪linux运维教程》wingkeung学习笔记-linux基础入门课程

    计算机原理概念: 1.CPU和内存中的存储单元通信线路称为总线(BUS),总线是被指令和数据复用的,所以也称为前端总线. 2.计算机中计算频率的时间标准即晶体振荡器原理,精确计算时间长度,根据相同的时 ...

  5. 合天网安实验室学习笔记----Linux基础

    一.Linux的发展 linux kernel的版本是:2.6.32-279.el6.x86_64,此格式为:主版本.次版本.释出版本-修改版本 次版本为奇数:测试版: 次版本为偶数:稳定版: Lin ...

  6. 可搜索加密技术 - 学习笔记(二)- 预备知识:HMAC-SHA256函数

    由于在之后的算法中会用到HMAC-SHA256函数,这里先简单对其进行一个介绍. 一.HMAC算法 什么是HMAC算法? HMAC是密钥相关的哈希运算消息认证码(Hash-based Message ...

  7. MyBatis:学习笔记(1)——基础知识

    MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...

  8. C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

    一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...

  9. C#学习笔记(基础知识回顾)之值传递和引用传递

    一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...

  10. C#学习笔记(基础知识回顾)之值类型和引用类型

    一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...

随机推荐

  1. java_字段初始化的规律、静态方法中访问类的实例成员、查询创建对象的个数

    字段初始化规律: 当执行如下代码时 class InitializeBlockClass{ public int field=100; { field=200; } public Initialize ...

  2. JavaScript | 值传递、引用传递的区别

    值传递 JavaScript值传递的数据类型:字符串(String).数字(Number).布尔(Boolean).空(Null).未定义(Undefined), 这五种数据类型是按值访问的,因为可以 ...

  3. Java集合使用之next方法与remove方法 | Java集合使用之remove方法使用易错

    Iterator接口的remove方法将会删除上次调用next方法时返回的元素. next方法和remove方法的调用具有相互依赖性,如果调用remove方法前没有调用next方法是不合法的. 错误使 ...

  4. SpringBoot集成Mybatis动态多数据源后,MybatisPlus的IPage失效的问题解决方案

    背景 之前做数据抽取的时候,搭了一个mybatis动态数据源切换的架子.方便他们写抽取的代码.今天同事问我,架子里面的mybatisplus的IPage失效了是什么问题.想了一下,应该是写动态数据源的 ...

  5. 关于i++的底层原理分析

    首先看一道典型题 public class Test { static int x, y, z; static { int x = 5;//局部变量 x--; } static { x--; } pu ...

  6. Deepin Linux 实体机安装

    Deepin Linux 实体机安装 1.下载ISO镜像并刻录到U盘上 系统ISO镜像下载 深度技术 刻录工具下载 深度技术(下方有深度启动盘制作工具下载) 这两个都下载好之后,打开刻录工具,选择镜像 ...

  7. JavaSelenium 页面常用基本操作语法

    元素定位                 findElement() 方法返回一个元素, 如果没有找到,会抛出一个异常 NoElementFindException()              fi ...

  8. Vector人工智能机器人SDK使用笔记

    Cozmo是2016年推出的,2两年后的2018年Vector上市,具备语音助手和更多功能,元件数由300+升级到700+. Vector的SDK具体说明在:developer.anki.com/ve ...

  9. A*寻路算法的个人理解

    A*寻路算法是一个求两点之间的最短路径的方法 算法详情如下: 准备工作: 两个容器:   open容器和close容器 价值估算公式:    F = G + H G:从起点移动到指定方格的移动代价: ...

  10. 深入理解协程(四):async/await异步爬虫实战

    本文目录: 同步方式爬取博客标题 async/await异步爬取博客标题 本片为深入理解协程系列文章的补充. 你将会在从本文中了解到:async/await如何运用的实际的爬虫中. 案例 从CSDN上 ...