Senin, 05 November 2007

2.2. Organisasi Kernel

Pada bagian ini, dijabarkan pengelompokan kernel freeBSD dalam dua hal..

• Sebagai bodi statis software, dikategorikan dengan fungsi dalam module-module yang membentuk kernel.
• Kedinamisan operasional, dikategorikan menurut service yang yang akan diberikan kepada para user.

Bagian terbesar dari kernel adalah mewujudkan service sistem dimana aplikasi mengakses melalui apa yang dinamakan “system calls”. Dalam operating sistem FreeBSD, software ini disatukan menurut:

• Fasilitas dasar kernel: penanganan waktu dan jam sistem, manajemen descriptor, dan manajemen proses.

• Support untuk pengaturan memory: paging & swapping.

• Interface Sistem Generic: pengaturan I/O [ input/output ], dan operasi multiplexing pada descriptor-descriptor.

• Filesystem: files, directories, pathname translation, file locking, and I/O buffer management

• Terminal-handling support: the pseudo-terminal interface dan terminal line disciplines

• Fasilitas komunikasi antar proses: sockets

• Support untuk komunikasi jaringan: protokol-protokol komunikasi dan fasilitas jaringan seperti: routing.

Hampir semua software pd kategori ini adalah program machine-independent dan bisa disesuaikan pd arsitektur hardware yang berbeda.

Apsek-aspek machine-dependent dari kernel dipisahkan dari alur code utama. Pada dasarnya, tidak ada code dalam program machine-independent yang mengandung code yang memuat kondisi untuk arsitek tertentu. Pada saat untuk arsitektur [architecture-dependent] dibutuhkanm maka code dalam program “machine-independent “ akan memnggil fungsi architecture-dependent yang berlokasi dalam program “machine-dependent “. Software didalam program “machine-dependent “ :

• Start-up awal pada level hardware.

• Penanganan Trapping dan Faulting

• Manipulasi tingkat bawah [ h/w] untuk waktu operasional dari suatu proses.

• Konfigurasi dan pPengaturan awal dari perangkat-perangkat keras.

• Support pengaturan waktu untuk perangkat Input/Output.

Tabel 2.1 adalah ringkasan program machine-independent yang diterapkan pada kernel FreeBSD. Nilai pada kolom 2 adalah baris-baris Bahasa C source code, file-file header, dan Bahasa Mesin. Secara virtual semua program dalam kernel ditulis dalam bahasa C hanya sekitar 6% ditulis dalam bahasa mesin.

Tabel 2.1. Program Machine-independent di dalam kernel FreeBSD.

Kategori

Jumlah baris

Persentasi Kernel

headers

38,158

4.8%

initialization

1,663

0.2%

kernel facilities

53,805

6.7%

generic interfaces

22,191

2.8%

interprocess communication

10,019

1.3%

terminal handling

5,798

0.7%

virtual memory

24,714

3.1%

vnode management

22,764

2.9%

local filesystem

28,067

3.5%

miscellaneous filesystems (19)

58,753

7.4%

network filesystem

22,436

2.8%

network communication

46,570

5.8%

Internet V4 protocols

41,220

5.2%

Internet V6 protocols

45,527

5.7%

IPsec

17,956

2.2%

netgraph

74,338

9.3%

cryptographic support

7,515

0.9%

GEOM layer

11,563

1.4%

CAM layer

41,805

5.2%

ATA layer

14,192

1.8%

ISA bus

10,984

1.4%

PCI bus

72,366

9.1%

pccard bus

6,916

0.9%

Linux compatibility

10,474

1.3%

total machine independent

689,794

86.4%

Key: GEOM—geometry; CAM —Common Access Method; ATA—Advanced Technology Attachment; ISA—Industry Standard Architecture; PCI—Peripheral Component Interconnect.

Tabel 2.2. Program Machine-dependent untuk PC dalam kernel.

Category

Lines of Code

Percentage of Kernel

machine dependent headers

16,115

2.0%

ISA bus

50,882

6.4%

PCI bus

2,266

0.3%

virtual memory

3,118

0.4%

other machine dependent

26,708

3.3%

routines in assembly language

4,400

0.6%

Linux compatibility

4,857

0.6%

Total machine dependent

108,346

13.6%

Key: ISA—Industry Standard Architecture; PCI—Peripheral Component Interconnect.

Hanya sebagian kecil dari kernel diambil pengawalan sistem. Kode ini digunakan pada saat sistem melakukan “Bootstrapping” ke dalam operasional dan bertugas untuk menyusun lingkungan kernel hardware maupun software (pada Chapter 14). Beberapa sistem operasi (terutama yang dengan fisikal memori yang terbatas) mengabaikan atau menggantungkan program yang bertugas menjalankan fungsi-fungsi tersebut stelah program tersebut dijalankan. Kernel FreeBSD tidak mengambil kembali memori yang digunakan pada saat ‘startup' karena persentasi pemakaiannya hanya sedikit sekali sekitar 0.2 % dari sumber kernel yang terpakai. Proses kode startup tidak tampak pada satu tempat – tersebar secara menyeluruh.

Tidak ada komentar: