计算机基础知识

本篇文章,就更新关于计算机的基础知识点,计算机的发展史,及结构组成等相关知识点

计算机系统

计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备

计算机有很多形式,比如:生活中常见的家用电脑,笔记本,智能手机,平板电脑等,还有生产环境中提供重要业务支撑的各种服务器(Server),都算是计算机。

其中一个完整的计算机系统由硬件(Hardware)系统软件(Software)系统两大部分组成

1 计算机硬件

计算机发展历史:
  1. 第一代计算机(1946-1957) 电子管时代
  2. 第二代计算机(1958-1964) 晶体管时代
  3. 第三代计算机(1965-1970) 集成电路时代
  4. 第四代计算机(1971以后) 大规模集成电路时代
世界上第一台计算机

1946年,世界上第一台计算机ENIAC(electronic numerical integrator and calculator 电子数字积分计算机)在美国宾州大学诞生,是美国奥伯丁武器试验场为了满足计算弹道需要而研制成的。使用了17468只电子管,占地170平方米,重达30吨,耗电174千瓦,耗资40多万美元。每秒可进行5000次加法或减法运算

冯·诺依曼体系结构

1946年美籍匈牙利数学家冯·诺依曼于提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。 冯·诺依曼体系结构冯·诺依曼理论的要点是:

  1. 数字计算机的数制采用二进制,bit 位, byte 字节 1 byte =8 bit
  2. 计算机应该按照程序顺序执行
  3. 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成
二进制和十进制转换

二进制转换为十进制

​ 二进制转为十进制要从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左往右。

  • 如要想二进制00101010转为十进制,因为以0开头,所以这是正整数,计算如下所示:

(0 * 2的零次方) + (1* 2的一次方)+ (0 * 2 的二次方)+(1 * 2的三次方) +(0 * 2的四次方) +(1* 2的五次方) + (0 * 2的六次方) + (0 * 2的7次方) = 0 + 2 + 0 + 8 + 0 + 32 + 0 + 0 = 42

img

十进制转换为二进制

  • 采用"除2取余,逆序排列"法:

1.首先用2整除一个十进制整数,得到一个商和余数 2.然后再用2去除得到的商,又会得到一个商和余数 3.重复操作,一直到商为小于1时为止 4.然后将得到的所有余数全部排列起来,再将它反过来(逆序排列),切记一定要反过来!

img

常见单位

  • 10的36次方 X
  • 10的33次方 C
  • 10的30次方 D
  • 10的27次方 N
  • 10的24次方 B
  • 10的21次方 Y
  • 10的18次方 E
  • 10的15次方 P
  • 10的12次方 T 二进制 2^40
  • 10的 9次方 G 二进制 2^30
  • 10的 6次方 M 二进制 2^20
  • 10的 3次方 K 二进制 2^10=1024
  • 10的 2次方 百
  • 10的 1次方 十
  • 10的-1次方 分 d
  • 10的-2次方 厘 c
  • 10的-3次方 m
  • 10的-6次方 μ
  • 10的-9次方 n
  • 10的-12次方 p
  • 10的-15次方 f
  • 10的-18次方 a

摩尔定律

由英特尔(Intel)创始人之一戈登·摩尔于1965年提出,当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍

计算机分类
  1. 按规模划分
    • 超级计算机:Super Computer,又称巨型计算机,应用于国防尖端技术和现代科学计算中。巨型机的运算速度可达每秒百万亿次以上, “天河一号”为我国首台千万亿次超级计算机
    • 大型计算机:具有较高的运算速度,每秒可以执行几千万条指令,而且有较大的存储空间。往往用于科学计算、数据处理或作为网络服务器使用,如:IBM z13 mainframe
    • 小型计算机:指采用精简指令集处理器,性能和价格介于PC服务器和大型主机之间的一种高性能64 位计算机。在中国,小型机习惯上用来指UNIX服务器
    • 微型计算机:指采用 X86 CPU 架构的PC服务器,中央处理器(CPU)采用微处理器芯片,体积小巧轻便,广泛用于商业、服务业、工厂的自动控制、办公自动化以及大众化的信息处理,互联网公司发起去IOE运动,代替小型机
  2. 按功能和角色划分服务器和客户机
    • 服务器:即 Server,计算机的一种,通常是网络中为客户端计算机提供各种服务的高性能的计算机,服务器在网络操作系统的控制下,将与其相连的硬盘、磁带、打印机及昂贵的专用通讯设备提供给网络上的客户站点共享,也能为网络用户提供集中计算、信息发布及数据管理等服务
    • 客户机:即 Client,向服务器提出请求,需要服务器为之提供相应的服务和支持的计算机
