드래곤플라이 BSD
DragonFly BSD개발자 | 매슈 딜런 |
---|---|
OS 제품군 | Unix 유사(FreeB)SD) |
작업 상태 | 현재 |
소스 모델 | 오픈 소스 |
초기 릴리즈 | 1.0 / 2004년 7월 12일; | 전
최신 릴리즈 | 6.2.1 / 2022년 1월 9일;[1] | 전
리포지토리 | |
다음에서 사용 가능 | 영어 |
패키지 관리자 | pkg |
플랫폼 | x86-64 |
커널형 | 잡종 |
사용자랜드 | BSD |
체납 사용자 인터페이스 | 유닉스 셸 |
면허증 | BSD[2] |
공식 웹사이트 | www |
DragonFly BSD는 FreeBSD 4.8에서 제공하는 무료 오픈 소스 Unix 유사 운영 체제다.1980년대 말과 1990년대 초 아미가 개발자 매튜 딜런과 프리비1994년과 2003년 사이에 SD 개발자가 DragonFly BSD에 대한 작업을 2003년 6월에 시작하여 FreeB에 발표했다.2003년 7월 16일 SD 메일링 리스트.[3]
딜런은 자유B에서 스레딩과 대칭 멀티프로세싱에 채택된 기법이 DragonFly를 시작했다고 믿고 DragonFly를 시작했다.SD 5는[4] 성능 및 유지보수 문제를 초래할 수 있다.그는 FreeB 내에서 예상되는 이러한 문제들을 바로잡으려고 노력했다.SD 프로젝트.[5]다른 FreeB와의 충돌로 인해그의 아이디어 구현에 대한 SD 개발자들,[6] 코드베이스를 직접 바꾸는 그의 능력은 결국 박탈되었다.그럼에도 불구하고 드래곤플라이 BSD와 FreeB는SD 프로젝트는 버그 수정, 드라이버 업데이트 및 기타 개선 사항을 공유하면서 여전히 함께 작동한다.
DragonFly는 FreeBSD 4.x 시리즈의 논리적인 연속성을 의도하여 FreeBSD에서 크게 벗어나, 경량 커널 스레드(LWKT), 인커널 메시지 전달 시스템, HAMH 파일 시스템을 구현하였다.[7]많은 디자인 컨셉은 아미가에게 영향을 받았다.OS.[8]
시스템 설계
커널
개발 중인 커널 메시징 서브시스템은 설계상 덜 복잡하지만 마하와 같은 마이크로커널에서 발견되는 것과 유사하다.그러나 DragonFly는 단일 커널 시스템을 사용한다.[9]DragonFly의 메시징 서브시스템은 동기식 또는 비동기식 방식으로 동작할 수 있는 능력을 가지고 있으며, 이 기능을 사용하여 어떤 상황에서든 가능한 최고의 성능을 달성하려고 시도한다.[10]
개발자 매튜 딜런에 따르면, 프로젝트 목표의 나머지 부분을 충족할 수 있는 디바이스 입출력(I/O)과 가상 파일 시스템(VFS) 메시징 기능을 모두 제공하는 진척이 이루어지고 있다.새로운 인프라는 커널의 많은 부분을 사용자 공간으로 마이그레이션할 수 있게 할 것이다; 여기서는 커널의 많은 부분이 더 큰 코드 덩어리에 얽혀 있는 대신에 더 작고 고립된 프로그램이 될 것이기 때문에 디버깅이 더 쉬워질 것이다.또한, 선택된 커널 코드를 사용자 공간으로 마이그레이션하면 시스템이 더욱 견고해 질 수 있다는 이점이 있다. 사용자 공간 드라이버가 충돌하더라도 커널을 손상시키지 않는다.[11]
시스템 호출은 사용자랜드와 커널 버전으로 분할되어 메시지로 캡슐화되고 있다.이것은 표준 시스템 통화의 변형을 사용자랜드 호환성 계층으로 이동시킴으로써 커널의 크기와 복잡성을 줄이고 DragonFly 버전 간의 전후 호환성을 유지하는데 도움을 줄 것이다.리눅스 및 기타 유닉스 유사 OS 호환성 코드는 유사하게 마이그레이션되고 있다.[8]
스레딩
다중 명령 집합 아키텍처에 대한 지원이 SMP(대칭 다중 처리) 지원을 복잡하게 만들면서 DragonFly BSD는 이제 x86-64 플랫폼으로 지원을 제한한다.[6][12]DragonFly는 원래 x86 아키텍처에서 실행되었지만 버전 4.0에서는 더 이상 지원되지 않는다.DragonFly는 버전 1.10부터 1:1 userland 스레드(userland 스레드당 커널 스레드 1개)[13]를 지원하고 있어 유지관리가 쉬운 비교적 간단한 솔루션으로 평가받고 있다.[8]FreeBSD로부터 물려받은 DragonFly는 멀티스레딩도 지원한다.[14]
DragonFly에서는 각 CPU마다 고유한 스레드 스케줄러가 있다.생성 시 스레드는 프로세서에 할당되며 한 프로세서에서 다른 프로세서로 선제적으로 전환되지 않는다. 스레드는 관련된 CPU 간에 프로세서 간 인터럽트(IPI) 메시지를 전달함으로써만 마이그레이션된다.프로세서 간 스레드 스케줄링도 비동기 IPI 메시지를 전송하여 수행된다.이러한 나사산 서브시스템의 청정 구획화의 한 가지 이점은 대칭 다중 프로세서 시스템에 있는 프로세서의 온보드 캐시가 중복된 데이터를 포함하지 않고, 시스템의 각 프로세서가 다른 작업을 저장하기 위해 자체 캐시를 사용할 수 있는 기능을 제공함으로써 더 높은 성능을 발휘할 수 있다는 것이다.[8]
LWKT 서브시스템은 여러 커널 스레드들 사이의 작업을 분할하기 위해 채용되고 있다(예를 들어, 네트워킹 코드에서는 프로세서당 하나의 스레드가 있다), 다양한 커널 작업들 사이에서 특정 자원을 공유할 필요가 없어져 경쟁을 감소시킨다.[6]
멀티프로세서 머신에서 안전하게 실행되기 위해서는 공유 리소스(파일, 데이터 구조 등)에 대한 액세스를 직렬화하여 스레드나 프로세스가 동시에 동일한 리소스를 수정하려 하지 않도록 해야 한다.여러 개의 스레드가 공유 리소스에 동시에 액세스하거나 수정하는 것을 방지하기 위해 DragonFly는 중요한 섹션을 채용하고 토큰을 직렬화하여 동시 액세스를 방지한다.Linux와 FreeB 둘 다SD 5는 멀티프로세서 시스템에서 더 높은 성능을 달성하기 위해 미세한 음소거 모델을 채택하지만 DragonFly는 그렇지 않다.[6]최근까지 드래곤플라이도 스플릿을 채용했지만 이 스플릿은 임계 구간으로 대체됐다.
LWKT 서브시스템, IPI 메시징 서브시스템 및 새로운 커널 메모리 할당기를 포함한 시스템 코어의 대부분은 잠금장치가 없으며, 이는 각 프로세스가 단일 CPU에서 작동하며, 각각의 CPU에 대해 개별적으로 로컬 인터럽트를 방지하기 위해 사용된다는 것을 의미한다. 중요한 섹션은 각 CPU에 대해 개별적으로 로컬 인터럽트를 보호하는 데 사용된다.ntly는 실행되지 않을 것이다.[13]
토큰 직렬화는 다른 CPU로부터의 동시 액세스를 방지하기 위해 사용되며, 여러 스레드에 의해 동시에 보유될 수 있으며, 이러한 스레드 중 하나만 지정된 시간에 실행되도록 보장한다.따라서 차단되거나 절전 모드인 스레드는 뮤텍스를 보유하는 스레드와 달리 다른 스레드가 공유 리소스에 액세스하는 것을 막지 않는다.무엇보다도 토큰을 직렬화하는 것은 뮤텍스를 사용할 때 교착 상태와 우선 순위 역전을 초래할 수 있는 많은 상황을 방지하는 것은 물론, 여러 스레드 간에 자원을 공유해야 하는 다단계 절차의 설계와 구현을 크게 단순화한다.직렬화 토큰 코드는 현재 Linux에서 사용할 수 있는 "읽기-복사-업데이트" 기능과 상당히 유사한 기능으로 진화하고 있다.드래곤플라이는 현재 리눅스의 RCU 구현과 달리 컴퓨터의 모든 프로세서가 아닌 동일한 토큰을 놓고 경쟁하는 프로세서만 영향을 받는 방식으로 구현되고 있다.[15]
DragonFly는 멀티프로세서 안전 슬래브 할당기로 전환했는데, 메모리 할당 작업에 뮤텍스나 차단 작업이 필요하지 않다.[16]그것은 결국 사용자랜드의 표준 C 라이브러리에 포팅되어 FreeB를 대체했다.SD의 말로크 구현.[17]
가상 커널
출시 1.8 DragonFly는 User-Mode Linux와 유사한 가상화 메커니즘을 가지고 있어 사용자가 사용자랜드에서 다른 커널을 실행할 수 있다.[18]가상 커널(vmkernel)은 에뮬레이트된 네트워크와 스토리지 인터페이스로 완전히 격리된 환경에서 실행되므로 커널 서브시스템 테스트와 클러스터링 기능이 단순화된다.[8][11]
VMkernel은 실제 커널과 두 가지 중요한 차이점을 가지고 있는데, 즉, 낮은 수준의 하드웨어 관리를 처리하기 위한 많은 루틴이 결여되어 있고, 가능한 경우 VMkernel 구현 대신 C 표준 라이브러리(libc) 기능을 사용한다.실제 커널과 가상 커널이 모두 동일한 코드 베이스에서 컴파일되므로, 이는 플랫폼에 의존하는 루틴과 libc 기능의 재이행이 소스 트리에서 명확하게 분리됨을 의미한다.[19]
VMkernel은 실제 커널에서 제공하는 하드웨어 추상화 위에서 실행된다.여기에는 kqueue 기반 타이머, 콘솔(vmkernel이 실행되는 가상 터미널에 매핑됨), 디스크 이미지 및 VKE(가상 커널 이더넷 디바이스)가 포함되며, 모든 패킷을 호스트의 탭 인터페이스로 터널링한다.[20]
패키지 관리
타사 소프트웨어는 DragonFly에서 바이너리 패키지로 제공되며pkgng
또는 네이티브 포트 컬렉션에서 DPorts.[21]
DragonFly는 원래 FreeBSD 포트 컬렉션을 공식 패키지 관리 시스템으로 사용했지만, 1.4 릴리즈부터 NetB로 전환했다.타사 소프트웨어 가용성에 필요한 작업량을 줄이는 방법으로 인식된 SD의 pkgsrc 시스템.[5][22]결국, 호환성을 유지pkgsrc
처음에 예상했던 것보다 더 많은 노력이 필요한 것으로 증명되었기 때문에 이 프로젝트는 FreeBSD 포트 컬렉션 위에 오버레이인 DPorts를 만들었다.[23][24]
CARP 지원
공통 주소 중복 프로토콜(일반적으로 CARP라고 함)의 초기 구현은 2007년 3월에 완료되었다.[25]2011년 현재 CARP 지원은 DragonFly BSD에 통합되어 있다.[26]
해머 파일 시스템
BSD에서 일반적으로 기본 파일 시스템인 Unix File System과 함께 DragonFly BSD는 HAMUMH 및 HAMMER2 파일 시스템을 지원한다.해머2는 버전 5.2.0의 기본 파일 시스템이다.
해머는 특히 DragonFly BSD를 위해 개발되었는데, 이는 점점 더 인기를 얻고 있는 ZFS의 기능이 풍부하지만 더 잘 설계된 아날로그 기능을 제공하기 위해서였다.[8][11][27]해머는 구성 가능한 파일 시스템 기록, 스냅샷, 체크섬, 데이터 중복 제거 및 이와 같은 종류의 파일 시스템에 일반적인 기타 기능을 지원한다.[18][28]
해머 파일 시스템의 후속인 해머2는 현재, 디폴트로 사용되고 있으며, 향후의 개발의 초점으로서 안정성이 있다고 여겨진다.그것의 개발 계획은 처음에 2012년에 공유되었다.[29]딜런은 2017년 차기 DragonFly BSD 버전(5.0.0)에 HAMMER2의 사용 가능한 버전이 포함될 것이라고 발표하며 설계의 특징을 설명했다.[30]5.0.0 버전 5.2.0 이후 릴리즈되면서 HAMEL2는 새로운 기본 파일 시스템이 되었다.
디브프스
2007년 DragonFly BSD는 디바이스 노드를 동적으로 추가 및 제거하는 새로운 디바이스 파일 시스템(devfs)을 수신하여 연결 경로로 디바이스 액세스를 허용하고 일련 번호로 드라이브를 인식하며 사전 입력의 필요성을 없앴다./dev
파일 시스템 계층.구글 서머 오브 코드 2009 프로젝트로 시행되었다.[31]
애플리케이션 스냅샷
DragonFly BSD는 로딩 후 동적으로 연결된 대형 프로그램의 가상 메모리 공간을 스냅샷으로 만들어 프로그램의 향후 인스턴스가 다른 것보다 훨씬 더 빨리 시작할 수 있도록 하는 아미가 스타일의 상주 애플리케이션 기능을 지원한다.이것은 주민 지원이 훨씬 더 효율적이기 때문에 프로젝트 역사상 초기에 작업되었던 프리링크 기능을 대체한다.많은 공유 라이브러리가 있는 KDE 소프트웨어 컴파일에서 볼 수 있는 것과 같은 대형 프로그램은 이 지원의 혜택을 가장 많이 받을 것이다.[32]
개발 및 유통
DragonFly BSD의 개발자들은 FreeBSD와 OpenBSD와 마찬가지로 사전 기능 프로토타입 스타일의 C 코드를 보다 현대적인 ANSI 동급으로 서서히 대체하고 있다.다른 운영 체제와 마찬가지로 DragonFly의 GNU 컴파일러 컬렉션 버전에는 기본적으로 스택-마싱 프로텍터(ProPolice)라는 기능이 강화되어 버퍼 오버플로 기반 공격에 대해 약간의 추가적인 보호를 제공한다.2005년[update] 7월 23일 현재, 커널은 더 이상 이 보호 기능을 기본으로 구축되지 않는다.[32]
DragonFly는 FreeBSD의 파생상품으로, 몇 개의 명령만으로 전체 베이스 시스템을 소스에서 재구축할 수 있는 사용하기 쉬운 통합 빌드 시스템을 물려받았다.DragonFly 개발자는 Git 버전 제어 시스템을 사용하여 DragonFly 소스 코드의 변경 사항을 관리한다.DragonFly는 모기업인 FreeBSD와 달리 개발자 기반이 작아 단일 소스 트리에서 안정성과 불안정한 릴리즈를 모두 보유하고 있다.[6]
다른 BSD 커널(및 대부분의 최신 운영 체제 커널)과 마찬가지로 DragonFly는 개발자들이 커널 버그를 찾을 수 있도록 돕기 위해 내장된 커널 디버거를 사용한다.나아가, 2004년[update] 10월 현재, 버그 리포트를 커널 관련 문제를 추적하는 데 더욱 유용하게 만드는 디버그 커널이, 비교적 적은 양의 디스크 공간을 희생해 기본적으로 설치되고 있다.새 커널이 설치되면 이전 커널과 해당 모듈의 백업 복사본이 디버깅 기호를 제거하여 디스크 공간 사용을 더욱 최소화한다.
유통매체
운영 체제는 완전한 DragonFly 시스템으로 부팅되는 Live CD 및 Live USB(전체 X11 향미 사용 가능)로 배포된다.[18][31]기본 시스템과 전체 수동 페이지 세트를 포함하며, 향후 버전에 소스 코드와 유용한 패키지를 포함할 수 있다.CD 한 장으로 사용자가 컴퓨터에 소프트웨어를 설치하거나, 전체 도구 세트를 사용하여 손상된 설치를 복구하거나, 설치하지 않고도 시스템의 기능을 시연할 수 있다는 장점이 있다.원본에서 빌드하지 않고 최신 버전의 DragonFly를 설치하려는 사용자를 위해 마스터 사이트에서 일일 스냅샷을 사용할 수 있다.
다른 무료 오픈소스 BSD와 마찬가지로 DragonFly는 현대판 BSD 라이선스의 조건에 따라 배포된다.
발매이력
버전 | 날짜[33] | 변화들 |
---|---|---|
6.2.1 | 2022년 1월 9일 | |
6.0 | 2021년 5월 10일 |
|
5.8 | 2020년 3월 3일 | |
5.6 | 2019년 6월 17일 |
|
5.4 | 2018년 12월 3일 |
|
5.2 | 2018년 4월 10일 | |
5.0 | 2017년 10월 16일 |
|
4.8 | 2017년 3월 27일 | |
4.6 | 2016년 8월 2일 |
|
4.4 | 2015년 12월 7일 | |
4.2 | 2015년 6월 29일 | |
4.0 | 2014년 11월 25일 | |
3.8 | 2014년 6월 4일 |
|
3.6 | 2013년 11월 25일 |
|
3.4 | 2013년 4월 29일 |
|
3.2 | 2012년 11월 2일 |
|
3.0 | 2012년 2월 22일 | |
2.10 | 2011년 4월 26일 | |
2.8 | 2010년 10월 30일 |
|
2.6 | 2010년 4월 6일 |
|
2.4 | 2009년 9월 16일 | |
2.2 | 2009년 2월 17일 | |
2.0 | 2008년 7월 20일 |
|
1.12 | 2008년 2월 26일 | |
1.10 | 2007년 8월 6일 |
|
1.8 | 2007년 1월 30일 |
|
1.6 | 2006년 7월 24일 | |
1.4 | 2006년 1월 7일 | |
1.2 | 2005년 4월 8일 | |
1.0 | 2004년 7월 12일 |
참고 항목
참조
- ^ "DragonFly BSD 6.2". Dragonfly BSD. Retrieved 10 January 2022.
- ^ "DragonFly BSD License", DragonFly BSD, retrieved 17 January 2015
- ^ Dillon, Matthew (16 July 2003), "Announcing DragonFly BSD!", freebsd-current mailing list, retrieved 26 July 2007
- ^ Lehey, Greg (2001), Improving the FreeBSD SMP implementation (PDF), USENIX, retrieved 22 February 2012
- ^ a b Kerner, Sean Michael (10 January 2006), "New DragonFly Released For BSD Users", InternetNews, retrieved 20 November 2011
- ^ a b c d e f Biancuzzi, Federico (8 July 2004), "Behind DragonFly BSD", O'Reilly Media, retrieved 20 November 2011
- ^ Loli-Queru, Eugenia (13 March 2004), "Interview with Matthew Dillon of DragonFly BSD", OSNews, retrieved 22 February 2012
- ^ a b c d e f Chisnall, David (15 June 2007), "DragonFly BSD: UNIX for Clusters?", InformIT, retrieved 22 November 2011
- ^ Dillon, Matthew (22 August 2006), "Re: How much of microkernel?", kernel mailing list, retrieved 14 September 2011
- ^ Hsu, Jeffery M. (13 March 2004). The DragonFly BSD Operating System (PDF). AsiaBSDCon 2004. Taipei, Taiwan. Retrieved 20 November 2011.
- ^ a b c Andrews, Jeremy (6 August 2007), "Interview: Matthew Dillon", KernelTrap, archived from the original on 15 May 2011
- ^ "DragonFly BSD MP Performance Significantly Improved", OSNews, 16 November 2011, retrieved 19 November 2011
- ^ a b Luciani, Robert (24 May 2009), M:N threading in DragonflyBSD (PDF), BSDCon, archived from the original (PDF) on 23 December 2010
- ^ Sherrill, Justin (11 January 2004), Paying off already, retrieved 20 November 2011
- ^ Pistritto, Joe; Dillon, Matthew; Sherrill, Justin C.; et al. (24 April 2004), "Serializing token", kernel mailing list, archived from the original on 15 April 2013, retrieved 20 March 2012
- ^ Bonwick, Jeff; Adams, Jonathan (3 January 2002), Magazines and Vmem: Extending the Slab Allocator to Many CPUs and Arbitrary Resources, USENIX, retrieved 20 November 2011
- ^ Dillon, Matthew (23 April 2009), "New libc malloc committed", kernel mailing list, retrieved 8 August 2011
- ^ a b c d Vervloesem, Koen (21 April 2010), "DragonFly BSD 2.6: towards a free clustering operating system", LWN.net, retrieved 19 November 2011
- ^ Economopoulos, Aggelos (16 April 2007), "A peek at the DragonFly Virtual Kernel", LWN.net, no. part 1, retrieved 8 December 2011
- ^ Economopoulos, Aggelos (16 April 2007), "A peek at the DragonFly Virtual Kernel", LWN.net, no. part 2, retrieved 8 December 2011
- ^ "HowTo DPorts", DragonFly BSD, retrieved 2 December 2013
- ^ Weinem, Mark (2007). "10 years of pkgsrc". NetBSD. Joerg Sonnenberger about pkgsrc on DragonFly BSD and his pkgsrc development projects. Retrieved 22 November 2011.
- ^ Sherrill, Justin (30 September 2013), "Why dports?", DragonFly BSD Digest, retrieved 2 December 2011
- ^ Sherrill, Justin (29 September 2013), "Any new packages?", users mailing list, retrieved 2 December 2013
- ^ Buschmann, Jonathan (14 March 2007), "First Patch to get CARP on Dfly", kernel mailing list, retrieved 20 November 2011
- ^ "CARP(4) manual page", DragonFly On-Line Manual Pages, retrieved 20 November 2011
- ^ Dillon, Matthew (10 October 2007), "Re: HAMMER filesystem update - design document", kernel mailing list, retrieved 20 November 2011
- ^ Larabel, Michael (7 January 2011), "Can DragonFlyBSD's HAMMER Compete With Btrfs, ZFS?", Phoronix, retrieved 20 November 2011,
HAMMER does appear to be a very interesting BSD file-system. It is though not quite as fast as the ZFS file-system on BSD, but this is also an original file-system to the DragonFlyBSD project rather than being a port from OpenSolaris. Not only is HAMMER generally faster than the common UFS file-system, but it also has a much greater feature-set.
- ^ Dillon, Matthew (8 February 2012), "DESIGN document for HAMMER2 (08-Feb-2012 update)", users, retrieved 22 February 2012
- ^ Dillon, Matthew (18 August 2017), "Next DFly release will have an initial HAMMER2 implementation", users, retrieved 3 July 2018
- ^ a b Mr (7 January 2010), "DragonFlyBSD with Matthew Dillon", bsdtalk, archived from the original (ogg) on 25 April 2012, retrieved 20 November 2011
- ^ a b "DragonFly BSD diary", DragonFly BSD, 7 January 2006, retrieved 19 November 2011
- ^ "DragonFly: Releases", DragonFly BSD, retrieved 19 June 2014
- ^ Tigeot, Francois (31 July 2007), "KMS + i915 support now in -master", users mailing list, retrieved 2 December 2013
- ^ Matthew Dillon (4 June 2009). ""Re: DragonFly-2.3.1.165.g25822 master sys/dev/disk/ahci Makefile TODO ahci.c ahci.h ahci_attach.c ahci_cam.c ahci_dragonfly.c ahci_dragonfly.h atascsi.h"".
- ^ a b Kerner, Sean Michael (25 July 2006), "DragonFly BSD 1.6 Cuts the Cord", InternetNews, retrieved 20 November 2011
- ^ Townsend, Trent (18 January 2006), "A Quick Review of DragonFly BSD 1.4", OSNews, retrieved 16 November 2011