5.11.2012

Last Lost

I. PENDAHULUAN Saya akan membuat sebuah game yang merupakan salah satu contoh dari penerapan kecerdasan buatan, dimana tujuan dari pembuatan game ini adalah untuk memberikan kecerdasan buatan kepada komputer agar mendapat kecerdasan seperti halnya manusia dan dapat bermain melawan manusia (player). Sebenarnya kecerdasan buatan merujuk kepada mesin yang mampu untuk berpikir, menimbang tindakan yang akan diambil, dan mampu mengambil keputusan seperti yang dilakukan oleh manusia. Kecerdasan buatan (artificial intelligence) jika diterjemahkan kedalam bahasa Indonesia berarti tiruan dari sesuatu yang cerdas, jadi disini kita membuat mesin menjadi cerdas dalam artian memiliki kemampuan untuk berpikir sehingga dapat memecahkan suatu masalah seperti halnya otak manusia Bahasa pemrograman yang saya pakai untuk membuat game ini adalah strawberry prolog. Strawberry Prolog adalah dialek dari bahasa pemrograman Prolog. Strawberry Prolog sangat mudah digunakan dan itulah sebabnya beberapa universitas tertarik untuk mengembangkannya. Kompiler Prolog ini merupakan bagian dari proyek AI. II. CARA BERMAIN “LAST LOST” Pada permainan ini kita bermain melawan komputer dimana kita dituntut untuk membuat strategi agar dapat mengalahkan komputer tersebut. Tampilan awal dari permainan ini adalah menampilkan gambar yang disusun berurutan sebanyak 5 kolam dimana jumlah gambar dari kolom pertama sampai kolom kelima berturut-turut satu sampai lima buah gambar. Cara bermainnya cukup mudah yaitu dimana masing-masing player (kita dan komputer) dapat menghilangkan gambar yang sudah ada caranya adalah dengan mengklik pada gambar yang ingin dihilangkan. Gambar yang dihilangkan boleh lebih dari satu gambar asalkan gambar tersebut terdapat dalam satu kolom dan menghilangkannya harus berurutan. Pada permainan ini kita dapat menentukan siapakah orang pertama yang akan menghilangkan gambar. Untuk peraturan default-nya kita diharuskan sebagai orang pertama yang memulai untuk menghilangkan gambar tersebut. Kita (player) dan komputer akan secara bergantian memiliki giliran untuk menghilangkan gambar tersebut sampai permainan berakhir dimana yang menghilangkan gambar paling terakhir akan kalah. Jadi untuk bermain game ini kita tidak hanya dituntut untuk menghilangkan gambarnya saja tapi kita juga dituntut untuk mengatur strategi dalam menghilangkan gambar maupun jumlah gambar yang akan kita hilangkan sehingga nantinya kita dapat menang. Pada game ini juga terdapat beberapa menu antara lain New Game yang berfungsi untuk memulai permainan baru, Options yang berfungsi untuk melakukan pengaturan pada permainan, salah satunya adalah untuk menentukan siapa yang pertama memulai permainan (player atau komputer), Help untuk menjelaskan secara ringkas cara bermain dan Exit untuk keluar dari permainan. Berikut ini adalah tampilan interface game “Last Lost”.
Gambar: tampilan awal game
Gambar: saat kita memenagkan permainan
Gambar: saat kita kalah III. ALGORITMA AI YANG DIPAKAI Salah satu contoh penerapan kecerdasan buatan adalah pembuatan game yang berbasis AI atau biasa juga disebut dengan game knowledge. Tujuan dari pembuatan game knowledge adalah untuk mengasah otak dan menambah pengetahuan atau juga hanya untuk kesenangan belaka. Game knowledge umumnya dimainkan oleh dua player dimana salah satu player-nya adalah komputer, jadi user akan merasa tertantang untuk mengalahkan komputer tersebut. Selain itu game knowledge biasanya dimainkan secara bergantian oleh user dan komputer. Langkah pertama yang harus kita lakukan ketika kita akan membuat sebuah game yang berbasis artificial intelligence adalah menentukan algoritma apa yang akan kita gunakan dalam membuat game tersebut sehingga game AI yang kita buat tersebut dapat berpikir seperti manusia sehingga dapat memecahkan sebuah masalah. Pemiliham algoritma ini sangat menentukan keberhasilan system kecerdasan buatan yang akan kita buat. Algoritma yang dipakai di game “Last Lost” ini adalah algoritma minimax, jadi komputer berjalan dengan menggunakan algoritma minimax. Algorima minimax adalah algorima yang melakukan pengecekan dengan cara mengecek seluruh kemungkinan yang ada sampai akhir permainan. Pengecekan tersebut akan menghasilkan pohon permainan yang berisi semua kemungkinan tersebut. Jadi kita bisa banyangkan betapa banyaknya kombinasi kemungkinan setiap gerakan pada game “Last Lost” ini. Seperti penjelasan diatas algoritma minimax ini mampu menganalisis segala kemungkinan posisi permainan sehingga dapat menghasilkan keputusan yang terbaik karena algoritma minimax ini bekerja secara rekursif dengan mencari langkah yang akan membuat lawan mengalami kerugian maximum. Semua strategi atau langkah lawan akan dihitung dengan algoritma yang sama sampai permainan berakhir. Ini berarti, pada langkah pertama komputer akan menganalisis seluruh kemungkinan (pohon permainan). Dan untuk setiap langkahnya, komputer akan memilih langkah yang paling membuat lawan mendapatkan keuntungan paling minimum dari semua kemungkinan yang ada, dan yang membuat komputer itu sendiri mendapatkan keuntungan paling maksimum. Dalam penentuan keputusan tersebut dibutuhkan suatu nilai yang merepresentasikan kerugian atau keuntungan yang akan diperoleh jika langkah tersebut dipilih. Untuk itulah disini digunakan sebuah fungsi heurisitic untuk mengevaluasi nilai sebagai nilai yang merepresentasikan hasil permainan yang akan terjadi jika langkah tersebut dipilih. Pada game “LAST LOST” ini juga menggunakan algoritma greedy, algoritma Greedy digunakan pada saat komputer menentukan untuk mengambil bitmap beserta jumlah yang mungkin disetiap kolomnya saat mendapatkan giliran jalan dalam game ini. komputer menentukan keputusan tersebut dengan melihat prioritas yang lebih tinggi tanpa memikirkan langkah selanjutnya. Dia hanya akan memikirkan langkah pada saat gilirannya saja, tak mempedulikan langkah yang harus dia ambil berikutnya. Intinya menunggu lawan untuk menjalankan gilirannya terlebih dahulu. Tujuan (goal) dari game “Last Lost” ini adalah supaya menjadikan lawan sebagai pemain yang akan menghilangkan gambar paling akhir, jadi kedua player akan berpikir dan mengatur strategi agar tidak menjadi pemain terakhir yang akan menghilangkan gambar. Jadi AI yang kita buat ini akan membuat komputer berpikir untuk memilih kemingkinan terbaik yang memberikan keuntungan maximum kepada komputer itu sehingga dapat mengalahkan lawan dengan cara menjadikan lawan sebagai pemain terakhir yang akan menghilangkan gambarnya.
READ MORE - Last Lost

