[Linux] Linux & Unix
운영체제는 컴퓨터 사용자와 하드웨어 간의 인터페이스로 다른 응용 프로그램들이 유용한 작업을 할 수 있는 환경을 제공합니다.
주로 PC 환경에서 많이 이용되는 운영체제는 Windows, macOS, 리눅스 등이 있고, 서버 환경에서 많이 이용되는 운영체제는 리눅스, 유닉스 등이 있습니다.
오늘은 그 중에서 리눅스에 대해 알아보도록 하겠습니다.
Unix
리눅스는 유닉스를 기반으로 작성되었기 때문에 리눅스를 알기 전, 먼저 유닉스에 대해 간단하게 짚고 넘어가 보겠습니다.
유닉스는 범용 다중 사용자 방식의 시분할 운영체제로, 현대의 다양한 운영체제들 중 유닉스 기반인 제품들이 있습니다.
대표적으로 macOS 가 유닉스 기반으로 개발되었고, 아이폰에서 사용되는 iOS 또한 유닉스 스타일로 개발되었습니다.
유닉스는 처음부터 다양한 시스템 사이에서 서로 이식할 수 있고, 멀티 태스킹과 다중 사용자를 지원하도록 설계되었습니다.
또한 유닉스는 서버에 특화된 운영체제로써, 포털이나 대기업의 서버에 사용되며 보안성이 매우 뛰어납니다.
하지만 유닉스는 코드가 공개된 오픈소스가 아니라서 버그 이슈같은 경우 IBM 사에서 일괄적으로 관리하곤 합니다.
유닉스 시스템의 설계는 다음과 같은 특성을 포함하는 Unix Philosophy 를 기반으로 합니다.
- 데이터 저장을 위한 일반 텍스트 사용
- 계층적 파일 시스템
- 장치 및 특정 종류의 프로세스 간 통신을 (IPC) 파일로 처리
- 수많은 소프트웨어 도구 사용
- 파이프를 사용하는 Command Line 인터프리터를 통해 동시에 스레딩 할수 있는 여러개의 작고 간단한 모듈식 프로그램
Linux
리눅스는 유닉스의 파생 제품인 Minix OS 를 개선하기 위해 Linus Torvalds 가 만든 무료 커널입니다.
Linus Torvalds 는 커널이라고 부르는 리눅스의 핵심 부분만을 작성해서 배포했습니다.
우리가 일반적으로 말하는 리눅스는 해당 커널에 컴파일러, Shell, 그리고 기타 응용 프로그램들이 조합된 배포판을 말합니다.
여기서 커널과 Shell 은 다음과 같은 역할을 합니다.
커널
- 파일 입출력, 주변장치 관리, 프로세스/통신/메모리 관리 등 리눅스 운영체제의 기능 담당
- CPU, 메모리 등 하드웨어 제어 담당
- Windows 의 드라이버와 같이 하드웨어와 소프트웨어 사이를 연결해주는 인터페이스 제공
Shell
- 사용자와 운영체제간 중계 역할 (명령어 처리기)
- 커널을 조작하기 위한 수단
- 자주 사용되는 Shell 은 bash, zsh 등이 있음
GNU
리눅스는 GNU 프로젝트에 의해서 완성되었습니다.
GNU 는 GNU's Not Unix 라는 재귀적인 의미를 가졌으며, 유닉스는 아니지만 유닉스와 호환이 되는 더 강력한 운영체제를 만들기 위해 시작된 프로젝트입니다.
GNU 프로젝트는 리눅스 커널이 개발되기도 전에 Richard Stallman 에 의해 시작되었습니다.
GNU 프로젝트는 소프트웨어의 상업화에 반대해 모두가 공유할 수 있는 소프트웨어를 만드는 것을 목표로 했기 때문에 Richard Stallman 이 설립한 FSF (Free Software Foundation) 에서 제공하는 소프트웨어의 대부분은 GPL (General Public License) 을 따르도록 되어있습니다.
GNU 에 대해 더 자세한 정보는 아래 링크에서 확인하실 수 있습니다.
GPL
GPL 은 General Public License 의 약자입니다.
앞서 말했듯 리눅스는 GNU 프로젝트와 함께해왔기 때문에 FSF 의 GPL 을 따릅니다.
FSF 의 창시자인 Richard Stallman 은 GPL 에서 다음과 같은 5가지 의무를 저작권의 한 부분으로써 강제합니다.
- 컴퓨터 프로그램은 어떠한 목적으로든지 사용 가능하지만, 법으로 제한하는 행위는 불가능하다.
- 컴퓨터 프로그램의 실행 복사본은 언제나 프로그램의 소스 코드와 함께 판매하거나 소스코드를 무료로 배포해야한다.
- 컴퓨터 프로그램의 소스 코드는 용도에 따라 변경 가능하다.
- 변경된 컴퓨터 프로그램 역시 프로그램의 소스코드를 반드시 공개 배포해야한다.
- 변경된 컴퓨터 프로그램 역시 반드시 똑같은 라이센스인 GPL 을 적용해야한다.
GPL 에 대해 더 자세한 정보는 아래 링크에서 확인하실 수 있습니다.
https://www.gnu.org/licenses/gpl-3.0.html
이어서 리눅스의 특징에 대해 더 살펴보겠습니다.
GPL 을 따르기 때문에 리눅스는 오픈소스로 관리되고 있습니다. 리눅스는 자유 소프트웨어와 오픈소스 개발의 가장 유명한 표본이기도 합니다.
그렇기 때문에 리눅스는 유연성, 확장성, 안정성이라는 특징을 가지고 있습니다.
오픈소스라는 특성 덕에 버그가 발생하더라도 많은 기관이나 사용자들이 나서서 보완할 수 있고, 커뮤니티가 활성화 되어있기 때문에 정보를 얻기 용이하기도 합니다.
이렇게 많은 사용자들이 참여하고 발전시킨 결과 굉장히 안정적인 환경을 제공한다고도 합니다.
리눅스는 핵심 시스템 외 200 종류가 넘는 배포판이 존재하고 있습니다. (우분투, 페도라 등...)
또한 리눅스는 유닉스를 기반으로 하기 때문에 다중 사용자 및 다중 처리 시스템을 지원합니다.
이뿐만 아니라 다양한 네트워크 프로토콜 및 네트워크 환경을 지원하기도 합니다. 컴퓨터에서 구현된 모든 네트워크 기능은 대부분 리눅스에 존재한다고 생각하면 된다고도 합니다.
또한 리눅스는 대체적으로 C 언어와 약간의 어셈블리어로 작성되었기 때문에 뛰어난 이식성을 보유하고 있기도 합니다.
아래는 위에서 설명한 리눅스의 특징을 간단하게 적어놓은 리스트입니다.
리눅스의 특징
- 자유 소프트웨어와 오픈소스 개발의 가장 유명한 표본
- 현재 200 종류가 넘는 배포판 존재 (우분투, 페도라 등)
- 유연성, 확장성, 안정성
- 오픈소스이기 때문에 버그가 발생하면 많은 기관이나 사용자들이 나서서 보완함
- 많은 사람들이 참여하고 발전시켜서 안정적인 환경을 제공함
- 커뮤니티가 활성화 되어있어 정보를 얻기 용이함
- 유닉스에서 파생된 운영체제
- 다중 사용자 및 다중 처리 시스템 제공
- 유닉스 기반이기 때문에 다중 사용자 시스템이 닮아있음
- 다양한 네트워크 프로토콜 및 네트워크 환경 지원
- C 언어와 약간의 어셈블리어로 작성되 뛰어난 이식성 보유
참고 링크
https://jhnyang.tistory.com/18
https://kkhipp.tistory.com/148
'Studies > Computer Science' 카테고리의 다른 글
[운영체제] 캐시 교체 정책 (0) | 2022.08.20 |
---|---|
[운영체제] 캐시 (Cache) (0) | 2022.08.19 |
[네트워크] 쿠키와 세션 (0) | 2022.07.13 |
[네트워크] JSON & XML (0) | 2022.07.05 |
[네트워크] TCP & UDP (0) | 2022.06.06 |