Wawasan Mendalam tentang Sistem "Ubuntu Linux" - Apakah Kita Melihatnya?


LINUX seperti yang kita ketahui adalah kernel dan bukan sistem operasi, dikirimkan dengan beberapa distribusi seperti: Debian, Fedora, Ubuntu dll. dan masih banyak lagi. OS Ubuntu yang dikembangkan oleh Mark Shuttleworth terkenal dan banyak digunakan oleh banyak orang. Selain itu, karena gratis dan Open Source, versi barunya dirilis setiap tahun yang disumbangkan oleh ribuan pengembang yang berkontribusi pada pengembangannya. Tapi, bagaimana cara kerjanya? Apa semua proses, daftar peristiwa yang membuatnya berhasil dan apa pentingnya proses-proses ini?

Artikel ini akan membawa Anda lebih jauh ke dalam OS Ubuntu yang sangat menarik dan akan membantu pemula memiliki pemahaman lengkap tentang fungsinya.

Peletakan Sistem

Linux memiliki proses untuk berfungsi, setiap layanan sistem termasuk manajemen daya, boot up, penanganan kerusakan sistem adalah proses yang memiliki file konfigurasi di “/etc/init ” yang menjelaskan kejadian di mana ia akan mengeksekusi dan peristiwa terkait yang akan menghentikan eksekusinya, bersamaan dengan itu ia juga memelihara file konfigurasi lainnya yang menggambarkan perilaku run-time di direktori “/etc/” sistem, sehingga membuat sistem yang didorong oleh suatu peristiwa.

Jika ada peristiwa yang dihasilkan maka seseorang harus berada di sana untuk menangkap dan mengeksekusinya?? Jelas sekali, pengontrol adalah proses utama kita yang ada sebagai induk dari semua proses dengan id proses 1 yaitu init. Ini adalah proses yang dimulai saat sistem dinyalakan dan tidak pernah berhenti. Proses ini hanya mati setelah sistem dimatikan karena tidak ada proses yang menjadi induk dari init.

Versi Ubuntu sebelumnya sebelum 6.10 menyertakan sysvinit gaya lama yang digunakan untuk menjalankan skrip di “/etc/rcx.d ” direktori pada setiap startup dan shutdown sistem. Namun, setelah itu sistem pemula menggantikan sistem sysvinit gaya lama, namun tetap memberikan kompatibilitas ke belakang.

Versi terbaru Ubuntu memiliki sistem pemula ini, namun sejak evolusinya dari Ubuntu 6.10, sistem ini telah mengalami beberapa kali revisi menjadi 1.13.2 pada tanggal 4 September 2014. Sistem pemula terbaru memiliki 2 proses init, satu untuk proses sistem dan lainnya yang mengelola sesi pengguna yang masuk saat ini dan hanya ada sampai pengguna tersebut masuk, disebut juga x-session init .

Keseluruhan sistem telah ditetapkan sebagai sistem hierarkis, yang terdiri dari hubungan leluhur-anak di seluruh kekuasaan hingga kekuasaan di bawah sistem.

Misalnya: Relasi hierarki kecil antara kedua proses init adalah: system init(1) -> display manager(ruang kernel) -> manajer tampilan(ruang pengguna) -> pengguna init(atau init sesi x).

File konfigurasi untuk proses yang dikelola oleh sistem init berada di “/etc/init ” dan untuk proses yang dikelola oleh sesi init berada di “/usr/share/upstart ” (sebagai sesuai dengan versi pemula saat ini di atas 1.12) dan file konfigurasi ini adalah kunci dari banyak rahasia yang terkuak tentang proses seperti yang dijelaskan dalam artikel ini.

Semakin Mendalami Hirarki

Ubuntu mengenali dua jenis proses:

  1. Pekerjaan yang berumur pendek (atau pekerjaan kerja dan mati).
  2. Pekerjaan jangka panjang (atau pekerjaan tetap dan bekerja).

Hierarki yang dibuat pada sistem disebabkan oleh hubungan ketergantungan antar proses yang dapat kita pahami dengan melihat file konfigurasinya. Pertama-tama mari kita mulai dari hubungan hierarki sederhana antara proses yang membuat sistem melakukan booting dan memahami pentingnya masing-masing proses tersebut.

Hierarki Booting

Init adalah proses pertama yang dimulai saat sistem dinyalakan dan diklasifikasikan dalam pekerjaan work-and-stay karena tidak pernah dimatikan dan hanya saat init dimatikan yang aktif mematikan yaitu init hanya mati dan itu juga sekali per sesi dan itu saat mematikan. Saat dinyalakan, init menghasilkan event pertama pada sistem yaitu event startup. Setiap file konfigurasi di “/etc/init ” memiliki dua baris yang menentukan peristiwa yang menyebabkan proses dimulai dan dihentikan. Garis-garis tersebut seperti yang disorot pada gambar di bawah ini:

Ini adalah file konfigurasi dari suatu proses failsafe-x dan kondisi mulai dan berhenti ini menggambarkan peristiwa di mana proses akan dimulai. Pada pembuatan acara startup dengan proses init, proses-proses yang memiliki startup sebagai kondisi awal dijalankan secara paralel dan ini hanya mendefinisikan hierarki, dan semua proses yang dijalankan pada startup adalah turunan dari init.

Proses-proses yang dimulai saat startup tercantum di bawah ini dan ini semua adalah pekerjaan kerja dan mati:

1. nama host – Ini adalah proses yang hanya memberi tahu sistem tentang nama host yang ditentukan dalam file /etc/hostname.

2. kmod – Memuat modul kernel yaitu semua driver dari file /etc/modules.

3. mountall – Proses ini menghasilkan banyak event dan terutama bertanggung jawab untuk memasang semua sistem file saat boot termasuk sistem file lokal dan sistem file jarak jauh.

File /proc juga dipasang melalui proses ini dan setelah semua pekerjaan pemasangan, peristiwa terakhir yang dihasilkan olehnya adalah peristiwa sistem file yang selanjutnya membuat hierarki melangkah lebih jauh.

4. plymouth – Proses ini dijalankan saat memulai mountall dan bertanggung jawab untuk menampilkan layar hitam yang terlihat saat startup sistem menunjukkan sesuatu seperti di bawah ini:

5. plymouth-ready – Menunjukkan bahwa plymouth sudah aktif.

Berikut ini adalah proses utama, proses lain yang juga dijalankan saat startup antara lain, seperti udev-fallback-graphics, dll. Kembali ke hierarki boot, singkatnya kejadian dan proses berikut ini adalah sebagai berikut:

1. init bersama dengan pembuatan acara startup.

2. mountall memasang sistem file, plymouth (bersama dengan memulai mountall) menampilkan layar splash, dan kmod memuat modul kernel.

3. Peristiwa sistem file lokal dihasilkan oleh mountall yang menyebabkan dbus dijalankan. (Dbus adalah bus pesan seluruh sistem yang membuat soket yang memungkinkan proses lain berkomunikasi satu sama lain melalui pengiriman pesan ke soket ini dan penerima mendengarkan pesan pada soket ini dan memfilter pesan yang dimaksudkan untuk itu).

4. sistem file lokal bersama dengan dbus yang dimulai dan peristiwa jaringan statis yang disebabkan oleh jaringan proses yang juga berjalan pada sistem file lokal menyebabkan manajer jaringan dijalankan.

5. Peristiwa sistem file virtual yang dihasilkan oleh mountall menyebabkan udev dijalankan. (udev adalah manajer perangkat untuk linux yang mengelola hot-plugging perangkat dan bertanggung jawab untuk membuat file di direktori /dev dan mengelolanya juga.) udev membuat file untuk ram, rom dll di direktori /dev yang mountall telah selesai dipasang secara virtual -filesystems dan telah menghasilkan acara sistem file virtual yang menandakan pemasangan direktori /dev.

6. udev menyebabkan upstart-udev-bridge berjalan yang menandakan bahwa jaringan lokal sudah aktif. Kemudian setelah mountall selesai memasang sistem file terakhir dan telah menghasilkan acara sistem file.

7. Peristiwa sistem file bersama dengan peristiwa jaringan statis menyebabkan pekerjaan rc-sysinit dijalankan. Di sinilah, muncul kompatibilitas antara sysvinit lama dan pemula…

9. rc-sysinit menjalankan perintah telinit yang memberitahu runlevel sistem.

10. Setelah mendapatkan runlevel, init mengeksekusi skrip yang dimulai dengan 'S' atau 'K' (memulai pekerjaan yang memiliki 'S' di di awal namanya dan mematikan direktori yang memiliki 'K' di awal namanya) di direktori /etc/rcX.d (dengan 'X' adalah runlevel saat ini) .

Rangkaian peristiwa kecil ini menyebabkan sistem memulai setiap kali Anda menyalakannya. Dan, peristiwa yang memicu proses ini adalah satu-satunya hal yang bertanggung jawab untuk menciptakan hierarki.

