[Linux] /proc

kafkaaaa·2023년 9월 20일
0

Linux

목록 보기
4/4
post-thumbnail

📌 /proc

  • proc = process (원래는 process 관련 정보만 제공했으나 현재는 프로세스 정보 뿐만 아니라 다른 시스템 정보들 까지 광범위하게 제공)

  • 프로세스 상황 감시, CPU사용률, 인터럽트, 네트워크 패킷 전송량, 적재된 모듈, CPU정보 등

  • /proc 파일 시스템은 실제로 존재하지 않는 일종의 환영이다.

  • 커널이 메모리 상에 만들어 놓은 것으로 디스크에 존재X

  • 동작중인 프로세스의 상태, 하드웨어, 시스템 정보를 알 수 있다.

  • /proc에 현재 실행중인 PID와 같은 이름의 폴더들이 생성된다.

  • ps 명령어는 /proc 폴더의 내용을 조회해서 출력해주는 것이다.



📌 /proc 에서 알 수 있는 정보들

/proc/번호

  • 프로세스 번호에 대한 정보가 있는 디렉토리.
  • 각 프로세스는 자신만의 디렉토리를 /proc에 가지고 있다.

/proc/cpuinfo

  • CPU 타입, 모델, 제조회사, 성능 등

/proc/devices

  • 현재 커널에 설정되어 있는 장치 목록

/proc/dma

  • 현재 사용중인 DMA 채널

    📌 DMA (Direct Memory Access; 직접 메모리 접근)

    • CPU가 개입하지 않고 장치와 시스템의 메모리 간에 데이터를 전송할 수 있도록 한 것
    • CPU 도움(개입) 없이 I/O 장치가 직접 메모리에 접근하는 것.
    • 메모리 버퍼, 포인터, 카운터를 사용
    • CPU는 상태, 제어 정보만을 교환
    • 데이터 전송은 I/O와 메모리간에 직접 교환
    • 디스크 같이 대용량의 데이터를 I/O 하는 장치를 위해 CPU가 매번 전송을 제어하는 것은 낭비여서 만들어짐

/proc/filesystems

  • 어떤 파일 시스템이 커널에 설정되어 있는지 볼 수 있다.

/proc/interrupts

  • 현재 어떤 인터럽트가 사용 중인지, 얼마나 많이 사용되었는지 알 수 있다.

/proc/ioports

  • 현재 사용중인 I/O 포트

/proc/meminfo

  • 메모리 사용량 정보 (실제 메모리, 가상 메모리 모두)

/proc/modules

  • 현재 사용되고 있는 커널 모듈

/proc/stat

  • 시스템 상태에 대한 다양한 정보.
  • CPU, Interrupt, Context switching 등 일반적인 시스템 통계 정보.
  • 부팅된 후 page fault가 몇 번 발생했는지 하는 것들을 알 수 있음.

/proc/net

  • 네트워크 프로토콜들의 상태에 대한 정보

/proc/uptime

  • 시스템 가동 시간

/proc/version

  • 커널의 버전

/proc/[PID]/maps

  • 프로세스가 mapping된 메모리 주소 공간

/proc/[PID]/mem

  • 프로세스가 사용중인 메모리 상태

등등.. 엄청나게 많다!


📌 /proc 파일 시스템

일반 파일 시스템은 상당한 오버헤드 발생

  • 각 파일의 inode(index-node)와 같은 객체를 관리해야 하고
  • 이러한 정보들을 필요할 때 마다 운영체제에 요청해야 함
  • 모든 것을 운영체제가 관리하므로 상당한 오버헤드 발생

proc 파일 시스템

  • 리눅스 커널에서 직접 파일 시스템을 관리하는 방법을 채택
    -> proc 파일 시스템


Ref

https://itwiki.kr/w/%EB%A6%AC%EB%88%85%EC%8A%A4_proc
https://codingcoding.tistory.com/193
https://doc.kldp.org/Translations/html/SysAdminGuide-KLDP/x642.html

profile
일모도원

0개의 댓글