Linux 发展史

Linux 发展史

Linux 发展史

一、Linux 前身 —— Unix 发展史

1. 1964–1969 年:Multics 项目

  • 由 MIT、贝尔实验室(Bell Labs)、通用电气(GE) 联合开发。
  • 目标:打造一个多用户、分时、多功能的大型操作系统。
  • 结果:项目过于庞大、进度缓慢、成本过高,贝尔实验室与 MIT 先后退出,Multics 最终失败。

2. 1969–1970 年:Unix 诞生(Unix 元年)

  • 贝尔实验室的 Ken Thompson(肯・汤普逊) 在 Multics 废弃的基础上,为了运行自己写的游戏 Space Travel(太空旅行),用汇编语言写出了一套简易操作系统。
  • 1970 年 1 月 1 日 被定为 Unix 时间戳起点,也被称为 Unix 元年。
  • 最初的 Unix 完全用汇编语言开发,依赖硬件,移植性极差。

3. 1973 年:C 语言重写 Unix

  • Dennis Ritchie(丹尼斯・里奇) 发明了 C 语言。
  • Ken Thompson 与 Dennis Ritchie 用 C 语言重写了 Unix。
  • 意义:
    • 操作系统第一次摆脱硬件束缚
    • 极大提升了可移植性
    • 为后来 Unix 遍地开花奠定基础

4. 1975 年:Unix 进入大学

  • 贝尔实验室允许大学、科研机构免费使用 Unix 用于教学,禁止商业使用。
  • Unix 迅速在高校普及,成为计算机专业操作系统教学的标准系统。

二、开源文化与 GNU 计划(Linux 诞生的前提)

1. 1983 年:GNU 计划

  • 发起人:Richard Stallman(理查德・斯托曼)
  • 目标:开发一套完全自由、开源、免费的类 Unix 操作系统,命名为 GNU(GNU is Not Unix 的递归缩写)。

2. 1985 年:FSF 自由软件基金会

  • 成立 FSF(Free Software Foundation),推动自由软件运动。
  • 制定 GPL 开源协议(通用公共许可证):
    • 软件可以自由使用、复制、修改、分发
    • 修改后的衍生作品也必须开源

3. 1990 年前后:GNU 缺少内核

  • GNU 已经完成:
    • Emacs(编辑器)
    • GCC(C 语言编译器)
    • glibc(C 标准库)
    • Shell、工具链等大量软件
  • 但缺少操作系统内核,GNU 系统无法完整运行。

三、Linux 正式诞生

1. 核心人物

  • Linus Torvalds(林纳斯・托瓦兹) —— Linux 之父
  • 当时是芬兰赫尔辛基大学的学生,学习 Unix 操作系统。

2. 1991 年:Linux 0.0.1 版发布

  • Linus 基于教学用的 Minix(微型 Unix),编写了一个简单的操作系统内核。
  • 最初命名:Linus’s Unix
  • 网友建议改名:Linux(Linus + Unix)
  • 发布到网络社区,迅速吸引全球开发者参与贡献代码。

3. 关键版本时间线

  • 1991 年:Linux 0.0.1(最初内核版)
  • 1992 年:Linux 0.0.2
  • 1994 年:Linux 1.0 正式版(稳定内核)
  • 2003 年:Linux 2.6 内核(长期支持、广泛用于服务器)
  • 之后:3.x、4.x、5.x、6.x 等版本持续迭代

4. 1992 年:GNU + Linux = GNU/Linux

  • Linux 只是内核,本身不是完整操作系统。
  • 结合 GNU 的各种工具、编译器、库,才形成完整可用的系统。
  • 因此标准全称:GNU/Linux。

四、Linux 常见发行版(分支)

Linux = 内核发行版 = Linux 内核 + GNU 工具 + 软件 + 安装界面

主流发行版:

  1. Debian:社区驱动,稳定严谨
  2. Ubuntu:基于 Debian,桌面友好、易用
  3. Red Hat Enterprise Linux(RHEL):商业企业级
  4. CentOS:基于 RHEL 重新编译,免费、稳定、服务器首选
  5. Fedora:红帽旗下,新技术试验场
  6. SUSE:德国企业级发行版
  7. Arch Linux:滚动更新,定制化强

五、Linux 系统核心特点

  1. 开放性(开源)
    • 内核源码公开,可自由修改、分发
  2. 多用户
    • 系统可以同时登录多个独立用户,权限隔离
  3. 多任务
    • CPU 分时机制,可同时运行多个程序
  4. 多平台、可移植性强
    • 支持 x86、ARM、服务器、手机、嵌入式、物联网等
  5. 稳定、安全、性能优异
    • 服务器领域几乎垄断
  6. 良好的网络功能
    • 原生支持 TCP/IP,适合做服务器、路由、网关
  7. 一切皆文件
    • 硬件、设备、进程、网络、配置,统统抽象为文件
    • 统一操作接口,简单、一致、强大

