漫谈UNIX、Linux、UNIX-Like
漫谈UNIX、Linux、UNIX-Like
使用了这么多年Redhat、Ubuntu等Linux、Windows、Solaris操作系统,你是否对UNIX、Unix-Like(类UNIX)还是不太清楚?我以前一直认为Unix-Like就等于Linux。其实,由UNIX派生出来而没有取得UNIX许可的操作系统都是Unix-Like。是的,UNIX必须要取得许可才能被冠以商标。
所以呢?几乎所有的开源操作系统都是类Unix,因为取得UNIX商标或者说获得UNIX许可是需要支付费用的。因为 UNIX 商标的使用权是受到商业授权的。UNIX 商标是由 The Open Group 组织掌管的,而 The Open Group 对于商标的使用往往会涉及商业授权费用。
这里提一个问题:FreeBSD是UNIX还是Linux?答案:都不是,它是类UNIX。当然广义上我们可以把它当UNIX看待。
当然,操作系统根据其设计目标、用途和特性进行不同的分类。最常见的分类方式:单用户操作系统(Single User)、多用户操作系统(Multi-User)、单任务操作系统(Single Tasking)、多任务操作系统(Multi-Tasking)、实时操作系统(Real-Time)、嵌入式操作系统(Embedded)、网络操作系统(Network OS)、分布式操作系统(Distributed OS)。也可以说是按照上面的维度进行划分;但是,这些分类方式并不是互斥的,一个操作系统可以同时属于多个分类。例如,一个多用户多任务操作系统可以同时具有分布式系统的特性。
我们常见的操作系统基本都属于多用户多任务操作系统,例如:
-
UNIX 和 UNIX-like 操作系统:
- UNIX 操作系统最早是为多用户多任务设计的,后来的 UNIX-like 系统(例如 Linux 和各种 BSD 变种)也继承了这一特性。它们支持多个用户同时登录,并能够同时运行多个任务和进程。
-
Windows Server 系列:
- Windows Server 是 Microsoft 公司推出的面向服务器环境的操作系统系列。它支持多用户多任务,可以在服务器环境中同时处理多个用户的请求和任务。
-
macOS(基于 UNIX 的):
- macOS 是 Apple 公司的操作系统,基于 UNIX。类似于 UNIX 系统,macOS 也支持多用户多任务,允许多个用户同时使用一台计算机。
-
Linux 发行版:
- Linux 是一个开源的 UNIX-like 操作系统内核,众多的 Linux 发行版(如 Ubuntu、Fedora、Debian 等)都继承了 UNIX 的多用户多任务特性。它们广泛用于服务器和个人计算机。
聊到这里貌似有点跑题,让我们回到UNIX、类UNIX这个话题。通过前面的讲述,其实我们已经有了一个模糊而不太准确的认识。请看下面一段讲述:
UNIX(由 AT&T Bell 实验室的 Ken Thompson、Dennis Ritchie 等人开发)是最早的类 Unix 操作系统,而后出现了许多 UNIX 标准的变种和衍生版本。
按我们的理解:先有UNIX,随着时间的推移,一些机构和个人开始开发基于 UNIX 思想的类似系统,这些系统通常被称为类 Unix 操作系统或 UNIX-like 操作系统。这些系统在设计上模仿了 UNIX,并且很多时候兼容 UNIX 标准。最终,许多类 Unix 操作系统开源,例如 Linux 和各种 BSD 变种,它们在设计上受到 UNIX 的启发。
为什么说 UNIX 是最早的类 Unix 操作系统?那是因为那时候的UNIX操作系统并没有形成标准(The Open Group 制定的 UNIX 标准),只是UNIX思想下的早期产物,和后来的系统在设计上模仿或受到 UNIX 影响的系统(后期类UNIX)一样,他们都不符合UNIX标准。
所以UNIX严格意义上不是操作系统,而是操作系统标准或商标。
UNIX商标和UNIX-like操作系统
-
UNIX 商标:
- "UNIX" 是最初由 AT&T Bell 实验室(现在是 Open Group 的一部分)开发的操作系统的商标。只有符合 Open Group 制定的一系列规范和标准的系统才能称为 "UNIX"。例如,AIX 和 HP-UX 符合这些标准,因此可以被称为 "UNIX"。
-
UNIX-like 操作系统:
- 由于 UNIX 系统的成功,其他开发者和组织开始设计和实现与 UNIX 相似的操作系统,以模仿 UNIX 的设计和接口。这些系统被称为 "UNIX-like" 或 "类 Unix",因为它们模仿了 UNIX 的外观和感觉,但并未正式获得 "UNIX" 商标。
-
历史发展:
- 在 UNIX 的发展初期,各个大学和机构都基于 UNIX 源代码进行了修改和扩展,形成了不同的变种。这些变种在满足 UNIX 标准的同时也引入了自己的特性。例如,BSD(Berkeley Software Distribution)是一个最早的 UNIX 变种,而 AIX、HP-UX 和 Solaris 是 UNIX 原始版本的派生。
-
商业实现和 UNIX 许可:
- AIX、HP-UX 和 Solaris 是商业实现的 UNIX,它们通过获得 UNIX 许可证,确保了与 UNIX 标准的兼容性。这使得它们可以被称为 "UNIX"。其他 UNIX-like 操作系统(如 Linux 和 BSD 变种)没有正式获得 UNIX 许可,因此通常被称为 "UNIX-like"。
UNIX 系统的主要版本和变种
-
AT&T UNIX:
- 原始的 UNIX 版本,由 AT&T Bell 实验室的 Ken Thompson 和 Dennis Ritchie 等人开发。它为后来的 UNIX 系统奠定了基础。
-
BSD UNIX(Berkeley Software Distribution UNIX):
- 由加州大学伯克利分校开发,引入了许多对 UNIX 进行了扩展和改进的特性。BSD 系统的一些版本包括 FreeBSD、OpenBSD、NetBSD 等。
-
System V UNIX:
- 由 AT&T 和 Sun Microsystems 开发,引入了一些新的特性和标准。System V 的一些版本包括 HP-UX(Hewlett Packard UniX)和 AIX(IBM Advanced Interactive eXecutive)等。
-
Solaris:
- 由 Sun Microsystems 开发的 UNIX 操作系统。Solaris 是 System V UNIX 的一个变种,后来被 Oracle 公司收购。
-
AIX(Advanced Interactive eXecutive):
- 由 IBM 开发,用于 IBM Power 系列服务器。AIX 是一种符合 UNIX 标准的操作系统。
-
HP-UX(Hewlett Packard UniX):
- 由惠普(现为惠普企业)开发,用于惠普的服务器和工作站。HP-UX 是 System V UNIX 的一个变种。
-
IRIX:
- 由 SGI(Silicon Graphics)开发,用于 SGI 的图形工作站和服务器。IRIX 为了支持图形和多媒体应用引入了许多特殊的功能。
-
UnixWare:
- 由 Novell 开发的 UNIX 操作系统。
相关文章:
漫谈UNIX、Linux、UNIX-Like
漫谈UNIX、Linux、UNIX-Like 使用了这么多年Redhat、Ubuntu等Linux、Windows、Solaris操作系统,你是否对UNIX、Unix-Like(类UNIX)还是不太清楚?我以前一直认为Unix-Like就等于Linux。其实,由UNIX派生出来而没有取得UN…...
Netty Review - Netty与Protostuff:打造高效的网络通信
文章目录 概念PrePomServer & ClientProtostuffUtil 解读测试小结 概念 Pre 每日一博 - Protobuf vs. Protostuff:性能、易用性和适用场景分析 Pom <dependency><groupId>com.dyuproject.protostuff</groupId><artifactId>protostuff-…...
在ClickHouse数据库中启用预测功能
在这篇博文中,我们将介绍如何将机器学习支持的预测功能与 ClickHouse 数据库集成。ClickHouse 是一个快速、开源、面向列的 SQL 数据库,对于数据分析和实时分析非常有用。该项目由 ClickHouse, Inc. 维护和支持。我们将探索它在需要数据准备以…...
目标检测YOLO实战应用案例100讲-树上果实识别与跟踪计数(续)
目录 3.2 损失函数优化 3.3 实验过程 3.3.1 果实图像采集 3.3.2 数据扩增...
Docker 文件和卷 权限拒绝
一 创作背景 再复制Docker影像文件或访问Docker容器内已安装卷上的文件时我们常常会遇到:“权限被拒绝”的错误,在此,您将了解到为什么会出现“权限被拒绝”的错误以及如何解决这个问题。 二 目的 在深入探讨 Docker 容器中的 Permission De…...
Appium Server 启动失败常见原因及解决办法
Error: listen EADDRINUSE: address already in use 0.0.0.0:4723 如下图: 错误原因:Appium 默认的4723端口被占用 解决办法: 出现该提示,有可能是 Appium Server 已启动,关闭已经启动的 Appium Server 即可。472…...
将Abp默认事件总线改造为分布式事件总线
文章目录 原理创建分布式事件总线实现自动订阅和事件转发 使用启动Redis服务配置传递Abp默认事件传递自定义事件 项目地址 原理 本地事件总线是通过Ioc容器来实现的。 IEventBus接口定义了事件总线的基本功能,如注册事件、取消注册事件、触发事件等。 Abp.Events…...
Jupyter Notebook修改默认工作目录
1、参考修改Jupyter Notebook的默认工作目录_jupyter文件路径-CSDN博客修改配置文件 2.在上述博客内容的基础上,这里不是删除【%USERPROFILE%】而是把这个地方替换为所要设置的工作目录路径, 3.【起始位置】也可以更改为所要设置的工作目录路径&#x…...
高校/企业如何去做数据挖掘呢?
随着近年来人工智能及大数据、云计算进入爆发时期,依托三者进行的数据分析、数据挖掘服务已逐渐成为各行业进行产业升级的载体,缓慢渗透进我们的工作和生活,成为新时代升级版的智能“大案牍术”。 那么对于多数企业来说,如何做数据…...
数据仓库-数据治理小厂实践
一、简介 数据治理贯穿数仓中数据的整个生命周期,从数据的产生、加载、清洗、计算,再到数据展示、应用,每个阶段都需要对数据进行治理,像有些比较大的企业都是有自己的数据治理平台或者会开发一些便捷的平台,对于没有平…...
【C++多线程编程】(五)之 线程生命周期管理join() 与 detach()
在C中,std::thread 类用于创建和管理线程。std::thread 提供了两种主要的方法来控制线程的生命周期:join 和 detach。 detach方式,启动的线程自主在后台运行,当前的代码继续往下执行,不等待新线程结束。join方式&…...
金融信贷场景的风险“要素”与主要“风险点”
目录 要素一:贷款对象 风险点1:为不具备主体资格或主体资格有瑕疵的借款人发放贷款 风险表现: 防控措施: 风险点2:向国家限控行业发放贷款 风险表现: 防控措施: 风险点3:受理不符合准入条件的客户申请 风险表现: 防控措施: 要素二:金额 风险点4:过渡授…...
ubuntu下docker安装,配置python运行环境
参考自: 1.最详细ubuntu安装docker教程 2.使用docker搭建python环境 首先假设已经安装了docker,卸载原来的docker 在命令行中运行: sudo apt-get updatesudo apt-get remove docker docker-engine docker.io containerd runc 安装docker依赖 apt-get…...
在Docker中安装kafka遇到问题记录
命令含义解答: 在docker安装kafka的时候,启动kafka的时候会执行下面语句: docker run -d --log-driver json-file --log-opt max-size100m --log-opt max-file2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID0 -e KAFKA_ZOOKEEPER_CONNEC…...
aws-waf-cdn 基于规则组的永黑解决方案
1. 新建waf 规则组 2. 为规则组添加规则 根据需求创建不同的规则 3. waf中附加规则组 (此时规则组所有规则都会附加到waf中,但是不会永黑) 此刻,可以选择测试下规则是否生效,测试前确认保护资源绑定无误 4. 创建堆…...
如何实现免费无限流量云同步笔记软件Obsidian?
目录 前言 如何实现免费无限流量云同步笔记软件Obsidian? 一、简介 软件特色演示: 二、使用免费群晖虚拟机搭建群晖Synology Drive服务,实现局域网同步 1 安装并设置Synology Drive套件 2 局域网内同步文件测试 三、内网穿透群晖Synol…...
GPTs | Actions应用案例
上篇文章说道,如何使用创建的GPTs通过API接口去获取外部的一些信息,然后把获取的外部信息返回给ChatGPT让它加工出来,回答你的问题,今天我们就来做一个通俗易懂的小案例,让大家来初步了解一下它的使用法! …...
Python Opencv实践 - 手势音量控制
本文基于前面的手部跟踪功能做一个手势音量控制功能,代码用到了前面手部跟踪封装的HandDetector.这篇文章在这里: Python Opencv实践 - 手部跟踪-CSDN博客文章浏览阅读626次,点赞11次,收藏7次。使用mediapipe库做手部的实时跟踪&…...
关于Selenium的网页对象单元测试的设计模式
写在前面:经过了实践总结一下经验,心得进行一个分享。 首先driver是可以单独抽出来的,变成一个driver函数放在driver.py。 from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver…...
基于多反应堆的高并发服务器【C/C++/Reactor】(上)
(一)初始化服务器端用于监听的套接字 Server.h #pragma once // 初始化监听的套接字 int initListenFd(unsigned short port); Server.c int initListenFd(unsigned short port) {// 1.创建监听的fdint lfd socket(AF_INET, SOCK_STREAM, 0);if(lf…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