Sekarang, tambahan lain di atas adalah penyebab kejadian. Proses mana yang menyebabkan kejadian mana juga ditentukan dalam file konfigurasi proses yang sama seperti yang ditunjukkan di bawah ini pada baris berikut:

Di atas adalah bagian file konfigurasi proses mountall. Ini menunjukkan peristiwa yang dipancarkannya. Nama acara merupakan penerus kata ‘acara’. Peristiwa dapat berupa peristiwa yang ditentukan dalam file konfigurasi seperti di atas atau dapat berupa nama proses dengan awalan 'mulai', 'mulai', 'berhenti', atau 'berhenti'.

Jadi, Di sini kita mendefinisikan dua istilah:

  1. Pembuat Peristiwa: Yang memiliki baris 'memancarkan xxx' dalam file konfigurasinya dengan xxx adalah nama peristiwa yang dimiliki atau dihasilkannya.
  2. Penangkap Peristiwa: Yang memiliki kondisi mulai atau berhenti sebagai xxx atau yang memulai atau berhenti pada peristiwa menghasilkan salah satu generator Peristiwa.

Dengan demikian, hierarki mengikuti dan ketergantungan antar proses:

Event generator (parent) -> Event catcher (child)

Menambah Kompleksitas pada Hierarki

Hingga saat ini, Anda pasti sudah memahami bagaimana hierarki ketergantungan orang tua-anak di antara proses-proses tersebut ditentukan oleh mekanisme pemicu peristiwa melalui mekanisme boot up yang sederhana.

Sekarang, hierarki ini bukanlah hubungan satu lawan satu yang hanya memiliki satu orang tua untuk satu anak. Dalam hierarki ini kita mungkin memiliki satu atau lebih orang tua untuk satu anak atau satu proses menjadi orang tua dari lebih dari satu anak. Bagaimana ini tercapai?? Jawabannya terletak pada file konfigurasi itu sendiri.

Baris-baris ini diambil dari proses – jaringan dan di sini kondisi awal tampaknya agak terlalu rumit yang terdiri dari banyak peristiwa yaitu – sistem file lokal, udevtrigger, container, runlevel, jaringan.

Sistem file lokal dikeluarkan oleh mountall, udevtrigger adalah nama pekerjaan, event container dikeluarkan oleh container-detect, event runlevel dikeluarkan oleh rc-sysinit, dan jaringan lagi-lagi merupakan pekerjaan.

Jadi, dalam hierarki, jaringan proses adalah anak dari mountall, udevtrigger, dan container-detect karena tidak dapat melanjutkan fungsinya (fungsi proses adalah semua baris yang ditentukan di bawah bagian skrip atau exec dalam file konfigurasi proses) hingga proses di atas menghasilkan kejadiannya.
Demikian pula, kita dapat menjadikan satu proses sebagai induk dari banyak proses jika peristiwa yang dihasilkan oleh satu proses di-cache oleh banyak proses.

Membedakan Jenis Pekerjaan

Seperti dijelaskan sebelumnya, kita bisa mempunyai pekerjaan yang berumur pendek (atau pekerjaan bekerja dan mati) atau pekerjaan yang berumur panjang (atau tinggal dan bekerja), namun bagaimana membedakannya? mereka??

Pekerjaan yang memiliki kondisi 'mulai' dan 'berhenti pada' yang ditentukan dalam file konfigurasinya dan memiliki kata 'tugas' di dalamnya file konfigurasi adalah pekerjaan work-and-die yang dimulai pada peristiwa yang dihasilkan, menjalankan skrip atau bagian exec-nya (saat dijalankan, mereka memblokir peristiwa yang menyebabkannya) dan mati setelah itu melepaskan peristiwa yang mereka blokir .

Pekerjaan yang tidak memiliki kondisi 'berhenti' di file konfigurasinya adalah pekerjaan yang berumur panjang atau pekerjaan tinggal dan bekerja dan tidak pernah mati. Sekarang pekerjaan tetap dan bekerja dapat diklasifikasikan lebih lanjut menjadi:

  1. Yang tidak memiliki kondisi respawn dan dapat dibunuh oleh pengguna root.
  2. Mereka yang memiliki kondisi respawn di file konfigurasinya sehingga memulai ulang setelah dimatikan kecuali pekerjaannya telah selesai.

Kesimpulan

Dengan demikian, setiap proses di LINUX bergantung pada beberapa proses dan memiliki beberapa proses yang bergantung padanya dan hubungan ini bersifat banyak dan banyak serta ditentukan pada sistem pemula beserta detail proses lainnya.