六、Windows 与 Linux 对比

  • Windows单用户、多任务
    • 通常同一时间一个主用户使用,可同时开多个软件
  • Linux多用户、多任务
    • 多人同时登录、同时使用、同时运行多个程序,互不干扰

七、总结

Multics 失败 → Unix 诞生 → C 语言重写 → 高校普及 → GNU 缺内核 → Linus 写 Linux 内核 → 结合 GNU → 开源免费 → 发展出无数发行版 → 成为服务器、嵌入式、安卓底层的主流系统。

Read more

Web Worker:让前端飞起来的隐形引擎

Web Worker:让前端飞起来的隐形引擎

目录 Web Worker:让前端飞起来的隐形引擎 一、什么是 Web Worker? 1、为什么需要 web worker 2、什么是 web worker 二、基本使用方法 1、创建一个 Worker 文件(worker.js) 2、主线程引入并使用 三、实战案例:在前端处理大批量数据 1、Worker 文件(sortWorker.js) 2、主线程调用 四、Vue3 中如何优雅使用 Web Worker 1、新建 Worker 文件(worker.js) 2、在 Vue3

By Ne0inhk
总结前端三年 理想滚烫与现实的冰冷碰撞

总结前端三年 理想滚烫与现实的冰冷碰撞

大家好,我是500佰,技术宅男 目前正在前往独立开发路线,我会在这里分享关于编程技术、独立开发、技术资讯以及编程感悟等内容 6月3日的一篇《一个普通人的30岁 他经历了什么》介绍一篇自己的碎碎念、即回顾自己以前的成长经历,那么再接着说下这3年来的工作经历,2022年1月,我以一名前端新人的身份开始了职业生涯。每当看到浏览器中运行的网站、手机里流畅的APP,或是点击按钮后转动的loading图标,都会想到这些产品背后凝聚着无数开发者的心血。我既期待能成为这个创造数字世界的一员,又难免担心:自己的技术储备是否足够?会不会被身边优秀的同事远远甩在身后? 怀揣着对未来的憧憬与一丝忐忑,我正式踏入了职业生涯的第一站。 不断尝试和调整的前两年(2022 ~ 2024) 我的职业生涯始于一家颇具特色的企业。原本以为会从事移动应用或网站开发,没想到公司专注于打造一款独特产品——我们开发了一系列可复用组件,配合自主研发的拖拽式平台,能够快速搭建Web站点。这种模式与后来流行的低代码平台颇有相似之处。 作为一名Java工程师加入公司后,却发现实际工作内容与预期有较大差异。当时还不了解’前端开发’这个

By Ne0inhk

一个 skill ,增加大模型前端的审美能力

上周,我让 AI 帮我做个落地页。 十分钟过去了,生成出来的东西—— 白色背景,紫色渐变,Inter 字体。 我直接关了。 你也遇到过吧? 用 AI 生前端,出来的东西都长一个样。 背景非白即黑,标题栏永远是紫色渐变,字体不是 Inter 就是 Roboto,配色永远是那套蓝绿红黄。 不是说不能用,但—— 太像 AI 了。 一眼看过去就是"机器生成",没有灵魂,没有个性。 直到昨天,我发现了一个东西。 Anthropic 官方出的一个 skill,叫 frontend-design。 让我再试一次。 这次不一样了 同样的提示词,同样的模型。 我只加了一句话: “使用 frontend-design skill” 结果呢?

By Ne0inhk
【前端地图】地图开发基础概念——地图服务类型(矢量图、卫星图、地形图)、WGS84 / GCJ-02 / BD09 坐标系、地图 SDK 简介

【前端地图】地图开发基础概念——地图服务类型(矢量图、卫星图、地形图)、WGS84 / GCJ-02 / BD09 坐标系、地图 SDK 简介

🌍第1节 | 地图开发基础概念——地图服务类型(矢量图、卫星图、地形图)、WGS84 / GCJ-02 / BD09 坐标系、地图 SDK 简介 🎯 学习目标 老曹说:“别急着敲代码,先搞懂地图是个啥玩意儿!不然你画个圈都可能画歪。” 1. 🧠 理解地图服务的基本类型及其应用场景 2. 🔍 掌握 WGS84、GCJ-02、BD09 三大坐标系的区别与转换原理 3. 🛠️ 熟悉主流地图 SDK 的核心功能与适用场景 4. 🧩 构建对地图开发的整体认知框架 🧠 引言:地图不是纸,是数据! 你以为地图就是一张平面图?Too young too simple!现代前端地图开发本质上是对空间数据的可视化与交互处理。它融合了地理信息系统(GIS)、计算机图形学、前端工程化等多个领域的知识。 老曹吐槽时间: “有人问我为啥地图开发这么难?我说:因为你不仅要会前端,还得懂地球科学!

By Ne0inhk