跟着AIGC学Linux:简介(一)

2023-06-26 10:57:03

1.Linux内核的历史

Linux内核最初由一位名叫Linus Torvalds的芬兰计算机科学家于1991年创建。当时,Torvalds是一名赫尔辛基大学的学生,他在寻找一个类似于UNIX操作系统的替代品时开始着手开发Linux内核。他的目标是创建一个免费且开放源代码的操作系统,这使得任何人都可以自由地使用、修改和分发它。

Linux内核是操作系统的核心组成部分,它是连接硬件和软件之间的桥梁。它提供了许多基本功能,如进程管理、内存管理、设备驱动程序和文件系统支持等。Linux内核是一个高度可定制的软件,可以根据不同的需求进行修改和扩展。

2.基本概念

Linux是一个基于UNIX的操作系统,它具有许多独特的特点。首先,Linux是开放源代码的,这意味着任何人都可以查看、修改和分发它的源代码。这种开放性促进了全球范围内的开发者社区的合作和贡献,使得Linux不断得到改进和完善。

其次,Linux是多用户、多任务的操作系统。它可以同时支持多个用户进行登录和操作,并且能够同时运行多个程序。这种多任务能力使得Linux成为服务器和大型计算机环境中的首选操作系统。此外,Linux拥有良好的稳定性和安全性。它在设计和开发过程中注重稳定性和安全性,并且拥有一个强大的权限管理系统,可以控制用户对系统资源的访问权限。最后,Linux具有广泛的硬件支持。它可以在各种硬件平台上运行,从个人计算机到嵌入式设备、服务器和超级计算机等。

3.发行版

笔者最先是入坑捣鼓了Archlinux,然后Manjaro、Ubuntu、Kubuntu、Deepin、CentOSKali linux,太多太多,各具特色,百家争鸣。不同系统大同小异,根据不同的使用需求去选择不同的发行版,以上笔者仅为了个人折腾乐趣,先后次序不具教学意义。

# 一条命令查看Linux发行版的真实用户份额:
wget -qO - linux.top/o|sh

以下为软件包统计,https://repology.org/repositories/statistics/total,根据total量排序统计结果,NixOS系统无愧于新晋之神,不过笔者在2020年已经退坑折腾了,当年Archlinux还是蝉联榜首的。(这里讨论的是软件包支持数量而非发行版用户量,目前身边用的最多的还是ubuntu和centos)

4.Linux应用领域

  1. 服务器和数据中心:Linux在服务器和数据中心领域得到了广泛应用。由于其稳定性、安全性和可靠性,许多互联网公司、企业和组织选择在其服务器上运行Linux操作系统。它被用于托管网站、数据库、云计算、大数据处理等关键任务。

  2. 嵌入式系统:Linux在嵌入式系统领域也得到了广泛应用。嵌入式Linux可以在各种设备上运行,如智能手机、平板电脑、智能电视、路由器、机顶盒等。它提供了一个灵活的操作系统平台,可以满足不同设备的需求。

  3. 科学研究和超级计算:Linux在科学研究和超级计算领域也发挥着重要作用。许多科学实验室、研究机构和大学使用Linux作为其研究和计算平台。Linux的开放性和可定制性使得科学家们可以根据自己的需求进行定制和优化。

  4. 移动设备和智能手机:虽然移动设备市场主要由iOS和Android操作系统主导,但Linux在移动设备领域也有一席之地。例如,Android操作系统是基于Linux内核开发的,并且许多智能手机制造商使用Linux作为其移动设备的底层操作系统。

  5. 软件开发和编程环境:Linux是许多开发人员和程序员首选的操作系统。它提供了丰富的开发工具、编程语言支持和开发环境。许多开发人员喜欢Linux的自由和灵活性,以及开源社区提供的丰富资源和支持。

