200
QuickTime™ and a de com p re s s or are needed to see this picture. SunMicrosystems,Inc. 4150NetworkCircle SantaClara,CA95054 USA Buku Pedoman Siswa Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan Menggunakan Proyek OpenSolaris

Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

  • Upload
    lytruc

  • View
    225

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Qui ckTi m e™ and a de com p re ssor

are needed to see thi s pi cture.

SunMicrosystems,Inc. 4150NetworkCircle SantaClara,CA95054USA

Buku Pedoman Siswa

Pengantar SistemOperasi: SebuahPendekatan PraktisDengan MenggunakanProyek OpenSolaris

Page 2: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran
Page 3: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Copyright 2007 SunMicrosystems, Inc. 4150Network Circle, Santa Clara,CA 95054 U.S.A. All rights reserved.

SunMicrosystems, Inc. has intellectual property rights relating totechnology embodied in the product that is described in this document.In particular, and without limitation, these intellectual propertyrights may include one or more U.S. patents or pending patentapplications in the U.S. and in other countries.

U.S. Government Rights – Commercial software. Government users aresubject to the SunMicrosystems, Inc. standard license agreement andapplicable provisions of the FAR and its supplements.

This distribution may include materials developed by third parties.

Parts of the product may be derived from Berkeley BSD systems, licensedfrom the University of California. UNIX is a registered trademark inthe U.S. and other countries, exclusively licensed through X/OpenCompany, Ltd.Sun, SunMicrosystems, the Sun logo, the Solaris logo, the Java CoffeeCup logo, docs.sun.com, Java, and Solaris are trademarks or registeredtrademarks of SunMicrosystems, Inc. in the U.S. and other countries.All SPARC trademarks are used under license and are trademarks orregistered trademarks of SPARC International, Inc. in the U.S. andother countries. Products bearing SPARC trademarks are based upon anarchitecture developed by Sun Microsystems, Inc.

TheOPEN LOOK and SunTM Graphical User Interface was developed bySunMicrosystems, Inc. for its users and licensees. Sun acknowledges thepioneering efforts of Xerox in researching and developing the conceptof visual or graphical user interfaces for the computer industry. Sunholds a non-exclusive license from Xerox to the Xerox Graphical UserInterface, which license also covers Sun's licensees who implementOPENLOOK GUIs and otherwise comply with Sun's written license agreements.

Products covered by and information contained in this publication arecontrolled by U.S. Export Control laws and may be subject to the exportor import laws in other countries.Nuclear, missile, chemical orbiological weapons or nuclear maritime end uses or end users, whetherdirect or indirect, are strictly prohibited. Export or reexport tocountries subject to U.S. embargo or to entities identified on U.S.export exclusion lists, including, but not limited to, the deniedpersons and specially designated nationals lists is strictly prohibited.

DOCUMENTATIONIS PROVIDED “AS IS” AND ALL EXPRESSOR IMPLIED CONDITIONS,REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTYOFMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSEORNON-INFRINGEMENT,ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCHDISCLAIMERS ARE HELD TOBE LEGALLY INVALID.

Copyright 2007 SunMicrosystems, Inc. 4150Network Circle, Santa Clara,CA 95054 U.S.A. Tous droits réservés. SunMicrosystems, Inc. détient lesdroits de propriété intellectuelle relatifs à la technologie incorporéedans le produit qui est décrit dans ce document. En particulier, et cesans limitation, ces droits de propriété intellectuelle peuvent inclure

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

i

Page 4: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

un ou plusieurs brevets américains ou des applications de brevet enattente aux Etats-Unis et dans d'autres pays.

Cette distribution peut comprendre des composants développés par destierces personnes.

Certaines composants de ce produit peuvent être dérivées du logicielBerkeley BSD, licenciés par l'Université de Californie. UNIX est unemarque déposée aux Etats-Unis et dans d'autres pays; elle est licenciéeexclusivement par X/Open Company, Ltd.

Sun, SunMicrosystems, le logo Sun, le logo Solaris, le logo Java CoffeeCup, docs.sun.com, Java et Solaris sont des marques de fabrique ou desmarques déposées de SunMicrosystems, Inc. aux Etats-Unis et dansd'autres pays. Toutes les marques SPARC sont utilisées sous licence etsont des marques de fabrique ou des marques déposées de SPARCInternational, Inc. aux Etats-Unis et dans d'autres pays. Les produitsportant les marques SPARC sont basés sur une architecture développéepar SunMicrosystems, Inc.

L'interface d'utilisation graphiqueOPEN LOOK et Sun a été développéepar SunMicrosystems, Inc. pour ses utilisateurs et licenciés. Sunreconnaît les efforts de pionniers de Xerox pour la recherche et ledéveloppement du concept des interfaces d'utilisation visuelle ougraphique pour l'industrie de l'informatique. Sun détient une licencenon exclusive de Xerox sur l'interface d'utilisation graphique Xerox,cette licence couvrant également les licenciés de Sun qui mettent enplace l'interface d'utilisation graphiqueOPEN LOOK et qui, en outre, seconforment aux licences écrites de Sun.

Les produits qui font l'objet de cette publication et les informationsqu'il contient sont régis par la legislation américaine en matière decontrôle des exportations et peuvent être soumis au droit d'autres paysdans le domaine des exportations et importations. Les utilisationsfinales, ou utilisateurs finaux, pour des armes nucléaires, desmissiles, des armes chimiques ou biologiques ou pour le nucléairemaritime, directement ou indirectement, sont strictement interdites.Les exportations ou réexportations vers des pays sous embargo desEtats-Unis, ou vers des entités figurant sur les listes d'exclusiond'exportation américaines, y compris, mais de manière non exclusive, laliste de personnes qui font objet d'un ordre de ne pas participer,d'une façon directe ou indirecte, aux exportations des produits ou desservices qui sont régis par la legislation américaine en matière decontrôle des exportations et la liste de ressortissants spécifiquementdesignés, sont rigoureusement interdites.

LADOCUMENTATIONEST FOURNIE "EN L'ETAT" ET TOUTES AUTRES CONDITIONS,DECLARATIONS ET GARANTIES EXPRESSESOUTACITES SONT FORMELLEMENTEXCLUES,DANS LA MESURE AUTORISEE PAR LA LOI APPLICABLE, YCOMPRISNOTAMMENT TOUTE GARANTIE IMPLICITE RELATIVE ALAQUALITEMARCHANDE, A L'APTITUDE A UNE UTILISATIONPARTICULIEREOUAL'ABSENCEDE CONTREFACON.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

ii

Page 5: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

iii

Page 6: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran
Page 7: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Daftar Isi

Daftar Isi .....................................iii

Apa itu Proyek OpenSolaris? ......................1Portal Regional..................................3

Situs-Situs OpenSolaris..........................4Diskusi........................................5Komunitas......................................6Proyek.........................................8Repositori Kode Pemograman.....................9OpenGrok......................................10

Advokasi OpenSolaris.............................11Mengapa Menggunakan OpenSolaris?................12Harga.........................................13Fitur-fitur Inti Yang Inovatif................14Kompatibilitas Balik..........................15Netralitas Platform Perangkat Keras...........16Piranti Pengembangan..........................17

Pernyatan Tanda Terima Kasih....................19

Mempersiapkan Lingkungan Kerja OpenSolaris......20Konfigurasi Perangkat Keras dan Perangkat Lunak.22

Jaringan........................................26

Daemon Auto-Configuration Jaringan..............27

Tinjauan Umum Zona..............................28

Administrasi Zona...............................29Memulai Administrasi Zona.....................31

Virtualisasi Server Web dengan Zona.............35Pembuatan Zona Non-Global.....................36

Pembuatan Pool Penyimpan Data dan Sistem File ZFS................................................41

Membuat Pool Penyimpan Data ZFS Ter-mirror......42

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

iii

Page 8: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Sistem File ZFS Sebagai Direktori KerjaPengguna........................................44

Membuat Konfigurasi RAID-Z .....................48

Konsolidasi Area Pengguna........................50Konsolisidasi Area Pengguna dan Deskripsinya....51

Fitur Inti Sistem Operasi Solaris ...............53Proses Pengembangan dan Metode Penulisan Kode...54

Tinjauan .......................................60

FireEngine......................................61Sinkronisasi .................................62TCP, IP, dan UDP..............................63GLDv3.........................................64Virtualisasi..................................65

Least Privilege (Hak Istimewa Terbatas).........66

Filtrasi Paket..................................67Filter IP.....................................68Mengaktifkan Filtrasi Paket Sederhana.........69Beberapa Contoh Kaidah Filtrasi Paket.........70

Zona (Zones)....................................73

Zona Bertanda-identitas (Branded Zones - BrandZ)................................................76

Jaringan Didalam Zona...........................79Identitas Zona, Akses terhadap CPU dan InstalasiPaket.........................................81Perangkat Didalam Zones.......................82

Prakiraan Penyembuhan-Diri (Predictive Self-Healing)........................................83Arsitektur Manajemen Kegagalan (Fault ManagementArchitecture - FMA)...........................84Fasilitas Manajemen Layanan (Services ManagementFacility - SMF)...............................86

Perunut Dinamis (Dynamic Tracing - DTrace)......87

Pen-debug Modular (Modular Debugger - MDB)......88

Sistem File ZFS.................................89

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

iv

Page 9: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Penggunaan Checksum dan Perbaikan Data........90RAID-Z........................................91

Konsep Pemograman................................92Manajemen Proses dan Sistem.....................93

Pemograman Thread...............................96Sinkronisasi..................................99

Penjadwalan CPU................................101

Tinjauan Umum Kernel...........................105Perbedaan Antara Eksekusi Modul Kernel danProgram Pengguna.............................106Perbedaan Struktural antara Modul Kernel Modulesdan Program Pengguna.........................108

Men-debug Proses...............................110

Memulai Penggunaan DTrace.......................112Mengaktifkan Probe DTrace Sederhana............113

Menampilkan Probe Perunut......................116

Pemograman Bahasa D............................120

Men-debug Aplikasi dengan DTrace................124Mengaktifkan Probe Didalam Moda Pengguna.......125

Merunut Aplikasi Dengan DTrace.................126

Men-debug Aplikasi C++ dengan DTrace............131Menggunakan DTrace Untuk Men-debug dan MembuatProfil Sebuah Program C++ .....................132

Manajemen Memori dengan DTrace dan MDB..........147Perangkat lunak Untuk Manajemen Memori.........148

Pengujian Memori Virtual dengan DTrace dan MDB.149

Men-debug Program Penggerak Perangkat Dengan DTrace................................................173Memindahkan Program Penggerak smbfs Dari Linux KeSolaris OS.....................................174

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

v

Page 10: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Sumber Bacaan Tambahan OpenSolaris..............186

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

vi

Page 11: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran
Page 12: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran
Page 13: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Apa itu Proyek OpenSolaris?

Tujuan umum dari pelatihan ini adalah agar pesertamemperoleh pengetahuan tentang Sistem Operasisebagai bagian dari sistem komputasi denganmemanfaatkan kode pemograman Sistem Operasi Solarisyang secara bebas bisa diperoleh melalui proyekOpenSolaris.

Tip - Lakukan pendaftaran di Internet melalui situshttp://get.opensolaris.org, agar secara gratisdapat menerima OpenSolaris Starter Kit yang terdiridari materi-materi pelatihan, kode pemograman danpiranti untuk pengembangan.

Di bagian awal peserta diperkenalkan bagaimanamengakses kelompok pengguna (user group), situs-situs dan dokumentasi yang berhubungan denganOpenSolaris sehingga peserta dapat segera mengenalkomputasi berbasis UNIX.

Berikutnya disajikan dimana peserta bisa mengakseslebih jauh informasi-informasi lain yangberhubungan dengan Proyek OpenSolaris seperti kodepemograman (source code), komunitas, proyek-proyekyang sedang berjalan dan penjelajah kode pemograman(source browser).

Langkah selanjutnya, peserta diperlihatkanbagaimana mengkonfigurasi zonas, ZFS, jaringan danbeberapa fitur lain. Di bagian akhir, terdapatlatihan-latihan bagi peserta untuk dapat

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

1 M O D U L

Tujuan

1

Page 14: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

mempelajari bagaimana menggunakan DTrace untuk men-debug proses, aplikasi, kegagalan halaman memori(page faults), dan program penggerak perangkat(drivers).

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

2

Page 15: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Apa itu Proyek OpenSolaris?

Proyek OpenSolaris diluncurkan pada tanggal 14 Juni2005 untuk menghasilkan sebuah upaya membangunkomunitas dengan menggunakan kode pemogramanSolaris sebagai langkah awalnya. Proyek inimerupakan sebuah tempat dimana upaya pengembangankomunitas saling terkait, tempat dimana parakontributor dari Sun dan siapa pun dapatberkolaborasi demi perkembangan dan kemajuanteknologi Sistem Operasi.

Ketersediaan kode pemograman OpenSolaris dapatdimanfaatkan untuk banyak hal antara lain sebagaidasar untuk versi mendatang produk Sistem OperasiSolaris, proyek-proyek Sistem Operasi lainnya,produk pabrikan pihak-ketiga dan distribusi-distribusi aplikasi yang diminati oleh komunitas.Hingga saat ini, Sun Microsystems, Inc. yangmensponsori proyek ini.

Hingga 2 tahun pertama, lebih dari 60.000 pesertatelah terdaftar sebagai anggota. Komunitas pararekayasawan ini terus bertumbuh dan berubah untukmemenuhi kebutuhan para pengembang perangkat lunak,sistem administrator dan pengguna Sistem OperasiSolaris.

Pembelajaran Sistem Operasi dengan proyekOpenSolaris memiliki banyak keuntungan dibandingkanpembelajaran instruksional:

Mendapatkan akses ke kode pemograman dari SistemOperasi Solaris 10 yang revolusioner.

Mendapatkan akses ke kode pemograman dari SistemOperasi komersial yang digunakan secara luas dibanyak lingkungan bisnis kecil dan besar.

Keunggulan perangkat lunak untuk melakukanobservasi dan debug.

Dukungan perangkat keras yang meliputi arsitekturSPARC, x86 dan x64.

Kepemimpinan Solaris di lingkungan komputasi 64-

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

1

Page 16: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Apa itu Proyek OpenSolaris?

bit.

Pemanfaatan perangkat lunak tak terbatas secaragratis.

Kode pemograman yang menantang, inovatif,lengkap, konsisten, tangguh dan bisa diperolehsecara bebas.

Adanya CommonDevelopment and Distribution License(CDDL), sebuah aturan lisensi yang disetujui olehOSI, yang membolehkan pemanfaatan yang bebasroyaliti, modifikasi dan kegiatan ikutan lainnya

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

2

Page 17: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Portal Regional

Portal RegionalKomunitas Internationalization and Localizationsebagian bagian dari Proyek OpenSolaris adalahkomunitas yang bertugas membantu untukmenerjemahkan situs OpenSolaris yang berbahasaInggris kedalam bahasa-bahasa yang lain. Sejauhini, terdapat 8 portal dengan bahasa pengantarlokal yang masih terus dikembangkan:

Portal India – http://in.opensolaris.org

Portal Cina – http://cn.opensolaris.org

Portal Jepang – http://jp.opensolaris.org

Portal Polandia – http://pl.opensolaris.org

Portal Perancis – http://fr.opensolaris.org

Portal Brasil –http://opensolaris.org/os/project/br

Portal Spanyol –http://opensolaris.org/os/project/es

Portal berbahasa pengantar Jerman, Rusia, RepulikCzech, Spanyol, Korea dan Meksiko masih dalamstatus perencanaan. Kunjungi portal OpenSolarisuntuk bisa ikut berpartisipasi, atau chat di salahsatu dari tujuh fasiltas chat OpenSolaris denganmenggunakan IRC di irc.freenode.net. Kunjungihttp://opensolaris.org/os/chat/untuk informasilebih lanjut.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

3

Page 18: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Situs-situs OpenSolaris

Situs-Situs OpenSolarisUntuk mendownload kode pemograman OpenSolaris,membaca lisensi dan mengakses petunjuk bagaimanamengkonstruksi kode pemograman (building source)dan menginstal salinan file-file biner pra-konstruksi yang terkompresi (arsip pra-konstruksi/pre-built archive) kunjungi situs:

http://www.opensolaris.org/os/downloads.

Ikon-ikon di kanan-atas halaman situs OpenSolarismenyediakan akses ke halaman diskusi, komunitas,proyek, download, dan penjelajah kode pemograman.Selain itu, situs OpenSolaris juga tersediafasilitas pencarian isi situs dan kumpulan blog.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

4

Page 19: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Situs-situs OpenSolaris

DiskusiHalaman Diskusi menyediakan akses untukberkomunikasi dengan para ahli yang berkecimpungdengan teknlogi kode pemograman terbuka (opensource). Halaman Diskusi juga menyediakan pencarianarsip dari diskusi-diskusi yang pernah dilakukansebelumnya untuk topik tertentu.

Kunjungi http://www.opensolaris.org/os/discussionsuntuk mendapatkan daftar lengkap forum yang akandipilih untuk berlangganan.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

5

Page 20: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Situs-situs OpenSolaris

KomunitasHalaman komunitas merupakan tempat dimanapengunjung dengan minat tertentu yang sama terhadapproyek OpenSolaris bisa saling terhubung. Halamankomunitas merupakan gabungan dari kelompok peminatteknologi, dukungan, piranti, and kelompokpengguna:

Lembaga Akademik dan Penelitian:http://www.opensolaris.org/os/community/edu

DTrace: http://www.opensolaris.org/os/community/dtrace

ZFS:http://www.opensolaris.org/os/community/zfs

Jaringan:http://www.opensolaris.org/os/community/networking

Zona:http://www.opensolaris.org/os/community/zones

Dokumentasi:http://www.opensolaris.org/os/community/documentation

Penggerak Perangkat: http://www.opensolaris.org/os/community/device_drivers

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

6

Page 21: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Situs-situs OpenSolaris

Piranti:http://www.opensolaris.org/os/community/tools

Advokasi:http://www.opensolaris.org/os/community/advocacy

Keamanan:http://www.opensolaris.org/os/community/security

Kinerja:http://www.opensolaris.org/os/community/performance

Penyimpan Data:http://www.opensolaris.org/os/community/storage

Administrasi Sistem:http://www.opensolaris.org/os/community/sysadmin

Terdapat sekitas 30 komunitas yang berjalan secaraaktif di OpenSolaris. Kunjungihttp://www.opensolaris.org/os/communities untukinformasi lengkap.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

7

Page 22: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Situs-situs OpenSolaris

ProyekProyek-proyek yang ada di situshttp://www.opensolaris.org/ merupakan upayakerjasama yang menghasilkan obyek seperti perubahankode pemograman, dokumen, grafik atau produkgabungan berapa pengembang perangkat lunak. Proyekmemiliki repositori dan komisi yang menguji danmenyetujui kode pemograman. Proyek bisa berasaldari komunitas atau berdiri sendiri di luarkomunitas.

Proyek baru diajukan oleh para peminatnya denganmengajukan permintaan melalui fasilitas diskusi.Proyek yang diajukan dan diterima oleh setidaknyasatu peminat lain di dalam komunitas yangmensposorinya akan disediakan ruang untuk halamanproyek sehingga proyek dapat dimulai. Kunjungihttp://www.opensolaris.org/os/projects untukmelihat daftar proyek-proyek yang sedang berjalan.

Piranti Visualisasi Harmonik untuk DTrace :http://www.opensolaris.org/ os/project/dtrace-chime

Kode Google Summer:http://www.opensolaris.org/os/project/powerPC

Indiana:http://www.opensolaris.org/os/project/indiana

OpenGrok:http://www.opensolaris.org/ os/project/opengrok

Kontes Pemograman:http://www.opensolaris.org/os/project/contest

Starter Kit:http://www.opensolaris.org/ os/project/starterkit

Solaris iSCSI Target:http://www.opensolaris.org/ os/project/iscsitgt

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

8

Page 23: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Situs-situs OpenSolaris

Repositori Kode PemogramanRepositori kode pemograman yang terpusat danterdistribusi tersedia di situs opensolaris.org.Model manajemen kode pemograman terpusat inimenggunakan program manajemen yang disebutSubversion (SVN) source control. Sedangkanmanajemen repositori terdistribusi menggunakanprogram manajemen yang disebut kontrol kodepemograman Mercurial (hg).

Pembuatan repositori kode pemograman diopensolaris.org dilakukan oleh Pemimpin Proyek dihalaman proyek yang bersangkutan. Pengembang denganhak commit bisa mengakses repositori denganmenggunakan akun yang terdaftar di opensolaris.org.Hak commit sendiri diatur oleh Pemimpin Proyek.

Untuk mengakses repositori dengan hak commit selainmemiliki akun juga diperlukan kunci publik SecureShell (SSH). Akun bisa diperoleh setelah melakukanpendaftaran terlebih dahulu. Kunjungi halamankomunitas piranti dihttp://opensolaris.org/os/community/tools untukmendapat informasi terbaru tentang kontrol terhadapkode pemograman, download dan petunjuk-petunjuklainya.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

9

Page 24: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Situs-situs OpenSolaris

OpenGrokOpenGrokTM adalah mesin pencari kode pemograman danreferensi silang yang cepat dan praktis yangdigunakan oleh OpenSolaris. Kunjungihttp://cvs.opensolaris.org/sourceuntuk mencobanya.

OpenGrok adalah proyek yang pertama kali ada diopensolaris.org. Kunjungihttp://www.opensolaris.org/os/project/opengrokuntuk mengetahui perkembangan lanjutan proyek ini.

Coba gunakan perangkat lunak ini dan temukan begiturapinya kode pemograman tertulis, penuh dengandeskripsi seolah seperti membaca sebuah buku. Jikatertarik berpartisipasi mengembangkan proyekOpenSolaris, silakan mendownload kode pemogramanlengkapnya. Jika hanya sekedar ingin mengetahuicara kerja fitur tertentu Solaris, pirantialternatif lebih nyaman digunakan adalah penjelajahkode pemograman.

OpenGrok memahami berbagai format file program danversion control history seperti SCCS, RCS, and CVSsehingga memudahkan pemahaman terhadap prinsip-prinsip kode pemograman terbuka.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

10

Page 25: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Advokasi OpenSolaris

Keberadaan Komunitas Advokat bertujuan untukmembantu berbagai kalangan dari penjuru dunia untukikut berpartisipasi dalam Komunitas OpenSolaris.Komunitas ini terbuka bagi semua orang dari semuabahasa dan kebudayaan dan mereka dengan latarbelakang teknis ataupun tidak. Setiap orangmemiliki sesuatu untuk ikut berkontribusi.

Kunjungihttp://opensolaris.org/os/community/advocacy/

Di dalam komunitas Advokat bisa ditemui proyek-proyek dari kelompok pengguna yang berdiri sendiri,presentasi, berita, artikel, blog, halaman yangberisi informasi teknis & non-teknis, video danpodcast, seminar dan konferensi. Tersedia jugaberbagai proyek untuk keperluan promosi sepertiatribut komunitas, pernak-pernik, lencana, pin danlain-lain.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

2 M O D U L

Tujuan

11

Page 26: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Mengapa Menggunakan OpenSolaris?

Mengapa Menggunakan OpenSolaris?Bagian ini menjelaskan alasan-alasan praktis yangmenjadi pertimbangan pemilihan OpenSolaris sebagaiplatform pengembangan perangkat lunak.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

12

Page 27: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Mengapa Menggunakan OpenSolaris?

HargaPopularitas Sistem Operasi Solaris 10 meledak sejakketersediaannya di bulan Januari 2005. Hingga Juli2007, sudah terdaftar lebih dari 8.7 juta salinan,ini jauh lebih besar dibandingkan gabungan versi-versi Solaris sebelumnya. Kondisi ini makin terpicudengan diluncurkannya OpenSolaris pada bulan Juni2005. Lonjakan luar biasa jumlah pengguna Solarisini, membuat semakin banyak pengembang perangkatlunak (komersial atau kode pemograman terbuka)melirik Sistem Operasi Solaris sebagai sasaran yangberkelanjutan bagi perangkat lunak mereka.

Salah satu alasan Sistem Operasi Solaris mengalamipercepatan popularitas yang luar biasa adalahkarena harganya: $ 0 untuk setiap orang,pemanfaatan apa pun (komersial atau non-komersial),di semua platform (SPARC atau x86). Alasan lainadalah jaminan Sun (dan Sun melaksanakan jaminanini) untuk membuat kode pemograman OpenSolaristersedia bagi publik dibawah lisensiCommonDevelopment and Distribution License (CDDL).CDDL sendiri adalah sebuah pengaturan lisensi kodepemograman terbuka yang telah mendapat persetujuanOSI.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

