디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

NetBSD 이식성 유사 운영체제앱에서 작성

발명도둑잡기(118.216) 2025.12.10 20:57:54
조회 62 추천 0 댓글 0
														

**NetBSD Modular Portability Layer(MPL)**는
NetBSD가 “한 번 작성하고, 거의 모든 하드웨어에서 동작”할 수 있게 만든 운영체제 이식성(Portability) 설계 철학 + 코드 구조를 말합니다.

공식 문서에서 딱 저 이름을 고유 컴포넌트로 쓰기보다는, 보통은
NetBSD의 machine-independent / machine-dependent 분리 구조
abstraction layer들의 모듈화된 집합
을 통칭해 이렇게 부릅니다.

아래에서 구조적으로 정리해 설명할게요.


---

1. NetBSD 이식성의 핵심 개념

NetBSD의 슬로건:

> Of course it runs NetBSD



이를 가능하게 만든 핵심 원칙은 3단 분리입니다.

(1) MI (Machine Independent)

CPU·보드에 완전히 무관한 코드

커널 핵심 로직

프로세스 / 스케줄러

VM 시스템

VFS

네트워크 스택


대부분의 device driver 공통 로직

libc / userland 대부분


예:

sys/kern/
sys/net/
sys/uvm/
sys/fs/


---

(2) MD (Machine Dependent)

CPU 아키텍처별 코드

컨텍스트 스위치

인터럽트 처리

MMU 제어

trap / syscall 진입

부트 스트랩 코드


예:

sys/arch/arm/
sys/arch/x86/
sys/arch/mips/
sys/arch/riscv/


---

(3) Platform / Board support

같은 CPU라도 SoC / 보드별 차이 처리

clock / timer

SoC 인터럽트 컨트롤러

GPIO / pinmux

온보드 장치 초기화


예:

sys/arch/arm/soc/
sys/arch/arm/omap/
sys/arch/arm/broadcom/


---

2. Modular Portability Layer의 실제 구성 요소

NetBSD는 **“이식성을 위한 공통 인터페이스 모듈”**들을 층층이 둡니다.

1+⃣ bus_space / bus_dma

하드웨어 접근 추상화의 핵심

bus_space_read_4(tag, handle, offset);
bus_dmamap_load(...);

ISA / PCI / memory-mapped I/O 차이를 숨김

CPU endianness 차이 자동 처리

드라이버는 CPU를 전혀 모르게 됨


✅ 이게 NetBSD portable driver의 핵심


---

2+⃣ autoconf framework

장치 자동 탐지 계층

MI driver + MD attachment 분리

장치가 “어디에 연결됐는지”와 “무엇인지” 분리


CFATTACH_DECL_NEW(uart, sizeof(struct uart_softc),
    uart_match, uart_attach, NULL, NULL);


---

3+⃣ MI device driver 구조

하나의 드라이버로 여러 플랫폼 지원

driver (MI logic)
├─ PCI attachment
├─ SoC attachment
└─ FDT (device tree) attachment


---

4+⃣ FDT / ACPI 추상화

하드웨어 기술 방식 분리

ARM / RISC-V: FDT (Device Tree)

x86 / 서버: ACPI


둘 다 MI driver에 동일 인터페이스로 연결


---

5+⃣ pmap layer (MMU abstraction)

CPU마다 다른 MMU 구조를 통합

x86: page table

ARM: LPAE / VMSA

MIPS: TLB 중심

RISC-V: Sv39 / Sv48


VM 시스템은 pmap 인터페이스만 사용


---

3. 왜 “Modular”이라고 부르는가

NetBSD의 포터블 레이어는 단일 레이어가 아니라
교체 가능한 모듈들의 집합입니다.

계층 역할 교체 단위

bus_space I/O 추상화 CPU / Bus
bus_dma DMA 모델 캐시 구조
pmap MMU CPU
autoconf 장치 연결 플랫폼
interrupt IRQ 모델 SoC


새로운 CPU 포팅 시:

MI 코드는 거의 수정 없음

MD 디렉토리만 추가



