Saya ingin tahu bagaimana OS bekerja secara singkat :
- Komponen dasar yang dibangun di atasnya
- Bagaimana komponen-komponen itu bekerja bersama
- Apa yang membuat UNIX unix
- Apa yang membuatnya sangat berbeda dari OS lain seperti Windows
architecture
Sander Versluys
sumber
sumber
Jawaban:
Sistem UNIX terdiri dari beberapa bagian, atau lapisan yang saya suka menyebutnya.
Untuk memulai suatu sistem, sebuah program bernama boot loader hidup di sektor pertama partisi hard disk. Itu dimulai oleh sistem, dan pada gilirannya itu menemukan kernel Sistem Operasi, dan memuatnya.
Layering
Kernel. Ini adalah program sentral yang dimulai oleh boot loader. Ini melakukan interaksi perangkat keras dasar untuk sistem (disk, memori, video, suara) dan menawarkan lingkungan virtual di mana ia dapat memulai program. Kernel juga mengirimkan semua driver yang menangani semua perbedaan kecil antara perangkat keras. Bagi dunia luar (lapisan yang lebih tinggi), setiap kelas perangkat tampaknya berperilaku tepat dengan cara yang sama konsisten - yang pada gilirannya, program dapat membangun.
Subsistem latar belakang. Hanya ada program reguler, yang tidak menghalangi Anda. Mereka menangani hal-hal seperti login jarak jauh, menyediakan bus pesan cental, dan melakukan tindakan berdasarkan peristiwa perangkat keras / jaringan. Misalnya, penemuan bluetooth, manajemen wifi, dll. Setiap layanan jaringan (server file, server cetak, server web) juga hidup pada level ini. Dalam sistem UNIX, ini semua hanyalah program normal.
Alat baris perintah. Ini semua adalah program kecil yang dapat dimulai untuk melakukan hal-hal seperti mengedit teks, mengunduh file, atau mengatur sistem. Pada titik ini, sistem UNIX sepenuhnya dapat digunakan untuk administrator sistem. Di Windows, lapisan ini tidak benar-benar ada lagi.
Antarmuka pengguna grafis. Ini juga hanya program, satu-satunya perbedaan adalah mereka menggambar windows di layar alih-alih menulis teks. Ini membuat sistem lebih mudah digunakan untuk pengguna biasa.
Layanan atau acara apa pun akan berjalan dari bawah ke atas.
Perpustakaan - platform umum
Program melakukan banyak hal umum seperti menampilkan jendela, menggambar barang di layar atau mengunduh file. Hal-hal ini sama untuk beberapa program, maka kode itu dimasukkan ke dalam file "library" yang terpisah (
.so
file - yang berarti objek bersama). Perpustakaan dapat dibagikan di semua program.Untuk setiap hal yang bisa dibayangkan, ada perpustakaan. Ada satu untuk membaca / menulis file PNG. Ada satu untuk file JPEG, untuk membaca XML, untuk enkripsi, untuk pemutaran video, dan sebagainya.
Di Linux, perpustakaan umum untuk pengembang aplikasi adalah Qt dan Gtk. Pustaka-pustaka ini menggunakan pustaka tingkat rendah secara internal untuk kebutuhan spesifik mereka, sambil mengekspos fungsionalitasnya dengan cara yang konsisten dan singkat yang bagus bagi pengembang aplikasi untuk membuat aplikasi lebih cepat.
Perpustakaan menyediakan platform aplikasi, di mana programmer dapat membangun aplikasi pengguna akhir untuk Sistem Operasi. Semakin banyak perpustakaan berkualitas tinggi yang disediakan suatu sistem, semakin sedikit kode yang harus ditulis seorang programmer untuk membuat program yang indah.
Beberapa perpustakaan dapat digunakan di berbagai sistem operasi (misalnya, Qt), beberapa perpustakaan benar-benar secara khusus diikat ke dalam satu sistem operasi. Ini akan membatasi program Anda untuk dapat berjalan di platform itu saja.
Komunikasi antar proses
Sepotong sudut ketiga dari sistem operasi, adalah cara program dapat berkomunikasi satu sama lain. Ini adalah mekanisme Inter Process Communication (IPC). Ini ada dalam beberapa rasa, misalnya sepotong memori bersama, atau saluran kecil diatur antara dua program untuk bertukar data. Ada juga bus pesan pusat di mana setiap program dapat memposting pesan, dan menerima tanggapan. Ini digunakan untuk komunikasi global, di mana tidak diketahui program mana yang bisa merespons.
Dari perpustakaan ke Sistem Operasi
Dengan pustaka, IPC, dan kernel, pemrogram dapat membangun semua jenis aplikasi untuk layanan sistem, administrasi pengguna, konfigurasi, administrasi, pekerjaan kantor, hiburan, dll. Ini membentuk rangkaian lengkap yang dikenal pengguna pemula sebagai "sistem operasi" ".
Dalam sistem UNIX / Linux, semua layanan hanyalah program. Semua alat admin sistem hanyalah program. Mereka semua melakukan pekerjaan mereka, dan mereka dapat dirantai bersama. Saya telah merangkum banyak program utama di http://codingdomain.com/linux/sysadmin/
Bagian yang dapat dibedakan dengan Windows
UNIX terutama merupakan sistem program, file, dan izin terbatas. Banyak kerumitan yang dihindari, menjadikannya sistem yang kuat sementara sepertinya pekerjaan itu mudah.
Secara rinci, ini adalah prinsip-prinsip yang dapat ditemukan di sistem UNIX / Linux:
Ada cara seragam untuk mengakses informasi. ("Semuanya hanya file"). Anda dapat membuka file, soket jaringan, saluran IPC, parameter kernel dan memblokir perangkat sebagai file. Oleh karena itu penampilan sistem file virtual di / dev, / sys dan / proc. Satu-satunya API yang Anda butuhkan adalah
open
,read
danclose
.Sistem yang mendasarinya transparan. Setiap program beroperasi di bawah aturan yang sama. Tidak seperti Windows, tidak ada perbedaan buatan antara "program konsol", "program gui" atau "layanan latar belakang". Mereka semua hanyalah program, yang kebetulan melakukan hal yang berbeda. Semua itu juga dapat diamati, dianalisis, dan didebug dengan cara yang sama.
Pengaturan dapat dibaca, diedit, dan dapat dijelaskan dengan komentar. Mereka biasanya memiliki format bergaya INI, tetapi dapat menggunakan format khusus untuk kebutuhan aplikasi itu. Karena hanya file, mereka dapat disalin ke sistem lain, diarsipkan, atau dicadangkan dengan alat standar.
Tidak ada aplikasi besar "lakukan semuanya sekaligus". Mantra ini adalah "lakukan satu hal, lakukan dengan baik". Alat baris perintah dapat dirantai dan bersama-sama menjadi kuat. Layanan terpisah (mis. SMTP, IMAP dan POP, dan login) adalah subprogram terpisah, menghindari kode yang saling terkait dan masalah keamanan. Lingkungan desktop yang kompleks mendelegasikan kerja keras ke program individual.
fork()
. Program baru dimulai dengan program kloning yang sudah ada. Klon mengatur segalanya (mis. Gagang file), dan secara opsional mengganti sendiri dengan kode program baru. Ini membuatnya sangat mudah untuk menerapkan pengaturan keamanan dan pembatasan yang sama untuk program baru, berbagi memori atau mengatur mekanisme IPC. Biaya memulai suatu proses juga sangat rendah.Sistem file adalah satu pohon, di mana partisi disk dan jaringan berbagi lainnya dapat dipasang. Ada lagi, cara universal mengakses data. Lokasi sistem umum (mis.
/usr
Dapat dengan mudah dipasang sebagai jaringan berbagi.Sistem ini dibangun untuk hak pengguna yang rendah. Setelah login, setiap pengguna (kecuali root) dibatasi sumber dayanya sendiri, hanya menjalankan aplikasi dan file. Layanan jaringan mengurangi hak mereka sesegera mungkin. Ada satu cara yang jelas untuk mendapatkan lebih banyak hak istimewa, atau meminta seseorang untuk melakukan pekerjaan istimewa atas nama mereka. Setiap panggilan lain dibatasi oleh batasan dan batasan program.
Setiap program menyimpan pengaturan dalam file / folder tersembunyi dari direktori home user. Tidak ada program yang pernah mencoba untuk menulis file pengaturan global.
Bantuan terhadap mekanisme komunikasi yang dijelaskan secara terbuka atas mekanisme rahasia atau mekanisme 1-ke-1 yang spesifik. Vendor dan pengembang perangkat lunak lainnya didorong untuk mengikuti spesifikasi yang sama, sehingga hal-hal dapat dengan mudah dihubungkan, ditukar dan tetap digabungkan secara longgar.
sumber
UNIX adalah OS yang kuat, dibangun berdasarkan desain suara yang telah terbukti berhasil selama lebih dari 40 tahun (itu hampir selamanya dalam ilmu komputer). Teknologi sentral didasarkan pada bahasa C dan berbagai program kecil: perintah UNIX. Filosofi dasar telah dirangkum oleh McIlroy:
Lebih lanjut tentang filosofi UNIX dapat ditemukan di ESRaymond "The Art of UNIX Programming".
sumber
Ada beberapa jawaban bagus di sini. Namun, satu hal yang saya pikir telah ditinggalkan adalah bagaimana * nix berbeda dari sistem operasi lain, terutama Microsoft Windows.
Konsep dasar yang telah dibahas di atas "lakukan satu hal, lakukan dengan baik" sangat penting bagi * nix sistem operasi yang kadang-kadang dapat diabaikan. Namun filosofi desain inilah yang membuat Linux begitu fleksibel dan kuat.
Misalnya, Graphics User Interface (GUI) untuk MS Windows saling terkait dalam OS. Hampir mustahil untuk menginstal sistem operasi MS tanpa GUI. Di Linux, Anda dapat dengan mudah membuka server atau sistem tertanam yang tidak memiliki komponen grafis sama sekali. Ini bisa sepenuhnya didorong oleh perintah dan masih menjadi server berfitur lengkap.
Desain modular Linux juga memungkinkan administrator sistem untuk menurunkan layanan, memutakhirkan dan membawanya kembali tanpa me-reboot sistem operasi. Bahkan satu-satunya saat Anda harus me-reboot sistem operasi Linux adalah ketika kernel itu sendiri sedang dimodifikasi atau ditingkatkan.
Misalnya, Anda dapat menginstal windows manager baru (gnome, kde, mana saja) di Linux dan pengguna yang saat ini masuk ke sistem mungkin tidak akan pernah sadar.
Pada Windows, sering kali perubahan paling sederhana pada sistem memerlukan reboot, meskipun kadang-kadang ini lebih merupakan masalah keamanan daripada persyaratan teknis yang sebenarnya. Saya akan menyampaikan bahwa ini adalah salah satu kelemahan dasar dari sistem operasi MS. Di Linux Anda dapat meningkatkan banyak modul driver dan berdampak kecil atau tidak pada pengguna. Pada Windows Anda mungkin diminta untuk me-reboot seluruh kotak jika Anda hanya menginstal aplikasi baru.
Desain modular ini juga memberi Linux fleksibilitas luar biasa. Setiap sistem Linux dapat dirancang untuk tugas spesifik yang harus Anda selesaikan, dengan sumber daya sesedikit mungkin. Dengan Windows Anda tidak dapat mematikan antarmuka GUI untuk menjalankan server HTTP sederhana. Ada jejak memori yang diasumsikan Windows yang menciptakan penghalang di bawah mana perangkat keras Anda tidak bisa pergi. Ini adalah alasan utama bahwa Linux telah menjadi OS pilihan untuk banyak aplikasi mobile dan embedded.
Saya bisa terus dan terus, tetapi saya berharap contoh-contoh ini membantu menjelaskan mengapa Linux menjadi begitu populer, dan bagaimana itu benar-benar berbeda dari OS lain itu.
sumber
"Desain Sistem Operasi UNIX" akan menjadi buku yang bagus untuk dibaca.
sumber
Saya akan merekomendasikan membaca Pemrograman Tingkat Lanjut dalam Lingkungan Unix 2e untuk belajar banyak tentang Single Unix Standard (SUS) API dan POSIX, yang akan memberi Anda gagasan tentang apa yang membuat Unix Unix dan bagaimana komponen bekerja, dan bekerja bersama.
Namun, ini adalah buku yang sangat berat dan lebih banyak referensi manual. Jika Anda memiliki masalah dengan insomnia, bawalah tidur bersama Anda. Selain itu jika Anda seorang programmer Unix C itu harus dimiliki.
sumber
Dalam semangat rekomendasi dua buku sebelumnya saya juga akan merekomendasikan
Antarmuka Pemrograman LINUX oleh M. Kerrisk
yang, meskipun menargetkan topik pemrograman sistem UNIX / Linux, mengungkapkan banyak informasi terperinci tentang bagaimana Linux dan sistem UNIX yang lebih umum bekerja dari perspektif programmer / pengguna. Ini menggali dengan sangat rinci sebagian besar peluru yang disebutkan dalam jawaban vdboor dan mengungkapkan detail yang cukup dalam cara yang dimengerti dan dapat dibaca untuk mendapatkan nuansa / gambar konsep UNIX mendasar dan dasar-dasarnya.
sumber