当前位置: 首页 > news >正文

Linux初始-历史(1)

文章目录

  • 前提概要
  • 聊聊计算机的历史
    • 1. 计算机
    • 2. 操作系统
  • 引入Linux(1-50.00)
    • 1. 特点
    • 2. 应用场景
    • 3. 版本

简介:这是Linux学习的第一篇文章,最主要的是阐述以后学习的方向和前提,顺便了解了解计算机和操作系统的历史。顺带说一下,历史全是我一个字一个字码出来的(可以当当故事看),描述可能会存在不恰当,有错误,不完全,还请各位尽量理解。另外标题上的数字不用管,没啥特别含义,听课的时间点,方便往后及时回顾

前提概要

  1. 学习方向
    • Linux系统和系统编程
    • Linux网络和网络编程
    • MySOL基础 + 进阶
  2. 学习目的
    • 将理解 + 实践 + 语言 + 硬件 互相打通,融会贯通
  3. 开发环境
    • 云服务器 + 命令行 + vim + gcc/g++ gdb(C语言)- 前期
    • vscode + 云服务器 + C++的方式-后期
  4. 关于系统版本的旋转
    • centos7 + Ubuntu 20.04/22.04(后期切换版本)
    • 关于这个系统版本Ubuntu的切换,先centos7版本用上一段时间后再说,暂时不管

聊聊计算机的历史

1. 计算机

  • 硅谷模式(商业模式或发展模式):美国当时这个前沿技术是服务于军工领域的(也可以说是军工领域研发的),可还要去发展其它领域,所以得想办法把军工领域之前研发出来的技术投放到民用,商用并转换成资本去研究其它方面的技术,比如计算机和网络就是从军工转向民用的一个典型代表,而国家就能通过税收的方式将前期投入的资金向企业征收回来(时代背景)
  • 当计算机这个前沿技术投放到民用时,从那时起诞生了大量的企业(IBM,苹果,微软,intel开始)。计算机从此刻也就划分为两条路,一条路是:大型计算机,另一条路是:小型计算机
  • 大型计算机(代表:IBM)。当时IBM认为计算机只能做成大型计算机,只能服务于企业,是用来处理大量的数据(比如银行相关一些数据),不过它也有自己的小型业务(比如ThinkPad),不过最后卖给了咱们国家的联想
  • 小型化,桌面化发展(代表:苹果,微软 + intel)。当初这批人认为以后每个人的桌面上都能摆上一台电脑,也都能用上自己开发的操作系统,因此关于计算机商用的理论就产生了很大的差异
  • 在90年代左右网络也就随之发展起来了,也诞生了很多相关企业(比如华为,高通,诺基亚等),因此做产品的有了(比如计算机,操作系统,相关硬件等等)。而网络也有了,就需要相关的通信运营商把设备架构起来(比如移动,联通等等)
  • 虽然这跟操作系统相关,放在这里补充也行,而在10多年前智能手机也就随之风靡起来了,当时苹果卖的苹果手机非常火爆,那当时谷歌这些做搜索引擎的公司就特别慌,它怕苹果手机卖的好,再搞个预装搜索软件,把自己公司给搞黄,因为这样它就没有流量入口了
  • 这时谷歌去找有没有将操作系统移植到手机上的公司,当时真找到了这家公司并且化重金买下来,直接将Linux操作系统移植到手机上并开源,用Linux操作系统绘制各种图形化界面,后来把这款操作系统就称为安卓
  • 现在手机阵营中有以安卓为代表手机系统和macOS互相在对抗,现在也能理解为啥华为手机卖的好才把操作系统换成自己的操作系统(这跟操作系统的生态位有关,后边解释)。那操作系统开源也有了,苹果为了在中国卖苹果手机,它就把它的生产链搬到了国内,那现在生产链也有了(它能造苹果,那基本上就能造国内的任一款手机,且质量不会差),只需要卖手机即可。所以就诞生了一大批手机企业(比如华为,小米)
  • 计算机的本质其实就将数据输入进去,再让它将结果给显示出来。输入数据当时是通过一些开关和按键输入。也就是一台大型计算机它会有很多的开关,你可以手动的拨动一些开关输入数据,再通过一些显示屏将结果显示出来。那随着时代的发展,要求计算机的效率高效化和便携化,除了硬件上要变得更加的复杂外,还有一个东西也就随之产生了,也就是操作系统

