Berkeley Software Distribution

Berkeley Software Distribution은 캘리포니아 대학교 버클리에서 Research UNIX를 기반으로 개발하고 배포한 유닉스 계열 운영체제 계통이다. 일반적으로 BSD라고 부르며, 처음에는 기존 UNIX에서 사용할 수 있는 프로그램과 개발 도구를 모은 소스 코드 배포...

약칭BSD
분류유닉스 계열 운영체제, 운영체제 계열, 소스 코드 배포판
개발 주체캘리포니아 대학교 버클리, Computer Systems Research Group
원형Research UNIX
최초 배포1BSD
최초 배포일1977년
주요 계열1BSD, 2BSD, 3BSD, 4BSD, 4.1BSD, 4.2BSD, 4.3BSD, 4.4BSD
최종 배포4.4BSD-Lite Release 2
최종 배포일1995년 6월
주요 구현 언어C, 어셈블리어
커널 구조모놀리식 커널
대표 플랫폼PDP-11, VAX, Tahoe, HP 9000, MIPS
라이선스BSD 라이선스, 초기 배포판은 AT&T UNIX 소스 라이선스 필요
주요 후손386BSD, BSD/OS, FreeBSD, NetBSD, OpenBSD, DragonFly BSD, Darwin
개발 종료1995년 CSRG 해산

Berkeley Software Distribution캘리포니아 대학교 버클리에서 Research UNIX를 기반으로 개발하고 배포한 유닉스 계열 운영체제 계통이다. 일반적으로 BSD라고 부르며, 처음에는 기존 UNIX에서 사용할 수 있는 프로그램과 개발 도구를 모은 소스 코드 배포판으로 시작했으나 이후 커널, 사용자 공간, 네트워크 스택과 파일 시스템을 함께 제공하는 완전한 운영체제 계통으로 발전했다.[1]

BSD의 개발은 1970년대 후반 버클리에서 이루어진 UNIX 연구에서 시작되었다. 초기 1BSD와 2BSD는 PDP-11용 UNIX에 Berkeley Pascal, ex, vi, csh와 여러 사용자 도구를 추가하는 형태였으며, VAX용 3BSD와 4BSD부터는 가상 메모리와 새로운 커널 기능을 포함하는 독자적인 운영체제 계통으로 확장되었다. 이후 버클리의 개발 조직은 Computer Systems Research Group으로 정비되었고, DARPA의 지원을 받아 네트워크와 운영체제 연구를 진행했다.[2]

1983년에 공개된 4.2BSD는 TCP/IP 프로토콜 스택과 소켓 인터페이스, Berkeley Fast File System을 통합했다. 4.2BSD의 네트워크 구현과 프로그래밍 인터페이스는 대학과 연구기관, 워크스테이션 제조업체에 널리 보급되었으며, 인터넷에 연결되는 UNIX 시스템의 공통 기반을 형성했다. socket, bind, listen, accept, connect와 같은 Berkeley sockets 인터페이스는 이후 여러 UNIX 계열 운영체제와 다른 운영체제로 확산되었다.[3][4]

초기의 BSD에는 AT&T UNIX에서 유래한 소스 코드가 포함되어 있었기 때문에 이를 받으려면 UNIX 소스 라이선스가 필요했다. CSRG는 버클리에서 작성한 네트워크 코드를 분리해 1989년 Networking Release 1을 공개했고, 이어 기존 AT&T 코드를 자유롭게 재배포할 수 있는 구현으로 교체하여 1991년 Networking Release 2를 배포했다. 이 소스는 386BSDBSD/OS의 기반이 되었으며, 뒤이어 FreeBSDNetBSD가 형성되는 계기가 되었다.[5]

