리눅스/리눅스 기초

리눅스 운영체제는 모든 것이 파일로 구성

Linuxpia 2024. 10. 23. 17:45
반응형

리눅스 운영체제는 모든 것이 파일로 구성

리눅스 운영체제는 모든 것이 파일로 구성된 철학을 가지고 있습니다. 이 개념은 리눅스와 유닉스 계열 운영체제의 근본적인 특징 중 하나이며, 하드웨어 장치, 프로세스 정보, 네트워크 소켓, 디렉터리 등을 모두 파일처럼 다룹니다. 이러한 구조는 시스템 관리와 프로그램 작성에서 일관된 방식으로 자원에 접근하고 제어할 수 있게 해 줍니다.

1. 일반 파일 (Regular Files)

리눅스에서 가장 기본적인 파일 형식입니다. 우리가 일반적으로 알고 있는 텍스트 파일(예: .txt), 바이너리 파일(예: 실행 파일), 이미지 파일 등이 여기에 속합니다.

  • 예시: /home/user/document.txt, /usr/bin/bash

특징:

  • 사용자는 읽기, 쓰기, 실행 권한을 통해 일반 파일을 처리합니다.
  • 파일의 내용을 확인하거나 수정할 때 주로 사용됩니다.

2. 디렉터리 (Directory)

디렉터리는 파일의 목록을 포함하는 특수한 파일입니다. 디렉터리 안에 다른 파일이나 디렉터리를 계층적으로 저장할 수 있습니다.

  • 예시: /home, /etc, /usr/local

특징:

  • 디렉터리는 파일과 파일을 관리하는 컨테이너 역할을 합니다.
  • ls 명령어를 사용해 디렉터리의 내용을 나열할 수 있습니다.

3. 장치 파일 (Device Files)

리눅스에서 하드웨어 장치는 파일로 표현됩니다. 장치 파일은 물리적 장치에 대한 인터페이스로 작동하며, 주로 /dev 디렉터리에 위치합니다. 장치 파일은 크게 블록 장치문자 장치로 구분됩니다.

블록 장치 (Block Device)

블록 단위로 데이터를 읽고 쓰는 장치입니다. 주로 하드 드라이브, USB와 같은 저장 장치가 이에 해당합니다.

  • 예시: /dev/sda, /dev/sdb

문자 장치 (Character Device)

데이터를 바이트 단위로 처리하는 장치입니다. 키보드, 시리얼 포트 같은 장치가 이에 해당합니다.

  • 예시: /dev/tty1, /dev/input/mouse0

4. 소켓 파일 (Socket Files)

네트워크 통신을 위한 파일입니다. 프로세스 간 통신(IPC)을 위해 사용되며, 클라이언트-서버 애플리케이션에서 주로 활용됩니다. 파일 시스템 상에서 소켓은 파일처럼 다뤄집니다.

  • 예시: /var/run/docker.sock

특징:

  • 네트워크 소켓을 통해 데이터가 전달될 수 있습니다.
  • 소켓 파일은 주로 서버와 클라이언트가 서로 데이터를 주고받기 위한 인터페이스로 사용됩니다.

5. 파이프 파일 (Pipe Files)

파이프는 프로세스 간 데이터를 전달하는 방법입니다. 리눅스에서 파이프 파일은 임시적으로 프로세스 간 데이터를 주고받을 수 있는 통로 역할을 합니다. FIFO(First In, First Out) 방식으로 데이터를 처리하며, /tmp 같은 임시 디렉터리에서 주로 사용됩니다.

  • 예시: /tmp/myfifo

특징:

  • 데이터를 한 방향으로만 전달할 수 있습니다.
  • 프로세스 간 통신을 위해 파이프를 설정할 수 있습니다.

6. 링크 파일 (Link Files)

리눅스에는 두 가지 종류의 링크 파일이 있습니다: 심볼릭 링크하드 링크. 이 파일들은 다른 파일을 참조하는 포인터 역할을 합니다.

심볼릭 링크 (Symbolic Link)

다른 파일이나 디렉터리에 대한 경로를 가리키는 참조 파일입니다. 윈도우의 "바로 가기"와 유사합니다.

  • 예시: /home/user/link_to_file -> /home/user/file.txt

하드 링크 (Hard Link)

파일 시스템에서 같은 데이터를 가리키는 또 다른 이름입니다. 하드 링크는 동일한 데이터에 대해 복수의 이름을 가질 수 있습니다.

  • 예시: /home/user/hardlink_to_file

7. 가상 파일 (Virtual Files)

리눅스의 /proc 디렉터리와 같은 곳에 위치한 가상 파일은 실제 데이터가 아니라 운영체제의 상태 정보를 제공하는 파일입니다. 이 파일들은 동적으로 생성되며, CPU 사용량, 메모리 상태 등 시스템 관련 정보를 포함하고 있습니다.

  • 예시: /proc/cpuinfo, /proc/meminfo

특징:

  • 시스템 상태 정보를 실시간으로 보여줍니다.
  • 파일 내용을 읽으면 시스템 상태에 대한 정보를 확인할 수 있습니다.

8. 프로세스 파일

리눅스에서 실행 중인 프로세스 역시 파일로 표현됩니다. /proc 디렉터리 내에 각각의 프로세스에 대한 정보가 파일 형태로 저장되어 있습니다. 프로세스 파일을 통해 현재 실행 중인 프로세스의 상태나 메모리 사용량 등을 확인할 수 있습니다.

  • 예시: /proc/1234 (PID 1234인 프로세스의 정보)

리눅스를 트리 구조로 본 상태

정리

리눅스 운영체제는 "모든 것이 파일이다"라는 철학을 바탕으로 다양한 시스템 자원과 장치를 일관된 방식으로 관리합니다. 일반 파일뿐만 아니라 장치, 네트워크 소켓, 프로세스 정보까지도 모두 파일처럼 다루어집니다. 이러한 방식은 리눅스가 매우 유연하고 강력한 운영체제가 될 수 있는 중요한 이유 중 하나이며, 다양한 유형의 파일을 통해 시스템의 여러 기능을 쉽게 제어할 수 있습니다.