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를 배포했다. 이 소스는 386BSD와 BSD/OS의 기반이 되었으며, 뒤이어 FreeBSD와 NetBSD가 형성되는 계기가 되었다.[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/OS와 SunOS, 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 계열 운영체제
다른 운영체제와 소프트웨어에 남은 코드
장점과 한계
관련 문서
- FreeBSD Documentation: Explaining BSD ↩
- Marshall Kirk McKusick: Twenty Years of Berkeley Unix ↩
- UC Berkeley EECS: History ↩
- A Fast File System for UNIX ↩
- Marshall Kirk McKusick: Twenty Years of Berkeley Unix ↩
- Marshall Kirk McKusick: Twenty Years of Berkeley Unix ↩
- The History of the NetBSD Project ↩
- OpenBSD 공식 웹사이트 ↩