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.
sumber
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.
Apa perbedaan antara procfs dan sysfs?
proc
adalah yang lama, kurang lebih tanpa aturan dan struktur. Dan pada titik tertentu diputuskan bahwa proc
itu agak terlalu kacau dan cara baru diperlukan.
Kemudian sysfs
dibuat, dan hal-hal baru yang ditambahkan dimasukkan ke dalam sysfs
informasi perangkat seperti.
Jadi dalam beberapa hal mereka melakukan hal yang sama, tetapi sysfs
sedikit 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.
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.
sumber
/dev/mem
dan/dev/kmem
mereka memerlukan akses root, sehingga aplikasi yang menggunakannya harus setuid.kmem
, dan alat-alat sepertips
SGIDkmem
./dev/mem
atau/dev/kmem
lebih cepat untuk kernel karena proses mode pengguna bisa hanyammap
file dan mengambil semua info hanya dengan membaca RAM. Untuk mendapatkan setiap informasi dari/proc
sistem file memerlukan satu syscall foropen
dan lainnya untukread
jadi jauh lebih lambat. Namun,/proc
tidak memerlukan peretasan khusus kernel untuk membaca memori dan mengekspos data yang jauh lebih sensitif untuk proses mode pengguna.procfs memungkinkan sewenang-wenang
file_operations
, sysfs lebih dibatasiprocfs entri menerima
file_operations
struct, yang berisi pointer fungsi yang menentukan apa yang terjadi pada setiap panggilan sistem berbasis file, misalnyaopen
,read
,mmap
, dll, dan Anda dapat mengambil tindakan sewenang-wenang dari orang-orang.Contoh minimal:
/proc/*
kerjanya? | Pengguna Superproc_create()
contoh untuk modul kernel | Stack Overflowsysfs lebih terbatas dalam pengertian berikut:
show
danstore
, yang menggunakan Linux untuk melaksanakanopen
,close
,read
,write
danlseek
untuk Anda. Lihat juga: Bagaimana cara melampirkan operasi file ke atribut sysfs di driver platform? | Stack Overflowkobject
Contoh minimal: Cara membuat atribut kelas sysfs sederhana di Linux kernel v3.2 | Stack Overflow
sumber
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.
sumber
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 ..
sumber