学习笔记(连载)之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. TCP/IP Basic

    1.概述 TCP/IP起源于60年代美国政府遮住的一个分组交换网络项目,在当今被定义为互联网通信接口,TCP/IP主要分为4层,每一层负责不同的通信功能,这促成了一个协议族的诞生,而TCP/IP是一组 ...

  2. 洛谷p1345---最小割的奇妙运用

    让你去掉最少的点,使得c1和c2变得不连通,你有办法吗??? 这是最小割呀!!! 网络流的最小割去掉的是边,构造边的顶点的唯一关系就好了!!! 需要注意一点 #include<iostream& ...

  3. DEVOPS技术实践_21:Pipeline的嵌套以及流程控制的if和case语句

    1 if控制语句 使用一个简单的If控制语句 pipeline { agent any stages { stage('flow control') { steps { script { == ) { ...

  4. FacadePattern(外观模式)-----Java/.Net

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性

  5. The Annual Summary Of 2019

    Time is flying, it arrives at the end of year again. This is my first year working in PinDuoDuo inc ...

  6. Linux磁盘管理之LVM

    一.LVM介绍 在我们管理Linux磁盘的时候,通常会遇到这么一种情况.在最初规划Linux的磁盘的时候,我们给某个分区划分了一定量的磁盘空间,使用一段时间后,发现我们规划的磁盘空间不足了,这个时候怎 ...

  7. Python PyInstaller安装和使用教程

    安装 PyInstalle Python 默认并不包含 PyInstaller 模块,因此需要自行安装 PyInstaller 模块. 安装 PyInstaller 模块与安装其他 Python 模块 ...

  8. 12款好用的Visual Studio插件,最后一款良心推荐

    目录 01 CodeMaid 02 Markdown Editor 03 ReSharper 04 GitHub Extension for Visual Studio 05 ZenCoding 06 ...

  9. Java五子棋小游戏(控制台纯Ai算法)

    Java五子棋小游戏(控制台纯Ai算法) 继续之前的那个五子棋程序 修复了一些已知的小Bug 这里是之前的五子棋程序 原文链接 修复了一些算法缺陷 本次增加了AI算法 可以人机对战 也可以Ai对Ai看 ...

  10. 使用内存映射文件MMF实现大数据量导出时的内存优化

    前言 导出功能几乎是所有应用系统必不可少功能,今天我们来谈一谈,如何使用内存映射文件MMF进行内存优化,本文重点介绍使用方法,相关原理可以参考文末的连接 实现 我们以单次导出一个excel举例(csv ...