리눅스, 유닉스 그리고 Virtual Box

sp.arc·2022년 10월 10일

Linux

목록 보기
1/6
post-thumbnail

📒 학교 강의를 바탕으로 개인적인 공부를 위해 정리한 글입니다.


유닉스란?


⏺️ 최초로 커널이 High Level Language인 C로 작성된 OS.

커널이란 OS의 핵.
유닉스의 OS 가운데에는 커널이라는 핵이 있음.
커널 위에 쉘, 라이브러리, 유틸리티, 유저 프로그램이 돔.

유저 프로그램을 작성하려면 하드웨어를 컨트롤하는 기능들이 있어야 함.
하드웨어를 컨트롤하는 기능들은 직접 코딩할 수 없음.
하드웨어를 컨트롤하는 기능의 인터페이스를 제공하는 것이 "커널".


⏺️ 계층적 파일 시스템(hierarchical file system)이 처음 등장함.


⏺️ 루트 디렉토리 "/"에서 시작함.

모든 파일은 "/" 밑에 있음.

디렉토리 밑에 파일이 있음.


⏺️ 모든 것을 파일로 취급함.

하드웨어 디바이스도 파일로 간주함.


⏺️ Portable 함.

커널이 C로 작성되었기 때문에 하드웨어가 달라도 이식성이 높음.


⏺️ 대화형임(Interactive 함)


⏺️ 최초의 Time Sharing OS


⏺️ 프로세스가 여러개 돌아감(Multi-tasking)


⏺️ 여러 사람이 동시에 사용함(Multi-user)

다중 사용자 방식의 시분할 운영체제.

윈도우는 싱글 유저 시스템임.


⏺️ POSIX 표준

Portable Operating System Interface + X
이식 가능 운영 체제 인터페이스.

POSIX 표준을 만족하는 것들을 유닉스 계열 운영체제라고 함.
→ 리눅스, Mac OS 등.


⏺️ 1960년대 후반 벨 연구소에서 처음 개발됨.



리눅스와 유닉스


서로 다른 OS지만, 기능상의 차이가 거의 없음.



유닉스 이전의 역사


🕒 1955년

John McCarthy가 time-sharing의 개념을 최초로 고안함.
CTSS(Compatible Time-Sharing System)


🕒 1962년

MIT에서 CTSS의 후속작으로 MULTICS라는 time-sharing OS를 만듦. → 실패


🕒 1969년 ~ 1971년

MULTICS에 참여했던 Ken Thompson이 자유로운 분위기의 AT&T Bell lab에서 SPace Travel이라는 게임 소프트웨어를 만드는 과정에서 불편함을 느낌.

PDP7이라는 컴퓨터에서 OS를 만들어봄 → 이것이 유닉스.

이때 계층적 파일 시스템, 컴퓨터 프로세스, 디바이스 파일, command-line interpreter(Shell)과 각종 유틸리티 프로그램들의 개념이 최초로 개발됨.

PDP-11/20 컴퓨터에서의 유닉스 처음 버전은 어셈블러로 작성됨.
→ 이식성이 나쁨.
→ 수정하기 힘듦.
→ 유지보수 어려움.

AT&T Bell lab에서 유닉스를 라이센스 하에서 모든 대학, 상업 기관, 정부 기관에 배포함.
→ 당시의 OS는 굉장히 귀중한 소프트웨어로, 아무나 만들지 못함.


🕒 1973년

Ken Thompson이 B언어를 만듦.

Dennis Ritchie가 B를 발전시켜서 C라는 언어를 만듦.

Ken Thompson과 Dennis Ritchie가 팀을 이루어 기존에 어셈블러로 되어 있던 커널을 C로 바꿈.

💡 어셈블러로 작성한 것과 C로 작성한 것에는 아주 큰 차이가 있음.

⏺️ 어셈블러는 보기 힘들고 의미를 이해하기 힘듦.

⏺️ C는 High Level 언어이기 때문에 이해하기 쉬움.

⏺️ C는 컴파일러만 있으면 CPU의 종류가 달라도 돌아감.

따라서 하드웨어의 의존적인 부분은 어셈블러로 작성하고, 독립적인 부분은 C로 바꿈.
→ CPU가 달라도 같은 OS가 돌아감.


🕒 1974년

유닉스가 발표됨


🕒1977년

UC-버클리의 Bill Joy(BSD)가 Vi, Shell, curses(화면 컨트롤) 등의 툴들을 개발.


🕒 1980년

마이크로소프트에서 유닉스의 버전인 Xenix를 개발.


🕒 1982년

업그레이드가 많이 되면서 유닉스의 버전이 크게 두 갈래로 나뉘어짐.

⏺️ AT&T 버전
⏺️ BSD 버전


🕒 1983년

4.2BSD 버전에서 처음으로 TCP/IP와 소켓이 구현됨.
→ 중요한 업데이트.

미 국방성에서 발표한 TCP/IP를 최초로 구현해서 발표함.
이전에는 컴퓨터에 네트워크 기능이 없었음.

당시의 미국은 반독점법이 유행해서 큰 회사들을 쪼갬.
→ AT&T도 쪼개짐.

AT&T는 리눅스 시스템5를 상업화함.

Thompson과 Ritchie가 유닉스를 개발한 공로로 튜링 어워드를 받음.


🕒 1984년

똑같은 유닉스여도 버전이 다 다름
→ 특정 버전에서 만든 프로그램이 다른 버전에서 돌아가지 않는 문제가 발생함.

유닉스 버전 표준화 운동이 시작됨.
→ X/Open 등.


🕒 1985년

네덜란드의 교수 Tanenbaum이 인텔의 i386기반 초소형 OS인 MINIX(미니 유닉스)를 만들어 OS TextBook을 씀.

실제로 C로 작성된 커널을 보여주는 OS 교재를 쓴 것.

MINIX는 순전히 교육용임.

MINIX를 열심히 공부한 Linus Torvalds가 리눅스 커널을 만듦.

따라서 리눅스와 유닉스는 커널 인터페이스가 똑같음.


🕒 1987년

더이상 BSD 버전을 쓰지 않고 여러 버전들을 시스템5로 통합함.


🕒 1988년

X/Open 뿐만 아니라 OSF라는 통합도 있었음.

표준이 두 개? 통합해서 하나로 만들자!

"UNIX International"

국제 전기전자학회 IEEE에서 POSIX라는 표준을 만들어 하나로 통합함.


🕒 1991년

Linus Torvalds가 자신이 만든 리눅스를 오픈소스로 FSF(Free Software Foundation)에 등록함.

GNU = GNU is Not UNIX
GNU는 유닉스는 아닌데, 유닉스와 똑같음.
→ 커멘드, 쉘, 커널 인터페이스, 시스템 콜

엄격히 얘기하면 유닉스는 아님.

유닉스는 라이센스가 있음.
리눅스는 라이센스가 없음.


🕒 1994년

UI와 OSF가 OSF로 통합됨.


🕒 1996년

X/Open과 OSF가 Open Group으로 통합됨.


🕒 1997년

Open Group이 최종적인 유닉스의 통합 표준 Single UNIX Specification Version 2를 발표함.


🕒 2001년

최종적으로 Austin Group이 판권을 가짐.

Single UNIX Specification Version 3를 발표함.

이것의 다른 이름이 POSIX1.

POSIX가 유닉스의 표준 이름.


🕒 2008년

Single UNIX Specification Version 4(SUSV4)가 발표됨.
POSIX:2008



Virtual Box


Virtual Machine.

Virtualization System.

어떤 OS 위에서 또다른 OS를 돌리는 것.

profile
나의 기록

0개의 댓글