计算机基础知识-程序员宅基地

技术标签: 操作系统  人工智能  c/c++  

                  计算机基础知识

                                           作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

一.计算机系统

  计算机系统由硬件(Hardware)系统和软件系统两大部分组成。

 

二.计算机硬件组成

1>.计算机硬件

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


计算机发展历史:
    第一代计算机(1946-1957):电子管时代
    第二代计算机(1958-1964):晶体管时代
    第三代计算机(1965-1970):集成电路时代
    第四代计算机(1871以后):大规模继承电路时代

2>.世界上第一台计算机

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

3>.现代计算机重要贡献人物

  艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),出生于英国伦敦,毕业于普林斯顿大学,英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。图灵提出的著名的图灵机模型为现代计算机的逻辑工作方式奠定了基础。

  冯·诺依曼(John von Neumann,1903~1957),出生于匈牙利,毕业于苏黎世联邦工业大学,数学家,被后人称为“计算机之父”和“博弈论之父”

4>.冯·诺依曼体系架构

冯·诺依曼体系结构:
    1946年数学家冯·诺依曼提出计算机由运算器,控制器,存储器,输入设备和输出设备五大部分组成。
    CPU由运算器和控制器组成。
    运算器,完成各种算术运算,逻辑运算,数据传输等数据加工处理。
    控制器,控制程序的执行。
    存储器,用于记忆程序和数据,例如内存。
    输入设备,将数据或者程序输入到计算机中,例如键盘,鼠标。
    输出设备,将数据或程序的处理结果展示给用户,例如显示器,打印机等。
  
  移民到美国后,冯·诺依曼将他的名字改为了英国化的John。他也被叫作Janos,匈牙利语Johann的意思。术语“冯·诺依曼计算机”现在被认为是有一定争议的,因为一些计算机历史学家觉得不应将命名现代计算机结构的荣誉给予冯·诺依曼一个人。

 

5>.早期计算机系统的输入设备:穿孔纸带

6>.摩尔定律

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

7>.计算机按规模划分

超级计算机:
  supercomputer,又称巨型计算机,应用于国防尖端技术和现代科学计算中。巨型机的运算速度可达每秒百万亿次以上, “天河一号”为我国首台千万亿次超级计算机

大型计算机:
  具有较高的运算速度,每秒可以执行几千万条指令,而且有较大 的存储空间。往往用于科学计算、数据处理或作为网络服务器使用,如:IBM z13 mainframe

小型计算机:
  规模较小、结构简单、运行环境要求较低,一般应用于工业自动 控制、测量仪器、医疗设备中的数据采集等方面

微型计算机:
  中央处理器(CPU)采用微处理器芯片,体积小巧轻便,广泛用 于商业、服务业、工厂的自动控制、办公自动化以及大众化的信息处理

 

三.服务器

1>.服务器分类

什么是服务器
  服务器(Server)是计算机的一种,是网络中为客户端计算机提供各种服务的高性能的计算机,服务器在网络操作系统的控制下,将与其相连的硬盘、磁带、打印机及昂贵的专用通讯设备提供给网络上的客户站点共享,也能为网络用户提供集中计算、信息发布及数据管理等服务。

服务器按应用功能可分为:
  Web服务器,数据库服务器,文件服务器,中间件应用服务器,日志服务器,监控服务器、程序版本控制服务器,虚拟机服务器,邮件服务器,打印服务器,域控制服务器,多媒体服务器,通讯服务器,ERP服务器等。

服务器按外形分类:
  塔式(Tower)服务器、刀片式(Blade)服务器、机架式(Rack)服务器

2>.塔式(Tower)服务器 

  早期的服务器形式,目前较少使用 

  外形以及结构和平时使用的立式PC差不多

  机箱空间大,主板扩展性较强,插槽较多

  预留了足够的内部空间,以便日后进行硬盘和电源的冗余扩展,设计一般都考虑降噪

3>.刀片式(Blade)服务器

  在标准高度的机架式机箱内可插装多个卡式的服务器单元,实现高可用和高密度。 

  更高的密度,集中管理,高性能,灵活扩展,按需配置。

  可以使用系统软件将这些母板集合成一个服务器集群。在集群模式下,所有的母板可以连接起来提供高速的网络环境,并同时共享资源,为相同的用户群服务。

