bentuk kernel linux

Upload: glenjack-glen

Post on 13-Oct-2015

21 views

Category:

Documents


0 download

TRANSCRIPT

Bentuk kernel Linux Sejarah dan penguraian arsitekturnya

Kernel Linux adalah inti atau merupakan inti dari sebuah sistem operasi yang besar dan kompleks, walaupun demikian, kernel ini terorganisasi dengan baik dari segi subsistem dan lapisan. Pada artikel ini, Anda diajak menjelajahi struktur secara umum dari kernel Linux dan mengenal subsistem utamanya dan antarmuka/interface2 inti. Anda bisa mencari ke artikel IBM lain untuk membantu Anda menggali informasi lebih dalam lagi.

Mengingat bahwa tujuan dari artikel ini adalah untuk memperkenalkan Anda ke kernel Linux dan menjelajahi arsitektur dan komponen utamanya, mari kita mulai dengan tur singkat mengenai sejarah kernel Linux, kemudian melihat arsitektur kernel Linux dari 30.000 kaki, dan, akhirnya, menganalisa subsistem utamanya. Kernel Linux terdiri atas lebih dari enam juta baris kode, sehingga pengenalan ini tidak akan cukup.

Sebuah tur singkat mengenai sejarah Linux

Anda mungkin telah memperhatikan bahwa Linux sebagai suatu sistem operasi yang disebut dalam beberapa kasus sebagai "Linux" dan yang lainnya menyebutnya sebagai "GNU / Linux." Alasan di balik ini adalah bahwa Linux adalah merupakan kernel dari sistem operasi. terdapat terdapat Beragam aplikasi yang membuat sistem operasi bisa bekerja adalah perangkat lunak yang bernama GNU. Sebagai contoh, sistem window, kompiler, berbagai shell, tools, editor, utilitas, dan aplikasi lain yang berada di luar kernel, dan masih banyak lagi yang merupakan perangkat lunak GNU. Untuk alasan inilah, banyak yang menganggap "GNU / Linux" nama yang lebih tepat untuk sistem operasi, sementara "Linux" lebih sesuai ketika mengacu hanya kepada kernel.saat in Linux ini bisa dikatakan sebagai sistem operasi open source yang paling populer, sejarah tidak banyak mencatat timeline sistem operasi . Pada awal pengembangan komputer, programmer mengembangkannya langsung pada perangkat keras dan dalam bahasa hardware. Kurangnya sistem operasi yang berarti bahwa hanya satu aplikasi (dan satu pengguna) bisa menggunakan perangkat besar dan mahal pada suatu waktu . Sistem operasi awal ,yang dikembangkan pada tahun 1950 hanya berupa pengembangan secara sederhana. Contohnya termasuk Sistem Operasi General Motors (RUPS) yang dikembangkan untuk IBM 701 dan Sistem Monitor FORTRAN (FMS) yang dikembangkan oleh perusahaan penerbangan Amerika Utara untuk IBM 709.Pada tahun 1960, Massachusetts Institute of Technology (MIT) dan sejumlah perusahaan mengembangkan sistem operasi eksperimental yang disebut Multics (Multiplexed atau Information and Computing Service) untuk GE-645. Salah satu pengembang sistem operasi ini, AT & T, kemudian keluar dari Multics dan mengembangkan sistem operasi mereka sendiri pada tahun 1970 disebut Unics. sejalan dengan sistem operasi ini adalah penggunaan bahasa C, yang mana bahasa C dikembangkan dan kemudian ditulis ulang untuk membuat pengembangan sistem operasi portabel. Dua puluh tahun kemudian, Andrew Tanenbaum membuat versi microkernel dari UNIX , yang disebut MINIX (agar lebih pendek disebut UNIX), yang beroperasi pada komputer pribadi. Sistem operasi open source mengispirasi Linus Torvalds pada pengembangan awal 'Linux di awal 1990-an (lihat Gambar 1).

Gambar 1. sejarah singkat perilisan kernel utama Linux

Linux berkembang dengan pesat dari project perseorangan ke project pengembangan di seluruh dunia yang melibatkan ribuan pengembang. Salah satu keputusan yang paling penting bagi Linux adalah mendaftarkan GNU ke General Public License (GPL). Di bawah GPL, kernel Linux telah dilindungi dari eksploitasi secara komersial, dan juga masukan oleh salah seorang pengembang user-space pada proyek GNU (Richard Stallman, salah satu pengembang sumber inti kernel Linux). Hal tersebut memungkinkan masuknya aplikasi yang berguna seperti GNU Compiler Collection (GCC) dan berbagai dukungan shell.