4.10.2012

Proses dan Thread Dalam Sistem Operasi


Proses

Satu selingan pada diskusi kita mengenai sistem operasi yaitu bahwa ada sebuah pertanyaan mengenai apa untuk menyebut semua aktivitas CPU. Sistem batch mengeksekusi jobs, sebagaimana suatu sistem time-shared telah menggunakan program pengguna, atau tugas-tugas/ pekerjaan-pekerjaan. Bahkan pada sistem tunggal, seperti Microsoft Windows dan Macintosh OS, seorang pengguna mampu untuk menjalankan beberapa program pada saat yang sama: sebuah Word Processor, Web Browser, dan paket e-mail. Bahkan jika pengguna dapat melakukan hanya satu program pada satu waktu, sistem operasi perlu untuk mendukung aktivitas program internalnya sendiri, seperti managemen memori. Dalam banyak hal, seluruh aktivitas ini adalah serupa, maka kita menyebut seluruh program itu proses-proses (processes).

Istilah job dan proses digunakan hampir dapat dipertukarkan pada tulisan ini. Walau kami pribadi lebih mneyukai istilah proses, banyak teori dan terminologi sistem-operasi dikembangkan selama suatu waktu ketika aktivitas utama sistem operasi adalah job processing. Akan menyesatkan untuk menghindari penggunaan istilah umum yang telah diterima bahwa memasukkn kata job (seperti penjadualan job) hanya karena proses memiliki job pengganti/ pendahulu.

Konsep Dasar dan Definisi Proses

Secara informal; proses adalah program dalam eksekusi. Suatu proses adalah lebih dari kode program, dimana kadang kala dikenal sebagai bagian tulisan. Proses juga termasuk aktivitas yang sedang terjadi, sebagaimana digambarkan oleh nilai pada program counter dan isi dari daftar prosesor/ processor's register. Suatu proses umumnya juga termasuk process stack, yang berisikan data temporer (seperti parameter metoda, address yang kembali, dan variabel lokal) dan sebuah data section, yang berisikan variabel global.

Kami tekankan bahwa program itu sendiri bukanlah sebuah proses; suatu program adalah satu entitas pasif; seperti isi dari sebuah berkas yang disimpan didalam disket, sebagaimana sebuah proses dalam suatu entitas aktif, dengan sebuah program counter yang mengkhususkan pada instruksi selanjutnya untuk dijalankan dan seperangkat sumber daya/ resource yang berkenaan dengannya.

Walau dua proses dapat dihubungkan dengan program yang sama, program tersebut dianggap dua urutan eksekusi yang berbeda. Sebagai contoh, beberapa pengguna dapat menjalankan copy yang berbeda pada mail program, atau pengguna yang sama dapat meminta banyak copy dari program editor. Tiap-tiap proses ini adakah proses yang berbeda dan walau bagian tulisan-text adalah sama, data section bervariasi. Juga adalah umum untuk memiliki proses yang menghasilkan banyak proses begitu ia bekerja. Kami mendiskusikan masalah tersebut pada bagian berjudul Hubungan Antara Proses.

Keadaan Proses

Sebagaimana proses bekerja, maka proses tersebut merubah state (keadaan statis/ asal). Status dari sebuah proses didefinisikan dalam bagian oleh aktivitas yang ada dari proses tersebut. Tiap proses mungkin adalah satu dari keadaan berikut ini:


New: Proses sedang dikerjakan/ dibuat.

Running: Instruksi sedang dikerjakan.

Waiting: Proses sedang menunggu sejumlah kejadian untuk terjadi (seperti sebuah penyelesaian I/O atau penerimaan sebuah tanda/ signal).

Ready: Proses sedang menunggu untuk ditugaskan pada sebuah prosesor.

