Latihan: Task Manager OS
Mengimplementasikan operasi penghapusan data pada Circular Linked List tanpa merusak cincin menggunakan studi kasus penutupan aplikasi (Task Manager).
Mengimplementasikan operasi penghapusan data pada Circular Linked List tanpa merusak cincin menggunakan studi kasus penutupan aplikasi (Task Manager).
Salah satu penerapan nyata Circular Linked List adalah algoritma Penjadwalan CPU pada Sistem Operasi. Komputer membagi waktu prosesor ke berbagai aplikasi secara melingkar. Setelah aplikasi terakhir mendapat jatah, CPU kembali memproses aplikasi pertama, begitu seterusnya.
Sebagai pengembang sistem operasi, tugasmu adalah menangani kondisi ketika pengguna menutup sebuah aplikasi. Jika sebuah aplikasi dihapus, prosesnya harus dicabut dari cincin antrean, dan antrean yang tersisa harus segera disambung kembali agar sistem tidak mengalami gangguan.
DeleteFirst: Ini adalah kondisi kritis. Jika aplikasi yang ditutup berada tepat di kepala antrean, kamu wajib menelusuri cincin untuk mencari elemen terakhir. Panah dari elemen terakhir harus segera diarahkan ke elemen pertama yang baru agar cincin tidak putus.TutupAplikasi: Lakukan penelusuran untuk mencari nama aplikasi. Gunakan teknik dua pointer yaitu predTemp (elemen sebelumnya) dan temp (elemen saat ini). Jika aplikasi ditemukan, kaitkan predTemp->next ke temp->next, lalu hapus memori aplikasi tersebut.Program akan mencetak status Task Manager sebelum dan sesudah penghapusan aplikasi, membuktikan bahwa panah next dari elemen terakhir selalu menunjuk kembali ke elemen pertama.
Output:
=== SISTEM OPERASI (ROUND ROBIN) ===
Proses Berjalan: [VS Code] -> [Chrome] -> [Spotify] -> [Terminal] -> (kembali ke awal)
[Aksi] Menutup Chrome...
Aplikasi [Chrome] berhasil ditutup.
Proses Berjalan: [VS Code] -> [Spotify] -> [Terminal] -> (kembali ke awal)
[Aksi] Menutup VS Code (Aplikasi Pertama)...
Aplikasi [VS Code] berhasil ditutup.
Proses Berjalan: [Spotify] -> [Terminal] -> (kembali ke awal)
[Aksi] Menutup Photoshop...
Aplikasi tidak ditemukan.Hint: Hati-hati dengan Traversal List Sirkuler!
Ingatlah bahwa menelusuri Circular List tidak bisa menggunakanwhile (temp != NULL).Saat mencari aplikasi di
TutupAplikasi, gunakan perulangando-whileatau pastikan kamu mengecek kondisi berhentinya adalahtemp == L->firstuntuk menandakan kamu sudah memeriksa seluruh antrean hingga kembali ke titik awal.