2. 操作系统

关于操作系统,咱举个好理解的例子,当养老院只有一个老人家的时候,每天管理它的生活非常的方便快捷,当养老院的老人家多了起来后,你一个人基本上就忙不过来了,此时就需要一个大管家将相关的任务(比如吃饭,睡觉,休息,娱乐活动)安排起来。计算机也是一样的,想通过几个单单的按钮就实现复杂的功能完全是不太现实,所以就需要一个角色去扮演处理数据,保存文件,链接外界设备等等相关任务 。计算机分成了两条线(大型与小型计算机),那操作系统肯定也会分成两条线,那60年代比较具有代表性的操作系统就有Unix(大型计算机),macOS与windows操作系统(小型计算机)

  • 当初苹果这家公司既做软件,也做硬件,所以苹果一直把自己定义为一家产品公司,所以它做的多,那它就需要招更多领域相关的人,还要把产品做好,那花费的也就很大,那早期卖出去的产品也比较的贵。当时苹果创始人乔布斯就参观了一个公司,那个公司好像是用了图形化界面去操作打印机,当时乔布斯就认为这个是能改变世界的东西,回去之后就立马成立了一个团队专门研发图形化界面的操作系统并配置到自己的产品上,当时也卖得非常得好
  • 而它的竞争对手也就是微软,看到了苹果搞得这么好,那还得了,立马就要开发出自己的图形化界面的操作系统,但微软一直认为自己是一家软件公司,现在将自己的定位变成了一家人工智能公司。所以硬件它做不了,那它就得去拉拢一个人,这个人最初就是IBM,可是IBM最初就认为计算机这个东西,老百姓压根就买不起,两家企业的理论不同那就根本无法一起合作共赢
  • 所以就把intel给拉过来了,那intel就做芯片,微软就做操作系统,两个人就合伙起来完成了计算机最重要的一环,而它们就需要一大堆电脑制造商,拿着windows操作系统和Intel的芯片打包成计算机产品给卖出去(比如早期的联想,华为等等) ,这三位联合起来就是为了对抗苹果这家公司
  • 而Unix操作系统就跟咱们这篇文章有很大的关系了,它是肯汤普森用汇编语言写的一款操作系统,可是汇编语言写的操作系统维护性太差了,而那时丹尼斯里奇发明了C语言,刚好他们两个人又是一对好朋友,那两个人就合伙起来将Unix用C语言进行重构了(70年代左右)
  • 随后操作系统和小型,桌面计算机这两条线一直发展。时间来到了1991年,地点:芬兰赫尔辛基大学,那早期的操作系统(比如macOS,windows,Unix等)都需要收费的,没有真正意义上的开源,那为啥咱用的windows也没收费呢?这是因为咱买的电脑它的运营商已经给咱们核算过了,已经付过钱了。(羊毛毕竟出在羊身上)可以这么去理解
  • 当时候计算机已经属于前沿领域,只要属于前沿领域就需要进入教育领域,因为需要去培养一大批的人才,这个领域才会继续前进,那新的计算机和操作系统就进入了校园,而芬兰赫尔辛基大学的一个学生雷纳斯托瓦兹就在自己大学的一个实验室用计算机,试完了一套操作系统,也就是Unix(那个时候实验室的计算机基本上是纯命令行的形式,不是现在的图形化界面这种),毕竟研发操作系统花了很多人力物力,所以需要收费。
  • 那当时他就心里想,我能不能自己去写一套操作系统(他认为操作系统是能普及人类的,愿景推动,人们都能够去使用)。所以他就写了一套操作系统,并且将这款操作系统挂到网上给开源,那就包括世界上最顶级的黑客,操作系统工程师等一些大佬就参与了这个项目,而这个项目就越来越大,雷纳斯就给这款操作系统命名Linux,也就是我们这篇文章以及以后学习的主角。LinuxLinux is Not Unix。(大概意思是:我前期就是借鉴了,用了你的操作系统,但我跟你是不一样的,我开源了),早期大代码量也只有1.1万行,但发展到现在已经称为了一个千万行的项目了