13

Page 28: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Mengapa Menggunakan OpenSolaris?

Fitur-fitur Inti Yang InovatifSebenarnya, alasan terpenting bagi naik popularitasSolaris adalah kekayaan tak terbatas dari fitur-fitur yang ditawarkannya. Fitur-fitur tersebutadalah:

Zona Solaris – Menawarkan kemampuan untukmempartisi sebuah komputer menjadi beberapasistem komputasi virtual, yang masing-masingsaling terisolasi.

DTrace – Sebuah perangkat perunut (tracing) yangdinamis dan komprehensif untuk menginvestigasiperilaku system dan aman untuk digunakanlingkungan produksi

Tumpukan IP (IP stacks) Baru – Menyediakanpeningkatan kinerja yang luar biasa

ZFS – Sebuah pencapaian tertinggi bagi sistemfile 128 bit, dengan deteksi dan koreksikesalahan end-to-end, antar muka perintah-barisyang sederhana dan secara virtual kapasitaspenyimpan yang tidak terbatas.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

14

Page 29: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Mengapa Menggunakan OpenSolaris?

Kompatibilitas BalikSemua fitur-fitur baru ini di kembangkan di atasplatform yang telah lama dinantikan oleh parapengguna Sistem Operasi Solaris dengankarakteristik: stabilitas yang tangguh,skalabilitas yang besar, kinerja tinggi, danjaminan kompatibilitas balik. Kompatibilitas balikmerupakan hal penting terutama bagi pengembangperangkat lunak komersial karena menjagakontinuitas perangkat lunak memerlukan biayatinggi. Dengan jaminan kompatibilitas balik,pabrikan perangkat lunak mengetahui bahwa perangkatlunak (dengan menggunakan API yang dirilis) yangdibuat untuk Solaris ke-N akan berjalan mulus diSolaris ke-N+1 dan versi-versi berikutnya.

Berbeda dengan beberapa Sistem Operasi lain, dimanaperubahan-perubahan yang tidak kompatibel padakomponen sistem – misalnya, libraries – dibuattanpa mempertimbankan efek samping pada applikasi.Efek keseluruhan adalah kerusakan aplikasi yangmenyebabkan tinggi biaya untuk menjaga kontinuitasperangkat lunak dan rasa frustasi bagi pabrikan danpengguna.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

15

Page 30: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Mengapa Menggunakan OpenSolaris?

Netralitas Platform Perangkat KerasParagraf sebelumnya menjelaskan beberapa alasanmengapa kita seharusnya mengembangkan SistemOperasi Solaris, tetapi masih ada alasan-alasanlain untuk melakukan pengembangkan platformSolaris. Salah satunya adalah bahwa Solaris adalahSistem Operasi multi-platform, mendukung baikarsitektur SPARC dan x86 (sebuah port ke Power yangdimotori oleh sebuah komunitas masih berjalan).

Meskipun dulu beberapa tahun yang lalu munculkeraguan berkaitan Solaris untuk platform x86, padakenyataanya sekarang Sun telah memperkenalkanjajaran server dan workstation berbasis AMD yangmembuktikan kesungguhan Sun terhadap teknologi x86.

Dari sudut pandang para pengembang perangkat lunak,versi Solaris untuk platform SPARC dan x85 memilkihimpunan fitur dan API yang sama. Ini artinya parapengembang dapat lebih berkonsentrai dengan isu-isulain untuk memperluas pengembangan antar-platform,seperti CPU endianness.

Platform SPARC adalah big-endian dan x86 adalahlittle-endian sehingga sebuah aplikasi yangdikembangkan dan ditest diatas platform Solarismemiliki kemungkinan besar untuk terbebas masalahyang berhubungan endian. Solaris juga mendukungaplikasi 32 bit dan 64 bits di kedua platformtersebut, sehingga membantui menghilangkan bugsakibat asumsi-asumsi sekitar ukuran word.

Mungkin alasan yang paling tak terbantahkan untukmengembangkan perangkat lunak di Solaris adalahtersedianya piranti pengembangan perangkat lunakyang profesional.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

16

Page 31: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Mengapa Menggunakan OpenSolaris?

Piranti PengembanganSalah satu fitur terpenting sebuah Sistem Operasidari sudut pandang pengembang perangkat lunakadalah tersedianya piranti pengembang perangkatlunak yang beragam dan berkualitas.Pengkompilasi/Compiler dan pen-debug/debuggeradalah contoh yang paling lazim dari pirantiseperti ini, selain pengetest kode pemograman/codecheckers (untuk memastikan kode pemograman terbebasdari kesalahan yang tidak bisa ditemukan olehcompiler), pembangkit referensi-silang/cross-reference generators (untuk melihat fungsi manayang mereferesensi ke fungsi lain atau), danpenganalisa kinerja/performance analyzers.

Sun Studio telah menjadi produk plihan bagipengembang Solaris. Tersedia untuk diunduh secaragratis dari situs http://developers.sun.com,perangkat lunak Sun Studio adalah gabungan daripengkompilasi dan piranti lain yang berkualitasprofesional. Lengkapnya terdiri dari pengkompilasiC, C++, and FORTRAN; piranti penganalisa kodepemograman; sebuah antar muka lingkunganpengembangan terintegrasi (integrated developmentenvironment, IDE); dbx sebuah pen-debug di tingkatkode pemograman; dan program pengolah teks(editors).

Piranti lain yang tergabung dalam Sun Studio adalahcscope (penjelajah kode pemograman interaktif), ctrace(piranti untuk membangkitkan self-tracing versiondari sebuah program), cxref (program pembangkitreferensi-silang C), dmake (program bantu untukmengkonstruksi kode pemograman secara paralel danterdistribusi), and lint (pemeriksa program C).

Solaris dilengkapi dengan pengkompilasi GNU C , gcc,and pelengkap berupa pen-debug di tingkat kodepemograman, gdb. Solaris juga dilengkapi dengan pen-

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

17

Page 32: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Mengapa Menggunakan OpenSolaris?

debug modular yang sangat berguna, mdb. Namun, mdbbukan pen-debug di tingkat kode pemograman. Pirantiini sangat berguna untuk men-debug kode kernel,atau melakukan analisa gejala tertentu yangmengikuti sebuah peristiwa pada sebuah program yangbiasanya tidak tersedia pada level kode pemograman.Informasi lebih lengkap tentang mdb tersedia di bukuSolaris Modular Debugger Guide and SolarisPerformance and Tools yang ditulis oleh McDougall,Mauro dan Gregg.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

18

Page 33: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pernyataan Tanda Terima Kasih

Pernyatan Tanda Terima KasihAnggota-anggota Komunitas OpenSolaris berikut initelah mengevaluasi dan memberikan saran perbaikanuntuk dokumen ini:

Boyd Adamson

PradhapDevarajan

Alan Coopersmith

Brian Gupta

RainerHeilke

Eric Lowe

Ben Rockwood

Cindy Swearingen

Anggota-anggota Komunitas OpenSolaris berikut initelah menyumbangkan materi baru yang luar biasa:

Dong-HaiHan

Narayana Janga

Shivani Khosa

Rich Teer

Sunay Tripathi

Yifan Xu

Ucapan terima kasih juga kepada Steven Cogorno,David Comay, Teresa Giacomini, StephenHahn, PatrickFinch, and Sue Weber atas kerja kerasnya yangmemungkinkan lahirnya versi awal dokumen ini.

Untuk berpartisipasi melakukan evaluasi mendatangterhadap dokumen ini, lakukan instruksi-instruksiseperti terdapat di situs:

http://www.opensolaris.org/os/community/documentation/reviews

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

19

Page 34: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Mempersiapkan LingkunganKerja OpenSolaris

Tujuan dari modul ini adalah agar peserta memahamikebutuah sistem, informasi pendukung, dokumentasiyang tersedia ketika melakukan instalasi dankonfigurasi proyek OpenSolaris.

Solaris Express Developer Edition InstallationGuide: Laptop Installations. Sun Microsystems,Inc., 2007.

Sumber Bacaan untuk menjalankan Solaris OS dilaptop:http://www.sun.com/bigadmin/features/articles/laptop_resources.html

Komunitas Laptop OpenSolaris:http://opensolaris.org/os/community/laptop

OpenSolaris Starter Kit:http://opensolaris.org/os/project/starterkit

System Administration Guide: IP Services,SunMicrosystems, Inc., 2007

Komunitas Jaringan OpenSolaris:http://www.opensolaris.org/os/community/networking

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

3 M O D U L

Tujuan

20

Sumber BacaanLain

Page 35: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Administrasi ZFS dan halaman manual:http://opensolaris.org/os/community/zfs/docs

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

21

Page 36: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Konfigurasi Perangkat Keras dan Perangkat Lunak

Konfigurasi Perangkat Keras danPerangkat Lunak

Mendapatkan pengalaman praktis secara langsunguntuk mempelajari kode pemograman Sistem Operasidan akses langsung modul-modul kernel merupakan halyang tidak tergantikan. Bagaimana memenuhitantangan unik pengembangan kernel dan mendapatkanhak akses root ke sebuah sistem telah dibuat lebihmudah oleh piranti, forum dan dokumentasi yangdisediakan oleh proyek OpenSolaris.

Tip - Lakukan pendaftaran di Internet melalui situshttp://get.opensolaris.org, agar secara gratisdapat menerima OpenSolaris Starter Kit yang terdiridari materi-materi pelatihan, kode pemograman danpiranti untuk pengembangan.

Pertimbangkan fitur-fitur OpenSolaris berikut iniketika mempersiapkan perangkat keras dan perangkatlunak:

Tabel 3-1 Konfigurasi Pendukung Komponen Lab

Komponen Dukungan Dari Proyek OpenSolarisPerangkatKeras

OpenSolaris mendukung sistem denganjajaran prosesor berarstitektur SPARC danx86: UltraSPARC®, SPARC64, AMD64, Pentium,and Xeon EM64T.Daftar sistem yang didukung, bisadidapatkan pada Solaris OS HardwareCompatibility List di http://www.sun.com/bigadmin/hcl

File KodePemograman

Kunjungihttp://opensolaris.org/os/downloads untukinstruksi lengkap bagaiman mengkonstruksikode pemograman

InstalasiSistem

Distibusi Pre-built OpenSolaris hanyadapat digunakan di Solaris Express:

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

22

Page 37: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Konfigurasi Perangkat Keras dan Perangkat Lunak

Operasi Community Edition [DVD Version], Build 32atau lebih, Solaris Express: DeveloperEdition, Nexenta, Schillix, Martux andBelenix.Untuk kernel OpenSolaris kernel denganlingkungan pengguna GNU, tersedia dihttp://www.gnusolaris.org/gswiki/Download-form

Tabel 3-1 Konfigurasi Pendukung Komponen Lab(Lanjutan)

Komponen Dukungan Dari Proyek OpenSolarisBFUarchives

File on-bfu-DATE.PLATFORM.tar.bz2 tersedia jika ingin menginstalldari arsip pra-konstruksi.

Build tools File SUNWonbld-DATE.PLATFORM.tar.bz2 tersedia jika akanmengkonstruksi dari kode pemograman sumbernya.

Compilersand tools

Pengkompilasi dan piranti lain Sun Studio 11 tersedia untukdigunakan secara bebas oleh pengembang OpenSolaris. Kunjungihttp://www.opensolaris.org/os/community/tools/sun_studio_tools/untuk instruksi bagaimana mengunduh dan menginstall versiterbarunya. Untuk komunitas gcc, kunjungihttp://www.opensolaris.org/os/community/tools/gcc

KebutuhanMemori/Disk

Kebutuhan Memori: 256M minimum (mode teks instalasi),

1GB direkomendasikan

Kebutuhan Memory : 768M minimum untuk instalasi SolarisExpress Developer Edition

Kebutuhan ruang Disk: 350M bytes

LingkunganOS Virtual

Zona and Zona Bertanda-identitas di OpenSolaris menyediakanlingkungan Sistem Operasi yang virtual dan terlindungi dalamsebuah instan Solaris. Ini memungkinkan satu atau lebih prosesberjalan secara terisolasi dari aktifitas proses yang lain disystem.

Open Solaris mendukung XEN, sebuah pemonitor system komputasivirtual dari komunitas kode pemograman terbuka yangdikembangkan oleh tim XEN dari Laboratorium KomputerUniversitas Cambridge. Kunjungihttp://www.opensolaris.org/os/community/xen/ untuk mendapatkaninformasi lebih lanjut tentang proyek XEN.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

23

Page 38: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Konfigurasi Perangkat Keras dan Perangkat Lunak

OpenSolaris juga dapat diinstall dalam lingkungan VMWarekunjungi http://www.opensolaris.org/os/project/contentmendapat artikel terbaru bagaimana melakukannya.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

24

Page 39: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Konfigurasi Perangkat Keras dan Perangkat Lunak

Lihat di Modul 4 untuk informasi lebih lanjutbagaimana Zona and Zona Bertanda-identitasmemungkinkan pengembangan Solaris kernel atau usermode dan aplikasi Linux dapat dilakukan tanpamempengaruhi pengembang yang bekerja di zona yangterpisah.

Dengan berpartisipasi menggunakan proyekOpenSolaris akan memperbaiki kinerja keseluruhansistem dan jaringan dengan teknologi terbaru.Lingkungan lab menjadi lebih menguntungkan denganmenggunakan OpenSolaris karena sistem selalu beradadi lingkungan komputasi termutakhir dan luar biasa.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

25

Page 40: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Konfigurasi Perangkat Keras dan Perangkat Lunak

JaringanProyek OpenSolaris memenuhi tantangan masa depanteknologi jaringan dengan secara radikalmemperbaiki performa jaringan tanpa memerlukanperubahan-perubahan terhadap aplikasi yang sudahada.

Kenaikan kinerja aplikasi hingga 50% denganmelakukan perbaikan lapisan TCP/IP

Dukungan terhadap banyak teknologi jaringanmutakhir, seperti 10 Gigabit Ethernet, jaringannir-kabel dan hardware offloading

Mengakomodasi fitur jaringan seperti high-availability, streaming, and Voice over IP (VoIP)melalui dukungan extended routing dan protocol.

Dukungan terhadap spesifikasi IPv6 terbaru.

Informasi lebih lanjut tentang pengembanganteknologi jaringan di komunitas OpenSolaris dapatdilihat di:http://www.opensolaris.org/os/community/networking.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

26

Page 41: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Daemon Auto-Configuration Jaringan

Daemon Auto-Configuration JaringanProses boot pada rilis Solaris Express DeveloperEdition 5/07 menjalankan sebuah daemon baru,disebut nwamd. Daemon ini merupakan instanalternatif dari layanan SMF, svc:/network/physical, yangmemungkinkan pengkonfigurasian jaringan secaraotomatis dengan intervensi minimal.

Daemon nwamd memonitor port Ethernet dan secaraotomatis mengkonfigurasi kartu jaringan denganDHCP. Jika kabel Ethernet tidak terpasang kejaringan kabel, daemon nwamd melakukan pemindaianjaringan nirkabel dan mengirimkan permintaan untukterhubung dengan titik akses WiFi.

Tidak perlu lagi membuang banyak waktu untukmengkonfigurasi kartu jaringan Ethernet secaramanual. Konfigurasi otomatis juga sangatmempermudah administrasi karena pengkonfigurasian-ulang alamat-alamat jaringan bisa dilakukan denganintervensi minimal.

Untuk melihat status NWAM, ketikan perintah berikutdi jendela terminal.

# svcs nwamSTATE STIME FMRIonline 11:29:50 svc:/network/physical:nwam

Di halaman Network Auto-Magic Phase 0 pada situsOpenSolaris dan manual nwamd terdapat keteranganlebih rinci, termasuk bagaimana mematikan mematikannwamd. Untuk informasi lebih jauh dan link kehalaman manual nwamd(1M), kunjungihttp://www.opensolaris.org/os/project/nwam.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

27

Page 42: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan Umum Zone

Tinjauan Umum ZonaZona dapat dibayangkan seperti sebuah wadah dimanadidalamnya satu atau lebih aplikasi berjalan secaraterisolasi dari semua aplikasi yang ada di sistem.Semua perangkat lunak yang berjalan di OpenSolarisbisa berjalan, tanpa dimodifikasi, didalam zona.Karena zona tidak tidak mengubah OpenSolarisApplication Programming Interface (APIs) orApplication Binary Interface (ABI) maka aplikasitidak perlu dikompilasi ulang agar bisa berjalandidalam zona.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

28

Page 43: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Administrasi Zone

Administrasi ZonaAdministrasi zona terdiri dari perintah-perintahberikut:

zonecfg – Membuat zona, mengkonfigurasi zona(menambah sumber daya dan properti), menyimpankonfigurasi zona didalam per-zona file XML yangada di /etc/zones.

zoneadm – Melakukan langkah-langkah administratifuntuk zona seperti: menampilkan, menginstal,(re)boot dan halt.

zlogin – Memungkinkan pengguna log in kedalam zonauntuk melakukan tugas-tugas administrasi.

zonename – Menampilkan nama zona dimana userberada.

Berikut adalah properti-properti dengan lingkupglobal yang digunakan dengan didalam konfigurasizona:

zonepath – Lokasi direktori didalam zona globalyang menjadi direktori root dimana zona akandiinstall

autoboot – Menentukan apakah sebuah zona ikut bootatau tidak ketika zona global boot

pool – Menentukan pool sumber daya yang diberikanuntuk sebuah zona

Sumber Daya dapat digolongkan sebagai berikut:

fs – sistem file

Inherit-pkg-dir – Direktori-direktori didalam zonayang memiliki keterterkaitan dengan paket yangberasal dari zona global

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

29

Page 44: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Administrasi Zone

net – Perangkat jaringan

device – Perangkat-perangkat

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

30

Page 45: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Memulai Administrasi Zone

Memulai Administrasi ZonaPada latihan lab berikut diperkenalkan prosespembuatan zona.

Latihan berikut, menggunakan contoh-contoh yangrinci sehingga diharapkan mempercepat pemahamanproses pembuatan, instalasi dan boot zona.

Catatan – Prosedur berikut tidak dapat digunakanuntuk zona dengan atribut lx (BrandZ)

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

31

Ringkasan

Page 46: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Memulai Administrasi Zone

1.Gunakan perintah berikut ini untukmengkonfigurasikan sebuah zona baru:

Catatan – Contoh di bawah ini menggunakan tumpukanIP-berbagi, ini adalah standar untuk sebuah zona.

# zonecfg -z ApacheApache: No such zone configuredUse ’create’ to begin configuring a new zone.zonecfg:Apache> createzonecfg:Apache> set zonepath=/export/home/Apachezonecfg:Apache> add netzonecfg:Apache:net> set address=192.168.0.50zonecfg:Apache:net> set physical=bge0zonecfg:Apache:net> endzonecfg:Apache> verifyzonecfg:Apache> commitzonecfg:Apache> exit

2.Gunakan perintah berikut ini untuk menginstalldan boot zona yang telah terkonfigurasikan:# zoneadm -z Apache installPreparing to install zone <Apache>.Creating list of files to copy from the global zone.Copying <6029> files to the zone.Initializing zone product registry.Determining zone package initialization order.Preparing to initialize <1038> packages on the zone.Initialized <1038> packages on zone.Zone <Apache> is initialized.Installation of these packages generated warnings: ....The file</export/home/Apache/root/var/sadm/system/logs/install_log>contains a log of the zone installation.The necessary directories are created. The zone is ready forbooting.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

32

Membuat, Menginstal dan BootZona

Page 47: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Memulai Administrasi Zone

3.Lihat isi root direktori-nya:# ls /export/home/Apache/rootbin etc home mnt platform sbintmp var dev export lib optproc system usr

Paket-paket berikut tidak diinstall-ulang.

# /etc/mount/export/home/Apache/root/lib on /lib read only/export/home/Apache/root/platform on /platform read only/export/home/Apache/root/sbin on /sbin read only/export/home/Apache/root/usr on /usr read only/export/home/Apache/root/proc on procread/write/setuid/nodevices/zone=Apache

4.Boot zona-nya.# ifconfig -alo0:flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL>mtu 8232 index 1 inet 127.0.0.1 netmask ff000000

bge0: flags=1004803<UP,BROADCAST,MULTICAST,DHCP,IPv4> mtu 1500 index 2inet 192.168.0.4 netmask ffffff00 broadcast 192.168.0.255ether 0:c0:9f:61:88:c9

# zoneadm -z Apache boot

# ifconfig -alo0:flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL>mtu 8232 index 1 inet 127.0.0.1 netmask ff000000

lo0:1:flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL>mtu 8232 index 1 zone Apache inet 127.0.0.1

bge0: flags=1004803 inet 192.168.0.4 netmask ffffff00 broadcast192.168.0.255 ether 0:c0:9f:61:88:c9

bge0:1: flags=1000803mtu 1500 index 2 zone Apache inet192.168.0.50 netmask ffffff00 broadcast 192.168.0.255

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

33

Page 48: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Memulai Administrasi Zone

5.Buat konfigurasi zona dan login:# zlogin -C Apache[Connected to zone ’Apache’ pts/5]

# ifconfig -alo0:2: flags=2001000849 mtu 8232 index 1 inet 127.0.0.1netmask ff000000

bge0:2: flags=1000803 inet 192.168.0.50 netmask ffffff00broadcast 192.168.0.255

# ping -s 192.168.0.5064 bytes from 192.168.0.50: icmp_seq=0. time=0.146 ms

# exit[Connection to zone ’Apache’ pts/5 closed]

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

34

Page 49: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Virtualisasi Server Web dengan Zone

Virtualisasi Server Web dengan ZonaSetiap zona memiliki karakteristik tersendiri,contohnya, nama zona, alamat IP, nama komputer,naming services, akun root dan non-root. Sesuaistandarnya, Sistem Operasi berjalan didalam zonaglobal. Administrator dapat memvirtualisasikanlingkungan eksekusi aplikasi dengan mendifinisikansatu satu lebih zona non-global. Layanan-layananjaringan dapat dijalankan untuk membatasi kerusakanyang terjadi akibat kejadian serangan keamanan.

Karena zona diimplementasikan di dalam perangkatlunak, zona tidak dibatasi granularitasnyaberdasarkan batasan-batasan yang didefinisikan olehperangkat keras. Tetapi sebaliknya zona menawarkangranularitas sub-CPU.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

35

Page 50: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pembuatan Zone Non-Global

Pembuatan Zona Non-GlobalLatihan lab berikut ini mendemostrasikan bagaimanamembuat dua kelompok pengguna server web yangberbeda dalam satu sistem komputer.

Akses secara bersamaan ke kedua server web tersebutdikonfigurasikan sedemikan rupa sehingga masing-masing server web dan sistem akan terlindungimeskipun salah satunya telah mendapat serangankeamanan.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

36

Ringkasan

Page 51: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pembuatan Zone Non-Global

1.Membuat zona non-global Apache1:# zonecfg -z Apache1 infozonepath: /export/home/Apache1autoboot: falsepool:inherit-pkg-dir: dir: /libinherit-pkg-dir: dir: /platforminherit-pkg-dir: dir: /sbininherit-pkg-dir: dir: /usrnet: address: 192.168.0.100/24physical: bge0

2.Membuat zona non-global Apache2:# zonecfg -z Apache2 infozonepath: /export/home/Apache2autoboot: falsepool:inherit-pkg-dir: dir: /libinherit-pkg-dir: dir: /platforminherit-pkg-dir: dir: /sbininherit-pkg-dir: dir: /usrnet: address: 192.168.0.200/24physical: bge0

3.Log in ke Apache1 dan menginstall aplikasinya:# zlogin Apache1

# zonename Apache1

# ls /Apachedir apache_1.3.9 apache_1.3.9-i86pc-sun-solaris2.270.tar

# cd /Apachedir/apache_1.3.9; ./install-bindist.sh /local

Sekarang server Apache HTTP 1.3.9 sudahterinstall.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

37

Membuat Dua Zona Non-Global

Page 52: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pembuatan Zone Non-Global

4.Log in ke Apache2 dan menginstall aplikasinya:# zlogin Apache2

# zonename Apache2

# ls /Apachedir httpd-2.0.50 httpd-2.0.50-i386-pc-solaris2.8.tar

# cd /Apachedir/httpd-2.0.50; ./install-bindist.sh /local

