it-swarm-ko.tech

procfs와 sysfs의 차이점은 무엇입니까?

Procfs와 sysfs의 차이점은 무엇입니까? 왜 파일 시스템으로 만들어 집니까? 내가 이해하는 것처럼 proc은 시스템에서 실행중인 프로세스에 관한 즉각적인 정보를 저장하는 것입니다.

74
Sen

Procfs와 sysfs의 차이점은 무엇입니까?

proc는 오래된 것입니다. 규칙과 구조가없는 경우가 많습니다. 그리고 어느 시점에서 proc는 약간 혼란스럽고 새로운 방법이 필요하다고 결정되었습니다.

그런 다음 sysfs가 만들어지고 추가 된 새 항목이 장치 정보와 같은 sysfs에 입력되었습니다.

어떤 의미에서 그들은 똑같이하지만 sysfs는 좀 더 구조적입니다.

왜 파일 시스템으로 만들어 집니까?

유닉스 철학은 모든 것이 "파일"이므로 파일처럼 동작하도록 만들어졌습니다.

내가 이해하는 것처럼 proc은 시스템에서 실행중인 프로세스에 관한 즉각적인 정보를 저장하는 것입니다.

그 부분은 항상 거기에 있었고 아마도 sysfs로 들어 가지 않을 것입니다.

그러나 proc에서 찾을 수있는 더 오래된 것들이 있습니다.

63
Johan

처음에 (유닉스로 돌아가서), 시스템에서 실행중인 프로세스에 대해 발견 한 프로그램은 커널 메모리에서 프로세스 구조를 직접 읽거나 (/ dev/mem을 열고 원시 데이터를 직접 해석하는) 방법이었습니다. 이것이 바로 첫 번째 'ps'명령의 작동 방식입니다. 시간이 지남에 따라 일부 정보는 시스템 호출을 통해 제공되었습니다.

그러나/dev/mem을 통해 시스템 데이터를 사용자 공간에 직접 노출시키는 것은 좋지 않은 형식이며, 새로운 프로세스 데이터를 내보낼 때마다 새로운 시스템 호출을 지속적으로 생성하는 것이 불쾌하므로 새로운 방법이 만들어졌습니다. 사용자 공간 응용 프로그램의 구조화 된 데이터에 액세스하여 프로세스 속성을 찾습니다. 이것은/proc 파일 시스템이었습니다./proc를 사용하면 커널의 기본 데이터 구조가 변경 되더라도 인터페이스와 구조 (디렉토리 및 파일)를 동일하게 유지할 수 있습니다. 이것은 이전 시스템보다 훨씬 덜 취약했으며 확장 성이 더 좋습니다.

/ proc 파일 시스템은 원래 'ps', 'top', 'free'및 기타 몇 가지 시스템 유틸리티에 필요한 프로세스 정보와 몇 가지 주요 시스템 속성을 게시하도록 설계되었습니다. 그러나 사용하기 쉬웠 기 때문에 (커널 쪽과 사용자 영역 쪽에서) 전체 시스템 정보에 대한 덤핑 장이되었습니다. 또한 읽기/쓰기 파일을 얻기 시작하여 설정을 조정하고 커널 또는 다양한 하위 시스템의 작동을 제어하는 ​​데 사용되었습니다. 그러나 제어 인터페이스를 구현하는 방법론은 특별했고/proc는 곧 뒤엉킨 혼란에 빠졌다.

Sysfs (또는/sys 파일 시스템)는이 혼란에 구조를 추가하고 시스템 정보 및 제어점 (설정 가능한 시스템 및 드라이버 속성)을 커널의 사용자 공간에 노출시키는 균일 한 방법을 제공하도록 설계되었습니다. 이제 커널의 드라이버 프레임 워크는 드라이버 유형과 데이터 구조의 값을 기반으로 드라이버가 등록 될 때/sys 아래에 디렉토리를 자동으로 만듭니다. 즉, 특정 유형의 드라이버는 모두 sysfs를 통해 동일한 요소가 노출됩니다.

많은 레거시 시스템 정보 및 제어 지점은 여전히 ​​/ proc에서 액세스 할 수 있지만 모든 새로운 버스 및 드라이버는 sysfs를 통해 정보 및 제어 지점을 노출해야합니다.

77
Tim Bird

procfs는 임의의 file_operations를 허용하고 sysfs는 더 제한됩니다

sysfs는 2.6 커널 릴리스주기 동안 생성 된 가상 파일 시스템으로, procfs가 이러한 유형의 정보를 제대로 수행하지 않았으므로 장치 정보를 표시합니다.

메모리 등은 해당 유형의 정보를 보여 주도록 의도되지 않았기 때문에 sysfs로 이식되지 않았으므로 전혀 이식되지 않을 것입니다.

3
kemra102

또한 여기에 추가하고 싶습니다 .../proc는 이전 버전이므로 해당 기간의 커널 장치 정보가 포함되어 있습니다. 조금 구조적이고 접근하기 쉬운 ..

1
gagan bajaj