Microsoft NT 에서 시작된 마이크로소프트 계열
: Windows, Xbox OS, Windows Phone/Mobile...
유닉스 혹은 유닉스 계열(ex.리눅스)
: Mac OS X(true Unix!), Ubuntu, Android, Chrome OS, PS4 OS ...
유닉스 계열의 운영체제들은 명령어 체계를 대부분 공유한다.
유닉스
벨 연구소에서 1960년 중반 개발된 운영체제
유닉스 철학 (Unix Philosophy)
초기 컴퓨터에서 운영체제는 특정 하드웨어에 강하게 묶여있었다.
유닉스는 여러 하드웨어에 유연하게 대응할 수 있도록 하드웨어에서 운영체제를 분리하여 추상화했다.
작은 단위의 모듈들을 조립해 복잡한 구성을 만들어 나가는 방식을 강조한다.
유니스 철학의 규칙
- 하나의 일을 잘 수행하는 프로그램들을 작성하라
여러 프로그램들이 상호 협력하도록 만들어라
프로그램들은 범용 인터페이스인 텍스트 스트림을 처리하도록 만들어라
리눅스, GNU, 커널
GNU
리눅스와 리눅스 배포판들은 법적으로 공식 유닉스는 아니지만, 모두 유닉스 계역에 속하는 운영체제들이다.
1980년대, free software 운동은 컴퓨터와 사용자간 상호 협력을 차단하지 말아야한다는 철학을 내세운 운동이다.
"사용자에게 소프트웨어를 사용,복사,배포,연구,수정,개선할 권리가 있어야한다."
free software 운동을 이끈 Richard Stallman은 유닉스를 대체할 자유 소프트웨어를 개발할 개발자 그룹의 리더였으며, 1984년, 유닉스 시스템과 완전히 호환되는 자유 소프웨어 운영체제를 만들기 위한 GNU 프로젝트에 착수했다.
Linux Kernel
커널이란 운영체제의 구성 요소로서 하드웨어와 어플리케이션 사이의 레이어에 존재하며 하드웨어와 소프웨어의 상호 작용을 가능하게 한다.
GNU 프로젝트가 진행중이던 시점, Linux Torvalds 라는 또 다른 개발자가 Linux라는 이름으로 알려진 커널을 자체 개발하고 있었다.
GNU의 운영체제를 위한 많은 부분들이 완성되어가고 있었지만 커널은 없는 상태였고 Tovalds가 Linux 커널을 GNU 프로젝트에 결합시키면서 온전한 운영체제가 완성되었다.
커널은 운영체제의 핵심 요소이지만 어디까지나 부분이다. 운영체제와 온전히 치환되는 개념이 아니다. 리눅스 운영체제들이 리눅스 커널 뿐만 아니라 GNU 프로젝트의 결과물의 결합을 이어받은 것을 고려한다면 이 모든것을 리눅스라고 부르는 것은 프로젝트의 역사와 시발점을 오해할 여지가 있다.
터미널, 쉘, Bash
쉘
운영체제를 위한 컴퓨터 인터페이스
명령줄 해석기로서 명령어를 해석하여 운영체제에 전달하고, 처리 결과를 출력한다.
운영체제의 외부를 감싸고 있는 외피층이라는 점을 조개 속살을 감싼 껍질에 비유하여 쉘이라는 이름이 유래했다.
examples
bash
zsh
powershell
cmd
터미널
쉘을 실행하기위한 어플리케이션 프로그램이자 텍스트 입출력 환경
쉘에 명령어를 입력하거나 쉘이 반환한 처리 결과를 표시하는 역할이다.
과거 대학에서 방 하나를 차지하는 컴퓨터와 이에 연결된 단말기(터미널)를 도서관에 운영하던 시절 이 물리적 실체에서 유래한 명칭이나 현재는 소프트웨어적인 의미로 쓰인다.