4>.机架式(Rack)服务器 

  按照统一标准设计,配合机柜统一使用 

  便于统计管理,高密度,节省空间

  机架服务器的宽度为19英寸(48.26cm), 高度以U为单位,如42U

  1U=1.75英寸=44.45毫米,通常有1U, 2U,3U,4U,5U,7U几种标准的服务 器。机柜的尺寸也是采用通用的工业标准

  现阶段销售数量最多的服务器 机箱尺寸比较小巧

  在机柜中可以同时放置多台服务器

5>.服务器硬件组成

6>.服务器配置示例

7>.服务器硬件-CPU 

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

服务器CPU公司 
  Intel:       
    Xeon      至强       
    Itanium   安腾 
  AMD       
    Althlon MP  
  IBM   
    Power

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可以访问的物理地址空间  

CPU类型:
  x86 
  X64(CISC) 
  ARM(Acorn RISC Machine) 
  m68000, m68k(moto) 
  Power(IBM) 
  Powerpc(apple,ibm,moto) 
  Ultrasparc (Sun) 
  Alpha(HP) 
  安腾(compaq) 

服务器分类:
  按照CPU体系架构来区分,服务器主要分为两类:
    非x86服务器:使用RISC(精简指令集)或EPIC(并行指令代码) 处理器,并且主要采用UNIX和其它专用操作系统的服务器,指令系统相对简单,它只要求硬件执行很有限且最常用的那部分执令,CPU主要有Compaq的Alpha、HP的 PA-RISC、IBM的Power PC、MIPS的MIPS和SUN的Sparc、Intel研发的EPIC 安腾处理器等。这种服务器价格昂贵,体系封闭,但是稳定性好,性能强,主 要用在金融、电信等大型企业的核心系统
    x86服务器:又称CISC(复杂指令集)架构服务器,即通常所讲的PC服务器, 它是基于PC机体系结构,使用Intel或其它兼容x86指令集的处理器芯片的服务器。目前主要为intel的Xeon E3,E5,E7系列,价格相对便宜、兼容性好、稳定性较差、安全性不算太高。 

微处理器历史:
  1971年11月15日,Intel公司的工程师特德·霍夫发明了世界上第一个微处理器—4004,这款4位微处理器虽然只有45条指令,而且每秒只能执行5万条指令。 性能很低,但它的集成度却要高很多,一块4004的重量还不到一盅司。 
  Intel从8086开始,就进入了我们常说的x86时代。而80386的诞生则标志着Intel正是进入了32位微处理器的时代。从80386到Pentium 4这个年代的CPU, 就是传说中的IA-32时代。Intel公司的CPU发展历程如下图所示。
  x86-64( 又称x64,即英文词64-bit extended,64位拓展 的简写)是x86架构的64位拓展,向后兼容于16位及32位的x86架构。x64于1999年由AMD设计, AMD首次公开64位集以扩展给x86,称为“AMD64”。其后也为英特尔所采用,现时英特尔称之为“Intel 64”,在之前曾使用过“Clackamas Technology” (CT)、“IA-32e”及“EM64T”   

 

8>.服务器硬件-主板

  主板mainboard、系统板systemboard或母板motherboard,安装在机箱内,是计算机最基本的也是最重要的部件之一  

  主板一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键盘和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件。

9>.服务器硬件---内存 

什么是内存:
  内存是介于CPU和外部存储之间,是CPU对外部存储中程序与数据进行高速运算时存放程序指令、数据和中间结果的临时场所,它的物理实质就是一组具备数据输入输出和数据存储功能的高速集成电路。

  内存是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速度快。

  计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。

内存和外村的区别:
  外存:硬盘,U盘,软盘,光盘
  内存和外存的区别:
    内存断电后数据丢失
    外存断电后数据可以保存

内存相关术语:
  容量:即该内存的存储容量,单位一般为“MB”或“GB”
  内存带宽:
    内存带宽是指内存与北桥芯片之间的数据传输率
    单通道内存控制器一般都是64-bit的,8个二进制位相当于1个字节,换算成字节是64/8=8,再乘以内存的运行频率,如果是DDR内存就要再乘以2 •
    计算公式:  内存带宽=内存总线频率×数据总线位数/8
    示例:
      单通道DDR内存带宽计算   
        DDR4-4000:4000MHz*64bit/8=32000MB/S   DDR4-3600:3600MHz*64bit/8=28800MB/S   
      双通道:   
        DDR4-4000:4000MHz*64bit*2/8=64000MB/S 