You now have successfully installed the Apache 2.0.50 HTTPserver.

5.Jalankan aplikasi Apache1:# zonename Apache1

# hostname Apache1zone

# /local/bin/apachectl start /local/bin/apachectl start: httpd started

6.Jalankan aplikasi Apache2:# zonename Apache2

# hostname Apache2zone

# /local/bin/apachectl start /local/bin/apachectl start: httpd started

7.Didalam zona global , edit /etc/hosts file:# cat /etc/hosts## Internet host table#127.0.0.1 localhost192.168.0.1 loghost192.168.0.100 Apache1zone192.168.0.200 Apache2zone

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

38

Page 53: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pembuatan Zone Non-Global

8.Buka penjelajah web dan and kunjungi URL berikut:http://apache1zone/manual/index.html

Server web Apache1 aktif dan jalan.

9.Buka penjelajah web dan and kunjungi URL berikut:http://apache2zone/manual/

Server web Apache2 aktif dan jalan.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

39

Page 54: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pembuatan Zone Non-Global

Pengguna melihat masing-masing zona sebagai sistemyang berbeda. Masing-masing server web memilikiname services masing-masing:

File /etc/nsswitch.conf

File /etc/resolv.conf

Serangan jahat terhadap server web dibatasi hanyaterjadi didalam zona. Konflik port juga tidakpernah terjadi!

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

40

Diskusi

Page 55: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pembuatan Pool Penyimpan Data dan Sistem File ZFS

Pembuatan Pool Penyimpan Data danSistem File ZFS

Masing-masing pool penyimpan data ZFS terdiri darisatu atau lebih perangkat virtual, yangmenggambarkan susunan fisik penyimpan data dankarakteristik penanganan kegagalannya.

Dalam modul ini, pembahasan dimulai denganmempelajari konfigurasi pool penyimpan data ter-mirror. Kemudian, akan diperlihatkan bagaimanamembuat konfigurasi sebuah pool RAID-Z.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

41

Page 56: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Storage Pool ZFS Mirrored

Membuat Pool Penyimpan Data ZFS Ter-mirror

Tujuan latihan lab ini adalah untuk membuat danmenampilkan pool penyimpan data ter-mirror denganperintah zpool.

Untuk mendapatkan informasi, bagaimana memilihantara pool penyimpan data ZFS dengan konfigurasiter-mirror atau RAID-Z yang sesuai denganlingkungan komputasi tertentu, kunjungi:

http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide

ZFS adalah mudah, mulailah mencobanya!

Sekarang waktunya membuat pool untuk pertama kali.

.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

42

Ringkasan

Page 57: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Storage Pool ZFS Mirrored

1.Buka jendela terminal 2.Buatlah sebuah pool penyimpan data ter-mirror

bernama tank. Kemudian tampilkan informasi poolpenyimpan data tersebut:# zpool create tank mirror c1t1d0 c2t2d0

# zpool status tank pool: tank state: ONLINE scrub: none requested config:

NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t2d0 ONLINE 0 0 0

errors: No known data errors

Kapasitas disk c1t1d0 dan c2t2d0 masing-masingadalah 36 Gbytes each. Karena kedua disk tersebutdi-mirror, maka kapasitas total poolmerefleksikan kurang lebih ukuran salah satudisknya. Metadata untuk pool menghabiskan ruangdisk dengan jumlah yang kecil.

Sebagai contoh:

# zpool listNAME SIZE USED AVAIL CAP HEALTH ALTROOTtank 33.8G 89K 33.7G 0% ONLINE –

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

43

Membuat Pool Penyimpan Data Ter-mirror

Page 58: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Sistem File ZFS Sebagai Direktori Kerja Pengguna

Membuat Sistem File ZFS SebagaiDirektori Kerja Pengguna

Tujuan dari latihan lab ini adalah untukmempelajari bagaimana membuat sebuah sistem fileZFS sebagai beberapa direktori kerja (homedirectory) pengguna.

Dengan menggunakan fitur sistem file ZFS, yangtersedia di proyek OpenSolaris, memungkinkandilakukannya penyederhanaan proses pengembangankernel dengan memanfaatkan fitur snapshots danrollback.

Didalam lab ini, digunakan perintah zfs untukmembuat sebuah sistem file ZFS dan menentukandirektori aksesnya (mount point).

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

44

Ringkasan

Page 59: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Sistem File ZFS Sebagai Direktori Kerja Pengguna

1.Tampilkan file sistem standar yang telah dibuatsecara otomatis ketika pool penyimpan datadibuat.# zfs listNAME USED AVAIL REFER MOUNTPOINTtank 86K 33.2G 24.5K /tank

2.Buat sistem file tank/home:# zfs create tank/home

3.Kemudian, ubah direktori akses sistem filetank/home seperti berikut ini:# zfs set mountpoint=/export/home tank/home

4.Kemudian, buat sistem file – sistem file tank/homeuntuk beberapa pengguna:# zfs create tank/home/developer1# zfs create tank/home/developer2# zfs create tank/home/developer3# zfs create tank/home/developer4

Properti mountpoint akan digunakan secaraberkelanjutan untuk menentukan awalan namadirektori (pathname prefix). Sehingga direktoriakses tank/home/developer1 secara otomatis akanmenjadi /export/home/developer1 karena direktori aksestank/home telah diubah menjadi /export/home.

5.Periksa apakah sistem file ZFS telah dibuat:# zfs listNAME USED AVAIL REFER MOUNTPOINTtank 246K 33.2G 26.5K /tanktank/home 128K 33.2G 29.5K /export/hometank/home/developer1 24.5K 33.2G 24.5K /export/home/developer1tank/home/developer2 24.5K 33.2G 24.5K /export/home/developer2tank/home/developer3 24.5K 33.2G 24.5K /export/home/developer3tank/home/developer4 24.5K 33.2G 24.5K /export/home/developer4

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

45

Membuat Sistem File ZFS SebagaiDirektori Kerja Pengguna

Page 60: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Sistem File ZFS Sebagai Direktori Kerja Pengguna

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

46

Page 61: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Sistem File ZFS Sebagai Direktori Kerja Pengguna

Lakukan snapshot secara rekursif untuk sistem filetank/home. Kemudian, tampilkan informasi snapshottersebut:

# zfs snapshot -r tank/home@today# zfs listNAME USED AVAIL REFER MOUNTPOINTtank 252K 33.2G 26.5K /tanktank/home 128K 33.2G 29.5K /tank/home tank/home@today 0 - 29.5K -tank/home/developer1 24.5K 33.2G 24.5K /tank/home/developer1tank/home/developer1@today 0 - 24.5K -tank/home/developer2 24.5K 33.2G 24.5K /tank/home/developer2tank/home/developer2@today 0 - 24.5K -tank/home/developer3 24.5K 33.2G 24.5K /tank/home/developer3tank/home/developer3@today 0 - 24.5K -tank/home/developer4 24.5K 33.2G 24.5K /tank/home/developer4tank/home/developer4@today 0 - 24.5K -

Untuk informasi lebih lanjut, lihat zfs.1m.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

47

Page 62: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Konfigurasi RAID-Z

Membuat Konfigurasi RAID-Z Tujuan dari latihan lab ini adalah sebagaipengenalan terhadap konfigurasi RAID-Z.

Konfigurasi RAID-Z dibuat sebagai konfigurasialternatif terhadap konfigurasi pool penyimpan datater-mirror untuk kebutuhan memaksimalkan ruangdisk.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

48

Ringkasan

Page 63: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Konfigurasi RAID-Z

1.Buka jendela terminal.2.Buat sebuah pool dengan sebuah perangkat tunggal

RAID-Z yang terdiri dari 5 disk. Kemudian,perlihatkan informasi tentang pool penyimpan datatersebut.# zpool create tank raidz c1t1d0 c2t2d0 c3t3d0 c4t4d0 c5t5d0

# zpool status tankpool: tankstate: ONLINEscrub: none requestedconfig:

NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 raidz1 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t2d0 ONLINE 0 0 0 c3t3d0 ONLINE 0 0 0 c4t4d0 ONLINE 0 0 0 c5t5d0 ONLINE 0 0 0

errors: No known data errors

Disk bisa diakses dengan nama pendek atau namalengkapnya. Contohnya, /dev/dsk/c4t4d0 adalah identikdengan c4t4d0.

Dimungkinkan juga untuk menggunakan partisi disksebagai pool penyimpan data ter-mirror dan RAID-Z,tapi konfigurasi seperti ini tidak direkomendasikanuntuk lingkungan produksi. Untuk informasi lebihlanjut tentang penggunaan ZFS di lingkunganproduksi, kunjungi:http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

49

Membuat Konfigrurasi RAID-Z

Page 64: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Konsolidasi Area Pengguna

Tujuan modul ini adalah untuk memperkenalkankonsolidasi area pengguna (userland consolidations)dari OpenSolaris. Secara umum, konsolidasi areapengguna dapat dianggap sebagai kumpulan perangkatlunak yang berada diluar kernel dan sebagaikomponen dimana denganya pengguna berinteraksi.

Masing-masing konsolidasi mendistribusikan file-file kode pemogramannya ke situs opensolaris.org orsentra download Sun. Untuk mengakses masing-masingkonsolidasi, kunjung URL berikut:http://opensolaris.org/os/downloads/.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

4 M O D U L

Tujuan

50

Page 65: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Konsolidasi Area Pengguna dan Deskripsinya

Konsolisidasi Area Pengguna danDeskripsinya

Server Applikasi Server Aplikasi Glassfish

Piranti PengembanganProduk (DevPro)

Librari matematika,library media, librarimicrotasking, librariSCCS, make, dan C++runtime.

Dokumentasi (Docs) Dokumentasi teknispengembangan danadministrasi.

Dukungan Globalisasi(G11N)

DukunganInternationalisasi andlokalisasi.

Dukungan Instalasi(Install)

Dukungan instalasi andpiranti pembuat paket.

Solusi JavaDesktop (JDS). Perangkat lunak desktopkorporat yang aman dankomprehensif.

Java Platform, StandardEdition (Java SE)

DistribusiJavaDevelopment Kit (JDK)and Java RuntimeEnvironment (JRE).

Halaman Manual Kode pemograman untukHalaman Manual ReferensiSunOS.

Message Queue. Sun Java SystemMessageQueue

Penyimpan Data dalamJaringan (NWS)

Dukungan perangkatpenyimpan data dalam

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

51

Page 66: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Konsolidasi Area Pengguna dan Deskripsinya

jaringan.

SFW (Solaris FreeWare) Perangkat lunak dengankode pemograman terbukayang tersedia di Solaris/OpenSolaris.

Dukungan Grafik SPARC Konsolidasi grafik SPARCmemiliki file-file bineruntuk penggeraknya.

Test Piranti dan kumpulanperangkat lunak pengujianOpenSolaris.

X Window System (X11) Perangkat lunak X11

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

52

Page 67: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Fitur Inti Sistem OperasiSolaris

Tujuan dari modul ini adalah untuk memberikangambaran fitur utama dari Solaris dan bagaimanafitur-fitur tersebut secarna fundamental telahmengubah komputasi Sistem Operasi

Proses Pengembangna OpenSolaris;

http://www.opensolaris.org/os/community/onnv/os_dev_process/

Standarisasi C Style dan Penulisan Kode untukSunOS;http://www.opensolaris.org/os/community/documentation/getting_started_docs/

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

5 M O D U L

Tujuan

53

Sumber BacaanLain

Page 68: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Proses Pengembangan dan Metode Penulisan Kode

Proses Pengembangan dan MetodePenulisan Kode

Langkah-langkah proses pengembangan dan metodepenulisan kode (coding style), yang digunakan olehkonsolidasi OS/Net (ON), dibuat untukmendistribusikan komponen utama Sistem Operasi dankomponen Jaringan.

Komponen Operating System and Networking terdiridari kode pemograman kernel untuk semua platform(untuk semua arsitektur), sekumpulan kodepemograman penggerak perangkat, sistem file,librari utama dan perintah dasar yang biasaterdapat di sistem Solaris.

Proses pengembangan proyek OpenSolaris mematuhilangkah-langkah umum berikut:

1.Ide

Pertama, seseorang yang memiliki sebuah ide untukperbaikan /penambahan atau memilikiketidaknyamanan akibat adanya cacat. Lakukanpencarian informasi terlebih dahulu untukkemungkinan keberdaan bug tersebut ataumengajukan sebagai kasus bug baru atau memintarequest for enhancement (RFE) dengan menggunakanfasilitas yang ada di halamanhttp://bugs.opensolaris.org/. Berikutnya,mengumumkan hal tersebut kepada pengembang-pengembang lain melalui E-mail list. Penyebaranpengumuman ini memiliki keuntungan-keuntungansebagai berikut:

Memicu dengan segera adanya diskusi untukpengubahan atau perbaikan

Menentukan kompleksitas dari pengubahan-pengubahan yang diajukan

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

54

Page 69: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Proses Pengembangan dan Metode Penulisan Kode

Memperkirakan ketertarikan komunitas

Mengidentikasikan calon anggota tim yangpotensial

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

55

Page 70: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Proses Pengembangan dan Metode Penulisan Kode

2.Desain

Fase desain menentukan apakah diperlukan atautidak adanya tinjauan desain secara formal. Jikadiperlukan tinjauan desain secara formal, makalengkapi langkah-langkah berikut ini:

Mengidentifikasi peninjau (reviewers) bagidesain dan arsitektur yang akan diajukan

Membuat dokumen desain

Membuat rencana pengujian

Melakukan tinjauan desain dan memintapersetujuan dengan benar

3.Implementasi

Fase implementasi terdiri dari hal-hal berikut:

Menuliskan kode yang akan menjadi solusi sesuaidengan ketentuan dan standar. Unduh Standar CStyle and Coding untuk SunOS disini:http://www.opensolaris.org/os/community/documentation/getting_started_docs/.

Membuat kumpulan pengujian

Melewati dan lulus berbagai unit and pra-integrasi pengujian

Menuliskan atau memperbaharui dokumentasipengguna, jika diperlukan

Mengindentifikasi peninjau kode pemogramandalam rangka persiapan untuk integrasi

4.Integrasi

Integrasi terjadi setelah semua peninjau telahmenyelesaiakan proses penijauan dan izin untukmelakukan integrasi telah diberikan.

Fase integrasi diperlukan untuk memastikan bahwa

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

56

Page 71: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Proses Pengembangan dan Metode Penulisan Kode

semua prosedur telah dipenuhi; memiliki fakta yanglengkap yang artinya telah ditinjau kodepemograman-nya, dokumentasi dan kelengkapannya.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

57

Page 72: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Proses Pengembangan dan Metode Penulisan Kode

Dokumen proses resmi untuk OpenSolaris menjelaskanlangkah-langkah diatas lebih rinici, disertaidiagram alir yang mengilustrasikan setiap fase-fasepengembangan. Dokumen tersebut juga menjelaskansecara rinci prinsip-prinsip desain dan nilai-nilaiutama yang diterapkan terhadap pengembangan kodepemograman untuk proyek OpenSolaris:

Kehandalan – OpenSolaris harus melakukanfungsinya secara benar, menyediakan hasil kerjayang akurat tanpa kehilangan data atauterkorupsi.

Ketersediaan – Layanan-layanan harus didisaindengan kemampuan distart-ulang jika terjadikegagalan aplikasi dan OpenSolaris sendiri harusberkemampuan memulihkan diri dari kegagalanperangkat keras yang tidak fatal

Kemampuan Servis – Kemampuan untuk mendiagnosabaik masalah-masalah yang fatal dan transien danjika memungkinkan, mengotomasasi diagnosanya.

Keamanan – Keamanan OpenSolaris harus didisainsebagai bagian dari Sistem Operasi denganmenyediakan mekanisme agar dapat melakukan auditterhadap perubahan-perubahan yang dilakukan disistem dan siapa yang melakukannya.

Kinerja – Kinerja OpenSolaris harus yang teratasdibandingkan Sistem Operasi lain yang berjalan dilingkungan yang sama.

Kemudahan Manajemen – Manejemen komponen individuperangkat keras atau perangkat lunak yangkonsisten dan cara yang mudah.

Kompatibilitas – Sub-sistem dan antar-muka baruharus bisa diperluas dan dibuatkan versiterbarunya agar memungkinkan perbaikan atauperubahan di masa mendatang tanpa mengkuatirkankompatibilitas.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

58

Page 73: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Proses Pengembangan dan Metode Penulisan Kode

Kemudahan Perawatan – OpenSolaris harusberarsitektur sedemikian rupa sehingga subrutin-subrutin umum dapat dikombinasikan kedalamlibrari atau modul kernel yang kemudian dapatdigunakan sebanyak-banyaknya pengguna.

Netralitas Platform –OpenSolaris harus tetapnetral terhadap semua platform perangkat kerasdan abstraksi level bawah harus selalu didisaindengan pertimbangan sebagai Sistem Operasi untukbanyak platform dan platform masa depan.

Kunjungihttp://www.opensolaris.org/os/community/onnv/os_dev_process/ untuk informasi lebih detail tentangbagaimana proses yang digunakan untuk pengembangansecara kolektif kode pemograman OpenSolaris.

Seperti proyek-proyek lainnya, Open Solarismengatur secara ketat metode penulisan kode untukkode pemograman yang didistribusikan, darimana punsumbernya. Hal ini dijelaskan secara rinci di situshttp://opensolaris.org/os/community/onnv/.

Ada 2 piranti untuk pengecekan elemen-elemen darimetode penulisan kode yang tersedia sebagai bagiandari distribusi OpenSolaris. Piranti tersebutadalah cstyle(1) untuk melakukan verifikasi kepatuhansebuah kode pemograman terhadap pedoman metodepenulisan kode umum, dan hdrchk(1) untuk pengecekanmetode penulisan header C dan C++.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

59

Page 74: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Tinjauan Setelah mengenal lingkungan pengembangan, tahap-tahap pengembangan dan prinsip-prinsip yangditerapkan oleh pengembang OpenSolaris, berikutnyadibahas lebih dalam fitur-fitur Sistem OperasiOpenSolaris untuk membuktikan keunggulannya darisisi kinerja, keamanan, kemampuan servis dankemudahan manajemen:

Kinerja

FireEngine

Nemo

Crossbow Keamanan

Least Privilege

Packet Filtering

Zones

Branded Zones (BrandZ) Kemampuan Servis

Predictive Self-Healing

Dynamic Tracing Facility (DTrace)

ModularDebugger (MDB)

Kemudahan Manajemen

ServicesManagement Facility (SMF)

ZFS

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

60

Page 75: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

FireEngineFitur "FireEngine" yang ada di Solaris 10 adalahsebuah pendekatan yang menggabungkan semua lapisanprotokol TCP/IP kedalam satu modul STREAMS yangsecara penuh multithread. Didalam module yangtergabung ini, dibandingkan metode penguncian per-struktur data, sebuah mekanisme sinkronisasi per-CPU yang disebut “perimeter vertikal” (verticalperimeter) digunakan.

Mekanisme perimeter vertikal diimplementasikandengan menggunakan abstraksi antrian secara serialyang disebut "squeue." Masing-masing squeuedilekatkan ke sebuah CPU, dan masing-masing koneksisecara bergantian dilekatkan ke sebuah squeue yangmenyediakan metode sinkronisasi dan mutualexclusion yang diperlukan oleh struktur data per-koneksi.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

61

Page 76: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Sinkronisasi Karena lapisan TCP/IP secara penuh adalahmultithread (dimana hanya serialiasasi per-CPU yangdilakukan oleh sebuah perimeter vertikal), metodeini menggunakan skema berbasiskan-referensi untukmemastikan bahwa instan koneksi selalu tersediaketika diperlukan. Untuk koneksi TCP yang terjadi,tiga referensi diberikan kepadanya.

Masing-masing lapisan protokol memiliki sebuahreferensi untuk setiap instan koneksi (satu untuklapisan TCP dan satu untuk lapisan IP) danclassifier sendiri memiliki satu referensi karenaclassifier berfungsi mewakili setiap koneksi yangtelah dibuat. Setiap kali sebuah paket datang untukkoneksi tertentu dan classifier mencari instankoneksinya, sebuah referensi tambahan ditempatkan,yang kemudian referensi tersebut dibuang ketikalapisan protokol selesai memproses paket tersebut.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

62

Page 77: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

TCP, IP, dan UDPSolaris 10 OS menyediakan sudut pandang yang samaterhadap TCP seperti terdapat pada versi-versisebelumnya – yaitu TCP muncul sebagai sebuahperangkat terduplikasi (clone device) meskipunsebenarnya TCP adalah sebuah gabungan (composite),dimana kode TCP and IP dileburkan kedalam satumodul D_MP STREAMS.

Bagian operasional TCP dilindungi secara penuh olehperimeter vertical yang dimasukan melalui primitifsqueue. FireEngine mengubah antar-muka antara TCPdan IP dari antar-muka yang ada sekarang yaitupenerusan pesan berbasiskan-STREAMS (STREAMS-basedmessage passing) menjadi sebuah antar-mukaberbasiskan-panggilan fungsional (functional call-based), baik untuk pengiriman informasi kontrol dandata.

Terdapat juga modul UDP yang secara penuhmultithread, yang berjalan dibawah domainperlindungan yang sama seperti IP. Meskipun UDP andIP berjalan didalam domain perlindungan yang sama,keduanya tetap merupakan modul-modul STREAMS yangterpisah. Sehingga, penempatan STREAMS secaravertikal (STREAMS plumbing) tetap tidak berubah dansebuah instan modul UDP selalu didorong diatasmodul IP. Platform Solaris 10 menyediakan dua modepenempatan secara vertikal (plumb modes) sebagaiberikut:

Normal – IP dibuka terlebih dahulu kemudian UDPdidorong secara langsung diatasnya. Ini adalahaksi standar yang terjadi ketika sebuah soket UDPatau perangkat dibuka.

SNMP – UDP didorong diatas modul selain IP.Ketika ini terjadi, hanya semantik SNMP yang akandidukung.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

63

Page 78: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

GLDv3Solaris 10 memperkenalkan sebuah kerangka kerjabaru untuk program penggerak perangkat (new devicedriver framework) disebut GLDv3 disertai denganlapisan fungsional baru. Sebagian besar programpenggerak perangkat utama sudah menggunakan kestruktur ini, dan semua program penggerak perangkatmasa depan dan perangkat jaringan 10 Gb akanberdasarkan kerangka ini. Kerangka kerja ini jugamenyediakan sebuah lapisan DLPI berbasiskan-STREAMSuntuk kompatibilitas balik, sehingga modul-modulekstenal dan modul non-IP dapat terus bekerja.

Arsitektur GLDv3 mem-virtulisasikan lapisan keduadari lapisan protokol jaringan. Korespondesi satu-lawan-satu antara antar-muka jaringan dan lapisanfungsional perangkat diatasnya tidak diperlukanlagi.

Kunjungi Proyek Nemo di situs opensolaris.org untukinformasi lebih lanjut yang berkaitan dengankerangka kerja ini , modul layanan MAC, modul Data-Link Services.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

64

Page 79: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

VirtualisasiProyek Crossbow merupakan sebuah proyek yangbertujuan untuk membuat lapisan protokol virtualdari semua layanan jaringan (HTTP, HTTPS, FTP, NFS,dsb), protokol utama (TCP, UDP, SCTP, dsb.), atauTeknologi Kontainer Solaris.

Lapisan protokol virtual ini dipisahkan berdasarkanklasifikasi perangkat keras artinya trafik untuksatu lapisan protokol tertentu tidak akanmempengaruhi lapisan protokol virtual yang lain.Masing-masing lapisan protokol virtual ini dapatdiberikan prioritas dan lebarpita yang berbedameskipun hanya menggunakan satu kartu Ethernettanpa menimbulkan penurunan kinerja terhadap sistematau layanan/kontainer.

Aristektur ini secara dinamis mengatur prioritasdan alokasi lebar-pita, selain itu juga menyediakanpertahanan yang lebih baik terhadap serangandenial-of-service yang ditujukan kepada layananatau kontainer tertentu; yaitu dengan pengisolasiandampak serangan hanya pada layanan atau kontainertersebut.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

65

Page 80: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Least Privilege (Hak IstimewaTerbatas)

Dari sejak dulu, UNIX memiliki model hak istimewadidalam sistem yang bersifat “berikan semuanya atautidak sama sekali” (all-or-nothing) yang memaksakanpembatasan-pembatasan berikut:

Hak istimewa root tidak dapat dibatasi