Terminated: Proses telah selsesai melaksanakan tugasnya/ mengeksekusi.

Nama-nama tersebut adalah arbitrer/ berdasar opini, istilah tersebut bervariasi disepanjang sistem operasi. Keadaan yang mereka gambarkan ditemukan pada seluruh sistem. Namun, sistem operasi tertentu juga lebih baik menggambarkan keadaan/ status proses. Adalah penting untuk menyadari bahwa hanya satu proses dapat berjalan pada prosesor mana pun pada waktu kapan pun. Namun, banyak proses yang dapat ready atau waiting. Keadaan diagram yang berkaitan dangan keadaan tersebut dijelaskan pada Gambar 2.1.

Gambar 2.1 Keadaan Proses




Process Control Block

Tiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) - juga disebut sebuah control block. Sebuah PCB ditunjukkan dalam Gambar 2-2. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk ini:

Keadaan proses: Keadaan mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.

Program counter: Counter mengindikasikan address dari perintah selanjutnya untuk dijalankan untuk proses ini.

CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator, index register, stack pointer, general-puposes register, ditambah code information pada kondisi apa pun. Besertaan dengan program counter, keadaan/ status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/ bekerja dengan benar setelahnya (lihat Gambar 2-3).

Informasi managemen memori: Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel page/ halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem operasi (lihat Bab 4).

Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun, jumlah job atau proses, dan banyak lagi.

Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini, suatu daftar open berkas dan banyak lagi.

PCB hanya berfungsi sebagai tempat menyimpan/ gudang untuk informasi apa pun yang dapat bervariasi dari prose ke proses.


Gambar 2.2 Process Control Block


Gambar 2.3. CPU Register


Thread

Proses merupakan sebuah program yang mengeksekusi thread tunggal. Kendali thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Banyak sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk mengeksekusi multi-threads. Misalnya user melakukan pekerjaan secara bersamaan yaitu mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama. Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread ID, program counter, register set, dan stack. Sebuah thread berbagi code section, data section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process. Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaannya ialah proses dengan thread yang banyakmengerjakan lebih dari satu tugas pada satu satuan waktu.

Pada umumnya, perangkat lunak yang berjalan pada komputer modern dirancang secara multithreading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang terpisah dengan beberapa thread yang berfungsi sebagai pengendali. Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network.

Terkadang ada sebuah aplikasi yang perlu menjalankan beberapa tugas yang serupa. Sebagai contohnya sebuah web server dapat mempunyai ratusan klien yang mengaksesnya secara concurrent. Kalau web server berjalan sebagai proses yang hanya mempunyai thread tunggal maka ia hanya dapat melayani satu klien pada pada satu satuan waktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia harus menunggu sampai klien sebelumnya selesai dilayani. Solusinya adalah dengan membuat web server menjadi multi-threading. Dengan ini maka sebuah web server akan membuat thread yang akan mendengar permintaan klien, ketika permintaan lain diajukan maka web server akan menciptakan thread lain yang akan melayani permintaan tersebut [MDGR2006].

Keuntungan Thread

Beberapa keuntungan dari penggunaan thread adalah sebagai berikut:

a. Responsif. Aplikasi interaktif menjadi tetap responsif meski pun sebagian dari program sedang diblok atau melakukan operasi yang panjang kepada pengguna. Umpamanya, sebuah thread dari web browser dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan gambar.

b. Berbagi sumber daya. Thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.

c. Ekonomis. Pembuatan sebuah proses memerlukan dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan konteks penukaran thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dan konteks penukaran proses lima kali lebih lama dibandingkan konteks penukaran thread.

d. Utilisasi arsitektur multiprocessor. Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread yang dijalankan CPU pada satu-satuan waktu (satusatuan waktu pada CPU biasa disebut time slice atau quantum).

Model Multithreading

Dukungan thread disediakan pada tingkat user yaitu user threads atau tingka kernel untuk kernel threads. User Threads disediakan oleh kernel dan diatur tanpa dukungan kernel, sedangkan kernel therads didukung dan diatur secara langusng oleh sistem operasi. Hubungan antara user threads dan kernel threads terdiri dari tiga model relasi, yaitu:

Model Many to One: Model Many-to-One memetakan beberapa thread tingkatan pengguna ke sebuah thread tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna, sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat. Jadi, multiple thread tidak dapat berjalan secara paralel pada multiprocessor. Thread tingkat pengguna yang diimplementasi pada sistem operasi yang tidak mendukung thread kernel menggunakan model Many-to-One.

Model One to One: Model One-to-One memetakan setiap thread tingkatan pengguna ke thread kernel. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahannya model ini ialah setiap pembuatan thread pengguna memerlukan pembuatan thread kernel. Karena pembuatan thread dapat menurunkan kinerja dari sebuah aplikasi maka implmentasi dari model ini, jumlah thread dibatasi oleh sistem. Contoh sistem operasi yang mendukung model One-to-One ialah Windows NT dan OS/2.

Model Many To Many: Model ini me-multipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya lebih sedikit atau sama dengan tingkatan pengguna. thread. Jumlah thread kernel spesifik untuk sebagian aplikasi atau sebagian mesin. Many-to-One model mengizinkan developer untuk membuat user thread sebanyak yang ia mau tetapi concurrency (berjalan bersama) tidak dapat diperoleh karena hanya satu thread yang dapat dijadwal oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya dapat membuat thread dalam jumlah yang terbatas). Model Many-to-Many tidak mengalami kelemahan dari dua model di atas. Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara paralel pada multiprocessor. Dan juga ketika suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi. Contoh sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX.



Persoalan dalam Thread

System Calls fork() dan exec()

Terdapat dua kemungkinan dalam sistem UNIX jika fork dipanggil oleh salah satu thread dalam proses:

a. Semua thread diduplikasi.

b. Hanya thread yang memanggil fork.

Jika suatu thread memanggil System Call exec maka program yang dispesifikasi dalam parameter exec, akan mengganti keseluruhan proses termasuk thread. Penggunaan dua versi dari fork di atas tergantung dari aplikasi. Kalau exec dipanggil seketika sesudah fork, maka duplikasi seluruh thread tidak dibutuhkan, karena program yang dispesifikasi dalam parameter exec akan mengganti seluruh proses. Pada kasus ini cukup hanya mengganti thread yang memanggil fork. Tetapi jika proses yang terpisah tidak memanggil exec sesudah fork maka proses yang terpisah tersebut hendaknya menduplikasi seluruh thread.

Pembatalan Thread

Pembatalan thread merupakan penghentian tugas sebelum prosesnya selesai, sebagai contoh dalam web page, pemanggilan suatu gambar menggunakan beberapa thread. Jika penggambaran belum sempurna sedangkan user menekan tombol stop, maka seluruh penggambaran oleh tiap-tiap thread tersebut akan dibatalkan secara kesuluruhan. Pembatalan suatu thread dapat terjadi dalam dua skenario yang berbeda, yaitu:

a. Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread.

b. Deferred cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara berurutan. Kejaidan yang sulit dari pembatalan suatu thread adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan dibatalkan. Selain itu kesulitan lain adalah ketika thread yang dibatalkan sedang meng-update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila menggunakan asynchronous cancellation. Sistem operasi akan mengambil kembali sumber daya dari thread yang dibatalkan namun seringkali sistem operasi tidak mengambil kembali seluruh sumber daya dari thread tersebut. Alternatifnya adalah dengan menggunakan deffered cancellation. Cara kerja dari deffered cancellation adalah dengan menggunakan satu thread yang berfungsi sebagai pengindikasi bahwa target thread akan dibatalkan. Tetapi pembatalan hanya akan terjadi jika target thread telah memeriksa apakah ia harus batal atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada titik tersebut secara aman.

Penanganan Sinyal

Sinyal yang digunakan pada sistem UNIX untuk memberitahukan sebuah proses kalau suatu peristiwa telah terjadi. Sebuah sinyal dapat diterima secara synchronous atau asynchronous tergantung dari sumber dan alasan suatu event memberikan sinyal. Semua sinyal (asynchronous dan synchronous) mengikuti pola yang sama, yaitu:

a. Sebuah sinyal dimunculkan oleh kejadian dari suatu event.

b. Sinyal yang dimunculkan tersebut dikirim ke proses.

c. Sesudah dikirim, sinyal tersebut harus ditangani.

Contoh dari sinyal synchronous adalah ketika suatu proses melakukan pengaksesan memori secara ilegal atau pembagian dengan nol, sinyal dimunculkan dan dikirim ke proses yang melakukan operasi tersebut. Contoh dari sinyal asynchronous misalnya kita mengirimkan sinyal untuk mematikan proses dengan keyboard (CTRL+C) maka sinyal asynchronous dikirim ke proses tersebut. Setiap sinyal dapat ditangani oleh salah satu dari dua penanganan sinyal, yaitu:

1. Penanganan sinyal default.

2. Penanganan sinyal yang didefinisikan sendiri oleh user.

Penanganan sinyal pada program yang hanya memakai thread tunggal cukup mudah yaitu hanya dengan mengirimkan sinyal ke prosesnya. Tetapi mengirimkan sinyal lebih rumit pada program multithreading, karena sebuah proses dapat memiliki beberapa thread. Secara umum ada empat pilihan kemana sinyal harus dikirim, yaitu:

1. Mengirimkan sinyal ke thread yang dituju oleh sinyal tersebut.

2. Mengirimkan sinyal ke setiap thread pada proses tersebut.

3. Mengirimkan sinyal ke thread tertentu dalam proses.

4. Menugaskan thread khusus untuk menerima semua sinyal yang ditujukan pada proses.

Metode untuk mengirimkan sebuah sinyal tergantung dari jenis sinyal yang dimunculkan. Sebagai contoh sinyal synchronous perlu dikirimkan ke thread yang memunculkan sinyal tersebut bukan thread lain pada proses itu. Tetapi situasi dengan sinyal asynchronous menjadi tidak jelas. Beberapa sinyal asynchronous seperti sinyal yang berfungsi untuk mematikan proses (contoh: Alt-F4) harus dikirim ke semua thread. Beberapa versi UNIX yang multithreading mengizinkan thread menerima sinyal yang akan ia terima dan menolak sinyal yang akan ia tolak. Karena itu sinyal asynchronouns hanya dikirimkan ke thread yang tidak memblok sinyal tersebut. Solaris 2 mengimplementasikan pilihan ke-4 untuk menangani sinyal. Windows 2000 tidak menyediakan fasilitas untuk mendukung sinyal, sebagai gantinya Windows 2000 menggunakan asynchronous procedure calls (APCs).

Thread Pools

Dalam situasi web server multithreading ada dua masalah yang timbul, diantaranya adalah:

a. Ukuran waktu yang diperlukan untuk menciptakan thread dalam melayani permintaan yang diajukan akan berlebih. Pada kenyataannya thread dibuang ketika sudah menyelesaikan tugasnya.

b. Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem. Solusinya adalah dengan penggunaan Thread Pools, cara kerjanya adalah dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools, dimana thread tersebut menunggu untuk bekerja. Jadi ketika server menerima permintaan maka akan membangunkan thread dari pool dan jika thread tersebut tersedia, permintaan akan dilayani. Ketika thread sudah selesai mengerjakan tugasnya maka thread tersebut kembali ke pool dan

menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan, maka server menunggu sampai ada satu thread yang bebas.

Keuntungan menggunakan thread pool adalah:

• Umumnya lebih cepat dalam melayani permintaan thread yang sudah ada dibandingkan dengan menunggu thread baru yang sedang dibuat.

• Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini penting pada sistem yang tidak dapat mendukung banyak thread yang berjalan secara bersamaan.

Jumlah thread dalam pool dapat tergantung dari jumlah CPU dalam sistem, jumlah memori fisik, dan jumlah permintaan klien yang bersamaan. Thread yang dimiliki oleh suatu proses memang berbagi data tetapi setiap thread mungkin membutuhkan duplikat dari data tertentu untuk dirinya sendiri dalam keadaan tertentu. Data ini disebut thread-specific data

sumber 1
sumber 2
sumber 3
READ MORE -

4.03.2012

Software,Teknologi dan Bahasa Komunikasi Agent


Software

Software adalah perintah (program komputer) yang dieksekusi memberikan fungsi dan petunjuk kerja seperti yang diinginkan. Struktur data yang memungkinkan program memanipulasi informasi secara proporsional dan dokumen yang menggambarkan operasi dan kegunaan program.
Software memiliki dua peran, disatu sisi berfungsi sebagai sebuah produk dan disisi lain sebagai pengontrol pembuatan sebuah produk. Sebagai produk, software mengantarkan potensi perhitungan yang dibangun oleh software komputer. Software merupakan transformer informasi yang memproduksi, mengatur, memperoleh, memodifikasi, menampilkan atau memancarkan informasi, ini dapat sesederhana bit tunggal atau sekompleks sebuah simulasi multimedia. Sedangkan peran sebagai pengontrol yang dipakai untuk mengantarkan produk, software berlaku sebagai dasar untuk kontrol komputer (sistem operasi), komunikasi informasi (jaringan), dan penciptaan serta kontrol dari program-program lain (peranti dan lingkungan software).

Perangkat lunak komputer berfungsi untuk :

Mengidentifikasi program
Menyiapkan aplikasi program sehingga tata kerja seluruh perangkat komputer terkontrol.
Mengatur dan membuat pekerjaan lebih efisien

Macam-macam Perangkat Lunak
Sistem Operasi (Operating System),
Program Aplikasi (Application Programs),
Bahasa Pemrograman (Programming Language),
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 Inggris: neutral 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 Inggris: labor-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 Inggris: capital-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


Menurut Nwana [Nwana, 1996], konsep agent sudah dikenal lama dalam bidang AI, tepatnya dikenalkan oleh seorang peneliti bernama Carl Hewitt [Hewitt, 1977] dengan concurrent actor model-nya pada tahun 1977. Dalam modelnya Hewitt mengemukakan teori tentang suatu obyek yang yang dia sebut actor, yang mempunyai karakteristik menguasai dirinya sendiri, interaktif, dan bisa merespon pesan yang dating dari lain obyek sejenis. Dari berbagai penelitian berhubungan dengan hal diatas, kemudian lahirlah cabang ilmu besar yang merupakan turunan dari AI yaitu Distributed Artificial Intelligence (DAI), yang antara lain membawahi bidang penelitian, Distributed Problem Solving (DPS), Parallel Artificial Intelligence (PAI), dan Multi Agent System (MAS).

Masa ini terkenal dengan masa generasi pertama penelitian software agent, yaitu periode 1970-1990. Pada umumnya konsentrasi penelitian pada periode ini tertuju ke arah: pemodelan internal agent secara simbolik, isu-isu makro mengenai interaksi, koordinasi, dan komunikasi antar agent dalam kerangka MAS. Tujuan utamanya adalah untuk menganalisa, mendesain, dan mengintegrasikan system dalam kerangka agent yang bias berkolaborasi satu dengan yang lain. Berbagai macam penelitian yang dilakukan pada generasi pertama (1970-1990) itu terangkum secara lengkap dan terorganisir dengan baik dalam buku-buku yang dieditori oleh Bond dan Gasser [Bond et. al., 1988], Gasser dan Huns [Gasser et. al., 1989], dan Chaib-draa [Chaib-draa et. al., 1992]. Kemudian masa generasi kedua dari penelitian agent adalah periode tahun 1990 sampai saat ini. Konsentrasi penelitian pada periode ini khususnya adalah pada: pengembangan dan penelitian teori agent (agent theory), arsitektur agent (agent architecture) dan bahasa pemrograman yang digunakan (agent language). Terangkum dengan baik dalam buku-buku dan makalah-makalah oleh Wooldridge dan Jennings [Woolridge et. al., 1994], [Woolridge et. al.,1995], dan [Woolridge et. al., 1996].

