Bagaimana Sistem Operasi Mengontrol Kehidupan Digital Anda Tanpa Anda Sadari

9

Anda menekan tombol daya. Layar menyala. Anda mengklik sebuah ikon. Rasanya seperti Anda adalah konduktor orkestra, melambaikan mouse untuk memanggil Spotify atau Chrome. Namun rasa kendali penuh itu hanyalah ilusi.

Ada pekerja yang diam di balik kaca. Ini menangani logika yang berantakan dan rumit sehingga Anda tidak perlu melakukannya. Pekerja itu adalah sistem operasi.

Tanpanya, perangkat keras Anda hanyalah pemberat kertas yang mahal. OS adalah manajernya. Ini memutuskan program mana yang akan menggunakan CPU. Ini merutekan data ke printer. Ini menjaga memori agar tidak mogok saat Anda membuka terlalu banyak tab.

Pemain Besar di Desktop

Microsoft Windows masih mendominasi pasar komputer pribadi. Ini adalah default untuk sebagian besar peralatan kantor dan game. Pengguna Apple menggunakan macOS, yang terintegrasi erat dengan perangkat kerasnya.

Lalu ada Linux. Anda mengenalnya sebagai mesin internet. Ini menjalankan sebagian besar server yang menjaga situs web tetap online. Namun Linux bukan hanya untuk sysadmin lagi. Distribusi seperti Ubuntu atau Fedora ternyata ramah bagi pengguna sehari-hari yang ingin menghindari ekosistem Microsoft.

Ekosistem Seluler dan Tertanam

Lanskap ponsel pintar adalah duopoli. Android milik Google memegang mayoritas global. iOS Apple menguasai pasar kelas atas di negara-negara seperti AS.

Beberapa produsen mencoba melepaskan diri. Huawei menggunakan HarmonyOS miliknya sendiri. Samsung telah mendorong One UI secara besar-besaran. Namun sebagian besar skin Android tetap berakar pada kernel dasar yang sama.

Apple tidak hanya berhenti pada ponsel. IPad menjalankan iPadOS. Apple Watch menjalankan watchOS. Kotak TV menjalankan tvOS. Masing-masing merupakan variasi dari tema yang sama: kontrol ketat, keamanan tinggi, dan integrasi perangkat keras yang mendalam.

Melampaui Layar

Kita sering lupa bahwa segala sesuatu sekarang ada otaknya. Kulkas pintar Anda memilikinya. TV Anda memilikinya. Sistem infotainmen mobil Anda menjalankan OS khusus, sering kali berbasis QNX atau Android Automotive.

Mobil self-driving adalah sesuatu yang sangat berbeda. Sistem operasi mereka harus memproses data sensor dalam milidetik. Keterlambatan bukan hanya gangguan. Ini adalah sebuah tanggung jawab.

Apa Sebenarnya yang Menjadikannya Sebuah OS?

Tidak semua perangkat lunak adalah sistem operasi. Pengolah kata bukanlah sebuah OS. Browser web bukanlah OS.

Untuk mendapatkan gelar tersebut, perangkat lunak harus melakukan tiga hal:

  • Kelola Perangkat Keras: Ini berkomunikasi langsung dengan CPU, memori, dan penyimpanan.
  • Menyediakan Antarmuka Pengguna: Ini memberi Anda cara untuk berinteraksi, baik melalui mouse atau layar sentuh.
  • Jalankan Aplikasi: Ini menyediakan lingkungan tempat perangkat lunak lain berada dan dijalankan.

“Sistem operasi adalah jembatan antara niat Anda dan kemampuan mesin.”

Tanpa jembatan ini, Anda tidak dapat menjalankan aplikasi. Anda tidak dapat menyimpan file. Anda tidak dapat terhubung ke Wi-Fi. Anda terjebak.

Mengapa Ini Penting bagi Anda

Memahami OS Anda penting karena menentukan keamanan, privasi, dan fleksibilitas Anda. Pembaruan Windows dapat memaksa restart. macOS mengunci Anda ke layanan Apple. Linux menawarkan kebebasan tetapi menuntut pemeliharaan.

Di bagian selanjutnya, kami akan menguraikan cara kerja sistem ini. Kami akan melihat kernelnya. Kami akan membahas antarmuka pengguna. Dan kami akan menunjukkan kepada Anda cara mengambil kembali sebagian kendali yang Anda pikir Anda miliki.

Mengapa Kebanyakan Gadon Melewatkan OS

Anda mungkin berasumsi setiap kode yang menjalankan chip memerlukan sistem operasi yang lengkap. Tidak. Bawa komputer ke dalam microwave Anda. Itu melakukan satu pekerjaan. Ini memanaskan makanan. Inputnya adalah keypad. Perangkat kerasnya tidak pernah berubah.

OS yang rumit di sini hanyalah bagasi. Hal ini menaikkan biaya. Ini menambah kompleksitas di mana tidak ada yang diperlukan. Sebaliknya, perangkat ini menjalankan satu program terprogram. Ini adalah sistem tertanam. Ini berjalan terus-menerus. Itu tidak bisa boot. Itu tidak diperbarui. Itu berhasil.

Namun untuk perangkat lain, aturannya berubah.

Nilai Sistem Operasi

Mengapa kita repot dengan OS? Karena mereka memungkinkan fleksibilitas. Tanpanya, Anda terjebak dengan apa yang diputuskan oleh produsen perangkat keras untuk Anda lakukan. Sistem operasi menciptakan kemampuan untuk:

  • Melayani berbagai keperluan pada perangkat keras yang sama
  • Berinteraksi dengan pengguna dengan cara yang rumit
  • Beradaptasi dengan kebutuhan yang berubah seiring waktu

