*** EOOH *** 来自Newsgroup的论争
From: ast@cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.os.minix
Subject: LINUX is obsolete Linux的技术过时了
Date: 29 Jan 92 12:12:50 GMT
Organization: Fac. Wiskunde & Informatica, Vrije Universiteit, Amsterdam
I was in the U.S. for a couple of weeks, so I haven't commented much on
LINUX (not that I would have said much had I been around), but for what
it is worth, I have a couple of comments now.
(我来美国已有几周了,是的,我还没有就Linux发表评论,并不是时间问题,
而是Linux值不值得一评,现在,我想谈谈我对它的看法)
As most of you know, for me MINIX is a hobby, something that I do in the
evening when I get bored writing books and there are no major wars,
revolutions, or senate hearings being televised live on CNN. My real
job is a professor and researcher in the area of operating systems.
(你们大多数都知道,MINIX对我而言只是一个业余爱好,每当我在夜里厌倦
了写作,而且CNN上没有什么可值得一看的新闻节目时,我就会继续Minix的
探索。因为我是一个教授而凑巧我的研究方向正是操作系统。)
As a result of my occupation, I think I know a bit about where operating
are going in the next decade or so. Two aspects stand out:
(凭我专业的感觉,我觉得就未来10年或20年里操作系统的发展方向而言,
有两点值得我们关注)
1. MICROKERNEL VS MONOLITHIC SYSTEM
Most older operating systems are monolithic, that is, the whole operating
system is a single a.out file that runs in 'kernel mode.' This binary
contains the process management, memory management, file system and the
rest. Examples of such systems are UNIX, MS-DOS, VMS, MVS, OS/360,
MULTICS, and many more.
(1.微内核模式 VS 单组件模式
许多比较老的操作系统是基于单组件模式的,即整个操作系统实际上只是一个运行在
核心模式的单一a.out文件,它包括了进程管理,内存管理,文件系统等等。
例如UNIX,MS-DOS, VMS, MVS, OS/360, MULTICS,还有许多。
The alternative is a microkernel-based system, in which most of the OS
runs as separate processes, mostly outside the kernel. They communicate
by message passing. The kernel's job is to handle the message passing,
interrupt handling, low-level process management, and possibly the I/O.
Examples of this design are the RC4000, Amoeba, Chorus, Mach, and the
not-yet-released Windows/NT.
(另一个选择是基于微内核的操作系统,它提供的许多系统服务都是独立
且在内核之外的进程。进程之间通过消息传递进行通信,内核的任务就是
管理这些通信,中断处理,低层进程管理,也许还有I/O.
这种系统的例子如RC4000, Amoeba, Chorus, Mach及还未发布的WINNT.
While I could go into a long story here about the relative merits of the
two designs, suffice it to say that among the people who actually design
operating systems, the debate is essentially over. Microkernels have won.
The only real argument for monolithic systems was performance, and there
is now enough evidence showing that microkernel systems can be just as
fast as monolithic systems (e.g., Rick Rashid has published papers comparing
Mach 3.0 to monolithic systems) that it is now all over but the shoutin`.
MINIX is a microkernel-based system. The file system and memory management
are separate processes, running outside the kernel. The I/O drivers are
also separate processes (in the kernel, but only because the brain-dead
nature of the Intel CPUs makes that difficult to do otherwise). LINUX is
a monolithic style system. This is a giant step back into the 1970s.
That is like taking an existing, working C program and rewriting it in
BASIC. To me, writing a monolithic system in 1991 is a truly poor idea.
(尽管在此我可以就两者的优缺点来一番长篇累牍的叙述,但对于
实际从事操作系统设计的人们来说,辩论已经结束,微内核系统胜利了!
唯一的争论是单组件模式系统的性能是否更佳,但是现在已有足够的证据
表明微内核模式系统能与单组件模式系统运行得一样快(例如Rick Rashid
已经发表了几篇Mach3.0与单组件模式系统对比的文章)。
Minix是基于微内核的操作系统。文件系统与内存管理分属于内核之外
的各组进程。I/O管理也是不同的进程 (在内核里,但是这只是因为
Intel处理器设计上的缺陷)
Linux是基于单组件模式的操作系统,这实际上是倒退到70年代技术,
就像将已有的可工作的C语言程序再用BASIC语言重写一样!
对我而言,在1991年去写这样的一个操作系统的主意实在不怎么样。
2. PORTABILITY
Once upon a time there was the 4004 CPU. When it grew up it became an
8008. Then it underwent plastic surgery and became the 8080. It begat
the 8086, which begat the 8088, which begat the 80286, which begat the
80386, which begat the 80486, and so on unto the N-th generation. In
the meantime, RISC chips happened, and some of them are running at over
100 MIPS. Speeds of 200 MIPS and more are likely in the coming years.
These things are not going to suddenly vanish. What is going to happen
is that they will gradually take over from the 80x86 line. They will
run old MS-DOS programs by interpreting the 80386 in software. (I even
wrote my own IBM PC simulator in C, which you can get by FTP from
ftp.cs.vu.nl = 192.31.231.42 in dir minix/simulator.) I think it is a
gross error to design an OS for any specific architecture, since that is
not going to be around all that long.
MINIX was designed to be reasonably portable, and has been ported from the
Intel line to the 680x0 (Atari, Amiga, Macintosh), SPARC, and NS32016.
LINUX is tied fairly closely to the 80x86. Not the way to go.
(Intel的4004CPU是开端,然后它发展为8008,再有8080—>8088--->8086
---->80286--->80386--->80486,直到第N代。在这段时期里RISC 技术也得到
了很快的发展,有些RISC 处理器速度达到了100MIPS,200MIPS或更高速度的RISC
处理器也快出现。这些RISC处理器不会马上消失,而是会慢慢取代Intel处理器
的地位。在RISC上能以软件模拟80386的方式运行老的MS-DOS程序(我用C写
了一个IBM PC机的模拟程序,可以到ftp.cs.vu.nl下载)。
我认为为某种特定的计算机系统设计操作系统是一个大错误,何况Intel早已
风光不再)
(Minix的设计具有相当的可移植性,现在支持Intel系列及680x0 (Atari, Amiga, Macintosh)
,SPARC, and NS32016,而Linux却于80x86紧密相连)(译注:这里的
翻译应该说明,今天的Linux支持的系统比Minix要多)
Don`t get me wrong, I am not unhappy with LINUX. It will get all the people
who want to turn MINIX in BSD UNIX off my back. But in all honesty, I would
suggest that people who want a **MODERN** "free" OS look around for a
microkernel-based, portable OS, like maybe GNU or something like that.
(别误解我,我并不是讨厌Linux,Linux的确会将BSD Unix用户的注意力
从Minix这里引开,我只想建议那些想要一个“新潮”,“免费”的操作系统
的人们去用基于微内核,可移植的操作系统,例如GNU..)
Andy Tanenbaum (ast@cs.vu.nl)
相关推荐
SAP移动类型
SAP移动类型移动类型定义 移动类型定义
Linux过时了- 塔能鲍姆-托瓦兹辩论(Tanenbaum–Torvalds debate)
FORM:http://www.hisnote.com/2013/10/27/tanenbaum-torvalds-debate/ 本文根据维基百科、码农逐梦者博客、oreilly出版社整理而成。 安德鲁·斯图尔特·塔能鲍姆博士(在comp.os.minix上叫 ‘ast’ ) 塔能鲍姆-托瓦兹辩论(英语:Tanenbaum–Torvalds debate),由Minix创作者安德鲁·斯...
鸿蒙子系统解读-分布式软总线子系统初步研究(下)
鸿蒙子系统解读-分布式软总线子系统初步研究(下) 本文作者:江苏润和软件股份有限公司 郎建中 3.2. 数据传输 上一节我们看了PublishService()函数的代码实现过程。被发现端发布服务后,软总线回调发布成功的函数中,被发现端需要使用CreateSessionServer()来创建会话的服务器等待发现端的连接创建会话。下面我们就来分析CreateSessionServer()函数的实现过程。 数据传输部分的代码位于foundation/communication/services/softbus
在64位Linux环境中运行Nachos3.4
操作过程如下(以64位Ubuntu为例): 检查系统是否支持多架构 (1) 确认主机系统为64位架构的内核 在命令终端中运行 dpkg--print-architecture,应该输出amd64 (2) 确认系统多架构功能已经打开,以支持1386 在命令终端中运行 dpkg--print-foreign-architectures,应该输出i386 如果(2)中检测到多架构功能尚未打开,则使用下述命令安装 sudo dpkg--add-architecture i386 安装32位编译环境与支持库 (1)
西电 程序设计基础课程设计 作业
当时做的程序设计课程的作业. 一共五题, 以报告的形式提交. 质量应该比较高(高傲). 完整内容在这里 高精度计算 问题描述 涉及知识点: 数组, 流程控制, 函数等 要求: 用整型数组表示10进制大整数(超过 2322^{32}232 的整数), 数组的每个元素存储大整数的一位数字, 实现大整数的加减法. 问题分析 结构设计 可将高精度整数写成一个类. 成员变量有: int a[MAXN], len; bool negative; 其中, 数组a用来存储大整数的一个数位, a[1]为个位上的数字, a
全能扫描王的实现(python版本)- 目标检测图像矫正
全能扫描王python代码实现,可用于文件扫描或者是图像校正
Linux 命令(文件和目录管理 - locate)
locate 可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的索引数据库,当寻找时就只需查询这个索引数据库而不必实际深入档案系统之中。locate 因为是只去检索索引数据库,所以在比 find 全盘检索要快很多。
30分钟用 Restful ABAP Programming(RAP)模型开发一个支持增删改查的 Fiori 应用
2016年时,Jerry曾经写过一系列关于SAP Fiori Smart Template(现在更名为Fiori Elements了)的博客,介绍了所谓的MDD开发方法论 - Metadata Driven Development,即通过开发维护了对应annotation(注解)的CDS view,结合SAP WebIDE,能够花费最少的编程代价,就能够在短时间内获得一个支持增删改查的Fiori应......
linux中who命令正确的,Linux中who命令详解
什么是who命令who 命令显示关于当前在本地系统上的所有登录用户的信息。显示以下内容:登录名、tty、登录日期和时间。输入whoami 显示您的登录名、tty、您登录的日期和时间。如果用户是从一个远程机器登录的,那么该机器的主机名也会被显示出来。who 命令也能显示自从线路活动发生以来经过的时间、命令解释器(shell)的进程标识、登录、注销、重新启动和系统时钟的变化,还能显示由初始化进程生成的...
FOC 转子初始位置检测(图文详解)
什么是转子的初始位置? 其实转子的初始位置是不确定的,但是在电机启动的时候,我们需要得到电角度,这样才可以进行矢量控制;所以,这里将转子与A轴重合作为初始位置,此时电角度也恰好为零,具体如下图所示; ) 至于原理下面会详细分析,这样在转子到初始位置后,也可以得到准确的电角度,就可以实现磁场和转子的同步转动。 如何让转子运行到初始位置? 其实这是一个很简单的问题,在这里我将它放大了,简单地分析了一...
华为OD机试真题2026双机位C卷 Java&Go 实现【用户入网定期复评】
用户开立支付账户,在开户完成后立即对用户进行一次风险模型评级,输出一个评分风险,评分范围1-100,等区间的分为5个等级,1-19为等级1,20-39为等级2,40-59为等级3,60-79为等级4,80-100为等级5,系统每天会任务对全量入网用户进行计算复评时间,输出评分给出新的风险等级。复评规则如下:
linux内核趣味,有关Linux 50个趣味名人名言
50. I develop for Linux for a living, I used to develop for DOS.Going from DOS to Linux is like trading a glider for an F117.我开发Linux只是为了生计,我已经习惯了为DOS编程。从DOS过渡到Linux就像让开滑翔机的人去开F117隐形轰炸机。-- Lawrence Fo...
gem5-gpu教程01 部署(实测可跑通)
这将GPGPU-Sim更新为与gem5-gpu兼容的最新版本。此版本是已知可用于gem5 gpu的最新版本。
方法已过时的提示(Obsolete())
#if UNITY_EDITOR using System; using System.IO; using UnityEditor; #endif using UnityEngine; namespace QFramework { public class CommonUtil //通用的工具 { public static void CopyText(str...
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
理解 Linux 动态库加载:LD_LIBRARY_PATH
flyfish
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
USB 技术系列 11 · USB Linux 驱动框架
本文系统解析Linux USB驱动框架,涵盖USB Core、HCD(xhci-hcd/dwc3)、类驱动(CDC/HID/Mass Storage)分层架构,详解usb_device_id匹配、probe/disconnect生命周期及Device Tree配置。结合RISC-V N300实战,揭示Host/Device双模式驱动开发核心逻辑,助力嵌入式BSP开发者掌握USB子系统全栈能力。
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
Linux-iostat命令详解
Linux命令学习记录
Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位
iptables 四表五链模型、firewalld zone 信任级别、云安全组与主机防火墙的关系与优先级,避坑改了防火墙把自己挡在服务器外面的翻车事故。
Linux rm 误删文件恢复实操教程
Linux使用rm删除文件时,并不会直接抹除磁盘上的数据,只是移除文件索引,让系统不再识别这块空间。只要没有写入新数据,原有扇区内容就会保留。新文件写入才有可能覆盖这些区域,一旦覆盖就很难找回。恢复的本质就是扫描磁盘,找到这些还存在、但索引丢失的数据条目,再把它们导出保存到其他分区。越早停止写入,恢复成功的概率越高。
Windows/Linux下强实时运动控制内核(二):基于Qt的Delta机械手的开发应用
强实时运动控制内核MotionRT750下Qt开发Delta机械手的完整开发流程。
Linux epoll 一篇讲透:从 select/poll 到红黑树、LT/ET,再到完整 TCP 服务器
一万个客户端已经连上服务器,眼下只有十个客户端发来了数据。服务器怎样把时间花在这十个连接上?理解这个问题,就抓住了 epoll 的主线。接下来,我们沿着“为什么需要它 → 接口怎么用 → 内核如何实现 → LT/ET 怎么写 → 完整服务器怎么运行”的顺序,把知识连起来。**阅读基础:**了解socketbindlistenaccept的基本用途即可。本文示例面向 Linux,服务器使用 C++17,实验脚本使用 Python 3。
Linux、Shell、MySQL 测试卷逐题细讲(下篇:MySQL)
本文为Linux、Shell、MySQL测试卷下半段MySQL部分逐题讲解,包含填空、选择与SQL分析三类题型。填空题覆盖COUNT、HAVING、DISTINCT、事务、约束、索引等核心语法;选择题辨析存储过程、索引类型、ACID、存储引擎、用户管理等考点。SQL大题围绕员工、部门、职位、地点四张关联表,考察多表连接、分组聚合、自连接、相关子查询、NULL处理等高频写法,标注LEFT JOIN统计计数、NULL判断、子查询别名等易错坑点,同时梳理试卷OCR识别带来的干扰问题,重点提示SQL实操中的常见失误
Linux 网络基础详解:IP、子网、路由与 ip、ss 命令实战
建库建表、增删改查、连接查询(内连左连右连)、聚合函数、权限控制 GRANT/REVOKE,每条命令配可运行示例,零基础也能跟着敲会 SQL 基础。
深入浅出聊聊 Linux 的 PageCache 与系统极致性能
本文深入浅出解析了 Linux PageCache 的核心机制,揭示其如何通过“延迟写、预读读”提升系统性能。以监控告警为切入点,阐明 free -h 中 buff/cache 并非真正占用,真正可用内存由 available 决定。结合 Kafka、Elasticsearch、MySQL 等实战场景,说明中间件如何依赖 PageCache 实现极致性能。强调不可手动清理缓存,并建议合理调优脏页参数,避免卡顿。最终指出:内存满≠危机,而是系统高效运行的体现。
6205



被折叠的 条评论
为什么被折叠?