Pengguna non-root tidak bisa melakukan kegiatanadministratif terhadap sistem yang memerlukan hakistimewa karena tidak cara untuk membagi hakistimewa ke pengguna non-root

Aplikasi yang sebenarnya hanya memerlukan sedikitkegiatan dengan hak istimewa harus dijalankansebagai root

Sangat sedikit hal yang bisa dipercaya denganhak-hak istimewa root dan secara virtual tidak adapengguna non-root yang begitu sangat dipercaya.

Di dalam Solaris OS telah dikembangkan fine-grainedprivileges. Fine-grained privileges memungkinkanaplikasi dan proses login users untuk berjalanhanya dengan hak-hak istimewa yang mereka butuhkan.Sebagai ilustrasi, hak istimewa terbatasmemungkinkan mahasiswa untuk diberikan hak-hakistimewa terbatas yang mereka butuhkan untukmenyelesaikan kuliah mereka, berpartisipasi dalamriset dan melakukan perawatan sebagian dariinfrastruktur kampus atau departemen.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

66

Page 81: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Filtrasi PaketSolaris IP Filter berfungsi menyediakan statefulpacket filtering and network address translation(NAT). Solaris IP Filter berasal dari perangkatlunak kode pemograman terbuka IP Filter.

IP Filter dapat menyaring paket berdasarkan alamatIP, port, protokol, atau antarmuka jaringanberdasarkan kaidah-kaidah filter tertentu.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

67

Page 82: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Filter IPPacket Filtering Hooks (PFHooks) API telahdiperkenalkan sejak Solaris 10 Update 4, untukmenggantikan implementasi berbasiskan-STREAMS dariIP Filter. Dengan menggunakan kerangka kerjaPFHooks, kinerja perangkat lunak firewall sepertiIP Filter secara luar biasa mengalami peningkatan.

PFhooks juga menyediakan kemampuan untuk mencegattrafik loopback dan inter-zona. Perangkat lunakfirewall pihak ketiga dikembangkan dan diregistrasidengan PFHooks API menggunakan thenet_register_hook(info, event, hook); hook.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

68

Page 83: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Mengaktifkan Filtrasi PaketSederhanaTujuan latihan ini untuk mempelajari filtrasipaket. Solaris IP Filter telah terinstall didalamSistem Operasi Solaris, namun, sesuai standarnyafiltrasi paket tidak diaktifkan. IP Filter dapatmem-filter berdasarkan alamat IP, port, protokol,atau antar muka jaringan berdasarkan kaidah-kaidahfilter tertentu. Berikut ini adalah sebuah contohkaidah filter:

block in on ce0 proto tcp from 192.168.0.0/16 to any port = 23

Untuk menggunakan Solaris IP Filter, caranyasederhana yaitu dengan memasukan kaidah filterkedalam file /etc/ipf/ipf.conf. Kemudian, aktifkan danstart-ulang layanan svc:network/ipfilter denganperintah svcadm.

Catatan – Perintah ipf juga dapat digunakan untukmembuat kaidah-kaidah IPFilter.

Solaris IP Filter dapat melakukan jugapengkonversian alamat jaringan (NAT, NetworkAddress Translation) untuk sebuah alamat IPpengirim atau sebuah alamat IP tujuan berdasarkankaidah NAT. Berikut adalah sebuah contoh kaidahNAT:

map ce0 192.168.1.0/24 -> 10.1.0.0/16

Agar dapat melakukan pengkonversian alamatjaringan, simpan kaidah-kaidah NAT kedalam file/etc/ipf/ipnat.conf. Kemudian aktifkan dan start-ulanglayanan svc:/network/ipfilter dengan perintah svcadm.

Catatan – Perintah ipnat juga dapat digunakan untukmembuat kaidah-kaidah NAT.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

69

Page 84: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Beberapa Contoh Kaidah FiltrasiPaketPada bagian ini diberikan beberapa contoh kaidahpembentukan filter. Mengaktifkan kaidah filteradalah dengan menambahkanya kedalam file/etc/ipf/ipf.conf. Kemudian, aktifkan Solaris IP Filterand reboot komputer seperti dijelaskan secaradetail pada latihan sebelumnya.

Me-log semua paket masuk di le0 dengan opsi IPaktif.

log in on le0 from any to any with ipopts

Memblokir semua paket masuk di le0 yang terfragmentdan terlalu pendek untuk dilakukan perbandingantertentu. Ini sebenarnya hanya bisa diterapkanuntuk paket TCP yang bisa mengalami kehilanganflag/port (tergantung kondisi fragment yangterlihat).

block in log quick on le0 from any to any with short frag

Me-log semua paket masuk TCP hanya jika bendera SYNaktif.

Catatan – Jika paket masuk TCP memiliki bendera SYNyang aktif dan memiliki opsi IP yang aktif makakaidah ini menyebabkan paket di-log sebanyak duakali.

log in on le0 proto tcp from any to any flags S/SA

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

70

Page 85: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Memblokir dan me-log semua paket masuk ICMPunreachable:

block in log on le0 proto icmp from any to any icmp-type unreach

Memblokir dan me-log semua paket masuk UDP di le0yang menuju ke port 2049 (portnya NFS):

block in log on le0 proto udp from any to any port = 2049

Segera membolehkan semua paket ke/dari sebuahpasangan komputer tertentu:

pass in quick from any to 10.1.3.2/32:pass in quick from any to 10.1.0.13/32pass in quick from 10.1.3.2/32 to anypass in quick from 10.1.0.13/32 to any

Memblokir (dan berhenti mencari kaidah lain yangcocok) semua paket dengan opsi IP aktif:

block in quick on le0 from any to any with ipopts

Meneruskan semua paket yang lewat:

pass in from any to any

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

71

Page 86: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Memblokir semua paket masuk UDP yang ditujukan kesubnet tertentu:

block in on le0 proto udp from any to 10.1.3.0/24block in on le0 proto udp from any to 10.1.1.0/24block in on le0 proto udp from any to 10.1.2.0/24

Memblokir semua paket masuk TCP jika hanya benderaSYN aktif dan ditujukan ke subnet-subnet berikut:

block in on le0 proto tcp from any to 10.1.3.0/24 flags S/SAblock in on le0 proto tcp from any to 10.1.2.0/24 flags S/SAblock in on le0 proto tcp from any to 10.1.1.0/24 flags S/SA

Memblokir semua paket masuk ICMP yang ditujukan kesubnet-subnet berikut:

block in on le0 proto icmp from any to 10.1.3.0/24block in on le0 proto icmp from any to 10.1.1.0/24block in on le0 proto icmp from any to 10.1.2.0/24

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

72

Page 87: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Zona (Zones)Zona adalah sebuah abstraksi Sistem Operasi virtualyang menyediakan lingkungan komputasi terproteksidimana didalamnya aplikasi dapat berjalan. Didalamzona, aplikasi tertentu diproteksi dari aplikasilainnya untuk menyediakan isolasi terhadapkegagalan perangkat lunak.

Untuk memudahkan pekerjaan mengontrol banyakaplikasi dan lingkunganya, semua aplikasi berjalanbersaman dalam satu Sistem Operasi, dan biasanyadikontrol sebagai satu unit.

Sejumlah kecil aplikasi yang biasanya dijalankansebagai root proses atau dengan hak-hak istimewatertentu tidak diperbolehkan untuk berjalan didalamzona jika aplikasi-aplikasi tersebut berkemampuanmengakses atau mengubah sumber daya global. Sebagaicontoh, kemampuan untuk mengubah penghitung waktuharian sistem. Aplikasi-aplikasi seperti inisebaiknya tetap digunakan hanya didalam zona globaltetapi jika diperlukan berjalan didalam zona non-global maka harus dikonfigurasikan dengan sangathati-hati.

Berikut beberapa pedoman:

Aplikasi yang mengakses layanan jaringan, file-file tertentu dan tidak melakukan aktivitas I/Oyang lain, seharusnya dapat bekerja dengan benardidalam zona.

Aplikasi yang memerlukan akses langsung keperangkat tertentu, contohnya: sebuah partisidisk, dapat dilakukan jika zona tersebutdikonfigurasikan dengan benar. Namun demikian,dalam kasus-kasus tertentu hal ini meningkatkanresiko gangguan keamanan.

Aplikasi yang memerlukan akses langsung perangkat

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

73

Page 88: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

tertentu seperti berikut ini mungkin perludimodifikasi untuk dapat berfungsi secara benar.Sebagai contoh, /dev/kmem, atau perangkat jaringan.Aplikasi seharusnya hanya menggunakan satulayanan IP dalam setiap zona.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

74

Page 89: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Zona dapat dikombinasikan dengan fasilitasmanajemen sumber daya yang tersedia di OpenSolarisuntuk menyediakan lingkungan komputasi yang lebihlengkap dan terisolasi. Berbeda dengan zona yanglebih berfungsi menyediakan keamanan, isolasiidentitas dan isolasi kegagalan, fasilitasmanajemen sumber daya digunakan untuk mencegahproses yang ada didalam sebuah zona menghabiskanterlalu banyak sumber daya atau untuk menjamin agarproses mendapatkan sumber daya sesuai dengantingkat layanan yang diinginkannya. Zona danmanajement sumber daya keduanya sering disebutsebagai kontainer.

Kunjungi http://opensolaris.org/os/community/zones/faq untuk mendapatkan jawaban dari pertanyaan-pertanyaan umum tentang zona dan alamat-alamatsitus lain menyimpan dokumentasi terbarunya.

Zona menyediakan lingkungan komputasi yangterlindungi bagi aplikasi-aplikasi Solaris.Sedangkan untuk lingkungan komputasi non-Solarisyang terlindungi dan terpisah tersedia melaluiproyek OpenSolaris lain yang disebut BrandZ .

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

75

Page 90: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Zona Bertanda-identitas (BrandedZones - BrandZ)

BrandZ merupakan sebuah kerangka kerja yangmemperluas infrastrukur zona yang ada sekaranguntuk menciptakan Zona Bertanda-identitas, yangmerupakan zona dengan lingkungan komputasi non-Solaris ada didalamnya.

Zona Bertanda-identitas bisa berupa lingkungankomputasi sederhana dimana didalamnya perintah-perintah standar Solaris digantikan oleh perintahGNU yang sama tanpa dimodifikasi, atau lingkunganyang kompleks berupa lingkungan pengguna Linuxlengkap.

BrandZ memperluas infrastruktur Zona di tingkatlingkungan pengguna dengan beberapa cara berikutini:

Sebuah tanda-identitas adalah sebuah atribut yangmelekat pada sebuah zona, diberikan pada saatmengkonfigurasi zona.

Setiap tanda-identitas menyediakan program danprosedur instalasi sendiri, sehingga memilikikemampuan untuk menginstal perangkat lunak apapun didalam zona bertanda-identitas.

Masing-masing tanda-identitas menyediakan skrippra-boot dan pasca-boot untuk keperluanpenyelesaian pengaturan atau konfigurasi padasaat boot.

Perintah zonecfg dan zoneadm dapat digunakan untukpengaturan dan memberikan informasi tipe tanda-identitas sebuah zona.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

76

Page 91: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

BrandZ menyediakan beberapa titik inter-posisidalam lingkungan kernel:

Titik ini berada di jalur syscall, jalur pemuatanproses dan jalur penciptaan thread, dll.

Titik inter-posisi hanya diterapkan terhadapproses-proses didalam zona Bertanda-identitas.

Di titik ini, sebuah tanda-identitas dapatmemilih untuk memodifikasi atau menggantiperilaku standar Solaris OS.

Pada dasarnya setiap tanda-identitas yang berbedamemerlukan titik inter-posisi baru.

Tanda-identitas “lx” memungkinkan aplikasi binerLinux dapat dijalankan tanpa dimodifikasi diatasSolairs, didalam zona yang menjalankan lingkunganpenggunak Linux lengkap. Tanda-identitas lxmemungkinakn perangkat lunak Linux di tingkat-pengguna dapat berjalan dengan kernel OpenSolariskernel, dan termasuk didalamnya adalah piranti yangdiperluka untuk menginstal distribusi Linux CentOSatau RedHat Enterprise didalam zona diatas sistemSolaris.

Tanda-identitas lx berjalan di sistem x86/x64 danboot dengan kernel 32-bit atau 64-bit. Tetapi hanyaaplikasi Linux 32-bit bisa berjalan. Hinggasekarang, fitur ini baru tersedia untuk arsitekturx86 dan AMDx64. Namun, memindahkannya ke sistemberarsitektur SPARC mungkin bisa menjadi proyekkomunitas yang menarik karena BrandZ lx masih terusdikembangkan.

Kunjungihttp://opensolaris.org/os/community/brandz/installuntuk mendapatkan informasi kebutuhan instalasi danpetunjunknya

Proyek OpenSolaris memang ditujukan untuk mencaritantangan unik dalam pengembangan Sistem Operasidan pengujian kinerja aplikasi yang menggunakan

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

77

Page 92: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

fitur tertentu misalnya zona.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

78

Page 93: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Jaringan Didalam ZonaBerdasarkan cara yang dipilih untuk memberikanalamat IP pada sebuah zona Solaris maka zonaterbagi sebagai berikut:

Zona dengan IP-Eksklusif

Zona dengan IP-Berbagi

Zona dengan IP-Eksklusif memiliki lapisanfungsional IP mandiri, antarmuka jaringan fisikmandiri dan antarmuka VLAN mandiri. Konfigurasijaringan zona dengan IP-Eksklusif identik dengankonfigurasi jaringan komputer fisik.

Zona dengan IP-Berbagi berbagi lapisan fungsionalIP dengan zona global, sehingga tertutup daririncian konfigurasi perangkat jaringan, rutejaringan dan sebagainya. Masing-masing zona IP-berbagi dapat diberikan alamat IPv4/IPv6. Meskipunberbagi lapisan fungsional IP, masing-masing zonaIP-berbagi memiliki ketersediaan port yang mandiri.Aplikasi dapat mengikat diri ke INADDR_ANY dan hanyamenerima lalulintas data yang ditujukan ke zonatersebut.

Di dalam kedua tipe zona ini, pengamatan terhadaplalulintas data milik sebuah zona yang lain tidakdapat dilakukan. Paket yang berasal dari sebuahzona akan memiliki alamat IP pengirim yang dimilikizona tersebut. Zona dengan IP-berbagi hanya dapatmengirim paket melalui antarmuka dengan alamat IPyang diberikan kepada zona tersebut. Zona denganIP-berbagi hanya bisa menggunakan router defaultjika router tersebut dapat dijangkau secaralangsung dari zona. Router default harus beradadalam sub-jaringan yang sama dengan zona-nya.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

79

Page 94: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Zona IP-berbagi tidak dapat mengubah konfigurasijaringan atau tabel informasi rute dan tidak dapatmengakses konfigurasi jaringan milik zona yanglain. Perangkat logis /dev/ip tidak tersedia didalamzona IP-berbagi. Sebagai akibatnya agen SNMP harusmengakses /dev/arp bukan /dev/ip. Beberapa zona IP-berbagi secara bersamaan dapat berbagi alamat IPbroadcast dan bergabung di group multicast yangsama.

Zona IP-berbagi juga memiliki keterbatasankemampuan jaringan yang lain, seperti:

Ketersediaan antarmuka jaringan fisik didalamzona tidak dimungkinkan

IPFilter tidak dapat digunakan untuk menyaringpaket diantara dua atau lebih zona

Pemberian alamat IP untuk zona tidak bisamenggunakan DHCP

Routing secara dinamis tidak dapat dilakukan

Zona dengan IP-eksklusif tidak memilikiketerbatasan seperti diatas, dan dapat mengubahkonfigurasi jaringan atau tabel informasi rute.Perangkat logis /dev/ip tersedia didalam zona denganIP-eksklusif.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

80

Page 95: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Identitas Zona, Akses terhadap CPUdan Instalasi PaketMasing-masing zona mengontrol sendiri namakomputer, zona waktu dan layanan identitas sepertiLDAP dan NIS. Program sysidtool yang dapat melakukanini semua. Terpisahnya file /etc/passwd memungkinkanhak-hak khusus root didelegasikan ke masing-masingzona. Nomor ID pengguna yang sama dapat digunakanoleh nama pengguna yang berbeda ketika mereka adadi domain yang berbeda.

Berdasarkan standar, semua zona bisa mengaksessemua sumber daya CPU. Pembatasan akses terhadapsumber daya secara otomatis dilakukan ketika poolsumber daya dibuat.

Didalam zona dapat diinstal paket hanya didalamzona yang bersangkutan. Patch juga dapat diinstalluntuk paket tersebut.

Patch Sistem diinstal didalam zona global.Kemudian, di dalam zona non-global secara otomatisdilakukan boot -s agar patchnya dapat berfungsi.Parameter paket SUNW_PKG_ALLZONES sebaiknya digunakansecara konsisten diantara zona global dan semuazona non-global.

Parameter SUNW_PKG_HOLLOW menyebabkan nama paketmuncul didalam zona non-global (NGZ) tetapi hanyauntuk kelengkapan informasi ketergantungan paketkarena sebenarnya paket tersebut tidak terinstal.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

81

Page 96: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Perangkat Didalam ZonesMasing-masing zona memiliki akses ke perangkatmasing-masing yang berbeda. Setiap zona memilikiakses terhadap sekumpulan bagian dari perangkatpseudo didalam direktori /dev. Aplikasi mengaksesnama perangkat logis berdasarkan perangkat-perangkat yang disajikan didalam direktori /dev.Direktori /dev tersedia didalam masing-masing zonanon-global, tetapi direktori /devices tidak ada.Ketersediaan perangkat seperti random, console, andnull dibolehkan jika tersedia didalam zona tetapiyang lainnya seperti /dev/kmem tidak dianjurkan dapatdiakses dari zona non-global.

Didalam zona izin akses terhadap perangkat dapatdimodifikasi tetapi perangkat baru tidak dapatdibuat, misalnya dengan fungsi mknod(2).

Ketersediaan akses secara raw terhadap disk didalamzona harus dilakukan dengan hati-hati. Berbagiperangkat diantara beberapa zona juga bisadilakukan tetapi tetap dengan mempertimbangankeamanan.

Sebagai contoh, diasumsikan akses ke beberapaperangkat tertentu telah diberikan ke beberapa zonasekaligus. Dengan mengizinkan pengguna biasamengakses secara block terhadap disk memungkinkanterjadinya panik sistem, ter-resetnya bus atau efekmerugikan lainnya.

Dengan penempatan sebuah perangkat fisik yang samadidalam beberapa zona, sebuah saluran koneksitersembunyi dapat dibuat antara zona-zona yangbersangkutan. Aplikasi di zona global yang jugamengakses perangkat yang sama memiliki resikodatanya terubah atau rusak akibat serangan darizona non-global.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

82

Page 97: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Prakiraan Penyembuhan-Diri(Predictive Self-Healing)

Pra-kiraan Penyembuhan-Diri diimplementasi menjadi2 bagian di dalam Solaris 10 yaitu ArsitekturManajemen Kegagalan dan Fasilitas ManajemenLayanan.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

83

Page 98: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Arsitektur Manajemen Kegagalan(Fault Management Architecture -FMA)Sistem Operasi Solaris menyediakan arsitektur baru,FMA, untuk menciptakan mekanisme penanganankegagalan yang fleksibel, telemetri kegagalan,diagnosa perangkat lunak secara otomatis, agen yangakan bertindak jika terjadi kesalahan, dan modelyang konsisten terhadap kegagalan sistem di setiaptingkat manajemen.

Banyak komponen dari Solaris yang sudah terlibatkedalam FMA, termasuk diantaranya penangankegagalan CPU dan Memori untuk UltraSPARC III danIV; kartu antarmuka PCI untuk UltraSPARC danOpteron. Berbagai proyek juga sedang berjalan,antara lain untuk dukungan penuh terhadap kegagalanCPU, Memori, and I/O di lingkungan komputasiOpteron, konversi penggerak perangkat utama danintegrasi dengan berbagai tingkat manajemen.

Ketika sebuah subsistem dikonversikan agar bisaterlibat dalam Manajemen Kegagalan, mekanismepenanganan kegagalannya dibuat secara fleksibelsehingga sistem dapat dapat terus bekerja meskipunbeberapa kegagalan ditingkat bawah terjadi, dansebuah kejadian telemetri dibuat untuk memicudiagnosa dan tanggapan perbaikan secara otomatis.

Piranti dan arsitektur Manajemen Kegagalanmemungkinkan dikembangkannya mekanisme penyembuhan-diri terhadap kegagalan perangkat lunak danperangkat keras, baik untuk sumber daya yangberskala mikro atau makro, semuanya dengan sudutpandang yang seragam dan sederhana bagiadministrator dan perangkat lunak manajemen sistem.

Kunjungi http://opensolaris.org/os/community/fmuntuk mendapatkan informasi agar bisa

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

84

Page 99: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

berpartisipasi dalam komunitas Manajemen Kegagalanatau mengunduh MIB unutk Manajemen Kegagalan yanghingga sekarang masih terus disempurnakan.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

85

Page 100: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Fasilitas Manajemen Layanan(Services Management Facility -SMF)SMF menciptakan sebuah model yang terintegrasi danterus berkembang untuk kemudahan manajemen layanan-layanan yang jumlahnya semakin besar di proyekOpenSolaris. Layanan-layanan tersebut antara lain:pengiriman surat elektronik, permintaan ftp daneksekusi perintah secara remote. Kerangka kerjasmf(5) menggantikan mekanisme startup init.d(4) yangada sekarang dan termasuk juga perbaikan fiturinetd(1M).

Bagi pengembang, SMF menyediakan keuntunganberikut:

Secara otomatis me-restart layanan sesuai denganurutan saling ketergantungannya. Banyak hal yangmenyebabkan layanan berhenti antara lain:kegagalan administratif, kegagalan perangkatlunak atau kerusakah perangkat keras yangpermanen.

API yang sama untuk kebutuhan manajemen layanan,konfigurasi dan observasi

Akses terhadap manajemen sumber daya yangberbasiskan layanan

Men-debug proses boot menjadi lebih mudah

Kunjungihttp://opensolaris.org/os/community/smf/scfdotuntuk melihat grafik layanan-layanan SMF danketergantungannya pada sebuah sistem x86 yang barusaja terinstal Sistem Operasi Solaris Nevada.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

86

Page 101: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Perunut Dinamis (Dynamic Tracing -DTrace)

DTrace menyediakan sebuah infrastruktur kokoh yangdapat digunakan oleh administrator, pengembang danteknisi operasional untuk secara cepat menjawabberbagai pertanyaan tentang perilaku Sistem Operasidan program pengguna.

DTrace memiliki kemampuan seperti berikut ini:

Secara dinamis mengaktifkan dan mengatur ribuanprobe

Secara dinamis menghubungkan predikat dan aksidengan probe

Secara dinamis mengatur kapasitas penyangga saatmerunut dan beban kerja probe Menguji data hasilmerunut yang diperoleh dari sistem secaralangsung atau dari file yang tersimpan setelahsistem mengalami kegagalan ditingkat kernel(system crash dump)

Mengimplementasikan penyedia data tambahan untukperunutan baru yang dipasangkan kedalam DTrace

Mengimplementasi konsumen data hasil merunut yangakan menyajikan data

Mengimplementasikan piranti untuk mengkonfigurasiprobe DTrace

Temukan situs komunitas DTrace di

http://opensolaris.org/os/community/dtrace.

Selain DTrace, proyek OpenSolaris juga menyediakanfasilitas pen-debug untuk pengembangan perangkatlunak di tingkat-bawah, misalnya pengembanganpenggerak perangkat.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

87

Page 102: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Pen-debug Modular (Modular Debugger- MDB)

MDB adalah sebuah pen-debug yang dirancang untukmenyediakan analisa masalah perangkat lunak yangmemerlukan fasilitas pen-debug-an di tingkat-bawah,misalnya pengujian file core; dan pengetahuantentang bahasa assembly diperlukan agar bisamelakukan diagnosa dan memperbaikinya. Umumnya,para pengembang kernel dan perangkat mengandalkanmdb untuk mencari jawaban mengapa dan dimana terjadikesalahan pada kode pemograman mereka.

MDB tersedia dalam dua perintah berbeda yaitu mdbdan kmdb, namun keduanya memiliki beberapa kesamaanfitur umum. Perintah mdb digunakan secara interaktifatau didalam skrip untuk mendebug proses di tingkatpengguna yang sedang berjalan, file core dariproses di tingkat pengguna, kernel crash dump, fileobject Sistem Operasi yang sedang berjalan dan filelainnya. Sedangkan kmdb digunakan untuk men-debugproses di tingkat kernel dan penggerak perangkatyang sedang berjalan, juga diperlukan untukmengontrol dan menghentikan eksekusi intruksididalam kernel.

