리눅스?
리눅스는 1991년 9월 17일 리누스 토르발스가 처음 출시한 운영 체제 커널인 리눅스 커널에 기반을 둔 오픈 소스 유닉스 계열 운영 체제 계열이며 리눅스는 일반적으로 리눅스 배포판 안에 패키지 처리된다.
리눅스 커널은 C언어로 작성되었으며, 리눅스 배포판에 포함된 다양한 유틸리티와 프로그램은 C언어, 파이썬, 자바, 루비 등 다양한 언어로 작성되었다.
리눅스는 다음과 같은 특징을 가지고 있다.
- 오픈 소스: 누구나 소스 코드를 자유롭게 사용할 수 있다.
- 다중 사용자 및 멀티 태스킹 지원: 리눅스는 다중 사용자와 멀티 태스킹을 지원한다.
- 모듈식 구조: 커널은 모듈로 구성되어 있어, 필요에 따라 모듈을 추가하거나 제거할 수 있다.
- 다양한 하드웨어 지원: 리눅스는 다양한 하드웨어를 지원한다.
리눅스는 다음과 같은 분야에서 사용된다.
- 서버: 웹 서버, 데이터베이스 서버, 파일 서버 등 다양한 서버 운영에 사용된다.
- 데스크톱: 개인용 컴퓨터 운영에 사용된다.
- 모바일: 스마트폰, 태블릿 등 모바일 기기 운영에 사용된다.
- 임베디드: 자동차, 가전제품 등 임베디드 시스템 운영에 사용된다.
리눅스는 다음과 같은 장점을 가지고 있다.
- 유연성: 모듈식 구조로 인해 유연하게 확장할 수 있다.
- 효율성: 커널과 유틸리티가 분리되어 있어 시스템 자원을 효율적으로 사용할 수 있다.
- 보안성: 오픈 소스 방식으로 인해 보안성이 높다.
- 안정성: 오픈 소스 커뮤니티의 활발한 활동으로 인해 안정성이 높다.
- 비용 절감: 오픈 소스이기 때문에 라이선스 비용이 발생하지 않는다.
리눅스 구조는 위의 사진처럼 구성되어 있으며 이외에 유틸리티, 파일 시스템이 있다
이제 하드웨어 , 커널, 쉘 순서로 알아보겠다.
하드웨어
리눅스에서 하드웨어 장치를 확인하는 방법은 다음과 같다.
- CPU 정보 확인: cat /proc/cpuinfo
- 메모리 정보 확인: free
- 저장장치 정보 확인: lsblk
- I/O 장치 정보 확인: lsusb
커널
은 리눅스 운영체제의 핵심 부분으로, 하드웨어와 소프트웨어의 중간에서 하드웨어 자원을 관리하고 소프트웨어의 실행을 제어하며 시스템에서 가장 중요한 부분으로, 리눅스 운영체제가 정상적으로 작동하기 위해서는 커널이 반드시 있어야 한다.
커널은 다음과 같은 기능을 수행한다.
- 하드웨어 자원 관리: CPU, 메모리, 디스크, 네트워크 등 시스템의 하드웨어 자원을 관리한다.
- 프로세스 관리: 시스템에서 실행 중인 프로세스를 관리한다.
- 메모리 관리: 시스템에서 사용 중인 메모리를 관리한다.
- 파일 시스템 관리: 파일 시스템을 통해 데이터를 저장하고 관리한다.
- 네트워크 관리: 네트워크를 통해 데이터를 전송하고 수신한다.
쉘
은 사용자와 운영체제 사이의 인터페이스 역할을 하며 사용자의 명령을 해석하고, 커널에 명령을 전달하여 작업을 수행한다. 리눅스에는 다양한 쉘이 존재하며, 대표적인 쉘로는 bash, zsh, fish 등이 있다.
만들어진 순서대로 대표적인 쉘의 종류를 간략하게 알아보겠다.
- Bourne Shell (sh): 리눅스에서 가장 오래된 쉘이며 간단하고 직관적인 문법을 가지고 있다.
- C Shell (csh): C 언어의 문법을 기반으로 개발된 쉘이며 강력한 기능과 편의성을 제공한다.
- Korn Shell (ksh): Bourne Shell과 C Shell의 기능을 결합한 쉘이며 안정성과 유용성을 모두 갖추고 있다.
- Bourne Again Shell (bash): GNU 프로젝트에서 개발한 쉘이며 ksh와 csh,sh의 기능을 모두 포함하며, 다양한 확장 기능을 제공한다.
- Z Shell (zsh): bash를 기반으로 개발된 쉘이며 다양한 기능과 편의성을 제공한다.
유틸리티
는 시스템의 기본적인 작업을 수행하는 소프트웨어이다. 파일 복사, 압축, 디스크 포맷, 네트워크 연결 등 다양한 작업을 수행할 수 있는 유틸리티가 제공된다.
파일 시스템
은 하드 디스크, USB 드라이브, CD-ROM 등 저장 장치에 저장된 데이터를 관리하는 방법이며 리눅스에서는 다양한 파일 시스템을 지원하며, 대표적인 파일 시스템으로는 ext4, XFS, btrfs 등이 있다.
이외에도 리눅스에는 다양한 구성 요소가 존재하고 대표적인 구성 요소로는 다음과 같은 것들이 있다.
- 라이브러리: 소프트웨어가 필요한 기능을 제공하는 소프트웨어
- 컴파일러: 소스 코드를 기계어로 번역하는 소프트웨어
- 개발 도구: 소프트웨어를 개발하는 데 필요한 도구
'시스템' 카테고리의 다른 글
물리 메모리 영역 수집 방법 (0) | 2023.09.22 |
---|---|
리눅스의 개념 및 기본 구조--(2)주요 파일 및 초기화 파일 (0) | 2023.09.19 |
[시스템] 정적 라이브러리? 알아볼게요 ( with. code ) (0) | 2023.08.21 |
[시스템] 커널? 알아볼게요 ( with. python ) (0) | 2023.08.18 |
[시스템] 바인드 쉘 ? 알아볼게요 ( with. shell script ) (0) | 2023.08.18 |