[week1-1~2] 리눅스의 역사

haeryong·2022년 10월 31일
0

Multics Project

-GE, Bell lab, MIT AI lab의 MAC프로젝트의 산물(1964)

목표: 운영체제의 복잡한 기능을 감추고,, 시분할, 페이지/세그먼트 메모리 관리, 프로세스 관리, 파일 시스템, 주변장치 관리, 양방향 인터페이스 등등 다양한 기능을 실험하는 프로젝트.
-> 실패

Multics 프로젝트의 일원이었던 ken Tompson.

Ken Thompson이 게임을 빠르게 만들기 위해 UNIX 제작.

기존 UNIX는 Assembly어로 작성돼 cpu가 변할 때마다 거의 새로 작성해야 했음.(포팅에 많은 시간 소모)

Dennis Ritchie가 Brian Kernighan의 도움을 받아 B언어를 개량해 C언어 개발.
UNIX on C(1973)

하드웨어가 달라져도 rebuild, 약간의 수정으로 포팅이 가능하게 되었음.
C언어의 개발 -> 어셈블리어의 몰락.

C Programming Language
1. 고급언어이면서 어셈블리어에 버금가는 성능을 가짐(어셈블리어로 변환 후 컴파일하는 특징 때문)
2. 낮은 추상화 지원(stdio, File 객체)
3. 저수준의 하드웨어의 조작이 가능
4. 쉬운 언어적 특징(기계어/어셈블리어에 비해서..)

C Programming Language의 Standards
1. ANSI-C (C89) : 1989년도 표준(이전의 C언어는 혼돈)
2. C99 : 현재 산업계의 실질적 표준 /
restrict pointer, Variable Length Array, Flexible array members 등등 추가 /

UNIX의 분열
1973 Ken & Dennis가 UNIX, C언어 발표 -> Berkeley에게 UNIX v4 소스코드 제공.
BSD UNIX가 탄생하게 됨.
C shell, 가상기억장치, TCP/IP 네트워킹이 도입됨

개발자들이 각자 필요한 기능을 추가하다 보니 호환성이 악화됨(리눅스는 창시자 리누즈 토발즈의 구심점으로 분열이 발생하지 않음.)

AT&T 계열 UNIX : UNIX version 7(1978) -> SysV Release2(1984) -> 3(1986), 4(1988) SVR4이 SysV, 현대UNIX의 표준.
BSD 계열 UNIX : BSD(1977) -> 2(1984), 3(1985), 4(1993)

Branches & Compatibility
SysV 와 BSD로의 분열로 호환성이 파괴됨.
결과적으로 UNIX vendor들은 클라이언트 요구사항에 맞춰 UNIX를 customizing
-> 각 UNIX vendor들마다 제품과 통신 및 메뉴얼이 상이한 문제 발생

미 국무성에서 강한 불만 표출 -> 전기전자공학회(IEEE)의 주도로 System call의 표준화 진행 -> 1988년 POSIX 초안 발표(POSIX.1 1003-1988)
POSIX규격을 맞추지 않으면 미 정부에 조달 불가.

POSIX(Portable Operating System Interface)
API의 문법, 작동에 대한 의미(semantic)만을 담고 있음.
implementation의 구현 방법을 제약하지 않아 만족하기 쉽도록 하였음.

1990년 승인
POSIX.1 = IEEE std 1003.1

1980년대 UNIX 업계 양강인 AT&T와 Sun이 POSIX보다 넓은 의미의 산업계 표준(De facto)를 만들고자 함 -> SVR4 탄생.

사장될 것을 우려한 Minor vendor들이 회의를 주최(DEC의 주도)
DEC, IBM, HP, Siemens 등등..
-> OSF 설립

OSF(Open Software Foundation)
AT&T, Sun의 반독점 목적으로 설립된 비영리 단체
-> 통합 유닉스로서 OSF/1 (1992)를 발표
결과적으로 새로운 UNIX family가 추가됨
1990년대 초반 BSD, SVR4, OSF/1으로 UNIX family가 늘어났음.

X/Open
1984년 유렵 컴퓨터 제조업체들이 Open System 표준화를 위해 출범된 단체
표준화를 위한 가이드라인을 제시함
X/Open의 가이드라인 : XPG(X/Open Portability Guide)
SVR4와 OSF/1은 XPG v3에 근거해 제작됨.

SysV 계열의 벤더들도 X/Open에 가입.
우리가 현재 사용하는 manual(man) page 또한 XPG의 산물.

SUS
POSIX, SysV, OSF/1, BSD, Old Unix등등 복잡한 상황.
XPG는 가이드라인일 뿐 강제성이 없었음.
1990년대 초 Microsoft가 자본력을 바탕으로 서버형 OS제작 발표.
OSF가 이를 우려하여 X/Open와 합병(1996), X/Open은 Open Group이 됨.

모든 유닉스 업계가 모여 SUS(single UNIX Specification) 탄생

SUSv1 : XPG 4.2 혹은 UNIX95라 명명함 issue 4.20 (420)
SUSv2 : UNIX98 issue 5 (500)
SUSv3 : SUS 2002 issue 6 (600)
SUSv4 : SUS 2007 issue 7 (700)
에서 UNIX 표준을 확인할 수 있다.
UNIX의 상표권은 AT&T -> 노벨 -> X/Open으로 넘어감
X/Open 합병 후 Open Group에서 소유.

통합 후 아래 3개의 Open Standard를 통해서 표준화
Open Group
IEEE POSIX Standards
ISO/IEC standards

