DTrace adalah sebuah fasilitas perunut dinamis komprehensif yang tersedia di Sistem Operasi Solaris 10. Pemanfaatan fasilitas ini ditujukan kepada:
• Administrators System
• Teknisi Pendukung Layanan (Service Support Personnel)
• Pengembang Kernel
• Pengembang Program Applikasi
• DTrace dapat digunakan oleh root dan pengguna biasa yang diberi hak-khusus DTrace melalui fasilitas Role-based Access Control (RBAC) di Solaris 10.
Fitur-fitur DTrace
DTrace memiliki fitur-fitur berikut:
• Memungkinkan modifikasi dinamis terhadap sistem untuk mengumpulkan data-data tertentu
• Melakukan perunutan di sistem yang aktif
• Sangat aman karena tidak menimbulkan kegagalan fatal yang tak-terduga
• Memungkinkan perunutan terhadap program kernel dan program tingkat-pengguna
• Menjalankan fungsinya dengan beban-kerja rendah ketika perunutan terjadi dan beban-kerja nol ketika perunutan tidak dilakukan.
Kegagalan Transien
Fasilitas DTrace sangat berguna untuk menemukan penyebab utama kegagalan transien. Kegagalan transien adalah suatu perilaku yang tak-diharapkan tetapi tidak menyebabkan kegagalan fatal di sistem. Misalnya:
• Sebuah aplikasi terhenti dengan pesan kesalahan “file tidak ditemukan”
• Sebuah aplikasi tidak memberikan tanggapan apa-apa, terperangkap dalam sebuah loop di tingkat pengguna (userland level)
• Atau, kegagalan transien dipahami juga sebagai sebuah definisi operasi sistem yang “tidak seperti diharapkan”:
• “Kami berharap per CPU dapat mengakomodasi 100 pengguna, tetapi kenyataan hanya mendukung hingga 60 pengguna CPU.”
• “Setiap pagi antara pukul 9:30 dan 10:00, kinerja sistem menurun secara drastis”
• “Mengapa pewaktuan sistem “go way up” ketika saya menjalankan aplikasi ‘X’?”
DTrace dikembangkan untuk menyediakan metode yang lebih efisien dan efektif-biaya untuk mencari penyebab kegagaln transien. Selama ini telah tersedia utilitas-utilitas terfokus-proses untuk men-debug kegagalan transien seperti:
• truss(1)
• pstack(1)
• prstat(1M)
Sayangnya, utilitas-utilitas ini tidak dirancang untuk men-debug masalah-masalah sistemik
Utilitas seperti mdb(1) dan Solaris Crash Analysis Tool (Solaris CAT) dirangcang untuk analisa ***-kematian. Analisa ***-kematian (post-mortem analysis) dapat dilakukan untuk men-debug kegagalan transien dengan menginduksikan kegagalan fatal selama periode kegagalan transien. Sangat nyata, bahwa teknik ini memiliki kekurangan-kekurangan sebagai berikut:
• Memerlukan penginduksian kegagalan fatal yang hampir selalu memerlukan waktu-tanpa-layanan (downtine) yang lebih lama dibandingkan kegagalan transien-nya sendiri.
• Ini memerlukan pemecahan masalah yang dinamis dari snapshot statik status sistem.
Men-debug dengan Teknik-teknik yang Invasif
Utilitas-utilitas di atas tidak dapat menemukan penyebab utama kegagalan transien sehingga dibuat teknik-teknik yang lebih invasif. Ini memerlukan pengembangan instrumentasi khusus untuk program kernel dan program pengguna yang mengalami kegagalan. Teknik ini memerlukan fasilitas yang disebut Trace Normal Form (TNF) yang digunakan untuk mereproduksi masalah yang sama dengan menggunakan biner-biner ter-instrumentasi. Teknik ini dilakukan dengan:
• Menjalankan biner-biner ter-instrumentasi di lingkungan produksi
• Mereproduksi masalah transient di lingkungan pengembangan
Teknik seperti ini tidak banyak dipraktekan karena memerlukan waktu yang lama, besar kemungkinan mengalami kesalahan dan seringkali tidak efektif.
Kemampuan-kemampuan DTrace
Kerangka kerja DTrace memiliki sekitar 10000 titik-titik perunutan yang disebut probe. Ketika titik instrumentasi diaktifkan maka pengumpulan data-data di dalam kernel atau proses pengguna dapat dilakukan.
Sebuah contoh probe yang disediakan oleh kerangka-kerja DTrace adalah titik-masuk (entry) ke dalam setiap fungsi-fungsi kernel. Informasi yang dapat diperoleh ketika probe ini aktif adalah:
• Setiap argumen yang diberikan kepada fungsi tersebut
• Variable global yang ada di dalam Kernel
• Catatan waktu dalam nanosecond yang diperlukan ketika sebuah fungsi dipanggil
• Perunutan terhadap stack untuk mengindikasikan kode-kode apa yang dipanggil oleh fungsi ini
• Process yang sedang berjalan ketika fungsi ini dipanggil
• Thread yang membuat panggilan terhadap fungsi ini
Gunakan DTrace untuk mengeksplorasi terhadap semua aspek di dalam Solaris 10 OS sehingga bermanfaat untuk:
• Memahami bagaimana perangkat lunak tertentu bekerja
• Menentukan penyebab-utama masalah-masalah kinerja
• Mengamati semua lapisan fungsional perangkat lunak dari tingkat pengguna hingga kernel
• Melacak sumber dari perilaku tak-normal
DTrace dilengkapi dengan primitif-primitif manajemen data yang tangguh untuk menyingkirkan kebutuhan ***-pemprosesan data yang terkumpul. Data unwanted di pruned as cloase to the source as possible untuk mencegah beban-kerja akibat membangkitkan dan memfilter unwanted data. DTrace juga menyediakan mekanisme untuk merunut selama proses boot dan mendapatkan semua data perunutan dari kernel crash dump.
Arsitektur DTrace
DTrace membantu pemahaman kerja sistem perangkat lunak dengan kemampuannya untuk secara dinamis memodifikasi kernel dan proses pengguna untuk merekam data tambahan yang dispesifikasikan di lokasi tertentu.
Probe
Probe adalah sebuah lokasi program atau aktifitas – contoh, setiap tik pendetak sistem – dimana kepada probe DTrace dapat mengikatkan sebuah permintaan untuk melakukan sekumpulan aksi seperti merekam penelusuran stack, catatan waktu atau argumen sebuah fungsi.
Bagaimana Probe bekerja?
Probes mirip dengan sensor dapat-diprogram yang disisipkan di titik-titik strategis di dalam sistem operasi. DTrace berguna untuk memprogram sensor-sensor tertentu untuk merekam informasi yang diperlukan. Saat setiap probe memicu (fires), DTrace mengumpulkan data yang berasal dari probe dan menampilkannya ke pengguna. Jika tidak ada aksi dispesifikasikan, DTrace merekam kapan setiap probe memicu dan di CPU mana.
Penyedia (Providers)
Penyedie DTrace menyediakan sekitar 10000 berbagai tipe probe. Probe diimplementasikan oleh penyedia. Sebuah penyedia adalah modul kernel yang mengaktifkan probe agar memicu ketika diakses. Salah satu penyedia adalah penyedia fbt “funcation boundary. Penyedia ini menyediakan probe titik-masuk dan titik-balik untuk hampir semua fungsi di dalam modul kernel.
Bagaimana Probes diaktifkan ?
Probes dan aksi didefinisikan dengan menggunakan bahasa pemograman D. Bahasa D dibuat berbasiskan bahasa pemograman C. Biasanya program D disimpan di dalam file skrip berakhiran .d. Program D diteruskan kepada Konsumer DTrace. Konsumer DTrace generik utama adalah perintah dtrace(1M).
Program D yang dibuat oleh pengguna dikompilasi oleh Konsumer DTrace menjadi bentuk objek yang disebut D intermediate Format (DIT). DIT kemudian dikirim ke kerangka-kerja DTrace di dalam kernel untuk dieksekusi. Probe-probe yang terdapat di dalam program D kemudian di-enable dan penyedia bersangkutan melakukan instrumentasi yang diperlukan untuk memicu probe-probe tersebut.
Komponen-komponen DTrace
DTrace memiliki komponen-komponen berikut:
• Probe
• Penyedia
• Konsumer
• Bahasa pemograman D
Sebagian besar kerangka-kerja DTrace berada di dalam kernel.
Probe
Probe memiliki atribut-atribut berikut:
• Probe disediakan oleh sebuah penyedia
• Probe mengidentifikasikan nama modul dan fungsi yang menyatakan kemampuan instrumentasi probe tersebut
• Probe memiliki sebuah nama
Keempat atribut ini mendefinisikan sebuah 4-tuple yang secara unik mengidentifikasikan setiap probe:
provider:module:function:name
Selain itu, setiap probe juga memiliki identitas berupa bilangan bulat yang unik.
Penyedia
Penyedia merepresentasikan sebuah metodologi untuk melakukan instrumentasi terhadap sistem. Penyedia menyediakan probe bagi kerangka-kerja DTrace. Penyedia menerima informasi dari DTrace ketika sebuah probe diaktifkan (enable) dan mentransfer kontrol ke DTrace ketika probe yang aktif memicu.
Beberapa penyedia yang ditawarkan oleh DTrace terdiri dari:
• Penyedia syscall dapat secara dinamis merunut tititk-masuk dan titik-balik untuk setiap panggilan sistem (system call) Solaris.
• Penyedia sched dapat secara dinamis merunut aktifitas penjadwalan yang penting
• Penyedia sysinfo menyediakan probe-probe yang berhubungan dengan statistik “sys” di kernel.
• Penyedia io menyediakan probe-probe perunut yang berkaitan dengan input dan output (I/O) disk.
Bahasa Pemograman D
Bahasa pemograman D digunakan untuk menspesifikasikan probe yang diinginkan dan mengikatkan aksi ke probe tersebut. Spesifikasi probe dan aksinya ini dikonstruksikan di dalam skrip D. Sintak-sintak di dalam skrip D mirip dengan pasangan “pattern action” milik. Bahasa pemograman D banyak mengambil sintak-sintak dari bahasa pemograman C.
Meskipun tanpa pengetahuan tentang bahasa pemograman C ataupun awk(1), program D pada dasarnya cukup mudah dituliskan dan dipahami.
Fitur-fitr bahasa D antara lain:
• Menyediakan akses lengkap ke struktur data C Kernel, misalnya vnode_t
• Menyediakan akses lengkap ke variabel-variabel statik dan global kernel
• Menyediakan dukungan lengkapt terhadap operator-operator ANSI-C
• Mendukung tipe data strings sebagai tipe data built-in (tidak seperti C, yang menggunakan tipe char * atau char[ ] yang ambigu).
Sekilas Pandang DTrace
Utilitas dtrace menyediakan antarmuka generik ke semua layanan esensial yang disediakan oleh fasilitas DTrace facility, yaitu:
• Opsi untuk menampilkan himpunan probe dan penyedia yang dipublikasikan oleh DTrace
• Opsi untuk meng-enable probe secara langsung dengan menggunakan penspesifikasi deskripsi probe (provider, module, function, name)
• Opsi untuk menjalankan pengkompilasi D dan mengkompilasi satu atau lebih file program D atau program D dituliskan langsung di perintah baris
• Opsi untuk membangkitkan program perunut anonim
• Opsi untuk membangkitkan laporan stabilitas program
• Opsi untuk memodifikasi perunutan DTrace dan perilaku penyanggaan, dan meng-enable fitur-fitru pengkompilasi D tambahan
Sintaks umum contoh-contoh tersebut adalah:
dtrace -options provider:module:function:name {action}
Aksi DTrace
Aksi adalah pernyataan-pernyataan yang dapat diprogram oleh pengguna yang kemudian dieksekusi di dalam kernel oleh mesin virtual DTrace. Berikut ini adalah properti-properti aksi:
• Aksi dilakukan ketika probe memicu
• Aksi secara lengkap dapat diprogram dalam bahasa D
• Sebagian besar aksi merekam beberapa status spesifik di dalam sistem
• Sebagian aksi menggunakan ekspresi dalam bahasa D
Beberapa aksi dapat mengubah status sistem dengan cara yang telah terdefinisikan dengan baik
• Aksi seperti ini disebut aksi desktruktif
• Aksi destruktif tidak diizinkan secara default
Variabel-variabel Built-In DTrace
Berikut adalah beberapa variabel-varibel built-in D yang lazim dipergunakan:
• pid – Nomor ID proses
• execname – Nama file-tereksekusi (executable)
• timestamp – Selang waktu terhitung sejak boot dalam nanoseconds
• curthread – Pointer ke struktur kthread_t yang merepresentasikan thread
• probemod – Nama modul probe
• probefunc – Nama fungsi probe
• probename – Nama probe
Fungsi-fungsi Built-In DTrace
DTrace juga menyediakan banyak fungsi built-in untuk melakukan aksi. Contohnya fungsi trace ( ) yang merekam hasil ekspresi D ke dalam penyangga perunutan.
• trace(pid) merunut nomor ID proses
• trace(execname) merunut nama dari file-tereksekusi
• trace(probefunc) merunut nama fungsi sebuah probe
Menuliskan Skrip D
Program DTrace yang makin kompleks akan sulit jika dituliskan langsung di perintah baris. Perintah dtrace(1M) mendukung penggunaan skrip yang dispesifikasikan dengan opsi -s. Cara lain adalah dengan membuat file interpreter DTrace yang dapat dieksekusi langsung. File interpreter selalu diawali dengan baris:
#!/usr/sbin/dtrace -s
Contoh berikut adalah sebuah skrip yang merunut nama file-terksekusi pada saat terjadi titik-masuk setiap panggilan sistem:
# cat syscall.d
syscall:::entry
{
trace(execname);
}
Berdasarkan konvensi, skrip D diberikan akhiran .d suffix. Berikutnya skrip ini dapat dijalankan dengan cara berikut ini:
# dtrace -s sycall.d
Jika file syscall.d ditambahkan izin-akses eksekusi dan tambahkan baris pertama-nya pathname ke interpreter dtrace maka selanjutnya skrip ini dapat dieksekusi secara langsung:
#cat syscall.d
#!/usr/sbin/dtrace -s
syscall:entry
{
trace(execname);
}
# chmod +x syscall.d
# ./syscall.d
Aggregasi
Penggunaan aggregasi data akan lebih berguna daripada data-data individual dalam pemecahan pertanyaan yang berkaitan dengan kinerja. Contohnya, untuk mengetahui banyaknya page faults oleh sebuah process daripada terjadinya setiap individual page fault. Lebih bermanfaat untuk membuat tabel yang berisi nama proses dan jumlah total page faults setiap prosesnya.
Sintaks Aggregasi DTrace
Bentuk umum aggregasi DTrace adalah:
@name[ keys ] = aggfunc ( args );
• Variable-variable ini didefinisikan sebagai berikut:
• name – Name variabel aggregasi yang didahului oleh karakter @.
• keys – Kumpulan ekspresi D yang dipisahkan oleh simbol koma
• aggfunc – Salah satu fungsi-fungsi aggregasi DTrace
• args – Kumpulan argumen yang sesuai dengan fungsi aggregasi dipisahkan oleh simbol koma
Predikat
Program D terdiri dari sekumpulan klausa-klausa probe. Klausa probe memiliki bentuk umum sebagai berikut:
probe descriptions
/ predicate /
{
action statements
}
Predikat (predicate) adalah ekspresi D yang terletak diantara simbol garis-miring / /. Predikat dievaluasi saat probe memicu untuk menentukan apakah aksi-aksi terkaitnya akan dieksekusi. Jika ekspresi D dievaluasi dengan nilai nol maka berarti false; jika dievaluasi dengan nilai bukan-nol maka berarti true. Penggunaan predikat bersifat opsional. Predikat selalu ditempatkan diantara deskripsi probe dan pernyataan aksi.
Speculative Healing
Bagian ini menjelaskan sebuah fasilitas DTrace yang disebut perunutan spekulatif, yaitu kemampuan perunutan data sementara yang kemudian akan diteruskan ke penyangga perunutan atau dibuang. Di DTrace, mekanisme utama untuk menyaring perunutan data yang tidak diperlukan adalah dengan predikat. Predikat berguna ketika diketahui kapan sebuah probe memicu tanpa mempedulikan apakah kejadian probe-nya adalah kejadian yang sedang menjadi perhatian atau tidak.
Contoh, jika kejadian yang menjadi perhatian adalah aktifitas yang berkaitan dengan proses tertentu atau pendeskripsi file tertentu maka diketahui bahwa probe akan memicu jika probe ini terkait dengan proses atau pendeskripsi file yang sedang menjadi perhatian. Namun dalam situasi lain, bisa saja tidak diketahui pasti apakah sebuah kejadian probe menjadi perhatian atau tidak hingga beberapa lama setelah probe memicu.
Sebagai contoh, jika sebuah panggilan sistem secara tidak teratur mengalami kegagalan dengan kode kesalahan umum (misalnya, EIO atau EINVAL) maka pengamatan terhadap path kode yang menyebabkan kondisi kesalahan perlu dilakukan. Untuk menangkap path kode dapat dilakukan dengan meng-enable setiap probe – tetapi hanya panggilan sistem yang gagal yang dapat diisolasi dengan cara demikian predikat yang sesuai dapat dikonstruksikan.
Jika kegagalan-nya sporadis atau tak-menentu, dapat dipaksakan untuk melakukan perunutan terhadap semua kejadian yang mungkin menjadi perhatian dan kemudian melakukan ***-proses terhadap data untuk mem-filter kejadian yang tidak terkait dengan path kode yang gagal. Dalam kasus seperti ini, meskipun kejadian yang menjadi perhatian jumlah sedikit tetapi jumlah keseluruhan kejadian yang harus dirunut bisa sangat banyak, ini menjadikan ***-pemrosesan menjadi sangat menyulitkan.
Masalah seperti ini dapat diatasi dengan fasilitas perunutan spekulatif, dalam situasi seperti ini perunutan data sementara (tentative) dilakukan terhadap satu atau lebih lokasi probe kemudian membuat keputusan untuk mengkomitmen data ke penyangga prinsipal di lokasi probe yang lain. Hasilnya, data hasil perunutan hanya berisi keluaran dari kejadian yang menjadi perhatian, tidak diperlukan ***-pemrosesan dan beban-kerja DTrace menjadi kecil.
Fungsi-fungsi Spekulatif DTrace
• speculation: memberikan nilai-balik berupa identitas untuk penyangga spekulatif baru
• speculate: mengindikasikan bahwa klausa berikutnya akan dirunut ke penyangga spekulatif dengan identitas ID
• commit: mengkomitmen penyangga spekulatif terkait dengan ID
• discard: membuang penyangga spekulatif terkait dengan ID
Toolkit DTrace
Toolkit DTrace adalah sekumpulan skrip-skrip DTrace, dokumentasi, dan perintah-perintah baris yang dapat digunakan dengan segera untuk memanfaatkan DTrace tanpa perlu menuliskan skripnya dari awal. Version 0.96 dari toolkit ini terdiri dari lebih 100 scripts, dan dapat diunduh dari: http://www.opensolaris.org/os/community/dtrace/dtracetoolkit
Komponen-komponen utama toolkit DTrace adalah:
• Skrip-skrip – Terdapat beberapa skrip utama di direktori teratas. Skrip-skrip lain dikumpulkan di dalam sub-direktori seperti Disk dan FS. Direktori bin berisi link-link simbolik ke semua skrip yang ada.
• Halaman-halaman manual di direktori Man
• File-file contoh di direktori Docs/Examples
• Kumpulan perintah-perintah baris di file Docs/oneliners.txt
• Setelah mempelajari dasar-dasar DTrace, sekarang kita akan mencoba membuat sebuah program D sederhana untuk menunjukkan berapa kali sebuah fungsi dalam program kita dipanggil setiap detiknya, misalnya saat kita diminta untuk menghitung transaction per second untuk sebuah program.
• Untuk itu, kita akan memakai probe yang lumayan unik, yaitu dari provider pid. Probe ini memungkinkan kita untuk berhenti pada saat sebuah function dalam sebuah proses sedang dikerjakan. Penamaan probe-nya seperti: pid1234 dimana 1234 adalah PID yang akan di-trace.
• Berikut adalah contoh program D-nya:
• #pragma D option quiet
•
• BEGIN
• {
• start = timestamp;
• }
•
• pid$1::prosesHitung:return
• {
• @total["PROSES"] = count();
• }
•
• tick-1sec
• {
• printa(@total);
• clear(@total);
• }
•
• END
• {
• printa(@total);
• printf("total time: %d secs.\n", (timestamp - start) / 1000000000);
• }
• Program di atas menghitung berapa kali function dengan nama prosesHitung dipanggil selama satu detik, dan mencetaknya setiap detik. Pada contoh program di atas, kita tidak menyertakan PID langsung pada program, tetapi melalui sebuah argumen $1, sehingga kita dapat program D di atas dengan perintah seperti:
• dtrace -s namafile.d 1234
• Dimana namafile.d adalah nama file yang berisi program D dan 1234 adalah PID yang akan di-trace.
Tentang FreeBSD
FreeBSD adalah suatu sistem operasi yang bekerja layaknya UNIX tetapi bukan turunan dari UNIX. Pertama kali dikembangkan oleh Berkeley Software Distribution pada tahun 1993, dan pertama kali dirilis versi FreeBSD 2.0 pada Januari 1995. Clone dari FreeBSD yang diketahui sejak 2001 antara lain DragonFly, OpenBSD, NetBSD, dan Mac OSX.
Operating system ini dijuluki FreebSD karena software ini gratis untuk digunakan oleh siapapun termasuk untuk kepentingan komersial, source code yang tersedia dengan gratis, siapapun dapat meningkatkan performa FreeBSD ini atau menemukan bug untuk mensubmit source codenya, kata “free” dapat diartikan sebagai gratis, atau dapat digunakan sesuai keinginan user.
Versi FreeBSD
FreeBSD mempunyai dua versi ketika dirilis. Versi tersebut antara lain versi -CURRENT dan versi -STABLE. Versi -CURRENT adalah versi yang pertama kali dirilis, biasanya dipakai oleh para developer yang sudah mahir tentang cara kerja FreeBSD agar dapat menemukan berbagai bugs paska produksi. Setelah versi -CURRENT selesai diperbaiki, maka versi tersebut tadi akan menjadi versi -STABLE yang sudah siap digunakan bagi siapapun. Oleh karena itu bagi yang kurang familiar dan baru mencoba FreeBSD, agar menggunakan versi -CURRENT karena versi ini ditujukan oleh orang yang kapabel untuk mengindentifikasi masalah yang muncul di versi terbaru ini. Tujuan dari adanya versi -CURRENT dan -STABLE ini adalah untuk mengetest versi terakhir dari software ini, memberitahukan fixed bugs bagi para pengguna, dan meyakinkan pengguna dengan fitur-fitur terbaru dan masalah yang sudah diatasi dari versi -CURRENT. Selain perbedaan -CURRENT dan -STABLE tadi, pemberian nama dari versi -STABLE juga telah dibuat sedemikian rupa sehingga para pengguna tahu berapa kali perbaikan telah dilakukan.
Linux
Linux (diucapkan 'l?n?ks atau /'l?n?ks/)[1] adalah nama yang diberikan kepada sistem operasi komputer bertipe Unix. Linux merupakan salah satu contoh hasil pengembangan perangkat lunak bebas dan sumber terbuka utama. Seperti perangkat lunak bebas dan sumber terbuka lainnya pada umumnya, kode sumber Linux dapat dimodifikasi, digunakan dan didistribusikan kembali secara bebas oleh siapa saja.[2]
Nama "Linux" berasal dari nama kernelnya (kernel Linux), yang diperkenalkan tahun 1991 oleh Linus Torvalds. Sistemnya, peralatan sistem dan pustakanya umumnya berasal dari sistem operasi GNU, yang diumumkan tahun 1983 oleh Richard Stallman. Kontribusi GNU adalah dasar dari munculnya nama alternatif GNU/Linux.[3]
Linux telah lama dikenal untuk penggunaannya di server, dan didukung oleh perusahaan-perusahaan komputer ternama seperti Intel, Dell, Hewlett-Packard, IBM, Novell, Oracle Corporation, Red Hat, dan Sun Microsystems. Linux digunakan sebagai sistem operasi di berbagai macam jenis perangkat keras komputer, termasuk komputer desktop, superkomputer,[4], dan sistem benam seperti pembaca buku elektronik, sistem permainan video (PlayStation 2, PlayStation 3 dan XBox[5]), telepon genggam dan router. Para pengamat teknologi informatika beranggapan kesuksesan Linux dikarenakan Linux tidak bergantung kepada vendor (vendor independence), biaya operasional yang rendah, dan kompatibilitas yang tinggi dibandingkan versi UNIX tak bebas, serta faktor keamanan dan kestabilannya yang tinggi dibandingkan dengan sistem operasi lainnya seperti Microsoft Windows. Ciri-ciri ini juga menjadi bukti atas keunggulan model pengembangan perangkat lunak sumber terbuka (opensource software).
Sistem operasi Linux yang dikenal dengan istilah distribusi Linux (Linux distribution) atau distro Linux umumnya sudah termasuk perangkat-perangkat lunak pendukung seperti server web, bahasa pemrograman, basisdata, tampilan desktop (desktop environment) seperti GNOME,KDE dan Xfce juga memiliki paket aplikasi perkantoran (office suite) seperti OpenOffice.org, KOffice, Abiword, dan Gnumeric.
Pemrograman di Linux
Sebagian besar distribusi Linux mendukung banyak bahasa pemrograman. Koleksi peralatan untuk membangun aplikasi dan program-program sistem operasi yang umum terdapat di dalam GNU toolchain, yang terdiri atas GNU Compiler Collection (GCC) dan GNU build system. GCC menyediakan kompilator untuk Ada, C, C++, Java, dan Fortran. Kernel Linux sendiri ditulis untuk dapat dikompilasi oleh GCC. Kompilator tak bebas (proprietary) untuk Linux antara lain adalah Intel C++ Compiler dan IBM XL C/C++ Compiler.
Kebanyakan distribusi juga memiliki dukungan untuk Perl, Ruby, Python dan bahasa pemrograman dinamis lainnya. Contoh bahasa pemrograman yang tidak umum tetapi tetap mendapat dukungan di Linux antara lain adalah C# dengan proyek Mono yang disponsori oleh Novell, dan Scheme. Sejumlah Java Virtual Machine dan peralatan pengembang jalan di Linux termasuk Sun Microsystems JVM (HotSpot), dan J2SE RE IBM, serta proyek-proyek sumber terbuka lainnya seperti Kaffe. Dua kerangka kerja utama untuk pengembangan aplikasi grafis di Linux adalah GNOME dan KDE. Proyek-proyek ini berbasiskan GTK+ dan Qt. Keduanya mendukung beragam bahasa pemrograman. Untuk Integrated development environment terdapat Anjuta, Code::Blocks, Eclipse, KDevelop, Lazarus, MonoDevelop, NetBeans, dan Omnis Studio, sedangkan penyunting teks yang telah lama tersedia adalah Vim dan Emacs.[23]
Solaris
Solaris adalah Unix sistem operasi yang diperkenalkan oleh Sun Microsystems pada tahun 1992 sebagai pengganti SunOS. Solaris dikenal dengan skalabilitas, terutama pada SPARC sistem, dan banyak fitur inovatif yang berasal seperti DTrace dan ZFS. Solaris mendukung berbasis SPARC dan x86 berbasis workstation dan server dari Sun dan vendor lainnya, dengan upaya dilakukan untuk port ke platform tambahan.
Solaris disertifikasi terhadap Spesifikasi Single Unix. Meskipun secara historis dikembangkan sebagai perangkat lunak berpemilik, itu didukung pada sistem yang dibuat oleh semua vendor server utama, dan sebagian besar yang basis kode sekarang perangkat lunak open source melalui proyek OpenSolaris.
Unix
Unix atau UNIX adalah sebuah sistem operasi komputer yang diawali dari project Multics (Multiplexed Information and Computing Service) pada tahun 1965 yang dilakukan American Telephone and Telegraph AT&T, General Electric (GE), dan Institut Teknologi Massachusetts (MIT), dengan biaya dari Departemen Pertahanan Amerika (Departement of Defence Advenced Research Project, DARPA atau ARPA), UNIX didesain sebagai Sistem operasi yang portable, multi-tasking dan multi-user.
Sistem operasi Unix digunakan secara luas baik sebagai server atau workstation. Arsitektur Unix dan model client/server merupakan elemen yang paling penting dalam perkembangan internet dan mengubah proses komputasi secara terpusat dalam jaringan dari pada proses tunggal di komputer. Linux, merupakan sistem operasi yang diadopsi dari Unix dan tersedia secara bebas mendapat popularitas sebagai alternatif dari sistem operasi proprietary seperti Microsoft Windows
Pengguna lain dalam sistem operasi Linux diluar Owner dan Group
Selain identitas kepemilikan diatas, sebuah file juga mempunyai informasi untuk mengatur siapa yang berhak untuk membaca, menulis [mengubah] atau menjalankan file tersebut.
Model akses terhadap sebuah file dibedakan menjadi tiga yaitu Read [baca], Write [tulis] dan eXecute [eksekusi].
contoh :
al3x@TheMentor:~$ ls -la MyJava.java
-rwxrwxrwx 1 al3x al3x 0 2005-08-25 20:04 MyJava.java
al3x@TheMentor:~$
kolom pertama yang berisi -rwxrwxrwx
• 1 karakter awal [ "-" ] sebagai penanda antara file dan direktory
• 3 karakter berikutnya ["rwx"] menandakan akses permison buat user
• 3 karakter berikutnya ["rwx"] merupakan akses permision buat group
• 3 karakter berikutnya ["rwx"] menandakan akses permison buat other
kolom ke-3 dan ke-4 al3x al3x yang menandakan bahwa file tersebut adalah milik al3x dengan group al3x.
Angka 0 berikutnya menandakan ukuran dari file
Kamis, 22 April 2010
Senin, 05 April 2010
tugas so3
System Components
∎ Process Management
∎ Main Memory Management
∎ Secondary-Storage Management
∎ I/O System Management
∎ File Management
∎ Support services:
∎ Protection System
∎ Networking
∎ Command-Interpreter System
Process Management
∎ Proses adalah sebuah program yang sedang
dijalankan (eksekusi).
∎ Suatu proses memerlukan resources pada saat
ekesekusi: CPU time, memory, files dan I/O devices
∎ Sistim operasi bertanggung jawab terhadap
aktifitas yang berhubungan dengan manajemen
proses:
∎ Process creation & deletion.
∎ Process suspension (block) & resumption.
∎ Mekanisme:
• Sinkronisasi antar proses
• Komunikasi antar proses
Main-Memory Management
∎ Memori sebagai tempat penyimpanan instruksi/data dari
program
∎ Storage yang cepat sehingga dapat mengimbangi kecepatan
eksekusi instruksi CPU
∎ Terdiri dari “array of words/bytes” yang besar
∎ Address digunakan untuk mengakses data (shared oleh CPU dan
I/O devices)
∎ Umumnya main memory bersifat “volatile” – tidak
permanent. Isinya akan hilang jika komputer di matikan.
∎ Manajement memori:
∎ Melacak pemakaian memori (siapa dan berapa besar?).
∎ Memilih program mana yang akan diload ke memori.
∎ Alokasi dan De-alokasi memori fisik untuk program
System Structure
∎ metode mengatur dan membangun OS
∎ Contoh: MS-DOS
∎ Saat dirancang kemampuan PC sangat minimal
• Prosesor: 8086 (10 MHz), Max. memory: 640 Kb
∎ MS-DOS – dibuat dengan menyediakan “fungsional”
dari OS sebanyak mungkin pada resources yang
sangat terbatas (memori)
∎ Tidak dalam bentuk modul => monolithic (satu
kesatuan):
• MS-DOS menjadi satu kesatuan besar tanpa batasan jelas –
fungsional dan interface
• Terdapat struktur yang sangat sederhana dan “proteksi” yang
longgar (single user system)
Virtual Machines
∎ Misalkan terdapat system program => control program
yang mengatur pemakaian resources hardware.
∎ Control program = trap system call + hardware acces.
∎ Control program memberikan fasilitas ke proses user
∎ Mendapatkan jatah CPU dan memori.
∎ Menyediakan interface “identik” dengan apa yang disediakan oleh
hardware => sharing devices untuk berbagai proses.
∎ Virtual machine => control program yang minimal
∎ VM memberikan ilusi multitasking: seolah-olah terdapat prosesor
dan memori ekslusif digunakan (virtual machine).
∎ VM memilah fungsi multitasking dan implementasi extended
machine (tergantung user proses) => flexible dan lebih mudah
untuk maintained (proteksi).
∎ Process Management
∎ Main Memory Management
∎ Secondary-Storage Management
∎ I/O System Management
∎ File Management
∎ Support services:
∎ Protection System
∎ Networking
∎ Command-Interpreter System
Process Management
∎ Proses adalah sebuah program yang sedang
dijalankan (eksekusi).
∎ Suatu proses memerlukan resources pada saat
ekesekusi: CPU time, memory, files dan I/O devices
∎ Sistim operasi bertanggung jawab terhadap
aktifitas yang berhubungan dengan manajemen
proses:
∎ Process creation & deletion.
∎ Process suspension (block) & resumption.
∎ Mekanisme:
• Sinkronisasi antar proses
• Komunikasi antar proses
Main-Memory Management
∎ Memori sebagai tempat penyimpanan instruksi/data dari
program
∎ Storage yang cepat sehingga dapat mengimbangi kecepatan
eksekusi instruksi CPU
∎ Terdiri dari “array of words/bytes” yang besar
∎ Address digunakan untuk mengakses data (shared oleh CPU dan
I/O devices)
∎ Umumnya main memory bersifat “volatile” – tidak
permanent. Isinya akan hilang jika komputer di matikan.
∎ Manajement memori:
∎ Melacak pemakaian memori (siapa dan berapa besar?).
∎ Memilih program mana yang akan diload ke memori.
∎ Alokasi dan De-alokasi memori fisik untuk program
System Structure
∎ metode mengatur dan membangun OS
∎ Contoh: MS-DOS
∎ Saat dirancang kemampuan PC sangat minimal
• Prosesor: 8086 (10 MHz), Max. memory: 640 Kb
∎ MS-DOS – dibuat dengan menyediakan “fungsional”
dari OS sebanyak mungkin pada resources yang
sangat terbatas (memori)
∎ Tidak dalam bentuk modul => monolithic (satu
kesatuan):
• MS-DOS menjadi satu kesatuan besar tanpa batasan jelas –
fungsional dan interface
• Terdapat struktur yang sangat sederhana dan “proteksi” yang
longgar (single user system)
Virtual Machines
∎ Misalkan terdapat system program => control program
yang mengatur pemakaian resources hardware.
∎ Control program = trap system call + hardware acces.
∎ Control program memberikan fasilitas ke proses user
∎ Mendapatkan jatah CPU dan memori.
∎ Menyediakan interface “identik” dengan apa yang disediakan oleh
hardware => sharing devices untuk berbagai proses.
∎ Virtual machine => control program yang minimal
∎ VM memberikan ilusi multitasking: seolah-olah terdapat prosesor
dan memori ekslusif digunakan (virtual machine).
∎ VM memilah fungsi multitasking dan implementasi extended
machine (tergantung user proses) => flexible dan lebih mudah
untuk maintained (proteksi).
Langganan:
Postingan (Atom)