Init System di Sistem Operasi berbasis Linux


Photo by 66 north on Unsplash

Ketika kita menyalakan suatu komputer terjadi suatu langkah-langkah suatu sistem operasi untuk memulai atau sering kita sebut dengan istilah booting dan startup. Langkah ini diperlukan untuk memulai suatu sistem operasi sehingga siap digunakan oleh pengguna.

Booting adalah proses dimana komputer dinyalakan dan sistem operasi serta program-program yang diperlukan untuk menjalankan komputer dimuat ke dalam memori. Proses booting dimulai dengan inisialisasi perangkat keras, dilanjutkan dengan memuat bootloader, yang kemudian akan memuat sistem operasi dan perangkat lunak lainnya ke dalam memori.

Startup merujuk pada proses dimana sistem operasi dan program-program yang diperlukan oleh pengguna mulai dijalankan setelah proses booting selesai. Sistem operasi menyiapkan lingkungan kerja dan mulai menjalankan aplikasi yang dibutuhkan oleh pengguna.

Dalam sistem operasi Linux, proses startup dilakukan oleh init. init adalah suatu program yang pertama kali dipanggil ketika proses startup dimulai. Konsep init ini terinspirasi dari sistem operasi berbasis UNIX. Ketika pertama kali dimulai, proses startup akan dimulai dari PID 0.

Apa itu PID?

PID (Process ID) adalah singkatan dari “Process IDentifier” dalam sistem operasi Linux. Setiap proses yang berjalan di sistem Linux memiliki PID yang unik, yang merupakan identifikasi numerik untuk proses tersebut. PID digunakan oleh sistem operasi untuk mengidentifikasi, mengelola, dan berinteraksi dengan proses-proses yang berjalan.

PID 0

Setelah booting selesai, kendali sistem akan diserahkan kepada PID 0. PID 0 yang disebut juga swapper, adalah suatu bagian dari kernel Linux. Seperti yang kita tahu, kernel Linux merupakan bagian yang bertugas menangani tugas low-level seperti komunikasi dengan perangkat keras dan manajemen memori. Swapper ini berjalan dibalik layar, sehingga tidak dapat dikontrol secara langsung oleh pengguna.

Perlu digaris bawahi swapper bukanlah bagian dari init. Swapper sendiri memiliki tugas berbeda-beda dalam setiap sistem operasi. Namun secara garis besar, sesuai namanya, swapper bertugas melakukan swap ketika data program di memori yang tidak aktif dipindahkan ke disk atau penyimpanan.

PID 1

PID 1 mengambil peran khusus sebagai “init process”. PID 1 bertugas untuk memulai proses lainnya sehingga berperan sebagai “parent process” untuk “child process”. Pada sistem Linux modern, PID 1 yang sering ditemukan adalah systemd. systemd merupakan salah satu yang paling umum digunakan oleh distro Linux populer saat ini seperti Debian, Ubuntu, Red Hat dan Arch Linux.

Sebagai contoh, pada distribusi Linux yang menggunakan systemd, systemd akan memulai berbagai layanan dan daemon yang diperlukan untuk sistem beroperasi dengan baik. Ini termasuk layanan seperti networkd untuk manajemen jaringan, logind untuk manajemen sesi pengguna, dan berbagai layanan lainnya yang dibutuhkan oleh sistem dan aplikasi.

Hingga saat ini, masih terdapat beberapa kontroversi mengenai penggunaan systemd. Masih banyak distribusi Linux lain yang tidak menggunakan systemd melainkan init system yang lain seperti OpenRC dan runit.

PID Selanjutnya

Setelah proses init dimulai, PID selanjutnya akan dialokasikan untuk proses-proses lain yang dimulai oleh sistem atau pengguna. Berikut adalah beberapa contoh proses penting dengan PID di atas 1:

  1. PID 2 dan Seterusnya: Proses-proses kernel dan sistem penting lainnya. Ini termasuk berbagai daemon dan layanan yang memastikan operasi dasar sistem berjalan dengan lancar. Sebagai contoh, kthreadd adalah salah satu proses kernel yang memiliki PID 2, bertugas menangani threading di kernel.
  2. PID 3 dan Seterusnya: Proses-proses user-space yang dimulai oleh init atau oleh pengguna langsung. Ini termasuk berbagai layanan seperti cron untuk penjadwalan tugas, sshd untuk koneksi SSH, dan udevd untuk manajemen perangkat.
  3. Proses Aplikasi Pengguna: Saat pengguna menjalankan aplikasi, masing-masing aplikasi tersebut juga mendapatkan PID unik. Misalnya, ketika Anda membuka terminal dan menjalankan perintah top, proses top tersebut akan mendapatkan PID sendiri. Begitu juga dengan aplikasi-aplikasi lainnya seperti browser web, editor teks, dan sebagainya.
Pengelolaan dan Interaksi dengan PID

Linux menyediakan berbagai alat untuk mengelola dan berinteraksi dengan proses menggunakan PID. Beberapa alat yang sering digunakan termasuk:

  • ps: Perintah ini digunakan untuk menampilkan daftar proses yang sedang berjalan beserta PID-nya.
  • top: Menampilkan proses yang berjalan dalam tampilan interaktif, termasuk penggunaan CPU dan memori oleh setiap proses.
  • kill: Digunakan untuk mengirim sinyal ke proses tertentu, misalnya untuk menghentikan proses yang tidak responsif dengan menggunakan PID-nya.

Sebagai contoh, jika Anda ingin menghentikan suatu proses dengan PID 1234, Anda dapat menggunakan perintah kill 1234. Jika proses tersebut tidak berhenti, Anda dapat mengirim sinyal yang lebih kuat seperti kill -9 1234.

Kesimpulan

Booting dan startup adalah tahapan kritis dalam memulai sistem operasi komputer. Proses booting memuat sistem operasi ke dalam memori, sementara proses startup memulai layanan dan aplikasi yang diperlukan. Dalam sistem operasi Linux, PID adalah identifier unik yang digunakan untuk mengelola proses-proses ini. PID 1, yang biasanya adalah systemd, memainkan peran kunci dalam memulai dan mengelola proses lainnya. Selanjutnya, berbagai alat disediakan oleh Linux untuk memantau dan mengelola proses-proses ini berdasarkan PID.