Open System란 UNIX를 말함(Open System 계통이라 하면 리눅스도 포함)
API와 OS구조가 공개되어 표준이 만들어진 시스템을 의미함.

UNIX 이후의 세계

Linux kernel
리눅스는 임시 운영체제였음.
GNU Hurd 커널 개발이 지연된 상황에서 마침 나온 리눅스 커널이 사용됨.
80년대 인기였던 Micro kernel 방식이 아닌 Monolithic kernel 방식으로 타넨바움과 토발즈(리눅스창시자)가 갈등(1992)
결론적으로 Micro 대세론은 꺾임.

Minix(Mini uNIX) - 1987
Prof. Andrew Tanenbaum이 교육용으로 작성한 OS
교육용이기때문에 성능 제약이 많아 리누스 토발즈가 리눅스를 만들게 됨.

BSD, Linux, AT&T(SysV) 계보

GNU
Gnu is Not UNIX의 약어
FSF의 Richard Stallman이 리딩
GNU의 컴파일러와 각종 유틸리티 덕분에 리눅스가 발전할 수 있었음.

Linux and GNU
GNU의 컴파일러 GCC에 의해서 더욱 발전
GNU의 각종 툴들이 포팅되어 POSIX표준안에 근거해 작성됨.
Linux에서 커널 이외의 부분은 GNU의 공로가 더 큼.

FSF & GNU && GPL
FSF(Free Software Foundation)
-Emacs를 개발했던 Richard stallman이 설립
-상업적 지적재산권 제도가 SW발전을 저해한다고 하여 설립됨.
-GNU를 통해 UNIX진영이 높은 생산성을 가질 수 있었음.
-기부금으로 운용되며, GPL공개라이선스를 따르고 있음.
GPL(GNU Public License)은 공개를 퍼트리는데 중점을 가진 라이선스

상업적 사용 시 GPL 위반은 위험하다.
위 제약을 풀어준 LGPL, MIT, Apache등의 라이선스도 존재함.

BSD UNIX
소송, 자금난으로 4.3 BSD의 개량 포기
자발적으로 FreeBSD, NetBSD, OpenBSD등이 등장하였으나 영향은 적음.

BSD와 Mac OSX
Mac OS X(Darwin)은 XNU기반 BSD 시스템(전신은 NeXT STEP)
오픈시스템 특성인 포팅의 가능성이 열려 있음.
->CPU종속성이 적음(Arm으로 이주할 수 있었던 이유)

SUS이후 BSD를 계승한 OSX는 SUS표준을 대부분 만족함.
Linux에서 구동되는 대부분의 소프트웨어는 쉽게 OSX에 포팅됨.

표준화 이후의 UNIX는 생산성이 높다.
UNIX를 계승하지 않은 적통인 Linux도 마찬가지

Linux의 성공
성공요인 : 소스코드 오픈, UNIX표준(POSIX, SUS)를 받아들여 빠르게 시장 규모 성장하여 단기간에 상업용 수준까지 발전.
기존 벤더들의 고압적인 태도 때문에 OS자체 오류 등을 빠르게 수정하지 않고 인정하지도 않음.
소스코드를 얻을 수 있는 초기 UNIX를 갈망하고 이를 충족시켜준 게 Linux
그러나 그 결과로 UNIX, Windows가 몰락함.

Linux 배포판

배포판 분류 기준: 일반적으로 패키지 시스템으로 계열을 나누고, 계열 내에서 특정 벤더나 단체로 다시 나뉨.
DEB 계열: Debian, Ubuntu, Mint, (패키지 파일명에서 확장자부분이 *.deb)
RPM 계열: RHEL, CentOS, Fedora, SuSe ...
기타 계열

RedHat 사의 RPM 배포판으로 빠르게 사용자층을 확보해나감-> 현재는 Fedora 오픈 프로젝트로 이양.
Debian은 GNU 사의 공식 배포판.

RedHat 계열 - RPM 패키지 사용
1. RHEL(RedHat Enterprise Linux)
2. Fedora
3. CentOS(Community ENTerprise Operating System) : 여러 회사에서 가장 많이 사용.

Debian계열 - Deb 패키지를 사용
1. Debian Linux : GNU의 Ian Murdock에 의해 개발(1993)
2. Ubuntu Linux
3. Kail Linux (= Backtrack Linux) : Security, hacking 특화

Etc.
Gentoo - BSD Ports와 비슷한 portage 사용

RH 계열 : EPEL
CentOS를 사용하는 경우 EPEL을 사용하는 경우가 많다.
Extra Packages for Enterprise Linux
-다양한 목적의 패키지 제공(멀티미디어, 데스크탑용, 네트워킹 툴 등등..)

Debian 계열
Debian : 작고 가볍고 안정성을 중시.
Ubuntu : 예쁘고 사용이 편리한 데스크탑 리눅스 구축이 목적

Interface
Xfce, compiz 등..

배포판별 특징

CentOS
-비용 문제로 포털, 스타트업 기업이 가장 많이 사용.
-RHEL의 클론이라서 엔터프라이즈 환경에서 사용하기 편리.

Ubuntu
-화면이 아름답고 초보자가 쓰기 편리함.
-엔터프라이즈 환경에서 사용하는 데 약간 불편하고 보안이 취약함.
-소형기기에 최적화된 스핀오프가 많이 IOT embedded에서 많이 쓰임.
-스파이웨어, 상용 소프트웨어를 포함하곤 해서 논란이 많음.

Fedora
-최신 기술을 확인하기 편리하여 선행기술 개발, 보안 시스템 개발에 쓰임.

0개의 댓글