(整理)GNU Hurd项目详解

http://www.ha97.com/3188.html
发表于: 开源世界 | 作者: 博客教主

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项目详解的更多相关文章

  1. Redis 配置文件 redis.conf 项目详解

    Redis.conf 配置文件详解 # [Redis](http://yijiebuyi.com/category/redis.html) 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, ...

  2. Mac下Intellij IDea发布Web项目详解一

    Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intellij IDea发布J ...

  3. eclipse里面构建maven项目详解(转载)

    本文来源于:http://my.oschina.net/u/1540325/blog/548530 eclipse里面构建maven项目详解 1       环境安装及分配 Maven是基于项目对象模 ...

  4. Mac下Intellij IDea发布Java Web项目详解五 开始测试

    测试前准备工作目录 Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intell ...

  5. JAVA Eclipse使用Maven构建web项目详解(SSM框架)

    tips: 启动项目后,welcome-file的链接即为测试用例 部署maven web项目 Eclipse使用Maven构建web项目详解 pom.xml添加webapp依赖: <depen ...

  6. 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+SpringMVC项目详解

    http://blog.csdn.net/noaman_wgs/article/details/53893948 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+Spri ...

  7. tomcat通过tomcat 安装根目录下的conf-Catalina-localhost目录发布项目详解

    tomcat通过conf-Catalina-localhost目录发布项目详解   Tomcat发布项目的方式大致有三种,但小菜认为通过在tomcat的conf/Catalina/localhost目 ...

  8. [转帖]Windows注册表内容详解

    Windows注册表内容详解 来源:http://blog.sina.com.cn/s/blog_4d41e2690100q33v.html 对 windows注册表一知半解 不是很清晰 这里学习一下 ...

  9. Usage、Usage Minimum和Usage Maximum项目详解

    (1)一个产生多个数据域(Report Count>1)的主项目之前有一个以上的[用途]时,每个[用途]与一个数据域依次对应,如果数据域个数(Report Count)超过[用途]的个数,则剩余 ...

随机推荐

  1. ckeditor从word粘贴图片

    自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...

  2. cookbook 6.1 温标的转换

    任务: 在开氏温度(Kelvin).摄氏度(Celsius).华氏温度(Fahrenheit).兰金温度(Rankine)之间做转换 解决方案: #coding=utf-8 class Tempera ...

  3. Jmeter(六)关联之XPath提取器

    如果请求返回的消息为xml或html格式的,可以用XPath提取器来提取需要的数据 以http://www.weather.com.cn/为例: 先新建一个HTTP请求GetCityURL,获取城市天 ...

  4. AtCoder AGC038F Two Permutations (网络流、最小割)

    题目链接 https://atcoder.jp/contests/agc038/tasks/agc038_f 题解 好题. 首先观察到一个性质,对于排列\(P\), 其所形成的每个轮换中的点\(A_i ...

  5. Linux网络编程二、tcp连接API

    一.服务端 1.创建套接字: int socket(int domain, int type, int protocol); domain:指定协议族,通常选用AF_INET. type:指定sock ...

  6. 微信小程序_(组件)flex布局

    小程序建议使用flex布局进行排版 flex是一个盒装弹性布局 flex是一个容器,所有子元素都是他的成员 定义布局:display:flex flex容器的属性: 一.flex-direction: ...

  7. 常用Linux文件或目录的命令

    1, mkdir命令 mkdir用来创建指定名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. (1)     命令格式:mkdir [选项] 目录 ( ...

  8. HearthBuddy的plugin加载

    // Hearthbuddy.Windows.MainWindow // Token: 0x060001FF RID: 511 RVA: 0x0008951C File Offset: 0x00087 ...

  9. ftp相关

    已经存在虚拟账户 添加新账户 .在/etc/vsftpd/user.txt里面配置用户名密码 单行是用户名 双行是密码 .导入新用户密码 db_load -T -t hash -f /etc/vsft ...

  10. ubuntu下如何高速下载?

    答: 使用uget工具 1.安装uget sudo apt-get install uget -y 2.下载时在设置里指定最大连接数 笔者指定最大连接数为10,可以适当调整此值