Inilah sebabnya mengapa setiap komputer desktop dilengkapi dengan satu komputer desktop. Anda memiliki keluarga Windows dari Microsoft. Anda memiliki macOS dari Apple. Lalu ada keluarga UNIX, kumpulan individu dan perusahaan selama beberapa dekade. Selain itu, masih ada ratusan sistem lainnya. Mereka berspesialisasi dalam mainframe. Robotika. Manufaktur. Kontrol waktu nyata.

Kekuatan Kode Portabel

Inilah perbedaan utama antara microwave dan laptop Anda. Satu dapat dimodifikasi. Yang lain tidak bisa.

Sistem operasi menggunakan kode portabel daripada sirkuit fisik permanen. Ini bukanlah kecelakaan yang membahagiakan. Itu adalah pilihan desain. Ini memungkinkan perubahan tanpa menghapus perangkat.

Bagi pengguna desktop, ini berarti kelangsungan hidup. Anda mendapatkan pembaruan keamanan. Anda menginstal tambalan. Anda menambahkan aplikasi baru. Jika OS menjadi terlalu membengkak atau tidak kompatibel, Anda dapat menginstal OS yang benar-benar baru. Anda tidak membuang komputer ke tempat sampah. Anda tidak memulai kembali dengan perangkat keras baru. Selama Anda tahu cara masuk ke sistem, Anda dapat mengubah perilakunya.

Apa Fungsi OS yang Sebenarnya?

Hapus UI. Hapus ikon. Apa yang tersisa?

Secara sederhana, sistem operasi menjalankan dua fungsi penting.

Pertama, ia mengelola sumber daya. Ini berlaku untuk komputer, tablet, dan ponsel pintar. Ini menangani prosesor. Ini mengalokasikan memori. Ini mengelola ruang disk. Itu mengatur semuanya.

Kedua, ia menyediakan antarmuka yang stabil. Ini memberi aplikasi cara yang konsisten untuk berkomunikasi dengan perangkat keras. Aplikasi ini tidak perlu mengetahui voltase CPU. Tidak perlu mengetahui pemetaan sektor hard drive. OS mengabstraksi detailnya. Ini memungkinkan perangkat lunak berjalan tanpa mengetahui rahasia mesin.

Abstraksi inilah yang menyebabkan perangkat lunak Anda bekerja pada mesin yang berbeda. Itu sebabnya Anda tidak perlu menulis driver baru setiap kali kartu grafis baru keluar. OS menangani terjemahannya.

Bayangkan unit pemrosesan pusat (CPU) sebagai dapur yang penuh sesak saat makan malam. Berbagai program menarik perhatian. Beberapa membutuhkan lebih banyak memori. Lainnya menuntut bandwidth I/O yang besar. Tanpa keteraturan, maka terjadilah kekacauan. Sistem operasi ikut campur. Ia bertindak seperti orang tua yang tegas namun adil. Pekerjaannya? Mengalokasikan sumber daya sehingga tidak ada satu aplikasi pun yang mengganggu. Ia mengelola kapasitas terbatas demi kebaikan lebih besar setiap pengguna dan aplikasi yang berjalan secara bersamaan.

Mengapa Konsistensi Itu Penting

Tanggung jawab utama kedua adalah menyediakan antarmuka pengguna yang konsisten. Ini menjadi penting ketika Anda menggunakan beberapa komputer dengan tipe yang sama. Atau jika Anda menukar komponen perangkat keras. Antarmuka pemrograman aplikasi (API) standar adalah saus rahasianya.

Pengembang mengandalkan konsistensi ini. Mereka menulis kode sekali. Mereka menyebarkannya di mesin yang berbeda. Mereka melakukan ini dengan keyakinan tinggi bahwa perangkat lunak tersebut akan tetap berfungsi. Meskipun mesin target memiliki jumlah RAM atau ruang penyimpanan yang berbeda. API mengabstraksi perbedaan perangkat keras. Pengembang tidak perlu menulis ulang logika inti untuk setiap konfigurasi tertentu.

Menangani Keanekaragaman Perangkat Keras

Bahkan pada mesin unik yang dibuat khusus, OS menjaga semuanya tetap stabil selama peningkatan. Hal ini terjadi karena sistem operasi, bukan aplikasi, yang mengontrol perangkat keras. Aplikasi ini hanya meminta layanan. OS mengirimkannya.

Hal ini menciptakan tantangan besar bagi pengembang. Mereka harus menjaga sistem operasi mereka cukup fleksibel untuk mendukung ribuan vendor. Anda masuk ke toko hari ini. Anda dapat membuat PC dengan printer dari Merek A, disk drive dari Merek B, dan periferal khusus dari Merek C. OS harus menangani kombinasi apa pun. Ini mengabstraksi kompleksitasnya. Ini memastikan perangkat lunak Anda berjalan terlepas dari silikon yang mendasarinya.

Jenis Sistem Operasi

Kebanyakan orang hanya mengklik mouse dan mengharapkan layar melakukan apa yang mereka inginkan. Namun di balik kursor itu terdapat hierarki jenis perangkat lunak yang kompleks. Tidak semuanya dibangun dengan cara yang sama. Kategorinya bergantung pada apa yang dikontrol komputer dan aplikasi apa yang dijalankannya.

Sistem Real-Time yang Sulit

Sistem operasi waktu nyata (RTOS) tidak peduli dengan wallpaper desktop Anda. Mereka mengendalikan mesin. Instrumen ilmiah. Otomasi industri.

