Linux

[Linux] root 영역 디렉터리 (proc/sys/dev)

비번변경 2023. 9. 15. 22:35

개요

이 글에서는 https://mug896.github.io/bash-shell/etc.html 에서 설명하고 있는 / 영역 아래 일부 디렉터리에 대해 간단히 정리한다.

 

 

/proc

현재 시스템에서 실행되는 프로세스에 대한 정보를 제공하기 위한 가상의 파일 시스템이다.

사용자가 커널이 가지고 있는 정보를 쉽게 사용할 수 있도록 메모리 상에 가상의 파일 시스템을 만들어 구조적으로 제공하는 것으로, 실제 파일이 존재하는 것이 아니다. 각 파일은 커널 내의 특정 함수와 연결되어 있어 실시간으로 read 하여 정보를 확인할 수 있다.

또한 프로세스 정보뿐만 아니라 커널이 가진 여러 시스템 관련 정보도 제공하고 있으며, write 하여 값을 변경할 수도 있다. 즉, 파일 시스템을 통해 직접 커널 옵션 설정을 변경할 수 있다.

예시 : 2021.09.11 - vm.overcommit 허용 설정

 

ls 명령으로 /proc을 확인하면 숫자로 된 디렉터리를 확인할 수 있는데, 각각의 디렉터리가 현재 시스템에서 실행되고 있는 프로세스이다.

 

/proc/self

항상 프로세스 자신의 PID 번호로 연결되는 심볼릭 링크로, 프로세스는 자신의 정보를 구하기 위해서 별도로 PID를 알아낼 필요 없이 /proc/self를 이용하면 된다.

 

 

/sys

/proc 이후에 생긴 가상 파일 시스템이다. /proc은 프로세스 정보와 몇몇 시스템 유틸리티가 사용하는 정보를 제공하는 게 목적이었으나, 이후 무자위로 시스템 정보를 제공하게 되었다. 이후 device, system 관련 정보를 보다 구조적으로 제공하기 위해 생성된 것이 /sys 디렉터리다.

기존 레거시 시스템 정보는 /proc을 통해서도 접근할 수 있지만, 신규로 추가되는 시스템 관련 정보는 /sys를 통해 제공된다.

 

 

/dev

커널이 관리하는 장치를 사용자에게 제공하기 위한 디렉터리다. /proc처럼 가상 파일 시스템은 아니고 mknod 명령으로 장치 파일을 생성한다.

ls 명령으로 /dev 디렉터리를 확인하면 파일 사이즈 대신 major number, minor number가 쉼표(,)로 구분되어 표시되는데, 이를 통해 파일을 열었을 때 어떤 장치 드라이버를 사용해야 하는지 알 수 있다. major number는 장치 드라이버를 나타내고, minor number는 같은 장치 드라이버를 사용하는 것들끼리 구분하기 위한 용도이다.

 

Character device

컴퓨터에서 사용하는 장치 중 데이터 접근 시 random access를 할 수 없는 장치를 Character device라고 한다. Character device는 디렉터리 권한의 첫 번째 문자가 c로 표시된다.

find /dev -type c -exec ls -l {} \;

Character device는 데이터가 1byte 크기의 character by character로 전달되고, 커널이 사용하는 버퍼를 거치지 않고 바로 장치에 전달된다. 키보드를 누르면 문자가 표시되고, 마우스를 움직이면 포인터도 움직이는데 이것들이 Character device에 해당된다.

  • 마우스 : /dev/input/
  • 그래픽 : /dev/dri/
  • 사운드 : /dev/snd/
  • 터미널 : /dev/tty*, /dev/pts/*

 

Block device

컴퓨터에서 사용하는 장치 중 데이터 접근 시 random access를 할 수 있는 장치를 Block device라고 한다. Block device는 디렉터리 권한의 첫번째 문자가 b로 표시된다.

find /dev -type b -exec ls -l {} \;

Block device는 block(보통 512bytes) 단위로 데이터가 전달되고, 커널이 관리하는 버퍼를 이용한다.

  • 하드디스크 : /dev/sda[번호]
  • ramdisk 생성 시 사용 : /dev/ram[번호]
  • iso 이미지 파일 마운트 시 사용 : /dev/loop[번호]

 

Pseudo devices

커널에서 제공하는 하나의 기능으로 이해하면 된다. 실제 물리 장치에 연결되어 있는 것은 아니다.

경로 기능
/dev/null 이 장치로 쓰면 입력 데이터가 모두 사라지고 쓰기 성공을 반환한다. 장치를 읽으면 EOF 상태를 반환한다.
보통 명령 실행 지 원하지 않는 data stream을 전달한다.
/dev/zero 장치를 읽으면 연속된 NUL 문자를 제공한다. 장치에 쓰기를 하면 /dev/null과 같은 역할을 한다.
보통 데이터 스토리지를 초기화할 때 사용한다.
/dev/urandom 연속된 의사난수(pseudo random numbers)을 제공한다.
/dev/full 장치로 쓰면 항상 ENOSPC (No space left on device) error code를 반환한다. 장치를 읽으면 연속된 NUL 문자를 제공한다.
보통 프로그램에서 disk full 상태를 테스트할 때 사용한다.

 

 

참고 문서

https://kim-mj.tistory.com/224

https://mug896.github.io/bash-shell/etc.html

 

728x90