---

4. NetBSD가 포팅된 아키텍처 수가 많은 이유

DOS PDA

Dreamcast

PlayStation 2

VAX

SPARC

Alpha

ARM Cortex-M 일부

RISC-V

8bit CPU(Z80, 실험)


❗ 이식성 목표가 아니라면 유지비 때문에 불가능한 수준


---

5. 다른 OS와 비교

OS 이식성 방식 특징

Linux 아키텍처별 ifdef 많음 빠르지만 난잡
FreeBSD MI/MD 분리 서버 중심
Zephyr HAL 중심 MCU용
NetBSD 강력한 abstraction 궁극의 이식성


NetBSD는 성능보다 구조적 우아함을 선택한 OS입니다.


---

6. 한 줄 요약

> NetBSD Modular Portability Layer란,
CPU·버스·보드 차이를 ‘모듈화된 추상 계층’으로 분리해
같은 커널과 드라이버가 거의 모든 하드웨어에서 동작하게 만드는 구조이다.




---

원하시면 다음도 설명해줄게요:

실제 새 CPU 포팅 절차

bus_space / bus_dma 코드 해부

Linux HAL과 NetBSD portability 구조 비교

임베디드 관점에서 NetBSD 채택 이유

NetBSD의 MI/MD 분리 + 모듈화된 portability layer와 철학·구조적으로 유사한 운영체제들을
“이식성을 설계 목표로 내장한 OS” 기준으로 정리해 드릴게요.

아래는 정말 비슷한 것 → 부분적으로 비슷한 것 → 철학만 공유 순서입니다.


---

✅ 1. L4 계열 마이크로커널 (L4, seL4, Fiasco)

NetBSD와 가장 철학적으로 유사

공통점

극단적인 hardware abstraction

아키텍처 의존 코드를 최소한의 레이어로 격리

포팅 시:

커널 핵심은 거의 수정 없음

CPU-specific 코드만 교체



구조

MI microkernel
└─ MD arch layer (MMU, IRQ, context switch)
Userland servers (OS 기능)

차이점

NetBSD: monolithic kernel

L4: microkernel (OS 기능은 전부 userland)



---

✅ 2. MINIX 3

공통점

장치 드라이버와 커널 분리

MI/MD 코드 엄격 분리

재시작 가능한 드라이버 구조


특징

NetBSD userland 일부 공유

교육용 출신 → 구조가 매우 정갈

x86 / ARM 포팅이 비교적 단순


차이

성능보다 안정성·복구성 우선

드라이버가 전부 userland



---

✅ 3. FreeBSD (초기 설계는 매우 비슷)

공통점

MI/MD 소스 구조 유지

bus_dma / bus_space 개념 공유

pmap 인터페이스


차이

지원 아키텍처 수 훨씬 적음

서버 성능에 최적화

이식성보다 실용성 중시


NetBSD의 보수·현실적 버전


---

✅ 4. GNU Hurd (Mach 기반)

공통점

커널은 hardware abstraction만 담당

OS 기능은 모듈 서버화


차이

구조는 이상적, 현실성은 낮음

포팅보다 설계 실험 쪽에 가까움



---

✅ 5. QNX Neutrino

공통점

잘 정의된 HAL

아키텍처 의존성 극소화

실시간 OS임에도 넓은 CPU 지원


특징

자동차·산업용에서 실제 성공

POSIX 호환성 높음



---

6. Haiku (BeOS 계승)

유사점

깔끔한 HAL

MI/MD 코드 분리


차이

데스크탑 OS 목표

지원 CPU 거의 x86_64 한정



---

7. Fuchsia (Zircon 커널)

공통점

강한 hardware abstraction

아키텍처별 레이어 명확


차이

capability 기반 커널

포팅을 위한 범용성보단 보안 중심



---

“비슷해 보이지만 사실 다른” 예

OS 이유

Linux 포팅은 가능하지만 abstraction이 느슨
Zephyr HAL은 있으나 MCU 중심
Windows NT HAL 존재하지만 폐쇄적
RTEMS 구조는 단순하지만 확장성 제한