在线备用内存技术
  当主内存或者是扩展内存中的内存出现多位错误时或者出现物理内存故障时,服务器仍继续运行
  由备用内存接替出现故障内存的工作
  备用的内存区域必须比其它区域的内存容量要大或相同

内存镜像
  镜像为系统在出现多位错或内存物理故障时提供数据保护功能,以保证系统仍能正常的运行
  数据同时写入两个镜像的内存区域
  从一个区域进行数据的读取 

10>.服务器硬件---硬盘 


硬盘基本参数:   
  容量
    容量是硬盘最主要的参数。单位有MB、GB、TB
  转速
    转速是指硬盘盘片每分钟转动的圈数,单位为rpm。现在硬盘的转速已经达 到10000rpm,15000rpm
  传输速率
    传输速率(Data Transfer Rate) 。硬盘的数据传输率是指硬盘读写数据的速 度,单位为兆字节每秒(MB/s)
  缓存
    硬盘缓存的目的是为了解决系统前后级读写速度不匹配的问题,以提高硬盘的读写速度 
  硬盘接口类型: 
    IDE接口:硬盘接口规范,采用ATA技术规范
    SCSI接口:应用于小型机上的高速数据传输技术
    SATA接口: Serial ATA,提高传输速率,支持热插拔
    SAS接口: Serial Attached SCSI,兼容SATA
    目前主流的硬盘接口为SATA和SAS接口 

机械硬盘结构:   存储介质(Media)——盘片     盘片的基板是金属或玻璃材质制成,为达到高密度高稳定的质量,基板要求表面光滑平整,不可有任何暇疵   读写磁头(Read Write Head)——磁头     磁头是硬盘读取数据的关键部件,它的主要作用就是将存储在硬盘盘片上的磁信息转化为电信号向外传输   马达( Spindle Motor
& Voice Coil Motor )     马达上装有一至多片盘片,以7200,10000,15000 RPM等定速旋转,为保持其平衡不可抖动,所以其质量要求严谨,不产生高温躁音
SSD硬盘:     SSD(Solid State Disk)泛指使用NAND Flash组成的固态硬盘。其特别之处在于 没有机械结构,以区块写入和抹除的方式作读写的功能,因此在读写的效率上,非 常依赖读写技术上的设计SSD读写存取速度快,性能稳定,防震性高,发热低,耐 低温,电耗低,无噪音。因为没有机械部分,所以长时间使用也出现故障几率也较 小。缺点:价格高,容量小,在普通硬盘前毫无性价比优势   
服务器的性能短板:     如果CPU有每秒处理1000个服务请求的能力,各种总线的负载能力能达到500个, 但网卡只能接受200个请求,而硬盘只能负担150个的话,那这台服务器得处理能 力只能是150个请求
/秒,有85%的处理器计算能力浪费了 在计算机系统当中,硬盘的读写速率已经成为影响系统性能进一步提高的瓶颈 各种硬件处理速度如下图所示: 

11>.服务器硬件---阵列卡 

Raid卡: 
  用来实现RAID的建立和重建,检测和修复多 位错误,错误磁盘自动检测等功能。RAID芯 片使CPU的资源得以释放

阵列卡(RAID卡)的作用
  阵列卡把若干硬盘驱动器按照一定要求组成一个整体、由阵列控制器管理的系统。
  阵列卡用来提高磁盘子系统的性能及可靠性

阵列卡参数
  支持的RAID级别
  阵列卡缓存
  电池保护

12>.服务器硬件---电源 

电源和风扇 
  支持服务器的电力负载
  支持冗余,防止电源故障
    故障预警和防止
    故障之前的预防性维护
    保证服务器持续运行
  电源子系统包括
    智能电源和风扇
  冗余电源和风扇

13>.服务器硬件---显卡 

  服务器都在主板上集成了显卡,但是显存容量不高,一般为16M或32M GPU: Graphic Processing Unit,即“图形处理器” 

14>.服务器硬件---网卡 

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

15>.服务器硬件---热插拔技术 

热插拔技术 
  称为热交换技术(Hot Swap),允许在不关机的状态下更换故障热插拔设备
  常见的热插拔设备:硬盘,电源,PCI设备,风扇等
  热插拔硬盘技术与RAID技术配合起来,可以使服务器在不关机的状态下恢复故障硬盘上的数据,同时并不影响网络用户对数据的使用

16>.服务器硬件---机柜 

 

机架式服务器-服务器放置在机柜中 通常使用的机柜是42U(约2米高)机柜( 1U=44.45mm) 外观尺寸一般为:宽600*深1000*高2000(mm) 

