리눅스는 개발 초기 다양한 사람이 편집에 참여할 수 있는 오픈 소스로 시작하여 현재까지도 모든 소스가 공개된 상태로 개발이 이루어지고 있다.
Linux는 하드웨어를 제어하는 커널, 사용자가 커널에 접근할 수 있도록 도움을 주는 Shell, 그 외 응용프로그램으로 구성된다.
Kernel은 Linux OS의 핵심 소프트웨어로 CPU, 메모리, 하드 디스크 등의 물리적 장치에 접근할 수 있는 프로그램이다. 응용 프로그램이 실행되면 CPU, 메모리 등의 하드웨어 리소스를 할당하는 역할을 한다.
Shell은 유저와 커널 사이에서 명령어를 번역하여 해석하고 프로그램을 실행하는 프로그램이다. Shell의 종류는 Bourne shell, C shell, Korn shell, Bash shell 등이 있으며, 대부분의 리눅스는 주로 Bash shell을 사용한다. Shell은 명령어 번역 역할을 하는 Shell 과 유저로부터 입력을 받는 TTY로 구성된다.
Shell은 Kernel과 유저 간 명령어 번역 역할만 수행하며, 명령어 입력을 받는 기능은 존재하지 않는다. 그러므로 유저가 Kernel에 접근하기 위해서는 Shell에 명령어를 입력할 수 있는 프로그램이 필요하다. 이러한 프로그램을 TTY (teletypewriter) 프로그램이라고 한다. 대표적인 TTY 프로그램으로는 Terminal, Konsole 등이 있다.
Linux의 핵심 소프트웨어인 Kernel을 일반 유저가 사용하기 위해서는 Shell, UI, 기타 응용프로그램 등등, 무수히 많은 프로그램이 필요하다. 일반 사용자가 Linux를 쉽게 설치해서 사용할 수 있도록 Kernel 과 기타프로그램들을 패키징한 전체 운영체제를 배포판이라고 한다.
Linux 배포판은 개발 그룹에 따라 계열로 나뉘고 있는데, 대표적인 계열로 Fedora 계열, Debian 계열, Android 계열 등이 있다.
'개발이야기' 카테고리의 다른 글
[linux] 리눅스 command 기본 1 (0) | 2023.12.13 |
---|---|
[Linux]리눅스 command 한눈에 보기 (0) | 2023.12.12 |
[linux] vi편집기 간단 사용법 (0) | 2023.12.08 |
[redhat/linux] 일반 유저에게 관리자권한 부여하기 (2) | 2023.12.07 |
[리눅스/redhat]프로그래밍 정교한 시간 측정하기 ( C/C++) (2) | 2023.12.07 |