Rabu, 18 April 2012

Konsep Dasar Nama Service


Name Service dalam Sistem Terdistribusi merupakan layanan penamaan yang berfungsi untuk menyimpan naming context, yakni kumpulan binding nama dengan objek, tugasnya untuk me-resolve nama.

Pengaksesan resource pada sistem terdistribusi yang memerlukan:
- Nama resource (untuk pemanggilan),
- Alamat (lokasi resource tsb),
- Rute (bagaimana mencapai lokasi tsb).
Name Service memiliki konsentrasi pada aspek penamaan dan pemetaan antara nama & alamat, bukan pada masalah rute, yang dibahas di Jaringan Komputer. Resource yang dipakai dalam Name Service adalah: komputer, layanan, remote object, berkas, pemakai.

Contoh penamaan pada aplikasi sistem terdistribusi:
– URL untuk mengakses suatu halaman web.
– Alamat e-mail utk komunikasi antar pemakai.

Name Resolution, Binding, Attributes
– Name resolution: Nama ditranslasikan ke data ttg resource/object tsb.
– Binding: Asosiasi antara nama & obyek, dan biasanya nama diikat (bound) ke
attributes dr suatu obyek.
– Address: atribut kunci dari sebuah entitas dalam sistem terdistribusi.
─ Attribute: nilai suatu object property.

Tujuan atau manfaat penamaan antara lain adalah:
• Identifikasi:
Seorang pemakai menginginkan obyek/layanan A, bukan obyek/layanan B.
• Memungkinkan terjadinya sharing
Lebih dari satu pemakai dapat mengindentifikasikan resource dengan nama yang sesuai
(tidak harus nama yang sama).
• Memungkinkan location independence:
Perubahan lokasi tidak menuntut perubahan nama, asalkan lokasi tidak menjadi bagian
dari nama resource tsb.
• Memberikan kemampuan keamanan (security)
- Jika sebuah nama dipilih secara acak dari himpunan besar interger, maka nama tsb
hanya bisa diketahui dari legitimate source, bukan dari menebak.
- Jadi jika seseorang mengetahui nama obyek tsb, maka dia memang diberitahu,
karena sulit sekali menebak nama tsb.

Jenis nama
User names:
• Dibuat oleh pemakai (user).
• Merujuk pada suatu obyek atau layanan.
• Terdiri dari strings of characters.
Contoh: hp201 untuk pencetak, ~bettyp/tmp/test.c untuk berkas.
System names:
- Terdiri dari bit string.
- Internal untuk sistem, tidak ditujukan untuk manusia.
- Lebih compact dari user names, shg dapat dibandingkan dengan lebih efisien.
• Pure name : nama yang tidak perlu di terjemahkan, karena pada nama tersebut sudah
menunjuk alamat objek langsung.
– Contoh : IP
• non-pure name : dalam nama mengandung suatu informasi (atribut misalnya) tentang
suatu objek.
– Contoh : URL, alamat email, X.500 Directory Service, IOR (Interoperability Object
Reference).

Kebutuhan terhadap name service
• penamaan unik yang standard
• scalability
• Consistency
• performance dan availability
• mudah menyesuaikan terhadap perubahan perlindungan kegagalan

Struktur nama
Primitive/‡at names (Unique Identi…ers = UIDs)
a. Tanpa struktur internal, hanya string of bits.
b. Digunakan utk perbandingan dengan UID lain.
c. Tidak membawa informasi lain -> pure names.
d. Sangat berguna & banyak digunakan karena:
• Location & application independent, shg tidak menjadi masalah bagi mobilitas obyek.
• Seragam, fixed size.
• Compact: mudah disimpan, di-pass, & jika cukup besar menjadi sulit ditebak.
a) Partitioned Names (PN)
- Komposisi dari beberapa nama primitif, biasanya disusun secara hirarkis. Contoh:
www.gunadarma.ac.id/cs/docs/akademik/SisDis/naming.ppt.
- Membawa informasi -> impure names.
- Biasanya tidak secara unik mengidenti…kasikan obyek, beberapa nama bisa
dipetakan ke satu obyek (e.g. UNIX file links).
b) Descriptive names (DN)
- Daftar atribut yang secara bersama-sama mengidentifikasikan obyek secara unik.
- Membawa informasi -> impure names.
- DN adalah superset dari PN.

