GNU 허드

GNU Hurd
GNU 허드
Hurd-logo.svg
Debian GNU HURD text mode screenshot.png
개발자GNU 프로젝트
토머스 부시넬
롤랜드 맥그래스
마르쿠스 브링크만
닐 월필드
사무엘 티보
기입처조립체, C
OS 패밀리Unix와 같은
동작 상태현재의
소스 모델무료 소프트웨어
초기 릴리즈1990년; 32년 전(1990년)
최신 릴리즈0[1].9 / 2016년 12월 18일
저장소
플랫폼IA-32, i686
커널 타입멀티서버 마이크로커널
면허증.GPL-2.0 이후[2]
공식 웹사이트www.gnu.org/software/hurd/

GNU Hurd는 GNU 마하 마이크로커널용 GNU의 일부로 작성된 마이크로커널 서버 모음입니다.1990년부터 자유 소프트웨어 재단의 GNU 프로젝트에 의해 개발되어 유닉스 [3]커널을 대체하기 위해 설계되었으며 GNU General Public License에 따라 자유 소프트웨어로 출시되었습니다.Linux 커널이 실행 가능한 솔루션임이 판명되었을 때, GNU Hurd의 개발은 느려졌고, 때때로 정지상태와 새로운 활동 및 [4]관심 사이를 왔다 갔다 했다.

Hurd의 설계는 GNU 마하 [3]마이크로커널에서 실행되는 일련의 프로토콜과 서버 프로세스(유닉스 용어로는 데몬)로 구성됩니다.Hurd는 기능, 보안 및 안정성 면에서 Unix 커널을 능가하는 것을 목표로 하고 있으며, 이와 거의 호환성을 유지하고 있습니다.GNU 프로젝트는 운영체제를 위해 멀티서버 마이크로커널을[5] 선택하였는데, 이는 [4]1980년대에 일부 개발자들에 의해 주창되었던 전통적인 유닉스 모노리식 커널 [6]아키텍처에 비해 인식된 이점 때문이다.

1991년 12월 Hurd의 주요 설계자는 상호 재귀적 [7]약자로 이 이름을 설명했다.

이제 "허드"의 의미를 설명할 때입니다. "허드"는 "유닉스 대체 대몬의 희드"를 의미합니다.그리고 "Hird"는 "Hard of Interfaces Representing Depth"를 나타냅니다.제가 아는 바로는 상호 재귀적인 두문자어로 명명된 첫 번째 소프트웨어가 있습니다.

--

Hurdhird는 모두 영어 단어 무리와 동음이의어이기 때문에 GNU Hurd라는 풀네임도 커널의 [8]구조를 반영하여 gnus라는 단어 무리에 대한 놀이입니다.

이 로고는 허드 박스라고 불리며 건축을 반영하기도 한다.로고는 노드가 Hurd 커널의 서버를 나타내며 지정된 가장자리가 IPC [7]메시지인 그래프입니다.

개발 이력

Richard Stallman1983년 9월에 무료 GNU 운영 체제를 만드는 것을 목표로 GNU 프로젝트를 설립했습니다.처음에는 커널 개발에 필요한 컴포넌트: 에디터, , 컴파일러, 디버거 등이 작성되었습니다.1989년에 GNU GPL이 등장하여 유일하게 누락된 주요 컴포넌트는 [9][10]커널이었습니다.

허드에 대한 개발은 MIT의 컴퓨터 과학 연구소(LCS)[11]의 Steve Ward 교수와 그의 연구팀이 개발한 TRIX 운영체제를 바탕으로 1986년 포기된 커널 시도 후 1990년에 시작되었습니다.최초의 허드 건축가 토마스 부시넬에 따르면, 그들의 초기 계획은 4.4를 개조하는 것이었다.BSD-Lite 커널과 나중에 생각해보면, "이것이 훌륭하게 성공했을 [12]것이고 오늘날 세계는 매우 다른 곳이 될 것이라는 것이 이제 나에게 완전히 명백해졌다."1987년 리처드 스톨만은 카네기 멜론 대학의 리처드 라시드가 개발한 마하 마이크로커널을 사용할 것을 제안했다.CMU가 적절한 [11]라이선스로 마하 코드를 공개할지에 대한 불확실성으로 인해 이 작업은 3년 동안 지연되었다.