RTOS adalah kotak tertutup. Itu tidak memiliki antarmuka pengguna. Tidak ada utilitas pengguna akhir. Hanya fungsi murni. Tujuannya adalah presisi. Operasi tertentu harus memakan waktu yang sama persis setiap kali dijalankan.

Mengapa ini penting? Bayangkan sebuah mesin yang rumit. Jika lengan robot bergerak lebih cepat dari yang dijadwalkan hanya karena sistem dalam keadaan idle, maka ia mungkin akan menabrak sesuatu. Bencana besar. Jika bergerak lebih lambat karena sistem sedang sibuk, jalur produksi akan terhenti. Kedua hasil tersebut adalah kegagalan. Konsistensi adalah satu-satunya metrik.

Melakukan Satu Hal Sekaligus

Sistem pengguna tunggal dan tugas tunggal dalam beberapa hal merupakan peninggalan, namun tetap ada. Mereka membiarkan satu orang melakukan satu hal. Periode.

MS-DOS adalah contoh klasiknya. Anda membuka sebuah program. Anda bekerja. Anda tidak dapat menjalankan pengunduhan latar belakang saat mengedit teks. Itu linier. Sederhana. Sangat sederhana.

Standar Modern: Multitasking Pengguna Tunggal

Inilah yang mungkin Anda gunakan saat ini. Ini adalah standar untuk desktop dan laptop. Microsoft Windows. Apple macOS.

Mereka membiarkan Anda melakukan juggling. Anda dapat membuat draf dokumen sambil mengunduh file dan mencetak email. OS beralih di antara tugas-tugas ini begitu cepat sehingga terasa bersamaan. Bukan itu. Ini sangat bagus dalam peralihan konteks.

Berbagi Beban: Sistem Multipengguna

OS multipengguna memungkinkan banyak orang mengakses sumber daya sekaligus. Tapi ini tidak gratis untuk semua.

Sistem harus menyeimbangkan persyaratan. Setiap pengguna mendapat sumber daya terpisah. Jika aplikasi Pengguna A mogok, Pengguna B tidak akan menyadarinya. Unix. VMS. Sistem mainframe seperti MVS. Hal ini merupakan tantangan berat bagi lingkungan perusahaan di mana stabilitas di seluruh komunitas pengguna tidak dapat dinegosiasikan.

Komputasi Terdistribusi

Sistem operasi terdistribusi tidak hanya mengelola satu mesin. Mereka mengelola jaringan mereka.

Alih-alih satu superkomputer menyelesaikan masalah besar, OS malah memecahkannya. Potongan-potongannya masuk ke banyak komputer yang lebih kecil. Anda melihatnya di kumpulan server raksasa. Tapi ini bukan hanya untuk korporasi. Penghobi dan pendidik membangun sistem terdistribusi mereka sendiri menggunakan mesin murah. Kadang-kadang bahkan konsol game digunakan kembali.

Ini adalah cara untuk mengumpulkan daya tanpa membeli superkomputer.

Jangan Bingung Jaringan dengan Multiuser

Di sinilah segalanya menjadi berlumpur. Sistem multipengguna tidak sama dengan sistem pengguna tunggal di jaringan.

Bekerja untuk sebuah perusahaan? Anda mungkin menggunakan sistem pengguna tunggal. Admin mengontrol apa yang dapat Anda instal. Anda mungkin mencetak ke printer bersama. Anda mungkin mengakses server file untuk dokumen departemen.

Itu jaringan. Bukan multipengguna. OS itu sendiri tidak memberikan hak akses bersamaan kepada pengguna berbeda di mesin lokal tertentu. Itu hanya berbicara dengan mesin lain.

Proses Boot: Bagaimana OS Mengambil Kendali

Saat Anda menekan tombolnya, OS tidak langsung berjalan. Firmware melakukan yang pertama.

Pada PC lama, ini adalah BIOS. Mesin yang lebih baru menggunakan UEFI (Unified Extensible Firmware Interface). Kode ini memeriksa perangkat keras. Apakah semuanya berfungsi? Di UEFI, ia juga memeriksa apakah perangkat lunak booting itu sah. Boot aman. Tidak ada gangguan.

Setelah pengujian berhasil, firmware diserahkan ke bootstrap loader.

Pemuat Bootstrap

Boot loader memiliki satu pekerjaan. Muat OS ke dalam memori. Mulailah.

Ini adalah program kecil. Sangat sederhana. Ini mengatur program driver untuk subsistem perangkat keras. Ini membagi memori. Beberapa bagian menampung OS. Beberapa menyimpan informasi pengguna. Beberapa menyimpan lamaran.

Itu membangun struktur data. Sinyal. Bendera. Semafor. Ini adalah jalur komunikasi antara subsistem dan aplikasi.

Kemudian menyerahkan kunci ke sistem operasi. Kontrol berpindah tangan.

Apa yang Sebenarnya Dilakukan OS

Setelah dimuat, OS mengelola fungsi inti. Mereka jatuh ke dalam ember:

  • Manajemen prosesor
  • Manajemen memori
  • Manajemen perangkat
  • Manajemen penyimpanan
  • Antarmuka aplikasi
  • Antarmuka pengguna
  • Manajemen keamanan sistem

Inilah pilar-pilarnya. Setiap OS, mulai dari ponsel hingga superkomputer, menyentuh tujuh area ini. Alat yang mereka gunakan untuk menjalankan fungsi-fungsi ini sangat bervariasi, namun tujuannya tetap sama. Jaga agar perangkat keras tetap hidup. Biarkan perangkat lunak tetap berjalan. Cegah pengguna agar tidak merusak semuanya.

Kekuatan pemrosesan adalah sumber daya yang terbatas. Jika Anda ingin komputer Anda menangani panggilan video saat mengunduh file besar dan menjalankan pemindaian virus, CPU harus membagi waktunya. Ini bukan sihir. Itu matematika. Dan itu dikelola melalui hierarki yang ketat.

Sistem operasi tidak hanya melihat aplikasi Anda yang terbuka. Ini terlihat pada proses. Proses adalah perangkat lunak apa pun yang melakukan suatu tindakan. Anda mungkin menganggap browser web Anda sebagai satu kesatuan. Tidak. Itu sebuah proses, ya, tapi itu memunculkan proses lain untuk menangani permintaan jaringan, alokasi memori, dan rendering. Ada juga lusinan proses tak kasat mata yang berjalan di latar belakang, mengelola I/O disk, atau memeriksa malware. OS menjadwalkan proses ini, bukan aplikasi yang Anda lihat di layar.

Di dalam suatu proses, pekerjaan sebenarnya terjadi di utas. Sebuah aplikasi harus memiliki setidaknya satu proses, dan proses tersebut harus memiliki setidaknya satu thread. Penjadwal mengelola thread hingga ke unit eksekusi terkecil. Perbedaan ini penting karena peralihan thread lebih cepat dan lebih hemat sumber daya dibandingkan peralihan proses. Saat Anda melakukan banyak tugas, Anda tidak hanya berpindah jendela. Anda mengalihkan konteks CPU antar thread milik proses yang berbeda.

Peran Interupsi dalam Kontrol CPU

Kelancaran aliran kode terus-menerus terganggu oleh kenyataan. Interupsi adalah sinyal yang dikirim oleh perangkat keras atau perangkat lunak untuk meminta perhatian CPU. Bayangkan sebuah pertemuan di mana seseorang tiba-tiba mengangkat tangannya. CPU menghentikan sementara apa pun yang dilakukannya untuk mengatasi interupsi.

Tidak semua interupsi diciptakan sama. OS terkadang dapat menutupi interupsi. Artinya, untuk sementara waktu mengabaikan sinyal dari sumber yang kurang penting untuk menyelesaikan tugas tertentu tanpa gangguan. Namun beberapa interupsi tidak dapat diabaikan. Ini adalah interupsi yang tidak dapat ditutup-tutupi (NMI). Mereka menuntut tindakan segera, apa pun yang dilakukan CPU.

Mengapa ini penting bagi Anda? Pertimbangkan baterai laptop Anda. Jika daya turun hingga sangat rendah, NMI akan terpicu. Itu tidak menunggu pengolah kata Anda untuk menyimpan. Ini memaksa urutan shutdown atau hibernasi segera. Mengabaikannya berarti kehilangan data atau kerusakan perangkat keras. OS memprioritaskan integritas sistem daripada aliran aplikasi ketika NMI terjadi.

Ilusi Multitasking

Dalam sistem tugas tunggal, jadwalnya sederhana. Aplikasi berjalan hingga mencapai interupsi atau input pengguna. Namun sistem modern bersifat multitasking. OS harus membuatnya terasa seolah-olah semuanya terjadi sekaligus. Bahkan dengan prosesor multicore, setiap core hanya menangani satu tugas dalam satu waktu. Ilusi simultanitas diciptakan oleh kecepatan.

OS beralih antar proses ribuan kali per detik. Ini cukup cepat sehingga Anda tidak menyadari celahnya. Tapi mekanismenya tepat. Inilah yang terjadi selama peralihan itu:

  • Suatu proses menyimpan sumber daya tertentu dalam RAM, register, tumpukan, dan antrian.
  • OS menetapkan sejumlah siklus CPU untuk proses pertama.
  • Ketika siklus tersebut berakhir, OS akan menghentikan prosesnya.
  • Ini menyimpan keadaan proses pertama: menyalin semua register, tumpukan, dan antrian ke memori. Ini juga mencatat penunjuk instruksi yang tepat di mana proses berhenti.
  • Ini memuat status proses selanjutnya: memulihkan register dan antriannya dari memori.
  • Proses kedua mendapat gilirannya.

Ini disebut peralihan konteks. Ini efisien, tetapi tidak gratis. Menyalin memori dan memperbarui register membutuhkan siklus. Jika Anda menjalankan tugas yang intensif CPU, peralihan konteks yang sering dapat menyebabkan latensi. OS mencoba meminimalkan hal ini dengan mengelompokkan thread terkait atau memberikan proses prioritas tinggi dalam waktu yang lebih lama.

Mengapa Jumlah Inti Tidak Memperbaiki Segalanya

Anda mungkin membeli prosesor 16-inti dan menganggap masalah Anda telah terpecahkan. Sebenarnya tidak. Setiap inti masih merupakan eksekutor berulir tunggal pada intinya. Jika perangkat lunak Anda tidak dioptimalkan dengan baik, perangkat lunak Anda tidak akan menggunakan semua inti tersebut. Itu akan berada di satu inti sementara yang lain diam.

Inilah mengapa pengoptimalan perangkat lunak penting. Pengembang harus merancang aplikasi untuk menelurkan banyak thread yang dapat dijadwalkan secara independen. Jika suatu aplikasi adalah single-thread, maka satu inti akan maksimal dan perangkat keras mahal lainnya tidak akan melakukan apa pun. OS dapat menjadwalkan proses lain untuk berjalan pada inti yang menganggur tersebut, namun tidak dapat membagi aplikasi single-thread ke seluruh inti tersebut.

Hubungan antara perangkat keras dan perangkat lunak merupakan negosiasi yang konstan. CPU menyediakan siklus. OS membaginya. Perangkat lunak mengkonsumsinya. Ketika satu lapisan gagal berkomunikasi dengan jelas, kinerja akan menurun. Anda merasakannya sebagai kelambatan. Sistem merasakannya sebagai inefisiensi.

Selalu ada batasan. Tidak peduli berapa banyak inti yang Anda tambahkan, tindakan peralihan konteks menimbulkan overhead. Semakin cepat Anda beralih, semakin banyak siklus yang Anda habiskan untuk beralih daripada menghitung. Ini adalah trade-off. Sedikit penundaan untuk munculnya konkurensi. Itulah harga komputasi modern.

Saat sistem operasi beralih antar tugas, ia tidak hanya menebak apa yang terjadi. Hal ini bergantung pada struktur data tertentu yang disebut blok kontrol proses. Anggap saja ini sebagai gabungan kartu identitas proses dan resume saat ini. OS membutuhkan setiap detail untuk menghentikan satu tugas dan melanjutkan tugas lainnya tanpa kehilangan tempatnya.

Setiap blok memiliki ID unik. Ini menunjukkan di mana dalam kode dan data proses terakhir dihentikan. Ini menangkap keadaan register dan bendera secara tepat. Ini mencantumkan file yang terbuka. Ini melacak batas memori dan status I/O. Dan itu mendefinisikan prioritas.

Tanpa detail ini, OS akan menjadi buta saat berpindah konteks.

Suatu proses tidak selalu aktif. Terkadang ditangguhkan. Mungkin sedang menunggu penekanan tombol. Saat menunggu, ia tidak menggunakan siklus CPU. Itu menganggur. Ketika masukan tiba, statusnya berubah. Sistem memindahkannya dari tertunda ke berjalan. Kemudian blok kendali proses menjadi arahan. Ini memberi tahu mekanisme peralihan dengan tepat bagaimana melanjutkan eksekusi.

Ini terjadi secara diam-diam. Anda tidak melihat pertukarannya. Anda hanya melihat transisi yang mulus. Setiap proses mendapat waktu CPU yang cukup untuk melakukan tugasnya. Tapi ada batasnya. Jika Anda membuka terlalu banyak aplikasi, OS akan kesulitan. Ia menggunakan lebih banyak siklus untuk menyimpan dan memulihkan register. Antriannya semakin panjang. Tumpukannya semakin dalam.

Pada akhirnya, sistem menghabiskan lebih banyak waktu untuk beralih daripada bekerja. Ini meronta-ronta. Ini setara dengan beban mental yang berlebihan secara digital. Komputer mencoba melakukan terlalu banyak hal sekaligus. Itu tersedak. Anda biasanya harus turun tangan. Tutup aplikasi. Mulai ulang. Membawa ketertiban kembali ke kekacauan.

Pengembang mencoba merancang hal ini. Mereka membangun perlindungan. Tapi Anda bisa membantu. Tambahkan RAM. Tutup tab. Biarkan OS mengelola sumber daya secara efisien.

Sejauh ini, kita telah melihat penjadwalan CPU tunggal. Kebanyakan mesin modern memiliki banyak inti. OS harus membagi pekerjaan di antara mereka. Ini menyeimbangkan permintaan dengan siklus yang tersedia.

Sistem operasi asimetris mencadangkan satu prosesor untuk OS itu sendiri. Proses aplikasi mendapatkan sisanya. OS menangani tata graha sendiri secara terpisah.

Sistem operasi simetris mendistribusikan pekerjaan secara berbeda. Mereka menyeimbangkan permintaan dan ketersediaan di semua prosesor. Sekalipun hanya OS yang berjalan, bebannya dibagi. Memori juga dibagikan. Hal ini juga berlaku untuk chip multi-core.

Anda mungkin menjalankan sistem simetris saat ini. Hal ini biasa terjadi di lingkungan modern.

Jika OS adalah satu-satunya hal yang memerlukan waktu eksekusi, CPU bukanlah satu-satunya hambatan. Manajemen memori menjadi prioritas berikutnya.

Penyimpanan dan Manajemen Memori

Sistem operasi pada dasarnya adalah polisi lalu lintas untuk memori komputer Anda. Mereka mempunyai dua pekerjaan utama. Pertama, mereka memastikan setiap proses mendapat cukup ruang untuk dijalankan tanpa mengganggu aplikasi lain. Kedua, mereka mengelola berbagai jenis perangkat keras memori untuk menjaga segala sesuatunya bergerak secepat mungkin.

Pekerjaan pertama adalah tentang batasan. OS menciptakan pagar ketat antara jenis perangkat lunak dan aplikasi individual.

Ambil contoh sederhana. Bayangkan sebuah sistem kecil dengan hanya 1 megabyte RAM. Saat boot, sistem operasi mengklaim 300 kilobyte untuk dirinya sendiri. Kemudian ia mengambil 200 kilobyte di dasar kumpulan untuk driver perangkat keras. Itu menyisakan 500 kilobyte untuk aplikasi Anda yang sebenarnya.

Saat Anda meluncurkan program, OS memberikannya sebagian dari ruang yang tersisa. Jika Anda membuka aplikasi baru saat aplikasi lain sedang berjalan, sistem mungkin akan membatasi jendela yang terbuka untuk mengosongkan sumber daya. Namun apa yang terjadi jika ruang sebesar 500 kilobyte tersebut terisi penuh?

Anda bisa membeli lebih banyak RAM. Kebanyakan PC modern memungkinkan Anda meningkatkan kapasitas dari 8 menjadi 16 gigabyte atau lebih. Namun meski dengan memori dalam jumlah besar, prosesor hanya dapat mengakses satu lokasi dalam satu waktu. Sebagian besar RAM Anda tidak digunakan saat CPU memproses data aktif.