pengenalan kernel Linux Sekarang dianalogikan untuk melihat dari posisi yang lebih tinggi pada arsitektur sistem operasi GNU / Linux. Anda dapat membayangkan tentang sistem operasi terdiri dari dua tingkatan, seperti yang ditunjukkan pada Gambar 2Gambar 2. Arsitektur dasar dari sistem operasi GNU / Linux

Metode untuk system call interface (SCI)

Pada kenyataannya, arsitektur adalah tidak bersih seperti yang ditampilkan pada Gambar 2. Misalnya, mekanisme oleh siapa sistem call ditangani (transisi dari ruang pengguna ke ruang kernel) dapat berbeda secara arsitektur. pada model x86 Baru, central processing unit (CPU) memberikan dukungan untuk instruksi virtualisasi yang lebih efisien dalam proses ini dibandingkan pada prosesor x86 yang lebih tua yang menggunakan metode int 80h tradisional/lama. Pada bagian paling atas adalah pengguna, aplikasi, atau ruang.disinilah di mana aplikasi pengguna dieksekusi. Di bawah ruang pengguna adalah ruang untuk kernel. Di sinilah, kernel Linux berada.terdapat juga GNU C Library (glibc). yang menyediakan antarmuka untuk system call yang terhubung ke kernel dan menyediakan mekanisme untuk transisi antara aplikasi pada user-space dan kernel. Hal ini penting karena kernel dan aplikasi pengguna masing2 menempati ruang alamat yang berbeda yang terlindungi. Dan sementara untuk setiap proses pada user-space menempati ruang alamat virtual sendiri, kernel menempati sebuah ruang alamat tersendiri. Kernel Linux dapat dibagi lagi menjadi tiga tingkatan kasar. Di bagian atas adalah antarmuka system call, yang mengimplementasikan fungsi dasar seperti membaca dan menulis. Di bawah antarmuka system call adalah kode kernel, yang dapat didefinisikan sebagai arsitektur kode kernel yang independen. Kode ini pada umumnya untuk semua arsitektur prosesor yang didukung oleh Linux. Di bawahnya terdapat lapisan arsitektur yang bergantung kepada kode, yang membentuk apa yang sering disebut BSP (board Support Package). Kode ini berfungsi melayani prosesor dan kode platform khusus untuk arsitektur tertentu.

ciri ciri kernel Linux

Ketika mendiskusikan arsitektur sistem yang besar dan kompleks, Anda dapat melihat sistem dari berbagai perspektif. Salah satu tujuan dari dekomposisi arsitektur adalah untuk menyediakan cara untuk lebih memahami sumber, dan itulah yang akan kita lakukan di sini. Kernel Linux mengimplementasikan sejumlah atribut arsitektur penting. Pada tingkat tinggi, dan pada tingkat lebih rendah, kernel berlapis menjadi beberapa subsistem yang berbeda. Linux juga dapat dianggap monolitik karena memasukkan semua layanan dasar ke dalam kernel. Ini berbeda dari arsitektur microkernel dimana kernel menyediakan layanan dasar seperti komunikasi, I / O, dan memori dan manajemen proses, dan layanan yang lebih spesifik yang terhubung kepada lapisan mikrokernel. Masing-masing memiliki keunggulan tersendiri.Seiring waktu, kernel Linux telah menjadi lebih efisien baik dari segi memori dan penggunaan CPU, serta sangat stabil. Tetapi aspek yang paling menarik dari Linux, selain ukuran dan kompleksitas, adalah portabilitasnya. Linux dapat dikompilasi untuk berjalan pada sejumlah besar prosesor dan platform dengan keadaan arsitektur yang berbeda dan kebutuhan yang berbeda pula. Salah satu contoh adalah kemampuan Linux untuk menjalankan proses dengan unit manajemen memori (MMU), padahal proses tersebut tidak memberikan MMU. The uClinux port dari kernel Linux menyediakan dukungan bagi non-MMU. Lihat bagian Sumber daya untuk lebih jelasnya.

Subsistem utama dari kernel Linux

Sekarang mari kita lihat beberapa komponen utama dari kernel Linux menggunakan rincian yang ditunjukkan pada Gambar 3 sebagai panduan.