1991년 Linux 커널의 출시와 함께 GNU의 사용자랜드 컴포넌트의 주요 사용자는 곧 Linux 커널(Linux 디스트리뷰션)에 기반한 운영 체제가 되었고, GNU/Linux라는 용어의 결합을 촉진하였다.

허드의 개발은 더디게 진행되고 있다.2002년 Stallman이 [13]GNU/Hurd의 출시를 낙관적으로 발표했지만 Hurd는 여전히 프로덕션 환경에 적합하지 않은 것으로 간주되고 있습니다.개발은 일반적으로 기대에 미치지 못하고 있으며 여전히 많은 버그와 기능이 [14]누락되어 있습니다.이로 인해 Stallman을 포함한 많은 사람들이 [15]예상했던 것보다 더 불량한 제품이 나왔습니다.Stallman은 개발 20년 후인 2010년에 "GNU Hurd에 대해 그다지 낙관적이지 않다.이것은 어느 정도 진전을 이루지만, 정말로 우수하기 위해서는 많은 깊은 문제를 해결해야 할 것입니다." 그러나 GNU 시스템에 대해 "완료하는 것은 중요하지 않습니다."라고 덧붙였습니다. 왜냐하면 무료 커널이 이미 존재하기 때문입니다(Linux). 그리고 Hurd를 완료하는 것은 무료 운영 체제의 주요 남은 문제인 디바이스 [16]지원에 대처하지 못할 것입니다.

Debian 프로젝트는 IBM PC 호환 시스템용 Hurd 기반 GNU 운영 체제의 바이너리 디스트리뷰션을 제작하는 Hurd 프로젝트를 수행해 왔습니다.

수년간의 침체 끝에 2015년과 2016년에 개발이 다시 시작되었으며, 이 2년 [17]동안 4개의 릴리즈가 출시되었습니다.

2015년 8월 20일, Google Summer of Code의 와중에, GNU Guix가 GNU [18]Hurd로 이식되었다고 발표되었습니다.

아키텍처

모노리식, 마이크로커널 및 하이브리드 커널 기반 운영 체제의 일반적인 구조입니다.

대부분의 Unix와 같은 커널과는 달리 Hurd는 가장 기본적인 커널 서비스를 제공하는 마이크로커널을 기반으로 구축된 서버 클라이언트 아키텍처를 사용합니다.이러한 아키텍처는 하드웨어에 대한 접근을 조정합니다.CPU(프로세스 관리 및 스케줄링통해), RAM(메모리 관리를 통해), 기타 다양한 입출력 디바이스(I/O 스케줄링을 통해)입니다.und, 그래픽스, 대용량 스토리지 등이론적으로 마이크로커널 설계에 의해 모든 디바이스 드라이버가 사용자 공간에서 동작하는 서버로서 구축될 수 있지만, 오늘날에도 이러한 종류의 드라이버는 대부분 GNU 마하 커널 [19]공간에 포함되어 있습니다.

Hurd developers에 따르면 마이크로커널 기반 설계의 주요 장점은 시스템을 확장할 수 있다는 것입니다.새로운 모듈을 개발하는 것은 커널의 나머지 부분에 대한 깊은 지식이 필요하지 않으며, 한 모듈의 버그가 시스템 전체를 손상시키지 않습니다.Hurd는 파일 시스템 [20]기능을 확장하기 위해 사용되는 모듈 프레임워크인 번역기 개념을 제공합니다.

초기부터 Hurd는 GNU Mach를 마이크로커널로 사용하도록 개발되었습니다.이것은 리처드 스톨먼이 내린 기술적인 결정으로, 그는 많은 부분을 절약함으로써 작업의 속도를 높일 수 있을 것이라고 생각했다.그는 그것에 [21]대해 자신이 틀렸다는 것을 인정했다.마하 마이크로커널에서 작동하는 다른 Unix와 유사한 시스템으로는 OSF/1, Lites MkLinux가 있습니다. macOSNextSTEP은 마하 기반의 하이브리드 커널을 사용합니다.