引入Linux(1-50.00)

1. 特点

  • 最大的特点:开源
    • Linux是一款开源的操作系统,那它就有一个最关键的点:源代码是公开的(点击此链接可以找到它的源代码),通过下面步骤就能找到源代码
      在这里插入图片描述
    • 开源大部分都是免费的,但不是全部都是免费的,比如redhat这款操作系统用的是Linux开源的操作系统,但是企业端使用是要付费的
    • 开源 vs 闭源。开源是以Linux操作系统为代表,闭源则是以macOS与windows操作系统为代表。咱们去谈一款操作系统好不好,那就体现在三个方面:稳定的,高效的,安全的
    • 首先Linux这款操作系统它一定是安全的,因为它开源就代表它一定会被更多人看到(这里想阐述一下bug:它不一定都是程序出错,不运行的问题,有时代码本身不稳定,效率低不高效,不安全都可以称之为bug)那被更多人看到后,源代码哪里有bug就会被提出共同修改(这可以是一种愿景推动,大家都会有一种贡献欲与分享欲,总有些这样的人存在的)
    • 最关键的是:解决问题的人之间没有利益冲突,所以产生的问题就会被尽快解决,那不稳定,不安全,不高效的bug就自然而然地也能被尽快解决
    • 关于闭源的操作系统先说结论,闭源的操作系统解决问题效率是比较低的,解决方案不一定优质。比如这闭源的一千万行代码分配给5000人去维护,那在维护的这段期间只有你一个人有看这段代码的权力,也没有人比你更懂这两万行代码(不包括离职的人),假使出现了某个问题,那基本上就只有你一个人能解决。
    • 假如这时出现了问题,且问题出现在两个人维护的代码中,那就很可能出现扯皮事件(有了利益冲突)。就算解决了问题,那也只是一个人的智慧,它不一定是最优解,所以效率比较低也是无法避免的,所以就会在代码中打补丁去解决问题,也是一款缝缝补补的操作系统
    • 那就可能会有这种疑惑,那开源的源代码被公开了是不是不安全啊,闭源的源代码没有人看到是不是更安全啊!首先一款闭源的操作系统它底层是如何处理用户的数据,有没有修改或盗取用户的数据,它有没有监守自盗,这个企业是很难自证清白(除非把源代码公开,那必然是不可能)。若源代码是公开的这个问题就不存在了,你要不信就看源代码啊,全是公开的,如何处理数据一目了然
    • 上面总结下来就一句话Linux是开源的,它更高效,更稳定,更安全
  • Linux的应用场景决定了它是专业工程师使用的:命令行(当然也是可以去安装图形化界面的)

2. 应用场景

  • 企业在选型操作系统一定会优先考虑开源的操作系统,也就是Linux。因为对于互联网企业这种面向用户群体基数大的企业,最重要的不是员工,不是场地,而是数据。如果用户数据大量丢失,那这个企业就直接垮了。而Linux它的优势反而是更高效,更安全,更稳定,bug少,后台服务器运行上几年都不会挂。
  • Linux操作系统基本是纯命令模式,不带图形化界面,内核比较少,可以被移植到各种小型设备上,所以可以被广泛应用于嵌入式领域
  • 企业也可以使用Linux作为计算或存储平台,云计算/大数据领域
  • 设备手机,平板,智能电视,车载系统等等
  • 最为重要的应用场景就是企业,它重点是用来企业为我们提供互联网服务的作为后台服务器上的操作系统,面试的时候会不会问Linux的相关问题呢?显而易见了