机架式服务器-机架及其配件如下图所示。

 

 

四.操作系统

1>.操作系统的分类

OS: 
  全称为Operating System,它是特殊的计算机软件程序,它管理计算机硬件,并提供一个人机交互界面,供用户更方便使用计算机资源。一个操作系统应该包含以下功能:
    硬件驱动
    进程管理
    内存管理
    网络管理
    安全管理
    文件管理

OS分类:
    服务器OS:
      RHEL,CentOS,Suse,Ubantu,Windows Server,AIX
    桌面OS:
      Windows 10,Mac OS,Fedora
    移动设备OS:
      Andriod,IOS,AliOS

2>.interface

接口:
  即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操作系统编译执行

3>.用户态和内核态

  计算机硬件资源都是操作系统内核进行管理的,目前操作系统都是基于多任务、多用户的。如果每个用户进程都可以随便访 问操作系统内核的模块,改变状态,那整个操作系统的稳定性、安全性都大大降低 

  为了将内核程序与用户程序隔离开,在硬件层面上提供了一次机制,将程序执行的状态分为了不同的级别,从0到3,数字越小,访问级别越高。0代表内核态,在该特权级别下,所有内存上的数据都是可见的,可访问的。3代表用户态,在这个特权级下,程序只能访问一部分的内存区域,只能执行一些限定的指令

4>.系统调用system call 

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

 

5>.Library function和system call 

6>.用户和内核空间 

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

内核空间:
  即Kernel space,是Linux内核的运行空间可以执行任意命令,调用系统的一切资源 

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

7>.编程语言 

一.语言分类
1>.计算机语言
  人与计算机之间交互的语言。
2>.低级语言  
  面向机器的语言,包括机器语言、汇编语言,不同的机器不能通用,不同的机器需要不同的机器指令或者汇编程序。
    机器语言:一定位数组成二进制的0和1的序列,称为机器指令。机器指令的集合就是机器语言。与自然语言差异太大,难学、难懂、难写、难记、难查错。
    汇编语言:用一些助记符号替代机器指令,称为汇编语言。ADD A,B 指的是将寄存器A的数与寄存器B的数相加得到的数放到寄存器A中。汇编语言写好的程序需要汇编程序转换成机器指令。汇编语言只是稍微好记了些,可以认为就是机器指令对应的助记符。只是符号本身接近自然语言。即
和机器语言一一对应,与硬件相关的特有代码、驱动程序开发。
3>.中级语言:
  C  
  系统级应用、驱动程序 
4>.高级语言: 
  java,python,go,php,Objective-C,C#  
  接近人类的自然语言和数学语言的计算机语言。高级语言首先要书写源程序,通过编译程序把源程序转换成机器指令的程序。1954年正式发布的Fortran语言是最早的高级语言,本意是公式翻译。人们只需要关心怎么书写源程序,针对不同机器的编译的事交给编译器关心处理,主要用于应用级程序开发,
5>.低级语言到高级语言的区别:
  (1)语言越高级,越接近人类的自然语言和数学语言。
  (2)语言越低级,越能让机器理解。
  (3)高级语言和低级语言之间需要一个转换的工具:编译器、解释器。
  (4)C、C++等语言的源代码需要本地编译。
  (5)Java、Python、C#的源代码需要被解释器编译成中间代码(Bytecode),在虚拟机上运行。

二.编译语言和解释器语言的区别:
  编译语言:
    把源代码转换成目标机器的CPU指令,即可以直接执行,速度快。
  解释语言:
    解释后转换成字节码,运行在虚拟机上,解释器执行中间代码,即边解释边执行,速度慢。

三.高级语言的发展
1>.非结构化语言
  (1)编号或标签、GOTO,子程序可以有多个入口和出口
  (2)有分支、循环
2>.结构化语言
  (1)任何基本结构只允许是唯一入口和唯一出口
  (2)顺序、分支、循环,废弃GOTO
3>.面向对象语言
  (1)更加接近人类认知世界的方式,万事万物抽象成对象,对象间关系抽象成类和继承
  (2)封装、继承、多态
4>.函数式语言
  (1)古老的编程范式,应用在数学计算、并行处理的场景。引入到了很多现代高级语言中
  (2)函数是“一等公民”,高阶函数

8>.服务器三大操作系统 

