본문 바로가기
상식및정보

리눅스의 기본 구조와 파일 시스템

by h-man 2021. 9. 21.

리눅스 시스템의 구조

 

리눅스의 주요 기능은 커널을 통해 관리되고 제공된다. 커널은 운영체제의 핵심으로 컴퓨터 시스템의 전반적인 운영과 관리를 담당하며, 사용자에게는 편의성을 제공하고 하드웨어의 관리의 효율성을 보장한다.

 

리눅스 커널은 프로세스, 메모리, 파일, 입출력 등의 자원들을 관리한다. 또한, 시스템 보호를 위해 사용자와 시스템의 영역을 서로 나눠 관리하는 역할도 하는데, 여러 애플리케이션으로부터 운영체제를 보호하고, 시스템마다 각각 권한을 부여해서 다른 사용자들이 시스템을 잘못 사용하지 않도록 보안 기능을 제공하고 있다.

 

커널은 시스템과 유지 영역의 프로세스가 상호작용할 수 있는 인터페이스를 제공하여, 애플리케이션들이 컴퓨터 하드웨어나 시스템을 다룰 수 있는 보다 효율적인 애플리케이션 프로그래밍 환경을 지원한다. 또한, POSIX를 준수함으로써 다른 유닉스와 같은 표준화된 시스템 호출(애플리케이션 프로그래밍) 인터페이스를 제공하고 있는데, 시스템 호출을 이용하여 프로세스 제어, 파일 조작, 디바이스 관리, 시스템 정보 관리, 통신 등의 기능을 수행한다.

 

리눅스는 커널 모드와 유저 모드로 동작한다. 유저 모드는 프로세스가 동작하는 구역으로 유저 모드의 프로세스는 커널 모드로 직접 접근할 수 없다. 애플리케이션이 시스템 호출을 수행하면 유저모드로 실행되고, 커널이 해당 명령을 수행하면서 커널 모드로의 전환이 일어난다. 일반적으로 유저 모드에서는 시스템의 메모리에 접근하거나 하드웨어 같은 중요 장치를 사용할 수 없다. 이러한 디바이스의 사용이 필요한 경우에만 커널 모드로 동작하도록 해서 시스템을 보호하고 있다.

 

리눅스 파일 시스템

 

운영체제에서는 커널 프로그램과 유틸리티 등 다양한 시스템의 실행과 관련된 시스템 파일들을 제공한다. 그리고 사용자 데이터의 저장을 위해서도 파일을 사용하는데, 이러한 파일들은 파일 시스템으로 관리된다. 파일 시스템은 파일의 저장, 삭제, 읽기 등의 파일 관리 기능과 파일에 대한 접근 제어(보호) 기능을 제공한다.

 

윈도우에서는 FAT32나 NTFS 같은 파일 시스템을 사용하고, 리눅스에서는 EXT2, EXT3, EXT4 등의 파일 시스템을 사용한다. EXT2는 리눅스 커널 초기부터 사용되었던 리눅스 기본 파일 시스템이고, EXT3는 EXT2에 쉬운 복구를 위한 저널링(journaling) 기능이 추가된 파일 시스템이다.

 

유닉스에서는 디스크, 터미널, 사운드 카드 등 모든 주변장치들을 하나의 파일로 취급한다. 유닉스 파일 시스템에선느 다양한 파일들을 제공하는데, 각각의 기능에 따라 다음과 같이 구분할 수 있다.

 

파일 내용
루트 파일 시스템
(Root File System)
시스템 프로그램과 디렉터리들이 포함된 시스템 초기화 및 관리에 필요한 내용을 담고 있어
부팅에 꼭 필요한 파일 시스템이다. 하드디스크에 적어도 하나의 파일 시스템이 존재한다.
일반 파일
(Regular File)
수행 가능한 프로그램 파일이나 원시 프로그램, 파일 텍스트 파일, 데이터 파일 등
컴퓨터에 의해 처리될 수 있는 파일들이 저장된다.
디렉터리 파일
(Directory File)
다른 파일과 디렉터리에 관한 정보를 저장하는 논리적인 단위이며 계층 구조로 구성되는데,
파일명과 아이노드 번호를 연결한다.
특수 파일
(Special File)
디바이스들을 위한 파일이며 디바이스에 접근하기 위해 사용되는데, 명명된 파이프(named pipe)
파일, 심볼릭 링크 파일, 디바이스 파일 등이 있다.

 

리눅스에서는 다양한 파일 시스템들을 하나의 파일 시스템처럼 사용할 수 있도록 가상 파일 시스템이라는 구조를 사용한다. 가상 파일 시스템은 모든 파일 시스템을 하나의 파일 시스템으로 보이게 하는 레이어다. 파일이나 디렉터리, 디바이스 등을 파일로 취급할 수 있기 때문에 파일 처리를 위한 시스템 호출을 이용하여 조작할 수 있다는 장점을 제공한다.

 

가상 파일 시스템은 리눅스 커널의 특징 중 하나이며, 기존의 유닉스 시스템이 특정 파일 시스템만을 지원하던 것에 비해 리눅스 커널은 비교적 초창기부터 가상 파일 시스템을 지원했다.

댓글