3. 版本

  • 技术线2.6.32,5.10.x,3.10.xx等等都可以称之为Linux内核的版本,随着版本的迭代,会不断的去更新特性,修正bug等等。解释一下上面的数字,第一个数字:2(主版本号),第二个数字:6(次版本号),第三个数字:32(修正次数)。第二个数字若为偶数则是稳定发布版,若为奇数则是测试版,当修正次数累计到一定次数的时候,可能引起次版本号的变化,它累计到一定的次数会引起主版本号的变化(这就是一次大的变化了 )
  • 商业产品线。比如说Centos,ubuntu,redhat等操作系统。可能你用Centos,他用ubuntu,你俩用的操作系统不一样,但它们两的底层Linux内核版本可能是一样的。就好比你用vivo,我用oppo,咱两手机不一样,但不都是安卓机吗。Centos里又有Centos6,Centos6.5等版本,但用的Linux内核可能是不一样的。两款操作系统它们的差别大都体现在:生态
    在这里插入图片描述
    • 这里单纯去讨论一款操作系统的好坏是没有意义的,它们的底层不都是Linux内核吗?也就是Linux内核是没有差别的,差别体现在生态上
    • 比如Centos刚刚推出来的时候是给工程师,企业员工用的,那经过长时间的发展,形成了自己的社区,有很多问题的解决方案和经验,有了官方文档,积攒和暴露出来的问题都被解决了,那生态就已经形成大差不差了
    • 而ubunto它图形化界面做的比较好,刚刚推出来,大部分的学生党在用,哎,我这个图形化界面哪里有问题去发帖问一下,大部分的问题能被得到有效解决,生态位也有了。
    • 但是这两款操作系统的受众群体是不同的,能简单的去讨论好坏吗?再举个例子,抖音和快手不都是互联网公司推出来的短视频软件,你喜欢用抖音,他就喜欢用快手,受众群体不同罢了。
    • 每款操作系统推出来都得找到自己的定位,它是不可能满足所有的用户群体的,找到侧重点,服务不同的受众群体,就会吸引到相对应的人,就会形成对应的社区,那之后它的指令,用途啊就各自为政了呗,真正比较操作系统差别的一定是它的生态,可别讨论哪款操作系统更稳定,更安全啊等等

相关文章:

  • Linux操作系统 使用信号量实现进程同步
  • OpenCV 第7课 图像处理之平滑(一)
  • 基于CEEMDAN-Transformer-BiLSTM的多特征风速气候预测的完整实现方案及PyTorch源码解析
  • Reactor模式详解:高并发场景下的事件驱动架构
  • 【redis】redis和hiredis的基本使用
  • 机器学习---各算法比较
  • 解决win10总是读硬盘
  • 测试计划与用例撰写指南
  • C++ queue对象创建、queue赋值操作、queue入队、出队、获得队首、获得队尾操作、queue大小操作、代码练习
  • MIT 6.S081 Lab9 file system
  • 计网5:HTTP/TCP的长连接和短连接的区别以及各自的应用场景
  • Spring Cloud Alibaba Sentinel安装+流控+熔断+热点+授权+规则持久化
  • C++单例模式与线程安全
  • GAN-STD:融合检测器与生成器的方法
  • 解决Visual Studio报“IntelliSense不可用,需设置TRACEDESIGNTIME = true“问题
  • 热编码(One-Hot Encoding)
  • Volatile的相关内容
  • 【MySQL系列】数据库死锁问题
  • mysql 导入导出数据
  • 人工智能概论(一)初见人工智能笔记
  • 需要企业网站建设/企业网搭建
  • 国外设计素材网站免费/营销型网站推广方案
  • 息县网站建设/南京seo关键词优化预订
  • 公司官网的作用/潍坊百度快速排名优化
  • 国外做动运服装的网站/重庆网站推广软件
  • 青岛专业建设网站/新站整站快速排名