Windows: 
  Windows Server 2003 NT 5.2
  Windows Server 2008 NT 6.0
  Windows Server 2008 R2 NT 6.1
  Windows Server 2012 NT 6.2
  Windows Server 2012 R2 NT 6.3
  Windows Server 2016
  从Windows Server 2008 R2开始,Windows Server 2008 R2不再提供32位版本。

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

服务器操作系统市场如下图所示,Linux已成趋势。 

 

五.UNIX历史

 

1>.操作系统的演变

单用户系统 
批处理系统:提高系统运行效率
多道程序系统:程序控制CPU处理顺序
分时系统:提高系统利用率,操作系统控制CPU处理顺序
个人计算机:每人用户对应一个系统,廉价,方便,易用
分布式计算:每个用户对应多个系统,云计算,大数据处理

2>.兼容分时系统Multics

  为了进一步强化大型主机的功能,让主机的资源可以提供更多的使用者来利用, 所以在1964年,由贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE美国 通用电气公司)共同发起了Multics(多路信息计算系统)的计划,Multics计划的目的是让大型主机可以同时支持300个以上的终端机连线使用。不过,到了1969年前后,由于计划进度缓慢,资金也短缺,所以该计划虽然继续在研究, 但最终贝尔实验室还是选择了退出 

3>.Ken Thompson:一切为了游戏 

  1966年从加州大学伯克利分校毕业的Ken Thompson加入了贝尔实验室。参与了Multics系统的研发。他基于Multics开发了“star travel”游戏。不幸的是,1969年由于贝尔实验室退出Multics项目,这同时意味着Ken将没有机器可以再玩这个游戏了。面对此情此景,Ken作为一个创造者的本性立即体现了出来,于是他决定自己写一个操作系统来满足他玩游戏的需要,Ken找到了一台废弃已久的老式PDP-7,并在这台机器上重写了他的游戏。在这个过程中,Ken有了一个主意,要开发一个全新的操作系统。利用PDP-7上的汇编语言,Ken只花了一个月就编写完了操作系统的内核,在这个一个月中,他一周一个内核,一个文件系统,一个编辑器和一个编译程序的完成 

4>.Linux历史

  贝尔实验室与研制MULTICS的Ken Thompson,找来一台无人问津的废旧DPD-7,使用汇编语言设计简化版MUTICS.同事看到了戏称为UNICS,意思时删减的MULTICS,但最终拼写为UNIX。后来Dennis Ritchie也加入进来,他们就是Unix之父。随后,Unix被移植到DPD-11系列。移植过程中,对每一种机器都需要重写Unix。Dennis Ritchie就以B语言为基础,发明了C语言,两人重写了Unix操作系统。1974年他们发表了Unix的论文,并凭此获得了图灵奖。

  论文发表后,很多大学都想Bell实验室请求Unix拷贝,贝尔实验室母公司AT&T公司正在作为垄断企业受监管,不能经营计算机业务,但很愿意为大学提供Unix,从此Unix就从各个大学传播开来。

  加州大学伯克利分校是早期获得了全部源代码的大学之一,并开始对Unix进行改进发布,称为BSD(Berkeley Software Distrbution)。

  1984年,AT&T公司被拆分后,拿到了计算机服务销售许可,很快发布了Unix第一个商业版本System III,之后就发布了System V和后续改进版本。

  到了80年代后期,BSD和System V两套在一定程度上不兼容Unix版本,和大量的改版Unix,是的操作系统之上软件不通用。后来,IEEE制定了POSIX标准(Portable Operation System,IX只是个后缀)。该标准指定了Unix系统必须提供的库函数,例如open,read函数等。
UNIX历史
1965前后 Multics     
  贝尔实验室,麻省理工,通用电气发起 

1969 Unix雏形UNICS     
  Ken Thompson 汇编语言 B语言 

1973 正式命名为Unix     
  Dennis Ritchie C语言 

1977 BSD      
  Berkeley Software Distribution  伯克利大学(开源软件,要求使用者可以随意修改源代码,但使用者不允许告伯克利) 

1979 System V架构 版权声明      
  HP-UNIX IBM AIX “不对学生提供源码” 收回版权(开始要和BSD打官司,打官司期间会向法院申请BSD在版权未确认之前不允许发行软件,因此限制了UNIX的发展) 