Terdapat komunitas yang aktif mendiskusikan MDBsebagai tempat untuk bertanya kepada para pakaratau melihat berbagai percakapan dan pertanyaanyang pernah disampaikan sebelumnya. Kunjungihttp://opensolaris.org/os/community/mdb

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

88

Page 103: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Sistem File ZFSSistem file ZFS merupakan sistem file yang tidakdibatasi oleh perangkat keras tertentu, sehinggabegitu mudah dan cepat untuk dibuat seperti membuatsebuah direktori, dan sistem file ini bertambahkapasitasnya secara otomatis sesuai dengankapasitas maksimum yang dialokasikan didalam poolpenyimpan datanya.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

89

Page 104: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

Penggunaan Checksum dan PerbaikanDataDengan ZFS, semua data dan metadata diproteksi darikesalahan dengan checksum dimana algoritma yangakan digunakannya bisa dipilih. Semua perhitunganchecksum dan perbaikan kesalahan data dilakukan dilevel sistem file dan semuanya transparan bagiaplikasi. Selain itu, ZFS juga berkemampuanmemperbaiki-sendiri data dari kerusakan. ZFSmendukung pool penyimpan data berkemampuanredundansi data yaitu mirror dan sebuah variasiRAID-5. Ketika terdeteksi sebuah data blok rusakmaka ZFS mengambil data yang masih utuh dari lokasilain yang berisi data yang sama kemudianmemperbaiki data blok yang rusak tersebut yaitudengan menggantinya oleh data blok yang masih utuh.

ZFS menyajikan model pool penyimpan data dimanamodel ini membuang konsep volume besertamasalahnya. Masalah-masalah tersebut meliputi:perlunya mempartisi, melakukan provision, kinerjayang tidak maksimal dan pemakaian kapasitaspenyimpan yang tidak optimal

Gabungan kapasitas I/O dari semua perangkat kerasdi dalam pool tersedia untuk untuk semua sistemfile sepanjang waktu.

Masing-masing pool penyimpan data terdiri dari satuatau lebih perangkat virtual yang menggambarkandisain penyimpan data fisiknya dan karakteristikkemampuan bertahan terhadap kerusakan. Kunjungihttp://opensolaris.org/os/community/zfs/demos/basics untuk menyaksikan demo administrasi sistem fileZFS yang berjudul “100 Mirrored Filesystems in 5Minutes”.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

90

Page 105: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Tinjauan

RAID-ZSelain konfigurasi penyimpanan data tunggal dalamsebuah pool, ZFS juga menyediakan konfigurasipenyimpanan data redundansi ter-mirror danredundansi RAID-Z yang memberikan perlindungansangat baik terhadap kehilangan data. KonfigurasiRAID-Z merupakan perangkat penyimpan data virtualyang menyimpan data dan pariti secara tersebar dibanyak disk sekaligus, mirip dengan RAID-5.

Berbeda dengan RAID-5, RAID-Z menggunakan ukuranRAID stripe yang tidak tetap sehingga setiapoperasi tulis selalu menjad operasi tulis full-stripe. Fitur ini hanya ada di ZFS karena ZFSmengintegrasikan manajemen sistem file danperangkat keras. Pengintegrasian ini menyediakansuatu cara dimana metadata dari sistem file selalumemiliki cukup informasi tentang pondasi dari modelreplikasi datanya untuk menangani ukuran RAIDstripe yang tidak tetap. RAID-Z merupakan solusiberbasis perangkat lunak pertama yang mengatasikelemahan operasi tulis dari RAID-5.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

91

Page 106: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Konsep Pemograman

Modul ini menyajikan deskripsi umum tentang konsep-konsep dasar lingkungan pemograman OpenSolaris,yang meliputi:

Manajemen Proses dan Sistem

Pemograman Thread

Fungsi-fungsi Dasar Kernel

Penjadwalan CPU

Men-debug Proses

Solaris Internals (2nd Edition), PrenticeHall PTR(May 12, 2006) by Jim Mauro and RichardMcDougall

Solaris Systems Programming, PrenticeHall PTR(August 19, 2004), by Rich Teer

Multithreaded Programming Guide. SunMicrosystems,Inc., 2005.

STREAMS Programming Guide. SunMicrosystems, Inc.,2005.

Solaris 64-bit Developer’s Guide.SunMicrosystems, Inc., 2005.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

6 M O D U L

Tujuan

92

Sumber BacaanLain

Page 107: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

Manajemen Proses dan SistemUnit dasar beban kerja sistem komputasi adalahproses. Setiap proses diberi tanda pengenal berupanomor identifikasi proses (PID), nomor ini dibuatsecara berurutan didalam sistem. Sesuai standarnya,setiap setiap pengguna akan diberikan sebuah proyekoleh sistem administrator, proyek merupakan sebuahidentitas administratif yang bersifat global.Setiap login ke sebuah proyek akan menciptakansebuah tugas (task), tugas merupakan mekanismepengelompokan proses. Sebuah tugas terdiri dariproses login dan anak proses lain yangmengikutinya.

Fasilitas pool sumber-daya menggabungkan beberapasumber-daya yang tersedia bagi proses kedalamsebuah abstraksi umum disebut pool. Himpunanprosesor dan sumber-daya lain dikonfigurasikan,dikelompokan dan diberi label sedemikian rupasehingga menjadi komponen beban-kerja yang terkaitsebagai himpunan bagian dari total sumber-daya yangdimiliki sistem.

Jika fasilitas pool tidak aktif maka semua prosesakan dimiliki oleh pool yang sama yaitupool_default, dan himpunan prosesor diatur melaluipanggilan fungsi sistem pset(). Ketika fasilitaspool diaktifkan, himpunan proses harus diaturdengan menggunakan fasilitas pool. Sebuah pool barudiciptakan dan dilekatkan dengan himpunan prosesortertentu. Berikutnya, proses dilekatkan dengan poolyang memiliki himpunan sumber-daya tertentu.

Dengan menggunakan OpenGrok untuk melihat sumberkode pemograman pool.c, dapt dilihat komentar yangmenjelaskan hubungan antara tugas, pool, proyek danproses, seperti berikut ini:

“Tindakan untuk melekatkan tugas dan proyek dengan

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

93

Page 108: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

pool bersifat atomik. Artinya, baik itu semuaproses yang ada didalam sebuah tugas atau proyekakan dilekatkan ke sebuah pool baru, atau tetapmelekat di pool sebelumnya (jika terjadikegagalan). Proses yang ada didalam sebuah tugasatau proyek hanya bisa dilekatkan ke pool yangberbeda jika proses-proses tersebut masing-masingdilekatkan-ulang satu-persatu sebagai prosestunggal.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

94

Page 109: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

Threads atau LWPs dari proses yang sama bukanmerupakan obyek yang dilekatkan pada sebuah pool,dan keduanya dilekatkan dengan himpunan sumber-dayayang sama yang terkait dengan pool sumber-daya dariproses yang bersangkutan.

Proses dapat juga dijalankan didalam zona. Zonadiciptakan oleh adminstrator sistem, biasanya untukalasan keamanan, agar dapat mengisolasi sekelompokpengguna atau proses dari yang lainnya.”

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

95

Page 110: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

Pemograman ThreadSejauh ini telah dipelajari proses dalam konteksnyadengan tugas, proyek, pool sumber daya, zona danzona bertanda-identitas, berikutnya akan dipelajariproses dalam konteksnya dengan thread.

UNIX sejak dulu sudah mendukung konsep thread.Masing-masing proses memiliki setidaknya satuthread, sehingga pemograman dengan banyak prosesberarti pemograman dengan banyak thread. Tetapi,proses juga memerlukan area alamat memori, sehinggapenciptaan sebuah proses berarti juga melibatkanpenciptaan sebuah area alamat memori baru.

Komunikasi antar thread dalam satu proses merupakankomunikasi yang sederhana karena semua threadberbagi banyak hal, termasuk area alamat memori dandeskriptor file terbuka yang sama. Sehingga datayang dihasilkan oleh satu thread dengan segeratersedia untuk diakses oleh thread yang lain.

File librari yang tersedia untuk permogramanbanyak-thread (Multithreading) yaitu libpthread untukthread POSIX dan libthread untuk thread OpenSolaris.Pemograman banyak-thread menyediakan fleksibilitasdengan memisahkan sumber daya di tingkat-kerneldengan sumber daya di tingkat-pengguna. DiOpenSolaris, pemograman banyak-thread mendukunghimpunan antarmuka yang disediakan oleh librari Cstandar.

Gunakan fungsi pthread_create(3C) untuk menambahkanthread pengontrol baru kedalam sebuah proses.

int pthread_create(pthread_t *tid, const pthread_attr_t *tattr,void*(*start_routine)(void *), void *arg);

Fungsi pthread_create() dipanggil dengan attr yangtelah memiliki kondisi status yang diperlukan.Fungsi start_routine merupakan fungsi yang berfungsi

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

96

Page 111: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

untuk memacu sebuah thread baru untuk memulaieksekusi. Ketika fungsi start_routine selesaidipanggil, thread tersebut keluar dengan statuskeluaran yang ditentukan oleh nilai-balik yangdikembalikan oleh fungsi start_routine.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

97

Page 112: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

Fungsi pthread_create() menghasilkan nilai-balik noljika panggilan fungsi tersebut berhasildiselesaikan tanpa kesalahan. Nilai-balik selainnol menandakan adanya kesalahan. Lihat informasiyang tersedia di /on/usr/src/lib/libc/spec/threads.specdengan OpenGrok untuk mendapat daftar lengkapfungsi-fungsi pthread dan cara deklarasinya.

Sinkronisasi thread diperlukan untuk mengontrolaliran program dan akses ke data yang digunakansecara bersamaan oleh beberapa thread yang sedangdieksekusi. Ada empat metode sinkronisasi obyekyaitu penguncian mutex, penguncian baca/tulis,variabel kondisi, and penghitungan tanda bendera.

Penguncian mutex (Mutex locks) mengizinkan hanyasatu thread pada saat tertentu mengeksekusi areakode tertentu atau mengakses data tertentu.

Penguncian baca/tulis (Read/write locks)mengizinkan pembacaan data secara bersamaantetapi penulisan data diberikan secara eksklusifterhadap sumber daya terproteksi yang digunakansecara bersama. Agar dapat melakukan penulisandata, sebuah thread harus mendapatkan dulupengunci penulisan eksklusif. Pengunci penulisaneksklusif tidak akan diberikan lagi sampai semuakunci pembacaan telah dilepaskan oleh thread yanglain.

Variabel kondisi (Condition variables) memblokirthread hingga kondisi tertentu memiliki nilabenar.

Penghintungan tanda bendera (Counting semaphores)biasanya digunakan untuk mengkoordinasikan aksessebuah sumber daya. Penghitungan tanda benderaakan menentukan batas berapa banyak thread dapatmemiliki akses ke sebuah tanda bendera. Ketikalimit penghitungan tercapai; thread lain yangmencoba mengakses sumber daya akan diblokir.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

98

Page 113: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

SinkronisasiObyek sinkronisasi merupakan variabel didalammemori yang dapat diakses datanya. Thread yangberasal dari proses yang berbeda dapat salingberkomu-nikasi melalui obyek sinkronisasi yangtersimpan didalam memori-bersama yang terkontrololeh masing-masing thread.

Thread dapat saling berkomunikasi meskipunsebenarnya thread yang berasal dari proses yangberbeda secara umum tidak saling terlihat. Obyeksinkroniasi juga dapat disimpan dalam file. Obyeksinkronisasi dapat memiliki waktu hidup yang lebihlama daripada waktu hidup penciptaan proses.

Gunakan OpenGrok untuk menemukan kode pemogramanlibthread dan informasi penting lain didalammutex.c, perhatikan juga informasi berikut yangdiambil dari sebagian komentar sebuah kodepemogramman:

Implementation of all threads interfaces between ld.so.1 andlibthread. In a non-threaded environment all thread interfacesare vectored to noops. When called via _ld_concurrency() fromlibthread these vectors are reassigned to real threadsinterfaces.

Two models are supported:

TI_VERSION == 1 Under this model libthread providesrw_rwlock/rw_unlock, through which we vector allrt_mutex_lock/rt_mutex_unlock calls. Under lib/libthread theseinterfaces provided _sigon/_sigoff (unlike lwp/libthread thatprovided signal blocking via bind_guard/bind_clear.

TI_VERSION == 2 Under this model only libthreadsbind_guard/bind_clear and thr_self interfaces are used. Bothlibthreads block signals under the bind_guard/bind_clearinterfaces. Lower level locking is derived from internally bound_lwp_ interfaces. This removes recursive problems encounteredwhen obtaining locking interfaces from libthread. The use ofmutexes over reader/writer locks also enables the use of

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

99

Page 114: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

condition variables for controlling thread concurrency (allowsaccess to objects only after their .init has completed).

Setelah memahami bagaimana obyek sinkronisasididefinisikan dalam pemograman banyak-thread,berikutnya dijelaskan bagaimana obyek-obyek inidiatur dengan kelas-kelas penjadwalan.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

100

Page 115: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

Penjadwalan CPUProses dieksekusi didalam sebuah kelas penjadwalantertentu yang masing-masing memiliki kebijakanpenjadwalan yang berbeda, seperit dijelaskanberikut ini:

Realtime (RT) – Kelas penjadwalan denganprioritas tertinggi yang menyediakan kebijakanpenjadwalan untuk proses yang memerlukantanggapan cepat dan pengontrolan prioritaspenjadwalan secara mutlak oleh pengguna atauaplikasi. Penjadwalan RT dapat diberikan kepadaseluruh proses atau kepada satu atau lebihlightweight processes (LWPs) dari sebuah proses.Diperlukan hak istimewa proc_priocntl untuk dapatmenggunakan kelas Realtime. Informasi lebihlanjut dapat diperoleh di manual privileges (5).

System (SYS) – Kelas penjadwlan dengan prioritasmenengah, kelas ini tidak dapat diberikan kepadaproses pengguna.

Timeshare (TS) – Kelas penjadwalan denganprioritas terendah dan menjadi kelas standaruntuk proses pengguna. Kebijakan TS adalahmendistribusikan sumber daya CPU secara meratadiantara proses-proses dengan karakteristikkonsumsi CPU yang berbeda. Proses-proses lainmilik Kernel dapat memonopoli prosesor dalamjangka waktu yang singkat tanpa menyebabkanpenurunan waktu-tanggap yang dirasakan olehpengguna.

Inter-Active (IA) – Kebijakan IA adalah selainmendistribusikan sumber daya CPU secara meratadiantara proses-proses dengan karakteristikkonsumsi CPU yang berbeda tetapi juga menyediakanwaktu-tanggap yang baik untuk berinteraksi denganpengguna.

Fair Share (FSS) – Kebijakan FSS adalah

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

101

Page 116: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

mendistribusikan sumber daya CPU secara meratadiantara beberapa proyek, tidak tergantung jumlahproses yang dimiliki proyek bersangkutan. Setiapproyek mendapatkan besar presentase tertentuuntuk mengontrol hak pemanfaatan sumber daya CPU.Besarnya pemanfaatan sumber daya CPU selaludicatat setiap waktu, sehingga jatah hakpemanfaatannya semakin dikurangi untuk proyekyang dengan pemakaian CPU besar dan akanditambahkankan untuk proyek dengan pemakaian CPUkecil.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

102

Page 117: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

Fixed-Priority (FX) – Kebijakan FX menyediakanpenjadwalan preemptive dengan prioritas tetapbagi proses yang memerlukan prioritas penjadwalanyang tidak secara dinamis disesuaikan oleh sistemdan pengguna atau aplikasi yang bisa mengontrolsendiri prioritas penjadwalannya. Kelas ini dapatdigunakan untuk memulai pengubahan kebijakanpengalokasian CPU.

Kelas penjadwalan diberikan kepada masing-masingLWP. Setiap thread mendapatkan kelas penjadwalandan prioritas dari LWP dimana thread tersebutberasal. Masing-masing LWP dalam sebuah prosesdapat memiliki kelas penjadwalan dan prioritas unikyang diperlakukan berbeda oleh kernel. Prioritasthread akan menentukan persaingan untuk mendapatkanobyek sinkronisasi.

Kelas penjadwalan RT dan TS keduanya memanggilfungsi priocntl(2) untuk menentukan tingkat prioritassebuah proses atau LWP dalam sebuah proses. GunakanOpenGrok mencari dasar kode pemograman fungsipriocntl, dari file rtsched.c dapat diketahui variabel-variabel yang digunakan oleh kelas penjadwalan RTand TS sebagai berikut:

27 #pragma ident "@(#)rtsched.c 1.10 05/06/08 SMI"2829 #include "lint.h"30 #include "thr_uberdata.h"31 #include <sched.h>32 #include <sys/priocntl.h>33 #include <sys/rtpriocntl.h>34 #include <sys/tspriocntl.h>35 #include <sys/rt.h>36 #include <sys/ts.h>3738 /*39 * The following variables are used for caching information40 * for priocntl TS and RT scheduling classs.41 */42 struct pcclass ts_class, rt_class;43

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

103

Page 118: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

44 static rtdpent_t *rt_dptbl; /* RT class parameter table */45 static int rt_rrmin;46 static int rt_rrmax;47 static int rt_fifomin;48 static int rt_fifomax;49 static int rt_othermin;50 static int rt_othermax;Dengan mengetikan perintah man priocntl di sebuahjendela terminal, diperlihatkan rincian informasiyang berhubungan dengan masing-masing kelaspenjadwalan, atribut, dan pemakaiannya.

% man priocntlReformatting page. Please Wait... done

User Commands priocntl(1)

NAME

SYNOPSIS

DESCRIPTION

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

104

The priocntl command displays or sets scheduling parameters ofthe specified process(es). It can also be used to display thecurrent configuration information for the system’s processscheduler or execute a command with specified schedulingparameters.Processes fall into distinct classes with a separate schedulingpolicy applied to each class. The process classes currentlysupported are the real-time class, time-sharing class,interactive class, fair-share class, and the fixed priorityclass. The characteristics of these classes and the class-specific options they accept are described below in the USAGEsection under the headings Real-Time Class, Time- SharingClass, Inter-Active Class, Fair-Share Class, and--More--(4%)

priocntl -lpriocntl -d [-i idtype] [idlist]priocntl -s [-c class] [ class-specific options] [-iidtype] [idlist]priocntl -e [-c class] [ class-specific options] command[argument(s)]

priocntl - display or set scheduling parameters of specifiedprocess(es)

Page 119: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

Tinjauan Umum KernelSetelah memiliki pemahaman di tingkat-atas tentangproses, thread dan penjadwalan, berikutnya akandisajikan penjelasan tentang kernel dan bagaimanamodul kernel berbeda dengan program pengguna.Kernel Solaris berperan melakukan hal-hal berikut:

Manajemen sumber daya sistem, termasukdiantaranya sistem file, proses dan perangkatkeras.

Menyediakan layanan sistem kepada aplikasiseperti manajemen I/O, memori virtual danpenjadwalan.

Mengkoordinasikan interaksi antara prosespengguna dan sumber daya sistem.

Memberikan prioritas, melayani permintaan atassumber daya, melayani interupsi perangkat kerasdan eksepsi.

Menjadwalkan dan mengganti thread, area memoridan men-swap proses.

Pada bagian berikut ini dijelaskan beberapaperbedaan penting antara modul kernel dan programpengguna.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

105

Page 120: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

Perbedaan Antara Eksekusi ModulKernel dan Program PenggunaBerikut adalah karakteristik-karakteristik modulkernel yang membedakannya dengan program penggunapada saat dieksekusi:

Modul kernel memiliki area alamat memori yangterpisah. Sebuah modul berjalan di area kernel.Aplikasi berjalan di area pengguna. Perangkatlunak sistem diproteksi dari program pengguna.Area kernel dan area pengguna masing-masingmemiliki area alamat memori sendiri.

Modul kernel memiliki hak eksekusi lebih tinggi.Kode pemograman yang berjalan di area kernelmemiliki lebih banyak hak istimewa daripada kodepemograman yang berjalan di area kernel.

Modul kernel tidak dieksekusi secara berurutan.Program pengguna biasanya dieksekusi secaraberurutan dan melakukan satu tugas tunggal sejakawal hingga berhenti. Modul kernel tidakdieksekusi secara berurutan. Modul kernelmendaftarkan diri sebagai komponen kernel agarbisa melayani permintaan layanan yang akandatang.

Modul kernel dapat diinterupsi. Bebarapa prosesdapat secara bersamaan mengirimkan permintaankepada sebuah modul kernel. Contohnya, sebuahprogram kernel bertugas menangani interupsi bisasaja mengirimkan permintaan kepada sebuah modulkernel yang sedang melayani panggilan sistem padasaat yang sama. Didalam sistem berprosesor-banyaksimetrik (Symmetric Multiprocessor, SMP), sebuahmodul kernel dapat dieksekusi secara bersamaanoleh beberapa CPU.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

106

Page 121: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

Modul kernel harus bersifat preemptive. Meskipunsebuah program penggerak tidak dapat memblokirsebuah modul kernel, ini tidak berarti kernelmodul ini aman. Rancanglah sebuah programpenggerak dengan asumsi bahwa kernel modul yangbersangkutan bersifat preemptive.

Modul kernel dapat berbagi data. Thread yangberbeda dari sebuah program aplikasi tidak perluuntuk berbagi data. Berlawanan dengan strukturdata dan kode pemograman rutin sebagai komponenprogram penggerak yang digunakan secara bersamaanoleh semua thread yang ada dalam programpenggereak tersebut. Sebuah program penggerakharus dapat menangani masalah perebutan sumberdaya sebagai akibat permintaan yang banyak.Rancanglah struktur data program penggerak denganpenuh pertimbangan untuk menjaga agar beberapathread tetap dieksekusi secara terpisah.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

107

Page 122: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

Perbedaan Struktural antara ModulKernel Modules dan Program PenggunaBerikut adalah karakteristik-karakteristik strukturmodul kernel yang membedakannya dengan strukturprogram pengguna:

Modul kernel tidak mendefinisikan program utama.Modul kernel, termasuk program penggerakperangkat tidak memiliki fungsi rutin utamamain(). Sebaliknya, modul kernel merupakankumpulan fungsi sub-rutin dan data.

Modul kernel hanya di-link ke komponen librarikernel. Modul kernel tidak di-link ke librariyang digunakan oleh program pengguna. Kernelmodule hanya bisa memanggil fungsi-fungsi yangtelah dieksport oleh kernel.

Modul kernel menggunakan file header yangberbeda. Modul kernel memerlukan himpunan fileheader yang berbeda dengan file header yangdiperlukan oleh program pengguna. Daftar fileheader yang diperlukan dapat dilihat di halamanmanual masing-masing fungsi. Modul kernel bisasaja mengikutkan file header yang digunakanbersama oleh program pengguna jika antarmukaantara kode di area user dan area kernel didalamheader file tersebut didefinisikan secarakondisional dengan makro _KERNEL.

Modul kernel sebaiknya menghindari pemakaianvariabel global. Penghindaran variabel globaldidalam kernel modul jauh lebih pentingdibandingkan penghindaran variabel global didalamprogram pengguna. Sebisa mungkin, deklarasikansimbol sebagai statik. Ketika penggunaan simbolglobal tidak dapat dihindari, tambahkan prefix kenama simbol global tersebut agar unik didalamkernel. Penggunan prefix untuk simbol privatedalam modul juga merupakan kebiasaan yang baik.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

108

Page 123: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

Modul kernel dapat dibuat berdasarkan kebutuhanspesifik perangkat keras. Modul kernel dapatmenggunakn register proses secara khusus hanyauntuk melakukan fungsi yang specifik. Modulkernel dapat dioptimalisasikan untuk jenisprosesor tertentu. Librari juga dapat dibuatberdasarkan kebutuhan spesifik tertentu, sepertidi OpenSolaris memiliki librari untuk sistem x86/x64 and UltraSPARC. Jadi, jika kernel dapatmenggunakan register untuk fungsi tertentu makakode pemograman dapat dibuat sesuai kebutuhankernel dan pengguna/librari.

Modul kernel dapat dimuatkan dan dibongkarmuatkansesuai permintaan. Kumpulan fungsi sub-rutin dandata yang merupakan bagian program penggerakperangkat dapat dikompilasi menjadi sebuah kodeobyek dari sebuah module tunggal yang dapatdimuatkan. Modul ini berikutnya dapat secaradinamis atau statik di-link kedalam kernel dandi-unlink dari kernel. Penambahan fungsi barukedalam kernel dapat dilakukan pada saat kernelaktif dan berjalan. Pengujian versi terbarusebuah program penggerak dapat dilakukan tanpame-reboot sistem.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

109

Page 124: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

Men-debug ProsesMen-debug proses pada semua tingkat dari tahappengembangannya merupakan bagian kunci daripembuatan modul kernel.

Pencarian kode pemograman libthread denganOpenGrok, mengarahkan kita ke file mdb_tdb.c yangmenjelaskan hubungan antara multi-threadeddebugging dan bagaimana mdb bekerja:

In order to properly debug multi-threaded programs, the proctarget must be able to query and modify information such as athread’s register set using either the native LWP servicesprovided by libproc (if the process is not linked withlibthread), or using the services provided by libthread_db (ifthe process is linked with libthread).

Additionally, a process may begin life as a single-threadedprocess and then later dlopen() libthread, so we must beprepared to switch modes on-the-fly. There are also two possiblelibthread implementations (one in /usr/lib and one in/usr/lib/lwp) so we cannot link mdb against libthread_dbdirectly; instead, we must dlopen the appropriate libthread_dbon-the-fly based on which libthread.so the victim process hasopen. Finally, mdb is designed so that multiple targets can beactive simultaneously, so we could even have *both*libthread_db’s open at the same time.

This might happen if you were looking at two multi-threaded userprocesses inside of a crash dump, one using/usr/lib/libthread.so and the other using/usr/lib/lwp/libthread.so. To meet these requirements, weimplement a libthread_db "cache" in this file. The proc targetcalls mdb_tdb_load() with the pathname of a libthread_db toload, and if it is not already open, we dlopen() it, look up thesymbols we need to reference, and fill in an ops vector which wereturn to the caller.

Once an object is loaded, we don’t bother unloading it unlessthe entire cache is explicitly flushed. This mechanism also hasthe nice property that we don’t bother loading libthread_dbuntil we need it, so the debugger starts up faster.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

110

Page 125: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Proses dan Sistem

Perintah-perintah mdb berikut dapat digunakan untukmengakses LWP dari sebuah progarm dengan banyak-thread:

$l Menampilkan LWP ID dari thread representatifjika targetnya adalah proses pengguna.

$L Menampilan LWP ID dari masin-masing LWPdidalam target jika targetnya adalah prosespengguna.

pid::attach Melekatkan ke sebuah proses denganmenggunakan ID prosesnya, pid

::release Melepaskan proses atau file core yangsebelumnya dilekatkan. Proses masih dapatmelanjutkan eksekusinya dengan menggunakan prun(1)atau MDB atau pen-debug yang lain.

address::context Melakukan context switch terhadapproses yang ditentukan. Perintah ini menetapkanconditional breakpoints yang seringkali berguna.

[ addr ] ::bp [+/-dDestT] [-c cmd] [-n count] sym ...Menentukan breakpoint pada lokasi tertentu.

addr ::delete [id | all] Menghapus event specifiersdengan nomor ID tertentu

Probe DTrace juga dikonstruksikan dengan cara yangsama seperti MDB. Pada halaman berikutnya terdapatlatihan lab menggunakan DTrace kemudian MDB ketikamen-debug semakin sulit dan kompleks.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

111

Page 126: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Memulai Penggunaan DTrace

Tujuan dari latihan lab ini adalah untukmemperkenalkan DTrace dengan menggunakan skripprobe untuk sebuah system call dengan DTrace.

Solaris Dynamic Tracing Guide. SunMicrosystems,Inc., 2007.

DTrace User Guide, SunMicrosystems, Inc., 2006

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

7 M O D U L

Tujuan

112

Sumber BacaanLain

Page 127: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Mengaktifkan Probe DTrace Sederhana

Mengaktifkan Probe DTrace SederhanaSetelah menyelesaikan latihan-latihan di modul inidiharapkan peserta memiliki pemahaman dasar tentangprobe-probe didalam DTrace.

Pembelajaran DTrace dimulai dengan membuatpermintaan yang sangat sederhana yaitu menggunakanprobe yang bernama BEGIN; probe ini akan terpicu(aktif) satu kali setiap ada permintaan merunutbaru. Kita dapat menggunakan opsi –n dari perintahdtrace(1M) untuk mengaktifkan sebuah probe denganmenggunakan nama string-nya.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

113

Ringkasan

Page 128: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Mengaktifkan Probe DTrace Sederhana

1.Buka jendela terminal2.Mengaktifkan sebuah probe:

# dtrace -n BEGIN

Setelah jeda beberapa saat, dapat disaksikandtrace menyatakan bahwa sebuah probe diaktifkandan sebaris informasi keluaran munculmengindikasi probe BEGIN sudah dipicu.

Setelah muncul keluaran ini, dtrace tetap menungguprobe yang lain untuk memicu. Karena kita tidakakan mengaktifkan probe yang lain dan probe BEGINcukup hanya diaktifkan satu kali, tekan Control-Cuntuk keluar dari dtrace dan kembali ke promptshell:

3.Kembali ke shell prompt dengan menekan Control-C:# dtrace -n BEGINdtrace: description ’BEGIN’ matched 1 probeCPU ID FUNCTION:NAME0 1 :BEGIN^C#Keluaran ini menjelaskan bahwa probe bernamaBEGIN dipicu satu kali dan baik nama dan nomorID, 1 ditampilkan. Perhatikan bahwa berdasarkanstandar, nomor CPU dimana probe dipicu yang akanditampilkan. Dalam contoh ini, kolom CPUmengindikasinya bahwa perintah dtrace dieksekusipada CPU 0 ketika probenya dipicu.

Permintaan DTrace dapat dikonstruksi denganmenggunakan berapapun jumlah probe dan aksi.Berikutnya, buat lagi sebuah permintaan sederhanamenggunakan dua probe yaitu dengan penambahanprobe END pada contoh perintah sebelumnya. ProbeEND memicu satu kali ketika merunut telahlengkap.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

114

Mengaktifkan Probe DTraceSederhana

Page 129: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Mengaktifkan Probe DTrace Sederhana

4.Tambahkan probe END:# dtrace -n BEGIN -n ENDdtrace: description ’BEGIN’ matched 1 probedtrace: description ’END’ matched 1 probeCPU ID FUNCTION:NAME0 1 :BEGIN^C0 2 :END#

Probe END memicu satu kali ketika merunut telahlengkap. Seperti diperlihatkan, dengan menekanControl-C untuk keluar DTrace akan membangkitkanprobe END. DTrace menampilkan informasi bahwaprobe ini memicu sebelum keluar.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

115

Page 130: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menampilkan Traceable Probes

Menampilkan Probe PerunutTujuan dari lab ini adalah untuk mengenal probelebih jauh dan memperlihatkan bagaimana menampilkanprobe yang ada dalam sebuah sistem.

Pada contoh-contoh sebelumnya, telah dipelajari 2probe sederhana bernama BEGIN dan END. Tetapidarimana kedua probe ini sebenarnya berasal? ProbeDTrace berasal dari himpunan modul-modul kernelyang disebut penyedia (provider), dimana masing-masing penyedia melakukan suatu bentukinstrumentasi tertentu untuk membuat probe. Sebagaicontoh, penyedia syscall menyediakan probe untuksetiap panggilan system( system call) and thepenyedia fbt menyediakan probe untuk setiap fungsiyang ada didalam kernel.

Ketika menggunakan DTrace, setiap penyediadiberikan kesempatan untuk mempublikasikan setiapprobe yang ada yang di kerangka kerja DTrace.Berikutnya setiap probe yang telah dipublikasikandapat diaktifkan dan dilekatkan aksi perunut.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

116

Ringkasan

Page 131: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menampilkan Traceable Probes

1.Buka jendela terminal.2.Ketikan perintah berikut.:

# dtrace

Opsi-opsi yang ada perintah dtrace ditampilkan.

3.Ketikan perintah dtrace dengan opsi –l :# dtrace -l | moreID PROVIDER MODULE FUNCTION NAME1 dtrace BEGIN2 dtrace END3 dtrace ERROR4 lockstat genunix mutex_enter adaptive-acquire5 lockstat genunix mutex_enter adaptive-block6 lockstat genunix mutex_enter adaptive-spin7 lockstat genunix mutex_exit adaptive-release--More--

Probe-probe yang tersedia di sistem ditampilkandalam lima kolom informasi sebagai berikut:

ID – Nomor urut identifikasi internal dariprobe yang ditampilkan

Provider – Nama Penyedia. Penyedia digunakanuntuk mengklasifikasikan probe. Ini jugadigunakan sebagai metode instrumentasinya.

Module – Nama modul Unix atau librari aplikasidari probe yang bersangkutan

Function – Nama fungsi dimana sebuah probeberasal.

Name – Nama probe

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

117

Menampilkan Probe Perunut

Page 132: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menampilkan Traceable Probes

4.Gunakan simbol pipa untuk meneruskan keluarandari perintah sebelumnya kedalam perintah wcuntuk menghitung jumlah total probe yang ada disistem:# dtrace -l | wc -l30122

Jumlah probe yang diketahui oleh sistemditampilkan sebagai keluarannya. Jumlah ini bisaberbeda tergantung tipe sistemnya.

5.Tambahkan opsi-opsi berikut untum mem-filtertampilannya:

-P untuk penyedia

-m for modul

-f untuk fungsi

-n untuk name

Perhatikan contoh-contoh berikut:

# dtrace -l -P lockstatID PROVIDER MODULE FUNCTION NAME4 lockstat genunix mutex_enter adaptive-acquire5 lockstat genunix mutex_enter adaptive-block6 lockstat genunix mutex_enter adaptive-spin7 lockstat genunix mutex_exit adaptive-release

Hanya probe-probe yang ada didalam penyedialockstat yang ditampilkan

# dtrace -l -m ufsID PROVIDER MODULE FUNCTION NAME15 sysinfo ufs ufs_idle_free ufsinopage16 sysinfo ufs ufs_iget_internal ufsiget356 fbt ufs allocg entry

Hanya probe-probe yang ada di modul UFS yangditampikan.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

118

Page 133: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menampilkan Traceable Probes

# dtrace -l -f openID PROVIDER MODULE FUNCTION NAME4 syscall open entry5 syscall open return116 fbt genunix open entry117 fbt genunix open return

Hanya probe-probe dengan name fungsi open yangditampilkan.

# dtrace -l -n startID PROVIDER MODULE FUNCTION NAME506 proc unix lwp_rtt_initial start2766 io genunix default_physio start2768 io genunix aphysio start5909 io nfs nfs4_bio start

Perintah diatas menampilkan semua probe yangmemiliki nama probe start.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

119

Page 134: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pemograman Bahasa D

Pemograman Bahasa DSetelah memiliki sedikit pemahaman tentangpenamaan, mengaktifkan dan menampilkan probe,langkah berikutnya diharapkan peserta bisamenuliskan sebuah versi program DTrace sederhana,"Hello, World."

Lab ini mendemonstrasikan bahwa DTrce dapatdituliskan dalam sebuah teks file dengan mengunakanbahasa pemograman D, selain mengkonstruksinyadengan perintah baris.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

120

Ringkasan

Page 135: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pemograman Bahasa D

1.Buka jendela terminal.2.Gunakat editor teks, buat sebuah file baru

bernama hello.d.3.Ketikan sebuah program D:

BEGIN{trace("hello, world");exit(0);}

4.Simpan file the hello.d.5.Jalankan program tersebut menggunakan opsi dtrace –

s:# dtrace -s hello.ddtrace: script ’hello.d’ matched 1 probeCPU ID FUNCTION:NAME0 1 :BEGIN hello, world#

Seperti diperlihat diatas, dtrace menampilkankeluaran yang sama seperti sebelumnya kemudiandiikuti teks “hello, world”. Tidak seperti contohsebelumnya, tidak diperlukan waktu untuk menungguataupun menekan Control-C.

Perubahan ini merupakan efek dari aksi yangdimiliki oleh probe BEGIN didalam hello.d. Dihalaman berikut, akan digali lebih dalam strukturprogram D untuk memahami apa yang sebenarnyaterjadi.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

121

Menuliskan Program DTrace

Page 136: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pemograman Bahasa D

Setiap program D terdiri atas sebuah urutan klausa-klausa, masing-masing klausa menggambarkan satuatau lebih probe yang akan diaktifkan, dansekumpulan aksi opsional yang akan dilakukan ketikaprobe terpicu. Aksi sendiri ditampilkan sebagaikumpulan urutan pernyataan yang diapit tanda kurung{ } setelah nama probe. Setiap pernyataan diakhirioleh sebuah tanda titik-koma (;).

Pernyataan pertama menggunakan fungsi trace() yangmenandakan bahwa DTrace seharusnya merekam argumanyang diberikan, string “hello, world”, ketika BEGINprobe terpicu dan menampilkannya ke monitor.Pernyataan kedua menggunakan fungsi exit() untukmenandakan bahwa DTrace seharusnya menghentikanproses merunut dan keluar dari perintah dtrace.

DTrace menyediakan sekumpulan fungsi – fungsi yangsangat berguna seperti trace() and exit() untukdigunakan didalam progam D. Untuk memanggil sebuahfungsi, spesifikasikan namanya diikuti olehargumen-argumennya didalam tanda kurung. Daftarlengkap fungsi-fungsi D dijelaskan dalam SolarisDynamic Tracing Guide.

Sampai disini, mereka yang terbiasa dengan bahasapemograman C, akan menyadari dari nama fungsi dancontoh-contoh diatas bahwa bahasa pemograman D yangdigunakan oleh DTrace sangat mirip dengan C danawk(1). Pada kenyataannya, bahasa D memang berasaldari sebagian besar sub-bagian bahasa C yangdikombinasikan dengan kumpulan fungsi-fungsi danvariabel khusus sehingga membantu memudahkan prosesmerunut.

Mereka yang sebelumnya pernah membuat program C,akan dengan segera mentransfer sebagian besarpengetahuan tentang C untuk membuat program tracingdalam bahasa D. Untuk mereka yang tidak mengenal

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

122

Diskusi

Page 137: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pemograman Bahasa D

bahasa C, mempelajari bahasa D tetap sangat mudah.Langkah pertama yang harus dilakukan adalahmemahami dengan benar kaidah-kaidahnya danmempelajari lebih dalam bagaimana DTrace bekerja,kemudian mempelajari bagaimana membuat program Dyang lebih menarik

.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

123

Page 138: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Men-debug Aplikasi denganDTrace

Tujuan dari modul ini adalah untuk menggunakanDTrace untum memonitor kejadian-kejadian tertentudari sebuah aplikasi.

Application Packaging Developer’s Guide.SunMicrosystems, Inc., 2005.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

8 M O D U L

Tujuan

124

Sumber BacaanLain

Page 139: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Mengaktifkan Probe Didalam Moda Pengguna

Mengaktifkan Probe Didalam ModaPengguna

DTrace memungkinkan juga untuk secara dinamismenambah probe-probe kedalam fungsi-fungsi ditingkat pengguna. Kode program pengguna tidak perluuntuk dikompilasi-ulang, bendera khusus, ataudistart-ulang. Probe-probe DTrace dapat dinyalakanhanya dengan pemanggilan penyedianya.

Sebuah deskripsi probe memili kaidah sebagaiberikut:

pid:mod:function:name

pid: format pid processid (contoh pid 5234)

mod: nama librari atau a.out (biner tereksekusi)

function: nama fungsi

name: entry for function entry return for functionreturn

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

125

Page 140: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Merunut Aplikasi Dengan DTrace

Merunut Aplikasi Dengan DTraceDidalam latihan ini akan dipelajari bagaimanamemanfaatkan DTrace untuk merunut sebuah aplikasi.

Lab ini dibuat dengan menggunakan nomor ID prosesdi dalam deskripsi probe untuk merunut aplikasitertentu. Langkah-langkahnya semakin kompleks dibagian akhir latihan ini, dengan menambahkan jumlahdan kedalaman informasi dari perilaku aplikasi yangteramati.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

126

Ringkasan

Page 141: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Merunut Aplikasi Dengan DTrace

1.Dari menu Application atau Program, jalankanprogram kalkulator.

2.Temukan nomor ID prosesnya.# pgrep gcalctool8198

Angka ini adalah nomor ID proses gcalctool,selanjutnya akan disebut procid.

3.Ikuti langkah-langkah berikut untuk membuat skripD yang akan menghitung berapa kali fungsi-fungsitertentu di dalam gcalctool dipanggil.

a.Dengan editor teks, buat sebuah file bernamaproc_func.d.

b.Gunakan pid$1:::entry sebagai deskripsi-probe.

$1 adalah argumen pertama yang yang diterima olehskrip, biarkan bagian predikat tetap kosong.

c.Dibagian aksi, tambahkan sebuah fungsipengkumulatif untuk menghitung jumlah totalberapa kali fungsi-fungsi tertentu dipanggildengan menggunakan aggregate statement

@[probefunc]=count().pid$1:::entry{@[probefunc]=count();}

d.Jalankan skrip yang baru dituliskan tadi.

# dtrace -qs proc_func.d procid

Ganti procid dengan nomor ID proses gcalctool

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

127

Merunut gcalctool denganDTrace

Page 142: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Merunut Aplikasi Dengan DTrace

e.Lakukan sebuah penghitungan di programkalkulator.

f.Tekan Control+C didalam jendela dimana skrip Ddijalankan.

Catatan – Skrip DTrace mengumpulkan data secaraterus menerus hingga diberhentikan dengan menekanControl+C. Jika tidak diperlukan untuk menampilkanjumlah data total yang dikumpulkan, DTrace tetapakan menampilkannya.

4.Sekarang, modifikasi skripnya sehingga hanyamenghitung fungsi-fungsi dari librari libc.

a. Salin file proc_func.d ke proc_libc.d.

b. Modifikasi deskripsi probe didalam fileproc_libc.d menjadi seperti berikut:

pid$1:libc::entry

c. Skrip barunya akan terlihat sepertiini:

pid$1:libc::entry{ @[probefunc]=count();}

5.Sekarang jalankan skripnya# dtrace -qs proc_libc.d procid

Ganti procid dengan nomor ID proses gcalctool

a. Lakukan sebuah perhitungan di kalkulator

b. Tekan Control+C didalam jendela dimanaskrip D dijalankan untuk melihat keluarannya.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

128

Page 143: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Merunut Aplikasi Dengan DTrace

6.Terakhir, modifikasi skripnya untuk mengetahuiberapa lama waktu yang diperlukan oleh masing-masing fungsi.

a. Buat sebuah file bernama func_time.d.

Gunakan dua deskripsi probe didalam func_time.d.

b. Tuliskan probe pertama seperti berikut:

pid$1:::entry

c. Tuliskan probe kedua seperti berikut:

pid$1:::return

d. Di bagian aksi dari probe pertama, simpantimestamp didalam variabel ts.

Timestamp adalah sebuah variable yang secarainternal tersedia (built-in) di DTrace danberfungsi untuk menghitung berapa nanosecondswaktu yang diperlukan dari titik tertentu yanglampau.

e. Dibagian aksi dari probe kedua hitungberapa nanosecond waktu total yang terlewati:

@[probefunc]=sum(timestamp - ts)

f. Skrip func_time.d akan sama dengan yangberikut ini:

pid$1:::entry{ ts = timestamp;}pid$1:::return /ts/{ @[probefunc]=sum(timestamp - ts);}

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

129

Page 144: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Merunut Aplikasi Dengan DTrace

7.Jalankan skrip func_time.d:# dtrace -qs func_time.d procid

Ganti procid dengan ID prosesnya gcalctool

a. Lakukan perhitungan dengan kalkulator.

b. Tekan Control+C di dalam terminal dimanaskrip D dijalankan untuk melihat keluaranperintahnya:

^Cgdk_xid__equal 2468_XSetLastRequestRead 2998_XDeq 3092...

Kolom kiri meperlihatkan nama fungsi dan kolomkanan memperlihatkan on waktu yang diperlukan untukfungsi tersebut. Satuan waktunya adalah nanoseconds.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

130

Page 145: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Men-debug Aplikasi C++ denganDTrace

Contoh-contoh yang terdapat dalam modul inimendemonstrasikan pemanfaatan DTrace untukmendiagnosa kesalahan-kesalahan pada aplikasi C++.Contoh-contoh ini juga digunakan untukmembandingkan DTrace dengan peranti pen-debugaplikasi yang lain, termasuk perangkat lunak SunStudio 10 dan mdb.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

9 M O D U L

Tujuan

131

Page 146: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

Menggunakan DTrace Untuk Men-debugdan Membuat Profil Sebuah Program C++

Sebuah program sampel CCtest dibuat untukmendemostrasikan sebuah kesalahan yang lazimterjadi di aplikasi C++ yaitu ketidakcukupanmemori. Dalam banyak hal, ketidakcukupan memoriterjadi ketika sebuah obyek dibuat tetapi tidakpernah dimusnahkan, dan kasus seperti ini yang adadidalam sampel program di modul ini.

Ketika men-debug sebuah program C++ program,perhatikan bahwa kompiler mengkonversi beberapanama dalam C++ menjadi kumpulan karakter danbilangan yang kompleks dan agak susah dipahami.

Nama-nama yang kompleks ini merupakan sebuahrincian implementasi yang diperlukan untukmendukung C++ pemuatan-berlebih (overloading)fungsi, untuk menyediakan nama eksternal yangberlaku untuk nama fungsi C++ yang terdirikarakter-karakter khusus, dan untuk membedakanfungsi dan variabel dengan nama yang samadideklarasikan di ruang nama dan kelas yangberbeda.

Contohnya, gunakan nm untuk mengekstraksi tabelsimbol dari sebuah sampel program yang bernamaCCtest menampikan keluaran sebagai berikut:

# /usr/ccs/bin/nm CCtest...[61] | 134549248| 53|FUNC |GLOB |0 |9 |__1cJTestClass2T5B6M_v_[85] | 134549301| 47|FUNC |GLOB |0 |9 |__1cJTestClass2T6M_v_[76] | 134549136| 37|FUNC |GLOB |0 |9 |__1cJTestClass2t5B6M_v_[62] | 134549173| 71|FUNC |GLOB |0 |9 |__1cJTestClass2t5B6Mpc_v_[64] | 134549136| 37|FUNC |GLOB |0 |9 |__1cJTestClass2t6M_v_[89] | 134549173| 71|FUNC |GLOB |0 |9 |__1cJTestClass2t6Mpc_v_[80] | 134616000| 16|OBJT |GLOB |0 |18 |__1cJTestClassG__vtbl_[91] | 134549348| 16|FUNC |GLOB |0 |9 |

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

132

Page 147: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

__1cJTestClassJClassName6kM_pc_...

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

133

Page 148: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

Catatan – Kode pemograman dan makefile untuk CCtesttersedia di halaman akhir modul ini.

Dari keluaran ini, dapat diasumsikan bahwa sejumlahsimbol-simbol acak yang muncul ketika mendebugberhubungan dengan sebuah bernama TestClass, tetapitidak dapat ditentukan apakah simbol-simbol iniberhubungan dengan konstruktor, destruktor, orfungsi-fungsi kelas.

Kompiler Sun Studio memasukan piranti berikut, yangdapat digunakan untuk menerjemahkan simbo-simbolacak ini menjadi simbol-simbol C++ pasangannya,yaitu: nm -C, dem, dan c++ filt.

Catatan – Perangkat lunak Sun Studio 10 digunakandisini, tetapi contoh-contoh dalam modul ini jugatelah ditest oleh Sun Studio 9 and 10.

Jika aplikasi C++ dikompilasi dengan gcc/g++,terdapat pilihan piranti lain untuk menerjemahkansymbol-simbol acak dari sebuah aplikasi yangdikenali baik oleh Sun Studio dan nama-nama simbolGNU, yaitu: gc++filt yang tersedia di /usr/sfw/bin dapatdigunakan untuk menerjemahkan simbol-simbol yangterdapat didalam aplikasi g++.

Contoh:

Simbol-simbol Sun Studio tanpa c++filt:

# nm CCtest | grep TestClass[65] | 134549280| 37|FUNC |GLOB |0 |9 |__1cJTestClass2t6M_v_[56] | 134549352| 54|FUNC |GLOB |0 |9 |__1cJTestClass2t6Mi_v_[92] | 134549317| 35|FUNC |GLOB |0 |9 |__1cJTestClass2t6Mpc_v_...

Simbol-simbol Sun Studio dengan c++filt:

# nm CCtest | grep TestClass | c++filt[65]|134549280| 37|FUNC |GLOB |0 |9 |TestClass::TestClass()

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

134

Page 149: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

[56]|134549352| 54|FUNC |GLOB |0 |9 |TestClass::TestClass(int)[92]|134549317| 35|FUNC |GLOB |0 |9 |TestClass::TestClass(char*)...

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

135

Page 150: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

simbol-simbol g++ tanpa gc++filt:

[86] | 134550070| 41|FUNC |GLOB |0 |12 |_ZN9TestClassC1EPc[110] | 134550180| 68|FUNC |GLOB |0 |12 |_ZN9TestClassC1Ei[114] | 134549984| 43|FUNC |GLOB |0 |12 |_ZN9TestClassC1Ev...

simbol-simbol g++ dengan gc++filt:

# nm gCCtest | grep TestClass | gc++filt[86] |134550070|41|FUNC|GLOB |0 |12|TestClass::TestClass(char*)[110]|134550180|68|FUNC|GLOB |0 |12|TestClass::TestClass(int)[114]|134549984|43|FUNC|GLOB |0 |12|TestClass::TestClass()...

Dan akhirnya, dengan nm –C untuk menampilkan simbol-simbol:

[64]|134549344|71|FUNC|GLOB|0|9|TestClass::TestClass()[__1cJTestClass2t6M_v_]

[87]|134549424|70|FUNC|GLOB|0|9|TestClass::TestClass(const char*)[__1cJTestClass2t6Mpkc_v_]

[57]|134549504|95|FUNC|GLOB|0|9|TestClass::TestClass(int)[__1cJTestClass2t6Mi_v_]

Berdasarkan informasi-informasi ini bisa dibuatkanskrip DTrace untuk melakukan pengumpulan informasi(aggregation) terhadap panggilan-panggilan obyekyang terkait dengan test program kita. Kita dapatmenggunakan penyedia pid DTrace untuk mengaktifkanprobe-probe yang berkaitan dengan simbol-simbol C++.

Untuk membuktikan teori konstruktor/destruktor,kita mulai dengan menghitung hal-hal berikut:

Jumlah obyek yang dibuat -- jumlah panggilan kefungsi new()

Jumlah obyek yang dimusnahkan – jumlah pnggilanke fungsi delete()

Dengan menggunakan perintah dibawah ini, kita bisamengekstrak simbol-simbol yang berkaitan denganfungsi new() and delete() dari program CCtest:

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

136

Page 151: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

# dem ‘nm CCtest | awk -F\| ’{ print $NF; }’‘ | egrep "new|delete"__1c2k6Fpv_v_ == void operator delete(void*)__1c2n6FI_pv_ == void*operator new(unsigned)

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

137

Page 152: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

Skrip DTrace dengan kegunaan yang sama dapatdigunakan untuk mengaktifkan probe terhadap fungsinew() dan delete(), skripnya bernama CCagg.d:

#!/usr/sbin/dtrace -spid$1::__1c2n6FI_pv_:{@n[probefunc] = count();}pid$1::__1c2k6Fpv_v_:{@d[probefunc] = count();}END{printa(@n);printa(@d);}

Jalankan program CCtest didalam sebuah jendela,kemudian eksekusi skrip CCagg.d di jendela yang lainseperti diperlihatkan berikut ini:

# dtrace -s ./CCagg.d ‘pgrep CCtest‘ | c++filt

Keluaran DTrace diteruskan dan menjadi masukan bagic++filt untuk diterjemahkan menjadi simbol-simbol C++, tetapi gunakan perintah ini dengan hati-hatiseperti tertulis dalam peringatan berikut ini.

Perhatian – Jangan gunakan ^C untuk keluar dariperintah DTrace seperti yang biasa dilakukan karenahal ini menyebabkan c++filt ikut berhenti bersamadengan DTrace sehingga tidak ada keluaran yangditampilkan.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

138

Page 153: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

Untuk menampilkan keluaran perintah ini, bukajendela baru dan ketikan perintah:

# pkill dtrace

Gunakan urutan langkah-langkah berikut sebagailanjutan latihan ini:

Jendela 1:

# ./CCtest

Jendela 2:

# dtrace -s scriptname | c++filt

Jendela 3:

# pkill dtrace

Keluaran di jendela 2 menampilkan jumlah totalpanggilan terhadap fungsi new() dan delete()seperti berikut ini:

void*operator new(unsigned) 12void operator delete(void*) 8

Dari pengamatan keluaran diatas, terlihat memangbenar dugaan bahwa lebih banyak obyek-obyek yangdibuat daripada yang dihapus.

Berikutnya adalah memeriksa alamat memori obyektersebut dan dan mencoba untuk mencocokannya dengansetiap keberadaan fungsi new() and delete(). Variabelargumen DTrace digunakan untuk menampilkan setiapalamat yang berkaitan dengan obyek.

Karena sebuah pointer ke obyek tertentu terdapatdidalam nilai balik fungsi new(), seharusnya akanterdapat nilai pointer yang sama sebagai arg0 dalampanggilan terhadap fungsi delete().

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

139

Page 154: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

Dengan sedikit modifikasi pada skrip sebelumnya,jadilah sebuah skrip baru bernama CCaddr.d:

#!/usr/sbin/dtrace -s#pragma D option quiet/*__1c2k6Fpv_v_ == void operator delete(void*)__1c2n6FI_pv_ == void*operator new(unsigned)*//* return from new() */pid$1::__1c2n6FI_pv_:return{printf("%s: %x\n", probefunc, arg1);}/* call to delete() */ pid$1::__1c2k6Fpv_v_:entry{printf("%s: %x\n", probefunc, arg0);}

Eksekusi skrip ini:

# dtrace -s ./CCaddr.d ‘pgrep CCtest‘ | c++filt

Tunggu sejenak, kemudian ketikan perintah berikutdidalam jendela 3:

# pkill dtrace

Keluarannya memperlihatkan sebuah pola berulangberikut, sebanyak tiga panggilan terhadap fungsinew() dan dua panggilan terhadap fungsi delete():

void*operator new(unsigned): 809e480void*operator new(unsigned): 8068a70void*operator new(unsigned): 809e4a0void operator delete(void*): 8068a70void operator delete(void*): 809e4a0

Dari hasil pengamatan terhadap keluaran yangberulang ini, sebuah pola menarik muncul. Terlihatbahwa setiap panggilan pertama terhadap fungsi new()tidak memiliki panggilan delete() yang terkaitnya.Disini sekarang sumber penyebab ketidakcukupanmemori dapat teridentifikasi!

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

140

Page 155: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

Dengan melanjutkan pengamatan menggunakan DTrace,informasi lain masih dapat diperoleh. Denganmemodifikasi skrip sebelumnya, dapat diketahui tipekelas yang berkaitan dengan obyek yang dibuat dialamat 809e480 dan panggilan terhadap ustack() untukfungsi new(). Skrip hasil modifikasi ini bernamaCCstack.d:

#!/usr/sbin/dtrace -s#pragma D option quiet/*__1c2k6Fpv_v_ == void operator delete(void*)__1c2n6FI_pv_ == void*operator new(unsigned)*/pid$1::__1c2n6FI_pv_:entry{ustack();}pid$1::__1c2n6FI_pv_:return{printf("%s: %x\n", probefunc, arg1);}pid$1::__1c2k6Fpv_v_:entry{printf("%s: %x\n", probefunc, arg0);}

Eksekusi CCstack.d di jendela 2, kemudian ketikanpkill dtrace di jendela 3 untuk menampilkan keluaranberikut:

# dtrace -s ./CCstack.d ‘pgrep CCtest‘ | c++filtlibCrun.so.1‘void*operator new(unsigned)CCtest‘main+0x19CCtest‘0x8050cda

void*operator new(unsigned): 80a2bd0

libCrun.so.1‘void*operator new(unsigned)CCtest‘main+0x57CCtest‘0x8050cda

void*operator new(unsigned): 8068a70

libCrun.so.1‘void*operator new(unsigned)CCtest‘main+0x9aCCtest‘0x8050cda

void*operator new(unsigned): 80a2bf0

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

141

Page 156: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

void operator delete(void*): 8068a70void operator delete(void*): 80a2bf0

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

142

Page 157: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

Berdasarkan data dari fungsi ustack() diperolehinformasi bahwa fungsi new() dipanggil dari main+0x19,main+0x57, dan main+0x9a. Pengamatan berikutnya lebihditujukan pada obyek yang berkaitan denganpanggilan pertama terhadap fungsi new() di main+0x19.

Untuk menentukan tipe konstruktor yang dipanggil dimain+0x19, manfaatkan mdb seperti berikut ini:

# gcore ‘pgrep CCtest‘gcore: core.1478 dumped

# mdb core.1478Loading modules: [ libc.so.1 ld.so.1 ]> main::dismain: pushl %ebpmain+1: movl %esp,%ebpmain+3: subl $0x38,%espmain+6: movl %esp,-0x2c(%ebp)main+9: movl %ebx,-0x30(%ebp)main+0xc: movl %esi,-0x34(%ebp)main+0xf: movl %edi,-0x38(%ebp)main+0x12: pushl $0x8main+0x14: call -0x2e4 <PLT=libCrun.so.1‘__1c2n6FI_pv_>main+0x19: addl $0x4,%espmain+0x1c: movl %eax,-0x10(%ebp)main+0x1f: movl -0x10(%ebp),%eaxmain+0x22: pushl %eaxmain+0x23: call +0x1d5 <__1cJTestClass2t5B6M_v_>...

Sebuah konstruktor dipanggil setelah panggilanterhadap fungsi new(), di alamat main+0x23. Panggilanini teridentifikasi sebagai panggilan terhadapkonstruktor __1cJTestClass2t5B6M_v_ dan panggilan initidak pernah dimusnahkan. Manfaatkan dem untukmenerjemahkan simbol ini:

# dem __1cJTestClass2t5B6M_v___1cJTestClass2t5B6M_v_ == TestClass::TestClass #Nvariant 1()

Dapat disimpulkan bahwa panggilan terhadapTestClass() baru di main+0x19 adalah penyebabterjadinya kekurangcukupan memori.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

143

Page 158: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

Pengamatan terhadap file kode pemograman CCtest.ccmemperlihatkan:

...t = new TestClass();cout << t->ClassName();

t = new TestClass((const char *)"Hello.");cout << t->ClassName(); tt = new TestClass((const char *)"Goodbye.");cout << tt->ClassName();

delete(t);delete(tt);...

Jelas terlihat bahwa pemakaian pertama kalivariabel t = new TestClass(); ditulis-ulangkan olehpemakain kedua: t = new TestClass((const char *)"Hello.");.Ketidakcukupan memori telah teridentifikasi danperbaikan bisa diimplementasikan.

Penyedia pid DTrace pid memungkinkan pengaktifanprobe terhadap sembarang instruksi yang berkaitandengan sebuah proses yang akan diamati. Contoh iniditujukan untuk membuat sebuah model pendekatanDTrace untuk secara interaktif men-debug proses.

Fitur-fitur DTrace yang digunakan dalam contoh inimeliputi: pengumpulan informasi (aggregations),menampilkan argumen-arguman fungsi dan nilai balikdan mengamati tumpukan panggilan pengguna (usercall stack).

Penggunaan perintah c++filt dari perangkat lunak SunStudio dan gc++filt dari gcc adalah untuk mengekstrakprobe-probe fungsi dari tabel simbol sebuah programdan menampilkan keluaran DTrace dalam format yangsesuai dengan kode pemogramannya.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

144

Page 159: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

File-file kode pemograman yang dibuat untuk contohini adalah sebagai berikut:

CONTOH 9–1 TestClass.h

class TestClass{public:TestClass();TestClass(const char *name);TestClass(int i);virtual ~TestClass();virtual char *ClassName() const;private:char *str;};TestClass.cc:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include "TestClass.h"TestClass::TestClass() {str=strdup("empty.");}TestClass::TestClass(const char *name) {str=strdup(name);}TestClass::TestClass(int i) {str=(char *)malloc(128);sprintf(str, "Integer = %d", i);}TestClass::~TestClass() {if ( str )free(str);}char *TestClass::ClassName() const {return str;}

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

145

Page 160: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Menggunakan DTrace Untuk Men-debug dan Membuat ProfilSebuah Program C++

CONTOH 9–2 CCtest.cc

#include <iostream.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include "TestClass.h"int main(int argc, char **argv){TestClass *t;TestClass *tt;while (1) {t = new TestClass();cout << t->ClassName();t = new TestClass((const char *)"Hello.");cout << t->ClassName();tt = new TestClass((const char *)"Goodbye.");cout << tt->ClassName();delete(t);delete(tt);sleep(1);}}

CONTOH 9–3 Makefile

OBJS=CCtest.o TestClass.oPROGS=CCtestCC=CCall: $(PROGS)echo "Done."clean:rm $(OBJS) $(PROGS)CCtest: $(OBJS)$(CC) -o CCtest $(OBJS).cc.o:$(CC) $(CFLAGS) -c $<

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

146

Page 161: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Manajemen Memori denganDTrace dan MDB

Didalam module ini akan dibahas bagaimana kitadapat menyusun kembali pengetahuan yang telahdiperoleh tentang pengamatan proses dengan DTraceuntuk melakukan pengujian kegagalan halaman memori(page fault). Kemudian pengujian ini diteruskandengan menggunakan MDB. MDB merupakan piranti pen-debug tingkat-dasar yang memungkinkan untukpencarian kesalahan hingga ke tingkat kodepemogramannya.

SolarisModular Debugger Guide SunMicrosystems,Inc., 2007.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

1 M O D U L

Tujuan

147

Sumber BacaanLain

Page 162: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Perangkat Lunak Untuk Manajemen Memori

Perangkat lunak Untuk ManajemenMemori

Manajemen memori di OpenSolaris menggunakan suatukonstruksi perangkat lunak yang disebut segmenuntuk menangani memori virtual sebuah proses jugakernel. Sebagian besar struktur data yang digunakanoleh perangkat lunak manajemen memori inididefinisikan di /usr/include/vm/*.h. Di dalam modulini, akan dipelajari kode pemograman dan strukturdata yang digunakan untuk menangani kegagalanhalaman memori.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

148

Page 163: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

Pengujian Memori Virtual denganDTrace dan MDB

Tujuan dari lab ini adalah untuk menguji kegagalanhalaman memori dengan menggunakan DTrace dan MDB.

Pertama, skrip DTrace digunakan untuk merunut aksi-aksi dari sebuah kegagalan halaman memori tunggaluntuk sebuah proses. Skrip ini menampilkan alamatmemori virtual yang menyebabkan suatu kegagalan,dan kemudian merunut setiap fungsi yang dipanggilterhitung dari waktu kegagalan halaman memoriterjadi hingga program kernel yang berfungsimenangani kegagalan virtual memori (fault handler)kembali. Dari pengamatan terhadap keluaran skripini dapat ditentukan bagian mana dari sumber kodepemograman yang harus diperiksa lebih lanjut.

Catatan- Didalam modul ini, telah ditambahkan teksinformasi keterangan dari keluaran skrip DTrace,yang sebagian besar berupa kode-kode, untukmembimbing latihan ini. Perhatikan simbol <----untuk menemukan teks keterangan yang terkait dengankeluaran tersebut.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

149

Ringkasan

Page 164: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

1.Buka sebuah jendela terminal2.Buatlah sebuah skrip DTrace bernama pagefault.d

seperti berikut ini:#!/usr/sbin/dtrace -s#pragma D option flowindentpagefault:entry/execname == $$1/{printf("fault occurred on address = %p\n", args[0]);self->in = 1;}pagefault:return/self->in == 1/{self->in = 0;exit(0);}entry/self->in == 1/{}return/self->in == 1/{}

3.Jalan skrip ini dengan Mozilla sebagaiargumennya.

Catatan – File yang dieksekusi untuk menjalankanMozilla adalah mozilla-bin bukan mozilla.Pernyataan dengan penekanan tertentu jugadigunakan untuk menampilkan berbagai macampanggilan, sebagai contoh adalah panggilanterhadap mutex_owner(), dengan menggunakanASSERT().Pernyataan dengan penekanan tertentu hanyadigunakan untuk men-debug kernel.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

150

Pengujian Kegagalan HalamanMemori Dari Sebuah ProsesDengan DTrace

Page 165: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

# ./pagefault.d mozilla-bin

dtrace: script ’./pagefault.d’ matched 42626 probes CPU FUNCTION0 -> pagefault fault occurred on address = fb985ea2

0 | pagefault:entry <-- i86pc/vm/vm_machdep.catau

sun4/vm/vm_dep.c0 -> as_fault <-- generic addressspace fault

common/vm/vm_as.c0 -> as_segat0 -> avl_find <-- segmen ada di strukturAVL0 -> as_segcompar <-- pencarian terhadapsegment0 <- as_segcompar <-- yang mengandungalamat yang gagal0 -> as_segcompar <-- common/vm/vm_as.c0 <- as_segcompar0 -> as_segcompar0 <- as_segcompar0 -> as_segcompar0 <- as_segcompar0 -> as_segcompar0 <- as_segcompar0 -> as_segcompar0 <- as_segcompar0 -> as_segcompar0 <- as_segcompar0 -> as_segcompar0 <- as_segcompar0 <- avl_find0 <- as_segat

0 -> segvn_fault<-- segmen yang mengandung kegagalan ditemukan,(bukan SEGV)<-- common/vm/seg_vn.c

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

151

Page 166: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

0 -> hat_probe <-- pencarian isian di tablehalaman

untuk halaman tersebut<-- i86pc/vm/hat_i86.c or sfmmu/vm/hat_sfmmu.c

0 -> htable_getpage <-- table halaman di-hash dix860 -> htable_getpte <-- i86pc/vm/htable.c0 -> htable_lookup0 <- htable_lookup0 -> htable_va2entry0 <- htable_va2entry0 -> x86pte_get <-- mengembalikan isian tablehalaman0 -> x86pte_access_pagetable0 -> hat_kpm_pfn2va0 <- hat_kpm_pfn2va0 <- x86pte_access_pagetable0 -> x86pte_release_pagetable0 <- x86pte_release_pagetable0 <- x86pte_get0 <- htable_getpte0 <- htable_getpage0 -> htable_release0 <- htable_release0 <- hat_probe

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

152

Page 167: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

0 -> fop_getpage <-- operasi file untuk mengisihalaman memori0 -> ufs_getpage <-- file ada di ufs

fs(common/fs/ufs/ufs_vnops.c)

0 -> bmap_has_holes <-- memeriksa sparsefile0 <- bmap_has_holes

0 -> page_lookup <-- memeriksa apakah halaman sudah ada di memori

0 -> page_lookup_create <-- common/vm/vm_page.c0 <- page_lookup_create <-- buat halaman jikaperlu0 <- page_lookup

0 -> ufs_getpage_miss <-- halaman tidak ada dimemori

0 -> bmap_read <-- dapatkan nomorblok untuk

halamantersebut dari inode

0 -> bread_common0 -> getblk_common0 <- getblk_common0 <- bread_common0 <- bmap_read

0 -> pvn_read_kluster <-- membaca halaman(common/vm/vm_pvn.c)

0 -> page_create_va <-- buat beberapahalaman0 <- page_create_va0 -> segvn_kluster0 <- segvn_kluster0 <- pvn_read_kluster

0 -> pageio_setup <-- siapkan halamanuntuk

operasi i/ocommon/os/bio.c

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

153

Page 168: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

0 <- pageio_setup

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

154

Page 169: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

0 -> lufs_read_strategy <-- pembacaan ufs di-log

0 -> bdev_strategy <-- baca perangkat common/os/driver.c

0 -> cmdkstrategy<-- common disk driver(cmdk(7D))

<--common/io/dktp/disk/cmdk.c

0 -> dadk_strategy<-- direct attached

disk (dad(7D))<-- untuk ide disks(common/io/dktp/dcdev/dadk.c)<-- driver mempersiapkan dma dan

memulai page in

0 <- dadk_strategy0 <- cmdkstrategy0 <- bdev_strategy

0 -> biowait <-- tunggu pagein selesai common/os/bio.c

0 -> sema_p <-- bangunkan sema_v setelah interupsi selesai

0 -> swtch <-- biarkan thread lainjalan

(common/disp/disp.c)0 -> disp <-- jadwalkan threadberikutnya

untuk dijalankan0 <- disp0 -> resume <-- switching sebenarnyaterjadi disini

<-- intel/ia32/ml/swtch.s0 -> savectx <-- simpan konteks yang lama0 <- savectx

<-- thread yang lainberjalan disini

0 -> restorectx <-- kembalikan kontext

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

155

Page 170: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

(thread dibangunakan)

0 <- restorectx0 <- resume0 <- swtch0 <- sema_p0 <- biowait

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

156

Page 171: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

0 -> pageio_done <-- batalkan pageio_setup0 <- pageio_done0 -> pvn_plist_init0 <- pvn_plist_init0 <- ufs_getpage_miss <-- halaman sekarang ada dimemori0 <- ufs_getpage0 <- fop_getpage0 -> segvn_faultpage <-- panggil hat untukmemuat pte(s) bagi

halaman bersangkutan0 -> hat_memload0 -> page_pptonum <-- dapatkan nomor framehalaman0 <- page_pptonum0 -> hati_mkpte <-- buat isian di tablehalaman0 <- hati_mkpte0 -> hati_pte_map <-- tentukan lokasi isian di

table halaman0 -> x86_hm_enter0 <- x86_hm_enter0 -> hment_prepare0 <- hment_prepare

0 -> x86pte_set <-- isi pte ke tablehalaman0 -> x86pte_access_pagetable0 -> hat_kpm_pfn2va0 <- hat_kpm_pfn2va0 <- x86pte_access_pagetable0 -> x86pte_release_pagetable0 <- x86pte_release_pagetable0 <- x86pte_set

0 -> hment_assign0 <- hment_assign0 -> x86_hm_exit0 <- x86_hm_exit0 <- hati_pte_map0 <- hat_memload0 <- segvn_faultpage0 <- segvn_fault0 <- as_fault0 <- pagefault

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

157

Page 172: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

#

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

158

Page 173: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

Perhatikan bahwa keluaran diatas sebenarnya sudahdiperpendek untuk kemudahan pemahaman. Padatingkat atas, ketika terjadi kegagalan halamanmemori hal-hal berikut akan terjadi:

Rutin pagefault() dipanggil untuk menanganikegagalan halaman memori s.

Rutin pagefault() memanggil as_fault() untukmenangani kegagalan pada sebuah alamatmemori

Rutin as_fault() menyusuri susunan AVL daristruktur seg untuk melakukan pencarian segmendengan alamat yang salah. Jika tidakditemukan segmen seperti ini, proses yangbersangkutan akan mengirimkan sebuah sinyalSIGSEGV (segmentation violation).

Jika segmen dengan alamat yang salahditemukan, sebuah program kernel faulthandler yang spesifik segmen dipanggil. Namafault handler ini adalah segvn_fault() yangdigunakan oleh sebagian besar segmen.

segvn_fault() mencari apakah lokasi memori yangsalah telah dipakai sebelumnya oleh prosesyang bersangkutan. Jika data dilokasi memoritersebut masih ada (tetapi sudah dinyatakanbebas oleh pemindai halaman memori - memoripage scanner), lokasi tersebut akan “diklaimulang” sehingga dikeluarkan daftar lokasiyang bebas. Jika lokasi di memori besertadatanya sudah tidak ditemukan lagi maka akandipanggil ufs_getpage().

ufs_getpage() berusaha menemukan nomor blokdidalam sistem file dari data yang semulaada di lokasi memori dengan memanggilbmap_read().

Selanjutnya dipanggil rutin strategi programpenggerak perangkat untuk menentukan rutin

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

159

Page 174: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

strategi apa yang akan dilakukan, lihatlebih lanjut dimanual strategy(9E).

Selama lokasi memori sedang dibaca, threadyang menyebabkan kegagalan halaman memoriblocks akan di-switch out melalui panggilanswtch(). Ini memberi kesempatan thread yanglain untuk aktif.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

160

Page 175: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

Ketika paging I/O telah lengkap, interrupthandler dari penggerak disk akanmembangunkan thread mozilla-bin yang semulaterblok.

Program penggerak disk kembali melalui kodesistem file kepada segvn_fault().

segvn_fault() kemudian memanggil segvn_faultpage().

segvn_faultpage() memanggil lapisan HAT(Hardware Address Translation) untuk mengisipage table entry(s) (PTE)s dari lokasimemori tadi.

Sampai disini, alamat memori virtual yangmenyebabkan kegagalan halaman memorisekarang sudah dipetakan kembali denganlokasi fisik memori yang benar. Ketikapagefault() kembali, instruksi-instruksi yangsemula menyebabkan kegagalan halaman memoriakan dijalankan ulang dan seharusnya akandiselesaikan dengan benar.

4.Memanfaatkan mdb untuk mengamati struktur datakernel dan menentukan lokasi memori fisik yangberhubungan dengan terjadinya kegagalan halamanmemori di memori virtual:a.Bukan jendela terminal

b.Hitung banyaknya segmen yang digunakan olehmozilla menggunakan perintah pmap sepertiberikut ini:

# pmap -x ‘pgrep mozilla-bin‘ | wc368 2730 23105#

Keluarannya memperlihatkan terdapat 368 segmen.

Catatan – Dari pencarian terhadap segmen yangmengandung kegagalan alamat memori ditemukansegmen-segmen yang benar setelah 8 segmen.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

161

Page 176: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

Perhatikan panggilan ke as_segcompar dari keluaran DTracediatas. Terbukti, penggunaan struktur AVL dapatmempersingkat pencarian!

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

162

Page 177: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

c.Gunakan mdb untuk menemukan lokasi segmendengan fault address.

Catatan – Jika diinginkan untuk menyimpan setiapaktivitas didalam mdb, gunakan perintah: ::log/tmp/logfile diikuti oleh perintah !vi /tmp/logfileuntuk memulai menyimpannya. Jika tidak, jalankanjalankan saja mdb didalam penyangga editor.

# mdb -kLoading modules: [ unix krtld genunix specfs dtraceufs ip sctp usba random fctl s1394nca lofs crypto nfs audiosup sppp cpc fcip ptm ipc ]

> ::ps !grep mozilla-bin <-- temukan proses mozilla-binR 933 919 887 885 100 0x42014000 ffffffff81d6a040 mozilla-bin

> ffffffff81d6a040::print proc_t p_as | ::walk seg | ::printstruct seg

<-- Beberapa informasi keluaran dihilangkan … -->

{s_base = 0xfb800000 <-- segment yang

dicari, alamat yang gagal

(fb985ea2)s_size = 0x561000 <-- lebih besar/sama

dengan terhadap base dan and <

base+sizes_szc = 0s_flags = 0s_as = 0xffffffff828b61d0s_tree = {avl_child = [ 0xffffffff82fa7920, 0xffffffff82fa7c80 ]avl_pcb = 0xffffffff82fa796d

}s_ops = segvn_ops

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

163

Page 178: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

s_data = 0xffffffff82d85070}

<-- dan banyak informasi keluaran dihilangkan lagi -->

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

164

Page 179: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

> ffffffff82d85070::print segvn_data_t <-- berasal dari s_data

{

lock = {_ opaque = [ 0 ]

}segp_slock = {

_ opaque = [ 0 ]}pageprot = 0x1prot = 0xdmaxprot = 0xftype = 0x2offset = 0vp = 0xffffffff82f9e480 <-- menunjuk ke

sebuah vnode_tanon_index = 0amp = 0 <-- kita akanmelihatnya lagi

kemudian di areaanonymous

vpage = 0xffffffff82552000cred = 0xffffffff81f95018swresv = 0advice = 0pageadvice = 0x1flags = 0x490softlockcnt = 0policy_info = {mem_policy = 0x1mem_reserved = 0}

}

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

165

Page 180: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

> ffffffff82f9e480::print vnode_t v_pathv_path = 0xffffffff82f71090"/usr/sfw/lib/mozilla/components/libgklayout.so"

> fb985ea2-fb800000=K <-- alamat didalam segmen185ea2 <-- nilai pembulatannyaadalah

185000 (ukuran page 4k)

> ffffffff82f9e480::walk page !wc <-- menelusuri daftarpage

pada vnode_t1236 1236 21012 <-- 1236 halamanmemori, (tidak

perlu semuanyabenar)

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

166

Page 181: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

> ffffffff82f9e480::walk page | ::print page_t <-- menyusuridaftar pglist pada vnode

<-- banyak informasi keluaran dihilangkan -->

{p_offset = 0x185000 <-- disini halaman memori yang

bersesuaiannyap_vnode = 0xffffffff82f9e480p_selock = 0p_selockpad = 0p_hash = 0xfffffffffae21c00p_vpnext = 0xfffffffffaca9760p_vpprev = 0xfffffffffb3467f8p_next = 0xfffffffffad8f800p_prev = 0xfffffffffad8f800p_lckcnt = 0p_cowcnt = 0p_cv = {

opaque = 0}p_io_cv = {

opaque = 0}

p_iolock_state = 0p_szc = 0p_fsdata = 0p_state = 0p_nrm = 0x2p_embed = 0x1p_index = 0p_toxic = 0p_mapping = 0xffffffff82d265f0p_pagenum = 0xbd62 <-- nomor frame

halaman dari sebuahhalaman memori

p_share = 0p_sharepad = 0p_msresv_1 = 0p_mlentry = 0x185p_msresv_2 = 0

}

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

167

Page 182: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

<-- banyak informasi keluaran dihilangkan -->

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

168

Page 183: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

> bd62*1000=K <-- perkalian antara nomorframe halaman

dengan ukuran halaman (hex)bd62000 <-- disini adalah alamat fisikdari

h alaman yang bersangkutan

> bd62000+ea2,10/K <-- menampilkan nilai 16 64-bithex

di alamat fisik0xbd62ea2: 2ccec81ec8b55 e8575653f0e48300 32c3815b00000000

5d89d46589003ea7 840ff6850c758be0 e445c7000007df1216e8000000 dbe850e4458d5650 7d830cc483ffeeea791840f00e4 c085e8458904468b 500c498b088b24748b17eb04c483d1ff e8458de05d8bd465c483ffeeeac8e850458b0000074ce904

> bd62000+ea2,10/ai <-- data terlihat sepertikode,

tampilkan sebagai kode0xbd62ea2:0xbd62ea2: pushq %rbp0xbd62ea3: movl %esp,%ebp0xbd62ea5: subl $0x2cc,%esp0xbd62eab: andl $0xfffffff0,%esp0xbd62eae: pushq %rbx0xbd62eaf: pushq %rsi0xbd62eb0: pushq %rdi0xbd62eb1: call +0x5 <0xbd62eb6>0xbd62eb6: popq %rbx0xbd62eb7: addl $0x3ea732,%ebx0xbd62ebd: movl %esp,-0x2c(%rbp)0xbd62ec0: movl %ebx,-0x20(%rbp)0xbd62ec3: movl 0xc(%rbp),%esi0xbd62ec6: testl %esi,%esi0xbd62ec8: je +0x7e5 <0xbd636ad>0xbd62ece: movl $0x0,-0x1c(%rbp)

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

169

Page 184: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

> ffffffff81d6a040::context <-- merubah kontext dari kernel ke mozilla-bin

kontext debugger ditentukan

menjadi proc ffffffff81d6a040,alamat proses

> fb985ea2,10/ai <-- dan tampilkan isi dari alamat virtual yang

gagal0xfb985ea2:0xfb985ea2: pushq %rbp <-- sepertinya sesuai0xfb985ea3: movl %esp,%ebp0xfb985ea5: subl $0x2cc,%esp0xfb985eab: andl $0xfffffff0,%esp0xfb985eae: pushq %rbx0xfb985eaf: pushq %rsi0xfb985eb0: pushq % rdi0xfb985eb1: call +0x5 <0xfb985eb6>0xfb985eb6: popq %rbx0xfb985eb7: addl $0x3ea732,%ebx0xfb985ebd: movl %esp,-0x2c(%rbp)0xfb985ec0: movl %ebx,-0x20(%rbp)0xfb985ec3: movl 0xc(%rbp),%esi0xfb985ec6: testl %esi,%esi0xfb985ec8: je +0x7e5 <0xfb9866ad>0xfb985ece: movl $0x0,-0x1c(%rbp)

> 0::contextdebugger context set to kernel

> ffffffff81d6a040::print proc_t p_as <-- dapatkan sebagai for mozilla-bin

p_as = 0xffffffff828b61d0

> fb985ea2::vtop -a ffffffff828b61d0 <-- periksa yang telah kita lakukan

virtual fb985ea2 mapped to physical bd62ea2 <--alamat fisk

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

170

Page 185: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

sesuai

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

171

Page 186: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Pengujian Memori Virtual dengan DTrace dan MDB

Begitu segmen yang mengalami kegagalan ditemukan,isi struktur data segvn_data langsung ditampilkan.Didalam segmen ini, sebuah vnode_t memetakan datasegmennya. Dilanjutkan dengan pencarian lokasihalaman memori yang berhubungan dengan alamatdidalam segmen tersebut.

Begitu lokasi page_t ditemukan, sebuah nomor framehalaman diperoleh. Kemudian nomor page framedikonversikan menjadi sebuah alamat fisik diikutidengan pengujian beberapa data di alamat fisiktersebut. Berikutnya mengeluarkan data inisebagai kode. Terakhir melakukan pengecekanterhadap alamat fisik dengan perintah mdb bernamavtop (virtual-to-physical).

d.Keuntungan tambahan: dengan menyusuri tablepage dari suatu proses dapat dilihat bagaimanasebuah alamat virtual diterjemahkan ke alamatfisiknya.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

172

Page 187: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Men-debug Program PenggerakPerangkat Dengan DTrace

Tujuan dari modul ini adalah untuk mempelajaribagaimana menggunakan DTrace untuk men-debug proyekpengembangan program penggerak perangkat tertentudengan menggunakan sebuah studi kasus.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

1 M O D U L

Tujuan

173

Page 188: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Program Penggerak smbfs dari Linux ke Solaris OS

Memindahkan Program Penggerak smbfsDari Linux Ke Solaris OS

Studi kasus ini memfokuskan pada pemakaian secaraoptimal kemampuan DTrace unutk membantupengembangan program penggerak perangkat.

Jauh sebelum ada DTrace, untuk men-debug programpenggerak perangkat seorang pengembang menggunakanpanggilan fungsi seperti cmn_err() yang akan me-loginformasi diagnosa ke file /var/adm/messages.

Proses yang merepotkan ini bersifat spekulatif,memerlukan kompilasi ulang dan reboot sistem untukmenemukan kesalahan kode pemograman sebuahperangkat lunak. Pengembang dengan bakat bahasaassembler-nya dapat menggunakan adb dan membuatmodul mdb yang diperlukan dalam bahasa C untukmendiagnosa kesalahan perangkat lunak. Namun,pendekatan lama untuk pengembangan dan men-debugkernel seperti ini menghabiskan waktu yang cukuplama.

DTrace menyediakan sebuah cara diagnosa yangpraktis. Daripada melakukan penulusuran file/var/adm/messages atau informasi keluaran perintahtruss, DTrace dapat digunakan untuk menangkapinformasi hanya untuk kejadian tertentu yang ingindiamati oleh pengembang. Seberapa besar manfaatyang bisa diperoleh dari penggunaan DTrace bisadibuktikan melalui beberapa contoh yang sederhanaberikut.

Program penggerak yang digunakan sebagai materistudi kasus dalam modul ini adalah programpenggerak smbfs yang telah dibuat berdasarkan modelprogram penggerak nfs milik Sun. Diasumsikan programpenggerak telah berhasil dikompilasi, langkahberikutnya adalah melakukan pengujian apakahprogram penggerak tersebut bisa dimuat dan

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

174

Page 189: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Program Penggerak smbfs dari Linux ke Solaris OS

dibongkar-muat secara benar. Hal pertama yang harusdilakukan adalah menyalin program penggeraktersebut ke /usr/kernel/fs dan cobalah memuatnyasecara manual dengan perintah modload:

# modload /usr/kernel/fs/smbfscan’t load module: Out of memory or no room in system tables

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

175

Page 190: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Program Penggerak smbfs dari Linux ke Solaris OS

Dan di dalam file /var/adm/messages terdapat informasi:

genunix: [ID 104096 kern.warning] WARNING: system call missingfrom bind file

Setelah pencarian informasi lebih lanjut dari pesankesalahan “system call missing”, disimpulkan bahwapesan kesalahan ini muncul karena fungsimod_getsysent() didalam file modconf.c gagal memanggilfungsi mod_getsysnum.

Daripada secara manual mengikuti alur program darifungsi mod_getsysnum() dari satu file kode pemogramanke file kode pemograman yang lain, skrip DTraceyang sederhana berikut ini digunakan untukmengaktifkan semua informasi dan kejadian balikdari penyedia fbt (Function Boundary Tracing) setiapkali mod_getsynum() dipanggil.

#!/usr/sbin/dtrace -s#pragma D option flowindent fbt::mod_getsysnum:entry/execname == "modload"/{self->follow = 1;}fbt::mod_getsysnum:return{self->follow = 0;trace(arg1);}fbt:::entry/self->follow/{}fbt:::return/self->follow/{trace(arg1);}

Catatan – trace(arg1) menampilkan nilai balik darisebuah fungsi tertentu.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

176

Page 191: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Program Penggerak smbfs dari Linux ke Solaris OS

Dengan mengeksekusi skrip ini dan menjalankanperintah modload di jendela yang lain diperolehkeluaran sebagai berikut:

# ./mod_getsysnum.ddtrace: script ’./mod_getsysnum.d’ matched 35750 probesCPU FUNCTION0 -> mod_getsysnum0 -> find_mbind0 -> nm_hash0 <- nm_hash 410 -> strcmp0 <- strcmp 42949672950 -> strcmp0 <- strcmp 70 <- find_mbind 00 <- mod_getsysnum 4294967295 Dengan melihat nilai balik fungsi find_mbind() yaitu'0' atau nm_hash() yaitu '41' mengarahkan kita padasumber masalahnya. Nilai balik 0 dari fungsifind_mbind() mengindikasikan adanya status kesalahan.

Dengan melihat kode pemograman fungsi find_mbind()didalam file /usr/src/uts/common/os/modsubr.c, terungkapbahwa fungsi tersebut melakukan pencarian stringchar dalam sebuah tabel hash.

Berikutnya DTrace dimanfaatkan untuk menampilkanisi string yang dicari dan isi tabel hash-nya.

Agar dapat menampilkan isi dari string yang dicaritersebut ditambahkan pernyataan strcmp() kedalamskrip mod_getsysnum.d yang terdahulu:

fbt::strcmp:entry{printf("name:%s, hash:%s", stringof(arg0),stringof(arg1));}

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

177

Page 192: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Program Penggerak smbfs dari Linux ke Solaris OS

Berikut adalah hasil keluarannya setelah dicobalagi untuk memuat program penggerak smbfs:

# ./mod_getsysnum.ddtrace: script ’./mod_getsysnum.d’ matched 35751 probesCPU FUNCTION0 -> mod_getsysnum0 -> find_mbind0 -> nm_hash0 <- nm_hash 410 -> strcmp0 | strcmp:entry name:smbfs,hash:timer_getoverrun0 <- strcmp 42949672950 -> strcmp0 | strcmp:entry name:smbfs,hash:lwp_sema_post0 <- strcmp 70 <- find_mbind 00 <- mod_getsysnum 4294967295

Jelas terlihat bahwa string yang dicari dalam tabelhash adalah smbfs dan string ini tidak ada dalamtabel. Bagaimana caranya memasukan string smbfs inikedalam tabel hash?

Kembali lagi ke fungsi find_mbind() untuk melanjutkanpengamatan dalam kode pemogramannya, ditemukansebuah variabel bername sb_hashtab milik tabel hashditeruskan ke fungsi nm_hash() yang juga mengalamikegagalan. Variabel sb_hashtab ternyatadiinisialisasi dengan sebuah panggilan terhadapfungsi read_binding_file() dimana fungsi ini memilikiargumen berupa sebuah file konfigurasi, tabel hash-nya sendiri dan sebuah pointer fungsi.

Berikutnya terungkap bahwa isi konfigurasi fileyang didefinisikan itu berasal dari file/etc/name_to_sysnum di file /usr/src/uts/common/os/modctl.c.Dari sini dapat disimpulkan bahwa kegagalan memuatprogram penggerak tersebut disebabkan karenakelalaian untuk menambahkan konfigurasi programpenggerak baru di dalam file /etc/name_to_sysnum.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

178

Page 193: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Program Penggerak smbfs dari Linux ke Solaris OS

Berikutnya tambahkan isian baru di file/etc/name_to_sysnum seperti berikut ini dan kemudianlakukan reboot.

’smbfs 177’

Catatan - Fungsi read_binding_file() hanya membacasekali saja file konfigurasi tersebut pada saatboot.

Setelah proses reboot selesai program penggeraksmbfs berhasil dimuatkan.

# modload /usr/kernel/fs/smbfs

Periksa lagi apakah program penggerak tersebuttelah dimuat dengan perintah modinfo:

# modinfo | grep smbfs160 feb21a58 351ac 177 1 smbfs (SMBFS syscall,client,comm)160 feb21a58 351ac 24 1 smbfs (network filesystem)160 feb21a58 351ac 25 1 smbfs (network filesystem version 2)160 feb21a58 351ac 26 1 smbfs (network filesystem version 3)

Catatan – Diingatkan kembali bahwa programpenggerak ini dibuat dengan meniru model programpenggerak nfs, ini menjelaskan mengapa keluarannyamenjadi seperti diatas.

Lanjutkan, dengan mencoba untuk membongkat-muatmodul tersebut:

# modunload -i 160can’t unload the module: Device busy

Nampaknya kesalahan ini disebabkan oleh adanyanilai balik errno EBUSY. Pengamatan menjadi lebihmudah karena program penggerak smbfs adalah sebuahmodul yang telah termuat sehingga semua fungsismbfs dapat diakses:

# dtrace -l fbt:smbfs:: | wc -l1002

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

179

Page 194: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Program Penggerak smbfs dari Linux ke Solaris OS

Ini luar biasa! Tanpa menggunakan kode pemogramankhusus sebanyak 1002 fungsi dan kejadian balikdalam sebuah program penggerak dapat diakses.Dengan memanfaatkan akses fungsi sebanyak 1002 inipekerjaan men-debug program penggerak dapatdilakukan tanpa memerlukan versi 'kodeterinstrumentasi' khusus!

Dengan menggunakan skrip DTrace sederhana berikutini, pengamatan terhadap semua panggilan smbfsketika perintah modunload dijalankan dapat dilakukan:

#!/usr/sbin/dtrace -s#pragma D option flowindentfbt:smbfs::entry{}fbt:smbfs::return{trace(arg1);}

Nampaknya kode-kode smbfs tidak dapat diakses olehmodunload. Berikutnya, gunakan skrip DTrace berikutini untuk pengamatan terhadap modunload:

#!/usr/sbin/dtrace -s#pragma D option flowindentfbt::modunload:entry{self->follow = 1;trace(execname);trace(arg0);}fbt::modunload:return{self->follow = 0;trace(arg1);}fbt:::entry/self->follow/{}fbt:::return/self->follow/

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

180

Page 195: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Program Penggerak smbfs dari Linux ke Solaris OS

{trace(arg1);}

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

181

Page 196: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Program Penggerak smbfs dari Linux ke Solaris OS

Keluaran skrip ini adalah sebagai berikut:

# ./modunload.ddtrace: script ’./modunload.d’ matched 36695 probesCPU FUNCTION0 -> modunload modunload 1600 | modunload:entry0 -> mod_hold_by_id0 -> mod_circdep0 <- mod_circdep 00 -> mod_hold_by_modctl0 <- mod_hold_by_modctl 00 <- mod_hold_by_id 36025666480 -> moduninstall0 <- moduninstall 160 -> mod_release_mod0 -> mod_release0 <- mod_release 36025666480 <- mod_release_mod 36025666480 <- modunload 16

Perhatikan bahwa nilai balik EBUSY sebesar '16' iniberasal dari moduninstall. Dengan melihat sumber kodepemograman untuk moduninstall ditemukan bahwamoduninstall memberikan nilai balik EBUSY di beberapalokasi. Beberapa kemungkinan lokasi yang adaadalah:

1. if (mp->mod_prim || mp->mod_ref || mp->mod_nenabled != 0)return (EBUSY);2. if ( detach_driver(mp->mod_modname) != 0 ) return (EBUSY);3. if ( kobj_lookup(mp->mod_mp, "_fini") == NULL )4. A failed call to smbfs _fini() routine

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

182

Page 197: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Program Penggerak smbfs dari Linux ke Solaris OS

Akses langsung ke semua kemungkinan lokasi initidak dapat dilakukan, tetapi pendekatan terhadaplokasi-lokasi ini dapat dilakukan dengan sebuahproses pengeliminasian. Dengan skrip berikut inidapat ditampilkan isi dari berbagai struktur dannilai balik didalam moduninstall:

#!/usr/sbin/dtrace -s#pragma D option flowindentfbt::moduninstall:entry{self->follow = 1;printf("mod_prim:%d\n", ((struct modctl *)arg0)->mod_prim);printf("mod_ref:%d\n",((struct modctl *)arg0)->mod_ref);printf("mod_nenabled:%d\n",((struct modctl *)arg0)->mod_nenabled);printf("mod_loadflags:%d\n",((struct modctl *)arg0)->mod_loadflags);}fbt::moduninstall:return{self->follow = 0;trace(arg1);}fbt::kobj_lookup:entry/self->follow/{}fbt::kobj_lookup:return/self->follow/{trace(arg1);}fbt::detach_driver:entry/self->follow/{}fbt::detach_driver:return/self->follow/{trace(arg1);}

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

183

Page 198: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Program Penggerak smbfs dari Linux ke Solaris OS

Skrip ini menghasilkan keluaran seperti berikutini:

# ./moduninstall.ddtrace: script ’./moduninstall.d’ matched 6 probesCPU FUNCTION0 -> moduninstallmod_prim:0mod_ref:0 mod_nenabled:0mod_loadflags:10 -> detach_driver0 <- detach_driver 00 -> kobj_lookup0 <- kobj_lookup 42731034560 <- moduninstall 16

Dengan membandingkan keluaran ini terhadap kodepemogramannya diperoleh fakta bahwa kegagalantersebut bukan disebabkan oleh nilai struktur mpataupun nilai balik yang berasal dari detach_driver()milik kobj_lookup().

Akibatnya, dengan proses pengeliminasian, harus adastatus tertentu dikembalikan melalui pangggilanstatus = (*func)(); dimana panggilan ini berikutnyaakan memanggil rutin smbfs _fini(). Berikut ini adalahisi dari rutin smbfs _fini():

int _fini(void){/* don’t allow module to be unloaded */return (EBUSY);}