Tujuan fasilitas Penamaan
a. Efisien, karena fasilitas penamaan merupakan dasar pada sisdis & digunakan secara terus menerus.
b. Terdistribusi. Renungkan jika UIDs dibangkitkan oleh centralized generator.
• Bottleneck.
• Node tempat generator tsb mengalami kegagalan.
c. Tampak seperti global space, tidak tergantung konekti…tas, topologi, dan lokasi
obyek.
d. Mendukung pemetaan 1:many antara nama & obyek, untuk memungkinkan multicast.
e. Mendukung dynamic relocation of objects, jika obyek/proses potensial untuk mobile
(berpindah-pindah). Jadi diperlukan dynamic binding antara nama & alamat, juga
antara alamat & rute.
f. Memungkinkan local aliases, shg pemakai dapat mengekspresikan interpretasi
semantik mereka thdp suatu obyek. Tentu saja diperlukan pemetaan antara aliases dan
full names.


Source:
- http://sisterfrisca.blogspot.com/
- http://teg849.wordpress.com/2011/04/27/name-service/
- http://blogerahman.staff.unisbank.ac.id/files/2011/07/Sist-Terdistribusi-Anton-Pres10.pdf

Kamis, 05 April 2012

Proses Threading dalam Pemrograman


Suatu thread merupakan suatu alur instruksi yang di eksekusi. Program yang melakukan lebih dari satu alur instruksi biasa disebut melakukan multithreading.
Contoh, kita ingin membuat suatu aplikasi untuk meng-import file yang besar sementara memungkinkan user untuk menekan tombol “Batal”, seorang developer akan membuat thread tambahan untuk melakukan proses import. Dengan melakukan proses import di thread yang lain, aplikasi bisa menerima pesan pembatalan dari user daripada harus menyebabkan aplikasi menjadi “Not Responding” sampai proses upload selesai.
Suatu sistem operasi men-simulasikan beberapa thread melalui mekanisme yang disebut “time slicing”. Time Slicing adalah mekanisme dimana sistem operasi mengalihkan eksekusi dari satu thread (urutan instruksi) ke thread berikutnya sehingga proses eksekusi perintah secara terus menerus akan tetap berlanjut dengan cepat.
Efeknya hampir sama dengan efek dalam kabel fiber optic dari telepon, dimana kawat dari fiber optic mewakili processor dan setiap percakapan yang terjadi mewakili suatu thread. Satu (single-mode) kawat fiber optic telepon hanya bisa mengirimkan 1 sinyal  pada sekali pakai, tetapi banyak orang bisa saling melakukan percakapan secara terus menerus. Channel-channel dalam fiber optic cukup cepat dalam melakukan pergantian antar percakapan. Hampir sama, setiap thread dari suatu proses multithread selalu berjalan terus menerus secara paralel dengan thread yang lain.
Suatu thread seringkali menunggu event-event yang berbeda, seperti operasi I/O, mengganti ke suatu thread yang berbeda menyebabkan lebih efisiennya proses eksekusi perintah, karena processor tidak perlu idle untuk menunggu sampai operasi selesai.
Tetapi, mengganti proses dari satu thread ke thread yang lain akan bisa menyebabkan “overhead”. Jika terlalu banyak thread, pengalihan overhead akan membanjiri bagian dari proses thread yang sedang di eksekusi, juga, sistem akan mulai berjalan lambat – mulai melakukan proses pergantian antar thread daripada menyelesaikan proses dari thread sebelumnya terlebih dahulu.
Yang baru mengenal programming-pun pasti pernah mendengar istilah multithreading sebelumnya, seringkali mengenai kerumitannya.
Pemrograman,  betapapun, meninggalkan suatu kerumitan yang patut dipertimbangkan, tidak sebanyak seperti membuat aplikasi yang memiliki banyak thread.
Atomicity (Valensi)
Pikirkan suatu kode program yang melakukan proses transfer dari suatu rekening. Pertama, pastikan apakah dananya cukup, jika cukup, proses transfer terjadi. Jika sesudah mengecek dana, eksekusi diganti dengan thread untuk menghapus dana tersebut, maka akan menyebabkan proses transfer yang invalid ketika proses eksekusi kembali ke thread awal. Mengatur akses rekening sehingga hanya satu thread yang bisa mengakses rekening tersebut, dalam satu waktu akan memperbaiki masalah dan menjadikan transfer tersebut “atomic”.
Suatu operasi atomic adalah satu, yang mana menyelesaikan seluruh prosesnya sampai selesai, atau mengembalikan sistem ke kondisi awal. Operasi transfer pada bank pastinya merupakan suatu operasi atomic karena melibatkan 2 langkah. Dalam proses melakukan langkah-langkah tersebut, sangat mungkin kehilangan operasi atomicity jika thread yang lain melakukan modifikasi terhadap rekening sebelum proses transfer selesai.
Identifikasi dan implementasi atomicity merupakan salah satu kerumitan utama dalam pemrograman multithreading.
Kerumitannya bertambah karena secara umum statemen dalam C# tidak secara penuh memerlukan atomic. _Count++, sebagai contohnya, merupakan statemen dalam C#, tetapi diterjemahkan menjadi beberapa instruksi untuk processor.
1. Proses membaca data dalam Count.
2. Processor mengkalkulasikan nilai yang baru.
3. Nilai baru diberikan pada Count (walaupun ini mungkin bukan atomic).
Sesudah data diakses, tetapi sebelum nilai baru diberikan, thread yang lain mungkin akan memodifikasi nilai aslinya.
Deadlock
Untuk menghindari kondisi yang tidak diinginkan, bahasa pemrograman mendukung kemampuan untuk mengunci dan membatasi kode untuk dijalankan pada thread tertentu, umumnya satu. Tetapi, jika perintah penguncian dijalankan pada thread berbeda, suatu deadlock bisa terjadi, seperti thread menjadi berhenti, masing-masing menunggu yang lain untuk melepaskan penguncian.
Contohnya :
Pada poin ini, setiap thread menunggu thread lain sebelum memulai proses, jadi setiap thread dikunci, sehingga mengakibatkan deadlock secara keseluruhan dalam proses eksekusi kode yang dijalankan.
Masalah dari code yang tidak atomic atau menyebabkan deadlock adalah bahwa kode tersebut tergantung pada  urutan terjadinya instruksi dalam processor pada beberapa thread.
Sekilas pemrograman multithreading memang agak susah dan rumit, semua tergantung bagaimana logika programmer dalam mengatasinya. Salam