기타 마이크로커널

2004년 이후, Hurd를 보다 현대적인 마이크로커널에 이식하기 위한 다양한 노력이 시작되었다.L4 마이크로커널은 2004년에 처음 선택되었지만 진행이 느려져 중단되었습니다.그럼에도 불구하고 2005년 Hurd 개발자인 Neal Walfield는 L4/Hurd 포트의 초기 메모리 관리 프레임워크를 완료하고 Marcus Brinkmann은 glibc의 중요한 부분을 이식했습니다.즉, 프로세스 시작 코드를 작동시키고 프로그램을 실행할 수 있게 함으로써 C에서 첫 번째 사용자 프로그램(hello world 프로그램 등 간단한 프로그램)을 사용할 수 있게 되었습니다.달려.

2005년부터 브링크만과 월필드는 코요토스를 [22][23]HURD의 새로운 커널로 연구하기 시작했다.2006년에 Brinkmann은 GNU/Hurd용 Coyotos 커널의 사용을 지원하고 논의하기 위해 Jonathan Shapiro(Coyotos 운영 체제의 주요 설계자)를 만났습니다.HURD 개발자들은 코요토스(및 다른 유사한 커널)가 [24]HURD에 적합하지 않다는 것을 알게 되었습니다.

2007년 허드 개발자인 닐 월필드와 마커스 브링크만은 "비판"[25]으로 알려진 허드 아키텍처에 대한 비판과 "포지션 페이퍼"[26]로 알려진 미래 시스템 설계 방법에 대한 제안을 했습니다.2008년 Neal Walfield는 HURD의 현대적인 네이티브 커널로서 Viengus 마이크로커널을 개발하기 시작했습니다.2009년 현재 빈구스 개발은 왈필드의 [27]작업시간 부족으로 중단됐다.

한편, 다른 사람들은 Hurd의 [28]마하 변형을 계속 연구해왔다.

Unix 확장 기능

많은 전통적인 Unix 개념이 Hurd에서 대체되거나 확장되었습니다.

UNIX에서는 실행 중인 모든 프로그램에는 관련 사용자 ID가 있으며, 이는 일반적으로 프로세스를 시작한 사용자에 해당합니다.이 ID는 주로 프로그램에 허용된 액션을 지정합니다.외부 프로세스에서는 실행 중인 프로그램의 사용자 ID를 변경할 수 없습니다.한편 Hurd 프로세스는 여러 ID를 포함할 수 있는 일련의 사용자 ID로 실행됩니다.충분한 권한이 있는 프로세스는 다른 프로세스에 ID를 추가하거나 삭제할 수 있습니다.예를 들어, 올바른 로그인 패스워드의 대가로 ID를 배포하는 패스워드 서버가 있습니다.

파일 시스템에 대해서는, 1개의 파일 또는 디렉토리 계층 전체의 번역자로서 적절한 프로그램을 지정할 수 있다.번역된 파일(두 번째 경우 계층 아래 파일)에 대한 모든 액세스는 실제로 프로그램에 의해 처리됩니다.예를 들어, 파일 변환자는 읽기 및 쓰기 작업을 UNIX 심볼릭 링크와 같은 다른 파일로 리다이렉트할 수 있습니다.UNIX 의 마운트 효과는, 파일 시스템 변환기를 셋업 하는 것으로 실현됩니다( 「settrans」명령어를 사용).번역기를 사용하여 사용자에게 서비스를 제공할 수도 있습니다.예를 들어 ftpfs translator를 사용하면 리모트 FTP 사이트를 디렉토리 내에 캡슐화할 수 있습니다.그런 다음 ls, cp, rm 의 표준 도구를 사용하여 원격 시스템의 파일을 조작할 수 있습니다.한층 더 강력한 변환자는 UnionFS 와 같은 변환자입니다.이것에 의해, 유저는 복수의 디렉토리를 1 개의 디렉토리로 통합할 수 있습니다.따라서, 통합 디렉토리를 나열하면, 모든 디렉토리의 내용이 표시됩니다.

Hurd에는 GRUB와 같은 멀티부트 호환 부트 로더가 필요합니다.