Di sinilah manajemen memori virtual berperan.

OS terus-menerus menukar data yang tidak terpakai dari RAM dan memasukkan data yang dibutuhkan proses saat ini. Hal ini menciptakan ilusi bahwa setiap proses memiliki ruang tersendiri yang luas. Hal ini mencegah proses saling merusak dan menjaga sistem tetap stabil bahkan ketika memori fisik terbatas.

Namun penyimpanan disk bukan satu-satunya faktor. Sistem operasi harus menyeimbangkan kebutuhan di tiga lapisan memori yang berbeda, yang diberi peringkat berdasarkan kecepatan.

Memahami Hierarki Memori dan Pertukaran Halaman

Kecepatan itu penting. Jika CPU harus menunggu, semuanya melambat. Hirarkinya terlihat seperti ini:

  • Cache berkecepatan tinggi: Ini adalah memori kecil dan sangat cepat tepat di sebelah CPU. Pengontrol cache memprediksi data apa yang Anda perlukan selanjutnya dan menariknya dari memori utama bahkan sebelum Anda memintanya. Ini semua tentang prediksi dan kecepatan.
  • Memori utama: Ini adalah RAM standar Anda. Ini diukur dalam gigabyte dan merupakan apa yang Anda tingkatkan saat komputer Anda terasa lamban.
  • Memori sekunder: Ini adalah hard drive (HDD) atau solid state drive (SSD) Anda. Ini jauh lebih lambat dibandingkan RAM tetapi menawarkan penyimpanan yang besar. Dalam manajemen memori virtual, penyimpanan sekunder bertindak sebagai tangki pelimpah untuk RAM virtual.

OS mengatur lapisan-lapisan ini. Ini memindahkan data dalam blok yang disebut halaman di antara jenis memori yang tersedia karena proses memerlukan lebih banyak sumber daya. Ini adalah tindakan penyeimbangan yang konstan dan tidak terlihat.

Satu proses memerlukan lebih banyak cache? OS menggeser halaman untuk mengakomodasi. Yang lain membutuhkan lebih banyak RAM fisik? Ini menukar halaman menganggur ke SSD.

Mengapa ini penting bagi Anda? Karena memungkinkan komputer Anda menjalankan beberapa aplikasi berat secara bersamaan tanpa crash. Tanpa manajemen ini, sistem Anda akan terhenti saat RAM terisi. OS menjaga roda tetap berputar dengan memutuskan apa yang tetap berada di jalur cepat dan apa yang diparkir di jalur lambat.

Namun trade-offnya selalu pada kecepatan. Bertukar ke memori sekunder menimbulkan latensi. Itu sebabnya memiliki lebih banyak RAM fisik sering kali terasa seperti peningkatan kinerja secara langsung. Anda mengurangi kebutuhan akan swap yang mahal tersebut.

OS menangani kompleksitasnya. Anda baru saja mendapatkan hasilnya: sistem yang menjalankan banyak aplikasi, memisahkannya, dan tidak kehabisan ruang.

Penerjemah Tersembunyi di Tumpukan Anda

Pengemudi adalah perantara komputasi tanpa tanda jasa. Anda tidak melihatnya berfungsi, namun setiap kali Anda menekan tombol atau menyimpan file, mereka sibuk. Jalur antara OS dan hampir semua perangkat keras yang tidak disolder ke motherboard langsung melalui program ini. Tugas mereka adalah penerjemahan. Mereka mengambil kekacauan listrik dari subsistem perangkat keras dan mengubahnya menjadi bahasa tingkat tinggi yang benar-benar dapat dipahami oleh sistem operasi dan aplikasi Anda.

Pikirkan tentang hal ini. OS melihat data sebagai file. Printer melihat pulsa cahaya. SSD melihat level tegangan di sel memori tertentu. Pengemudi menjembatani kesenjangan itu. Mereka mengambil file yang ditentukan oleh OS dan menerjemahkannya ke dalam bitstream yang ditempatkan di penyimpanan atau semburan laser yang ditujukan ke kertas. Tanpa lapisan terjemahan ini, komputer Anda hanyalah tumpukan logam dan silikon mahal yang tidak tahu harus berbuat apa terhadap dirinya sendiri.

Mengapa Pengemudi Tinggal di Luar Kernel

Driver dipisahkan dari sistem operasi inti karena alasan tertentu: kelincahan. Jika setiap fitur baru memerlukan modifikasi kernel, kompilasi ulang, dan redistribusi seluruh OS, kami tidak akan pernah melihat pembaruan. Menjaga driver tetap eksternal memungkinkan produsen untuk menambahkan fungsionalitas ke subsistem perangkat keras tanpa menyentuh fondasinya.

Pemisahan ini juga berarti penerbit OS tidak perlu menulis setiap driver. Produsen perangkat keras sering kali membuat atau membayar driver mereka sendiri. Hal ini memberi mereka kendali langsung atas pembaruan dan peningkatan kemampuan I/O. Ini adalah pembagian kerja. OS menyediakan panggung. Pabrikan driver menulis skripnya.

Kesenjangan Pengemudi Komunitas vs. Korporat

Mengharapkan driver terbaru itu mudah di Windows atau macOS. Perusahaan besar dan menguntungkan di balik OS tersebut memiliki sumber daya untuk memastikan kompatibilitas. Linux dan sistem operasi sumber terbuka lainnya mengambil jalur yang berbeda. Mereka bergantung pada pengembang komunitas. Para sukarelawan ini menyumbangkan waktu dan keterampilan pengkodean untuk menyediakan driver bagi sistem dan periferal. Ini adalah hasil kerja cinta. Dan itu berhasil, biasanya. Namun konsistensinya dapat bervariasi tergantung siapa yang memelihara kode tersebut pada saat tertentu.