Networking Release 2를 둘러싼 UNIX System Laboratories와 Berkeley Software Design의 법적 분쟁은 1994년 합의로 종결되었다. 합의 내용을 반영해 자유롭게 재배포할 수 있는 4.4BSD-Lite가 공개되었으며, 당시의 BSD 후속 프로젝트들은 이를 새로운 코드 기반으로 채택했다. CSRG는 1995년 4.4BSD-Lite Release 2를 마지막으로 배포한 뒤 해산했고, 버클리에서 이루어지던 BSD의 중앙 개발은 종료되었다.[6]

BSD라는 명칭은 역사적인 버클리 배포판만을 뜻하지 않고, 그 코드와 설계를 계승한 운영체제 계통 전체를 가리키는 말로도 사용된다. 현대의 주요 BSD 계열에는 FreeBSD, NetBSD, OpenBSD, DragonFly BSD가 있으며, 상용 운영체제였던 BSD/OSSunOS, Apple 운영체제의 기반인 Darwin도 BSD의 코드와 설계로부터 영향을 받았다. 각 프로젝트는 공통된 역사적 기반을 가지지만 커널, 사용자 공간, 개발 조직, 보안 정책과 지원 플랫폼을 독립적으로 관리한다.[7][8]

BSD는 가상 메모리, 작업 제어, 신호 처리, 소켓 기반 네트워크 프로그래밍, Fast File System과 기계 독립적인 커널 구조 등 현대 운영체제에 널리 사용되는 여러 기술을 발전시켰다. 또한 소스 코드와 바이너리의 수정·재배포를 폭넓게 허용하는 BSD 라이선스는 자유 소프트웨어와 상용 소프트웨어 양쪽에서 사용되는 대표적인 허용적 소프트웨어 라이선스로 자리 잡았다.

명칭과 범위

Berkeley Software Distribution의 의미

Berkeley UNIX와 BSD

역사적 BSD와 현대 BSD 계열

UNIX 상표와 유닉스 계열 운영체제

역사

UNIX의 버클리 도입

Berkeley Pascal과 초기 개발 도구

1BSD

2BSD

VAX와 3BSD

4BSD

Computer Systems Research Group의 형성

DARPA 연구 계약

4.1BSD

4.1aBSD

4.1bBSD

4.1cBSD

4.2BSD

4.3BSD

4.3BSD-Tahoe

Networking Release 1

4.3BSD-Reno

Networking Release 2

386BSD와 BSD/386

USL 대 BSDi 소송

4.4BSD

4.4BSD-Encumbered

4.4BSD-Lite

4.4BSD-Lite Release 2

CSRG의 해산

배포판

1BSD 계열

2BSD 계열

3BSD

4BSD 계열

4.1BSD 계열

4.2BSD

4.3BSD 계열

Networking Release 계열

4.4BSD 계열

PDP-11용 후기 2BSD

시스템 구성

커널

사용자 공간

시스템 라이브러리

명령줄 도구

개발 도구

매뉴얼 페이지

부팅과 초기화

시스템 구성 파일

커널 구조

모놀리식 커널

기계 독립적 코드와 기계 의존적 코드

프로세스 관리

스케줄링

시스템 호출

인터럽트와 예외 처리

장치 드라이버

커널 메모리 관리

커널과 사용자 공간의 경계

프로세스와 실행 환경

프로세스 모델

프로세스 식별자

프로세스 그룹과 세션

작업 제어

신호

파이프

소켓

프로세스 간 통신

의사 터미널

메모리 관리

초기 UNIX 메모리 모델

VAX 가상 메모리

요구 페이징

주소 공간

페이지 교체

메모리 매핑

공유 메모리

가상 메모리 구조의 영향

파일 시스템과 저장 장치

초기 UNIX 파일 시스템

Berkeley Fast File System

inode

디렉터리 구조

파일 디스크립터

버퍼 캐시

디스크 블록 할당

실린더 그룹

디스크 쿼터

파일 시스템 검사

네트워크 파일 시스템

네트워크

DARPA 인터넷 연구

TCP/IP

UDP

Internet Protocol

Berkeley sockets

소켓 주소 체계

라우팅

네트워크 인터페이스

네트워크 구성 도구

원격 로그인과 파일 전송