서버 아키텍처

Debian 문서에 따르면 다음과 [29]같은 이름의 서버가 24개(코어 서버 18개 및 파일시스템 서버 6개) 있습니다.

코어 서버

  • auth(인증 서버):프로그램으로부터 요청 및 암호를 수신하고 ID를 부여하여 프로그램 권한을 변경합니다.
  • 크래시(클래시 서버):모든 치명적인 오류를 처리합니다.
  • eieio(번역 서버): TODO
  • exec(스탠드 서버):실행 가능한 이미지(현재 ELF 및 a.out 지원)를 메모리 내의 실행 가능한 이미지로 변환합니다.
  • FIFO(FIFO 변환기):명명된 파이프를 구현합니다.
  • new-fifo(새로운 FIFO 서버):명명된 파이프에 대한 대체 서버입니다.
  • firmlink(firmlink translator):firmlinks " "심볼릭링크하드링크 사이의 하프웨이"[30]를 실장합니다.
  • fwd(전송 서버):fifo 및 symlink 서버에서 사용되는 요청을 다른 서버로 전송합니다.
  • hostmux(호스트 멀티플렉서 서버)
  • ifsock(소켓 인터페이스용 서버):UNIX 도메인 소켓주소를 지원합니다.
  • init(init 서버):기본 시스템 부팅 및 구성
  • magic(마법 서버):결과에 프로세스 상태가 포함된 경우 프로세스에서 내부적으로 이름 검색을 해결해야 함을 나타냅니다.
  • null(스위치 서버):/dev/null 및 /dev/zero를 구현합니다.
  • pfinet(pfinet 서버):PF_INET 프로토콜 패밀리를 구현합니다.
  • pflocal(pflocal 서버):UNIX 도메인 소켓을 실장합니다.
  • proc(프로세스 서버):PID를 할당하고 프로세스 수준의 액션을 관리합니다.
  • symlink(링크 변환기):심볼릭 링크를 지원하지 않는 파일 시스템에 구현합니다.
  • term(터미널 서버):POSIX 단말기
  • usermux(사용자 멀티플렉서 서버):사용자 고유의 변환기를 호출합니다.

파일 시스템 서버

ext2fs
ext2 파일시스템 변환기마이크로커널로부터 디스크 블록을 수신해, 파일과 디렉토리를 애플리케이션에 제공합니다.
아이소프
ISO 9660 파일시스템용 번역기CD 또는 DVD 블록을 응용 프로그램의 파일 및 디렉토리로 변환합니다.
nfs
네트워크 파일 시스템」을 참조해 주세요.
ufs
같은 이름의 BSD 파일시스템(UFS)용 변환기.
ftpfs
파일 전송 프로토콜 파일 시스템 변환기.
스토어
스토리지 번역기

서버는 POSIX API를 일괄적으로 구현하며 각 서버는 인터페이스의 일부를 구현합니다.예를 들어, 다양한 파일 시스템서버는 각각 파일 시스템콜을 실장합니다.스토리지 서버는 Linux의 블록 계층과 마찬가지로 래핑 계층으로 작동합니다.LinuxVFS와 동등한 기능은 libdiskfs 및 libpager 라이브러리를 통해 구현됩니다.

Hurd를 실행하는 GNU 디스트리뷰션

Xfce를 사용한 Debian GNU/Hurd

