Apa perbedaan antara procfs dan sysfs?

71

Apa perbedaan antara procfs dan sysfs? Mengapa mereka dibuat sebagai sistem file? Seperti yang saya pahami, proc hanyalah sesuatu untuk menyimpan info langsung mengenai proses yang berjalan dalam sistem.

Sen
sumber

Jawaban:

61

Apa perbedaan antara procfs dan sysfs?

procadalah yang lama, kurang lebih tanpa aturan dan struktur. Dan pada titik tertentu diputuskan bahwa procitu agak terlalu kacau dan cara baru diperlukan.

Kemudian sysfsdibuat, dan hal-hal baru yang ditambahkan dimasukkan ke dalam sysfsinformasi perangkat seperti.

Jadi dalam beberapa hal mereka melakukan hal yang sama, tetapi sysfssedikit lebih terstruktur.

Mengapa mereka dibuat sebagai sistem file?

Filsafat UNIX memberitahu kita bahwa semuanya adalah "file", oleh karena itu ia dibuat sehingga berperilaku sebagai file.

Seperti yang saya pahami, proc hanyalah sesuatu untuk menyimpan info langsung mengenai proses yang berjalan dalam sistem.

Bagian-bagian itu selalu ada di sana dan mereka mungkin tidak akan pernah pindah ke sana sysfs.

Tetapi ada lebih banyak barang lama yang bisa Anda temukan proc, yang belum dipindahkan.

Johan
sumber
2
Terima kasih atas jawabannya .. Tetapi mengapa cpuinfo dan meminfo seperti hal-hal yang masih dipertahankan di procfs? Mengapa mereka tidak dipindahkan ke sysfs?
Sen
5
Saya kira mereka menaruh barang baru di sysfs, dan meninggalkan yang lama untuk menjaga kompatibilitas. Ada banyak hal yang tergantung pada hal-hal itu dalam proses ...
Johan
75

Pada awalnya (jalan kembali ke Unix), cara program mengetahui tentang proses yang berjalan pada sistem adalah melalui langsung membaca struktur proses dari memori kernel (pembukaan / dev / mem, dan menafsirkan data mentah secara langsung). Ini adalah cara perintah 'ps' pertama bekerja. Seiring waktu, beberapa informasi tersedia melalui panggilan sistem.

Namun, itu adalah bentuk yang buruk untuk mengekspos data sistem secara langsung ke ruang pengguna melalui / dev / mem, dan menjengkelkan untuk terus-menerus membuat panggilan sistem baru setiap kali Anda ingin mengekspor beberapa bagian baru dari data proses, sehingga metode yang lebih baru dibuat untuk mengakses data terstruktur untuk aplikasi ruang pengguna untuk mencari tahu tentang atribut proses. Ini adalah sistem file / proc. Dengan / proc, antarmuka dan struktur (direktori dan file) dapat tetap sama, bahkan ketika struktur data yang mendasarinya di kernel berubah. Ini jauh lebih rapuh daripada sistem sebelumnya, dan ini scaling lebih baik.

Sistem file / proc pada awalnya dirancang untuk mempublikasikan informasi proses dan beberapa atribut sistem utama, yang diperlukan oleh 'ps', 'top', 'free' dan beberapa utilitas sistem lainnya. Namun, karena mudah digunakan (baik dari sisi kernel dan sisi ruang pengguna), ini menjadi tempat pembuangan untuk seluruh jajaran informasi sistem. Selain itu, ia mulai mendapatkan file baca / tulis, yang akan digunakan untuk menyesuaikan pengaturan dan mengendalikan operasi kernel atau berbagai subsistemnya. Namun, metodologi penerapan antarmuka kontrol bersifat ad-hoc, dan / proc segera tumbuh menjadi berantakan kusut.

Sysfs (atau / sys filesystem) dirancang untuk menambah struktur pada kekacauan ini dan memberikan cara yang seragam untuk mengekspos informasi sistem dan titik kontrol (settable system dan atribut driver) ke ruang pengguna dari kernel. Sekarang, kerangka kerja driver di kernel secara otomatis membuat direktori di bawah / sys ketika driver terdaftar, berdasarkan pada tipe driver dan nilai-nilai dalam struktur data mereka. Ini berarti bahwa driver dari tipe tertentu semuanya akan memiliki elemen yang sama diekspos melalui sysfs.

Banyak dari sistem informasi warisan dan titik kontrol masih dapat diakses di / proc, tetapi semua bus dan pengemudi baru harus memaparkan info dan titik kontrol mereka melalui sysfs.

Tim Bird
sumber
8
Salah satu alasan bahwa itu "bentuk buruk" untuk digunakan /dev/memdan /dev/kmemmereka memerlukan akses root, sehingga aplikasi yang menggunakannya harus setuid.
Barmar
2
Pada banyak sistem Unix dan Linux, file-file perangkat dimiliki oleh grup kmem, dan alat-alat seperti psSGID kmem.
countermode
2
Bahkan, metode lama mengakses langsung /dev/mematau /dev/kmemlebih cepat untuk kernel karena proses mode pengguna bisa hanya mmapfile dan mengambil semua info hanya dengan membaca RAM. Untuk mendapatkan setiap informasi dari /procsistem file memerlukan satu syscall for opendan lainnya untuk readjadi jauh lebih lambat. Namun, /proctidak memerlukan peretasan khusus kernel untuk membaca memori dan mengekspos data yang jauh lebih sensitif untuk proses mode pengguna.
Mikko Rantalainen
10

procfs memungkinkan sewenang-wenang file_operations, sysfs lebih dibatasi

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber
3

sysfs adalah Virtual Filesystem yang dibuat selama siklus rilis 2.6 Kernel untuk menampilkan informasi perangkat karena procfs tidak melakukan jenis informasi ini dengan baik.

Memori, dll. Belum porting ke sysfs karena tidak pernah dimaksudkan untuk menunjukkan jenis informasi sehingga kemungkinan tidak akan porting sama sekali.

kemra102
sumber
Memori, dll, belum porting ke sysfs Apa maksud Anda dengan porting? Dan mengapa itu tidak dimaksudkan untuk menunjukkan informasi seperti itu? Bisakah Anda jelaskan hal itu kepada saya?
Sen
Dengan porting saya berarti pindah yang merupakan jawaban untuk pertanyaan Anda jika Memory dll akan dipindahkan ke sysfs. Dan itu hanya dimaksudkan untuk menunjukkan informasi perangkat karena itu adalah hal yang tidak berhasil dengan baik, procfs masih sangat baik untuk jenis informasi lainnya.
kemra102
1

Seperti yang saya juga ingin tambahkan di sini ... As / proc adalah versi yang lebih lama itu berisi informasi dari perangkat kernel periode waktu itu..sebagai sysfs datang dengan versi kernel 2.6 sehingga informasi driver perangkat membuat direktori mereka sendiri dengan mana itu adalah sedikit terstruktur dan mudah diakses ..

gagan bajaj
sumber