Sudah bertahun-tahun saya menggunakan sistem Linux setiap hari, dan saya tidak pernah memiliki masalah besar dengan memperbarui sistem ketika sedang berjalan, tetapi saya masih bertanya-tanya mengapa ini memungkinkan.
Biarkan saya membuat contoh.
Misalkan program "A" dari paket tertentu sedang berjalan pada suatu sistem. Program ini, pada titik tertentu, perlu membuka file lain ("B") dari paket yang sama. Setelah itu, program "A" menutup "B" karena tidak membutuhkannya lagi. Misalkan sekarang saya memperbarui paket "A" dan "B" milik. "A" tidak secara langsung dipengaruhi oleh operasi ini, setidaknya untuk saat ini, karena sedang berjalan dalam RAM dan pembaruan hanya diganti "A" pada hard disk. Misalkan "B" telah diganti pada sistem file juga. Sekarang "A" perlu membaca "B" lagi untuk beberapa alasan. Pertanyaannya adalah: apakah mungkin "A" dapat menemukan versi "B" yang tidak kompatibel dan kerusakan atau kegagalan fungsi dengan cara lain?
Mengapa tidak ada yang memperbarui sistem mereka dengan me-reboot dengan live CD atau prosedur serupa lainnya?
sumber
Jawaban:
Memperbarui Userland Jarang Masalah
Anda sering dapat memperbarui paket pada sistem langsung karena:
Secara umum, kecuali jika Anda memperbarui kernel Anda dan tidak menggunakan ksplice, maka program atau layanan mungkin perlu direstart untuk mengambil keuntungan dari pembaruan. Namun, jarang ada kebutuhan untuk reboot sistem untuk memperbarui apa pun di userland, meskipun pada desktop terkadang lebih mudah daripada memulai kembali layanan individual.
Lihat juga
http://en.wikipedia.org/wiki/Ring_%28computer_security%29#Supervisor_mode
sumber
Ya, apa yang Anda gambarkan adalah mungkin, tetapi sebagian besar waktu jika file tersebut disertakan dengan paket, itu akan menjadi pustaka atau file lain yang dibaca sekali dan hanya sekali (karena tidak berubah, tidak ada alasan untuk baca beberapa kali). Juga jika file tersebut diperlukan dalam jangka panjang, aplikasi tersebut kemungkinan akan membiarkan handle file tetap terbuka, di mana bahkan jika itu diganti pada sistem file yang sebenarnya, handle file yang terbuka akan membuat versi lama tetap terbuka.
Dalam kebanyakan kasus, data apa pun yang dibaca beberapa kali selama masa proses adalah data pengguna / variabel, dan ini tidak akan berubah selama peningkatan paket. Plus karena datanya variabel, programmer mana pun yang waras akan memastikan programnya dapat mengubahnya dari satu baca ke yang berikutnya.
sumber
Ini mungkin, tetapi dalam banyak kasus tidak mungkin. Jika "B" adalah pustaka kode, maka versi aslinya biasanya tidak akan ditutup. "A" akan terus menggunakan versi asli "B". Jika Anda menjalankan "A" setelah pembaruan, versi "B" yang baru akan digunakan. Selama pembaruan, ada risiko bahwa versi yang tidak kompatibel dapat dimuat. Namun, karena cara pustaka kode dimuat ini seharusnya hanya menjadi masalah jika "A" memerlukan fungsionalitas yang tidak ada dalam versi "B" yang dimuatnya.
Praktik pengkodean yang baik menjaga antarmuka agar fungsinya tetap sama. Akibatnya, tidak masalah versi mana yang dimuat, selain jika ada bug yang diperbaiki pada versi yang lebih baru.
File konfigurasi adalah masalah yang sedikit berbeda, tetapi biasanya dibaca saat startup. Dalam hal ini, "A" tidak akan membaca "B" kecuali memuat ulang konfigurasi diubah. Sekali lagi, akan menjadi praktik pengkodean yang buruk untuk mengubah format atau arti file konfigurasi. Versi file konfigurasi yang tidak kompatibel harus memiliki nama yang berbeda, sehingga tidak akan menimbulkan masalah.
Mematikan dan me-reboot dari versi yang berbeda akan menyebabkan pemadaman layanan. Untuk server, ini umumnya tidak diinginkan. Bagaimanapun, manajer paket pada sistem yang berjalan menyadari perangkat lunak dan versi yang telah diinstal. Live CD memiliki daftar sendiri perangkat lunak yang diinstal, mungkin dengan versi yang berbeda. Ini membuatnya sulit untuk secara andal memutakhirkan sistem yang sedang berjalan dari live CD.
Live CD kadang-kadang digunakan ketika rilis baru O / S sedang diinstal. Dalam hal ini, instalasi O / S yang bersih biasanya dilakukan. Ini dapat membatasi jumlah file yang tidak digunakan dari versi sebelumnya yang dipertahankan. Ini bisa lebih dari upaya meningkatkan sistem live. Namun, jika partisi root yang berbeda digunakan, itu dapat membatasi risiko macet dengan sistem yang diperbarui sebagian yang tidak dapat di-boot.
sumber
Ada beberapa kasus di mana ini adalah masalah:
Sekarang penjelasannya adalah cache-memory. OK - saya memulai memory-hog-program untuk menggunakan semua RAM yang tersedia - dan kemudian kucing jantan jatuh (setelah saya mengakses aplikasi yang berjalan di sana).
sumber