인터넷 보급에 미친 영향

사용자 환경

Bourne shell

C shell

작업 제어 셸

ex

vi

텍스트 처리 도구

시스템 관리 명령

사용자 계정과 권한

터미널 환경

프로그래밍 환경

C 언어

어셈블리어

시스템 프로그래밍 인터페이스

표준 C 라이브러리

컴파일러와 링커

디버거

make

소스 코드 빌드

매뉴얼과 문서화

주요 기술과 혁신

가상 메모리

Berkeley Fast File System

TCP/IP 통합

소켓 API

작업 제어

프로세스 그룹과 세션

신호 처리

의사 터미널

기계 독립적인 커널 구조

시스템 성능 측정과 최적화

하드웨어 플랫폼

PDP-11

VAX

Tahoe

HP 9000

MIPS

기타 연구용 플랫폼

이식성 개선

워크스테이션으로의 확산

개발과 배포

자기 테이프 배포

소스 코드 중심 배포

대학과 연구기관

CSRG의 개발 체계

외부 기여자

제조업체와의 협력

릴리스 개발 과정

버그 수정과 패치

FTP를 통한 배포

라이선스

AT&T UNIX 소스 라이선스

버클리 저작권 고지

BSD 라이선스

4조항 BSD 라이선스

광고 조항

3조항 BSD 라이선스

2조항 BSD 라이선스

소스 코드와 바이너리 재배포

허용적 라이선스 모델

코드 공개와 법적 분쟁

AT&T 코드에 대한 의존

Networking Release 1

자유롭게 재배포 가능한 코드의 분리

Networking Release 2

Berkeley Software Design

UNIX System Laboratories의 소송

캘리포니아 대학교의 반소

1994년 합의

4.4BSD-Lite의 법적 지위

BSD 후속 프로젝트에 미친 영향

주요 파생 운영체제

386BSD

BSD/OS

FreeBSD

NetBSD

OpenBSD

DragonFly BSD

Darwin

macOS와 Apple 운영체제

상용 UNIX와의 관계

SunOS

Solaris

Ultrix

NeXTSTEP

OSF/1

AIX

HP-UX

System V Release 4

BSD 확장 기능의 수용

다른 운영체제와의 관계

Research UNIX

UNIX System V

POSIX

GNU

Linux

MINIX

Windows

유닉스 계열 운영체제

BSD 계열의 공통 특징

완전한 운영체제 단위의 개발

통합된 소스 트리

커널과 사용자 공간의 공동 관리

ports와 패키지 시스템

소스 코드 중심 문화

허용적 라이선스

프로젝트별 독립성

이식성과 코드 품질

현대 BSD 프로젝트의 차이

FreeBSD의 범용성과 서버 지향

NetBSD의 이식성

OpenBSD의 보안과 정확성

DragonFly BSD의 시스템 구조 실험

릴리스와 개발 조직의 차이

코드 공유와 상호 이식

활용 분야

대학과 연구기관

인터넷 인프라

서버

워크스테이션

네트워크 장비

저장 장치와 어플라이언스

임베디드 시스템

상용 운영체제의 기반

운영체제 연구와 교육

영향

인터넷의 확산

TCP/IP 구현

네트워크 프로그래밍 인터페이스

UNIX 워크스테이션

현대 파일 시스템

운영체제 이식성

오픈 소스 개발 문화

허용적 소프트웨어 라이선스

현대 BSD 계열 운영체제

다른 운영체제와 소프트웨어에 남은 코드

장점과 한계

관련 문서

  1. FreeBSD Documentation: Explaining BSD
  2. Marshall Kirk McKusick: Twenty Years of Berkeley Unix
  3. UC Berkeley EECS: History
  4. A Fast File System for UNIX
  5. Marshall Kirk McKusick: Twenty Years of Berkeley Unix
  6. Marshall Kirk McKusick: Twenty Years of Berkeley Unix
  7. The History of the NetBSD Project
  8. OpenBSD 공식 웹사이트