Linux的历史
Linux的历史
前言:
关于Linux,你可能只是听说过它是一款操作系统,也许你还知道它是开源的,但在日常生活中,你更熟悉的是Windows。
那么我们为什么要了解、学习Linux,看完这一篇,你也许可以从中寻找到答案。
一.计算机的发源
1946年2月14日,第一台超大型计算机埃尼阿克在美国诞生了,该计算机体型庞大的原因是当时组成计算机的部件本身很大。
计算机之所以出现,是因为当时美国计算导弹轨迹的需要。如果是人们去计算导弹的轨迹,导弹落地爆炸了,你还在纠结从哪里算起。
正是因为算力的欠缺,我们需要又快,又准的工具,这就诞生了计算机。
1.1计算机硬件早期
那么计算机是一开始就像我们现在一样,小型、运行速度块,操作简便的吗?答案显然不是。
早期计算机体积大、运行速度慢、操作门槛高、造价高昂。然而随着科技的发展以及摩尔定律(伴随着计算机的发展史)的作用,计算机慢慢小型化,能耗变低、成本减少。
随着科学家和各大计算机硬件公司的发力,计算机搬进了金融,政府等需要大量数据管理的地方,最后逐渐出现在普通人的视野里。
计算机硬件的技术,工艺发展是一件令人愉快的事,但是,不论是芯片、主板、硬盘等,它们本质上就一堆硬件,对于大部分人来说,直接操纵硬件是不太可能的,所以,一款控制计算机的软件问世了。
1.2操作系统
在对计算机简便操作的需求下,比较靠早期的操作系统Unix(上个世纪50、60年代)就诞生了,这里插个小插曲,操作系统并不是等硬件发展超前后才开始的,而是在计算机硬件发展的同时,另一批搞技术的人也在致力于计算机的发展。
他们写的这款跑在计算机上的软件就是为了让我们能够在计算机上自动化做一些操作,比如我们用C语言打印"hello world":
站在语言角度,我们就是用了一个库函数,站在硬件角度,我们将这串字符串打印在了显示器(硬件)上。我们将软件上编程的信息,写在了硬件上,得益于计算机语言和操作系统!
对于我们来说,没有操作系统,计算机相当于一堆废铁。
1.3语言的发展
在Unix诞生初期,世界上还没有C语言。最初对计算机的控制,经历着手动掰弄硬件控制开关,打孔纸带(按规则编号的二进制序列),再后来才出现了汇编语言。
第一版的Unix操作系统使用汇编语言写的,它的鼻祖是肯汤普森,后来丹尼斯里奇(C语言之父)发明了C语言,他们用C语言一起写了C语言版的Unix。这时,计算机上已经慢慢搭载上Unix操作系统了
二.Linux的发展
计算机在发展的同时,除了在现实中解决问题,还能继续搞科研。当时配备有优质计算机资源的都是顶级的高校,那一年,在芬兰的赫尔辛基大学的实验室中,接触到计算机和Unix操作系统的这位少年,觉得操作系统这种软件不应该收费,回到宿舍的他,仿照着Unix编写着自己的一款操作系统,命名为Linux(1991)—Linux is not unix。
并且把这款操作系统开源,他的名字叫做雷纳斯托瓦兹。
总结:Linux是一款用C语言写的(有少量汇编),源代码公开的操作系统。
2.1理解开源
为什么会有人参与开源项目(无偿)的人,在90年代,能参与操作系统开发的人,他们并不缺钱,这是其一。其二是,一款能改变世界的操作系统,对顶级的工程师来说,当这款软件成功写完并开源出来,必定能造成不凡的影响,因此他们愿意这么做。
开源的优势:代码稳定,改bug效率高,安全。
一款极具影响力的源代码公开的项目,其客户基数很大,分别有使用、学习、观看、修改、提意见的人,他们发现问题后,思想的碰撞,最后一个优秀的改正代码出现后,就能被替到源代码bug处,这一流程是自动、高效的。
而开源项目之所以安全,是因为源代码面前无谎言,怕得不是操作系统有bug,而是怕人为在操作系统里加"bug",闭源的项目安全性不得而知。
2.2Linux的重要性
Linux从一开始的一万行代码,到如今的5000-7000万行代码,经过不断优化,已然成为好用、大型的操作系统之一。
以前有这样一个故事:在C语言版的Unix搭载在计算机上可行之后,各大软件公司纷纷效仿,制作自己的操作系统。有苹果公司、微软等,由于苹果系统只在苹果产品上使用,且苹果较为昂贵,Windows得以占领较大的市场,此时,微软在自己的操作系统中,内置了IE浏览器,这时谷歌,百度等互利网公司感受的威胁,谷歌迅速收购了一个叫做Linux小型化的团队,移植到手机上立即开源,就成为了如今的安卓,随后我国大批手机厂商学着安卓系统制造智能手机。
企业因为安全性,使用得是Linux系统做后台,手机的底层也是Linux,所以学习Linux是必要的。
三.Linux发行版
Linux的发行版分两种:一种是商业发型版、一种是技术发行版。
商业发型版有:Ubuntu、centOS、redhat、kail、红旗等。它们相当于是Linux的品牌,就像运动鞋一样,一些是登山用,一些是跑步用,但都是运动类的。
技术发行版:技术发型版是操作系统的版本。
相关文章:
Linux的历史
Linux的历史 前言: 关于Linux,你可能只是听说过它是一款操作系统,也许你还知道它是开源的,但在日常生活中,你更熟悉的是Windows。 那么我们为什么要了解、学习Linux,看完这一篇,你也许可以从…...
软考高级系统架构设计师系列论文真题八:论企业集成平台的技术与应用
软考高级系统架构设计师系列论文真题八:论企业集成平台的技术与应用 一、论企业集成平台的技术与应用二、找准核心论点三、理论素材准备四、精品范文赏析1.摘要2.正文3.总结软考高级系统架构设计师系列论文之:百篇软考高级架构设计师论文范文软考高级系统架构设计师系列之:论…...
[H5动画制作系列] 路径引导动画 Demo
代码参考1: <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>路径引导动画 Demo1</tit…...
[React] Context上下文的使用
文章目录 1.Context的介绍2.为什么需要Context3.Context的使用 1.Context的介绍 Context旨在为React复杂嵌套的各个组件提供一个生命周期内的统一属性访问对象,从而避免我们出现当出现复杂嵌套结构的组件需要一层层通过属性传递值得问题。 Context是为了提供一个组…...
高云FPGA系列教程(9):cmd-parser串口命令解析器移植
文章目录 @[toc]cmd-parser库简介cmd-parser库源码获取GW1NSR-4C移植cmd-parser实际测试cmd-parse命令解析器优化本文是高云FPGA系列教程的第9篇文章。 上一篇文章介绍片上ARM Cortex-M3硬核处理器串口外设的使用,演示轮询方式和中断方式接收串口数据,并进行回环测试。 本文…...
PHP8的静态变量和方法-PHP8知识详解
我们在上一课程讲到了public、private、protected这3个关键字,今天我们来讲解static关键字,明天再讲解final关键字。 如果不想通过创建对象来调用变量或方法,则可以将该变量或方法创建为静态变量或方法,也就是在变量或方法的前面…...
用AI写文章被百家号封禁
我是卢松松,点点上面的头像,欢迎关注我哦! 千万不要用AI创作,尤其是原文照搬!不要用ai,不要用,不要用!重要的事情说三遍。 近日ID名为“爸爸在家赚钱”用AI写了4-5篇文章投稿在百家号,随后百度就把他帐号…...
JVM--Java类加载器笔记
Java类加载器 代码经过编译变成了字节码打包成 Jar 文件。让 JVM 去加载需要的字节码,变成持久代/元数据区上的 Class 对象,接着执行程序逻辑。 类声明周期和加载过程 步骤:加载->链接(校验->准备->解析)-…...
【在Ubuntu部署Docker项目】— PROJECT#1
一、说明 让我们深入了解 Docker。用docker构建web服务器。我们正在计划开发JavaScript API,建立MySQL数据库,并创建一个 PHP 网站使用 API 服务。Php Node.js Mysql — DockerSeries — Episode#1 二、系统架构概述 我们要构建的容器,是三…...
【学习笔记】LOJ #6240. 仙人掌
毒瘤题😅 简单版本 CF235D Graph Game 首先,考虑建立圆方树,然后对于一个点双(简单环)上的两个点,有两条路径可以到达 和简单版本类似,考虑容斥。即枚举点对 i , j i,j i,j之间 哪些路径是联…...
java通过接口转发文件(上传下载)
java接口转发上传的文件 RequestMapping(value "/XXXX/fileUpload", method RequestMethod.POST) public String getFileUpload2(RequestParam("file") MultipartFile file, HttpServletRequest request) public static String hotMapPost3(String ur…...
Docker-部署docker-compose以及管理服务
部署docker-compose以及管理服务 文章目录 部署docker-compose以及管理服务[TOC] 前言一、docker-compose是什么?1、介绍2、 功能 二、安装docker-compose1.yum直接安装2.二进制安装3.pip安装 三、docker-compose部署服务1.编写docker-compose.yml文件 总结 前言 D…...
Android - Monkey 测试应用出现Crash报错IllegalStateException
问题描述 平时使用Lottie动画都是正常的,没出过这个crash问题,看下的报错信息,代码中文件夹也设置了,没看出来问题。 AndroidRuntime: java.lang.IllegalStateException: You must set an images folder before loading an imag…...
Spring源码分析 事务 实现原理
文章目录 什么是事务Spring事务管理Spring事务实现原理事务管理器事务定义事务的开启事务核心方法业务代码使用事务TransactionInterceptor 什么是事务 一般所指的事务是数据库事务,是指一批不可分割的数据库操作序列,也是数据库并发控制的基本单位。其…...
ADS-B及雷达显示终端8.3
新版本功能升级主要有如下: 1、地图更新 在上一版本8.2中使用的高程地图为由SRTM经过地形晕渲后,生成地形图片,然后对图片进行贴图,一一按规定位置、大小将地形图贴至底图上,而后在底图上进行二维矢量地图的绘制,包括…...
第二章:最新版零基础学习 PYTHON 教程(第二节 - Python 输入/输出–从 Python 控制台获取输入)
目录 Python 中的控制台是什么? 接受来自控制台的输入: 1. 将输入类型转换为整数:...
linux安装配置 flume
目录 一 解压安装包 二 配置部署 (1)修改配置 (2)下载工具 (3)创建配置文件 (4)启动监听测试 (5)flume监控文件 一 解压安装包 这里提供了网盘资源 链…...
SSM - Springboot - MyBatis-Plus 全栈体系(十五)
第三章 MyBatis 二、MyBatis 基本使用 4. CRUD 强化练习 4.1 准备数据库数据 首先,我们需要准备一张名为 user 的表。该表包含字段 id(主键)、username、password。创建SQL如下: CREATE TABLE user (id INT(11) NOT NULL AUT…...
win10默认浏览器改不了怎么办,解决方法详解
win10默认浏览器改不了怎么办,解决方法详解_蓝天网络 在使用Windows 10操作系统时,你可能会遇到无法更改默认浏览器的情况。这可能是因为其他程序或设置正在干扰更改。如果你也遇到了这个问题,不要担心,本文将为你提供详细的解决…...
C语言连接MySQL并执行SQL语句(hello world)
1.新建一个控制台项目 参考【VS2022 和 VS2010 C语言控制台输出 Hello World】VS2022 和 VS2010 C语言控制台输出 Hello World_vs2022源文件在哪_西晋的no1的博客-CSDN博客 2.安装MySQL 参考【MySQL 8.0.34安装教程】MySQL 8.0.34安装教程_西晋的no1的博客-CSDN博客 3.复制MySQ…...
react实现动态递增展示数字特效
在可视化展示界面时有一种场景,就是页面在初始化的时候,有些数字展示想要从某个值开始动态递增到实际值,形成一种动画效果。例如: 写一个数字递增的组件,有两种方式:1.固定步长,代码如下&#x…...
读取.nrrd和.dcm文件格式医学图片可视化与预处理
nrrd数据格式 MITK默认会将医学图像保存为格式为NRRD的图像,在这个数据格式中包含: 1、一个单个的数据头文件:为科学可视化和医学图像处理准确地表示N维度的栅格信息。 2、既能分开又能合并的图像文件。 nrrd_options输出 {u’dimension’:…...
VS CODE中的筛选器如何打开?
最近更新了vscode1.82版本,发现在git管理界面有一个“筛选器”功能,十分好用,后来关掉了,找了好久都没有找到办法打开这个筛选器功能,今天无意中不知道按到了哪个快捷键,打开了,就是下图这个&am…...
vue 多环境文件配置(开发,测试,生产)
1.经常我们在开发时候会有不同环境,要代理的路由等等都会出现不同 配置一下三个文件打包的时候,执行三个不同的指令就会打包不同的环境 npm run build:dev npm run build:test npm run build:prodpackage.json 中配置scripts 指令 以,env.development…...
在服务器上搭建pulseaudio的运行环境,指定其运行目录、状态目录和模块目录
如果想在搭建 PulseAudio 的服务器上指定其运行目录、状态目录和模块目录,可以通过修改 PulseAudio 的配置文件来实现。一般情况下所涉及的配置文件和相关选项如下所示: 1、配置文件路径:通常情况下,PulseAudio 的配置文件位于 /…...
[Qt]QListView 重绘实例之一:背景重绘
0 环境 Windows 11Qt 5.15.2 MinGW x64 1 系列文章 简介:本系列文章,是以纯代码方式实现 Qt 控件的重构,尽量不使用 Qss 方式。 《[Qt]QListView 重绘实例之一:背景重绘》 《[Qt]QListView 重绘实例之二:列表项覆…...
国庆周《Linux学习第二课》
Linux开篇指南针环境安装(第一课)-CSDN博客 Linux详细的环境安装介绍在上面 第一 环境准备过程 安装过程...
6年前的麒麟980依旧可以再战
麒麟980,使用6年后的今天,我对它进行跑分测试。 在bench旗下的VRMark跑分中,麒麟980荣获5023分,同款跑分APP,要知道同一时期的高通骁龙855只有4937分, 打游戏,以和平精英为例,帧率3…...
JS计算任意多边形的面积
计算任意多边形的面积需要使用一些几何数学公式。具体的计算方法取决于多边形的形状和提供的顶点坐标。下面是一个通用的 JavaScript 函数,用于计算任意多边形的面积,假设你提供多边形的顶点坐标数组: function calculatePolygonArea(vertic…...
ios xcode15 navigationController?.navigationBar.isHidden = false无效
xcode 15 用 navigationController?.setNavigationBarHidden(true, animated: false)隐藏navigationBar后,再调用 navigationController?.navigationBar.isHidden false无效 解决 用 navigationController?.navigationBar.isHidden true隐藏navigationBar...
上海做什么工作最赚钱/关键词排名优化流程
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼全国计算机二级考试大题把题目给定程序删除了,正确运行,这样会不会给分?50、请编写函数fun, 函数的功能是: 将M行N列的二维数组中的数据, 按列的顺序依次放到一维数组中。函数fun中给出的语句仅供…...
婚纱网站布局ppt怎么做/seo关键词推广公司
看了很多文档资料和博文心得分享,各有千秋。总结一下个人理解,以便后期查阅。 首先一开始不是特别了解微服务的骨架模式,查阅资料了解微服务可以说是: 微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自…...
为什么python不适合开发网站/郑州seo哪家好
本篇文章主要为大家介绍下php如何获取本周的所有日期,或者最近七天的所有日期。希望可以帮助到有需要的朋友#####获取本周所有日期:/*获取本周所有日期*/function get_week($time , $formatY-m-d){$time $time ! ? $time : time();//获取当前周几$we…...
建网站申请/百度投放平台
服务提供者暴露一个服务的详细过程 首先ServiceConfig类拿到对外提供服务的实际类ref(如:HelloServiceImpl),然后通过ProxyFactory类的getInvoker方法使用ref生成一个AbstractProxyInvoker实例,到这一步就完成具体服务到Invoker的转化。接下来就是Invoke…...
wordpress3.7.1下载/成品视频直播软件推荐哪个好用
命令格式: ssh 用户名IP 示例: ssh root192.168.1.10 回车,然后根据提示输入登陆密码即可。转载于:https://www.cnblogs.com/chengyujia/p/10730161.html...
网络营销网站建设公司/搜索引擎营销方案
注意与最长公共子序列的不同 还是对状态的定义不是很了解 #include<cstdio> #include<cstring> #include<algorithm> using namespace std;const int maxn 100 10; char line1[maxn]; char line2[maxn];int d[maxn][maxn]; int vis[maxn][maxn];int dp(int…...