코딩쌀롱

리눅스(Linux)의 역사 본문

개발공부

리눅스(Linux)의 역사

이브✱ 2021. 1. 9. 22:57

 

유닉스(Unix)

1970년대 초 미국 벨 연구소의 켄 톰슨, 데니스 리치가 만든 운영체제.

 

장점    C언어로 만들어 다른 컴퓨터에 수정해서 적용하기 쉬움(이식성)
    → 다양한 버전의 Unix 탄생
    → POSIX라는 Unix 표준(규격) 만듦
단점    라이센스 지금(AT&T)

 

 처음 개발 당시에는 소스코드의 모든 부분이 공개되었고 소스코드 접근까지 가능했다. 연구소, 대학교 등에서 유닉스가 활성화되면서 많은 소스코드가 공개되어 사용되었다. 1976년에 빌게이츠가 마이크로소프트를 창업했고, 소프트웨어의 소스코드를 공개하는 것에 부정적인 시각을 제시하면서 소프트웨어가 자산화 상품이 되어야 한다고 주장했다. 1980년 초부터 상용 유닉스가 수수료를 높이기 시작했고, 공개 개념의 소프트웨어가 점점 사라져 갔다. 독점 소프트웨어의 돌입이 시작된 것이다.

 

GNU와 Linux

 MIT 연구소의 유닉스 개발자였던 리처드 스톨만은 "소프트웨어는 공유되어야 한다"라는 자신의 철학을 실현하기 위해 GNU프로젝트를 만들었다. GNU의 의미는 'GNU is Not Unix'의 줄임말이다. 유닉스 운영체제용 프로그램과 완벽하게 호환하면서, 장점을 해치지 않고 부족함을 메우는 것을 지향했다. 그리고 리차드 스톨만은 자유 소프트웨어 개발을 위해 자유 소프트웨어 재단을 설립했다.(Free Software Foundation)

 

 시스템의 대부분을 완성했지만, 운영체제의 핵심인 커널만은 완성하지 못했다. 그러던 중 Linus Tovalds가 'Linux'라는 이름의 커널을 만들었다. 교육용 유닉스인 미닉스를 사용하다 만족하지 못해, 새로운 운영체제를 개발한 것이라고 한다. 리누스 토발즈가 공개한 리눅스 커널에 많은 개발자들이 다양한 기능을 추가하기 시작했고, 리눅스의 성능 역시 강화됐다. 자유 소프트웨어 재단 역시 흥미를 가졌고, 리눅스는 GNU 프로젝트의 핵심 중 하나로 떠오르게 되면서 1994년에 리눅스 커널을 공개했다. 리누스 토발즈가 커널을 만들어 비로소 리눅스의 완전체가 된 것! 이후에도 리눅스 커널은 여전히 무료 공개 원칙을 유지하고 있으며, 변형 및 재배포에 관해서도 자유롭다. 

 

즉, GNU + Linux Kernel → GNU/Linux 운영체제 완성

 

리눅스(Linux)

장점    1. 오픈소스 운영체제
     → 코드를 볼 수 있고, 개조가 가능하며 무료
     → 개발자들이 얼마든 서버를 깔아 맘껏 사용하기 좋음
     → 개발자들이 얼마든 이것 저것 개조해볼 수 있도록 하는 조립식 제품
   
   2. 유닉스와 완벽 호환 가능
   3. 강력한 보안 기능
   4. 풍부한 개발 환경
단점    1. 사용자의 숙련된 기술이 요구됨
   2. 공개운영체제이기 때문에 문제발생시 보상 받을 수 없음
   3. 기술지원이 부족

 

리눅스를 변형해서 만든 운영체제로 ubuntu, RedHat, CentOS, debian 등등이 있다. 이런 것들을 리눅스 배포판이라고 한다. 계속 리눅스로부터 엄청 많은 운영체제들이 만들어 졌다. 대부분 유닉스 표준(POSIX)을 거의 다 만족한다.  

 - 인증O(Unix-certified) : macOS, hp unix, AIX...

 - 인증X, but 비슷(Unix-like) : ubuntu, RedHat, CentOS...

많은 OS들이 command로 운영체제를 사용하는 관점에서는 거의 비슷하다. 많은 OS들이 Unix command를 공통으로 사용할 수 있는 이유이다.

 

 

GUI (Graphic User Interface) : end-user들을 대상으로 만든 운영체제로 어려운 조작할 필요없이 화면의 그래픽으로 사용자와 소통하는 방식이다. 그림이나 아이콘을 통해서 소통한다. 예로 윈도우, MacOS, 안드로이드, iOS가 있다. 

 

CLI (Command Line Interface) : GUI의 반대 개념으로, 터미널의 명령어로 시스템을 제어한다. 주로 서버용 컴퓨터들이 CLI 환경을 사용한다. 예로 리눅스의 SSH가 있다.

 

 

 

 


참고

온라인 코딩 스쿨 코드잇(유튜브) - 유닉스와 유사 유닉스

얄팍한 코딩사전(유튜브) - 가장 쉬운 리눅스 강좌 

IT동아 - 리차드 스톨만

네이버 블로그 - 리눅스의 탄생 역사

'개발공부' 카테고리의 다른 글

NAT와 포트포워딩  (2) 2021.01.10
쉘(shell)과 커널(kernel)  (0) 2021.01.10
[백준_node.js] 1076. 저항  (0) 2021.01.07
[백준_node.js] 1009. 분산처리  (0) 2021.01.07
Comments