一文搞懂什么是 GNU/Linux 操作系统

Author:rab
目录
- 前言
- 一、UNIX
- 二、Linux
- 三、GNU
前言
你是否经常看见或听说过这么一句话:这是一个类 Unix 的 GNU/Linux 操作系统,你是怎么理解这句话的呢?想要搞懂这句话的含义,你需要了解以下三点基本常识。
一、UNIX
想要了解 Linux,首先要清楚最早的操作系统之一 —— Unix,它是一种多用户、多任务操作系统,由 AT&T 贝尔实验室的 Ken Thompson、Dennis Ritchie 等人在 1960 年代末 1970 年代初开发。其设计理念是建立一个简洁、灵活、可扩展的操作系统,以满足多用户环境的需求。该操作系统最初是用汇编语言编写的,后来演变成了使用 C 语言。
Unix 最初是一个商业操作系统,被许多公司采用并根据其需求进行修改。因此,存在多个不同的 Unix 版本,如 AIX、HP-UX、Solaris 等。不同版本之间存在差异,而且通常需要购买使用许可,这导致了标准化和互操作性的问题。
以下是 Unix 的一些关键特点和概念:
-
多用户多任务
Unix 允许多个用户同时访问操作系统,并在同一时间运行多个程序,每个用户都有自己的用户账户和独立的工作环境。
-
分时系统
Unix 是一种分时操作系统,它可以迅速地在不同的任务之间切换(即我们常说的并发),为用户提供似乎同时运行的体验。
-
分层结构
Unix 使用分层的体系结构,将系统功能划分为若干层,每一层都有特定的功能,这种设计使得系统更易于维护和扩展。
-
命令行界面
Unix 提供了强大而灵活的命令行界面,用户可以通过输入命令来与系统交互,这种交互方式被称为 shell。
-
文件系统
Unix 一切皆文件,并采用了层次化的文件系统,这种设计使得文件和设备可以以统一的方式进行管理。
-
可移植性
Unix 设计时考虑了可移植性,使得它能够在不同的硬件平台上运行。
-
开放性
Unix 的源代码通常是封闭的,但有些版本如 BSD(Berkeley Software Distribution)是开源的,促使了开源运动的发展。
二、Linux
Linux 是一个免费、开源的类 Unix 操作系统内核,由 Linus Torvalds 于 1991 年首次发布。Linux 内核采用了 GNU 计划的工具和系统组件,形成了一个完整的操作系统。
什么是类 Unix 操作系统?其实就是指类似于 Unix 操作系统的操作系统,因此其设计和行为与 Unix 操作系统相似或兼容。这类操作系统通常采用了 Unix 的设计哲学和概念,包括多用户、多任务、分层的系统结构、强大的命令行界面等特征。
以下是 Linux 的一些关键特点和概念:
-
多用户多任务
Linux 支持多用户和多任务操作,多个用户可以同时登录并在同一时间运行多个程序(与我们上面提到的 Unix 一致)。
-
发行版
Linux采用了分发式的模型,有许多不同的发行版,如Ubuntu、Fedora、Debian等。
-
命令行界面
Linux 提供了强大的命令行界面,用户可以通过终端窗口使用命令来操作系统。
同时,也有图形用户界面(GUI)可供选择。
-
文件系统
Linux 将文件和设备抽象为文件,采用了分层的、层次化的文件系统。
这种设计使文件和目录之间的操作非常一致。
-
网络功能
Linux 在设计时就考虑了网络功能,使其在网络环境中能够高效运行,许多网络设备和服务器使用 Linux 作为其操作系统。
-
可移植性
Linux 具有很高的可移植性,可以在多种硬件平台上运行,从个人计算机到嵌入式系统、服务器和超级计算机。
-
安全性
Linux 有强大的安全特性,包括权限管理、防火墙、加密等功能。
这使其在服务器和网络设备中得到广泛应用。
-
开放性
Linux 是开源的,这意味着其源代码可以被任何人查看、修改和分发。
这种开放性促进了广泛的社区参与和合作。
三、GNU
GNU 是一个递归缩写,它代表 "GNU's Not Unix"。GNU 是一个自由软件运动的项目,由理查德·斯托曼(Richard Stallman)于 1983 年发起,GNU 的目标是创建一个完全自由的 Unix 兼容操作系统。
以下是 GNU 的一些关键特点和概念:
-
自由软件
GNU 强调自由软件的概念,这意味着用户有权利查看、修改和分发软件的源代码。
这样的自由性质使得用户能够对软件进行自定义,而不仅仅是使用它。
-
GPL 许可证
GNU 采用了 GPL(GNU General Public License)等开源许可证,这些许可证强调了对软件自由使用、修改和分享的权利。
-
GNU 工具
GNU 计划包含了一系列工具和系统组件,其中一些最为著名的包括:
- GNU Bash(Bourne Again SHell):一种常见的命令行 shell。
- GCC(GNU Compiler Collection):包括 C、C++、Fortran 等多种编程语言的编译器。
- GNU Coreutils:包含了基本的命令行工具,如 ls、cp、mv 等。
这些工具为Linux操作系统提供了基础,并使其成为一个完整的操作系统。
-
Hurd 内核
GNU 计划最初计划使用 Hurd 内核,以取代 Unix 内核。
然而,由于 Hurd 的开发进展较慢,许多 GNU/Linux 发行版使用了 Linux 内核。
-
GNU/Linux 操作系统
尽管 GNU 的原始计划中包括了 Hurd 内核,但实际上,许多流行的 GNU/Linux 发行版使用了 Linux 内核。
因此,人们通常使用术语
"GNU/Linux"来强调 GNU 工具和软件在 Linux 系统上的存在和贡献。
总体而言,Linux是一个操作系统的内核,而GNU则提供了Linux操作系统所需的大部分工具和组件。在实际使用中,人们通常会将Linux与GNU工具一起使用,形成一个完整的 GNU/Linux 操作系统。这个术语强调了GNU工具对Linux系统的贡献,同时也表示这是一个完整的自由和开源的操作系统。
—END
相关文章:
一文搞懂什么是 GNU/Linux 操作系统
Author:rab 目录 前言一、UNIX二、Linux三、GNU 前言 你是否经常看见或听说过这么一句话:这是一个类 Unix 的 GNU/Linux 操作系统,你是怎么理解这句话的呢?想要搞懂这句话的含义,你需要了解以下三点基本常识。 一、U…...
sql注入 [极客大挑战 2019]LoveSQL 1
打开题目 几次尝试,发现输1 1",页面都会回显NO,Wrong username password!!! 只有输入1,页面报错,说明是单引号的字符型注入 那我们万能密码试试能不能登录 1 or 11 # 成功登录 得到账号…...
验证码 | 可视化一键管控各场景下的风险数据
目录 查看今日验证数据 查看未来趋势数据 验证码作为人机交互界面经常出现的关键要素,是身份核验、防范风险、数据反爬的重要组成部分,广泛应用网站、App上,在注册、登录、交易、交互等各类场景中发挥着巨大作用,具有真人识别、身…...
问题解决:Ubuntu18.04下nvcc -V指令可用,/usr/local/下却没有cuda文件夹,原因分析及卸载方法
问题描述 今天要运行一个程序,需要CUDA版本高于10.0,我的电脑无法运行,于是开始检查 首先使用nvidia-smi与nvcc -V指令 能够看出来,当前显卡驱动适合的CUDA版本为12.1,而本机安装的版本是9.1.85,那么就需…...
uniapp+vue3使用pinia,安卓端报错白屏
报错内容: reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->at useStore2 (app-service.js:1487:15)at (app-service.js:1714:17)at (app-serv…...
OpenCV图像处理、计算机视觉实战应用
OpenCV图像处理、计算机视觉实战应用 专栏简介一、基于差异模型模板匹配缺陷检测二、基于NCC多角度多目标匹配三、基于zxing多二维码识别四、基于tesseract OCR字符识别 专栏简介 基于OpenCV C分享一些图像处理、计算机视觉实战项目。不定期持续更新,干货满满&…...
MySQL 事务的底层原理和 MVCC(一)
在事务的实现机制上,MySQL 采用的是 WAL(Write-ahead logging,预写式日志)机制来实现的。 在使用 WAL 的系统中,所有的修改都先被写入到日志中,然后再被应用到系统中。通常包含 redo 和 undo 两部分信息。 …...
vue3中使用全局自定义指令和组件自定义指令
这篇文章会教大家如何实现全局自定义指令和组件自定义指令 📓全局自定义指令和组件自定义指令的区别,除了写法不同和作用不同,其他的包括生命周期的使用方法都是一致的,全局自定义指令在main.ts中注册后整个项目都可以使用&#x…...
JVM 堆外内存详解
Java 进程内存占用除了JVM 运行时数据区,还有直接内存(Direct Memory)区域及 JVM 程序自身也会占用内存 直接内存(Direct Memory)区域:直接内存通过使用Native堆外内存来存储数据,这意味着数据…...
数据库的基本概念以及MySQL基本操作
一、数据库的基本概念 1、数据库的组成 数据:描述事物的符号记录 包括数字,文字、图形、图像、声音、档案记录等 以“记录”形式按统一格式进行存储 表:将不同的记录组织在一起,用来存储具体数据 数据库: 表的集合…...
【Docker】Docker安装Nginx配置静态资源
1.下载镜像 2.创建nginx配置文件 3.创建nginx容器运行 4.配置nginx静态资源 1.下载镜像 Dockerhub官网:Docker docker pull nginx docker pull nginx下载最新版本 默认latest 下载指定版本docker pull nginx:xxx 2.创建nginx配置文件 启动容器之前要创建nginx…...
【码神之路】【Golang】博客网站的搭建【学习笔记整理 持续更新...】
介绍 一个用原生GO开发的博客网站,涉及Golang Web开发、Web服务器搭建和HTTP请求处理、模板与静态资源处理等 技术栈 后端:Go、Go并发机制前端:HTML模版链接直达 Golang搭建博客网站的学习视频 注:这里我只记录我实质✅学习到…...
Win10 电源选项那选择“关闭显示器“为1分钟,1分钟后就锁屏了?怎么才能关闭显示器后不锁屏
环境: Win10专业版 问题描述: Win10 电源选项那选择"关闭显示器"为1分钟,1分钟后就锁屏了?怎么才能关闭显示器后不锁屏 解决方案: 方法一 更改注册表可以实现关闭显示器而不锁屏的效果。请按照以下步骤…...
虚拟机centos设置网络模式(桥接|NAT)
前言 桥接模式是通过物理网卡直接与外部网络建立联系的,而NAT模式则是通过虚拟网卡VMnet1或VMnet8通过宿主机共享IP与外部建立网络关系当需要将虚拟机资源共享给局域网用户使用时,宜采用桥接模式;当需要保护虚拟机资源,确保只能由…...
MySQL 8.2 Command Line Client打开时一闪而过闪退问题
MySQL8.2安装成功后,发现打开MySQL 8.0 Command Line Client时出现一闪而过,打不开的情况。 解决方案: 1、打开MySQL 8.2 Command Line Client文件位置 2、右键选择属性 3、复制它的目标 4、我复制下来的目标路径是这样的,"…...
【NI-RIO入门】CompactRIO介绍及环境安装
CompactRIO是什么? CompactRIO系统提供了高处理性能、传感器专用I/O和紧密集成的软件工具,使其成为工业物联网、监测和控制应用的理想之选。实时处理器提供可靠,可预测的行为,而FPGA在需要高速逻辑和精确定时的较小任务上表现出色…...
生产问题 Recv-Q101
生产上服务端口 Recv-Q101 新请求到服务器的失败,幸好及时发现,通过重启服务之后得到解决,具体原因等待排查 目前觉得的原因是:某些请求暂用时间比较久...
从零开始:Rust环境搭建指南
大家好!我是lincyang。 今天,我们将一起探讨如何从零开始搭建Rust开发环境。 Rust环境搭建概览 Rust是一种系统编程语言,以其安全性、并发性和性能闻名。搭建Rust环境是学习和使用这一语言的第一步。 第一步:安装Rust Rust的…...
Tensorrt 实现 yolov5-cls 遇到的问题
yolov5-6.2增加了分类训练、验证、预测和导出(所有 11 种格式),还提供了 ImageNet 预训练的 YOLOv5m-cls、ResNet(18、34、50、101) 和 EfficientNet (b0-b3) 模型. 官方Git : https://github.com/ultralytics/yolov5 分类模型与…...
智能指针(Newbie Note)
智能指针专题 1.普通指针的问题2.智能指针是什么什么是所有权 3.智能指针三个好处:4.C11提供的智能指针4.1 shared_ptr(共享所有权指针)4.1.1 分配内存4.1.2 成员函数4.1.3 计数情况汇总:4.1.4 示例代码(计数)4.1.5 示例代码(rese…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