1984年 Minix操作系统      
  Andrew S. Tanenbaum荷兰阿姆斯特丹自由大学计算机科学系(在BSD和System V打官司的时候,它的诞生为Linux诞生做了良好的铺垫) 
  Unix大而复杂,与其初衷相悖。荷兰阿姆斯特丹大学教授Andrew S. Tanenbaum出于教学目的,编写了一个类Unix的的又小又易懂的系统MINIX。
  该系统采用微内核设计,也就是内核中只提供最基本最少的功能,使系统可靠高效。内核只负责进程间信息传递,内存管理,文件系统使用用户进程实现。为了让Minix便于教学,Tanenbaum教授拒绝了在Minix中增加了更多功能,都被拒绝了。
  官方网站:http://www.minix3.org/

  一个芬兰学生Linus Torvalds决定编写一个类Unix系统,第一个版本0.01发布于1991年,它借鉴了Minix很多思想,但舍弃了Minix的微内核设计,将整个操作系统功能都包含在内核中(单内核,宏内核)。
  到1996年2.0版本时,Linux和Unix充分兼容,大量Unix软件迁移过来,它已经具备了完善的功能。
  官方网站:https://www.kernel.org/

  Linux使用了自由软件基金会的Richard Stanllman设计的GPL许可。GPL许可规定,用户可以自由使用,复制,修改,传播源代码和二进制代码,但以Linux内核为基础开发的产品不能只以二进制形式出售和分发,必须将源代码一并发出,要么可以随意索取源代码。
  90年代初,AT&T状告伯克利,导致了伯克利准备使用BSD开源许可发布FreeBSD系统禁止发行。这给Linux大发展带来了机遇。

 

六.开源协议

1>.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 of Unix-Replacing Daemons

2>.Linux起源

1991年的10月5日,Torvalds在comp.os.minix新闻组上发布消息,正式向外宣布他自行编写的完全自由免费的内核诞生 (Freeminix-like kernel sources for 386-AT) —FREAX,含义是怪诞的、怪物、异想天开 

类Unix的内核,在GPL下发布

官网:www.kernel.org

Linux操作系统:
  完整的类UNIX操作系统
  Linux内核+ GNU工具
  如:CentOS,Ubuntu,Android

3>.Linux发行版

slackware:
  SUSE Linux Enterprise Server (SLES) , OpenSuse桌面
debian:
  ubuntu,deepin(深度),mint
redhat:
  RHEL: RedHat Enterprise Linux, 每18个月发行一个新版本
  CentOS:兼容RHEL的格式
  中标麒麟:中标软件
  Fedora:每6个月发行一个新版本
ArchLinux:
  轻量简洁,遵循K.I.S.S.原则( keep it simple and stupid ),Manjaro
Gentoo:
  极致性能,不提供传统意义的安装程序,下载源代码在本机上编译安装软件
LFS:
  Linux From scratch 自制Linux
Android:
  kernel+busybox(工具集)+java虚拟机
Linux 分支参考网站:
  http://futurist.se/gldt/
  http://www.mindpin.com/d3js-demo/linux/
linux发行版排名:
  https://distrowatch.com/dwres.php?resource=popularity

4>. RED HAT红帽公司

  Marc Ewing早在卡内基梅隆大学读书的时候就戴着他祖父的红色曲球帽. Marc 在Marc Ewing大学常把自己的软件命名为Red Hat — Red hat 1, Red Hat 2用来区别他人的软件. 所以当他开始自己的Linux项目, 自然就会命名为Red Hat Linux。Ewing非常乐于帮助同学解决计算机问题 “你的朋友可能会说, 去跟我的朋友Marc交流. 谁是Marc? 他是红帽男孩. ” 所以, 至少在他们最亲密的朋友当中 , 红帽子成为了技术专家的同义词。
  1993年,Bob Young 建立ACC公司,营销Linux和UNIX的支持软件和书籍杂志
  1995年,Bob Young 收购了Marc Ewing的业务,合并后的ACC公司成为新的Red Hat软件公司,发布了Red Hat Linux 2.0
  2018年10月29日,IBM宣布将以约340亿美元收购开源软件和技术主要供应商红帽公司

5>.Linux内核

Linux的内核版本由3部分组成 
  主版本号
  次版本号
  末版本号
  打包版本号
  厂商版本

6>.Linux发行版本-红帽发行版本 

Linux 发行版的名称和版本号是由发行版的维护者决定的 
RedHat Enterprise Linux 7.5
由Red Hat公司发布 SUSE Linux Enterprise Server
12 SP2
由Novell公司发布 Debian Linux
9
由Debian维护社区发布 Android
8.0
由Google公司发布

 

 

七.开源协议

1>.开源 Open Source 

