[转帖](整理)GNU Hurd项目详解
Hurd原本是要成为GNU操作系统的真正内核,然而它从未真正降临人间。Linus Torvalds曾经写过,如果GNU kernel在1991年春天发布,他不会启动Linux项目。GNU操作系统项目始于1984年,在Linux出现之前它有7到8年的时间创造出一个可用的内核,然而它的开发进程,不时被频繁的改变中断。Richard Stallman为了无止境寻找完美内核,而忘记了HURD的原本目的:能用的操作系统。


Richard Stallman(RMS)在1983年9月建立了GNU项目,当时没人相信他能创建一个类似UNIX的完整操作系统,但十分固执的RMS没有改变他的伟大目标。在内核诞生之前,前期的工作已经陆续完成,如编辑器、编译器、bash、make、autoconf和emacs等都已经开发了出来。但RMS在开发GNU Emacs时的遭遇对整个项目产生深远影响。
RMS听说了名叫“Free University Compiler Kit(简称VUCK)”的编译器,于是写信给作者询问是否可以在GNU中使用,结果作者傲慢的回信称,大学也许“免费(Free)”,但编译器要收费。RMS于是创造了GCC。在此期间RMS改变了GNU项目背后的哲学概念,强调了自由软件的意义,并将其写入GPL许可证中。
这一变化对HURD项目的影响是:内核必须发布到公有领域…HURD最初取名为Alix,这一名字来自RMS的“恋人”,不过内核架构师Thomas Bushnell更偏爱HURD这个名字,它是“HIRD of Unix Replacing Daemons”的间接递归缩写….GNU项目与卡内基梅隆大学达成协议,于1991年5月正式宣布HURD项目,它将基于卡内基梅隆大学的Mach微内核。但在当年的4月,Torvalds已经开始酝酿Linux项目。
Hurd 简介
GNU Hurd 是 GNU 工程中取代 Unix 的核心。 Hurd 是一组运行在 Mach 微内核上的服务器,用来实现 Unix 或其他核心(如 Linux)实现了的文件系统、网络协议、及文件访问控制等其他功能。
目前,Hurd 运行在 IA32 系统上。未来 Hurd 应该,而且可能会被移植到其他硬件系统或微内核上。
Hurd 的优点
Hurd 不是一个已知的最先进的内核,但它有一些诱人的特点:
它是自由软件
任何人在遵守 GNU General Public License (GPL) 的条件下,都可以使用、修改或重新发布它。它的兼容性
Hurd 提供了一个熟悉的编程和用户环境。对於所有的意图和目的来说,Hurd 都是一个现代的类 Unix 的内核。 Hurd 使用了 GNU C 库,而此库的开发紧紧追踪 ANSI/ISO、BSD、POSIX、Single Unix、SVID 及 X/Open 等标准。可持续发展的构造
与其他流行的内核软件不同,Hurd 拥有面向对象的结构,这就使得它不断发展而不用改变当前的设计。这种结构将有助於完成 Hurd 主要的重设计和修改而不必完全重写代码。它的规模很大
Hurd 实现了强有力的多线程,以便它在单处理器和对称多处理器上都可以高效运行。 Hurd 的接口设计成允许透明网络组的共有,但这个特性尚未实现。它是可扩展的
对於学习怎样成为一个内核黑客或者在内核技术中实现新想法来说, Hurd 是一个有吸引力的平台。系统的每一个部分都设计成可修改和扩展的。它是稳定的
在开发和测试新的 Hurd 内核组件时,可能不需重新启动机器(即使是意外的)。运行自己的内核组件不会妨碍其他用户,而且这并不需要特殊的系统权限。由於这种设计,扩展内核的程序是安全的:除非他们认可这种改动或者你是系统管理员,否则你的修改不可能影响到其他用户。它已经存在
Hurd 是正在工作中的真实的软件。不是一个研究项目或提案。你可以开始使用并开发它,而根本不必等待。
Hurd 的含义
据 Thomas Bushnell,BSG,Hurd 的主设计师所述:
『Hurd』代表『Hird of Unix-Replacing Daemons』,而『Hird』又代表了『Hurd of Interfaces Representing Depth』。据我所知,这里,我们拥有了第一个以一对双关语命名的软件。
此工程的重要地位
今天,Hurd 与 GNU Mach 微内核、GNU C 库和其他 GNU 系统中的 GNU 以及非 GNU 程序一起,提供了一个相当完整且可用的操作系统。因为还有许多错误和未完成的特性,所以 Hurd 还不能用作生产。然而,它应该为更深入的开发和非关键性程序的使用提供了一个良好的基础。
GNU 系统 (也称作 GNU/Hurd) 完全是自我包含的(你可以使用 GNU 自身编译它的所有部分)。你可以并行运行若干个 Hurd ,甚至可以用在另一个 Hurd 上运行的的 gdb 来调试某一 Hurd 上运行的关键服务。你可以运行 X 窗口系统,使用它的应用程序和 Apache 等高级服务器应用程序。
反过来看,对块设备(如声卡)和其他设备的支持大部分还处在短缺之中。即使提供了 POSIX 接口,一些额外的接口,像 POSIX 共享内存或旗语等都仍在开发之中。
所有这些适用於目前正在开发的版本,而不是上次的发布(0.2)。我们鼓励每一个感兴趣的人试用最新的开发版,并将反馈信息发送给 Hurd 的开发者。
GNU Hurd官方主页:http://www.gnu.org/software/hurd/
GNU Hurd开发版下载:http://ftp.debian-ports.org/debian-cd/hurd-i386/L1/
参考资料:http://en.wikipedia.org/wiki/GNU_Hurd
[转帖](整理)GNU Hurd项目详解的更多相关文章
- Redis 配置文件 redis.conf 项目详解
Redis.conf 配置文件详解 # [Redis](http://yijiebuyi.com/category/redis.html) 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, ...
- Mac下Intellij IDea发布Web项目详解一
Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intellij IDea发布J ...
- eclipse里面构建maven项目详解(转载)
本文来源于:http://my.oschina.net/u/1540325/blog/548530 eclipse里面构建maven项目详解 1 环境安装及分配 Maven是基于项目对象模 ...
- Mac下Intellij IDea发布Java Web项目详解五 开始测试
测试前准备工作目录 Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intell ...
- JAVA Eclipse使用Maven构建web项目详解(SSM框架)
tips: 启动项目后,welcome-file的链接即为测试用例 部署maven web项目 Eclipse使用Maven构建web项目详解 pom.xml添加webapp依赖: <depen ...
- 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+SpringMVC项目详解
http://blog.csdn.net/noaman_wgs/article/details/53893948 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+Spri ...
- tomcat通过tomcat 安装根目录下的conf-Catalina-localhost目录发布项目详解
tomcat通过conf-Catalina-localhost目录发布项目详解 Tomcat发布项目的方式大致有三种,但小菜认为通过在tomcat的conf/Catalina/localhost目 ...
- [转帖]Windows注册表内容详解
Windows注册表内容详解 来源:http://blog.sina.com.cn/s/blog_4d41e2690100q33v.html 对 windows注册表一知半解 不是很清晰 这里学习一下 ...
- Usage、Usage Minimum和Usage Maximum项目详解
(1)一个产生多个数据域(Report Count>1)的主项目之前有一个以上的[用途]时,每个[用途]与一个数据域依次对应,如果数据域个数(Report Count)超过[用途]的个数,则剩余 ...
随机推荐
- Asteroids POJ - 3041
Asteroids POJ - 3041 题目大意:N*N的地图里,存在一些小行星,Bessie有个很牛x但又很耗蓝的武器,一次可以消灭一行或者一列的所有小行星,问最少使用多少次这个武器可以消灭所有的 ...
- Codeforces 474D Flowers(DP)
题目链接 非常简单的一道dp题,通过O(n)的预处理来使查询变为O(1). 主要的坑在于取模后的dp数组的前缀和再相减可能得到负数,导致无法得到某一区间和的取模. 解决方法:(a-b)%mo==(a% ...
- [CSP-S模拟测试]:二叉搜索树(DP+贪心)
题目传送门(内部题99) 输入格式 第一行一个整数$n$,第二行$n$个整数$x_1\sim x_n$. 输出格式 一行一个整数表示答案. 样例 样例输入: 58 2 1 4 3 样例输出: 数据范围 ...
- 关于数据库表设计之区域表system_district:省市县街道四级地址表
关于省市县的数据表的设计有两种方式: 一.将其设计成一张表 DROP TABLE IF EXISTS `system_district`; CREATE TABLE `system_district` ...
- Linux下压缩和解压命令
http://man.linuxde.net/tar
- Java - 自动装箱与拆箱详解
1.装箱与拆箱 装箱,将基本数据类型转为包装类型.拆箱,将包装类型转为基本数据类型. // Byte, Short, Integer, Long, Double, Float, Boolean, Ch ...
- 关于colab的一些技巧
1.指定工作文件夹(运行可以相对路径!) # 指定当前的工作文件夹 import os # 此处为google drive中的文件路径,drive为之前指定的工作根目录,要加上 os.chdir(&q ...
- FinalCutPro快捷键
FinalCutPro快捷键使用 FinalCutPro的快捷键使用十分有用,特对一些基本的快捷键进行了总结 1)i:截取片段开始Initial 2)o: 截取片段结束Over i和o可以在一个素材片 ...
- CoordinatorLayout使用全解析
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012124438/article/details/56701641 CoordinatorLayo ...
- [django]update_or_create使用场景
update_or_create 作用是为了添加数据时防止重复. 先去查询, 如果没有在创建, 如果有则更新. update_or_create用法与密码存储实例 create方法 如果id是None ...