Mengapa program pengguna harus mengacaukan ruang kernel?


9

Saya bahkan tidak yakin apa masalahnya, tetapi saya berbicara tentang serangan kernel yang dijelaskan di sini . Turun daftar komentar ini, seseorang bertanya tentang mengganti proses. Triknya tidak memperbaiki situasi (mesin masih berjalan dengan sangat lambat) dan komentar yang menjawab mengatakan sesuatu tentang ruang kernel vs ruang pengguna.

Pertama, apakah komentar balasan itu benar? Jika demikian, mengapa renice berfungsi untuk hal-hal di ruang pengguna dan bukan untuk hal-hal di ruang kernel? Juga, sesuai dengan apa yang saya baca , semua program yang pengguna jalankan sendiri harus di ruang pengguna, apa yang saya lewatkan?

Jika itu salah, lalu mengapa tidak memperbaiki situasi?

Jawaban:


9

Ada layanan yang disediakan kernel untuk ruang-pengguna (seperti membuka soket). Ada antarmuka yang terdefinisi dengan baik (API) tempat program ruang pengguna dapat berinteraksi dengan kernel melalui.

Dalam hal ini, program ruang pengguna berulang kali membuka soket dan mengirimkan deskriptor file melalui mereka, lalu menutup soket. Tindakan ini dilakukan oleh kernel. Itu akan menyimpan deskriptor file dalam buffer sampai ujung soket membacanya. Bug khusus adalah bahwa seorang pemulung pada akhirnya harus membebaskan file descriptor, tetapi tidak - fd akan bocor. FDS yang bocor bertambah dan duduk di sana menghabiskan sumber daya. Membunuh program tidak membebaskan sumber daya karena tidak dimiliki oleh program.


6
Dan alasan mengapa renice tidak membantu adalah karena itu hanya mempengaruhi seberapa besar waktu CPU pengguna yang didapat. Waktu yang dihabiskan dalam mode kernel tidak dihitung untuk tujuan ini. Secara umum, nice hanya mempengaruhi program yang terikat CPU, bukan program yang terikat IO. Di sini proses pelarian adalah IO murni, dan bahkan tidak melakukan banyak panggilan sistem karena bugnya adalah bahwa setiap panggilan sistem terlalu lama.
Gilles 'SO- stop being evil'

1
@Gilles Maaf telah menyentuh masalah lama seperti itu, tetapi terlihat sangat menarik! Apakah saya memahaminya dengan benar, bahwa sesuatu seperti ioniceakan lebih baik?
rozcietrzewiacz

@rozcietrzewiacz Saya tidak berpikir ionice juga akan membantu, tapi saya tidak yakin. Karena bug, proses menghabiskan seluruh waktunya dalam satu syscall, dan ionice tidak akan mencegah itu (saya pikir).
Gilles 'SO- berhenti bersikap jahat'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.