Linux简介:从Unix到Linux的发展与核心体系
前言
Linux作为当下最主流的开源操作系统之一,广泛应用于服务器、嵌入式设备、云计算等领域,其发展根源可追溯到经典的Unix系统。本文将从Unix&Linux的发展历史 、Linux发行版本 、Linux体系结构三个核心维度,全面讲解Linux的起源与基础架构,为Linux入门学习打下基础。
一、Unix & Linux 的发展历史
Linux并非凭空诞生,其发展建立在Unix系统的技术积累之上,背后是数十年的操作系统技术迭代,以下为关键时间节点和核心事件梳理:
1969年以前:Multics计划的探索
早期操作系统为批处理操作系统 ,存在多任务排队等待的缺陷,计算资源利用率极低。
1960年初,MIT开发CTSS兼容分时系统 ,实现多任务切换,让用户感觉独享主机资源,但仅支持30个左右终端。
1965年,贝尔实验室、MIT、通用电器公司联合发起Multics计划,目标是让大型主机支持300+终端,提升资源利用率。1969年,因进度落后、资金短缺,贝尔实验室退出该计划。
1969年:Ken Thompson发明Unics
贝尔实验室退出Multics后,Ken Thompson为运行自制游戏《太空旅行》,在闲置的PDP-7小型机上,结合Multics的设计灵感,用1个月时间简化开发出简易分时系统,被同事戏称为Unics 。
Unics设计的两大核心思想,成为后续Unix哲学的基础:
- 一切皆文件:所有程序或系统设备都以文件形式呈现
- KISS原则(Keep it simple stupid):程序仅专注于高效完成单一目标
巧合 :1969年,Linux创始人Linus Torvalds在芬兰诞生。
1973年:Unix内核正式诞生
早期Unics由汇编语言编写,高度依赖硬件,可移植性差。Ken Thompson与Dennis Ritchie为解决该问题,自研出C语言 ,并在1973年用C语言重写Unics内核,正式发布Unix 。
此次重写并非简单的语言翻译,还新增了管道(pipe) 等核心功能,成为Unix的重要优势。
1977年:Unix重要分支BSD诞生
AT&T对早期Unix采取开放态度,加州大学伯克利分校(UC Berkeley)的Bill Joy基于Unix源码修改优化,增加工具软件与编译程序,推出BSD(Berkeley Software Distribution) ,成为Unix最核心的分支之一。
补充:Bill Joy也是Sun Microsystems公司的创办者之一。
1979年:AT&T发布System V第七版(带商业版权)
Unix的高可移植性和强性能吸引了众多商业公司,各公司基于自身硬件移植开发专属Unix系统(如IBM AIX、HP HP/UX)。
1979年,AT&T推出System V第七版 ,首次支持x86架构个人计算机,让个人电脑能运行Unix。但AT&T为商业利益,声明不再向学生提供源码,引发Unix业界版权纠纷,也为后续开源系统的诞生埋下伏笔。
1984年:Minix系统与GNU项目诞生
System V的版权限制严重影响操作系统教学,1984年Andrew Tanenbaum(谭宁邦)教授为教学目的,完全独立开发出Minix(迷你版Unix),1986年完成编写,随书附带源码(需低价购买)。但Minix仅定位教育用途,作者无意愿持续优化功能。
同年,MIT的Richard Mathew Stallman(RMS)发起GNU项目 ,目标是创建一套完全自由的Unix操作系统 ,GNU是"Gnu is Not Unix"的递归缩写。
1985年,为保护自由软件,GNU制定GPL通用公共许可证 (copyleft),防止自由软件被私有化。
GNU项目开发出大量优质自由软件(Emacs、Bash Shell、GCC编译器、GDB调试器等),但始终缺少自由的Unix内核,成为其实现目标的关键短板。
1988年:POSIX标准发布
为解决各Unix衍生系统的兼容性问题,1985年启动POSIX标准制定项目,1988年发布首个版本。
- POSIX:Portable Operating System Interface的缩写,继承Unix API,规定了操作系统的通用接口标准
- 核心作用:遵循该标准的系统,可实现软件跨平台运行
- 兼容情况:Linux逐步实现POSIX兼容(未正式认证);Windows NT声称部分实现。
1991年:Linux 0.0.2版正式发布
1988年,Linus Torvalds进入赫尔辛基大学计算机系,因学校Unix终端资源紧张,接触并使用Minix系统,通过其源码学习内核设计。
由于Minix功能受限且作者无优化意愿,Linus借助GNU项目的Bash Shell、GCC等工具,在1991年开发出可运行在Intel 386计算机上的内核,上传至网络免费下载,因存放于Linux目录,被命名为Linux ,并发布0.0.2版本。
后续Linus参考POSIX标准优化Linux,大幅提升与Unix的兼容性。
Linux成功的核心因素
- 继承Minix系统,无版权纠纷,开发基础干净
- 依托GNU项目,获得Bash、GCC、GDB等全套工具软件支持
- 坚持开源原则,免费下载并通过互联网快速传播
- 遵循POSIX标准,兼容Unix系统,降低软件移植成本
- Linus Torvalds的核心领导与社区的持续贡献
二、Linux 发行版本
核心概念
严格来说,Linux仅指操作系统的内核 ,负责管理硬件和提供运行接口;而日常所说的Linux,是指基于Linux内核的完整发行版,即Linux内核+各类支撑软件(编译器、Shell、应用程序等)的组合。
主流发行版本分类
主流Linux发行版主要分三大体系,各体系有免费版/收费版之分,且配套不同的包管理器(用于软件安装、管理),核心信息如下表:
| 体系 | 免费版 | 收费版 | 包管理器 |
|---|---|---|---|
| Debian | Ubuntu、Debian 原生版 | - | apt |
| RedHat | CentOS | RedHat | yum |
| SuSE | 开源SuSE | 商业SuSE | zypper |
补充:包管理器是Linux发行版的核心工具,用于快速安装、卸载、更新软件,不同体系的包管理器不兼容。
三、Linux 体系结构
Linux的体系结构源自Unix,采用分层设计,从内到外依次为内核层 → 系统调用层 → 应用层,各层分工明确、层层封装,核心架构如下:
应用层(applications)
├─ Shell / 库函数(library routines)
├─ 系统调用(system calls)
└─ 内核层(kernel)
1. 内核(kernel):系统核心
Linux内核是整个系统的底层核心,直接与硬件交互,核心两大功能:
- 管理计算机硬件资源:包括CPU、内存、外部设备(硬盘、网卡、打印机等)
- 为上层应用程序提供稳定的运行环境
内核包含多个核心模块,负责具体功能实现:
- 文件管理:管理文件系统、文件的创建/读写/删除
- 进程调度:分配CPU资源,管理进程的启动/运行/结束
- 内存管理:分配和释放内存空间,防止内存泄漏
- 网络通信:实现网络数据的收发和协议解析
- 设备驱动:为各类硬件提供驱动程序,实现内核与硬件的交互
2. 系统调用(system calls):内核与上层的接口
系统调用是内核为上层应用程序提供的底层接口 ,应用程序通过系统调用向内核发出请求,由内核完成具体的硬件操作(如读写文件、申请内存)。
特点:设计简洁、偏底层,直接对接内核功能,无多余封装。
3. 库函数(library routines):系统调用的封装
库函数是对系统调用的上层封装 ,将繁琐、复杂的系统调用组合成简单、友好的接口,供程序员直接使用。
举例 :C语言中的malloc/free(内存申请/释放)、printf/scanf(输入/输出),都是对底层系统调用的封装。
核心作用:降低程序员的开发成本,无需关注内核底层实现,只需调用库函数即可完成功能。
4. Shell:命令行解释器
Shell是运行在应用层的命令行解释器,是用户与Linux内核交互的桥梁,核心工作流程为无限循环:
c
for(;;) {
read(cmd); // 读取用户输入的命令
execute(cmd); // 执行命令
}
核心概念
- 命令:Linux中可直接执行的简易程序(如
ls、cd、pwd) - 脚本:多个命令的有序集合,可批量执行(如Shell脚本)
主流Shell版本
Linux有多种Shell版本,最常用的是Bash(Bourne-again shell) ,默认存放在/bin/bash,是绝大多数Linux发行版的默认Shell。
总结
- Linux的发展源于Unix,从1969年Unics的诞生,到1991年Linux内核的发布,历经数十年技术积累,核心继承了Unix的"一切皆文件"和KISS设计原则。
- GNU项目为Linux提供了全套工具软件,POSIX标准保证了Linux的兼容性,开源免费的特性让Linux快速传播,成为其成功的关键。
- 日常使用的Linux是发行版,由Linux内核+支撑软件组成,主流分Debian、RedHat、SuSE三大体系,各有专属包管理器。
- Linux采用分层体系结构,内核是核心,系统调用是底层接口,库函数封装系统调用,Shell作为用户交互桥梁,各层分工明确,构成完整的操作系统。
标签 :Linux入门、Unix历史、Linux体系结构、操作系统基础
声明:本文为Linux基础学习整理,基于经典Linux教程资料编写,适合Linux初学者快速了解核心基础。