Hurd 기반의 GNU 디스트리뷰션에는 다음이 포함됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "GNU Hurd 0.9, GNU Mach 1.8, GNU MIG 1.8 released". Retrieved 11 May 2018.
  2. ^ "COPYING - hurd/hurd.git - Hurd". Git.savannah.gnu.org. Retrieved 25 February 2019.
  3. ^ a b "What Is the GNU Hurd?". GNU. Retrieved 2010-03-04.
  4. ^ a b Tozzi, Christopher (2015-04-20). "30 Years On, HURD Lives: GNU Updates Open Source Unix Kernel". Archived from the original on 2015-04-24.
  5. ^ "What is a Multiserver Microkernel?". Gnu.org. 2013-04-13. Retrieved 2015-08-11.
  6. ^ "advantages". GNU. Retrieved 2011-12-07.
  7. ^ a b Vervloesem, Koen (July 7, 2010). "The Hurd: GNU's quest for the perfect kernel". LWN.net. Retrieved October 5, 2012.
  8. ^ "GNU Hurd: Origin of the Name". GNU. Retrieved 2010-03-04.
  9. ^ Hillesley, Richard (June 30, 2010). "GNU HURD: Altered visions and lost promise". Retrieved October 1, 2012.
  10. ^ "Linux and the GNU Project". GNU. 2010-01-26. Retrieved 2010-03-04.
  11. ^ a b "The GNU Hurd History, 'How it Started'". GNU. Retrieved 2006-08-27.
  12. ^ Salus, Peter. "The Daemon, the GNU and the Penguin". Retrieved 2006-08-08.
  13. ^ Ribeiro, John (2002-03-11). "Free Software Sees GNU Loose of Linux". PC World. Archived from the original on 2016-09-22. Retrieved 2012-10-05.
  14. ^ "Status". GNU. Retrieved 2010-03-04.
  15. ^ Stallman, Richard (2006-03-09). "The Free Software Movement and the Future of Freedom" (ogg). Free Software Foundation. Zagreb. This is the way, also, that people thought was the cleanest possible way to design kernels back in 1990. Well, it took many many many years to get this kernel to run at all, and it still doesn't run well, and it looks like there may be fundamental problems with this design, which nobody knew about back in 1990.
  16. ^ Stallman, Richard (2010-07-29). "RMS AMA". Reddit. Retrieved 2011-12-07.
  17. ^ "Free Software Foundation changes priorities - SD Times". SD Times. 2017-01-17. Retrieved 2017-04-17.
  18. ^ Ragkousis, Manolis (August 20, 2015). "[GSoC update] Porting Guix to GNU/Hurd" (Mailing list). guix-devel. Retrieved August 20, 2015.
  19. ^ Kousoulos, Constantine (2007-03-21). "Re: Device drivers in Mach?". bug-hurd (Mailing list).
  20. ^ Doeppner, Thomas W. (20 December 2010). Operating Systems In Depth: Design and Programming. John Wiley & Sons. p. 160. ISBN 978-0-471-68723-8. Retrieved 29 November 2012.
  21. ^ Stallman, Richard (2000-10-12). "In Defense of Red Hat". Linux Today. Retrieved 2011-12-07. I take full responsibility for the technical decision to develop the GNU kernel based on Mach, a decision which seems to have been responsible for the slowness of the development. I thought using Mach would speed the work by saving us a large part of the job, but I was wrong.
  22. ^ Shapiro, Jonathan S. (2005-10-27). "Re: A comment about changing kernels". l4-hurd (Mailing list).
  23. ^ Bachmann, Tom (2006-07-07). "Re: seL4, L4.sec and coyotos mess". l4-hurd (Mailing list).
  24. ^ "Porting the Hurd to another microkernel". GNU Hurd. Free Software Foundation. Retrieved 2017-05-06.
  25. ^ Walfield, Neal H.; Brinkmann, Marcus (July 2007). "A Critique of the GNU Hurd Multi-server Operating System" (PDF). GNU. Retrieved 2011-12-07.
  26. ^ Walfield, Neal H.; Brinkmann, Marcus (2007-01-04). "Improving Usability via Access Decomposition and Policy Refinement" (PDF). GNU. Retrieved 2011-12-07.
  27. ^ "viengoos". GNU. Retrieved 2010-03-04.
  28. ^ "What happened to the L4/Coyotos/viengoos micro-kernels?". GNU. Retrieved 2011-01-07.
  29. ^ "Preliminary GNU/Hurd User Interface Description". Debian. 1996-10-10. Retrieved 2010-03-04.
  30. ^ "GNU/Hurd - Documentation". Debian. 1996-10-10. Retrieved 2012-07-12.
  31. ^ "GNU Hurd/ hurd/ running/ distrib". Gnu.org. 2015-05-03. Retrieved 2017-09-21.
  32. ^ "GNU Hurd/ hurd/ running/ live cd". Gnu.org. 2013-04-09. Retrieved 2017-09-21.

외부 링크