服务器分类
  1. 服务器按应用功能可分为:

    • Web服务器
    • 数据库服务器
    • 文件服务器
    • 中间件应用服务器
    • 日志服务器
    • 监控服务器
    • 程序版本控制服务器
    • 虚拟机服务器
    • 邮件服务器
    • 打印服务器
    • 域控制服务器
    • 多媒体服务器
    • 通讯服务器
    • ERP服务器等
  2. 服务器按外形分类

    • PC

      服务器常见的三种外型

      1. 塔式服务器
      2. 刀片式服务器
      3. 机架式服务器(现阶段是最主流的的服务器)
        • 按照统一标准设计,配合机柜统一使用,便于统计管理,高密度,节省空间,常用U为单位,
        • 1U=1.75英寸=44.45毫米,机箱尺寸比较小巧,在机柜中可以同时放置多台服务器
        • 机架式服务器的宽度为19英寸(48.26cm),厚度通常有1U,2U,3U,4U,5U,7U几种标准的
        • 服务器
        • 机柜的尺寸也是采用通用的工业标准,如:宽度600mm,深度1000mm,高2000mm(42U)

img

服务器硬件组成

img

  1. 服务器硬件

    ---CPU

    • CPU:Central Processing Unit,即中央处理器。由控制器和运算器构成,是整个计算机系统中最重要的部分

      • CPU 架构:CISC:Complex Instruction Set Computer,复杂指令集
      • RISC:Reduced Instruction Set Computer,精减指令集
      • 精减指令集和复杂指令集:
        • RISC精简指令集:强调计算机结构的简单性和高效性,其特点是所有指令的格式都是一致的,所有指令的指令周期也是相同的,支持并行,并且采用流水线技术。当需要完成复杂任务时,就由多个指令组合来实现。常用的精简指令集微处理器包括:ARM、RISC-V、MIPS、PA-RISC、PowerArchitecture(包括PowerPC)、DECAlpha和SPARC等
        • CISC复杂指令集:CISC的指令系统庞大,功能复杂,指令格式、寻址方式多;执行速度慢;难以优化编译,编译程序复杂; 无法并行;无法兼容。大约20%的指令占据了80%的处理器时间。其余80%指令使用频度只占20%的处理机运行时间。
      • CPU类型
        • X86:CISC
        • ARM:Acorn RISC Machine 高通,华为麒麟
        • RISC-V 阿里玄铁910
        • MIPS 龙芯
        • Power:IBM
        • Powerpc:apple,ibm,moto
        • Ultrasparc :Sun
        • Alpha:HP
        • 安腾:compaq
      • 服务器CPU公司
        • Intel
        • Xeon 至强
        • Itanium 安腾
        • AMD: Althlon MP
        • IBM: Power
      • 按照CPU体系架构来区分,服务器主要分为两类:
        • x86服务器:采用CISC(复杂指令集)架构服务器,即通常所讲的PC服务器,它是基于PC机体系结构,使用Intel或其它兼容x86指令集的处理器芯片的服务器。目前主要为intel的Xeon E3,E5,E7系列,价格相对便宜、兼容性好、稳定性较差、安全性不算太高
        • 非x86服务器:采用RISC(精简指令集)或EPIC(并行指令代码) 处理器,主要采用UNIX和其它专用操作系统的服务器,CPU主要有IBM的Power PC、MIPS的MIPS、SUN的Sparc、Compaq的Alpha、HP的PA-RISC、Intel研发的EPIC安腾处理器等。这种服务器价格昂贵,体系封闭,但是稳定性好,性能强,主要用在金融、电信等大型企业的核心系统
    • 微处理器

      • 1971年11月15日,Intel公司的工程师特德·霍夫发明了世界上第一个微处理器—4004,这款4位微处理器虽然只有45条指令,而且每秒只能执行5万条指令。性能很低,但它的集成度却要高很多,一块4004的重量还不到一盅司
    • CPU主频:主频是CPU的时钟频率(CPU Clock Speed),是CPU运算时的工作的频率(1秒内发生的同步脉冲数)的简称。单位是Hz。一般说来,主频越高,CPU的速度越快,由于内部结构不同,并非所有的时钟频率相同的CPU的性能都一样

    • 外频:系统总线的工作频率, CPU与外部(主板芯片组)交换数据、指令的工作时钟频率倍频:倍频则是指CPU外频与主频相差的倍数

    • 三者关系是:主频=外频x倍频

    • 高速缓存(cache):高速交换的存储器。CPU缓存分为一级,二级,三级缓存,即L1,L2,L3内存总线速度(Memory-Bus Speed):一般等同于CPU的外频,指CPU与二级(L2)高速缓存和内存之间的通信速度

    • 地址总线宽度:决定了CPU可以访问的物理地址空间

  2. 服务器硬件---主板

    • 主板mainboard,安装在机箱内,是计算机最基本的也是最重要的部件之一主板一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键盘和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件
  3. 服务器硬件---内存

    • 内存是介于CPU 和外部存储之间,是CPU 对外部存储中程序与数据进行高速运算时存放程序指令、数据和中间结果的临时场所,它的物理实质就是一组具备数据输入输出和数据存储功能的高速集成电路
    • 内存是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速度快计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大
    • 外存:硬盘,U盘,软盘,光盘
    • 内存和外存的区别:
      • 内存断电后数据丢失
      • 外存断电后数据可以保存
    • 服务器内存常用技术:
      1. 在线备用内存技术
        • 当主内存或者是扩展内存中的内存出现多位错误时或者出现物理内存故障时,服务器仍继续运行
        • 由备用内存接替出现故障内存的工作
        • 备用的内存区域必须比其它区域的内存容量要大或相同
      2. 内存镜像
        • 镜像为系统在出现多位错或内存物理故障时提供数据保护功能,以保证系统仍能正常的运行
        • 数据同时写入两个镜像的内存区域
        • 从一个区域进行数据的读取
      3. 容量
        • 即该内存的存储容量,单位一般为GB
      4. 内存带宽:
        • 内存带宽是指内存与北桥芯片之间的数据传输率,B byte 字节 b bit位
        • 单通道内存控制器一般都是64-bit的,8个二进制位相当于1个字节,换算成字节是64/8=8,再乘以内存的运行频率,如果是双通道内存就要再乘以2
        • 计算公式: 内存带宽=内存总线频率×数据总线位数/8
        • 范例:
          • 单通道DDR(Double Data Rate双倍速率)内存带宽计算
            • DDR4-4000:4000MHz64bit/8=32000MB/S DDR4-3600:3600MHz64bit/8=28800MB/S
          • 双通道:
            • DDR4-4000:4000MHz64bit2/8=64000MB/S
  4. 服务器硬件---硬盘

    • 常见的磁盘接口种类:
      • IDE:Integrated Drive Electronics,电子集成[驱动器,早期家用电脑常用接口
      • SCSI:Small Computer System Interface,小型计算机系统接口,早期的服务器常用接口
      • SATA:Serial ATA (Advanced Technology Attachment 高技术配置),家用电脑常用的接口
      • SAS:Serial Attached SCSI,是目前服务器上主流的接口
      • 光纤通道:Fiber Channe,高性能服务器上采用的接口
      • M.2 :固态硬盘接口,性能更强
    • 结构分类:
      1. 机械硬盘HDD(Hard Disk Drive)
        • 存储介质(Media)——盘片
          • 盘片的基板是金属或玻璃材质制成,为达到高密度高稳定的质量,基板要求表面光滑平整,不可有任何暇疵
        • 读写磁头(Read Write Head)——磁头
          • 磁头是硬盘读取数据的关键部件,它的主要作用就是将存储在硬盘盘片上的磁信息转化为电信号向外传输
        • 马达( Spindle Motor & Voice Coil Motor )
          • 马达上装有一至多片盘片,以7200,10000,15000 RPM等定速旋转,为保持其平衡不可抖动,所以其质量要求严谨,不产生高温躁音
      2. 固态硬盘SSD(Solid State Drives )
        • SSD,即固态硬盘,泛指使用NAND Flash组成的固态硬盘。其特别之处在于没有机械结构,以区块写入和抹除的方式作读写的功能,因此在读写的效率上,非常依赖读写技术上的设计SSD读写存取速度快,性能稳定,防震性高,发热低,耐低温,电耗低,无噪音。因为没有机械部分,所以长时间使用也出现故障几率也较小。缺点:价格高,容量小,相对普通机械硬盘性价比低
  5. 服务器硬件---网卡

    • 服务器都在主板上集成了网卡,传输速率为1Gbps,即千兆网卡特殊应用需要高端网卡,如光纤网卡,Infiniband网卡等,传输速率能达到10Gbps、20Gbps,即万兆网卡
  6. 服务器硬件---相关其它硬件

    • 阵列卡
      • Raid卡用来实现RAID的建立和重建,检测和修复多位错误,错误磁盘自动检测等功能。RAID芯片使CPU的资源得以释放,阵列卡把若干硬盘驱动器按照一定要求组成一个整体、由阵列控制器管理的系统
      • 阵列卡可以用来提高磁盘子系统的性能及可靠性
      • 支持的多种RAID级别,RAID0,1,5,6等
      • 阵列卡提供缓存及电池保护
    • 电源
      • 支持服务器的电力负载,支持冗余,防止电源故障 ,故障预警和防止 ,故障之前的预防性维护,保证服务器持续运行,电源子系统包括:冗余电源和风扇
    • 显卡
      • 服务器都在主板上集成了显卡,但是显存容量不高,一般为16M或32M,GPU: Graphic ProcessingUnit,即“图形处理器”
    • 热插拔技术
      • 热插拔技术,称为热交换技术(Hot Swap),允许在不关机的状态下更换故障热插拔设备,常见的热插拔设备:硬盘,电源,PCI设备,风扇等。热插拔硬盘技术与RAID技术配合起来,可以使服务器在不关机的状态下恢复故障硬盘上的数据,同时并不影响网络用户对数据的使用
    • 机柜
      • 机架式服务器-服务器放置在机柜中
      • 通常使用的机柜是42U(约2米高)机柜( 1U=44.45mm)
      • 外观尺寸一般为:宽600深1000高2000(mm)
      • 在一个机架上,累计设备U数一般不超过26U,全1U设备部署数量一般不超过16台,全2U设备一般不超过12台,全4U设备一般4到7台
  7. 各种硬件处理速度和性能优化

    • 服务器的性能短板:如果CPU有每秒处理1000个服务请求的能力,各种总线的负载能力能达到500个,但网卡只能接受200个请求,而硬盘只能负担150个的话,那这台服务器得处理能力只能是150个请求/秒,有85%的处理器计算能力浪费了,在计算机系统当中,硬盘的读写速率已经成为影响系统性能进一步提高的瓶颈

img电脑的各个设备部件之间的延时从高到底的排列,依次是机械硬盘、固态硬盘、内存、CPU

存储器的层次结构

img

上图以层次化的方式,增加了价格信息,它展示了一个真理:世界上没有免费的午餐。存储器越往上速度越快,但是价格越来越贵, 越往下速度越慢,但是价格越来越便宜。正是由于计算机各个部件的速度不同,容量不同,价格不同,导致了计算机系统/编程中的各种问题以及相应的解决方案

并发和多线程

CPU的速度超级快,不能老是让它闲着,要充分地压榨它!这里有两个强劲的理由:

  1. 人类需要多个程序“同时”运行,我们要把CPU的时间进行分片,让各个程序在CPU上轮转,造成一 种多个程序同时在运行的假象,即并发
  2. 当CPU遇到IO操作(硬盘,网络)时,不能坐在那里干等“几个月”甚至“几年”,在等待的时候,一 定要切换,去执行别的程序。

说起来简单,但是程序的切换需要保存程序执行的现场,以便以后恢复执行,于是需要一个数据结构来 表示,这就是进程了。如果一个进程只有一个“执行流”, 如果进程去等待硬盘的操作,那这个程序就会 被阻塞,无法响应用户的输入了,所以必须得有多个“执行流”,即多线程

缓存

需要持久化的数据一定要保存到硬盘中,但是硬盘超级慢,支持不了大量的并发访问,那怎么办呢? 可以把最常访问的热点数据放到CPU的缓存中嘛, 其实CPU也是这么做的,但是CPU的L1, L2, L3级缓 存实在是太小, 根本满足不了需求。于是只好退而求其次,把热点数据放到速度稍慢的内存中,于是应 用程序的缓存就出现了。

异步

对于Tomcat这样的应用服务器,对于每个请求都要用一个线程来处理,如果现在有一万个请求进来,Tomcat会建立1万个线程来处理吗? 不会的,因为线程多了开销会很大 ,线程切换起来也很慢,所以它只好用个线程池来复用线程。现在假设线程池中有一千个可用线程(已经非常多了),它们都被派去访问硬盘,数据库,或者发起网络调用,这是非常慢的操作,导致这一千个线程都在等待结果的返回(阻塞了),那剩下的九千个请求就没法处理了,对吧?所以后来人们就发明了新的处理办法,仅使用几个线程(例如和CPU核心数量一样),让他们疯狂运行,遇到I/O操作,程序就注册一个钩子函数放在那里,然后线程就去处理别的请求,等到I/O操作完成了,系统会给这个线程发送一个事件, 线程就回过头来调用之前的钩子函数(也叫回调函数)来处理。这就是异步,非阻塞的处理方式。nginx,Node.js等采用的都是类似的思想

单线程

Redis使用单线程的方式来处理请求的,为什么用单线程就可以呢? 它为什么不像Tomcat那样使用多线程和线程池呢?因为它面对的仅仅是内存,内存的速度在计算机的体系中仅次于CPU,比那些网络操作不知道要快到哪里去了所以这个唯一的线程就可以快速地执行内存的读写操作,完成从许多网络过来的缓存请求了。单线程还有个巨大的优势,没有竞争,不需要加锁!

2 操作系统

操作系统功能

OS: Operating System 操作系统,通用目的的软件程序

img

主要功能:

  • 硬件驱动
  • 进程管理
  • 内存管理
  • 网络管理
  • 安全管理
  • 文件管理

OS分类

  • 服务器OS:CentOS,Ubuntu,Windows Server,AIX
  • 桌面OS:Windows 10,Mac OS,Fedora
  • 移动设备OS:Andriod,IOS,AliOS,HarmonyOS
操作系统相关概念
  • 接口

    • interface,来源于电气工程学科,指的是插座与插头的连接口,起到将电与电器连接起为的功能。后来延伸到软件工程里指软件包向外提供的功能模块的函数接口。所以接口是用来连接两个东西、信号转换和屏蔽细节
    • 为操作系统一般会提供两个重要的接口
      • 命令行:实际是一个叫shell的终端程序提供的功能,该程序底层的实质还是调用一些操作系统提供的函数
      • 窗口界面:窗口界面通过编写的窗口程序接收来自操作系统消息队列的一些鼠标、键盘动作,进而做出一些响应
  • ABI

    • Application Binary Interface,应用程序二进制接口,ABI描述了应用程序与OS之间的底层接口,允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行
    • 运行程序格式:
      • Windows: PE(portable executable)格式, .dll(dynamic link library),.lib
      • Linux: ELF(Executable and Linking Format)格式, .so(shared object), .a
  • API

    • Application Programming Interface,应用程序开发接口,API定义了源代码和库之间的接口,因此同样的源代码可以在支持这个API的任何系统中编译

    • POSIX

      : Portable Operating System Interface 可移植的操作系统接口

      • IEEE在操作系统上定义的一系列API标准
      • POSIX兼容的程序可在其它POSIX操作系统编译执行

system call 和 Library function

  • 函数库和系统调用system call

img

对于非一般性使用需求,操作系统提供了一系列的函数调用给软件开发者,由软件开发者来实现一些用户需要的功能。这些函数调用由于是操作系统内核提供的,为了有别于一般的函数调用,被称为系统调用。比如使用C语言进行软件开发时,经常用的printf函数,它的内部实际就是通过write这个系统调用,让操作系统内核把字符打印在屏幕上的

用户和内核空间

img

  • 用户空间:User space

    • 用户程序的运行空间。为了安全,它们是隔离的,即使用户的程序崩溃,内核也不受影响
    • 只能执行简单的运算,不能直接调用系统资源,必须通过系统接口( system call),才能向内核发出指令
  • 内核空间:kernel space

    • 是 Linux 内核的运行空间

    • 可以执行任意命令,调用系统的一切资源

    • 示例

      • str = "www.magedu.com" // 用户空间
      • x = x + 100 // 用户空间
      • file.write(str) // 切换到内核空间
      • y = x + 200 // 切换回用户空间
      • 说明:第一行和第二行都是简单的赋值运算,在 User space 执行。第三行需要写入文件,就要切换到Kernel space,因为用户不能直接写文件,必须通过内核安排。第四行又是赋值运算,就切换回 User space

编程语言

  • 低级语言

    :计算机能理解的语言,二进制

    • 机器语言:0和1
    • 汇编语言:和机器语言一一对应,与硬件相关的特有代码、驱动程序开发
  • 高级语言

    : java,python,go,php,Objective-C,C#,易语言(中文),应用级程序开发,人类语言实现

    • C 语言:系统级应用、驱动程序
  • 动态类型语言

    :动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。

    • Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属
  • 静态类型语言

    :静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,

    • C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
  • 强类型定义语言

    :强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。

    • 举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
  • 弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。

preview

各种操作系统

操作系统演变

  • 单用户系统:一次只能支持一个用户程序的运行。向用户提供联机交互式的工作环境,如:DOS
  • 批处理系统:用户将一批作业提交给操作系统后就不再交互,由操作系统控制自动运行,提高系统运行效率
  • 多道程序系统:程序控制 CPU 处理顺序
  • 分时系统:提高系统利用率,操作系统控制 CPU 处理顺序,多个人共用一台计算机
  • 个人计算机:每人用户对应一个系统,廉价,方便,易用
  • 分布式计算:每个用户对应多个系统,云计算,大数据处理

服务器三大操作系统

  • Windows

  • Linux:GNU/Linux

  • Unix

    :1969年 Ken Thompson

    • System: Bell Lab
      • AIX (IBM)
      • Solaris (SUN)
      • HP-UX (HP)
    • BSD: (BSRG)Berkeley System Distribution
      • NetBSD
      • OpenBSD
      • FreeBSD

Unix

  • 1969 Unix 雏形 UNICS
    • Ken Thompson 汇编语言 B语言
  • 1973 正式命名为 Unix
    • Dennis Ritchie C语言重写了UNIX,从此Unix和C语言成为CP
  • 1977 BSD
    • Berkeley Software Distribution 伯克利大学
  • 1979 System V架构 版权声明
    • HP-UNIX IBM AIX “不对学生提供源码” 收回版权
  • 1984年 Minix操作系统
    • Andrew S. Tanenbaum 荷兰阿姆斯特丹自由大学计算机科学系

GNU

  • GNU

    :GNU is Not Unix

    • 1984年由Richard Stallman发起并创建,目标是编写大量兼容于Unix系统的自由软件
    • 官方网站:http://www.gnu.org
  • GPL

    :GNU General Public License

    • 自由软件基金会:Free Software Foundation。允许用户任意复制、传递、修改及再发布
    • 基于自由软件修改再次发布的软件,仍需遵守GPL
  • LGPL:Lesser General Public License,LGPL相对于GPL较为宽松,允许不公开全部源代码

  • GNU操作系统:

    • Hurd:Hird(Hurd of Interfaces Representing Depth) of Unix-Replacing Daemons
    • 官网:http://www.gnu.org/software/hurd/hurd.html
  • richard Stallman 为了无止境寻找完美内核,而忘记了HURD的原本目的:能用的操作系统

Linux

  • Linux操作系统:
    • 完整的类UNIX操作系统
    • Linux内核+ GNU工具=Linux/GNU
    • 内核版本地址:https://www.kernel.org/
    • 发行版如:CentOS,Ubuntu,Android
  • Linux的内核版本组成
    • 主版本号
    • 次版本号
    • 末版本号
    • 打包版本号
    • 厂商版本

img

  • Linux 发行版

    • slackware:SUSE Linux Enterprise Server (SLES) , OpenSuse桌面

    • debian: ubuntu,deepin(深度),mint

    • redhat

      : RHEL: RedHat Enterprise Linux, 每18个月发行一个新版本

      • CentOS: Community Enterprise Operating System 兼容RHEL的格式
      • 中标麒麟:中标软件
      • Fedora:每6个月发行一个新版本
    • Alpine: 一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musllibc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,只有5M左右大小

    • ArchLinux:轻量简洁,遵循K.I.S.S.原则( keep it simple and stupid ),Manjaro

    • Gentoo:极致性能,不提供传统意义的安装程序,下载源代码在本机上编译安装软件

    • LFS:Linux From scratch 自制Linux,只是一个说明书

    • Android:kernel+busybox(工具集)+java虚拟机

开源 Open Source

  • 开源 Open Source
    • 软件和源代码提供给所有人,自由分发软件和源代码,free 自由,不是免费的意思
    • 能够修改和创建衍生作品
  • 软件分类:
    • 商业:收费,源码也不公开
    • 共享:免费使用,但源码不公开
    • 自由:源代码公开
  • 开源协议
    • 世界上的开源许可证,大概有上百种

img

  • GPLv2, GPLv3, LGPL(lesser) :通用公共许可 copyleft
  • Apache: apache
  • BSD: bsd
  • Mozilla
  • MIT

img