Buffer dan Antrian: Pengontrol Lalu Lintas

Mengelola masukan dan keluaran bukan hanya tentang penerjemahan. Ini tentang mondar-mandir. OS mengelola I/O melalui antrian dan buffer. Ini adalah fasilitas penyimpanan khusus yang menangkap aliran bit dari perangkat. Mungkin itu keyboard. Mungkin itu port serial. Buffer menyimpan bit-bit tersebut dan melepaskannya ke prosesor dengan kecepatan yang dapat ditangani oleh CPU.

Mengapa ini penting? Karena proses bersaing untuk mendapatkan waktu CPU. OS menginstruksikan buffer untuk tetap menerima input dari perangkat meskipun prosesor sedang sibuk. Ini berhenti mengirim data ke CPU sampai proses yang menggunakan input tersebut dihentikan. Ketika proses itu aktif, buffer melepaskan data yang disimpan.

Mekanisme ini memungkinkan perangkat berkecepatan tinggi untuk beroperasi secara maksimal. Keyboard dapat memproses penekanan tombol dengan cepat. Modem dapat menangani beban data yang besar. Bahkan ketika prosesor kewalahan dan tidak dapat menggunakan input dengan segera, sistem tidak akan menyerah. Data menunggu di buffer. Ini adalah konsep yang sederhana. Ini mencegah kehilangan data selama skenario beban tinggi.

Realitas Waktu Nyata

Mengelola semua sumber daya ini menghabiskan sebagian besar fungsi sistem operasi. Dalam sistem operasi real-time, mungkin hampir semua fungsi diperlukan. Untuk OS tujuan umum, menyediakan antarmuka yang konsisten adalah tujuan utama. Aplikasi dan manusia memerlukan cara sederhana untuk mengakses daya perangkat keras. Pengemudi adalah kunci yang membuka pintu itu.

Itu tidak sempurna. Pengemudi bisa mogok. Mereka bisa berkonflik. Namun keduanya adalah penghubung penting antara niat Anda dan respons mesin. Tanpa mereka, perangkat keras menjadi tuli dan bisu. Bagi mereka, ini adalah alat.

Kompleksitasnya tersembunyi di depan mata. Anda mengklik. Sopir menerjemahkan. Perangkat keras bertindak. Perulangan berlanjut.

Antarmuka Program Aplikasi (API) memecahkan masalah khusus bagi pengembang. Mereka menghilangkan kebutuhan untuk memahami rincian granular tentang bagaimana CPU memproses instruksi. Sama seperti driver perangkat yang mengabstraksi kompleksitas perangkat keras, API memungkinkan pemrogram aplikasi memanggil fungsi sistem operasi tanpa melacak setiap status perangkat keras tingkat rendah.

Pertimbangkan pembuatan file. Seorang ilmuwan yang merekam data dari suatu instrumen perlu menyimpan hasilnya. Sistem operasi menyediakan fungsi API yang disebut MakeFile. Pemrogram menulis perintah seperti:

MakeFile [1, %Nama, 2]

Satu baris ini mengkomunikasikan maksud yang kompleks. Angka 1 menentukan akses acak. Alternatifnya, 0, akan menunjuk pada file serial. %Nama mengambil nama file langsung dari input pengguna. Angka 2 menentukan perilaku penyimpanan. Ini menunjukkan file berukuran variabel. Nol berarti ukuran tetap. Yang pertama berarti file bertambah dengan data tetapi tidak pernah menyusut.

Sistem operasi menangani sisanya. Ini menanyakan drive disk untuk lokasi penyimpanan gratis pertama yang tersedia. Kemudian memperbarui metadata sistem file. Entri ini melacak blok awal dan akhir, nama file, jenis file, dan status arsip. Ini mencatat izin pengguna dan cap waktu pembuatan.

Abstraksi ini sangat penting bagi pengembang. Mereka tidak perlu mengelola kode instruksi atau tipe data untuk setiap hard disk atau tape drive. Sistem operasi, yang didukung oleh driver perangkat keras, mengelola detail perubahan tersebut. Pengembang menulis kode untuk API dan mempercayai sistem.

Namun kepercayaan ini ada harganya. API membuka vektor serangan. Peretas dapat mengeksploitasi kerentanan dalam panggilan API untuk mendapatkan akses tidak sah. Ini tidak berarti API pada dasarnya buruk. Artinya pengembang harus menambal kelemahan secara agresif. Keamanan bukanlah suatu fitur; itu adalah persyaratan dasar.

API juga merupakan medan pertempuran ekonomi. Perusahaan menyadari bahwa mengendalikan API berarti mengendalikan suatu segmen industri. Beberapa pengembang menyediakan pembaca atau pemirsa secara gratis untuk mengunci konsumen. Mereka kemudian membebankan royalti kepada pengembang lain yang ingin perangkat lunak mereka terintegrasi dengan alat tersebut. Yang lain merilis API secara bebas untuk membangun ekosistem. Strateginya bervariasi, namun tujuannya selalu penguasaan pasar.

GUI, Shell, dan Lingkungan Desktop

Jika API menstandarkan cara aplikasi berbicara dengan sistem, Antarmuka Pengguna (UI) menyusun cara manusia berbicara dengan sistem. Selama dekade terakhir, pengembangan sangat mengutamakan Graphical User Interface (GUI). MacOS milik Apple dan Windows milik Microsoft mendominasi bidang ini, menguasai sebagian besar pangsa pasar.