Software, Teknologi dan Bahasa Komunikasi Agent


Software
Perangkat Lunak merupakan suatu program yang dibuat oleh pembuat program untuk menjalankan perangkat keras komputer. Perangkat Lunak adalah program yang berisi kumpulan instruksi untuk melakukan proses pengolahan data. Perangkat lunak sebagai penghubung antara manusia sebagai pengguna dengan perangkat keras komputer, berfungsi menerjemahkan bahasa manusia ke dalam bahasa mesin sehingga perangkat keras komputer memahami keinginan pengguna dan menjalankan instruksi yang diberikan dan selanjutnya memberikan hasil yang diinginkan oleh manusia tersebut.
Perangkat lunak komputer berfungsi untuk :
1.    Mengidentifikasi program
2.    Menyiapkan aplikasi program sehingga tata kerja seluruh perangkat komputer terkontrol.
3.    Mengatur dan membuat pekerjaan lebih efisien.

Macam-macam Perangkat Lunak
1.    Sistem Operasi (Operating System),
2.    Program Aplikasi (Application Programs),
3.    Bahasa Pemrograman (Programming Language),
4.    Program Bantu (Utility)

Teknologi

 Teknologi adalah metode ilmiah untuk mencapai tujuan praktis; ilmu pengetahuan terapan atau dapat pula diterjemahkan sebagai keseluruhan sarana untuk menyediakan barang-barang yg diperlukan bagi kelangsungan dan kenyamanan hidup manusia.
Ada tiga klasifikasi dasar dari kemajuan teknologi yaitu :
§  Kemajuan teknologi yang bersifat netral (bahasa Inggrisneutral technological progress)
Terjadi bila tingkat pengeluaran (output) lebih tinggi dicapai dengan kuantitas dan kombinasi faktor-faktor pemasukan (input) yang sama.
§  Kemajuan teknologi yang hemat tenaga kerja (bahasa Inggrislabor-saving technological progress)
Kemajuan teknologi yang terjadi sejak akhir abad kesembilan belas banyak ditandai oleh meningkatnya secara cepat teknologi yang hemat tenaga kerja dalam memproduksi sesuatu mulai dari kacang-kacangan sampai sepeda hingga jembatan.
§  Kemajuan teknologi yang hemat modal (bahasa Inggriscapital-saving technological progress)
Fenomena yang relatif langka. Hal ini terutama disebabkan karena hampir semua riset teknologi dan ilmu pengetahuan di dunia dilakukan di negara-negara maju, yang lebih ditujukan untuk menghemat tenaga kerja, bukan modalnya.

Bahasa Komunikasi Agent

 Komunikasi antar agent terjadi ketika mereka akan menyampaikan pesan atau informasi tertentu. Dalam berkomunikasi, agent memiliki cara tersendiri yang simulasinya dapat kita lihat pada pemakaian netlogo. Komunikasi bisa di definisikan sebagai proses bertukar informasi antar agent. Agent memperlihatkan cara berkomunikasinya ketika akan menyampaikan informasi pada agent lainnya.
 Bahasa di definisikan sebagai satu set simbol yang dikomunikasikan oleh agent untuk menyampaikan informasi. Dalam artificial intelligent bahasa manusia sering disebut bahasa alami sebagai pembeda dengan bahaa pemrograman komputer. Bahasa juga didefinisikan sebagai satu set aturan sosial bersama yang diterima dan dibatasi oleh aturan tata bahasa.

sumber :