Karakteristik dan Atribut Software Agent
Untuk memperdalam pemahaman tentang software agent, fungsi, peran, dan perbedaan mendasar dikaitkan software program yang ada, berikut ini akan dijelaskan tentang beberapa atribute dan karakteristik yang dimiliki oleh software agent. Tentu tidak semua karakteristik dan atribut terangkum dalam satu agent (lihat bagian 4 tentang klasifikasi software agent). Pada hakekatnya daftar karakteristik dan atribut dibawah adalah merupakan hasil survei dari karakteristik yang dimiliki oleh agent-agent yang ada pada saat ini.

1. Autonomy: Agent dapat melakukan tugas secara mandiri dan tidak dipengaruhi secara langsung oleh user, agent lain ataupun oleh lingkungan (environment). Untuk mencapai tujuan dalam melakukan tugasnya secara mandiri, agent harus memiliki kemampuan kontrol terhadap setiap aksi yang mereka perbuat, baik aksi keluar maupun kedalam [Woolridge et. al., 1995]. Dan satu hal penting lagi yang mendukung autonomy adalah masalah intelegensi (intelligence) dari agent.

2. Intelligence, Reasoning, dan Learning: Setiap agent harus mempunyai standar minimum untuk bisa disebut agent, yaitu intelegensi (intelligence). Dalam konsep intelligence, ada tiga komponen yang harus
dimiliki: internal knowledge base, kemampuan reasoning berdasar pada knowledge base yang dimiliki, dan kemampuan learning untuk beradaptasi dalam perubahan lingkungan.

3. Mobility dan Stationary: Khusus untuk mobile agent, dia harus memiliki kemampuan yang merupakan karakteristik tertinggi yang dia miliki yaitu mobilitas. Berkebalikan dari hal tersebut adalah stationary agent. Bagaimanapun juga keduanya tetap harus memiliki kemampuan untuk mengirim pesan dan berkomunikasi dengan agent lain.

4. Delegation: Sesuai dengan namanya dan seperti yang sudah kita bahas pada bagian definisi, agent bergerak dalam kerangka menjalankan tugas yang diperintahkan oleh user. Fenomena pendelegasian (delegation) ini adalah karakteristik utama suatu program disebut agent.


sumber
sumber
READ MORE -

3.20.2012

OSI (Open System Interconnection)

OSI (Open System Interconnection) merupakan sebuah model arsitektural jaringan yang dikembangkan oleh badan International Orgenization Standardization (ISO) di Eropa pada tahun 1977. Model OSI ini digunakan sebagai standard umum untuk membangun pemodelan arsitektur jaringan komputer secara konseptual. Model OSI ini terdiri dari 7 lapisan yang disebut dengan layer. Cara kerja dari setiap layer ini mengirimkan data dari komputer satu ke komputer lainnya dengan cara megirimkan data tersebut ke layer dibawahnya sehingga berakhir dilayer terakhir, kemudian mengirimkan ke komputer yang dituju. Lalu,data tersebut dikirim ke layer yang paling atas yaitu application layer. Berikut ini adalah skema pentrransferan data pada jaringan :




Berikut ini adalah penjelasan mengenai ketujuh layer tersebut.

1. Physical Layer


Physical layer memiliki fungsi sebagai merepresentasikan sinyal elektrik yang diterima dalam angka logika 0 atau 1. Sinyal inilah yang mentranmisikan data yang melalui kabel dengan bentuk bit-bit biner. Physical layer ini digunakan pada device (peralatan) pada jaringan yaitu hub, reapeter, dan Network adapter (NIC).


2. Data Link Layer


Data link layer memiliki tugas utama yaitu sebagai fasilitas transmisi raw data dan mentransformasi data tersebut ke saluran yang bebas dari kesalahan transmisi. Sebelum diteruskan ke network layer, data link layer melaksanakan tugas ini dengan memungkinkan pengirim memecah-mecah data input menjadi sejumlah data frame (biasanya berjumlah ratusan atau ribuan byte). Kemudian data link layer mentransmisikan frame tersebut secara berurutan, dan memproses acknowledgement frame yang dikirim kembali oleh penerima. Karena physical layer menerima dan mengirim aliran bit tanpa mengindahkan arti atau arsitektur frame, maka tergantung pada data link layer-lah untuk membuat dan mengenali batas-batas frame itu. Hal ini bisa dilakukan dengan cara membubuhkan bit khusus ke awal dan akhir frame. Bila secara insidental pola-pola bit ini bisa ditemui pada data, maka diperlukan perhatian khusus untuk menyakinkan bahwa pola tersebut tidak secara salah dianggap sebagai batas-batas frame.

Terjadinya noise pada saluran dapat merusak frame. Dalam hal ini, perangkat lunak data link layer pada mesin sumber dapat mengirim kembali frame yang rusak tersebut. Akan tetapi transmisi frame sama secara berulang-ulang bisa menimbulkan duplikasi frame. Frame duplikat perlu dikirim apabila acknowledgement frame dari penerima yang dikembalikan ke pengirim telah hilang. Tergantung pada layer inilah untuk mengatasi masalah-masalah yang disebabkan rusaknya, hilangnya dan duplikasi frame. Data link layer menyediakan beberapa kelas layanan bagi network layer. Kelas layanan ini dapat dibedakan dalam hal kualitas dan harganya.

Masalah-masalah lainnya yang timbul pada data link layer (dan juga sebagian besar layer-layer di atasnya) adalah mengusahakan kelancaran proses pengiriman data dari pengirim yang cepat ke penerima yang lambat. Mekanisme pengaturan lalu-lintas data harus memungkinkan pengirim mengetahui jumlah ruang buffer yang dimiliki penerima pada suatu saat tertentu. Seringkali pengaturan aliran dan penanganan error ini dilakukan secara terintegrasi.