Gambar 3. Satu perspektif arsitektur kernel Linux

Sistem Call Interface SCI adalah lapisan tipis yang menyediakan sarana untuk melakukan fungsi panggilan dari ruang pengguna ke dalam kernel. Seperti telah dibahas sebelumnya, interface ini dapat tergantung pada arsitekturnya, bahkan di dalam keluarga prosesor yang sama. SCI sebenarnya menarik fungsi-call layanan multiplexing dan demultiplexing. Anda dapat menemukan pelaksanaan SCI di. / Linux / kernel, serta bagian-arsitektur tergantung di. / Linux / arch. Lebih detail untuk komponen ini tersedia di bagian Resources.

Manajemen Proses Apa itu kernel? Seperti ditunjukkan dalam Gambar 3, kernel benar-benar tidak lebih dari sebuah manajer pengaturan sumber daya. Apakah sumber daya yang dikelola adalah proses, memori, atau perangkat keras, kernel mengelola dan mengeksekusi akses ke sumber daya antara beberapa pengguna (baik di kernel dan ruang pengguna). Proses manajemen difokuskan pada pelaksanaan proses. Dalam kernel, ini disebut benang /thread dan mewakili virtualisasi individu dari prosesor (thread code, data, stack, dan register CPU). Dalam ruang pengguna, istilah proseskerap digunakan, meskipun pelaksanaan Linux tidak memisahkan apa yang disebut dua Konsep (proses dan thread). Kernel menyediakan sebuah antarmuka dari program aplikasi (API) melalui SCI untuk membuat proses baru (fork, exec, atau fungsi2 dari Sistem Operasi Antarmuka Portabel [POSIX]), menghentikan proses (kill, exit), dan berkomunikasi dan mensinkronisasi di antara keduanya ( sinyal, atau mekanisme POSIX)Juga dalam proses manajemen adalah mengenai kebutuhan untuk membagi CPU diantara thread yang aktif. Kernel menerapkan penjadwalan algoritma baru yang beroperasi dalam waktu yang konstan, terlepas dari jumlah thread yang berlomba2 menuju CPU. Ini disebut O (1) scheduler, yang menunjukkan bahwa jumlah waktu yang diambil adalah sama untuk menjadwalkan satu thread disaat yang sama juga dalam proses menjadwal banyak thread. O (1) scheduler juga mendukung beberapa prosesor sekaligus/multiple(disebut Symmetric Multiprocessing, atau SMP).

Manajemen Memori

Sumber daya penting lainnya yang dikelola oleh kernel adalah memori. Untuk efisiensi, mengingat bahwa perangkat keras mengelola memori virtual, memori dikelola dalam apadisebut halaman (4KB secara umum ukurannya pada arsitektur). Linux termasuk sarana untuk mengelola memori yang tersedia, serta mekanisme hardware untuk pemetaan fisik dan virtual. Tapi manajemen memori mengelola tidak lebih dari 4KB buffer. Linux menyediakan abstraksi lebih dari 4KB buffer, misalnya slab allocator. Skema manajemen memori ini menggunakan 4KB buffer sebagai dasarnya, tapi kemudian mengalokasikan struktur dari dalam, melacak halaman yang penuh, sebagian telah digunakan, dan atau kosong. Hal ini memungkinkan skema untuk tumbuh secara dinamis dan menyusut disesuaikan dengan kebutuhan sistem yang lebih besar. Mendukung beberapa pengguna/multiple ke memori, ada kalanya memori yang tersedia bisa saja kehabisan teanaga. Untuk alasan ini, halaman dapat dipindahkan dari memori dan ke disk. Proses ini disebut swapping karena halaman ditukarkan dari memori ke hard disk. Virtual File System Sistem file virtual (VFS) merupakan aspek menarik dari kernel Linux karena memberikan sebuah abstraksi antarmuka umum untuk file sistem. VFS menyediakan switching layer antara SCI dan sistem file yang didukung oleh kernel (lihat Gambar 4).

Gambar 4. VFS menyediakan switching fabric antara pengguna dan file system

