연도 사건 1969 벨 연구소에서 켄 톰슨 이 유닉스 개발 시작 1971 초기 유닉스 — 어셈블리로 작성 1973 데니스 리치 가 만든 C 언어 로 유닉스를 다시 작성1977 버클리 대학에서 BSD 배포 시작 1983 AT&T의 System V 출시
C로 다시 쓴 것이 결정적이었다. 어셈블리는 CPU마다 다시 짜야 하지만, C는 컴파일만 다시 하면 다른 기계에서도 돌아간다.
이 성질을 이식성(portability) 이라 부르고, 유닉스가 퍼진 가장 큰 이유다.
구분 BSD 계열 System V 계열 출신 캘리포니아 버클리 대학 AT&T 벨 연구소 성격 학술·연구 중심, 자유로운 배포 상용 중심 후손 FreeBSD, OpenBSD, NetBSD, macOS AIX, HP-UX, Solaris 부팅 스크립트 /etc/rc.d 방식/etc/rc.d/init.d + 런레벨
리눅스는 어느 한쪽의 후손이 아니다. 유닉스 코드를 물려받지 않고 처음부터 새로 만든 커널이다.
다만 동작 방식과 명령 체계는 유닉스를 본떴다. 그래서 "유닉스 계열(Unix-like)"이라고 부른다.
1960년대 MIT·제너럴 일렉트릭(GE)·벨 연구소는 멀틱스(Multics) 라는 거대한 시분할 운영체제를 함께 만들고 있었다.
지나치게 크고 복잡해 진척이 더뎠고, 벨 연구소는 1969년 이 프로젝트에서 손을 뗐다.
거기 참여했던 켄 톰슨이 남는 소형 컴퓨터 PDP-7 에서 "작고 단순하게" 다시 만든 것이 유닉스다.
이름부터가 Multics의 Multi (여럿)를 Uni (하나)로 비튼 말장난이다. 복잡함에 대한 반성이 이름에 들어 있다.
검정내용에 '철학'이 명시돼 있다. 유닉스가 남긴 설계 원칙은 리눅스 명령 체계에 그대로 살아 있다.
원칙 리눅스에서 보이는 모습 한 가지 일만 잘하는 작은 프로그램 ls는 목록만, sort는 정렬만, wc는 세기만 한다프로그램끼리 이어 붙인다 파이프(|)로 한 명령의 출력을 다음 명령의 입력으로 넘긴다 텍스트가 공통 언어 명령의 입출력도, /etc 아래 설정 파일도 사람이 읽는 텍스트다 모든 것은 파일 디스크·터미널 같은 장치도 /dev 아래의 파일로 다룬다
who | wc -l # 로그인한 사용자 목록(who)을 줄 수 세기(wc -l)로 넘긴다
ls /etc | grep release # /etc 목록에서 release 가 들어간 이름만 고른다
$ who | wc -l
3
$ ls /etc | grep release
lsb-release
os-release
"현재 접속자 수를 알려주는 명령"을 따로 만들지 않았다. 작은 도구 둘을 이으면 되기 때문 이다. 이것이 유닉스 철학의 요체다.
💡 개념 : 유닉스의 특징으로 시험에 나오는 낱말은 대화형 시스템 · 다중 사용자 · 다중 작업 · 높은 이식성 · 계층적 파일 시스템 이다. 어제 본 리눅스의 특징과 거의 겹치는 것은 리눅스가 유닉스를 본떴기 때문이다.
리눅스는 어느 쪽 후손도 아니지만 양쪽 관습을 모두 받아들였다. 프로세스 목록을 보는 ps 명령이 대표적이다.
쓰는 법 유래 특징 ps auxBSD 방식옵션 앞에 -를 붙이지 않는다 ps -efSystem V 방식옵션 앞에 -를 붙인다
두 명령 모두 "전체 프로세스 보기"다. 리눅스의 ps는 두 표기를 다 알아듣는다.
부팅 방식은 전통적으로 System V의 런레벨 을 따랐다(다음 주 부팅에서 다룬다).
1983년 리처드 스톨먼(Richard Stallman) 이 시작했다.
목표: 누구나 자유롭게 쓰고 고칠 수 있는 유닉스 호환 운영체제 를 만드는 것이다.
이름은 "GNU is Not Unix" 의 재귀 약자다.
1985년 자유 소프트웨어 재단(FSF) 설립, 1989년 GPL 발표.
GNU는 1990년대 초까지 운영체제에 필요한 거의 모든 것을 완성했다.
컴파일러 GCC , 셸 bash , 편집기 Emacs , 핵심 명령 모음 coreutils (ls cp mv …)
딱 하나, 커널만 없었다. GNU의 커널인 HURD 는 개발이 지지부진했다.
1991년, 핀란드 헬싱키 대학의 리누스 토르발스(Linus Torvalds) 가 시작했다.
계기는 MINIX — 앤드루 타넨바움 교수가 교육용으로 만든 작은 유닉스 계열 OS다. 기능이 제한적이라 직접 만들기로 했다.
1991년 9월 버전 0.01 공개, 이듬해 GPL 로 라이선스를 바꾸면서 전 세계 개발자가 몰려들었다.
마스코트는 펭귄 턱스(Tux) .
이 그림 하나가 "왜 GNU/Linux 라고 부르는가"에 대한 답이다.
시기 사건 1991년 8월 리누스가 MINIX 뉴스그룹(comp.os.minix)에 "취미로 운영체제를 만들고 있다"고 알림 1991년 9월 버전 0.01 공개 1991년 10월 버전 0.02 — 뉴스그룹에 공식 발표한 첫 버전 1992년 라이선스를 GPL 로 변경 1994년 3월 버전 1.0 발표 1996년 버전 2.0 발표 — CPU 여러 개를 쓰는 SMP 지원. 마스코트 턱스 등장 2003년 12월 버전 2.6 발표 — 짝·홀수 버전 규칙이 사라진 기점 2011년 버전 3.0 발표
시험이 묻는 숫자는 대개 1991(첫 공개) 과 1994(1.0) 다.
처음 공개할 때는 상업적 배포를 금지하는 자체 라이선스 였다. GPL로 바꾼 뒤에야 기업과 배포판이 참여할 수 있게 됐다.
📚 사례 : 1992년 타넨바움은 뉴스그룹에 "리눅스는 구식이다"라는 글을 올렸다. 요지는 모놀리식 커널은 낡은 설계이고 마이크로커널이 옳다 는 것. 리누스는 실용성과 성능을 들어 반박했다. 어제 배운 "리눅스=모놀리식, MINIX=마이크로커널" 구분이 바로 이 논쟁의 양쪽이다.
POSIX(Portable Operating System Interface) 는 IEEE가 만든 유닉스 계열 운영체제의 인터페이스 표준 이다.
목적: 어느 유닉스 계열에서 짠 프로그램이든 다른 유닉스 계열에서도 돌아가게 하는 것.
시스템 콜, 명령어, 셸의 동작 방식 등을 규정한다.
리눅스는 POSIX를 거의 따르지만 공식 인증을 받지는 않았다.
POSIX 말고도 이름이 비슷한 표준이 함께 보기로 나온다. 누가 무엇을 맞추려는 표준인지 로 가른다.
표준 만든 곳 맞추려는 것 POSIX IEEE (IEEE 1003) 유닉스 계열 OS의 프로그래밍 인터페이스 — 시스템 콜·명령·셸 SUS (Single UNIX Specification)오픈 그룹(The Open Group) "UNIX"라는 상표를 쓸 수 있는 조건 LSB (Linux Standard Base)리눅스 재단 리눅스 배포판끼리 의 호환FHS (Filesystem Hierarchy Standard)리눅스 재단 /bin /etc /var 같은 디렉터리 구조
"UNIX"는 지금 오픈 그룹이 가진 등록 상표 다. 인증을 통과한 제품만 UNIX라고 부를 수 있다.
리눅스가 "유닉스"가 아니라 "유닉스 계열 "인 이유가 두 가지인 셈이다 — 코드를 물려받지 않았고, 상표 인증도 받지 않았다.
"유닉스는 처음부터 C로 만들어졌다" → 처음엔 어셈블리 였다. 1973년에 C로 다시 썼다.
"C 언어를 만든 사람은 켄 톰슨" → 데니스 리치 다. 켄 톰슨은 유닉스 개발을 시작한 사람이다.
"리눅스는 MINIX를 고쳐 만든 것" → MINIX는 계기 였을 뿐이고 코드는 새로 썼다.
"GNU는 커널을 만들지 않았다" → 만들려 했다. HURD 가 그것이고, 완성이 늦어졌을 뿐이다.
"BSD는 AT&T가 만든 상용 유닉스" → BSD는 버클리 대학 , AT&T가 만든 것은 System V 다.
"POSIX는 라이선스다" → 표준 규격 이다. 라이선스는 GPL·BSD 같은 것들이다.
이름 연도 만든 사람 성격 유닉스 1969 켄 톰슨, 데니스 리치 원조 BSD 1977 버클리 대학 유닉스 분파 GNU 1983 리처드 스톨먼 자유 소프트웨어 도구 모음 MINIX 1987 앤드루 타넨바움 교육용 유닉스 계열 리눅스 커널 1991 리누스 토르발스 자유로운 커널
내일은 이 흐름을 떠받친 생각 — 자유 소프트웨어와 오픈소스 라이선스를 다룬다.
유닉스(UNIX) : 1969년 벨 연구소에서 만든 운영체제. 리눅스를 포함한 수많은 OS의 원형.
이식성(Portability) : 프로그램을 다른 기계에서도 큰 수정 없이 돌릴 수 있는 성질.
BSD : 버클리 대학에서 발전시킨 유닉스 계열. FreeBSD·macOS의 뿌리다.
System V : AT&T가 만든 상용 유닉스 계열. AIX·Solaris가 여기 속한다.
GNU : "GNU is Not Unix"의 재귀 약자. 자유로운 유닉스 호환 OS를 목표로 한 프로젝트.
HURD : GNU가 만들려 했던 커널. 완성이 늦어져 리눅스 커널이 그 자리를 대신했다.
MINIX : 타넨바움이 만든 교육용 유닉스 계열 OS. 리눅스 개발의 계기가 됐다.
POSIX : 유닉스 계열 운영체제 사이의 호환을 위한 IEEE 표준 규격.
턱스(Tux) : 리눅스의 펭귄 마스코트.
📝 연습 문제 선택지를 클릭하면 정답·해설이 펼쳐집니다.
다음 중 유닉스가 널리 퍼질 수 있었던 가장 큰 이유로 알맞은 것은?
A 그래픽 사용자 인터페이스를 최초로 도입했기 때문이다 B 커널을 마이크로커널 구조로 설계했기 때문이다 C 마이크로소프트가 유닉스를 무료로 배포했기 때문이다 D C 언어로 다시 작성되어 이식성이 높아졌기 때문이다 다음 중 GNU 프로젝트에 대한 설명으로 알맞지 않은 것은?
A 1983년 리처드 스톨먼이 시작했다 B GCC, bash, Emacs 등의 도구를 만들었다 C 커널인 HURD를 완성해 독자적인 운영체제를 출시했다 D "GNU is Not Unix"라는 재귀적 약자에서 이름을 따왔다 다음 중 리눅스 커널 개발의 직접적인 계기가 된 운영체제로 알맞은 것은?
A MINIX B Solaris C FreeBSD D Windows NT 다음 중 System V 계열 유닉스에 해당하는 것으로 알맞은 것은?
A FreeBSD B OpenBSD C Solaris D NetBSD 다음 중 POSIX에 대한 설명으로 가장 알맞은 것은?
A 리눅스 커널의 배포 라이선스를 규정한 문서다 B 유닉스 계열 운영체제 사이의 호환을 위한 인터페이스 표준이다 C 리눅스 배포판을 관리하는 비영리 재단의 이름이다 D 유닉스에서 사용하는 파일 시스템의 종류다