v Hardware Abstraction Layer
Lapisan abstraksi ardware (HAL) adalah lapisan abstraksi, diimplementasikan dalam perangkat lunak, antara perangkat keras fisik dari sebuah komputer dan perangkat lunak yang berjalan pada komputer itu. Fungsinya adalah untuk menyembunyikan perbedaan perangkat keras dari sebagian dari kernel sistem operasi, sehingga sebagian besar dari kode kernel-mode tidak perlu diubah untuk berjalan pada sistem dengan hardware yang berbeda. Pada PC, HAL pada dasarnya dapat dianggap sebagai driver untuk motherboard dan memungkinkan instruksi dari bahasa tingkat tinggi komputer untuk berkomunikasi dengan komponen tingkat lebih rendah, seperti secara langsung dengan hardware.
Sistem operasi Windows NT memiliki HAL dalam ruang kernel, antara hardware dan kernel, driver, jasa eksekutif. Hal ini memungkinkan portabilitas kode Windows NT kernel-mode untuk berbagai prosesor, dengan manajemen memori yang berbeda unit arsitektur, dan berbagai sistem yang berbeda dengan I / O bus arsitektur; sebagian besar kode yang berjalan tanpa perubahan sistem-sistem, ketika dikompilasi untuk set instruksi untuk sistem tersebut. Sebagai contoh, Intel SGI workstation berbasis x86 tidak IBM PC workstation yang kompatibel, namun karena HAL, Windows NT mampu berjalan pada mereka.
BSD, Mac OS X, Linux, CP / M, DOS, Solaris, dan beberapa sistem operasi portabel lainnya juga memiliki HAL, bahkan jika tidak secara eksplisit ditunjuk sebagai demikian. Beberapa sistem operasi, seperti Linux, memiliki kemampuan untuk satu menyisipkan sambil berlari, seperti Adeos. Sistem operasi NetBSD dikenal luas sebagai memiliki lapisan abstraksi perangkat keras bersih yang memungkinkan untuk sangat portabel. Sebagai bagian dari sistem ini adalah uvm (9) / pmap (9), bus_space (9), bus_dma (9) dan subsistem lainnya. Populer bus yang digunakan pada lebih dari satu arsitektur juga disarikan, seperti ISA, EISA, PCI, PCI-E, dll, memungkinkan driver juga sangat portabel dengan minimal modifikasi kode.
Sebuah "ekstrim" contoh HAL yang dapat ditemukan dalam arsitektur System/38 dan AS/400. Kebanyakan kompiler bagi sistem menghasilkan kode mesin abstrak, sedangkan Berlisensi Kode Internal, atau LIC, menerjemahkan kode mesin virtual ke dalam kode asli untuk prosesor yang sedang berjalan dan mengeksekusi kode asli yang dihasilkan. (Pengecualian adalah compiler yang menghasilkan LIC sendiri;. Mereka compiler tidak tersedia di luar IBM) ini begitu sukses sehingga perangkat lunak aplikasi dan perangkat lunak sistem operasi di atas lapisan LIC yang dikompilasi pada S/38 asli berjalan tanpa modifikasi dan tanpa kompilasi ulang pada sistem AS/400 terbaru, meskipun fakta bahwa hardware yang mendasarinya telah berubah secara dramatis, setidaknya tiga jenis prosesor telah digunakan.
lapisan abstraksi Hardware adalah dari tingkat yang lebih rendah dalam bahasa komputer daripada antarmuka pemrograman aplikasi (API) karena mereka berinteraksi langsung dengan hardware, bukan suatu kernel sistem, maka HAL membutuhkan lebih sedikit waktu pemrosesan dari API. bahasa tingkat tinggi sering menggunakan HAL dan API untuk berkomunikasi dengan komponen tingkat yang lebih rendah.
Operasi sistem yang memiliki HAL pasti, mudah dibawa di hardware yang berbeda. Hal ini sangat penting untuk embedded system yang berjalan di puluhan platform yang berbeda.
v Kernel
Kernel adalah program yang dimuat saat boot yang berfungsi sebagai interface antara user-level program dengan hardware. Fungsinya seperti layaknya sistem operasi, menangani task switching dalam multitasking, menangani permintaan membaca atau menulis peralatan disk, melakukan tugas-tugas network serta mengatur penggunaan memori.
Secara teknis Linux hanyalah sebuah kernel. Program lain seperti kompiler, editor, window manager dsb yang disertakan dalam paket hanyalah sebuah distribusi (RedHat, Slackware, SuSE dsb) yang melengkapi kernel menjadi sebuah sistem operasi yang lengkap.
Kadang-kadang sebuah kernel memerlukan konfigurasi agar bisa bekerja optimal pada sebuah mesin. Kernel yang ada pada distribusi RedHat 5.1 adalah versi 2.0.34. Kernel ini pada umumnya sudah bisa langsung bekerja dibanyak komputer tanpa perlu konfigurasi ulang lagi karena didalamnya sudah dimuat dukukungan untuk beberapa device. Konfigurasi ulang bisa dilakukan bila ada tambahan device baru yang belum dimuat atau dianggap muatannya terlalu banyak sehingga memakan banyak memori.
Setelah dilakukan konfigurasi, tahap berikut adalah melakukan kompilasi untuk mendapatkan kernel yang baru. Tahap ini memerlukan beberapa tool seperti kompiler dsb. RedHat telah menyediakan tool-tool tersebut dalam distribusinya.
Tahap kompilasi ini sangat potensial menimbulkan kesalahan dan kadang membuat frustrasi bila terus-menerus mengalami kegagalan. Sebelum mengalami musibah tersebut, mempersiapkan emergency boot disk adalah langkah yang tepat karena pada umumnya kesalahan akan mengakibatkan sistem mogok.
v System service
Pelayanan untuk memberikan akses ke sumber daya komputer dan fitur-fitur sistem operasi seperti memori, sistem file, perangkat, proses dan thread.
Aplikasi menggunakan fungsi system service untuk memantau dan mengelola sumber daya yang diperlukan untuk menyelesaikan pekerjaan yang sedang dilakukan sistem.
v Subsistem
PCI subsistem mungkin kode yang paling kompleks Anda harus berurusan dengan selama proses port. Berkat kesamaan PCI, HyperTransport, PCI-X, Cardbus dan sistem bus lain waktu untuk memahami dengan baik diinvestasikan - dan tombol untuk membuat subsistem PCI bekerja dengan baik adalah pemahaman yang baik dari bus PCI itu sendiri, kode tata letak, dan aliran eksekusi di Linux. Seperti banyak bagian lain dari porting, Anda akan menemukan pada akhirnya, kode yang sebenarnya tertulis minimal.
PCI sudah didukung untuk Linux / MIPS sejak Linux 2.0. Lebih tepatnya port MIPS sebagian besar kiri berhubungan dengan PCI ke papan individu yang tidak menghasilkan sejumlah besar kode diduplikasi, setiap implementasi tunggal dengan itu kekurangan dan kesalahan sendiri. Pci_auto memang mencoba menyediakan kode umum untuk mengkonfigurasi bus PCI - tetapi pada saat yang sama itu menduplikasi kode fungsionalitas identik dalam drivers / pci. Sebuah usaha untuk menyatukan beberapa kode PCI lebih dimulai dengan nama CONFIG_PCI_NEW tetapi segera menjadi korban pembangunan 2.6. Karena itu akan tetap tidak lengkap. Menyelesaikan diperlukan upaya yang signifikan untuk Linux 2.6. Para maintainer MIPS laporan senang ketika mengakhiri keberadaan pci_auto's menyedihkan. Pilihan CONFIG_PCI_NEW menjadi default. Sebagian besar kode PCI ditulis ulang. Ini masih tidak bisa dianggap selesai tetapi tidak ada perubahan signifikan API harus diharapkan.