开源: 
  Open Source ,软件和源代码提供给所有人
  自由分发软件和源代码
  能够修改和创建衍生作品

软件分类:
  商业
  共享
  自由 free

2>.开源许可证

世界上的开源许可证,大概有上百种,比如:
  GPLv2, GPLv3, LGPL(lesser) :通用公共许可 copyleft
  Apache: apache
  BSD: bsd
  Mozilla
  MIT
  ......

3>.开源协议 

 

八.安装Linux操作系统

1>.Linux哲学思想 

  一切都是一个文件(包括硬件) 
  小型,单一用途的程序
  链接程序,共同完成复杂的任务
  避免令人困惑的用户界面
  配置数据存储在文本中

2>.获取发行版 

CentOS发行版相关下载地址:
  https://wiki.centos.org/Download
  http://mirrors.aliyun.com
  http://mirrors.sohu.com
  http://mirrors.163.com
  https://mirrors.tuna.tsinghua.edu.cn/centos/

Ubuntu
  http://cdimage.ubuntu.com/releases/

3>.获取虚拟化软件 

  虚拟机:用软件(如:vmware,virtualbox等)模拟硬件,选择种类有很多,根据你的操作系统选择相应的软件,以下软件只做推荐。
    Windows:
      推荐使用virtualbox,下载地址:https://www.virtualbox.org/wiki/Downloads
      推荐使用使用vmware,需要许可证,下载地址:https://my.vmware.com/cn/web/vmware/downloads

    Linux:
      推荐使用virtualbox,下载地址:https://www.virtualbox.org/wiki/Downloads
      推荐使用使用vmware,需要许可证,下载地址:https://my.vmware.com/cn/web/vmware/downloads

    Mac OS:   
      推荐使用virtualbox,下载地址:https://www.virtualbox.org/wiki/Downloads
      推荐使用Parallels Desktop For Mac,需要许可证,下载地址:https://www.parallels.com/cn/products/business/

4>.安装CentOS操作系统

  详情请参考:https://www.cnblogs.com/yinzhengjie/p/10366167.html

  查看基本硬件信息:https://www.cnblogs.com/yinzhengjie/p/11080600.html

  Linux基础入门:https://www.cnblogs.com/yinzhengjie/p/11281822.html

 

转载于:https://www.cnblogs.com/yinzhengjie/p/11263342.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30949361/article/details/101803317

智能推荐

874计算机科学基础综合,2018年四川大学874计算机科学专业基础综合之计算机操作系统考研仿真模拟五套题...-程序员宅基地

文章浏览阅读1.1k次。一、选择题1. 串行接口是指( )。A. 接口与系统总线之间串行传送,接口与I/0设备之间串行传送B. 接口与系统总线之间串行传送,接口与1/0设备之间并行传送C. 接口与系统总线之间并行传送,接口与I/0设备之间串行传送D. 接口与系统总线之间并行传送,接口与I/0设备之间并行传送【答案】C2. 最容易造成很多小碎片的可变分区分配算法是( )。A. 首次适应算法B. 最佳适应算法..._874 计算机科学专业基础综合题型

XShell连接失败:Could not connect to '192.168.191.128' (port 22): Connection failed._could not connect to '192.168.17.128' (port 22): c-程序员宅基地

文章浏览阅读9.7k次,点赞5次,收藏15次。连接xshell失败,报错如下图,怎么解决呢。1、通过ps -e|grep ssh命令判断是否安装ssh服务2、如果只有客户端安装了,服务器没有安装,则需要安装ssh服务器,命令:apt-get install openssh-server3、安装成功之后,启动ssh服务,命令:/etc/init.d/ssh start4、通过ps -e|grep ssh命令再次判断是否正确启动..._could not connect to '192.168.17.128' (port 22): connection failed.

杰理之KeyPage【篇】_杰理 空白芯片 烧入key文件-程序员宅基地

文章浏览阅读209次。00000000_杰理 空白芯片 烧入key文件

一文读懂ChatGPT,满足你对chatGPT的好奇心_引发对chatgpt兴趣的表述-程序员宅基地

文章浏览阅读475次。2023年初,“ChatGPT”一词在社交媒体上引起了热议,人们纷纷探讨它的本质和对社会的影响。就连央视新闻也对此进行了报道。作为新传专业的前沿人士,我们当然不能忽视这一热点。本文将全面解析ChatGPT,打开“技术黑箱”,探讨它对新闻与传播领域的影响。_引发对chatgpt兴趣的表述

