UNIX
출처 : Unix timeline.en.svg - https://commons.wikimedia.org/wiki/File:Unix_timeline.en.svg
UNIX의 역사
AT&T 벨 연구소 직원인 켄 톰슨, 데니스 리치 등이 소형 컴퓨터용으로 처음 개발한 운영체제로, 원래 이름은 Unics 였다가 UNIX로 변경되었습니다. 처음에는 어셈블리어로 개발되었다가, C언어를 사용해 다시 작성된 UNIX V5로 발전하였습니다. C 언어를 이용한 이유는 유닉스 운영체제의 이식성을 높이기 위해 고수준 프로그래밍 언어가 요구되었기 때문입니다.
이후 AT&T는 교육을 목적으로 하는 대학에 UNIX V6을 소스 코드와 함께 거의 무상으로 제공했고, 그 결과 여러 버전의 UNIX가 만들어졌으며, BSD와 같은 중요한 버전들이 등장하고, 이를 이용해 개발된 유용한 소프트웨어가 대량 공급되어, 사용 환경이 좋아지고 유닉스는 더 발전하게 되었습니다.
이후 BSD 버전은 자유롭고 공개된 방식으로 발전해나갔고, AT&T는 UNIX의 상용화를 모색해 UNIX V7, System3, System5 계열로 발전해나갔습니다. 현재 유닉스 계열의 운영체제는 크게 상업적 목적의 System5 계열과, BSD 계열 두 가지가 자리잡은 양상입니다.
C 언어를 이용한 이유
이식성을 높이기 위해 고수준 프로그래밍 언어가 요구되는 이유는 하드웨어 독립성을 확보하기 위해서입니다. 어셈블리어와 같은 저수준 언어는 특정 하드웨어 아키텍처와 밀접하게 연결되어 있어, 하나의 시스템에서 개발된 코드를 다른 시스템으로 옮길 때 대대적인 수정 작업이 필요합니다.
C 언어는 컴파일러를 통해 다양한 하드웨어에 맞춰 기계어로 변환할 수 있으며, 이는 운영체제의 핵심 코드 구조를 수정할 필요 없이 다양한 시스템에 맞춰 이식할 수 있게 해줍니다. 이러한 점에서 고수준 언어는 코드 이식성을 높이는데 매우 효과적이며, UNIX가 다양한 시스템으로 빠르게 확산될 수 있었던 중요한 배경이 되었습니다.
UNIX의 특징
특징 | 설명 |
---|---|
다중 사용자 지원 | - 여러 사용자가 동시에 시스템에 접속하여 작업할 수 있는 환경 - 독립적인 작업 공간과 권한 |
다중 작업 지원 | - 멀티태스킹을 지원하여 여러 프로세스를 동시에 실행 가능 |
신뢰성 높은 운영체제 | - 높은 안정성과 신뢰성을 제공 - 시스템의 지속적인 가동과 데이터 무결성을 보장 - 서버와 같은 중요한 시스템에서 널리 사용됨 |
뛰어난 이식성 | - C 언어로 작성돼 다양한 하드웨어 플랫폼에서 실행될 수 있는 이식성 - 시스템의 확장성과 유지보수성을 높여줌 |
강력한 네트워킹 기능 | - 다양한 네트워크 프로토콜과 도구를 지원 |
셸 스크립트 | - 셸 스크립트를 작성하여 반복적인 작업을 자동화할 수 있음 - 시스템 관리와 개발 작업의 효율성 제고 |
파이프라인 | - 명령어의 출력을 다음 명령어의 입력으로 연결할 수 있음 - 복잡한 작업을 단순한 명령어 조합으로 처리할 수 있게 해줌 |
CLI | - 사용자가 명령어를 입력하여 시스템과 상호작용 |
단순하고 모듈화된 설계 | - 각 기능이 독립적으로 개발되고 유지보수 가능 - 시스템의 유연성과 확장성을 높여줌 |
대표적인 UNIX 시스템
UNIX 계열 | 대표적인 시스템 |
---|---|
BSD 계열 | Free BSD, OepnBSE, NetBSD, macOS, SunOS, GNU/Linux |
System V 계열 | HP-UX(HP), AIX(IBM), Solaris(Oracle) |
GNU 프로젝트
GNU 프로젝트와 GNU의 역사
1984년 MIT의 연구원 리처드 스톨먼의 주도 하에 시작된 공개 소프트웨어 프로젝트로, 소프트웨어의 상업화에 반대하고, 소스 코드의 공유와 자유로운 사용 및 배포를 주장하면서 사용 허가권(License) 아래 소프트웨어를 배포한다는 카피레프트의 대표적인 프로젝트입니다.
이러한 등장 배경에는 UNIX 의 역사적 흐름이 있었는데요, BSD 계열 개발자들이 UNIX 소스코드의 대부분을 재작성하면서 Net/1, Net/2 라는 이름의 운영체제로 배포하였는데, AT&T로부터 UNIX 코드의 복제와 영업비밀의 도용이라는 명목으로 소송을 당한 사건을 계기로, 초창기 오픈소스 커뮤니티가 위축되고 사람들은 대안을 찾기 시작했었습니다.
이와 같은 상황 속에서 GNU 프로젝트가 시작되었으며 (GNU는 “GNU’s Not Unix” 의 재귀적 약자입니다.) 오늘날 소프트웨어 업계에 큰 영향을 미쳤으며, 자유 소프트웨어와 오픈소스 운동의 기반을 마련한 프로젝트로 평가되고 있습니다.
이후 GNU 프로젝트를 철학적, 법률적, 금융적으로 지원하기 위한 Free Software Foundation(FSF, 자유 소프트웨어 재단) 이 설립되었습니다.
GPL
GPL은 카피레프트 계열의 라이선스인 General Public License (GNU 일반 공중 사용 허가서) 를 발표하였으며, 소프트웨어의 실행, 연구, 공유, 수정의 자유를 최종 사용자에게 보장하는 라이선스입니다. GPL의 주요 내용은 아래와 같습니다.
- 컴퓨터 프로그램을 어떠한 목적으로든지 사용할 수 있다. 다만 법으로 제한하는 행위는 할 수 없다.
- 컴퓨터 프로그램의 실행 복사본은 언제나 프로그램의 소스 코드와 함께 판매하거나 소스코드를 무료로 배포해야 한다.
- 컴퓨터 프로그램의 소스 코드를 용도에 따라 변경할 수 있다.
- 변경된 컴퓨터 프로그램 역시 프로그램의 소스 코드를 반드시 공개 배포해야 한다.
- 변경된 컴퓨터 프로그램 역시 반드시 똑같은 라이선스를 취해야 한다. 즉 GPL 라이선스를 적용해야 한다.
GNU 소프트웨어 도구
GNU 프로젝트는 다양한 소프트웨어 도구와 프로그램을 제공합니다. 이 중에는 컴파일러(GCC), 텍스트 편집기(Emacs), 쉘(Bash) 등이 포함되어 있으며, 이러한 도구들은 리눅스와 같은 오픈소스 운영체제의 핵심 요소로 자리 잡고 있습니다. 특히, GNU 소프트웨어는 리눅스 커널과 함께 사용되어 GNU/Linux 운영체제의 형태로 널리 사용되고 있습니다.
리눅스의 등장
리눅스의 등장
리눅스는 GNU 프로젝트의 소프트웨어가 적용된 대표적인 운영체제입니다. 리눅스 커널과 GNU 도구들이 결합하여 하나의 운영체제 형태로 제공되는 경우가 많아, “GNU/Linux” 라고 부르기도 합니다.
리눅스는 1991년 리누스 토르발스에 의해 리눅스 커널이 개발되면서 그 역사가 시작되었습니다. 이어서 1992년에는 최초의 리눅스 배포판인 MCC Interim 리눅스가 발표되었습니다.
이렇게 개발된 리눅스는 다중 사용자 및 다중 작업 지원, 뛰어난 이식성, 모듈화 구조와 같은 장점들과, 소스코드가 공개되어있다는 특징에 따라 다양한 개선 배포판이 등장하고 있습니다.
잡담
- 리눅스의 공식 마스코트인 턱스는 펭귄이다. 펭귄은 리눅스의 개발자 리누스 토르발스가 가장 좋아하는 동물이라고 한다.
- 리눅스라는 이름은 리누스 토르발스 자신의 이름 앞자인 Linus와 UNIX 를 합친 것이다.