Pengubahan nilai balik menjadi ‘0’ danmengkompilasi ulang sumber kode pemogramanany akanmenghasilkan sebuah program penggerak yang dapatdimuatkan dan dibongkar-muatkan secara dinamis,sehingga secara keseluruhan tujuan latihan initelah tercapai. Dalam contoh-contoh ini secarakhusus banyak digunakan penyedia Function BoundaryTracing. Dengan catatan bahwa fbt hanyalah salah

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

184

Page 199: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Membuat Program Penggerak smbfs dari Linux ke Solaris OS

satu dari sekian banyak penyedia DTrace.

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

185

Page 200: Pengantar Sistem Operasi: Sebuah Pendekatan Praktis Dengan ... · memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris. Pembelajaran

Sumber Bacaan TambahanOpenSolaris

Untuk mendapat informasi lebih lanjut, dukungan dantraining manfaatkan situs-situs berikut ini:

Dokumentasi Komunitas —http://opensolaris.org/os/community/documentation

Dokumentasi Sun —http://www.sun.com/documentation

Dukungan Sun — http://www.sun.com/support

Pelatihan Sun — Sun menawarkan berbagai pelatihanSolaris profesional dengan cakupan yang lengkapdan pilihan sertifikasi untuk membantu andamengaplikasi platform yang bertenaga ini demikesuksekan yang lebih besar kegiatan anda. Untukmendapat informasi lebih lanjut tentang pelatihanSolaris, kunjungi situs ini:

http://www.sun.com/training/catalog/operating_systems/index.xml

Pengantar Sistem Operasi: Sebuah Pendekatan Praktisdengan Menggunakan Proyek OpenSolaris – Agustus 2007

A AA P P E N D I XA

186