学习笔记(连载)之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. 如何基于TencentOS tiny,快速打造属于自己的IoT小应用?

    导语 | 近日,云+社区技术沙龙“腾讯开源技术”圆满落幕.本次沙龙邀请了多位腾讯技术专家,围绕腾讯开源与众多开发者进行探讨,深度揭秘了腾讯开源项目TencentOS tiny.TubeMQ.Kona  ...

  2. ELK学习实验008:Kibana的介绍

    一 简介 Kiana是一款开源的数据分析和可视化平台,它是 Elastic Stack成员之一,设计用于和 Elasticsearch协作.您可以使用 Kiana对 Elasticsearch索引中的 ...

  3. iSO垂直滑动条VerticalSlider

    由于项目需要实现一个垂直的Slider,滑动条使用UIlabel实现,按钮使用UIButton,按钮可以设置背景图片,代码如下 VerticalSlider.h // // VerticalSlide ...

  4. 【一起学源码-微服务】Feign 源码三:Feign结合Ribbon实现负载均衡的原理分析

    前言 前情回顾 上一讲我们已经知道了Feign的工作原理其实是在项目启动的时候,通过JDK动态代理为每个FeignClinent生成一个动态代理. 动态代理的数据结构是:ReflectiveFeign ...

  5. 关于javaweb开发的环境搭建(一)Tomcat

    进行Tomcat的下载及环境配置 1.下载地址   http://tomcat.apache.org/ 2.下载的注意事项   下载的Tomcat版本要与自身电脑安装的java版本相匹配,下载时,点击 ...

  6. 一条SQL注入引出的惊天大案2:无限战争

    前情回顾: 经过黑衣人和老周的合作,终于清除了入侵Linux帝国的网页病毒,并修复了漏洞.不曾想激怒了幕后的黑手,一场新的风雨即将来临. 详情参见:一条SQL注入引出的惊天大案   风云再起 小Q是L ...

  7. 【一起学源码-微服务】Eureka+Ribbon+Feign阶段性总结

    前言 想说的话 这里已经梳理完Eureka.Ribbon.Feign三大组件的基本原理了,今天做一个总结,里面会有一个比较详细的调用关系流程图. 说明 原创不易,如若转载 请标明来源! 博客地址:一枝 ...

  8. 论Java中的抽象类与接口

    目录 抽象类和抽象方法 定义 与普通类的区别以及注意点: 抽象类的作用 接口 定义 示例 注意 作用 最后:接口与抽象类的异同 使用场景 借鉴 抽象类和抽象方法 定义 抽象方法和抽象类都必须被abst ...

  9. java数据库学习路线和必学知识点!

    java数据库必学知识点! 分享一下数据库的学习路线和必学的知识点! 掌握mysql,Oracle在各个平台上的安装及使用 Mysql数据库基础 mysql概述.优点.运行原理及内存结构 mysql数 ...

  10. C# 中 ConfigureAwait 相关答疑FAQ

    C# 中 ConfigureAwait 相关答疑FAQ 在前段时间经常看到园子里有一些文章讨论到 ConfigureAwait,刚好今天在微软官方博客看到了 Stephen Toub 前不久的一篇答疑 ...