中文字符频率统计python_用Python数据分析方法进行汉字声调频率统计分析-程序员宅基地

文章浏览阅读259次。用Python数据分析方法进行汉字声调频率统计分析木合塔尔·沙地克;布合力齐姑丽·瓦斯力【期刊名称】《电脑知识与技术》【年(卷),期】2017(013)035【摘要】该文首先用Python程序,自动获取基本汉字字符集中的所有汉字,然后用汉字拼音转换工具pypinyin把所有汉字转换成拼音,最后根据所有汉字的拼音声调,统计并可视化拼音声调的占比.【总页数】2页(13-14)【关键词】数据分析;数据可..._汉字声调频率统计

linux输出信息调试信息重定向-程序员宅基地

文章浏览阅读64次。最近在做一个android系统移植的项目,所使用的开发板com1是调试串口,就是说会有uboot和kernel的调试信息打印在com1上(ttySAC0)。因为后期要使用ttySAC0作为上层应用通信串口,所以要把所有的调试信息都给去掉。参考网上的几篇文章,自己做了如下修改,终于把调试信息重定向到ttySAC1上了,在这做下记录。参考文章有:http://blog.csdn.net/longt..._嵌入式rootfs 输出重定向到/dev/console

随便推点

uniapp 引入iconfont图标库彩色symbol教程_uniapp symbol图标-程序员宅基地

文章浏览阅读1.2k次,点赞4次,收藏12次。1,先去iconfont登录,然后选择图标加入购物车 2,点击又上角车车添加进入项目我的项目中就会出现选择的图标 3,点击下载至本地,然后解压文件夹,然后切换到uniapp打开终端运行注:要保证自己电脑有安装node(没有安装node可以去官网下载Node.js 中文网)npm i -g iconfont-tools(mac用户失败的话在前面加个sudo,password就是自己的开机密码吧)4,终端切换到上面解压的文件夹里面,运行iconfont-tools 这些可以默认也可以自己命名(我是自己命名的_uniapp symbol图标

C、C++ 对于char*和char[]的理解_c++ char*-程序员宅基地

文章浏览阅读1.2w次,点赞25次,收藏192次。char*和char[]都是指针,指向第一个字符所在的地址,但char*是常量的指针,char[]是指针的常量_c++ char*

Sublime Text2 使用教程-程序员宅基地

文章浏览阅读930次。代码编辑器或者文本编辑器,对于程序员来说,就像剑与战士一样,谁都想拥有一把可以随心驾驭且锋利无比的宝剑,而每一位程序员,同样会去追求最适合自己的强大、灵活的编辑器,相信你和我一样,都不会例外。我用过的编辑器不少,真不少~ 但却没有哪款让我特别心仪的,直到我遇到了 Sublime Text 2 !如果说“神器”是我能给予一款软件最高的评价,那么我很乐意为它封上这么一个称号。它小巧绿色且速度非

对10个整数进行按照从小到大的顺序排序用选择法和冒泡排序_对十个数进行大小排序java-程序员宅基地

文章浏览阅读4.1k次。一、选择法这是每一个数出来跟后面所有的进行比较。2.冒泡排序法,是两个相邻的进行对比。_对十个数进行大小排序java

物联网开发笔记——使用网络调试助手连接阿里云物联网平台(基于MQTT协议)_网络调试助手连接阿里云连不上-程序员宅基地

文章浏览阅读2.9k次。物联网开发笔记——使用网络调试助手连接阿里云物联网平台(基于MQTT协议)其实作者本意是使用4G模块来实现与阿里云物联网平台的连接过程,但是由于自己用的4G模块自身的限制,使得阿里云连接总是无法建立,已经联系客服返厂检修了,于是我在此使用网络调试助手来演示如何与阿里云物联网平台建立连接。一.准备工作1.MQTT协议说明文档(3.1.1版本)2.网络调试助手(可使用域名与服务器建立连接)PS:与阿里云建立连解释,最好使用域名来完成连接过程,而不是使用IP号。这里我跟阿里云的售后工程师咨询过,表示对应_网络调试助手连接阿里云连不上

<<<零基础C++速成>>>_无c语言基础c++期末速成-程序员宅基地

文章浏览阅读544次,点赞5次,收藏6次。运算符与表达式任何高级程序设计语言中,表达式都是最基本的组成部分,可以说C++中的大部分语句都是由表达式构成的。_无c语言基础c++期末速成