但是第一大用途还是作为服务器使用:

  • LAMP/LNMP堆栈:LAMP(Linux + Apache + MySQL + PHP)和LNMP(Linux + Nginx + MySQL + PHP)是两种常见的Web服务器堆栈。它们将Linux作为操作系统,与Apache或Nginx作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本语言进行组合。这些堆栈提供了强大的Web开发环境,适用于构建和托管各种动态网站和Web应用程序。

  • LEMP堆栈:LEMP(Linux + Nginx + MySQL/MariaDB + PHP)是类似于LAMP堆栈的替代方案,它使用Nginx作为Web服务器,MySQL或MariaDB作为数据库,PHP作为服务器端脚本语言。LEMP堆栈被广泛用于高性能、高并发的Web应用程序和网站。

  • MEAN/MERN堆栈:MEAN(MongoDB + Express + Angular + Node.js)和MERN(MongoDB + Express + React + Node.js)是一种现代的全栈JavaScript开发方案。它们使用Linux作为操作系统,与MongoDB(或MERN中的MySQL/MariaDB),Express作为后端框架,Angular或React作为前端框架,以及Node.js作为服务器端运行时环境。这些堆栈适用于构建现代的单页应用程序和Web服务。

  • Linux服务器与Docker:Docker是一种流行的容器化平台,可以轻松地在Linux服务器上部署和管理容器化应用程序。使用Docker,您可以将应用程序和其依赖项打包到容器中,并在不同的Linux服务器上运行它们,而无需担心环境差异。这为应用程序的部署、扩展和管理提供了更好的灵活性和可移植性。

5.Linux VS Windows

在全球操作系统用户统计中,Windows是占第一的,Linux始终还是小众用户。这里不讨论Mac系统,其实Mac系统也是基于unix系统的,不过跟Linux是两条分支前者走商业化路线,后者继续开源。

用一张长图从九个方面对比Linux和Windows:https://www.educba.com/linux-vs-windows/

横向对比表格:

特性WindowsLinux
开发商微软公司Linus Torvalds,社区
编程语言C++,汇编汇编语言,C
操作系统系列图形操作系统系列类Unix操作系统系列
许可证专有商业软件GPL(GNU通用公共许可证)v2等
默认用户界面Windows外壳Unix外壳
内核类型Windows NT家族有一个混合内核;Windows CE也有混合内核;Windows 9x及更早系列具有单片内核整体内核
源模型闭源软件;可用源(通过共享源倡议)开源软件
初始发行1985年11月20日,比Linux更古老1991年9月17日
营销目标主要是个人计算主要是云计算、服务器、超级计算机、嵌入式系统、大型机、手机、PC
可用语言138种语言多种语言
平台ARM、IA-32、Itanium、x86-64、DEC Alpha、MIPS、PowerPCAlpha、H8/300、Hexagon、Itanium、m68k、Microblaze、MIPS等
官方网站微软Linux
包管理器Windows Installer (.msi)、Windows Store (.appx)打包在Linux发行版 (distro)中
区分大小写在Windows中文件名不区分大小写Linux中文件名区分大小写
开机只能从主磁盘完成可以从任何磁盘完成
默认命令行Windows PowerShellBASH
使用方便Windows具有丰富的GUI,技术人员和非技术人员都可以轻松使用Linux主要由技术人员使用,对于普通用户来说学习Linux将需要时间
安装易于设置,安装过程中需要的用户输入要少得多设置复杂,需要大量用户输入
可靠性Windows的可靠性不如Linux,但近年来得到了很大的提高高度可靠和安全
定制化Windows的自定义选项非常有限Linux有多种发行版可根据需求高度定制
软件Windows拥有最多的桌面用户,从第三方开发商获得了最多的商业软件;其中许多软件与Linux不兼容;在视频游戏方面领先Linux有许多免费且易于安装的软件包;与自由软件兼容
支持Linux和Windows都提供广泛的支持;Windows 10支持更容易获得Linux拥有开源社区的协助,支持更广泛
更新Windows更新发生在当前时刻,可能有时对用户不方便;安装需要更长时间且需要重新启动用户可以完全控制何时进行更新;安装时间较短且无需重新启动
访问并非每个用户都可以访问源代码,只有选定的团队成员可以访问源代码用户可以访问内核源代码并进行修改,这样可以更快修复操作系统中的错误。然而,开发人员可能会利用漏洞获得不当利益
隐私Windows收集用户数据Linux发行版不收集用户数据
价格Microsoft Windows的许可证价格通常在99.00美元至199.00美元之间;Windows 10为现有Windows用户提供了免费升级,但该优惠已经过期;Windows Server 2016数据中心版起价为6155美元Linux许可证完全免费;但需要Linux支持的组织可以选择付费订阅,例如Red Hat和SUSE;在基础设施成本方面,其他条件相同(本地或云上),由于Linux轻量级的特性,我们可以预期在Linux上的吞吐量比Windows高出20%
更多推荐

从利用Arthas排查线上Fastjson问题到Java动态字节码技术(下)

