-
리눅스, 유닉스, GNU 짚어보기Linux 2021. 10. 6. 22:39
왜 대부분 서버의 운영체제가 리눅스인가?
리눅스가 더 많이 선호되는 이유
- 오픈소스
- 실제로 리눅스를 이루는 코드를 볼 수 있어 버그가 생겼을 때 리눅스에서 어떻게 동작되는지 확인할 수 있음
- 오픈소스이므로 수많은 개발자들이 부족하고 취약한 부분을 파악하게 되고 이를 해결함
- 개발자를 위해 수많은 프로그래밍 인터페이스(cgroup, namespace?)를 제공하기 때문에 쉽게 프로그램을 개발하거나 설치할 수 있음(도커? 컨테이너?)
- 안정성과 신뢰성
- 리눅스는 유닉스 기반이며, 유닉스는 원래 강력한 안정성과 신뢰성을 제공하면서도 쉽게 다룰수 있게 디자인되었음
- →리눅스가 안정성과 신뢰성을 제공할 수 있는 이유는? 시스템 관리, 프로그램 구성, 프로세스 관리, 보안 등 많은 요인들이 있고 윈도우와 다르게 재부팅 필요가 없이 시스템 또는 프로그램 구성을 변경할 수 있음
- 보안이 뛰어남
- 공격으로부터 파일과 서비스를 보호하기 위해 다양한 보안 매커니즘이 구현되어 있음
- 서버에서 특정 서비스의 리소스를 제한하는 Security Enhanced Linux (SELinux)가 있음
- SELinux: 관리자가 시스템 액세스 권한을 효과적으로 제어할 수 있게 하는 리눅스 보안 아키텍처
- 오픈소스인 만큼 보안이 취약한 부분은 빠르게 해결되어 배포됨
- 다루기 쉬움
- 서버가 필요한 것에 맞게 마음대로 튜닝할 수 있음 (GUI가 필요하다면 설치하면 되고 필요없으면 설치안하면 됨)
- 대표적으로 shell
- 하드웨어 이식성
- 최신 하드웨어와 오래된 하드웨어까지 다양하게 지원해줌
- 다양한 하드웨어를 지원
- 비용
- 라이선스, 하드웨어/소프트웨어, 유지보수 비용 등 총 비용이 윈도우에 비해 저렴함
- 리눅스가 유료인 경우가 있는데 그래도 윈도우 보다 저렴
유닉스?
1969년에 AT&T 벨 연구소가 개발한 다중 사용자 방식의 시분할 운영체제
UNIX의 탄생은 Multics Project(Multiplex Information and Computing Service)로부터 시작되었음
멀틱스 프로젝트는 AT&T 벨 연구소, MIT, General Electric 라는 세가지 그룹이 모여 1965년 부터 시작하여 1972년 끝을 맺은 프로젝트
→프로젝트의 이름에 유닉스의 특징이 드러남
특징
- 초기에 어셈블리어로 작성되었으나 나중에 C로 개발
- 다중 사용자, 다중 프로그래밍
- 하나의 컴퓨터를 2명 이상의 사용자가 동시에 사용가능
- CPU를 효율적으로 사용하여 2개 이상의 프로그램을 동시에 처리
- 시분할 처리
- 다중 사용자가 프로그램을 실행하면 해당 프로그램을 각각 시간으로 짧게 나누어 처리함으로써 사용자가 독립된 환경으로 사용하는 느낌을 받음
- 대화식 운영체제 → shell을 통해 컴퓨터와 소통
- 트리형 파일 시스템
- 파일 시스템의 최상위 디렉토리는
/
으로 딱 하나임
- 파일 시스템의 최상위 디렉토리는
리눅스와의 차이점
Linux vs Unix - Difference and Comparison | Diffen
Linux is an open source, free to use operating system widely used for computer hardware and software, game development, tablet PCS, mainframes etc. Unix is an operating system commonly used in internet servers, workstations and PCs by Solaris, Intel, HP et
www.diffen.com
특징\운영체제 리눅스 유닉스 비용 무료, 일부 유료이지만 windows 보다 저렴 유료, 가격은 회사마다 각각 다름 개발, 배포 오픈소스 프로젝트 회사마다 개발과 배포가 각각 다름 GUI GNOME, KDE 두 가지 GUI를 제공하나, 다른 GUI들도 많음
GNOME(GNU Network Object Model Environment): 유닉스 운영체제를 위한 오픈 소스 데스크탑 환경이며 GNU 프로젝트의 공식 데스크탑원래 CLI 기반이었으나 GNOME을 제공 텍스트 인터페이스 리눅스의 기본 쉘인 BASH (Bourne Again SHell) 원래는 Bourne Shell이지만, 현재는 BASH를 포함한 다른 쉘들과 호환 예 Ubuntu, Fedora, Red Hat, Debian, Archlinux, Android 등 OS X, 모든 리눅스 GNU/LINUX ?
현재 우리가 사용하고 있는 리눅스 운영체제를 말함
이는 리눅스 커널을 사용하는 GNU 운영체제로 GNU/LINUX 가 정확한 이름이다!
GNU/LINUX에서 리눅스는 커널 부분을 말하고 시스템의 나머지 부분은 기타 프로그램으로 구성되며, GNU 프로젝트가 많은 부분을 개발함
따라서, GNU 프로그램 + LINUX 커널
커널
운영체제의 핵심 부분
커널의 역할 역시 운영 체제의 핵심 역할이라 할 수 있음
프로세스 관리, 메모리 관리, 시스템 콜 처리 등을 수행하는 부분
GNU
"GNU is not UNIX"의 약자로 유닉스와 완벽하게 호환되는 오픈소스 소프트웨어 시스템
"GNU is not UNIX"의 의미는 GNU가 유닉스 계열이지만 자유 소프트웨어인 점과 유닉스 코드를 포함하지 않는다는 점에서 차별을 두려는 것임
모든 사람이 자유롭게 사용할 수 있도록 만들어진 시스템
- 오픈소스