[Linux] TLPI 책 정리 2 - Chapter 1 : History and Standards

시온·2023년 6월 8일
0

Linux

목록 보기
2/7
post-thumbnail

History and Standards

리눅스는 UNIX 계열 운영체제이다.

오늘날 리눅스를 있게 한 주요 흐름이 2개 있는데, 하나는 GNU 프로젝트이고, 다른 하나가 Linux 커널의 개발이다.

UNIX 시스템의 개발은 하나의 단체나 기업에서 주도하지 않고, 여러 상업적, 비상업적 단체에 의해 이루어졌다. 이러한 과정으로 인해 많은 혁신적인 기능이 UNIX에 추가될 수 있었다.

하지만 단점이 있었는데, 시간에 따라 UNIX 구현이 변했기 때문에 모든 UNIX 버전에 맞춰 돌아가는 프로그램을 만들기가 굉장히 어려웠다.

결국 이로 인해 UNIX 구현에 있어서 표준화가 진행되었다.


A brief history of UNIX and C

첫 UNIX는 1969년 벨 연구소에서 Ken Thompson에 의해 만들어짐.

얼마 지나지 않아, Thompson의 동료인 Dennis Ritchie가 C programming 언어를 만듦. (C 언어는 B 언어의 영향을 받아 만들어짐)

C 언어의 등장 이후, UNIX는 C 언어로 다시 쓰여졌다. (그전에는 어셈블리어였음)

C 언어로 작성된 UNIX는 고수준 언어로 쓰인 최초의 운영체제 중 하나였다.

C 언어의 탄생은 왜 C와 C++ 이 세계에서 가장 많이 쓰이는 시스템 프로그래밍 언어인지 알 수 있게 한다. 그도 그럴 것이, UNIX의 시작부터 C가 함께했기 때문.


The birth of BSD and System V

1979년 1월 UNIX 7판 (Seventh Edition) 이 릴리즈된다.

7판이 굉장히 중요한 이유는, 바로 이 시점부터 UNIX가 BSDSystem V로 나뉘게 되기 때문이다.

UNIX 창시자였던 Thompson이 버클리 대학에서 초빙 교수로 있는 동안, 재학생들과 함께 UNIX의 새로운 기능들을 만들었는데 (C Shell, VI 편집기 등...) 이러한 기능들이 들어간 UNIX를 BSD (Berkeley Software Distribution) 이란 이름으로 배포하게 된다.

1983년, 4.2 BSD 버젼이 릴리즈 되었는데, 해당 버전에는 온전한 TCP/IP 구현 뿐 아니라 socket 프로그래밍 인터페이스 (API) 등이 등장했다!

한편 BSD가 등장한 동안에, 벨 연구소의 모기업인 AT&T가 미국 반독점법으로 인해 통신 사업에서 독점을 잃는 바람에, UNIX 판매를 시작하게 되었다.

이로 인해, System III (3) 이라는 UNIX 버전이 등장하게 된다. System V가 처음 등장한 때는 1983년이다.

1989년이 되어 System V Release 4가 나오면서 BSD 버전의 다양한 기능들을 넣게 된다.

BSD는 대학 등에서 쓰이게 되고, System V는 기업 등에서 쓰이게 된다.


A Brief History of Linux

리눅스의 역사를 알기 위해, GNU project를 알 필요가 있다.

GNU project는 Richard Stallman에 의해 시작되었는데, 완전히 자유롭게 사용가능한 "UNIX-like" 시스템을 개발하는 것이 목표이다.

시스템 개발에는 커널과 소프트웨어 패키지 등이 포함되어 있다.

BSD 버전 역시 Stallman이 보기에는 '자유롭지' 못했는데, 그 이유는 바로 BSD가 여전히 AT&T의 라이센스를 필요로 했기 때문이었다.

GNU project의 중요한 성과중 하나가 바로 GPL (General Public License) 이다.

다음은 GPL의 주요 특징이다. (GPL은 한마디로 오픈 소스 프로그램 개발자 또는 판매자를 위한 라이선스이다.)
1. GPL 프로그램을 어떠한 목적으로든지 사용할 수 있다.
2. GPL 프로그램의 소스 코드를 용도에 따라 변경 할 수 있다. (개작 가능)
3. GPL 프로그램을 판매/배포시 소스 코드도 요청하면 제공하여야 한다. (원본 배포 의무)
4. 변경된 컴퓨터 프로그램 역시 프로그램의 소스 코드를 요청시 제공해야 한다. (파생물 배포 의무)
5. 변경된 컴퓨터 프로그램 역시 반드시 똑같은 GPL을 취해야 한다. (파생물 라이선스 의무)
GPL은 배포/유통된(distributed) 소프트웨어에만 적용된다. 소프트웨어를 배포하지 않은 경우 GPL을 채택하지 않아도 된다.
즉, GPL 소스코드를 사용한 프로그램을 판매/배포시에 상기 GPL을 따라야 한다.
출처 : https://namu.wiki/w/GNU%20%EC%9D%BC%EB%B0%98%20%EA%B3%B5%EC%A4%91%20%EC%82%AC%EC%9A%A9%20%ED%97%88%EA%B0%80%EC%84%9C

GPL 외에도 우리에게 잘 알려진 성과가 있는데, 바로 Emac 편집기와 GCC (GNU Compiler Collection), 그리고 bash와 glibc (the GNU C library) 이다.

정말 굵직굵직한 결과물들을 잘 남긴듯. Emacs는 Vim이나 Vscode에 밀려 인지도가 없다 해도, GCC와 Bash는 모를 수가 없으니..

1990년대 초까지, GNU project는 동작하는 UNIX 커널을 제외한 사실상 완전한 시스템을 만들었다. 사실상 커널만 있으면 GNU project는 완전한 UNIX 시스템을 만드는 것이다.

이때 등장하는 것이 바로 Linux 커널이다!

Linus Torvalds라는 핀란드 대학생이 자신의 386 PC에 돌아갈 UNIX 커널을 만들었던 것이다.

Linus Torvalds가 만든 커널은 Linux로 불리게 된다.

Linus Torvalds가 만든 Linux 커널 외에 많은 부분을 GNU project의 프로그램으로 채웠고, 완전한 오픈소스 소프트웨어였기 때문에 이용자수가 폭발적으로 증가하게 된다.

(BSD에 관해서는 이하 생략..)


Standardization

1980년 후반에는 상당히 많은 수의 UNIX 버전에 결점이 존재했다.
몇몇은 BSD 베이스, 몇몇은 System V 베이스...
또한 릴리즈 하는 기업마다 각자의 프로그램을 추가하여 출시하니 어떤 UNIX 버전에서 다른 버전으로 갈아타는 것이 굉장히 어려웠다.

결국 이러한 현실이 UNIX와 C 언어의 표준화에 대한 수요를 만들어냈고, 지금의 우리는 표준화된 것들을 접하고 있다.

profile
끊임없이 성장중

0개의 댓글