Di bagian atas dari VFS adalah abstraksi API umum yang berfungsi seperti membuka, menutup, membaca, dan menulis. Di bagian bawah dari VFS adalah abstraksi sistem file yang menentukan bagaimana fungsi upper-layer diimplementasikan. Ini adalah plug-in untuk sistem file yang diberikan (di mana terdapat lebih dari 50 ). Di bawah lapisan sistem file adalah buffer cache, yang menyediakan seperangkat fungsi untuk lapisan sistem file (berdiri sendiri dari sistem file tertentu). Lapisan caching ini mengoptimalkan akses ke perangkat fisik dengan menjaga data di sekitar untuk waktu yang singkat (atau secara spekulatif membaca terlebih dahulu sehingga data tersedia saat dibutuhkan). Di bawah buffer cache adalah driver perangkat, yang mengimplementasikan antarmuka untuk perangkat fisik tertentu. Network Stack Network Stack, secara desain, mengikuti sebuah model arsitektur berlapis setelah protokol itu sendiri. Ingat bahwa Internet Protocol (IP) adalah protokol inti lapisan jaringan yang berada di bawah protokol transport (paling sering adalah Transmission Control Protocol atau TCP). dan Di atas TCP adalah lapisan soket, yang dipanggil melalui SCI. lapisan Soket adalah API standar untuk subsistem jaringan dan menyediakan sebuah antarmuka pengguna untuk berbagai protokol jaringan. Dari akses frame baku ke IP protokol data unit (PDU) dan sampai ke TCP dan User Datagram Protocol (UDP), lapisan soket menyediakan cara yang baku untuk mengelola koneksi dan memindahkan data antara endpoint..

Device Drivers Sebagian besar dari sumber kode pada kernel Linux berada pada driver perangkat yang membuat perangkat keras tertentu dapat digunakan. Pohon sumber Linux menyediakan subdirektori driver yang dibagi oleh berbagai perangkat yang didukungnya, seperti Bluetooth, I2C, serial, dan sebagainya.

arsitektur - yang bergantung kepada kode

disaat banyak dari Linux mampu berdiri sendiri dari arsitektur yang berjalan, ada unsur-unsur yang harus dipertimbangkan secara arsitektur agar operasi normal dan efisiensi. Linux / arch subdirektori mendefinisikan secara arsitektur bagian yang berketergantungan ke sumber kernel mengandung sejumlah subdirektori yang khusus secara arsitektur (secara kolektif membentuk BSP). Untuk sebuah desktop yang khas, direktori i386 digunakan. Setiap subdirektori arsitektur berisi sejumlah subdirektori lainnya yang berfokus pada aspek tertentu dari kernel, seperti boot, kernel, manajemen memori, dan lain-lain. Anda dapat menemukan kode-arsitektur dependent di. / Linux / arch.

Fitur2 yang menarik dari kernel Linux

Jika portabilitas dan efisiensi dari kernel Linux dianggap tidak cukup, tersedia pula beberapa fitur lain yang tidak dapat diklasifikasikan dalam penguraian sebelumnya. Linux, karena menjadi sistem operasi produksi dan open source, adalah dapat dijadikan pengujian yang bagus untuk protokol baru dan kemajuan dari protokol yang telah ada. Linux mendukung sejumlah besar protokol jaringan, termasuk yang seperti TCP / IP, dan juga ekstensi untuk jaringan berkecepatan tinggi (lebih dari 1 Gigabit Ethernet [GbE] dan 10 GbE). Linux juga mendukung protokol seperti Transmission Control Protocol Streaming (SCTP), yang menyediakan banyak fitur canggih di atas TCP (sebagai protokol tingkat transport pengganti). Linux juga merupakan kernel yang dinamis, mendukung penambahan dan penghapusan komponen perangkat lunak dengan cepat. Ini disebut modul kernel loadable dinamis, dan mereka dapat dimasukkan pada saat boot kapanpun mereka dibutuhkan (ketika perangkat tertentu diketahui membutuhkan modul) atau setiap saat oleh pengguna.Sebuah kemajuan baru-baru ini untuk Linux adalah penggunaannya sebagai sistem operasi untuk sistem operasi lain (disebut hypervisor). Baru-baru ini, dibuat modifikasi kernel yang disebut Virtual Machine Kernel-based (KVM). Modifikasi ini memungkinkan antarmuka baru untuk ruang pengguna yang memungkinkan sistem operasi lain bekerja di atas KVM enable kernel. Selain mampu menjalankan Linux, Microsoft Windows juga dapat divirtualkan. Satu-satunya kendala adalah bahwa prosesor yang mendasari harus mendukung instruksi2 virtualisasi yang baru.