리눅스 계층 구조의 개요
리눅스 운영 체제는 크게 다음과 같은 4가지 계층으로 나눌 수 있습니다.
- 하드웨어 계층
- 커널 계층
- 유틸리티 계층
- 사용자 계층 (셸 포함)
이제 각 계층을 자세히 살펴보겠습니다.
하드웨어 계층
이 계층은 물리적인 컴퓨터 하드웨어를 포함합니다.
- 예: CPU, 메모리(RAM), 저장 장치(SSD, HDD), 네트워크 카드 등
- 리눅스 운영 체제는 하드웨어를 직접 제어할 수 없으며, 이를 위해 커널이 존재합니다.
- 하드웨어는 커널이 제공하는 인터페이스를 통해 접근됩니다.
커널 계층
커널은 리눅스 운영 체제의 핵심이며, 하드웨어와 소프트웨어 간의 중재자 역할을 합니다.
커널은 다음과 같은 주요 기능을 수행합니다:
- 프로세스 관리
- CPU 시간을 각 프로세스에 할당하고, 여러 프로세스가 동시에 실행되도록 스케줄링합니다.
- 프로세스 간의 통신과 동기화를 관리합니다.
- 메모리 관리
- 프로그램이 사용할 메모리를 할당하고, 사용이 끝난 메모리를 반환합니다.
- 가상 메모리 시스템을 통해 물리적 메모리를 효율적으로 사용합니다.
- 장치 관리
- 하드웨어 장치(디스크, 네트워크 카드, 키보드 등)를 제어합니다.
- 장치 드라이버를 통해 하드웨어와 상호작용합니다.
- 파일 시스템 관리
- 데이터를 파일로 저장하고 읽어올 수 있도록 파일 시스템을 관리합니다.
- 다양한 파일 시스템 형식(ext4, xfs 등)을 지원합니다.
- 네트워킹
- 인터넷이나 로컬 네트워크에서 데이터를 송수신하도록 지원합니다.
유틸리티 계층
이 계층은 리눅스의 사용자 프로그램과 도구를 포함합니다.
- 예를 들어, ls, cp, grep과 같은 명령줄 유틸리티는 커널이 제공하는 기능을 호출하여 특정 작업을 수행합니다.
- 일반적으로 커널과 직접 상호작용하기 어렵기 때문에 이 계층의 도구를 사용하여 작업을 단순화합니다.
사용자 계층 (셸 포함)
사용자가 시스템과 상호작용하는 가장 높은 계층입니다.
셸(Shell)의 역할
- 셸은 사용자와 커널 사이의 인터페이스입니다.
- 사용자가 입력한 명령을 해석하고, 커널에게 요청을 전달합니다.
- 셸은 단순히 명령을 실행하는 역할만 하는 것이 아니라, 스크립팅 언어로도 사용됩니다.
셸의 종류:
- Bash (Bourne Again Shell): 리눅스에서 가장 널리 사용되는 셸
- Zsh, Fish, KornShell(KSH) 등 다양한 셸이 존재하며, 사용자 편의와 기능에 따라 선택할 수 있습니다.
리눅스 계층 구조의 상호작용
리눅스 계층 구조를 상호작용 관점에서 설명하겠습니다:
- 사용자가 셸에 명령을 입력합니다.
- 예: ls -l
- 셸은 사용자가 입력한 명령을 분석하고, 이를 시스템 호출(System Call)로 변환하여 커널에 전달합니다.
- 커널은 파일 시스템, 메모리, 프로세스 등을 관리하여 적절한 작업을 수행합니다.
- 예: 디스크에서 디렉토리 정보를 읽어들임
- 작업 결과는 다시 셸로 반환됩니다.
- 예: 디렉토리 내용이 출력됨
시각적 계층 구조
이해롤 돕기 위한 건물 비유
리눅스를 건물에 비유하면 다음과 같습니다:
- 하드웨어: 건물의 기초와 구조물
- 커널: 건물 내부의 전기, 배관, 엘리베이터 시스템(중재자 역할)
- 유틸리티: 전기 스위치, 수도꼭지 등 사용하기 쉽게 만든 도구
- 셸: 건물의 인터폰 또는 컨트롤 패널(명령을 전달하는 역할)
'Linux' 카테고리의 다른 글
리눅스 디렉토리 계층 구조 (0) | 2025.01.19 |
---|---|
가상화(Virtualization) (0) | 2025.01.19 |
시스템 관리자(System Administrator, SysAdmin) (0) | 2025.01.19 |
모놀리식 아키텍처와 MSA(MicroServices Architecture) (0) | 2025.01.19 |
Mac(Mx)에서 VMWare Ubuntu Desktop 설치하기 (0) | 2025.01.18 |