Saluran yang dapat mengirim data pada kedua arahnya juga bisa menimbulkan masalah. Sehingga dengan demikian perlu dijadikan bahan pertimbangan bagi software data link layer. Masalah yang dapat timbul di sini adalah bahwa frame-frame acknoeledgement yang mengalir dari A ke B bersaing saling mendahului dengan aliran dari B ke A. Penyelesaian yang terbaik (piggy backing) telah bisa digunakan; nanti kita akan membahasnya secara mendalam.

Jaringan broadcast memiliki masalah tambahan pada data link layer. Masalah tersebut adalah dalam hal mengontrol akses ke saluran yang dipakai bersama. Untuk mengatasinya dapat digunakan sublayer khusus data link layer, yang disebut medium access sublayer.

Device yang menggunakan konsep data link layer yaitu Bridges dan Switch.

3. Network Layer


Layer ini memilki tugas menangani masalah pengiriman paket data dari computer pengirim ke computer penerima. Pada layer ini, hal yang paling berperan dalam pengiriman paket yaitu IP (Internet Protocol). Disini, layer akan menentukan IP pengirim dan IP penerima paket data sehingga paket yang dikirim tidak mengalami salah sasaran atau tujuan. Selain itu, layer ini juga berguna untuk mengatasi masalah IP dimana IP yang berbeda dapat melakukan koneksi dengan baik. Device yang menggunakan layer ini adalah router.


4. Transport Layer


Fungsi dasar transport layer adalah menerima data dari session layer, memecah data menjadi bagian-bagian yang lebih kecil bila perlu, meneruskan data ke network layer, dan menjamin bahwa semua potongan data tersebut bisa tiba di komputer penerima dengan benar. Selain itu, semua hal tersebut harus dilaksanakan secara efisien, dan bertujuan dapat melindungi layer-layer bagian atas dari perubahan teknologi hardware yang tidak dapat dihindari. Selain itu, layer ini juga memastikan bahwa paket yang dikirim tidak error.

Pada layer ini, menggunakan protocol yang dikenal dengan TCP (Transmission Control Protocol) dan SPX.


5. Session Layer


Session layer mengijinkan para pengguna untuk menetapkan session dengan pengguna lainnya. Sebuah session selain memungkinkan transport data biasa, seperti yang dilakukan oleh transport layer, juga menyediakan layanan yang istimewa untuk aplikasi-aplikasi tertentu. Sebuah session digunakan untuk memungkinkan seseorang pengguna log ke remote timesharing system atau untuk memindahkan file dari satu mesin kemesin lainnya.

Sebuah layanan session layer adalah untuk melaksanakan pengendalian dialog. Session dapat memungkinkan lalu lintas bergerak dalam bentuk dua arah pada suatu saat, atau hanya satu arah saja. Jika pada satu saat lalu lintas hanya satu arah saja (analog dengan rel kereta api tunggal), session layer membantu untuk menentukan giliran yang berhak menggunakan saluran pada suatu saat.

Layanan session di atas disebut manajemen token. Untuk sebagian protokol, adalah penting untuk memastikan bahwa kedua pihak yang bersangkutan tidak melakukan operasi pada saat yang sama. Untuk mengatur aktivitas ini, session layer menyediakan token-token yang dapat digilirkan. Hanya pihak yang memegang token yang diijinkan melakukan operasi kritis.

Layanan session lainnya adalah sinkronisasi. Ambil contoh yang dapat terjadi ketika mencoba transfer file yang berdurasi 2 jam dari mesin yang satu ke mesin lainnya dengan kemungkinan mempunyai selang waktu 1 jam antara dua crash yang dapat terjadi. Setelah masing-masing transfer dibatalkan, seluruh transfer mungkin perlu diulangi lagi dari awal, dan mungkin saja mengalami kegagalan lain. Untuk mengurangi kemungkinan terjadinya masalah ini, session layer dapat menyisipkan tanda tertentu ke aliran data. Karena itu bila terjadi crash, hanya data yang berada sesudah tanda tersebut yang akan ditransfer ulang.


6. Presentation Layer