Linux berbeda. Kebanyakan distribusi menyertakan GUI, tetapi pilihannya terdesentralisasi. Tim distribusi memilih lingkungan desktop. Pengguna tidak terkunci. Mereka dapat bertukar lingkungan jika mereka mau. Opsi populer termasuk Cinnamon, GNOME, KDE, dan Xfce. Fleksibilitas ini merupakan ciri filosofi Linux.

Lalu ada Antarmuka Baris Perintah (CLI). Sering dikaitkan dengan UNIX, antarmuka hanya teks ini bergantung pada perintah yang diketik. Ini mungkin terasa menakutkan bagi pengguna yang terbiasa menunjuk dan mengklik. Namun ia menawarkan kekuatan dan fleksibilitas yang seringkali tidak dimiliki GUI. Korn Shell dan C Shell adalah contoh klasik. Mereka menyediakan utilitas yang membuat manipulasi fungsi sistem operasi lebih mudah bagi mereka yang mengetahui sintaksisnya.

Pengguna UNIX sering membuka beberapa jendela shell secara bersamaan. Hal ini memungkinkan aliran kerja paralel yang lebih sulit dikelola di GUI. Namun, pengguna UNIX dan Linux tidak terbatas pada baris perintah. Mereka dapat menjalankan GUI bersama alat CLI.

Windows, macOS, dan Linux semuanya menawarkan aplikasi shell atau terminal. Ini untuk pengguna yang membutuhkan akses langsung ke baris perintah.

Penting untuk mengingat di mana letak antarmuka ini di tumpukan. UI adalah lapisan di atas sistem operasi. Ini adalah sebuah program atau serangkaian program. Fungsi manajemen inti terletak pada kernel. Kernel menangani beban berat. Ikatan antara kernel, UI, dan perangkat lunak utilitas menentukan pengalaman pengguna. Hubungan ini menentukan mengapa macOS terasa berbeda dari Windows, atau mengapa Linux menawarkan pengalaman desktop yang bervariasi. Kernelnya tetap konstan. Antarmuka berubah. Dan perbedaan itu akan terus membentuk cara kita berinteraksi dengan komputer di masa mendatang.

Konektivitas jaringan bukan lagi sekedar fitur. Itu adalah garis dasarnya. Anda tidak dapat benar-benar berbicara tentang OS modern tanpa menyadari obrolannya yang terus-menerus dengan server dan mesin lain. Pengembang mengandalkan internet sebagai saluran utama untuk patch, perbaikan keamanan, dan pembaruan inti. Tentu, Anda bisa tetap menggunakan DVD atau drive USB. Tapi itu menjadi peninggalan. Kebanyakan sistem hanya mengunduh semua yang ada di latar belakang saat Anda tidur.

Namun ada ketegangan yang lebih besar yang muncul di bawah permukaan. Ini tentang filosofi distribusi. Bisakah satu model memuaskan perusahaan raksasa dan konsumen sehari-hari? Jawabannya rumit.

Sumber Terbuka vs. Sumber Tertutup

Linux mengubah permainan. Hal ini membuktikan bahwa perangkat lunak yang dibangun berdasarkan prinsip open source benar-benar dapat bekerja dalam skala besar. Hal ini sangat kontras dengan model sumber tertutup, yang mendominasi ruang desktop. Kebanyakan driver dan utilitas komersial hadir sebagai versi yang dapat dieksekusi. Anda mendapatkan file biner. Anda menjalankannya. Anda tidak bisa melihat kodenya. Anda tidak dapat mempelajarinya. Anda tidak dapat mengubahnya. Itu adalah kotak hitam.

Open source membalik skrip itu. Bahan sumber asli ada di luar sana. Anda bisa membacanya. Anda dapat menyesuaikannya. Anda dapat membuat sesuatu yang baru di atasnya dan membagikannya kembali. Ini adalah siklus transparansi. Filosofi ini melahirkan alat-alat yang sering kita anggap remeh. GIMP untuk manipulasi gambar. LibreOffice bagi mereka yang menolak membayar untuk Word. Apache, mesin yang menggerakkan sebagian besar web.

Taman Bertembok Seluler

Lihatlah ponselmu. Lihat betapa bersihnya antarmukanya? Itu memang disengaja. Perangkat konsumen sengaja menyembunyikan sistem operasi dari pandangan. Mengapa? Karena pengguna akan merusak sesuatu. Mereka akan menghapus komponen penting. Mereka akan memblokir perangkat mereka sendiri untuk mencoba “mengoptimalkan” apa yang tidak rusak.

Jadi, produsen menguncinya. Tapi mereka meninggalkan celah di pintu. Sebuah “mode pengembang” atau “mode pemrogram”. Jika Anda tahu di mana mencarinya, Anda dapat mengaksesnya. Namun begitu Anda masuk, tali pengikatnya pendek. Anda diperbolehkan melakukan perubahan, tetapi hanya dalam rentang yang dikontrol ketat. Anda tidak diberi kunci kerajaan. Hanya kunci cadangan gudang.

Hal ini menimbulkan dikotomi yang aneh. Di desktop, Anda memiliki kebebasan (dan tanggung jawab) untuk memodifikasi. Di ponsel, Anda mendapatkan kemudahan dengan mengorbankan kontrol. Pendekatan mana yang lebih baik untuk kesehatan infrastruktur digital kita dalam jangka panjang? Batasannya semakin kabur, namun trade-off mendasar masih tetap ada. Anda bisa melihat roda gigi berputar, atau Anda hanya menikmati perjalanannya.