---

비교 요약표

OS Portability 설계 유사도

NetBSD MI/MD + 모듈화 추상층 ★★★★★
L4 / seL4 최소 커널 + HAL ★★★★★
MINIX 3 MI/MD + 서버화 ★★★★☆
FreeBSD MI/MD ★★★☆☆
QNX HAL 중심 RTOS ★★★★☆
Fuchsia 현대식 abstraction ★★★☆☆



---

한 문장 요약

> NetBSD와 유사한 OS는 “단순히 여러 CPU에서 돌아가는 OS”가 아니라,
이식성 자체를 커널 구조의 1급 목표로 삼은 시스템들이다.




---

원하시면:

“NetBSD vs Linux 이식성 구조를 코드 레벨로 비교”

“새 OS 만들 때 어떤 portability layer를 설계해야 하나”

“임베디드용으로 이 구조를 축소 적용하는 방법”


중에서 골라서 더 파볼까요?

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 연말 모임 가는 곳마다 가장 인싸일 것 같은 스타는? 운영자 25/12/08 - -
이슈 [디시人터뷰] 솔직함을 리뷰하는 유튜버, 흑백리뷰 운영자 25/12/09 - -
AD AI 가전 디지털 모음전 운영자 25/11/27 - -
2907519 리트윗 한걸로 국가보안법 기소당한 박정근 사건 발명도둑잡기(118.216) 00:15 23 0
2907518 이렇게 생긴 슬렌더 차도녀 프론트 개발자한테 고백하고싶다 ㅇㅇ(125.190) 00:14 64 0
2907515 미국에 대한민국 정부 혼내달라고 로비한 쿠팡 발명도둑잡기(118.216) 12.10 33 0
2907514 애미,애비말 말고 gpt말 들었으면 프갤러(175.196) 12.10 30 0
2907513 팬이란게 존나 웃기지 않냐? 프갤러(175.196) 12.10 30 0
2907512 개발자 말고 애퍼 어떻냐? [2] 헬마스터갤로그로 이동합니다. 12.10 78 0
2907511 마취 없는 절단→임산부 실험…인간 생체실험 고발 '731' 개봉 발명도둑잡기(118.216) 12.10 26 0
2907509 “수용소에 가둬 폭파해 죽인다” 한국판 홀로코스트? 발명도둑잡기(118.216) 12.10 27 0
2907507 [국가보안법을 박물관으로] 말의 세계에 감금된 것들 전시회 해설 영상 발명도둑잡기(118.216) 12.10 21 0
2907505 [풀영상] 심리스릴러 다큐멘터리 게임의 전환 발명도둑잡기(118.216) 12.10 15 0
2907503 [기획영상] 당신들 여태 뭘한거요? 발명도둑잡기(118.216) 12.10 20 0
2907502 SEJEONG(세정) _ Tunnel(터널) 발명도둑잡기(118.216) 12.10 18 0
2907501 中 민간 드론, 타이완 진먼섬 침투해 전단 살포 / YTN 발명도둑잡기(118.216) 12.10 17 0
2907499 문성근 "'블랙리스트' 가장 큰 피해자는 배우 김민선" / YTN 발명도둑잡기(118.216) 12.10 18 0
2907498 '문성근-김여진 합성사진' 재판... "참담하다" 국정원 직원의 눈물 발명도둑잡기(118.216) 12.10 21 0
2907497 국정원 블랙리스트에 '찍힌 연예인' 집단 소송 움직임 발명도둑잡기(118.216) 12.10 43 0
2907496 국가보안법과 헌법의 충돌 현장! | 변호인(영화-2013) | 노무현 발명도둑잡기(118.216) 12.10 21 0
2907495 국가보안법과 표현의 자유는 양립불가 [1] 발명도둑잡기(118.216) 12.10 30 0
2907494 정지영 감독, "국보법 때문에 나도 '자기검열' 해야 했다." [1] 발명도둑잡기(118.216) 12.10 29 0
2907489 쿠팡 패스워드가 뚫린 것 같습니다. ㅠㅠ [4] 나르시갤로그로 이동합니다. 12.10 74 0
2907488 부트캠프란 용어는 미제 군국주의의 잔재다 [8] 발명도둑잡기(118.216) 12.10 51 0
2907486 ◆ 볼보트럭 정비사 VS 개발자 [2] ㅇㅇ갤로그로 이동합니다. 12.10 82 0
2907485 님들 화면이 깜빡이다가, 소리 나오면 잘 나와요. 넥도리아(220.74) 12.10 22 0
NetBSD 이식성 유사 운영체제 발명도둑잡기(118.216) 12.10 62 0
2907483 NetBSD 부러운 점이 하드웨어 이식성 발명도둑잡기(118.216) 12.10 27 0
2907482 나 대학생 때는 리눅스 커널 버전이 2.2대였는데 2.4로 올라가면서 발명도둑잡기(118.216) 12.10 29 0
2907481 요즘 구형 컴퓨터 에뮬레이터는 FDD, HDD 소리도 내주네 발명도둑잡기(118.216) 12.10 27 0
2907480 이거 음악 제목 아시는 분 발명도둑잡기(118.216) 12.10 24 0
2907479 프로그래머스 국비 경쟁률 왜케 빡셈 프갤러(175.214) 12.10 46 0
2907477 아~ 한남패죽이기 딱 좋은날이다 [8] 개멍청한유라갤로그로 이동합니다. 12.10 78 0
2907476 요즘 국비를 부캠이라고 함? [3] 헬마스터갤로그로 이동합니다. 12.10 81 0
2907475 FreeBSD용 Nimf 2025.12.10 출시합니다. [5] 나르시갤로그로 이동합니다. 12.10 40 1
2907474 부캠 투표 좀 [1] 프갤러(182.230) 12.10 52 0
2907472 좇센은 범죄자새끼들만 좇같은게아니라서 더 좇같은나라인거임 타이밍뒷.통수한방(1.213) 12.10 41 1
2907470 거이씹 모기새기 [3] ♥발라당냥덩♥갤로그로 이동합니다. 12.10 52 0
2907468 프로그래밍 1도 모르던 내가 게임모드 만들엇슴... 프갤러(183.104) 12.10 67 1
2907466 점심 간식 발명도둑잡기(39.7) 12.10 27 0
2907463 프리랜서랑 정규직 같이 해본 사람 있어? 야옹해갤로그로 이동합니다. 12.10 41 0
2907462 회사가 니네 누군지 모를 거 가틍ㅁ??? ㅋㅋ [3] ㅇㅇ(222.108) 12.10 89 0
2907461 임포스터 증후군을 체험하기 위한 가짜 자괴감 끝에 [2] chironpractor갤로그로 이동합니다. 12.10 49 0
2907458 신입 개발자 오늘 한 일. [9] cvs.갤로그로 이동합니다. 12.10 126 0
2907457 왜 프로그래머는 화가 많을 [1] ㅇㅇ(222.108) 12.10 60 0
2907456 쌩초보 강의 or 책 추천해주세요........ [8] 프갤러(211.50) 12.10 65 0
2907455 니네 ai 이용해서 수학 공부해라 [5] ㅇㅇ(222.108) 12.10 75 0
2907453 집에 가자 ! cvs.갤로그로 이동합니다. 12.10 23 0
2907452 Hex dump 에서 원본 복구 절대못하지? [3] 프갤러(106.101) 12.10 66 0
2907451 장사를 해보니 개발이 재밌었긴 했지만 [2] chironpractor갤로그로 이동합니다. 12.10 84 0
2907450 저연차부터 풀스택 필수라는 새끼들 특 [1] 프갤러(112.220) 12.10 83 2
2907449 앱히키 = 실력, 운도 없는 새끼 ㅇㅇ(222.108) 12.10 50 0
2907448 로또가 수학적으로 손해라서 안한다는 븅신새끼들은 뭘까 ㅇㅅㅇ [3] ㅇㅇ(223.38) 12.10 69 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2