Berfungsi untuk mentranslasikan data yang hendak ditransmisikan oleh aplikasi ke dalam format yang dapat ditransmisikan melalui jaringan. Protokol yang berada dalam level ini adalah perangkat lunak redirektor (redirector software), seperti layanan Workstation (dalam Window NT) dan juga Network shell (semacam Virtual Network Computing (VNC) atau Remote Desktop Protocol (RDP).


7. Application Layer


Application layer terdiri dari bermacam-macam protokol. Misalnya terdapat ratusan jenis terminal yang tidak kompatibel di seluruh dunia. Ambil keadaan dimana editor layar penuh yang diharapkan bekerja pada jaringan dengan bermacam-macam terminal, yang masing-masing memiliki layout layar yang berlainan, mempunyai cara urutan penekanan tombol yang berbeda untuk penyisipan dan penghapusan teks, memindahkan sensor dan sebagainya.

Suatu cara untuk mengatasi masalah seperti di atas, adalah dengan menentukan terminal virtual jaringan abstrak, sehingga editor dan program-program lainnya dapat ditulis agar saling bersesuaian. Untuk menangani setiap jenis terminal, satu bagian software harus ditulis untuk memetakan fungsi terminal virtual jaringan ke terminal sebenarnya. Misalnya, saat editor menggerakkan cursor terminal virtual ke sudut layar kiri, software tersebut harus mengeluarkan urutan perintah yang sesuai untuk mencapai cursor tersebut. Seluruh software terminal virtual berada pada application layer.

Fungsi application layer lainnya adalah pemindahan file. Sistem file yang satu dengan yang lainnya memiliki konvensi penamaan yang berbeda, cara menyatakan baris-baris teks yang berbeda, dan sebagainya. Perpindahan file dari sebuah sistem ke sistem lainnya yang berbeda memerlukan penanganan untuk mengatasi adanya ketidak-kompatibelan ini. Tugas tersebut juga merupakan pekerjaan appication layer, seperti pada surat elektronik, remote job entry, directory lookup, dan berbagai fasilitas bertujuan umum dan fasilitas bertujuan khusus lainnya.

Contoh protocol pada aplikasi layer, yaitu DNS, FTP, HTTP, SMB ,Telnet, SMTP dan sebagainya.



sumber
READ MORE -

3.16.2012

Model Terdistribusi



1. Model Client Server

• Client:
– Proses akses data
– Melakukan operasi pada komputer lain

• Server:
– Proses mengatur data
– Proses mengatur resources
– Proses komputasi

• Interaksi:
– Invocation/result




2. Model Multiple Server

• Service disediakan oleh beberapa server
• Contoh:
– Sebuah situs yang jalankan dibeberapa server
• Server menggunakan replikasi atau database terdistribusi




3. Model Proxy Server

• Proxy server membuat duplikasi beberapa server yang diakses oleh client
• Caching:
– Penyimpanan lokal untuk item yang sering diakses
– Meningkatkan kinerja
– Mengurangi beban pada server

Contoh Model Proxy Server
• Searching satu topik namun dilakukan dua kali maka searching terakhir memiliki waktu yang lebih kecil



4. model Mobile Code

• Kode yang berpindah dan dijalankan pada pc yang berbeda
• Contoh: Applet




5. Model Peer To Peer

Bagian dari model sistem terdistribusi dimana sistem dapat sekaligus berfungsi sebagai client maupun server. Sebuah arsitektur di mana tidak terdapat mesin khusus yang melayani suatu pelayanan tertentu atau mengatur sumber daya dalam jaringan dan semua kewajiban dibagi rata ke seluruh mesin, yang dikenal sebagai peer. Pola komunikasi yang digunakan berdasarkan aplikasi yang digunakan. Peer-to-peer merupakan model yang paling general dan fleksible.




6. Model Mobile Agent

• Mobile Agent adalah sebuah program yang berpindah (termasuk data dan kode) dari satu komputer ke lainnya dalam jaringan
• Biasanya melakukan suatu pekerjaan otomatis tertentu
• Beberapa masalah :
- Authentication
- Permission dan keamanan
• Alternatif
- Mengambil informasi melalui remote invocation
• Contoh :
- Digunakan untuk install dan memelihara software pada komputer dalam suatu organisasi
- Membandingkan harga produk dari beberapa vendor


sumber
READ MORE - Model Terdistribusi

6.11.2010

5 Plugin Wordpress Yang Harus Anda Install

Dengan menggunakan plugin Wordpress, pemilik situs dapat menyesuaikan instalasi Wordpress untuk memenuhi kebutuhan mereka. Namun, banyak plugin dapat mempengaruhi performa situs Web, dan dengan demikian, Anda harus sangat selektif dalam memilih plugin yang Anda instal.
1. Wp super cache
WP Super Cache mempercepat posting Wordpress dan halaman dengan membuat versi HTML statis, memperbarui pada interval yang Anda pilih. Setelah pengujian kinerja Halaman pada Desain, kami menemukan bahwa WP Super Cache meningkatkan waktu tanggapan halaman cache unprimed sebanyak 259,1%, menurunkan waktu buka halaman dari total rata-rata 3.69s 9.56s untuk posting konten yang paling berat

2. Akismet
Akismet merupakan plugin WP yang berguna sebagai moderasi komentar untuk menyaring komentar spam

3. Google XML Sitemaps Generator
Sebuah file Sitemap XML sangat penting untuk dimemiliki, jika Anda tertarik dalam membantu "spider mesin pencari" seperti akurat Googlebot, mengindeks konten dari website Anda. Google XML Sitemaps plugin dan update secara otomatis menghasilkan file XML Sitemaps Anda untuk Anda. Ini juga sebagai ping mesin pencari untuk membiarkan mereka tahu bahwa ada konten baru di situs Anda, menunggu untuk diindeks setiap kali Anda mempublikasikan dan update posting dan halaman. Untuk publikasi web update secara rutin seperti Desain.

4. All in One SEO Pack
All in One SEO Pack plugin Wordpress dikemas dengan fitur yang dapat meningkatkan visibilitas mesin pencari konten. Plugin ini sangat penting dalam membantu pengunjung menemukan konten Anda melalui mesin pencari.

5. WP-PageNavi
WP-pagenavi adalah plugin Wordpress yang mudah digunakan untuk menambahkan fitur pagination di situs Anda sehingga pembaca dapat menavigasi ke posting lama atau baru lebih mudah. Ini sangat mudah dikonfigurasi dan disesuaikan dengan cara Anda melihat dan fungsi.
READ MORE - 5 Plugin Wordpress Yang Harus Anda Install
 
Copyright 2008 | Komunitas Kosong Satu Blogger Template by Indonesian Traveller