上一篇从Arthas的源码引出了Java动态字节码技术,那么这一篇就从几种Java字节码技术出发,看看Arthas是如何通过动态字节码技术做到无侵入的源码增强;Java大部分情况下都是解释执行的,也就是解释.class文件,所以如果我们想对原代码进行增强的话,直接接的手段便是从源文件.java入手,使用静态代理、动态代

【微信小程序开发】宠物预约医疗项目实战-环境配置与Vant UI集成

第一章宠物预约医疗项目实战-环境配置与VantUI集成文章目录前言一、VantUI是什么?二、使用步骤2.1安装node.js2.2通过npm安装vant2.3修改app.json2.4修改project.config.json2.5构建npm包2.6使用组件全局引入和局部引入全局引入局部引入前言Vant是一个轻量、可

数据中台基本概念

数据中台数据中台(DataMidway)是一个用于集成、存储、管理和分析数据的中心化平台或架构。它的目标是将组织内散布在各个系统、应用程序和数据源中的数据整合到一个可统一访问和管理的中心位置,以支持数据驱动的决策制定和业务需求。数据中台具备异构数据统一计算、存储的能力,同时让分散杂乱的数据通过规范化的方式管理起来。数据

虹科方案 | LIN/CAN总线汽车零部件测试方案

文章目录摘要一、汽车零部件测试的重要性?二、虹科的测试仿真工具如何在汽车零部件测试展露头角?三、应用场景**应用场景1:方向盘开关的功能测试****应用场景2:各类型电机的控制测试****应用场景3:RGB氛围灯的功能测试**四、虹科LIN总线相关产品详情总结摘要虹科的LIN/CAN总线汽车零部件测试方案是一款优秀的集

Python 基于人脸识别的实验室智能门禁系统的设计,附可视化界面

1简介本基于人脸识别的实验室智能门禁系统通过大数据和信息化的技术实现了门禁管理流程的信息化的管理操作。平台的前台页面通过简洁的平台页面设计和功能结构的分区更好的提高用户的使用体验,没有过多的多余的功能,把所有的功能操作都整合在功能操作的导航栏之中。更加突出业务的展示和详细的功能操作,使用户在使用本平台时功能一目了然。在

Tailwind CSS 初学者指南

TailwindCSS是一个实用程序优先的CSS框架,允许您快速构建现代网站,而无需离开HTML。它是Web开发社区中最流行和使用最广泛的CSS框架之一,每月下载量超过250万次1。在本文中,我们将探讨TailwindCSS2023的路线图,以及如何开始学习和使用这个神奇的工具。文章目录什么是TailwindCSS?为

数据结构——时间复杂度与空间复杂度

目录一.什么是空间复杂度与时间复杂度1.1算法效率1.2时间复杂度的概念1.3空间复杂度的概念二.如何计算常见算法的时间复杂度2.1大O的渐近表示法使用规则三.如何计算常见算法的空间复杂度3.1大O渐近表示法3.2面试题——消失的数字3.3面试题——旋转数组一.什么是空间复杂度与时间复杂度1.1算法效率分为两种,一种是

Fiddler实现android手机抓包

目录一、fiddler的简介二、安装fiddler三、fiddler设置1.设置HTTPS2.设置允许远程连接3.重启fillder,使得配置生效4.查看端口监听四、android端设置1、首先查看电脑的IP地址,确保手机和电脑在同一个局域网内2、设置代理五、抓包测试原文链接一、fiddler的简介fiddler是位于

✔ ★算法基础笔记(Acwing)(二)—— 数据结构(17道题)【java版本】

数据结构1.单链表模板1.单链表(7分钟)2.双链表模板1.双链表3.模拟栈1.模拟栈(一个数组即可)2.表达式求值(20分钟)4.队列tt=-1,hh=0;1.模拟队列5.单调栈1.单调栈(4分钟)3.146.单调队列1.滑动窗口例题(10分钟)7.KMP1.KMP字符串(10分钟)二刷体会★三刷体会ne表示算上第一

网络协议 — LLDP 数据链路发现协议

目录文章目录目录LLDPLLDPDUEthernetIILLDPDUSNAPLLDPDULLDPDUTLVs基本TLV802.1定义的TLV802.3定义的TLV802.3定义的LLDP-MEDTLVLLDP消息流程LLDP协议栈LLDPLLDP(LinkLayerDiscoveryProtocol,链路层发现协议)是

Mysql存储-变量、函数、游标、判断、循环

存储过程(procedure)1、介绍:存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用2、特点封装、复用可以接收参数,也可以返回数据减少网络交互,效率

热文推荐