tag:blogger.com,1999:blog-17671586368149484952024-02-06T19:23:01.351-08:00Bersama Kita BisaAnonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.comBlogger28125tag:blogger.com,1999:blog-1767158636814948495.post-79831155918187654442013-06-18T00:08:00.002-07:002013-06-18T00:08:13.182-07:00Penghemat BBM<span style="font-family: arial; font-size: x-small;"><span style="color: red;"><b>DEXON1
</b></span><br />
<br />
<span style="font-size: small;">Berfungsi menaikkan kadar oktan didalam bahan bakar.
<br />
Hal ini menyebabkan pembakaran menjadi lebih sempurna sehingga laju
kendaraan anda semakin kencang, tarikan gas juga menjadi semakin ringan, sekaligus sebagai penghemat BBM hingga 30%..</span>
<br /><span style="color: red;"></span><br />
</span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC0_2BmsTBotQ-AvEZx1ls4w3HClHGFLLgvoT1sGY2J0L7Qj9fZtwpgufYRu87cTdntfPsaJ7GMRrIPzODI-cqd56T46OpLouBMTxu-HskKVU8vudhiGFzdd8xPiqESsvvB8qEwGzxYl5j/s1600/slide1a.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC0_2BmsTBotQ-AvEZx1ls4w3HClHGFLLgvoT1sGY2J0L7Qj9fZtwpgufYRu87cTdntfPsaJ7GMRrIPzODI-cqd56T46OpLouBMTxu-HskKVU8vudhiGFzdd8xPiqESsvvB8qEwGzxYl5j/s1600/slide1a.jpg" height="225" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnwtrKktyjej83AEXmEgZsW3vvBX6oIvImssFXGYoDosLTOi1gJXgffwYGg9ToJgRQ3jZfvsWDs-BfmIKSHxE8FmyVoEVJ11ueyFhr0STj5MyfYcTULngcqC5r1f9s_Ft67UjkPUgIHwig/s1600/1_3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnwtrKktyjej83AEXmEgZsW3vvBX6oIvImssFXGYoDosLTOi1gJXgffwYGg9ToJgRQ3jZfvsWDs-BfmIKSHxE8FmyVoEVJ11ueyFhr0STj5MyfYcTULngcqC5r1f9s_Ft67UjkPUgIHwig/s1600/1_3.jpg" height="136" width="320" /></a></div>
<ul>
<li><span style="font-family: arial; font-size: x-small;">
<span style="font-size: small;">Teteskan 3-4 tetes untuk per-liter bensin untuk pemakaian motor.
Tuangkan 1 botol kecil untuk 10-11 liter bensin atau
pengisian nominal 50rb untuk pemakaian mobil
</span></span></li>
<li><span style="font-family: arial; font-size: small;">
Pemakaian pertama teteskan 5 tetes untuk membersihkan ruang pembakaran.
</span></li>
<li><span style="font-family: arial; font-size: x-small;"><span style="font-size: small;">
Setelah beberapa saat, tarik gas kuat-kuat, apabila asap putih keluar
dari knalpot berarti Dexon1 sudah mulai bereaksi melarutkan kotoran di
dalam ruang pembakaran.<br /><br /><span style="color: red;">Terbukti dan Saya sudah Mencobanya...</span></span><br /></span></li>
</ul>
Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-38315055688932502882013-06-17T23:50:00.002-07:002013-06-17T23:50:18.281-07:00Peluang BISNIS 2013 DAN Product Penghemat BBM<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixjEoA9z4FrcXcipuNpyhRYeom4nkfFVTF4u9bu7jXKYID0ibFomtxpSH15wtLmTPn-5pb_NL6BYuKEhwkykoqPNew78xd2LnSlN-dm4JzO0tPTHqL4gtQTsBFJlNWKZZCGSMroVYhgrAz/s1600/1_3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixjEoA9z4FrcXcipuNpyhRYeom4nkfFVTF4u9bu7jXKYID0ibFomtxpSH15wtLmTPn-5pb_NL6BYuKEhwkykoqPNew78xd2LnSlN-dm4JzO0tPTHqL4gtQTsBFJlNWKZZCGSMroVYhgrAz/s1600/1_3.jpg" height="136" width="320" /></a></div>
<br />
<br />
<br />
1. Modal Hanya Rp 150.000/hak usaha sekali bayar dan berlaku selamanya
dan bisa diwariskan, harga yang sangat murah dan membuat sangat mudah
mengclosing orang, tidak seperti bisnis MLM binary dengan produk
suplemen yang membutuhkan biaya yang relatif mahal.<br />
<br />
2. Produk laris manis dan repeat order sangat tinggi, tidak seperti
produk suplemen dimana produk yang dikonsumsi mungkin habisnya
berbulan-bulan, disini karena setiap orang membutuhkan mobilitas tinggi,
maka pemakaian BBM akan sangat tinggi, sehingga repeat order juga
sangat tinggi<br />
<br />
3. Target pasar sangat tinggi, anda bisa menangkap ratusan juta pemilik
kendaraan bermotor. Setiap keluarga bahkan ada yang memiliki kendaraan
bermotor sampai 4 mobil dan 5 motor.<br />
<br />
4. Solusi Penghasilan Harian Tanpa Batas, Bebas resiko (Zero Risk),
cepat kembali modal (BEP), Tanpa Tutup Point dan Tanpa Flush Out.<br />
<br />
5. Pembayaran bonus TERCEPAT (dibayar harian) + Bonus Repeat Order (dibayar bulanan)<br />
<br />
6. Posting 24 Jam Full Online ( tanpa ribet ) SENIN-MINGGU, posting kapan saja, Dimana Saja, Siapa saja dan tanpa pending.<br />
<br />
7. Web replika memudahkan anda mempromosikan dexon1 dan setiap member
yang join langsung dari webreplika Anda, maka Anda berhak atas bonus
sponsor.<br />
<br />
8. Jika anda tidak mempunyai waktu untuk mempromosikan web replika
websupport secara acak akan memberikan kesempatan kepada anda untuk
memperoleh downline (spillover system) websupport sistem akan bekerja 24
jam sehari untuk ANDA.<br />
<br />
9. Support Online dan Offline, dari adminAnonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-60789621185510721762011-07-25T23:32:00.001-07:002011-07-25T23:32:57.511-07:00Membuat Sub Domain CO.CC<h3 class="post-title entry-title"><a href="http://niaanggrianto.blogspot.com/2011/07/cara-membuat-sub-domain-cocc.html"><canvas height="23" style="height: 23px; left: -2px; top: 1px; width: 121px;" width="121"></canvas></a></h3><div class="post-body"> <style>
.fullpost { display: none; }
</style> <a href="http://www.co.cc/img/cc_logo.gif"><img alt="" border="0" src="http://www.co.cc/img/cc_logo.gif" style="cursor: pointer; float: left; height: 34px; margin: 0pt 10px 10px 0pt; width: 124px;" /></a> <br />
Mungkin sudah banyak oran-orang yang mengetahui trick ini, sampai-sampai orang yang akan membacanya-pun enggan membaca Artikel tersebut, tapi, yang mereka ajarkan adalah menggunakan <a href="http://www.dnspark.net/" rel="nofollow" target="_blank"> dnspark.net </a>yang ada masa expired atau massa berlakunya, meskipun suangat lama, tapi, sewaktu-waktu kita pastinya akan merasa tidak nyaman bukan?<br />
<br />
Nah, disini saya ingin memperlihatkan kepada anda bagaimana caranya membuat Sub-Domain langsung didalam Co.cc secara realive, gak percaya ? Simak Gan ( KasKus langue mode : On)<br />
<br />
1. Masuk kedalam co.cc dengan Account anda masing-masing di <a href="https://www.co.cc/log_in_out/login.php" rel="nofollow" target="_blank"> https://www.co.cc/log_in_out/login.php</a> <br />
<br />
<a href="http://1.bp.blogspot.com/_C6KkooKXCEw/S-y4XnmEo9I/AAAAAAAAFr4/45OxVeZFtbE/s1600/1.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5470950363253482450" src="http://1.bp.blogspot.com/_C6KkooKXCEw/S-y4XnmEo9I/AAAAAAAAFr4/45OxVeZFtbE/s400/1.png" style="cursor: pointer; display: block; height: 250px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a> <br />
2. Setelah itu, anda akan disuguhkan dengan sebuah Form yang berisikan 4 alamat domain yang sudah anda buat ( Apabila anda berhasil Login ).<br />
<br />
<a href="http://4.bp.blogspot.com/_C6KkooKXCEw/S-y4YAxBbOI/AAAAAAAAFsA/p69Kx1VFgbk/s1600/2.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5470950370010295522" src="http://4.bp.blogspot.com/_C6KkooKXCEw/S-y4YAxBbOI/AAAAAAAAFsA/p69Kx1VFgbk/s400/2.png" style="cursor: pointer; display: block; height: 250px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a> <br />
3. Pilih domain yang akan anda jadikan Sub-Domain, disini dan didalam contoh ini, saya akan memakai <span style="color: green;">proxyesterday.co.cc</span><br />
4. Klik <b>Setup</b><br />
5. Setelah itu, anda akan disuguhkan <b>Form Setup</b><br />
<br />
<a href="http://4.bp.blogspot.com/_C6KkooKXCEw/S-zB7aJUr1I/AAAAAAAAFs4/-ZhgdXy9gyw/s1600/3.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5470960873723178834" src="http://4.bp.blogspot.com/_C6KkooKXCEw/S-zB7aJUr1I/AAAAAAAAFs4/-ZhgdXy9gyw/s400/3.png" style="cursor: pointer; display: block; height: 250px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a> <br />
6. Klik <b>zone record</b><br />
7. Didalam Host, isikan apa yang ingin anda jadikan Sub domainnya, misalkan oom<br />
8. Dan otomatis, domain yang akan keluar adalah <span style="color: green;"> oom.aktifiskaskus.co.cc</span><br />
9. Didalam Value, isikan <i><span style="color: green;">ghs.google.com</span></i><br />
<br />
<a href="http://1.bp.blogspot.com/_C6KkooKXCEw/S-zCraoJ0LI/AAAAAAAAFtA/jiw2oXXhbS8/s1600/4.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5470961698486210738" src="http://1.bp.blogspot.com/_C6KkooKXCEw/S-zCraoJ0LI/AAAAAAAAFtA/jiw2oXXhbS8/s400/4.png" style="cursor: pointer; display: block; height: 250px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a> <br />
10. Klik Setup<br />
11. Berhasil !!!!!<br />
<br />
<b>Lalu, apa yang harus kita lakukan selanjutnya? </b><br />
<br />
Setup Sub-Domain didalam Platform kita sendiri, disini saya menggunakan blogspot.com<br />
<br />
1. Login kedalam Account Platform anda ( Didalam contoh ini saya menggunakan Blogspot )<br />
2. Setelah berhasil, masuk kedalam menu <b>Pengaturan → Publikasikan </b>dan disana yang harus anda pilih adalah <b>Domain Ubah Suaian</b><br />
<br />
<a href="http://1.bp.blogspot.com/_C6KkooKXCEw/S-zAzwavz9I/AAAAAAAAFsw/g8sYBctgHYQ/s1600/5.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5470959642751258578" src="http://1.bp.blogspot.com/_C6KkooKXCEw/S-zAzwavz9I/AAAAAAAAFsw/g8sYBctgHYQ/s400/5.png" style="cursor: pointer; display: block; height: 250px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a> <br />
3. Kemudian pilih <b>Beralih ke pengaturan lanjut</b><br />
<br />
<a href="http://3.bp.blogspot.com/_C6KkooKXCEw/S-y4ZKTgdcI/AAAAAAAAFsY/xOcr2Fc6C3M/s1600/6.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5470950389750724034" src="http://3.bp.blogspot.com/_C6KkooKXCEw/S-y4ZKTgdcI/AAAAAAAAFsY/xOcr2Fc6C3M/s400/6.png" style="cursor: pointer; display: block; height: 250px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a> <br />
4. Masukkan Sub Domain yang sudah anda masukkan dan Setup tadi, yaitu <span style="color: green;">oom.aktifiskaskus.co.cc</span><br />
5. Masukkan <b>Capcay ( Verifikasi Kata )</b><br />
6. Klik <b>Simpan Setelan</b><br />
7. Berhasil !!!!!!!<br />
<br />
<a href="http://4.bp.blogspot.com/_C6KkooKXCEw/S-y9E2oysfI/AAAAAAAAFsg/yeqN20awPRk/s1600/7.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5470955538432045554" src="http://4.bp.blogspot.com/_C6KkooKXCEw/S-y9E2oysfI/AAAAAAAAFsg/yeqN20awPRk/s400/7.png" style="cursor: pointer; display: block; height: 250px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a> <br />
8. Kemudian klik <b>Lihat Blog </b> <br />
<br />
Selamat, Sub-Domain <a href="http://oom.aktifiskaskus.co.cc/" rel="nofollow" target="_blank"> oom.aktifiskaskus.co.cc </a>berhasil dibuat !<br />
<br />
<br />
<br />
<a href="http://4.bp.blogspot.com/_C6KkooKXCEw/S-y9FJvhcmI/AAAAAAAAFso/asqs-4JctuQ/s1600/8.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5470955543560548962" src="http://4.bp.blogspot.com/_C6KkooKXCEw/S-y9FJvhcmI/AAAAAAAAFso/asqs-4JctuQ/s400/8.png" style="cursor: pointer; display: block; height: 250px; margin: 0px auto 10px; text-align: center; width: 400px;" /> <img alt="" border="0" id="BLOGGER_PHOTO_ID_5470955543560548962" src="http://4.bp.blogspot.com/_C6KkooKXCEw/S-y9FJvhcmI/AAAAAAAAFso/asqs-4JctuQ/s400/8.png" style="cursor: pointer; display: block; height: 250px; margin: 0px auto 10px; text-align: center; width: 400px;" /> </a></div>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-22431543173135162912011-07-25T23:31:00.001-07:002011-07-25T23:31:35.743-07:00Software Pencari Driver Otomatis<div id="datebarright"> </div><a href="" name="5263156763841129648"></a> <h3 class="post-title entry-title"> <a href="http://karimcenter.blogspot.com/2011/07/software-pencari-driver-otomatis.html"><br />
</a> </h3><div class="post-body entry-content"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnhBtjGwcbSEt8bxnktWGaW6Hfnd8OPYdMoDc-wT-IDxorI3hjaU43m5SBnf-wUHo9PNMxaCFmiOVlWCIijzm2uVOxTxlwYay1DU3-whQKBWfw1lMiVgrlDODjz0v2oVj1T7cKXLTCQ9A/s1600-h/3DP+Logo.JPG"><img alt="3DP" border="0" id="BLOGGER_PHOTO_ID_5412099168410578802" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnhBtjGwcbSEt8bxnktWGaW6Hfnd8OPYdMoDc-wT-IDxorI3hjaU43m5SBnf-wUHo9PNMxaCFmiOVlWCIijzm2uVOxTxlwYay1DU3-whQKBWfw1lMiVgrlDODjz0v2oVj1T7cKXLTCQ9A/s400/3DP+Logo.JPG" style="cursor: pointer; float: left; height: 78px; margin: 0pt 10px 10px 0pt; width: 76px;" /></a><br />
<br />
<div style="text-align: justify;">Saya sering sekali mendapatkan komentar untuk mencarikan Driver suatu hardware oleh pengunjung Maniac Download. Memang untuk mencari driver yang sesuai dengan hardware yang kita punya bisa dibilang susah - susah gampang.<br />
<br />
Gampang memang kalau hardware yang kita punya terkenal atau memang banyak orang yang menggunakan hardware tersebut, atau driver yang anda butuhkan sudah tersedia di situs resminya, jadi anda tinggal download. <br />
Tapi bagaimana kalau driver yang anda cari tidak ada yang cocok?</div><br />
<br />
<a href="http://karimcenter.blogspot.com/2011/07/software-pencari-driver-otomatis.html" name="more"></a><br />
<div style="text-align: justify;">CD Driver yang anda dapatkan sudah hilang entah kemana, situs resmi dari hardware yang anda gunakan tidak menyediakan. Jika kasus anda seperti ini, pasti anda bisa di bilang sudah cape dan stres untuk mencarinya. <br />
<br />
Tapi tenang dulu, saya punya solusinya. <br />
Dengan software <span style="font-weight: bold;">3DP Chip</span> ini, anda tidak usah bersusah payah untuk mencari - cari driver yang cocok untuk hardware anda. Yang anda perlukan hanya jalankan aplikasi ini tanpa perlu menginstalnya karena bersifat portable, lalu anda tinggal klik driver apa yang ingin anda download.<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpMlbTSF_5Lv638TiU6dkW-pm_MoNzHzDZ1UItyj6mu3JvNwFb0v973Uvp1V_R9VFc1xHAiD8ZIEWCzj05OWYFL2hGdx17qDD-IgcqJVPxKYcHZKSUr1NIj2lhMmpVtFv5papVe2iwPrc/s1600-h/3DP.JPG"><img alt="Screen Shot" border="0" id="BLOGGER_PHOTO_ID_5412105786361394770" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpMlbTSF_5Lv638TiU6dkW-pm_MoNzHzDZ1UItyj6mu3JvNwFb0v973Uvp1V_R9VFc1xHAiD8ZIEWCzj05OWYFL2hGdx17qDD-IgcqJVPxKYcHZKSUr1NIj2lhMmpVtFv5papVe2iwPrc/s320/3DP.JPG" style="cursor: pointer; display: block; height: 238px; margin: 0px auto 10px; text-align: center; width: 320px;" /></a><br />
<br />
Setelah anda klik, lalu sofware ini akan memberikan link download dari driver yang anda butuhkan. Anda bisa lihat pada gambar dibawah ini.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD2tWUnS_LFPV-LcB4LYWjpyJpwFd9od65cbaE0qvmeeMpcf81mzktdBS4DX2dmMb-C357cdxxnzpjx1dE3n3fykcC_Fv2Ycc1PfWcitptFiPxb8aI77IUWzAO9ETVNr3fF52bvJBAOCk/s1600-h/Driver.JPG"><img alt="Driver" border="0" id="BLOGGER_PHOTO_ID_5412106793785501826" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD2tWUnS_LFPV-LcB4LYWjpyJpwFd9od65cbaE0qvmeeMpcf81mzktdBS4DX2dmMb-C357cdxxnzpjx1dE3n3fykcC_Fv2Ycc1PfWcitptFiPxb8aI77IUWzAO9ETVNr3fF52bvJBAOCk/s320/Driver.JPG" style="cursor: pointer; display: block; height: 283px; margin: 0px auto 10px; text-align: center; width: 300px;" /></a><br />
<br />
Anda tinggal download dech, gampang kan?<br />
Tapi untuk memakai software ini pastikan dulu PC anda terkoneksi dengan internet. <br />
<br />
Untuk mendownload 3D Chip V.9.12 ini silakan anda klik link download dibawah ini..</div><div style="text-align: justify;"> </div><div style="text-align: justify;"> <a href="http://www.ziddu.com/download/7624953/3DPChip9.12.rar.html" target="_blank"><span style="font-size: 85%;">Download Via Ziddu</span></a> <a href="http://www.4shared.com/file/166593930/db5bc8e/3DP_Chip_912.html" target="_blank"><span style="font-size: 85%;">Download Via 4Shared</span></a></div><div style="text-align: justify;"><span style="font-size: 85%;"> </span></div><div style="text-align: justify;"><span style="font-size: 85%;"><a href="http://www.maniac-download.com/2009/12/software-pencari-driver-otomatis.html">sumber </a></span></div></div>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-14317014699066966982011-07-25T23:30:00.000-07:002011-07-25T23:30:10.713-07:00Buku Tamu di Sidebar<h3 class="post-title entry-title"><a href="http://niaanggrianto.blogspot.com/2011/07/pasang-buku-tamu-di-sidebar.html"><canvas height="23" style="height: 23px; left: -2px; top: 1px; width: 80px;" width="80"></canvas></a></h3><div class="post-body"> <style>
.fullpost { display: none; }
</style> Memasang sebuah <strong>buku tamu</strong> (shoutbox/guestbook) pada sebuah blog adalah hal yang cukup lumayan penting,karena buku tamu ini merupakan salah satu sarana untuk berinteraksi antara yang mpunya blog dengan para pengunjung blog. Dengan di pajangnya buku tamu di dalam blog, maka para pengunjung dapat mengungkapkan isi hatinya tentang blog yang anda buat, yang pasti isi dari sebuah buku tamu ini sangatlah bervariasi bisa merupakan pujian, pertanyaan, sekedar iseng, atau ada juga merupakan kritikan terhadap isi blog anda, dan justru dengan adanya variasi itulah membuat blog kita jadi hidup lebih hidu (kaya iklan aja). <br />
<br />
Ok, terlalu lama intermezonya ya, sekarang kita kembali (ke lap...top) ke topikbahasan. Bagaimana caranya mendapatkan sebuah buku tamu. Untuk mendapatkannya sangat mudah, anda tinggal mencarinya pada mesin pencari semisal google ataupun yahoo, silahkan ketikan kata free shoutbox atau free guestbook pada search engine masing-masing situs, maka dalam beberapa detik saja akan muncul berpuluh-puluh situs penyedia buku tamu tadi, anda tinggal klik lalu coba lihat-lihat. Tapi untuk menghemat waktu pencarian anda, maka di sini saya akan langsung memberikan alamat situs penyedia buku tamu yang servernya lumayan bagus dan jarang sekali mengalami down yakni <strong>http://www.shoutmix.com</strong>. Untuk caranya silahkan anda ikuti langkah-langkah berikut ini : <br />
<br />
<br />
<ol><li>Seperti biasa anda harus daftar terlebih dahulu dengan cara mengklik tulisan Get One noe, free>>, ataupun dengan mengklik tulisan Sign Up, silahkan anda tulis data-data anda pada form yang telah di sediakan. </li>
<li>Jika sudah tedaftar, dan di terima jadi anggota shoutmix, silahkan anda login dengan id anda </li>
<li>Pada kolom yang berjudul <strong>Style</strong>, klik menu <strong>appearance</strong>. </li>
<li>Silahkan klik menu <em>pulldown</em> di samping tulisan Load From Preset untuk mengatur tampilan buku tamu anda, silahkan pilih yang sesuai dengan keinginan anda. Jika sudah selesai klik <strong>Save Setting</strong>.</li>
<li>Untuk mendapatkan kode HTML dari shoutbox anda, silahkan klik <strong>Use Shoutbox</strong> yang berada di bawah menu <strong>Quick Start</strong></li>
<li>Klik tulisan <strong>Place Shoutbox on web page</strong>. Isi lebar dan tinggi shoutbox yang di inginkan </li>
<li>Copy seluruh kode HTML yang ada pada text area yang berada di bawah tulisan <strong>Generated Codes</strong>, lalu simpan di program Notepad anda</li>
<li>Klik Log out yang berada di atas layar anda untuk keluar dari halaman shoutmix anda. Silahkan close situs tersebut.</li>
<li>Selesai </li>
</ol><br />
Untuk menempatkan kode HTML shoutbox tadi pada blog anda, silahkan ikuti langkah-langkah berikut ini.<br />
<strong>Untuk blogger dengan template klasik</strong> :<br />
<ol><li>Log in terlebih dahulu ke blogger.com dengan id anda </li>
<li>Klik menu <strong>Template</strong></li>
<li>Klik <strong>Edit HTML</strong></li>
<li>Paste kode HTML shoutbox anda yang telah di copy pada notepad tadi di tempat yang anda inginkan</li>
<li>Untuk jelasnya saya ambil contoh dengan shoubox milik saya, untuk menempatkannya tinggal klik Edit pada browser lalu pilih Find (on this page).. trus tuliskan kata buku tamu lalu klik find, maka kita akan langsung di bawa ke tulisan tersebut. Jika sudah ketemu tulisan tadi silahkan paste kode HTML shoutbox nya. </li>
<li>Klik tombol <strong>Preview</strong> untuk melihat perubahan yang kita buat.</li>
<li>Jika sudah cocok dengan perubahan tadi, klik <strong>Save Template Changes</strong></li>
<li>Selesai</li>
</ol><br />
Sedikit Clue, agar shoutbox anda sesuai dengan ukuran lebar sidebar , anda bisa merubah ukuran lebar ataupun tinggi dari shoutbox , caranya anda tinggal merubah angka Width (untuk lebar) dan Height (untuk tinggi) dari dalam kode HTML shoutbox tersebut. <br />
<br />
<strong>Untuk Blogger baru</strong> :<br />
<ol><li>Silahkan Login dengan id anda </li>
<li>Klik menu <strong>Layout</strong></li>
<li>Klik <strong>Page Element</strong></li>
<li>Klik <strong>Add a Page Element</strong></li>
<li>Klik tombol<strong> Add to Blog</strong> yang berada di bawah tulisan <strong>HTML/JavaScript</strong> </li>
<li>Tuliskan judul shoutbox anda pada form title. Contoh : Buku tamu ku, atau my guestbook atau apa saja yang anda suka</li>
<li>Copy paste kode HTML shoutbox anda di dalam form <strong>Content</strong> </li>
<li>Klik tombol <strong>Save Changes</strong></li>
<li>Drag & Drop element yang telah anda buat tadi di tempat yang di sukai</li>
<li>Tekan tombol <strong>Save</strong></li>
<li>Selesai</li>
</ol><br />
Selamat mencoba ! <br />
<br />
Sebagai tambahan, guestbook yang sering dipakai para blogger lainnya :<br />
<ol><li><a href="http://oggix.com/" rel="nofollow" target="_blank" title="untuk menuju oggix.com. silahkan klik di sini">http://oggix.com</a></li>
</ol>Untuk langkah-langkahnya hampir sama dengan langkah diatas</div>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-7409140063754445432011-07-25T23:28:00.000-07:002011-07-25T23:28:15.009-07:00Kumpulan Gambar Laptop Tercanggih<h2 class="post-title entry-title"> <a href="http://hengkigunawan1591.blogspot.com/2011/07/kumpulan-gambar-laptop-tercanggih.html"><br />
</a> </h2><div class="post-header"> <span class="post-author vcard"> Diposkan oleh <span class="fn">Hengki Gunawan</span> </span> <span class="post-timestamp"> di <a class="timestamp-link" href="http://hengkigunawan1591.blogspot.com/2011/07/kumpulan-gambar-laptop-tercanggih.html" rel="bookmark" title="permanent link"><abbr class="published" title="2011-07-17T15:40:00+07:00">15:40</abbr></a> </span> </div><div class="post-body entry-content"> <div id="summary507479755535094171"><span style="color: black;"><b>Kumpulan Gambar Laptop Tercanggih</b></span> Ini adalah <i><b>Kumpulan Gambar Laptop Tercanggih</b></i> yang terbaru di blog kami. Bagi anda yang ingin memngetahui<a href="http://www.blogger.com/goog_1159539183" style="color: black;"> </a><span style="color: black; text-decoration: underline;">Laptop</span> Tercanggih pas banget dengan <span style="text-decoration: underline;"><b>Kumpulan Gambar Laptop Tercanggih</b></span>.<br />
<div class="wp-caption aligncenter" id="attachment_611" style="width: 310px;"><a href="http://gambarfototerbaru.tk/0609-kumpulan-gambar-laptop-tercanggih.html/gambar-laptop-tercanggih" rel="attachment wp-att-611"><img alt="Gambar Laptop Tercanggih" class="size-medium wp-image-611" height="250" src="http://gambarfototerbaru.tk/wp-content/uploads/2011/06/Gambar-Laptop-Tercanggih-300x225.jpg" title="Gambar Laptop Tercanggih" width="300" /></a><br />
<div class="wp-caption-text">Gambar Laptop Tercanggih</div></div><span id="more-610"></span><br />
<div class="wp-caption aligncenter" id="attachment_612" style="width: 310px;"><a href="http://gambarfototerbaru.tk/0609-kumpulan-gambar-laptop-tercanggih.html/laptop-tercanggih" rel="attachment wp-att-612"><img alt="Laptop Tercanggih" class="size-medium wp-image-612" height="250" src="http://gambarfototerbaru.tk/wp-content/uploads/2011/06/Laptop-Tercanggih-300x181.jpg" title="Laptop Tercanggih" width="300" /></a><br />
<div class="wp-caption-text">Laptop Tercanggih</div></div><div class="wp-caption aligncenter" id="attachment_613" style="width: 310px;"><a href="http://gambarfototerbaru.tk/0609-kumpulan-gambar-laptop-tercanggih.html/laptop-tercanggih-2011" rel="attachment wp-att-613"><img alt="Laptop Tercanggih 2011" class="size-medium wp-image-613" height="250" src="http://gambarfototerbaru.tk/wp-content/uploads/2011/06/Laptop-Tercanggih-2011-300x213.jpg" title="Laptop Tercanggih 2011" width="300" /></a><br />
<div class="wp-caption-text">Laptop Tercanggih 2011</div></div><div class="wp-caption aligncenter" id="attachment_614" style="width: 310px;"><a href="http://gambarfototerbaru.tk/0609-kumpulan-gambar-laptop-tercanggih.html/foto-laptop-tercanggih" rel="attachment wp-att-614"><img alt="Foto Laptop Tercanggih" class="size-medium wp-image-614" height="250" src="http://gambarfototerbaru.tk/wp-content/uploads/2011/06/Foto-Laptop-Tercanggih-300x210.jpg" title="Foto Laptop Tercanggih" width="300" /></a><br />
<div class="wp-caption-text">Foto Laptop Tercanggih</div></div><div class="wp-caption aligncenter" id="attachment_615" style="width: 310px;"><a href="http://gambarfototerbaru.tk/0609-kumpulan-gambar-laptop-tercanggih.html/kumpulan-gambar-laptop-tercanggih" rel="attachment wp-att-615"><img alt="Kumpulan Gambar Laptop Tercanggih" class="size-medium wp-image-615" height="250" src="http://gambarfototerbaru.tk/wp-content/uploads/2011/06/Kumpulan-Gambar-Laptop-Tercanggih-300x225.jpg" title="Kumpulan Gambar Laptop Tercanggih" width="300" /></a><br />
<div class="wp-caption-text">Kumpulan Gambar Laptop Tercanggih</div></div>Itulah <i><b>“Kumpulan Gambar Laptop Tercanggih”</b></i> semoga bermanfaat bagi anda</div></div><span class="post-labels"> <a href="http://hengkigunawan1591.blogspot.com/search/label/Teknologi" rel="tag">Teknologi</a> </span>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-16932577180487166332011-07-25T23:26:00.001-07:002011-07-25T23:26:30.445-07:0010 Game Tersulit Sepanjang Masa<h3 class="post-title entry-title"> <a href="http://karimcenter.blogspot.com/2011/07/10-game-tersulit-sepanjang-masa.html"><br />
</a> </h3><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMbTSrZAF6VlAhktCZAcLgf57n4CD_8XfWZhexJcwvajVUf0rFKzboPXb4U7YUf4VTONyDxG2CKYaHLbQV2VpsIwaN_J1ZKZP_2TEDbN9VP4LHOUteDeEsvVJYr_XsK7i1g5eyC2pNsAc/s1600/game+geghans.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMbTSrZAF6VlAhktCZAcLgf57n4CD_8XfWZhexJcwvajVUf0rFKzboPXb4U7YUf4VTONyDxG2CKYaHLbQV2VpsIwaN_J1ZKZP_2TEDbN9VP4LHOUteDeEsvVJYr_XsK7i1g5eyC2pNsAc/s400/game+geghans.jpg" width="335" /></a></div>Game adalah media hiburan yang paling efektif untuk menghilangkan stress, setidaknya itu yang dipikirkan oleh orang awam terhadap industri kreatif ini. Pandangan bahwa game hanya fokus pada hal-hal yang menyenangkan dan tidak memerlukan kemampuan otak untuk memainkannya benar-benar harus diubah. Kenapa? Karena orang awam juga harus mengerti bahwa bagi gamer seperti kita, game adalah sebuah tantangan yang harus ditaklukkan. Apalah artinya sebuah tantangan tanpa hadirnya hal-hal yang membuat kita frustrasi terlebih dahulu. Game menyediakan itu semua.<br />
<br />
Pernahkah Anda memainkan sebuah game yang justru menyerap semua energi kehidupan Anda begitu saja? Yang bukannya menghadirkan hiburan, tetapi emosi negatif seperti marah, kecewa, dan frustrasi? Setidaknya ada beberapa game yang berdampak begitu buru. Terkadang rasanya ingin memecahkan setiap keping CD atau melempar monitor keluar rumah ketika kita sama sekali tidak menemukan cara untuk menyelesaikan game-game ini. Tetapi rasa frustrasi seperti inilah yang mampu menghadirkan pengalaman bermain yang sesungguhnya.<br />
<br />
Dari cukup banyak game yang sudah pernah dimainkan, sedikitnya tidak menemukan lebih dari 50 game yang menimbulkan rasa frustrasi yang hebat. Karena kalau iya, tidak tertutup kemungkinan Anda akan akan masuk ke rumah sakit jiwa terdekat dengan diagnosa yang berat. Apa saja 10 game tersebut,..??? cekidot..<br />
<br />
<span class="fullpost"> <br />
<center><b style="color: #cc0000; font-family: lucida grande; font-size: 18px;">10. Catherine</b><br />
<img border="0" src="http://www.bleedingcool.com/wp-content/uploads//2011/03/catherine.jpg" /></center><br />
Pada dasarnya Catherine merupakan game puzzle yang dikemas dalam bentuk yang sangat menarik. Dating, misteri, pilihan moral, dan perselingkuhan dipadukan dalam game menyusun balok yang sulit.<br />
Memainkan game ini di mode NORMAL saja sudah cukup membuat Anda pusing. Semua balok disusun secara acak dengan tujuan yang sederhana, Anda menggunakannya untuk mencapai pintu keluar di puncak. Percayalah, game ini memang terdengar gampang, tetapi ketika Anda mencobanya, Anda akan seringkali mengulang level yang sama terus-menerus hingga berjam-jam sebelum menemukan komposisi balok yang pas. Jika Anda tidak tahan dengan tekanan, Catherine akan membawa mimpi buruk.<br />
<br />
<br />
<center><b style="color: #cc0000; font-family: lucida grande; font-size: 18px;">9. Super Meat Boy</b><br />
<img border="0" src="http://sega-addicts.murnaumusic.com/wp-content/uploads/2010/10/Super-Meat-Boy-Game-Feast.jpeg" /></center><br />
Anda mungkin jatuh cinta dengan karakter bertubuh merah yang menggemaskan ini, namun jika harus memainkannya di Super Meat Boy? Bersiaplah untuk mencapai frustrasi tingkat tinggi. Dalam game yang dirilis untuk XBOX Live Arcade ini, Anda berperan sebagai Meat Boy yang harus menyelamatkan pacarnya, Bandage girl, di setiap misi yang ada. Jangan berharap mudah, karena game ini menawarkan jebakan-jebakan yang tampak mustahil untuk diselesaikan. Tumpukan gergaji besi dan senjata berat akan berusaha menghancurkan tubuh Anda tanpa sisa. Jika Anda termasuk orang yang pantang menyerah, silakan coba game ini.<br />
<br />
<br />
<center><b style="color: #cc0000; font-family: lucida grande; font-size: 18px;">8. Touhou</b><br />
<img border="0" height="240" src="http://lightprince.files.wordpress.com/2010/07/touhou08reisen.png" width="320" /></center><br />
Ini mungkin reaksi pertama yang Anda rasakan ketika pertama kali memainkan salah satu seri dari Touhou Project. Karakter dan Boss dengan desain khas anime dipadukan dengan soundtrack lagu yang keren memang membuat kita terbuai akan keindahannya. Namun ketika Anda berusaha menamatkan game shooter ini? Tunggu dulu, Touhou menyimpan tantangan yang akan menguras air mata Anda dengan cepat.<br />
Untuk memainkan sebuah game shooter dua dimensi, gamer pasti dituntut untuk memiliki tingkat konsentrasi yang tinggi untuk menghindari setiap peluru yang datang ke karakter Anda. Untuk Touhou? Anda harus meningkatkan konsentrasi tersebut ke level yang jauh lebih tinggi lagi. Walaupun tembakan yang hadir tampak begitu berwarna, namun yakinlah bahwa setiap darinya cukup untuk membuat Anda hancur berkeping-keping. Bayangkan saja bagaimana caranya menghindari peluru tembakan yang tampak tidak menyisakan ruang kosong di layar. Ini masih mode normal. Ketika Anda menginjak tingkat kesulitan yang lebih tinggi? Bye-bye....<br />
<br />
<br />
<center><b style="color: #cc0000; font-family: lucida grande; font-size: 18px;">7. Microsoft Flight Simulator</b><br />
<img border="0" src="http://www.gamegit.com/images/stories/PC_Games/MicrosoftFlightSimulator.jpg" /></center><br />
Game harus menyenangkan. Tentu saja, kita sangat setuju dengan itu. Bagaimana jika ada game yang hadir tanpa menawarkan apapun yang berkaitan dengan kesenangan, dan hanya rasa frustrasi, apakah masih layak disebut sebagai sebuah game? Jika itu yang Anda cari, maka Anda harus mencoba memainkan Microsoft Flight Simulator.<br />
Menyandang nama simulator, tentu saja Anda jangan berharap menerbangkan pesawat ala Ace Combat atau HAWX. Di simulator ini, Anda benar-benar berperan sebagai seorang pilot yang mengawaki pesawat komersil. Anda tentunya pasti pernah melihat panel-panel bertebaran di kokpit pesawat? Ya, itu yang harus Anda otak-atik dan atur untuk dapat menerbangkan pesawat yang Anda pimpin. Kesalahan sedikit dapat berakibat sangat fatal.<br />
<br />
<br />
<center><b style="color: #cc0000; font-family: lucida grande; font-size: 18px;">6. Minesweeper</b><br />
<img border="0" src="http://www.bestesoft.com/imgbest/5/0/50177-crazy-minesweeper.gif" /></center><br />
Solitaire mungkin menjadi game yang seringkali Anda mainkan ketika membutuhkan hiburan ringan di sela-sela kesibukan. Game wajib pengguna sistem operasi Windows tersebut memang membutuhkan sedikit strategi untuk menundukkannya, dan seringkali berhasil. Perasaan bahagia tersebut yang membuat Solitaire digemari. Tapi tahukah Anda bahwa Anda memiliki opsi untuk membuat hari jauh lebih buruk dengan hanya sebuah game sederhana dari Windows? Saran saya, mainkanlah Minesweeper.Dalam minesweeper, Anda harus membuka area tanpa menyentuh sama sekali ranjau yang ada. Lokasi ranjau dapat dipantau dari setiap angka area yang terbuka. Angka tersebut menunjukkan jumlah ranjau yang terdapat di area 8 kotak di sekitarnya. Bagi saya? Angka ini sama sekali tidak berarti, karena seperti Rambo, saya seringkali tidak mengerti clue yang ada dan akhirnya memilih ranjau. Bedanya dengan Rambo? Saya tidak pernah menang di minesweeper.<br />
<br />
<br />
<center><b style="color: #cc0000; font-family: lucida grande; font-size: 18px;">5. Metal Slug Arcade Edition</b><br />
<img border="0" height="320" src="http://loyalkng.com/wp-content/uploads/2010/07/Metal-Slug-Recreated-w-StarCraft-2-Map-Editor-Downloadable-unreal-engine.jpg" width="320" /></center><br />
Siapa yang pernah memainkan Metal Slug di konsol? Hampir dari semua gamer akan mengangkat tangan mereka. Game side-scrolling shooter ini memang fun dan menarik untuk dimainkan. Walaupun grafis yang dihadirkan boleh dikatakan standar, namun ada kepuasan di setiap kali Anda berhasil menundukkannya. Sekarang mari kita hitung, berapa kali Anda mati dan harus melakukan continue dalam permainan? Lebih dari sepuluh kali? Bukan masalah jika Anda memainkannya di konsol. Bagaimana jika Anda memainkannya di Arcade yang membutuhkan koin?<br />
Pemborosan yang menyenangkan jika kita dapat menyimpulkannya, karena Metal Slug Arcade Edition benar-benar terasa jauh lebih sulit. Entah karena memang didesain seperti itu, atau setiap koin uang yang kita keluarkan memang membuat game ini terasa semakin berat. Saya mengacungkan semua jempol yang saya punya jika Anda berani mengklaim tidak menggunakan continue sama sekali di Metal Slug Arcade Edition.<br />
<br />
<br />
<center><b style="color: #cc0000; font-family: lucida grande; font-size: 18px;">4. Grandia Extreme</b><br />
<img border="0" src="http://img403.imageshack.us/img403/995/52939493.jpg" /></center><br />
Grandia, salah satu nama besar di dunia RPG yang tidak perlu diragukan lagi kualitasnya. Salah satu alasan yang membuat gamer mencintai dunia RPG adalah karena sensasi fun yang dihadirkannya. Memainkan Grandia Extreme akan membuat Anda dari cinta menjadi sangat benci dengan dunia ini. Bagaimana tidak, Anda harus menghadapi musuh yang levelnya lebih tinggi dengan kemampuan yang lebih rendah, plus karena sistem dungeon, Anda hanya bisa melakukan save setiap 10 lantai saja. Yang membuatnya semakin membuat Anda ingin menangis? Sebelum dapat melakukan save, Anda harus mengalahkan boss terlebih dahulu. Kalah dari boss berarti mengulang dari lantai 1 lagi.<br />
<br />
<br />
<center><b style="color: #cc0000; font-family: lucida grande; font-size: 18px;">3. Demons Souls</b><br />
<img border="0" src="http://www.thehobbykingdom.com/userfiles/demon_soul.jpg" /></center><br />
Hampir semua gamer akan setuju bahwa Demons Souls merupakan game RPG tersulit yang pernah ada. Mengapa? Pertama, karena Anda tidak bisa sembarangan melakukan hack and slash begitu saja melawan semua musuh yang ada. Perlu strategi untuk setiap perlawanan Anda. Yang kedua, jangan kaget jika Anda bertemu dengan musuh yang bisa membunuh Anda dengan hanya satu kali pukulan, bahkan di awal permainan. (What the?). Sangat sulit untuk menggambarkan rasa frustrasi yang dilahirkan Demon Souls. Anda harus merasakannya sendiri untuk dapat mengerti apa yang berusaha kita sampaikan. Yang pasti, Demons Souls benar-benar akan membuat Anda merasa ada iblis yang tinggal di hati Anda,<br />
<br />
<br />
<center><b style="color: #cc0000; font-family: lucida grande; font-size: 18px;">2. Myst</b><br />
<img border="0" src="http://www.iphonestalk.com/images/myst.jpg" /></center><br />
Myst mungkin merupakan game point dan click belaka, tetapi jangan sekali-kali Anda meremehkan game ini. Setiap misteri yang harus Anda pecahkan selalu berkaitan dengan puzzle-puzzle yang membuat kepala terasa lebih berat setiap harinya. Mencari jalan keluar? Anda tidak akan menemukan clue yang secara eksplisit mengarahkan Anda pada tujuan yang harus dicapai. Penjelajahan yang harus Anda tempuh harus didasarkan pada informasi yang Anda dapatkan melalui proses eksplorasi di sekitar wilayah yang ada. Kehilangan sebuah clue saja sudah cukup membuat Anda uring-uringan mencarinya. Myst benar-benar epic dari segi menghadirkan gejala sakit jiwa bagi para gamer.<br />
<br />
<br />
<center><b style="color: #cc0000; font-family: lucida grande; font-size: 18px;">1. I Wanna Be the Guy</b><br />
<img border="0" height="179" src="http://asset.gameone.de/gameone/assets/blog_posts/videos/2422/player_format/iwbtg_preview2.jpg" width="320" /></center><br />
Game tersulit yang pernah saya mainkan? Tentu saja I Wanna Be The Guy. Game indie yang dapat Anda temukan dan unduh secara mudah lewat internet ini memang menawarkan rasa frustrasi belaka tanpa kesenangan sama sekali (kecuali Anda mengkategorikan tertawa frustrasi itu lambang kebahagiaan). Memiliki gameplay yang mirip dengan Super Meat Boy, I Wanna be The Guy adalah game plaform yang sangat sulit untuk diselesaikan. Mengapa? Karena hampir setiap tanah yang Anda injak memiliki jebakan yang dapat membuat Anda terbunuh seketika. Beberapa bagian bahkan tampak sangat mustahil untuk diselesaikan oleh manusia biasa, bahkan yang aura karisma nya mampu memukau dunia. Anda butuh wangsit dan kemampuan supernatural tingkat tinggi untuk menyelesaikan game ini. I dont wanna be the guy!<br />
<br />
List di atas merupakan game-game yang menurut saya paling sulit untuk dimainkan. Beberapa di antaranya mampu menghadirkan rasa frustrasi yang hebat ...<br />
Silahkan anda mencoba sendiri, eitss .... tapi jangan pakai cheat yaa..</span>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-77571227753250800582011-07-20T08:54:00.001-07:002011-07-20T08:54:34.133-07:00Proses dan Penjadwalan Cpu Bagan IV<div class="SECTION"><h1 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C39">Prioritas dan Multiprosesor</a></h1>Penjadwalan pada multiprosesor jelas lebih kompleks, karena kemungkinan masalah yang timbul jauh lebih banyak daripada prosesor tunggal.<br />
<div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C39-1">Apa itu Prioritas</a></h2>Prioritas adalah suatu istilah yang digunakan untuk menentukan tingkat urutan atau hirarki suatu proses yang sedang masuk dalam <i class="FOREIGNPHRASE">ready queue</i> .</div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C39-2">Multiprosesor</a></h2>Mengacu pada buku <i class="FOREIGNPHRASE">Operating System</i> Edisi ke-6 karya Silberschatz, sistem dengan prosesor jamak yang dimaksud adalah suatu sistem dimana prosesor-prosesornya identik. Dalam hal ini berarti tiap proses dapat masuk antrian manapun dari prosesor-prosesor yang ada. Yang patut diperhatikan, tiap prosesor dapat memilih proses apa saja yang ingin dijalankan dari <i class="FOREIGNPHRASE">ready queue</i> . Dengan kata lain, prioritas proses ditentukan secara independen oleh masing-masing prosesor. Jadi salah satu prosesor bisa saja <i class="FOREIGNPHRASE">idle</i> ketika ada proses yang sedang ditunda . Oleh karena itu, tiap prosesor harus di <i class="FOREIGNPHRASE">synchronize</i> lebih dulu agar tidak ada dua prosesor atau lebih yang berebut mengeksekusi proses yang sama dan mengubah <i class="FOREIGNPHRASE">shared data</i> . Sistem seperti ini dikenal juga dengan sebutan <i class="FOREIGNPHRASE">synchronous</i> . Selain <i class="FOREIGNPHRASE">synchronous</i> ,ada juga sistem lain yang disebut <i class="FOREIGNPHRASE">asynchronous</i> , yang juga dikenal dengan struktur " <i class="FOREIGNPHRASE">master-slave</i> " dimana salah satu prosesor dialokasikan khusus untuk mengatur penjadwalan. Sedangkan prosesor yang lain ditujukan untuk mengkomputasikan proses yang telah dijadwalkan sebelumnya oleh <i class="FOREIGNPHRASE">master</i> prosesor. Peningkatan dari sistem ini adalah mengalokasikan penjadwalan, pemrosesan I/O, dan kegiatan sistem lainnya kepada satu prosesor tertentu kepada <i class="FOREIGNPHRASE">master</i> . Sedangkan prosesor yang lain hanya bertugas mengeksekusi <i class="FOREIGNPHRASE">user code</i> .<br />
<br />
<br />
<div class="SECTION"><h1 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C310">Sistem Waktu Nyata</a></h1>Pada sub bab ini, kami akan mencoba sedikit menggambarkan fasilitas penjadualan yang dibutuhkan untuk mendukung komputasi real-time dengan bantuan sistem komputer. <br />
Suatu sistem komputasi dinamakan real-time jika sistem tersebut dapat mendukung eksekusi program/aplikasi dengan waktu yang memiliki batasan. Dengan kata lain, sistem real-time harus memenuhi kondisi berikut: 1. Batasan waktu: memenuhi deadline, artinya bahwa aplikasi harus menyelesaikan tugasnya dalam waktu yang telah dibatasi. 2. Dapat diprediksi: artinya bahwa sistem harus bereaksi terhadap semua kemungkinan kejadian selama kejadian tersebut bisa diprediksi. 3. Proses bersamaan: artinya jika ada beberapa proses yang terjadi bersamaan, maka semua deadline nya harus terpenuhi. <br />
Komputasi real-time ada 2 jenis, yaitu sistem Hard real-time dan sistem Soft real-time. <br />
<div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C310-1">Sistem Hard Real-Time</a></h2>Sistem <span class="strong"><b class="EMPHASIS">hard real-time</b></span> dibutuhkan untuk menyelesaikan critical task dengan jaminan waktu tertentu. Jika kebutuhan waktu tidak terpenuhi, maka aplikasi akan gagal. Dalam definisi lain disebutkan bahwa kontrol sistem hard real-time dapat mentoleransi keterlambatan tidak lebih dari 100 mikro detik. Secara umum, sebuah proses di kirim dengan sebuah pernyataan jumlah waktu dimana dibutuhkan untuk menyelesaikan atau menjalankan I/O. Kemudian penjadual bisa menjamin proses untuk selesai atau menolak permintaan karena tidak mungkin dilakukan. Mekanisme ini dikenal dengan <span class="strong"><b class="EMPHASIS"> resource reservation</b></span>. Oleh karena itu setiap operasi harus dijamin dengan waktu maksimum. Pemberian jaminan seperti ini tidak dapat dilakukan dalam sistem dengan <i class="FOREIGNPHRASE"> secondary storage </i> atau <i class="FOREIGNPHRASE"> virtual memory </i>, karena sistem seperti ini tidak dapat meramalkan waktu yang dibutuhkan untuk mengeksekusi suatu proses. <br />
Contoh dalam kehidupan sehari-hari adalah pada sistem pengontrol pesawat terbang. Dalam hal ini, keterlambatan sama sekali tidak boleh terjadi, karena dapat berakibat tidak terkontrolnya pesawat terbang. Nyawa penumpang yang ada dalam pesawat tergantung dari sistem ini, karena jika sistem pengontrol tidak dapat merespon tepat waktu, maka dapat menyebabkan kecelakaan yang merenggut korban jiwa. </div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C310-2">Sistem Soft Real-Time</a></h2>Komputasi <span class="strong"><b class="EMPHASIS">soft real-time</b></span> memiliki sedikit kelonggaran. Dalam sistem ini, proses yang kritis menerima prioritas lebih daripada yang lain. Walaupun menambah fungsi soft real-time ke sistem time sharing mungkin akan mengakibatkan ketidakadilan pembagian sumber daya dan mengakibatkan delay yang lebih lama, atau mungkin menyebabkan <i class="FOREIGNPHRASE">starvation </i>, hasilnya adalah tujuan secara umum sistem yang bisa mendukung multimedia, grafik berkecepatan tinggi, dan variasi tugas yang tidak bisa diterima di lingkungan yang tidak mendukunng komputasi soft real-time. <br />
Contoh penerapan sistem ini dalam kehidupan sehari-hari adalah pada alat penjual/pelayan otomatis. Jika mesin yang menggunakan sistem ini telah lama digunakan, maka mesin tersebut dapat mengalami penurunan kualitas, misalnya waktu pelayanannya menjadi lebih lambat dibandingkan ketika masih baru. Keterlambatan pada sistem ini tidak menyebabkan kecelakaan atau akibat fatal lainnya, melainkan hanya menyebabkan kerugian keuangan saja. Jika pelayanan mesin menjadi lambat, maka para pengguna dapat saja merasa tidak puas dan akhirnya dapat menurunkan pendapatan pemilik mesin. <br />
Untuk lebih memahami tentang perbedaan kedua sistem ini dapat diperhatikan dari diagram dibawah ini. <br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C310-1-F1"></a><b>Gambar 3-14. Grafik Hard Real-Time</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c310-2-f1-hard_real_time.png" /><br />
<div class="CAPTION">http://www.ncst.ernet.in/education/pgdst/coosfac/slides/rtos.pdf </div></div></div><div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C310-1-F2"></a><b>Gambar 3-15. Grafik Soft Real-Time</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c310-2-f2-soft_real_time.png" /><br />
<div class="CAPTION">http://www.ncst.ernet.in/education/pgdst/coosfac/slides/rtos.pdf </div></div></div>Setelah batas waktu yang diberikan telah habis, pada sistem hard real-time, aplikasi yang dijalankan langsung dihentikan. Akan tetapi, pada sistem soft real-time, aplikasi yang telah habis masa waktu pengerjaan tugasnya, dihentikan secara bertahap atau dengan kata lain masih diberikan toleransi waktu. <br />
Mengimplementasikan fungsi soft real time membutuhkan design yang hati-hati dan aspek yang berkaitan dengan sistem operasi. Pertama, sistem harus punya prioritas penjadualan, dan proses real-time harus memiliki prioritas tertinggi, tidak melampaui waktu, walaupun prioritas non real time bisa terjadi. Kedua, <i class="FOREIGNPHRASE">dispatch latency </i> harus lebih kecil. Semakin kecil latency, semakin cepat real time proses mengeksekusi. <br />
Untuk menjaga <i class="FOREIGNPHRASE">dispatch</i> tetap rendah, kita butuh agar <i class="FOREIGNPHRASE">system call </i> untuk <i class="FOREIGNPHRASE">preemptible </i>. Ada beberapa cara untuk mencapai tujuan ini. Pertama adalah dengan memasukkan <i class="FOREIGNPHRASE">preemption points</i> di durasi <i class="FOREIGNPHRASE">system call </i> yang lama, yang memeriksa apakah prioritas utama butuh untuk dieksekusi. Jika sudah, maka <i class="FOREIGNPHRASE"> contex switch</i> mengambil alih, ketika <i class="FOREIGNPHRASE">high priority </i> proses selesai, proses yang diinterupsi meneruskan dengan <i class="FOREIGNPHRASE"> system call</i>. Points <i class="FOREIGNPHRASE">premption </i>bisa diganti hanya di lokasi yang aman di kernel dimana kernel struktur tidak bisa dimodifikasi. <br />
Metoda yang lain adalah dengan membuat semua kernel <i class="FOREIGNPHRASE">preemptible</i>. Karena operasi yang benar bisa dijamin, semua struktur data kernel harus diproteksi dengan mekanisme sinkronisasi. Dengan metode ini, kernel bisa selalu di <i class="FOREIGNPHRASE">preemptible </i>, karena setiap data kernel yang sedang di <i class="FOREIGNPHRASE">update</i> diproteksi dengan pemberian prioritas yang tinggi. Jika ada proses dengan prioritas tinggi ingin membaca atau memodifikasi data kernel yang sedang dijalankan, prioritas yang tinggi harus menunggu sampai proses dengan prioritas rendah tersebut selesai. Situasi seperti ini dikenal dengan <span class="strong"><b class="EMPHASIS"> priority inversion</b></span>. Kenyataanya, serangkaian proses dapat saja mengakses sumber daya yang sedang dibutuhkan oleh proses yang lebih tinggi prioritasnya. Masalah ini dapat diatasi dengan <span class="strong"><b class="EMPHASIS"> priority-inheritance protocol</b></span>, yaitu semua proses yang sedang mengakses sumber daya mendapat prioritas tinggi sampai selesai menggunakan sumber daya. Setelah selesai, prioritas proses ini dikembalikan menjadi seperti semula. </div></div></div></div><br />
<hr align="LEFT" width="100%" />Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-81320691517426792652011-07-20T08:33:00.003-07:002011-07-20T08:46:55.171-07:00Proses dan Penjadwalan Cpu Bagan II<div class="SECTION"><h1 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35">Konsep Thread</a></h1><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-1">Apa itu Thread</a></h2>Thread adalah unit dasar dari penggunaan CPU, thread mengandung Thread ID, <i class="FOREIGNPHRASE">program counter</i> , <i class="FOREIGNPHRASE">register set</i> , dan <i class="FOREIGNPHRASE">stack</i> . Sebuah Thread berbagi <i class="FOREIGNPHRASE">code section</i> , <i class="FOREIGNPHRASE">data section</i> , dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut <i class="FOREIGNPHRASE">lightweight process</i> . Sebuah proses tradisional atau <i class="FOREIGNPHRASE">heavyweight process</i> mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaan antara proses dengan thread tunggal dengan proses dengan thread yang banyak adalah proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-1-F1"></a><b>Gambar 3-8. Thread</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c35-1-f1-thread.png" /></div></div>Banyak software yang berjalan pada PC modern didesain secara <i class="FOREIGNPHRASE">multithreading</i> . Sebuah aplikasi biasanya diimplementasi sebagai proses yang terpisah dengan beberapa thread yang berfungsi sebagai pengendali. Contohnya sebuah <i class="FOREIGNPHRASE">web browser</i> mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network.<br />
Kadang kala ada situasi dimana sebuah aplikasi diperlukan untuk menjalankan beberapa tugas yang serupa. Sebagai contohnya sebuah <i class="FOREIGNPHRASE">web server</i> bisa mempunyai ratusan klien yang mengaksesnya secara <i class="FOREIGNPHRASE">concurrent</i> . Kalau <i class="FOREIGNPHRASE">web server</i> berjalan sebagai proses yang hanya mempunyai thread tunggal maka ia hanya bisa 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 <i class="FOREIGNPHRASE">web server</i> menjadi <i class="FOREIGNPHRASE">multithreading</i> . Dengan ini maka sebuah <i class="FOREIGNPHRASE">web server</i> akan membuat thread yang akan mendengar permintaan klien, ketika permintaan lain diajukan maka <i class="FOREIGNPHRASE">web server</i> akan menciptakan thread lain yang akan melayani permintaan tersebut.<br />
Java mempunyai pengunaan lain dari thread. Perlu dikeahui bahwa java tidak mempunyai konsep <i class="FOREIGNPHRASE">asynchronous</i> . Sebagai contohnya kalau program java mencoba untuk melakukan koneksi ke server maka ia akan berada dalam keadaan block state sampai koneksinya jadi ( bisa dibayangkan apa yang terjadi apabila servernya mati ). Karena java tidak memiliki konsep <i class="FOREIGNPHRASE">asynchronous</i> maka solusinya adalah dengan membuat thread yang mencoba untuk melakukan koneksi ke server dan thread lain yang pertamanya tidur selamabeberap waktu ( misalnya 60 detik ) kemudian bangun. Ketika waktu tidurnya habis maka ia akan bangun dan memeriksa apakah thread yang melakukan koneksi ke server masih mencoba untuk melakukan koneksi ke server, kalau thread tersebut masih dalam keadaan mencoba untuk melakukan koneksi ke server maka ia akan melakukan interrupt dan mencegah thread tersebut untuk mencoba melakukan koneksi ke server.</div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-2">Keuntungan Thread</a></h2>Keuntungan dari program yang multithrading dapat dipisah menjadi empat kategori :<br />
<ol type="1"><li>Responsi : Membuat aplikasi yang interaktif menjadi <i class="FOREIGNPHRASE">multithreading</i> dapat membuat sebuah program terus berjalan meskipun sebagian dari program tersebut diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalam <i class="FOREIGNPHRASE">web browser</i> yang <i class="FOREIGNPHRASE">multithreading</i> , sebuah thread dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan image.</li>
<li>Berbagi sumber daya : thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengijinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.</li>
<li>Ekonomi : dalam pembuatan sebuah proses banyak 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 <i class="FOREIGNPHRASE">context switch</i> 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 <i class="FOREIGNPHRASE">context switch</i> proses 5 kali lebih lama dibandingkan <i class="FOREIGNPHRASE">context switch</i> thread.</li>
<li>Utilisasi arsitektur <i class="FOREIGNPHRASE">multiprocessor</i> : Keuntungan dari multithreading bisa sangat meningkat pada arsitektur <i class="FOREIGNPHRASE">multiprocessor</i> , 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( satu -satuan waktu pada CPU biasa disebut time slice atau quantum ).</li>
</ol></div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-3">User dan Kernel Threads</a></h2><h1 class="BRIDGEHEAD"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="AEN2724"></a>User Thread</h1>User thread didukung diatas kernel dan diimplementasi oleh thread library pada user level. <i class="FOREIGNPHRASE">Library</i> meneyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel. Karena kernel tidak menyadari user-level thread maka semua pembuatan dan penjadwalan thread dilakukan di user space tanpa intervensi dari kernel. Oleh karena itu, user -level thread biasanya cepat untuk dibuat dan diatur. Tetapi user thread mempunyai kelemahan yaitu apabila kernelnya merupakan thread tunggal maka apabila salah satu user-level thread menjalankan <i class="FOREIGNPHRASE">blocking system call</i> maka akan mengakibatkan seluruh proses diblok walaupun ada thread lain yang bisa jalan dalam aplikasi tersebut. Contoh <i class="FOREIGNPHRASE">user-thread libraries</i> adalah POSIX Pthreads, Mach C-threads, dan Solaris threads.<br />
<h1 class="BRIDGEHEAD"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="AEN2729"></a>Kernel Thread</h1>Kernel thread didukung langsung oleh sistem operasi. Pembuatan, penjadwalan, dan manajeman thread dilakukan oleh kernel pada <i class="FOREIGNPHRASE">kernel space</i> . Karena pengaturan thread dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread. Keuntungannya adalah thread diatur oleh kernel, karena itu jika sebuah thread menjalankan <i class="FOREIGNPHRASE">blocking system call</i> maka kernel bisa menjadwalkan thread lain di aplikasi untuk melakukan eksekusi. Keuntungan lainnya adalah pada lingkungan <i class="FOREIGNPHRASE">multiprocessor</i> , kernel bisa menjadwal thread-thread pada processor yang berbeda. Contoh sistem operasi yang mendukung kernel thread adalah Windows NT, Solaris, Digital UNIX.</div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-4">Multithreading Models</a></h2><h1 class="BRIDGEHEAD"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="AEN2745"></a>Many-to-One Model</h1>Many-to-One model memetakan banyak user-level thread ke saru kernel thread. Pengaturan thread dilakukan di user space, oleh karena itu ia efisien tetapi ia mempunyai kelemahan yang sama dengan user thread. Selain itu karena hanya satu thread yang bisa mengakses thread pada suatu waktu maka <i class="FOREIGNPHRASE">multiple</i> thread tidak bisa berjalan secara pararel pada <i class="FOREIGNPHRASE">multiprocessor</i> . User-level thread yang diimplementasi pada sistem operasi yang tidak mendukung kernel thread menggunakan Many-to-One model.<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-4-F1"></a><b>Gambar 3-9. Many-To-One</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c35-4-f1-many2one.png" /></div></div><h1 class="BRIDGEHEAD"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="AEN2754"></a>One-to-One Model</h1>One-to-One model memetakan setiap user thread ke kernel thread. Ia menyediakan lebih banyak <i class="FOREIGNPHRASE">concurrency</i> dibandingkan Many-to-One model. Keuntungannya sama dengan keuntungan kernel thread. Kelemahannya model ini adalah setiap pembuatan user thread membutuhkan pembuatan kernel thread. Karena pembuatan thread bisa menurunkan performa dari sebuah aplikasi maka implmentasi dari model ini membatasi jumlah thread yang dibatasi oleh sistem. Contoh sistem operasi yang mendukung One-to-One model adalah Windows NT dan OS/2.<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-4-F2"></a><b>Gambar 3-10. One-To-One</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c35-4-f2-one2one.png" /></div></div><h1 class="BRIDGEHEAD"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="AEN2762"></a>Many-to-Many Model</h1>Many-to-many model <i class="FOREIGNPHRASE">multiplexes</i> banyak user-level thread ke kernel thread yang jumlahnya lebih kecil atau sama banyaknya dengan user-level thread. Jumlah kernel thread bisa spesifik untuk sebagian aplikasi atau sebagian mesin. Many-to-One model mengijinkan developer ntuk membuat user thread sebanyak yang ia mau tetapi <i class="FOREIGNPHRASE">concurrency</i> tidak dapat diperoleh karena hanya satu thread yang bisa 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 bisa membuat thread dalam jumlah yang terbatas ). Many-to-Many model tidak menderita kelemahan dari 2 model di atas. Developer bisa membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan bisa bejalan secara pararel pada <i class="FOREIGNPHRASE">multiprocessor</i> . Dan juga ketika suatu thread menjalankan <i class="FOREIGNPHRASE">blocking system call</i> maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi. Contoh sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX.<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-4-F3"></a><b>Gambar 3-11. Many-To-Many</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c35-4-f3-many2many.png" /></div></div></div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-5">Fork dan exec System Call</a></h2>Ada 2 kemungkinan dalam system UNIX jika <i class="FOREIGNPHRASE">fork</i> dipanggil oleh salah satu thread dalam proses:<br />
<ol type="1"><li>Semua thread diduplikasi.</li>
<li>Hanya thread yang memanggil <i class="FOREIGNPHRASE">fork</i> .</li>
</ol>Kalau thread memanggil <i class="FOREIGNPHRASE">exec System Call</i> maka program yang dispesifikasi di parameter exec akan mengganti keseluruhan proses termasuk thread dan LWP.<br />
Penggunaan 2 versi dari fork diatas tergantung dari aplikasi. Kalau exec dipanggil seketika sesudah fork, maka duplikasi seluruh thread tidak dibutuhkan, karena program yang dispesifikasi di parameter <i class="FOREIGNPHRASE">exec</i> akan mengganti seluruh proses. Pada kasus ini cukup hanya mengganti thread yang memanggil <i class="FOREIGNPHRASE">fork</i> . Tetapi jika proses yang terpisah tidak memanggil <i class="FOREIGNPHRASE">exec</i> sesudah fork maka proses yang terpisah tersebut hendaknya menduplikasi seluruh thread.</div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-6">Cancellation</a></h2>Thread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan JVM( Java Virtual Machine ) maka sebelum JVM-nya dimatikan maka seluruh thread yang berjalan dihentikan terlebuh dahulu. Thread yang akan diberhentikan biasa disebut target thread.<br />
Pemberhentian target thread bisa terjadi melalui 2 cara yang berbeda :<br />
<ol type="1"><li> <i class="FOREIGNPHRASE">Asynchronous cancellation</i> : suatu thread seketika itu juga memberhentikan target thread.</li>
<li> <i class="FOREIGNPHRASE">Defered cancellation</i> : target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan targetthread untuk memberhentikan dirinya sendiri secara terurut.</li>
</ol>Hal yang sulit dari pemberhentian thread ini adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan diberhentikan. Selain itu kesulitan lain adalah ketika thread yang diberhentikan sedang meng-update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila digunakan <i class="FOREIGNPHRASE">asynchronous cancellation</i> . Sistem operasi akan mengambil kembali sumber daya dari thread yang diberhentikan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber daya dari thread yang diberhentikan.<br />
Alternatifnya adalah dengan menggunakan <i class="FOREIGNPHRASE">Deffered cancellation</i> . Cara kerja dari <i class="FOREIGNPHRASE">deffered cancellation</i> adalah dengan menggunakan 1 thread yang berfungsi sebagai pengindikasi bahwa target thread hendak diberhentikan. Tetapi pemberhentian hanya akan terjadi jika target thread memeriksa apakah ia harus berhenti atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia bisa diberhentikan secara aman yang aman. Pthread merujuk tersebut sebagai <i class="FOREIGNPHRASE">cancellation points</i> .<br />
Pada umumnya sistem operasi memperbolehkan proses atau thread untuk diberhentikan secara <i class="FOREIGNPHRASE">asynchronous</i> . Tetapi Pthread API menyediakan <i class="FOREIGNPHRASE">deferred cancellation</i> . Hal ini berarti sistem operasi yang mengimplementasikan Pthread API akan mengijinkan <i class="FOREIGNPHRASE">deferred cancellation</i> .</div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-7">Penanganan Sinyal</a></h2>Sebuah sinyal digunakan di sistem UNIX untuk <i class="FOREIGNPHRASE">notify</i> sebuah proses kalau suatu peristiwa telah terjadi. Sebuah sinyal bisa diterima secara <i class="FOREIGNPHRASE">synchronous</i> atau <i class="FOREIGNPHRASE">asynchronous</i> tergantung dari sumber dan alasan kenapa peristiwa itu memberi sinyal.<br />
Semua sinyal( <i class="FOREIGNPHRASE">asynchronous</i> dan <i class="FOREIGNPHRASE">synchronous</i> ) mengikuti pola yang sama :<br />
<ol type="1"><li>Sebuah sinyal dimunculkan oleh kejadian dari suatu persitiwa.</li>
<li>Sinyal yang dimunculkan tersebut dikirim ke proses.</li>
<li>Sesudah dikirim, sinyal tersebut harus ditangani.</li>
</ol>Contoh dari sinyal <i class="FOREIGNPHRASE">synchronous</i> adalah ketika suatu proses melakukan pengaksesan memori secarai ilegal atau pembagian dengan nol, sinyal dimunculkan dan dikirim ke proses yang melakukan operasi tersebut. Contoh dari sinyal <i class="FOREIGNPHRASE">asynchronous</i> misalnya kita mengirimkan sinyal untuk mematikan proses dengan keyboard( alt-f4 ) maka sinyal <i class="FOREIGNPHRASE">asynchronous</i> dikirim ke proses tersebut. Jadi ketika suatu sinyal dimunculkan oleh peristiwa diluar proses yang sedang berjalan maka proses tersebut menerima sinyal tersebut secara <i class="FOREIGNPHRASE">asynchronous</i> .<br />
Setiap sinyal bisa ditangani oleh salah satu dari 2 penerima sinyal :<br />
<ol type="1"><li>Penerima sinyal yang merupakan set awal dari sistem operasi.</li>
<li>Penerima sinyal yang didefinisikan sendiri ole user.</li>
</ol>Penanganan sinyal pada program yang hanya memakai thread tunggal cukup mudah yaitu hanya dengan mengrimkan sinyal ke prosesnya. Tetapi mengirimkan sinyal lebih rumit pada program yang <i class="FOREIGNPHRASE">multithreading</i> , karena sebuah proses bisa memiliki beberapa thread.<br />
Secara umum ada 4 pilihan kemana sinyal harus dikirim :<br />
<ol type="1"><li>Mengirimkan sinyal ke thread yang dituju oleh sinyal tersebut.</li>
<li>Mengirimkan sinyal ke setiap thread pada proses tersebut.</li>
<li>Mengirimkan sinyal ke thread tertentu dalam proses.</li>
<li>4. Menugaskan thread khusus untuk menerima semua sinyal yang ditujukan pada proses.</li>
</ol>Cara untuk mengirimkan sebuah sinyal tergantung dari tipe sinyal yang dimunculkan. Sebagai contoh sinyal <i class="FOREIGNPHRASE">synchronous</i> perlu dikirimkan ke thread yang memunculkan sinyal tersebut bukan thread lain pada proses tersebut. Tetapi situasi dengan sinyal <i class="FOREIGNPHRASE">asynchronous</i> 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 mengijinkan 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 <i class="FOREIGNPHRASE">asynchronous procedure calls( APCs )</i> . Fasilitas APC memperbolehkan user thread untuk memanggil fungsi tertentu ketika user thread menerima notifikasi peristiwa tertentu.</div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-8">Thread Pools</a></h2>Pada <i class="FOREIGNPHRASE">web server</i> yang <i class="FOREIGNPHRASE">multithreading</i> ada 2 masalah yang timbul :<br />
<ol type="1"><li>Ukuran waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan yang diajukan terlebih pada kenyataannya thread dibuang ketika ia seketika sesudah ia menyelesaikan tugasnya.</li>
<li>Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem.</li>
</ol>Solusinya adalah dengan penggunaan Thread Pools, cara kerjanya adalah dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke <i class="FOREIGNPHRASE">pools</i> , dimana mereka duduk diam dan menunggu untuk bekerja. Jadi ketika server menerima permintaan maka maka ia akan membangunkan thread dari <i class="FOREIGNPHRASE">pool</i> dan jika threadnya tersedia maka permintaan tersebut akan dilayani. Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali ke <i class="FOREIGNPHRASE">pool</i> dan menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan maka server menunggu sampai ada 1 thread yang bebas.<br />
Keuntungan thread pool :<br />
<ol type="1"><li>Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat.</li>
<li>Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini pentingpada sistem yang tidak bisa mendukung banyak thread yang berjalan secara <i class="FOREIGNPHRASE">concurrent</i> .</li>
</ol>Jumlah thread dalam <i class="FOREIGNPHRASE">pool</i> bisa tergantung dari jumlah CPU dalam sistem, jumlah memori fisik, dan jumlah permintaan klien yang <i class="FOREIGNPHRASE">concurrent</i> .</div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-9">Hal-Hal Lainnya dari Thread</a></h2><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-9-1">Thread-Specific Data</a></h3>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.</div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C35-9-2">Pthreads</a></h3>Pthreads merujuk kepada POSIX standard( IEEE 1003.1 c ) mendefinisikan sebuah API untuk pembuatan thread dan sinkronisasi. Pthreads adalah spesifikasi untuk thread dan bukan merupakan suatu implementasi. Desainer sistem operasi boleh mengimplementasikan spesifikasi tersebut dalam berbagai cara yang mereka inginkan. Secara umum Libraries yang mengimplementasikan Pthreads dilarang pada sistem berbasis UNIX seperti Solaris 2. Sistem operasi Windows secara umum belum mendukung Pthreads, walaupun versi <i class="FOREIGNPHRASE">shareware</i> -nya sudah ada di domain publik.<br />
<br />
<br />
<div class="SECTION"><h1 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C36">Ilustrasi <i class="FOREIGNPHRASE">Thread</i> dengan Linux dan Java</a></h1>Dewasa ini, banyak sistem operasi yang telah mendukung proses <i class="FOREIGNPHRASE">multithreading</i>. Setiap sistem operasi memiliki konsep tersendiri dalam mengimplementasikannya ke dalam sistem.<br />
<div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C36-1"><i class="FOREIGNPHRASE">Thread</i> dengan Linux</a></h2><i class="FOREIGNPHRASE">Kernel</i> Linux mulai menggunakan <i class="FOREIGNPHRASE">thread</i> pada versi 2.2. <i class="FOREIGNPHRASE">Thread</i> dalam Linux dianggap sebagai <i class="FOREIGNPHRASE">task</i> , seperti halnya proses. Kebanyakan sistem operasi yang mengimplementasikan <i class="FOREIGNPHRASE">multithreading</i> menjalankan sebuah <i class="FOREIGNPHRASE">thread</i> terpisah dari proses. Linus Torvalds mendefinisikan bahwa sebuah thread adalah <i class="FOREIGNPHRASE">Context of Execution</i> (COE), yang berarti bahwa hanya ada sebuah <i class="FOREIGNPHRASE">Process Control Block</i> (PCB) dan sebuah penjadwal yang diperlukan. Linux tidak mendukung <i class="FOREIGNPHRASE">multithreading </i>, struktur data yang terpisah, atau pun rutin <i class="FOREIGNPHRASE">kernel</i>. <br />
Linux menyediakan dua macam <i class="FOREIGNPHRASE">system call </i>, yaitu <i class="FOREIGNPHRASE">fork</i> dan <i class="FOREIGNPHRASE">clone</i>. <i class="FOREIGNPHRASE">fork </i> memiliki fungsi untuk menduplikasi proses dimana proses anak yang dihasilkan bersifat <i class="FOREIGNPHRASE">independent</i>. <i class="FOREIGNPHRASE">clone</i> memiliki sifat yang mirip dengan <i class="FOREIGNPHRASE">fork</i> yaitu sama-sama membuat duplikat dari proses induk. Namun demikian, selain membuat proses baru yang terpisah dari proses induk, <i class="FOREIGNPHRASE"> clone</i> juga mengizinkan terjadinya proses berbagi ruang alamat antara proses anak dengan proses induk, sehingga proses anak yang dihasilkan akan sama persis dengan proses induknya. <br />
Setiap proses memiliki struktur data yang unik. Namun demikian, proses-proses di Linux hanya menyimpan <i class="FOREIGNPHRASE">pointer-pointer</i> ke struktur data lainnya dimana instruksi disimpan, sehingga tidak harus menyimpan instruksi ke setiap struktur data yang ada. Hal ini menyebabkan <i class="FOREIGNPHRASE">context switch </i> antar proses di Linux menjadi lebih cepat. <br />
Ketika <i class="FOREIGNPHRASE">fork</i> dieksekusi, sebuah proses baru dibuat bersamaan dengan proses penyalinan struktur data dari proses induk. Ketika <i class="FOREIGNPHRASE">clone</i> dieksekusi, sebuah proses baru juga dibuat, namun proses tersebut tidak menyalin struktur data dari proses induknya. Proses baru tersebut hanya menyimpan <i class="FOREIGNPHRASE">pointer</i> ke struktur data proses induk. Oleh karena itu, proses anak dapat berbagi ruang alamat dan sumber daya dengan proses induknya. Satu set <i class="FOREIGNPHRASE">flag</i> digunakan untuk mengindikasikan seberapa banyak kedua proses tersebut dapat berbagi. Jika tidak ada <i class="FOREIGNPHRASE">flag</i> yang ditandai, maka tidak ada <i class="FOREIGNPHRASE">sharing</i>, sehingga <i class="FOREIGNPHRASE">clone</i> berlaku sebagai <i class="FOREIGNPHRASE">fork</i>. Jika kelima <i class="FOREIGNPHRASE">flag</i> ditandai, maka proses induk harus berbagi semuanya dengan proses anak. <br />
<br />
<div class="TABLE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="AEN2970"></a><b>Tabel 3-1. Tabel Flag dan Fungsinya</b><br />
<table border="1" class="CALSTABLE" rules="all"><col></col><col></col><thead>
<tr><th>Flag</th><th>Keterangan</th></tr>
</thead><tbody>
<tr><td>CLONE_VM</td><td>Berbagi data dan Stack</td></tr>
<tr><td>CLONE_FS</td><td>Berbagi informasi sistem berkas</td></tr>
<tr><td>CLONE_FILES</td><td>Berbagi berkas</td></tr>
<tr><td>CLONE_SIGHAND</td><td>Berbagi sinyal</td></tr>
<tr><td>CLONE_PID</td><td>Berbagi PID dengan proses induk</td></tr>
</tbody></table></div></div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C36-2"><i class="FOREIGNPHRASE">Thread</i> dengan Java</a></h2>Sistem operasi mendukung <i class="FOREIGNPHRASE">thread </i> pada tingkat <i class="FOREIGNPHRASE">kernel </i> atau tingkat pengguna. Java merupakan salah satu dari sedikit bahasa pemrograman yang mendukung <i class="FOREIGNPHRASE"> thread</i> di tingkat bahasa untuk pembuatan dan manajemen <i class="FOREIGNPHRASE">thread</i>. Karena <i class="FOREIGNPHRASE">thread</i> dalam Java diatur oleh <i class="FOREIGNPHRASE">Java Virtual Machine</i> (JVM), tidak dengan <i class="FOREIGNPHRASE">user level library </i> ataupun <i class="FOREIGNPHRASE">kernel</i>, sulit mengelompokkan <i class="FOREIGNPHRASE">thread</i> di Java apakah di tingkat pengguna atau <i class="FOREIGNPHRASE"> kernel</i>.<br />
Setiap program dalam Java memiliki minimal sebuah <i class="FOREIGNPHRASE">thread</i>, yaitu <i class="FOREIGNPHRASE"> main thread</i> yang merupakan <i class="FOREIGNPHRASE">single-thread</i> tersendiri di JVM. Java juga menyediakan perintah untuk membuat dan memodifikasi <i class="FOREIGNPHRASE">thread</i> tambahan sesuai kebutuhan di program.<br />
<div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C36-2-1">Pembuatan <i class="FOREIGNPHRASE">Thread</i></a></h3>Ada dua cara untuk membuat <i class="FOREIGNPHRASE">thread </i> dalam Java. Pertama, <i class="FOREIGNPHRASE">thread </i> dapat dibuat secara eksplisit dengan cara membuat objek baru dari class yang telah meng-<i class="FOREIGNPHRASE"> extends class Thread</i> yang menyebabkan class tersebut mewarisi <i class="FOREIGNPHRASE">method - method</i> dan <i class="FOREIGNPHRASE">field</i> dari <i class="FOREIGNPHRASE"> class super</i>. Dalam kasus ini, sebuah <i class="FOREIGNPHRASE">class</i> hanya bisa meng- <i class="FOREIGNPHRASE">extends</i> sebuah class. Keterbatasan ini dapat diatasi dengan cara kedua yaitu meng-<i class="FOREIGNPHRASE"> implements interface Runnable</i>, yang merupakan cara yang paling sering digunakan untuk membuat <i class="FOREIGNPHRASE"> thread</i>, sehingga class tersebut dapat meng- <i class="FOREIGNPHRASE">extends class</i> lain. <br />
Sebuah objek yang berasal dari subkelas <i class="FOREIGNPHRASE"> Thread</i> dapat dijalankan sebagai <i class="FOREIGNPHRASE">thread</i> pengontrol yang terpisah dalam JVM. Membuat objek dari <i class="FOREIGNPHRASE">class Thread</i> tidak akan membuat <i class="FOREIGNPHRASE">thread</i> baru. Hanya dengan <i class="FOREIGNPHRASE">method start thread </i> baru akan terbentuk. Memanggil <i class="FOREIGNPHRASE">method start </i> untuk membuat objek baru akan mengakibatkan 2 hal, yaitu: <br />
1. Pengalokasian memori dan menginisialisasikan sebuah <i class="FOREIGNPHRASE">thread</i> baru dalam JVM. <br />
2. Memanggil <i class="FOREIGNPHRASE">method run</i>, yang sudah di- <i class="FOREIGNPHRASE">override</i>, membuat <i class="FOREIGNPHRASE">thread</i> dapat dijalankan oleh JVM <br />
(Catatan: <i class="FOREIGNPHRASE">Method run</i> dijalankan jika <i class="FOREIGNPHRASE">method start</i> dipanggil. Memanggil <i class="FOREIGNPHRASE">method run</i> secara langsung hanya menghasilkan sebuah <i class="FOREIGNPHRASE">single-thread</i> tambahan selain <i class="FOREIGNPHRASE">main thread</i>) <br />
Contoh pembuatan <i class="FOREIGNPHRASE">thread</i> dengan membuat objek baru dari class yang meng-<i class="FOREIGNPHRASE">extends class Thread</i>: <br />
<table bgcolor="#e0e0e0" border="0"><tbody>
<tr><td><pre class="PROGRAMLISTING">public class TestThread1 {
public static void main (String[] args) {
BuatThread1 b = new BuatThread1();
for(int i = 0; i < angka; i++) {
b.start();
}
}
}
class BuatThread1 extends Thread {
public void run() {
try {
System.out.println("Thread baru dibuat.");
}
catch (InterruptedException e) {
} }</pre></td></tr>
</tbody></table></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C36-2-2">JVM dan <i class="FOREIGNPHRASE">Host Operating System</i></a></h3>Implementasi umum dari JVM adalah di atas sebuah <i class="FOREIGNPHRASE">host operating system</i> . Hal ini memungkinkan JVM untuk menyembunyikan implementasi detail dari sistem operasi tempat JVM dijalankan dan menyediakan lingkungan abstrak dan konsisten yang memungkinkan program-program Java untuk beroperasi di atas <i class="FOREIGNPHRASE">platform</i> apa pun yang mendukung JVM. Spesifikasi untuk JVM tidak mengindikasikan bagaimana <i class="FOREIGNPHRASE">thread-thread </i> Java dipetakan ke sistem operasi tempat JVM dijalankan, melainkan menyerahkan keputusan tersebut kepada implementasi tertentu dari JVM. Windows 95/98/NT/2000 menggunakan model <i class="FOREIGNPHRASE">One-to-One</i> , sehingga setiap <i class="FOREIGNPHRASE">thread</i> Java untuk JVM pada sistem operasi tersebut dipetakan kepada sebuah <i class="FOREIGNPHRASE">kernel thread </i>. Solaris 2 awalnya mengimplementasikan JVM menggunakan model <i class="FOREIGNPHRASE">Many-to-One</i> (disebut <i class="FOREIGNPHRASE">Green Threads</i>) . Akan tetapi, sejak JVM versi 1.1 dengan Solaris 2.6, mulai diimplementasikan menggunakan model <i class="FOREIGNPHRASE">Many-to-Many</i> .</div></div></div></div></div></div>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-3893732524838254852011-07-07T21:03:00.000-07:002011-07-07T21:17:08.280-07:00Mengubah XP Menjadi Mac X OS Leopard<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO9oH8QZ8kM-U3n90AxU4oUzxRMScQW9_2mzzj3f9wU8OKsQVf97aVvN_coDwY7OY6sVXyEsqNxwOw_LyabsrRdjTa0gHOAIVLCaDmdrcCpYX3ikDHkoIJ0W71TqgUvIltRSdLufpFLXI/s1600/2ajqtmh.png" style="margin-left: 1em; margin-right: 1em;"><img alt="Leopard" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO9oH8QZ8kM-U3n90AxU4oUzxRMScQW9_2mzzj3f9wU8OKsQVf97aVvN_coDwY7OY6sVXyEsqNxwOw_LyabsrRdjTa0gHOAIVLCaDmdrcCpYX3ikDHkoIJ0W71TqgUvIltRSdLufpFLXI/s320/2ajqtmh.png" /></a></div><br />
<div style="text-align: justify;">Banyak yang meminta/request kepada saya untuk memposting <b>theme untuk windows xp</b>, tapi disini saya akan memberikan lebih dari sekedar theme, yaitu Transformation Pack.<br />
<br />
Mungkin anda masih banyak yang tidak tahu, atau bingung apa perbedaan antara theme dengan Transformation Pack, saya akan sedikit menjelaskan. Theme itu biasanya merubah tampilan dari jendela - jendelanya saja, sedangkan Transformation Pack lebih lengkap tidak hanya tampilan, hampir semua dirubah. </div><br />
<a href="http://karimcenter.blogspot.com/2011/07/merubah-xp-menjadi-mac-os-x-leopard.html" name="more"></a>Dengan <b>Transformation Pack Mac OS Leopard</b> ini, anda akan merasakan tampilan seperti tampilan asli dari Mac OS. Mulai dari cursor, menu, folder, dan lainnya.<br />
<br />
Jadi anda tidak perlu meng-isntal satu persatu untuk memiliki tampilan seperti Leopard, anda hanya perlu menginstal satu aplikasi ini, kemudian tinggal tunggu dan restart PC, Otomatis PC anda akan langsung memiliki tampilan yang berbeda.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtAGFrUkYHs6kA-1SwPRhRLjmDG6QlpkBdNz09RyAK3Is15wvIN2lKQOuWcsyQtaQQokCcJCTpAFq_aAqP9Kup2t-rTIvFbjHNHvgT_W8x5OguXHJuJFV3MGB9T6iaHDH53F7cvNfxZIQ/s1600/3_leopard02.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="explorer" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtAGFrUkYHs6kA-1SwPRhRLjmDG6QlpkBdNz09RyAK3Is15wvIN2lKQOuWcsyQtaQQokCcJCTpAFq_aAqP9Kup2t-rTIvFbjHNHvgT_W8x5OguXHJuJFV3MGB9T6iaHDH53F7cvNfxZIQ/s320/3_leopard02.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAzYDO0m2DIZ1VifQer2pFJRrm0JoXm7zQJS4lNbV1o4ParlaYrcJayRcTxOOUttsKrHbg35vxCXSYX0Nu19lS0LEomyzH5kdNWHNhsKSdtxqzBpq15PfducBMmgLzDPzCJluJedWJjLw/s1600/3_leopard03.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="Office" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAzYDO0m2DIZ1VifQer2pFJRrm0JoXm7zQJS4lNbV1o4ParlaYrcJayRcTxOOUttsKrHbg35vxCXSYX0Nu19lS0LEomyzH5kdNWHNhsKSdtxqzBpq15PfducBMmgLzDPzCJluJedWJjLw/s320/3_leopard03.jpg" /></a></div><br />
Tampilan Windows XP anda akan berubah menjadi tampilan seperti gambar diatas, jika anda sudah bosan dengan tampilan XP yang standart, sedangkan anda ingin memiliki tampilan yang berbeda, seperti tampilan Leopard ini. <br />
<br />
Anda tidak perlu bersusah payah, apalagi mengganti PC anda, hanya untuk memiliki tampilan Leopard, anda tinggal install aplikasi ini, dan lihat penampilan windows xp anda yang baru.<br />
<br />
Jika anda ingin mengembalikan ke awal, anda tinggal unisntal aplikasi ini, maka secara otomatis akan kembali ke tampilan sebelum software ini ter-instal. Untuk lebih aman lagi, anda bisa membuat restore point sebelum aplikasi ini diinstal.<br />
<br />
Baiklah untuk mendownload <b>BricoPack Mac OS X Leopard</b> ini, silakan anda klik link download dibawah ini..<br />
<br />
<br />
<a href="http://www.indowebster.com/LeopardXP.html" style="font-family: Georgia;" target="_blank"><span style="font-size: 90%;">Download Software</span></a> <a href="http://www36.indowebster.com/790768bea52d254194702a9dadd3c01b.exe" style="font-family: Georgia;" target="_blank"><span style="font-size: 90%;">Download Direct</span></a>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-45252447543688658282011-07-07T02:43:00.001-07:002011-07-07T20:40:34.263-07:00ROBOT HARDWARE<h3 class="style5"><br />
</h3><span class="style3">Below is a list of robotics hardware suppliers.</span> <br />
<br />
<h3><a href="http://www.surveyor.com/SRV_info.html"><img align="middle" border="0" height="65" hspace="3" src="http://www.teletoyland.com/images/surveyor01.jpg" width="80" /><span class="style7">Surveyor SRV-1</span></a></h3><div class="style3">Designed for research, education, and exploration, Surveyor's SRV-1 internet-controlled robot integrates a 60MIPS ARM7TDMI 32-bit processor, a digital video camera with resolution from 80x64 to 640x480 pixels, infrared sensors, and Zigbee 802.15.4 wireless communications on a dual-motor tracked mobile robotic base, to explore, discover and report back to home. Designed to operate as a remotely-controlled webcam or a self-navigating autonomous robot, the SRV-1 can be managed from a Windows, Mac OS/X or Linux base station, and multiple SRV-1's can be controlled by a single base station. </div><h3><a href="http://www.servocity.com/"><img align="middle" border="0" height="47" hspace="3" src="http://www.teletoyland.com/images/servo_city01.jpg" width="224" /><span class="style7">Servo City</span></a></h3><div class="style3">Servo City sells servos, servo accessories, robot parts, and some custom servo gears etc. </div><h3><a href="http://www.lynxmotion.com/"><img align="middle" border="0" height="50" hspace="3" src="http://www.teletoyland.com/images/lynxmotion01.jpg" width="134" /><span class="style7">Lynxmotion</span></a></h3><div class="style3">We have a nice selection of intelligently designed, precision engineered robot kits and components. We have many innovative solutions to common robotics problems. In addition to lots of cool products, we also have tons of information on doing hobby robotics. </div><h3><a href="http://www.zagrosrobotics.com/"><img align="middle" border="0" height="78" hspace="3" src="http://www.teletoyland.com/images/zagros.jpg" width="80" /><span class="style7">Zagros Robotics</span></a></h3><div class="style3">The MAX ‘99’ mobile base platform is the mobile robotics platform of the future. The base comes with two 12-inch diameter (30cm) decks. It features dual casters and dual drive motors making it very stable. This robot will turn on it own axis making it very maneuverable.</div><h3><a href="http://www.robotstore.com/"><img align="middle" border="0" height="60" hspace="3" src="http://www.teletoyland.com/images/jameco_logo.gif" width="186" /><span class="style7">Jameco's Robot Store</span></a></h3><div class="style3">The Best In Robots from the Internet's Original Robot Site - Since 1994! In 2005, Jameco Electronics purchased RobotStore.com to expand their existing line of robot products. With plans to become the one-stop site for the robotics community, Jameco is expanding the depth and breadth of product and service offerings to meet the needs of the unique robotics hobbyists. </div><h3><a href="http://www.acroname.com/"><img align="middle" border="0" height="50" hspace="3" src="http://www.teletoyland.com/images/acroname01.gif" width="150" /><span class="style7">Acroname</span></a></h3><div class="style3">Acroname's mission is to provide expertise, applications and high quality products in robotics. We aim not to just make money, but to advance our field with applications that benefit people. </div><h3><a href="https://botballstore.org/catalog/"> <span class="style7">KIPR Robot Products</span></a></h3><div class="style3">Products to support the Botball competition </div><h3><a href="http://www.sparkfun.com/commerce/categories.php"> <span class="style7">Spark Fun Electronics</span></a></h3><div class="style3">Prototyping Supplies, BlueTooth modems etc. </div><h3><a href="http://www.maxstream.net/"> <span class="style7">MaxStream</span></a></h3><div class="style3">MaxStream supplies OEMs and integrators with reliable radio modems and radio modules that meet the unique needs of industry and commerce. The wireless modems are easy-to-use and provide reliable delivery of critical data between devices. </div>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-45236643156984225922011-07-07T02:39:00.001-07:002011-07-07T20:41:14.087-07:00Menaruh Elemen Halaman Di Bawah Header<h3 class="post-title"><span class="date-header"><br />
</span></h3><br />
<span style="font-weight: bold;">Menaruh Elemen Halaman Di Bawah Header </span>- Dapat dikatakan juga menempatkan widget di bawah header. Jika anda punya keinginan seperti itu, silahkan ikuti langkah-langkah sebagai berikut :<br />
<ol><li>Login ke blogger dengan Username / id dan Pasword anda </li>
<li>Klik <b>Tata Letak</b>. </li>
<li> Klik tab <b>Elemen Halaman</b>, lihat pada struktur layout template anda. Biasanya bagian header akan seperti ini :<br />
<img alt="elemenheader" border="0" height="107" src="http://lh4.ggpht.com/24rohman/SIkt-tJ4clI/AAAAAAAAAFU/ZvzWYwDgftQ/elemenheader_thumb7.jpg?imgmax=800" style="border-width: 0px;" title="elemenheader" width="484" /><br />
</li>
<li> Sekarang kita akan memodifikasinya, let’s go to party.<br />
</li>
<li> Klik Tab <b>Edit HTML</b>.<br />
</li>
<li> Klik Tulisan <b>Download Template Lengkap</b>, silahkan di backup dulu (penting).<br />
</li>
<li> Cari Kode yang mirip seperti ini :<br />
<b:section class='header' id='header' maxwidgets='1' showaddelement='no'><br />
<br />
</li>
<li>Hapus kode di atas dan ganti dengan kode di bawah ini : <b:section class='header' id='header' preferred='yes'></li>
<li>Klik tombol <b>Simpan template</b>. Tunggu beberapa saat sampai template anda tersimpan.<br />
</li>
<li> Klik tab <b>Elemen halaman</b>. Dan sekarang layout template anda akan menjadi seperti ini :<br />
<br />
<a href="http://lh3.ggpht.com/24rohman/SIkuAPEFJiI/AAAAAAAAAFY/m_I9oXoTV1o/s1600-h/headerelemen7.jpg"><img alt="header-elemen" border="0" height="175" src="http://lh6.ggpht.com/24rohman/SIkuDCc8g9I/AAAAAAAAAFc/8NbhnvY7IbQ/headerelemen_thumb5.jpg?imgmax=800" style="border-width: 0px;" title="header-elemen" width="495" /></a> </li>
<li>Sekarang anda bisa menambahkan berbagai elemen langsung di bawah header. </li>
<li>Untuk menambah elemen halaman tinggal klik <b>Tambah Elemen Halaman</b>. Silahkan tambahkan apa yang anda mau, apabila sudah di tambahkan tinggal geser elemen yang baru di buat tadi ke bawah elemen header. </li>
<li>Klik Tombol <b>SIMPAN</b> yang ada di bagian atas. </li>
<li>Selesai, sekarang tinggal lihat hasilnya</li>
</ol>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-73009890888232850422011-07-07T02:32:00.000-07:002011-07-20T08:31:54.763-07:00Proses dan Penjadwalan Cpu Bagan I<div class="SECTION"><h1 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C31">Konsep Proses</a></h1>Jika kita berdiskusi mengenai sistem operasi, maka akan timbul sebuah pertanyaan yaitu mengenai istilah apa yang tepat untuk menyebut semua aktivitas yang dilakukan oleh CPU. Sistem <i class="FOREIGNPHRASE">Batch</i> mengeksekusi <i class="FOREIGNPHRASE">jobs</i> sebagaimana suatu sistem <i class="FOREIGNPHRASE">time-share</i> menggunakan program pengguna ( <i class="FOREIGNPHRASE">user programs</i> ) atau <i class="FOREIGNPHRASE">tasks</i> . Bahkan pada sistem dengan satu penggunapun, seperti pada Microsoft Windows dan Macintosh OS, seorang pengguna mampu menjalankan beberapa program pada saat yang sama, contohnya Word Processor, Web Browser, dan paket e-mail. Bahkan jika pengguna hanya dapat menjalankan 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.<br />
Istilah <i class="FOREIGNPHRASE">job</i> dan proses digunakan hampir dapat dipertukarkan pada tulisan ini. Walau kami sendiri lebih menyukai istilah proses, banyak teori dan terminologi sistem-operasi dikembangkan selama suatu waktu ketika aktivitas utama sistem operasi adalah <i class="FOREIGNPHRASE">job processing</i> . Akan membingungkan jika kita menghindari penggunaan istilah yang telah diterim oleh publik yang memasukkan kata <i class="FOREIGNPHRASE">job</i> hanya karena proses memiliki istilah <i class="FOREIGNPHRASE">job</i> sebagai pengganti atau pendahulunya.<br />
<div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C31-1">Definisi Proses</a></h2>Secara tidak langsung, proses adalah program yang sedang dieksekusi. Menurut SilberSchatz, suatu proses adalah lebih dari sebuah kode program, yang terkadang disebut <span class="strong"><b class="EMPHASIS">text section</b></span> . Proses juga mencakup <span class="strong"><b class="EMPHASIS">program counter</b></span> , yaitu sebuah <span class="strong"><b class="EMPHASIS">stack</b></span> untuk menyimpan alamat dari instruksi yang akan dieksekusi selanjutnya dan register. Sebuah proses pada umumnya juga memiliki sebuah <span class="strong"><b class="EMPHASIS">stack</b></span> yang berisikan data-data yang dibutuhkan selama proses dieksekusi (seperti parameter method, alamat return dan variabel lokal), dan sebuah <span class="strong"><b class="EMPHASIS">data section</b></span> yang menyimpan variabel global.<br />
Sama halnya dengan SilberSchatz, Tanenbaum juga berpendapat bahwa proses adalah sebuah program yang dieksekusi yang mecakup <i class="FOREIGNPHRASE">program counter</i> , register, dan variabel di dalamnya.<br />
Kami tekankan bahwa program itu sendiri bukanlah sebuah proses; suatu program adalah satu entitas pasif; seperti isi dari sebuah berkas yang disimpan didalam disket. Sedangkan sebuah proses dalam suatu entitas aktif, dengan sebuah program counter yang menyimpan alamat instruksi selanjut yang akan dieksekusi dan seperangkat sumber daya ( <i class="FOREIGNPHRASE">resource</i> yang dibutuhkan agar sebuah proses dapat dieksekusi.<br />
Untuk mempermudah kita membedakan program dengan proses, kita akan menggunakan analogi yang diberikan oleh Tanenbaum. Misalnya ada seorang tukang kue yang ingin membuat kue ulang tahun untuk anaknya. Tukang kue tersebut memiliki resep kue ulang tahun dan bahan-bahan yang dibutuhkan untuk membuat kue ulang tahun di dapurnya seperti: tepung terigu, telur, gula, bubuk vanila dan bahan-bahan lainnya. Dalam analogi ini, resep kue ulang tahun adalah sebuah program, si tukang kue tersebut adala prosesor (CPU), dan bahan-bahan untuk mebuat kue tersebut adalah data input. Sedangkan proses-nya adalah kegiatan sang tukang kue untuk membaca resep, mengolah bahan, dan memanggang kue tersebut.<br />
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 <i class="FOREIGNPHRASE">text-section</i> adalah sama, <i class="FOREIGNPHRASE">data section</i> -nya bervariasi. Adalah umum untuk memiliki proses yang menghasilkan banyak proses begitu ia bekerja. Hal ini akan dijelaskan lebih detail pada subbab Hubungan Antar Proses.</div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C31-2">Status Proses</a></h2>Bila sebuah proses dieksekusi, maka statusnya akan berubah-ubah. Status dari sebuah proses mencerminkan aktivitas atau keadaan dari proses itu sendiri. Berikut ini adalah status-status yang mungkin dimiliki sebuah proses menurut Tanenbaum:<br />
<br />
<ul><li>Running: pada saat menggunakan CPU pada suatu waktu</li>
<li>Ready: proses diberhentikan sementara karena menunggu proses lain untuk dieksekusi</li>
<li>Blocked: tidak dijalankan sampai event dari luar (yang berhubungan dengan proses tersebut) terjadi</li>
</ul>Sedangkan menurut SilberSchatz, terdapat 5 macam jenis status yang mungkin dimiliki oleh suatu proses:<br />
<br />
<ul><li>New: status yang dimiliki pada saat proses baru saja dibuat</li>
<li>Running: status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi</li>
<li>Waiting: status yang dimiliki pada saat proses menunggu suatu event (contohnya: proses I/O)</li>
<li>Ready: status yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor</li>
<li>Terminated: status yang dimililki pada saat proses telah selesai dieksekusi</li>
</ul>Nama-nama tersebut adalah berdasar opini, istilah tersebut bervariasi di sepanjang sistem operasi. Keadaan yang mereka gambarkan ditemukan pada seluruh sistem. Namun, pada sistem operasi tertentu lebih baik menggambarkan keadaan/status proses. Penting untuk diketahui bahwa hanya satu proses yang dapat berjalan pada prosesor mana pun pada satu waktu. Namun, banyak proses yang dapat berstatus ready atau waiting. Keadaan diagram yang berkaitan dangan keadaan tersebut dijelaskan pada <a href="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/c3.html#C31-2-F1">Gambar 3-1</a>.<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C31-2-F1"></a><b>Gambar 3-1. Status Proses</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c31-2-f1-gambar2-1.png" /><br />
<div class="CAPTION">http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-1.png </div></div></div>Ada tiga kemungkinan bila sebuah proses memilki status running:<br />
<br />
<ul><li>Jika program telah selesai dieksekusi maka status dari proses tersebut akan berubah menjadi Terminated.</li>
<li>Jika waktu yang disediakan oleh OS untuk proses tersebut sudah habis maka akan terjadi interrupt dan proses tersebut kini berstatus Ready.</li>
<li>Jika suatu event terjadi pada saat proses dieksekusi (seperti ada request I/O) maka proses tersebut akan menunngu event tersebut selesai dan proses berstatus Waiting.</li>
</ul></div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C31-3">Process Control Block</a></h2>Tiap proses digambarkan dalam sistem operasi oleh sebuah <span class="strong"><b class="EMPHASIS">process control block</b></span> 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 hal-hal dibawah ini:<br />
<br />
<ul><li>Status proses: status mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.</li>
<li>Program counter: suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.</li>
<li>CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk <i class="FOREIGNPHRASE">accumulator</i> , indeks register, <i class="FOREIGNPHRASE">stack pointer</i> , <i class="FOREIGNPHRASE">general-purposes register</i> , ditambah <i class="FOREIGNPHRASE">code information</i> pada kondisi apa pun. Besertaan dengan program counter, keadaaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya (lihat Gambar 2-3).</li>
<li>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 Managemen memori).</li>
<li>Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun jumlah <i class="FOREIGNPHRASE">job</i> atau proses, dan banyak lagi.</li>
<li>Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini, suatu daftar berkas-berkas yang sedang diakses dan banyak lagi.</li>
<li>PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yang satu dengan yang lain.</li>
</ul><div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C31-3-F1"></a><b>Gambar 3-2. Process Control Block</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c31-3-f1-gambar2-2.png" /><br />
<div class="CAPTION">http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-2.png </div></div></div><div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C31-3-F2"></a><b>Gambar 3-3. </b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c31-3-f2-gambar2-3.png" /><br />
<div class="CAPTION"><br />
</div></div></div></div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C31-4"><i class="FOREIGNPHRASE">Threads</i></a></h2>Model proses yang didiskusikan sejauh ini telah menunjukkan bahwa suatu proses adalah sebuah program yang menjalankan eksekusi <i class="FOREIGNPHRASE">thread</i> tunggal. Sebagai contoh, jika sebuah proses menjalankan sebuah program Word Processor, ada sebuah <i class="FOREIGNPHRASE">thread</i> tunggal dari instruksi-instruksi yang sedang dilaksanakan.<br />
Kontrol <i class="FOREIGNPHRASE">thread</i> 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 memiliki eksekusi <i class="FOREIGNPHRASE">multithreads</i> , agar dapat secara terus menerus mengetik dan menjalankan pengecek ejaan didalam proses yang sama, maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari satu tugas pada satu waktu. Pada subbab <i class="FOREIGNPHRASE">Thread</i> akan dibahas proses <i class="FOREIGNPHRASE">multithreaded</i> lebih lanjut.<br />
<br />
<br />
<div class="SECTION"><h1 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C32">Penjadwalan Proses</a></h1><i class="FOREIGNPHRASE">Multiprogramming</i> bertujuan untuk memaksimalkan penggunaan CPU dengan cara mengatur alokasi waktu yang digunakan oleh CPU,sehingga proses berjalan sepanjang waktu dan meperkecil waktu <i class="FOREIGNPHRASE">idle</i> . Untuk sistem yang bersifat <i class="FOREIGNPHRASE">uniprosesor</i> , hanya ada satu proses yang bisa berjalan setiap waktunya. Jika proses yang ada lebih dari satu, maka proses yang lain harus menunggu sampai CPU bebas dan siap untuk dijadwalkan kembali.<br />
<div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C32-1">Queue Scheduling</a></h2>Ketika sebuah proses memasuki sistem, proses itu diletakkan di dalam <span class="strong"><b class="EMPHASIS"> <i class="FOREIGNPHRASE">job queue</i> </b></span> . Pada antrian ini terdapat seluruh proses yang berada dalam sistem. Sedangkan proses yang berada pada memori utama, siap dan menunggu untuk mengeksekusi disimpan dalam sebuah daftar yang bernama <span class="strong"><b class="EMPHASIS"> <i class="FOREIGNPHRASE">ready queue</i> </b></span> . Antrian ini biasanya disimpan sebagai <i class="FOREIGNPHRASE">linked list</i> . <i class="FOREIGNPHRASE">Header</i> dari <i class="FOREIGNPHRASE">ready queue</i> berisi <i class="FOREIGNPHRASE">pointer</i> untuk PCB pertama dan PCB terakhir pada list. Setiap PCB memiliki <i class="FOREIGNPHRASE">pointer field</i> yang menunjuk kepada PCB untuk proses selanjutnya dalam <i class="FOREIGNPHRASE">ready queue</i> .<br />
Sistem operasi juga memiliki antrian lain. Ketika sebuah proses dialokasikan ke CPU, proses tersebut berjalan sebentar lalu berhenti, di-interupsi, atau menunggu suatu hal tertentu, seperti selesainya suatu permintaan I/O. Dalam permintaan I/O, bisa saja yang diminta itu adalah <i class="FOREIGNPHRASE">tape drive</i> , atau peralatan yang di- <i class="FOREIGNPHRASE">share</i> secara bersama-sama, seperti disk. Karena ada banyak proses dalam sistem, disk bisa saja sibuk dengan permintaan I/O dari proses lainnya. Untuk itu proses tersebut mungkin harus menunggu disk tersebut. Daftar dari proses-proses yang menunggu peralatan I/O tertentu disebut dengan <span class="strong"><b class="EMPHASIS"> <i class="FOREIGNPHRASE">device queue</i> </b></span> . Tiap peralatan memiliki <i class="FOREIGNPHRASE">device queue</i> -nya masing-masing. <a href="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/c32.html#C32-1-F1">Gambar 3-4</a> .<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C32-1-F1"></a><b>Gambar 3-4. Device Queue</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c32-1-f1-gambar2-4.png" /><br />
<div class="CAPTION">http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-4.png</div></div></div>Penjadwalan proses dapat direpresentasikan secara umum dalam bentuk diagram antrian, seperti yang ditunjukkan oleh <a href="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/c32.html#C32-1-F2">Gambar 3-5</a>. Setiap kotak segi empat menunjukkan sebuah antrian. Dua tipe antrian menunjukan antrian yang siap dan seperangkat <i class="FOREIGNPHRASE">device queues</i> . Lingkaran menunjukkan sumber daya yang melayani antrian, dan tanda panah mengindikasikan alur dari proses-proses yang ada dalam sistem.<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C32-1-F2"></a><b>Gambar 3-5. Diagram Antrian</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c32-1-f2-gambar2-5.png" /><br />
<div class="CAPTION">http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-5.png</div></div></div>Sebuah proses baru pertama-tama diletakkan dalam <i class="FOREIGNPHRASE">ready queue</i> . Proses tersebut menunggu di dalam <i class="FOREIGNPHRASE">ready</i> antrian sampai dia dipilih untuk eksekusi, atau dengan kata lain di- <i class="FOREIGNPHRASE">dispatched</i> . Begitu proses tersebut dialokasikan ke CPU dan sedang berjalan, beberapa kemungkinan di bawah ini dapat terjadi: <br />
<ul><li style="list-style-type: disc;">Proses tersebut mengeluarkan permintaan I/O, lalu ditempatkan dalam sebuah antrian I/O</li>
<li style="list-style-type: disc;">Proses tersebut dapat membuat sub proses yang baru dan menunggu untuk di-terminasi </li>
<li style="list-style-type: disc;">Proses tersebut dapat dikeluarkan secara paksa dari CPU, sebagai hasil dari suatu interupsi, dan diletakkan kembali dalam <i class="FOREIGNPHRASE">ready queue</i> </li>
</ul>Pada dua kemungkinan pertama (proses meminta I/O atau membuat sub proses baru), proses berganti keadaan dari <i class="FOREIGNPHRASE">waiting state</i> menjadi <i class="FOREIGNPHRASE">ready state</i> , lalu diletakkan kembali dalam <i class="FOREIGNPHRASE">ready queue</i> . Proses akan meneruskan siklus ini sampai dia di-terminasi , yaitu saat dimana proses tersebut dikeluarkan dari seluruh antrian yang ada dan memiliki PCB-nya sendiri dan seluruh sumber daya yang dia gunakan dialokasikan kembali.</div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C32-2">Scheduler</a></h2>Sebuah proses berpindah-pindah di antara berbagai penjadwalan antrian seumur hidupnya. Sistem operasi harus memilih dan memproses antrian-antrian ini berdasarkan kategorinya dengan cara tertentu. Oleh karena itu, proses seleksi ini harus dilakukan oleh <i class="FOREIGNPHRASE"> <span class="strong"><b class="EMPHASIS">scheduler</b></span> </i> yang tepat.<br />
Dalam sistem <i class="FOREIGNPHRASE">batch</i> , seringkali proses yang diserahkan lebih banyak daripada yang dapat dilaksanakan dengan segera. Proses-proses ini disimpan pada suatu <i class="FOREIGNPHRASE">mass-storage device</i> (semacam disk), dimana proses tersebut disimpan untuk eksekusi di lain waktu. <i class="FOREIGNPHRASE"> <span class="strong"><b class="EMPHASIS">Long-term scheduler</b></span> </i> , atau <i class="FOREIGNPHRASE"> <span class="strong"><b class="EMPHASIS">job scheduler</b></span> </i> , memilih proses dari tempat ini dan mengisinya ke dalam memori. Sedangkan <i class="FOREIGNPHRASE"> <span class="strong"><b class="EMPHASIS">short-term scheduler</b></span> </i> , atau <i class="FOREIGNPHRASE"> <span class="strong"><b class="EMPHASIS">CPU scheduler</b></span> </i> , hanya memilih proses yang sudah siap untuk melakukan eksekusi, dan mengalokasikan CPU untuk proses tersebut.<br />
Hal yang cukup jelas untuk membedakan kedua jenis <i class="FOREIGNPHRASE">scheduler</i> ini adalah frekuensi dari eksekusinya. <i class="FOREIGNPHRASE">Short-term scheduler</i> harus memilih proses baru untuk CPU sesering mungkin. Sebuah proses dapat mengeksekusi hanya dalam beberapa milidetik sebelum menunggu permintaan I/O. Seringkali, <i class="FOREIGNPHRASE">short-term scheduler</i> mengeksekusi paling sedikit sekali setiap 100 milidetik. Karena durasi waktu yang pendek antara eksekusi-eksekusi tersebut, <i class="FOREIGNPHRASE">short-term scheduler</i> seharusnya cepat. Jika memerlukan waktu 10 mili detik untuk menentukan suatu proses eksekusi selama 100 mili detik, maka 10/(100 + 10) = 9 persen dari CPU sedang digunakan (atau terbuang) hanya untuk pekerjaan penjadwalan.<br />
<i class="FOREIGNPHRASE">Long-term scheduler</i> , pada sisi lain, mengeksekusi jauh lebih jarang. Mungkin ada beberapa menit waktu yang dibutuhkan untuk pembuatan proses baru dalam sistem. <i class="FOREIGNPHRASE">Long-term scheduler</i> mengontrol <i class="FOREIGNPHRASE">degree of multiprogramming</i> (jumlah proses dalam memori). Jika <i class="FOREIGNPHRASE">degree of multiprogramming</i> stabil, maka tingkat rata-rata penciptaan proses harus sama dengan tingkat rata rata proses meninggalkan sistem. Maka dari itu <i class="FOREIGNPHRASE">long-term scheduler</i> mungkin dipanggil hanya ketika suatu proses meninggalkan sistem. Karena interval yang lebih panjang antara eksekusi, <i class="FOREIGNPHRASE">long-term scheduler</i> dapat menggunakan waktu yang lebih lama untuk menentukan proses mana yang harus dipilih untuk dieksekusi.<br />
Sangat penting bagi <i class="FOREIGNPHRASE">long-term scheduler</i> membuat seleksi yang hati-hati. Secara umum, proses dapat dibedakan atas dua macam, yaitu proses <span class="strong"><b class="EMPHASIS"> <i class="FOREIGNPHRASE">I/O bound</i> </b></span> dan proses <span class="strong"><b class="EMPHASIS"> <i class="FOREIGNPHRASE">CPU bound</i> </b></span> . Proses <i class="FOREIGNPHRASE">I/O bound</i> adalah proses yang lebih banyak menghabiskan waktunya untuk mengerjakan I/O dari pada melakukan komputasi. Proses <i class="FOREIGNPHRASE">CPU-bound</i> , di sisi lain, jarang melakukan permintaan I/O, dan menggunakan lebih banyak waktunya untuk melakukan komputasi. Oleh karena itu, <i class="FOREIGNPHRASE">long-term scheduler</i> harus memilih gabungan proses yang baik antara proses <i class="FOREIGNPHRASE">I/O bound</i> dan <i class="FOREIGNPHRASE">CPU bound</i> . Jika seluruh proses adalah <i class="FOREIGNPHRASE">I/O bound</i> , <i class="FOREIGNPHRASE">ready queue</i> akan hampir selalu kosong, dan <i class="FOREIGNPHRASE">short-term scheduler</i> akan memiliki sedikit tugas. Jika seluruh proses adalah <i class="FOREIGNPHRASE">CPU bound</i> , <i class="FOREIGNPHRASE">I/O waiting queue</i> akan hampir selalu kosong, peralatan akan tidak terpakai, dan sistem akan menjadi tidak seimbang.Sistem dengan kinerja yang terbaik akan memiliki kombinasi yang baik antara proses <i class="FOREIGNPHRASE">CPU bound</i> dan <i class="FOREIGNPHRASE">I/O bound</i> .<br />
Pada sebagian sistem, <i class="FOREIGNPHRASE">long-term scheduler</i> bisa jadi tidak ada atau kerjanya sangat minim. Sebagai contoh, sistem <i class="FOREIGNPHRASE">time-sharing</i> seperti UNIX sering kali tidak memiliki <i class="FOREIGNPHRASE">long-term scheduler</i> . Stabilitas sistem-sistem seperti ini bergantung pada keterbatasan fisik (seperti jumlah terminal yang ada) atau pada penyesuaian sendiri secara alamiah oleh manusia sebagai pengguna. Jika kinerja menurun pada tingkat yang tidak dapat diterima, sebagian pengguna akan berhenti.<br />
Sebagian sistem operasi, seperti sistem <i class="FOREIGNPHRASE">time-sharing</i> , dapat memperkenalkan sebuah <i class="FOREIGNPHRASE">scheduler</i> tambahan, yaitu <span class="strong"><b class="EMPHASIS"> <i class="FOREIGNPHRASE">medium-term scheduler</i> </b></span> . <i class="FOREIGNPHRASE">Scheduler</i> ini digambarkan pada <a href="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/c32.html#C32-2-F1">Gambar 3-6</a>. Ide utama atau kunci dari <i class="FOREIGNPHRASE">scheduler</i> ini terkadang akan menguntungkan untuk memindahkan proses dari memori (dan dari pengisian aktif dari CPU), dan akibatnya <i class="FOREIGNPHRASE">degree of multiprogramming</i> akan berkurang. Di kemudian waktu, proses dapat dibawa kembali dalam memori dan eksekusinya dapat dilanjutkan pada keadaan dimana proses itu dipindahkan tadi. Skema ini disebut <i class="FOREIGNPHRASE">swapping</i> . Proses di- <i class="FOREIGNPHRASE">swapped out</i> dan di- <i class="FOREIGNPHRASE">swapped in</i> oleh <i class="FOREIGNPHRASE">scheduler</i> ini. <i class="FOREIGNPHRASE">Swapping</i> mungkin diperlukan untuk meningkatkan mutu penggabungan proses, atau karena perubahan dalam kebutuhan memori yang mengakibatkan memori harus dibebaskan. <i class="FOREIGNPHRASE">Swapping</i> dibahas dalam <a href="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/c52.html#C52-1">bagian berjudul <i>Penukaran</i> di Bab 5</a>.<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C32-2-F1"></a><b>Gambar 3-6. Medium-term Scheduler</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c32-2-f1-gambar2-6.png" /><br />
<div class="CAPTION">http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-6.png</div></div></div></div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C32-3">Context Switch</a></h2>Mengganti CPU ke proses lain memerlukan penyimpanan keadaan dari proses lama dan mengambil keadaan dari proses yang baru. Hal ini dikenal dengan sebutan <span class="strong"><b class="EMPHASIS"> <i class="FOREIGNPHRASE">context switch</i> </b></span> . <i class="FOREIGNPHRASE">Context switch</i> sebuah proses direpresentasikan dalam PCB dari suatu proses; termasuk nilai dari CPU register, status proses (bisa dilihat pada <a href="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/c32.html#C32-3-F1">Gambar 3-7</a>)dan informasi manajemen memori. Ketika <i class="FOREIGNPHRASE">context switch</i> terjadi, <i class="FOREIGNPHRASE">kernel</i> menyimpan data dari proses lama ke dalam PCB nya dan mengambil data dari proses baru yang telah terjadwal untuk berjalan. Waktu <i class="FOREIGNPHRASE">context switch</i> adalah murni <i class="FOREIGNPHRASE">overhead</i> , karena sistem melakukan pekerjaan yang tidak begitu berarti selama melakukan pengalihan. Kecepatannya bervariasi dari mesin ke mesin, bergantung pada kecepatan memori, jumlah register yang harus di-copy, dan ada tidaknya instruksi khusus (seperti instruksi tunggal untuk mengisi atau menyimpan seluruh register). Tingkat kecepatan umumnya berkisar antara 1 sampai 1000 mikro detik.<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C32-3-F1"></a><b>Gambar 3-7. Context Switch</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c32-3-f1-gambar2-7.png" /><br />
<div class="CAPTION">http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-3.png</div></div></div>Waktu <i class="FOREIGNPHRASE">context switch</i> sangat begantung pada dukungan perangkat keras. Sebagai contoh, prosesor seperti UltraSPARC menyediakan beberapa set register. Sebuah proses <i class="FOREIGNPHRASE">context switch</i> hanya memasukkan perubahan <i class="FOREIGNPHRASE">pointer</i> ke set register yang ada saat itu. Tentu saja, jika proses aktif yang ada lebih banyak daripada proses yang ada pada set register, sistem menggunakan bantuan untuk meng-copy data register dari dan ke memori, sebagaimana sebelumnya. Semakin kompleks suatu sistem operasi, semakin banyak pekerjaan yang harus dilakukan selama <i class="FOREIGNPHRASE">context switch</i> . Bisa dilihat pada Bab Memori, teknik managemen memori tingkat lanjut dapat mensyaratkan data tambahan untuk diganti dengan tiap data. Sebagai contoh, ruang alamat dari proses yang ada saat itu harus dijaga sebagai ruang alamat untuk proses yang akan dikerjakan berikutnya. Bagaimana ruang alamat dijaga, berapa banyak pekerjaan dibutuhkan untuk menjaganya, tergantung pada metode managemen memori dari sistem operasi. Akan kita lihat pada Bab Memori, <i class="FOREIGNPHRASE">context switch</i> terkadang bisa menyebabkan <i class="FOREIGNPHRASE">bottleneck</i> , dan programmer menggunakan struktur baru (threads) untuk menghindarinya kapan pun memungkinkan.</div></div><br />
<br />
<div class="SECTION"><h1 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C33">Interaksi Proses</a></h1>Proses yang dijalankan pada suatu sistem operasi dapat bekerja secara bersama-sama ataupun sendiri saja. Bagian sebelum ini telah menjelaskan mengenai konsep proses dan bagaimana penjadwalan proses itu. Disini kita akan melihat bagaimana hubungan antara proses-proses itu.<br />
<div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C33-1">Proses yang Kooperatif</a></h2>Proses yang bersifat <i class="FOREIGNPHRASE">concurrent</i> bekerja sama dengan proses lain. Proses itu kooperatif jika mereka dapat saling mempengaruhi. Kerja sama antar proses itu penting karena beberapa alasan : <br />
<ul><li>Pembagian informasi : Beberapa proses dapat mengakses beberapa data yang sama.</li>
<li>Kecepatan komputasi : Tugas yang dijalankan dapat berjalan dengan lebih cepat jika tugas tersebut dipecah-pecah menjadi beberapa sub bagian dan dieksekusi secara paralel dengan sub bagian yang lain. Peningkatan kecepatan ini dapat dilakukan jika komputer tersebut mempunyai beberapa elemen pemrosesan, seperti CPU atau jalur I/O.</li>
<li>Modularitas : Akan lebih mudah untuk mengatur tugas yang kompleks jika tugas tersebut dipecah menjadi beberapa sub bagian, kemudian mempunyai proses atau <i class="FOREIGNPHRASE">thread</i> yang berbeda untuk menjalankan setiap sub bagian.</li>
<li>Kenyamanan : <i class="FOREIGNPHRASE">User</i> bisa dengan mudah mengerjakan sesuatu yang berbeda dalam waktu yang sama. Contohnya satu <i class="FOREIGNPHRASE">user</i> dapat mengetik, mengedit, dan mencetak suatu halaman tertentu secara bersamaan.</li>
</ul>Kerja sama antar proses membutuhkan suatu mekanisme yang memperbolehkan proses-proses untuk mengkomunikasikan data dengan yang lain dan meng- <i class="FOREIGNPHRASE">synchronize</i> kerja mereka sehingga tidak ada yang saling menghalangi. Salah satu cara proses dapat saling berkomunikasi adalah <i class="FOREIGNPHRASE">Interprocess Communication</i> (IPC) yang akan dijelaskan lebih lanjut di bagian berikut.</div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C33-2">Masalah Produser/Konsumer</a></h2>Produser membuat suatu informasi yang dapat dibagi dengan proses lainnya. Konsumer menghabiskan data yang dibuat oleh produser. Misalnya program cetak memproduksi karakter yang dipakai oleh <i class="FOREIGNPHRASE">printer</i> .<br />
Masalah yang biasanya dihadapi oleh produser dan konsumer adalah bagaimana caranya mensinkronisasikan kerja mereka sehingga tidak ada yang saling mengganggu. Salah satu contoh bagaimana masalah ini dapat terjadi adalah <i class="FOREIGNPHRASE">Bounded Buffer Problem</i> .<br />
Solusi pembagian memori untuk <i class="FOREIGNPHRASE">Bounded Buffer Problem</i> diterangkan dengan program sebagai berikut :<br />
<table bgcolor="#e0e0e0" border="0"><tbody>
<tr><td><pre class="PROGRAMLISTING">import java.util.*;
public class BoundedBuffer {
public BoundedBuffer() {
// buffer diinisialisasikan kosong
count = 0;
in = 0;
out = 0;
buffer = new Object[BUFFER_SIZE];
}
// produser memanggil method ini
public void enter( Object item ) {
while ( count == BUFFER_SIZE )
; // tidak melakukan apa-apa
// menambahkan suatu item ke dalam buffer
++count;
buffer[in] = item;
in = ( in + 1 ) % BUFFER_SIZE;
if ( count == BUFFER_SIZE )
System.out.println( "Producer Entered " +
item + " Buffer FULL" );
else
System.out.println( "Producer Entered " +
item + " Buffer Size = " + count );
}
// konsumer memanggil method ini
public Object remove() {
Object item ;
while ( count == 0 )
; // tidak melakukan apa-apa
// menyingkirkan suatu item dari buffer
--count;
item = buffer[out];
out = ( out + 1 ) % BUFFER_SIZE;
if ( count == 0 )
System.out.println( "Consumer consumed " +
item + " Buffer EMPTY" );
else
System.out.println( "Consumer consumed " +
item + " Buffer Size = " +count );
return item;
}
public static final int NAP_TIME = 5;
private static final int BUFFER_SIZE = 5;
private volatile int count;
private int in; // arahkan ke posisi kosong selanjutnya
private int out; // arahkan ke posisi penuh selanjutnya
private Object[] buffer;
}
</pre></td></tr>
</tbody></table><i class="FOREIGNPHRASE">Buffer</i> adalah tempat penyimpanan data dimana produser mengisinya dan konsumer mengosongkan <i class="FOREIGNPHRASE">buffer</i> tersebut. Jika <i class="FOREIGNPHRASE">buffer</i> kosong, konsumer harus menunggu, dan ketika <i class="FOREIGNPHRASE">buffer</i> penuh, produser harus menunggu. Disinilah produser harus bekerja sama dengan konsumer. Konsumer harus menunggu sampai ada barang yang diproduksi.<br />
Program dibawah ini menggambarkan proses yang dijalankan oleh produser untuk <i class="FOREIGNPHRASE">Bounded Buffer Problem</i> <br />
<table bgcolor="#e0e0e0" border="0"><tbody>
<tr><td><pre class="PROGRAMLISTING">//Producer.java
import java.util.*;
public class Producer extends Thread {
public Producer(BoundedBuffer b) {
buffer = b;
}
public void run() {
Date message;
while (true) {
int sleeptime =
(int) (BoundedBuffer.NAP_TIME * Math.random() );
System.out.println("Producer sleeping for "
+ sleeptime + " seconds");
try { sleep(sleeptime*1000); }
catch(InterruptedException e) {}
// membuat suatu barang & memasukkannya ke buffer
message = new Date();
System.out.println("Producer produced " + message);
buffer.enter(message);
}
}
private BoundedBuffer buffer;
}
</pre></td></tr>
</tbody></table>Program berikut menggambarkan proses yang dijalankan oleh konsumer pada <i class="FOREIGNPHRASE">Bounded Buffer Problem</i> <br />
<table bgcolor="#e0e0e0" border="0"><tbody>
<tr><td><pre class="PROGRAMLISTING">// Consumer.java
import java.util.*;
public class Consumer extends Thread {
public Consumer(BoundedBuffer b) {
buffer = b;
}
public void run() {
Date message;
while (true) {
int sleeptime =
(int) (BoundedBuffer.NAP_TIME * Math.random() );
System.out.println("Consumer sleeping for "
+ sleeptime + " seconds");
try { sleep(sleeptime*1000); }
catch(InterruptedException e) {}
// mengambil barang dari buffer
System.out.println("Consumer wants to consume.");
message = (Date)buffer.remove();
}
}
private BoundedBuffer buffer;}
</pre></td></tr>
</tbody></table>Masalah produser-konsumer dengan <i class="FOREIGNPHRASE">unbounded-buffer</i> tidak menempatkan batas praktikal pada ukuran pada <i class="FOREIGNPHRASE">buffer</i> . Konsumer harus menunggu untuk barang baru, tetapi produser dapat selalu memproduksi barang baru. Sedangkan masalah produser-konsumer <i class="FOREIGNPHRASE">bounded-buffer</i> mengasumsikan ukuran <i class="FOREIGNPHRASE">buffer</i> yang ditetapkan. Pada kasus ini, konsumer harus menunggu sampai <i class="FOREIGNPHRASE">buffer</i> kosong dan produser harus menunggu sampai <i class="FOREIGNPHRASE">buffer</i> penuh.<br />
<br />
<br />
<div class="SECTION"><h1 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34">Hubungan Antara Proses dan Client/Server Proses</a></h1>Sebelumnya kita telah ketahui seluk beluk dari suatu proses mulai dari pengertiannya, cara kerjanya, sampai operasi-operasinya seperti proses pembentukannya dan proses pemberhentiannya setelah selesai melakukan eksekusi. Kali ini kita akan mengulas bagaimana hubungan antar proses dapat berlangsung, misal bagaimana beberapa proses dapat saling berkomunikasi dan bekerja-sama.<br />
Kalau pada sub-bab sebelumnya kita banyak membahas mengenai buffer, dan lingkungan yang berbagi memori. Pada bagian ini kita lebih banyak membahas teknik komunikasi antara proses melalui kirim(<i class="FOREIGNPHRASE">send</i>) dan terima (<i class="FOREIGNPHRASE">recive</i>) yang biasa dikenal sebagai IPC.<br />
Selain itu pada bagian ini kita akan menyingung sedikit mengenai client/server proses. Beberapa topik yang akan dibahas adalah Java RMI (Remote Method Invocation) dan RPC (Remote Procedure Call). Yang keduanya juga menggunakan mekanisme komunikasi IPC, namun menggunkan sistem yang terdistribusi yang melibatkan jaringan. Pada bagian ini juga akan dibahas mengenai infrastruktur dasar jaringan yaitu socket. <br />
<div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-1">Hubungan Antara Proses</a></h2><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-1-1">Proses yang Kooperatif</a></h3>Proses yang bersifat simultan (<i class="FOREIGNPHRASE">concurrent</i>) dijalankan pada sistem operasi dapat dibedakaan menjadi yaitu proses independen dan proses kooperatif. Suatu proses dikatakan independen apabila proses tersebut tidak dapat terpengaruh atau dipengaruhi oleh proses lain yang sedang dijalankan pada sistem. Berarti, semua proses yang tidak membagi data apa pun (baik sementara/ tetap) dengan proses lain adalah independent. Sedangkan proses kooperatif adalah proses yang dapat dipengaruhi atau pun terpengaruhi oleh proses lain yang sedang dijalankan dalam sistem. Dengan kata lain, proses dikatakan kooperatif bila proses dapat membagi datanya dengan proses lain.<br />
Ada 4 alasan untuk penyediaan sebuah lingkungan yang memperbolehkan terjadinya proses kooperatif :<br />
<br />
<ol type="1"><li>Pembagian informasi : apabila beberapa pengguna dapat tertarik pada bagian informasi yang sama (sebagai contoh, sebuah berkas bersama), kita harus menyediakan sebuah lingkungan yang mengijinkan akses secara terus menerus ke tipe dari sumber-sumber tersebut.</li>
<li>Kecepatan penghitungan / komputasi : jika kita menginginkan sebuah tugas khusus untuk menjalankan lebih cepat, kita harus membagi hal tersebut ke dalam subtask, setiap bagian dari subtask akan dijalankan secara parallel dengan yang lainnya. Peningkatan kecepatan dapat dilakukan hanya jika komputer tersebut memiliki elemen-elemen pemrosesan ganda (seperti CPU atau jalur I/O).</li>
<li>Modularitas : kita mungkin ingin untuk membangun sebuah sistem pada sebuah model modular-modular, membagi fungsi sistem menjadi beberapa proses atau threads.</li>
<li>Kenyamanan : bahkan seorang pengguna individu mungkin memiliki banyak tugas untuk dikerjakan secara bersamaan pada satu waktu. Sebagai contoh, seorang pengguna dapat mengedit, memcetak, dan meng-compile secara parallel.</li>
</ol><table bgcolor="#e0e0e0" border="0"><tbody>
<tr><td><pre class="PROGRAMLISTING">import java.util.*;
public class BoundedBuffer {
public BoundedBuffer() {
// buffer diinisialisasikan kosong
count = 0;
in = 0;
out = 0;
buffer = new Object[BUFFER_SIZE];
}
// produser memanggil method ini
public void enter( Object item ) {
while ( count == BUFFER_SIZE )
; // do nothing
// menambahkan suatu item ke dalam buffer
++count;
buffer[in] = item;
in = ( in + 1 ) % BUFFER_SIZE;
if ( count == BUFFER_SIZE )
System.out.println( "Producer Entered " +
item + " Buffer FULL" );
else
System.out.println( "Producer Entered " +
item + " Buffer Size = " + count );
}
// consumer memanggil method ini
public Object remove() {
Object item ;
while ( count == 0 )
; // do nothing
// menyingkirkan suatu item dari buffer
--count;
item = buffer[out];
out = ( out + 1 ) % BUFFER_SIZE;
if ( count == 0 )
System.out.println( "Consumer consumed " +
item + " Buffer EMPTY" );
else
System.out.println( "Consumer consumed " +
item + " Buffer Size = " +count );
return item;
}
public static final int NAP_TIME = 5;
private static final int BUFFER_SIZE = 5;
private volatile int count;
private int in; // arahkan ke posisi kosong selanjutnya
private int out; // arahkan ke posisi penuh selanjutnya
private Object[] buffer;
}
</pre></td></tr>
</tbody></table>Sebuah produsen proses membentuk informasi yang dapat digunakan oleh konsumen proses. Sebagai contoh sebuah cetakan program yang membuat banyak karakter yang diterima oleh driver pencetak. Untuk memperbolehkan produser dan konsumer proses agar dapat berjalan secara terus menerus, kita harus menyediakan sebuah item buffer yang dapat diisi dengan proses produser dan dikosongkan oleh proses konsumer. Proses produser dapat memproduksi sebuah item ketika konsumer sedang mengkonsumsi item yang lain. Produser dan konsumer harus dapat selaras. Konsumer harus menunggu hingga sebuah item diproduksi.</div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-1-2">Komunikasi Proses Dalam Sistem</a></h3>Cara lain untuk meningkatkan efek yang sama adalah untuk sistem operasi yaitu untuk menyediakan alat-alat proses kooperatif untuk berkomunikasi dengan yang lain lewat sebuah komunikasi dalam proses IPC (Inter-Process Communication). IPC menyediakan sebuah mekanisme untuk megijinkan proses-proses untuk berkomunikasi dan menyelaraskan aksi-aksi mereka tanpa berbagi ruang alamat yang sama. IPC adalah khusus digunakan dalam sebuah lingkungan yang terdistribusi dimana proses komunikasi tersebut mungkin saja tetap ada dalam komputer-komputer yang berbeda yang tersambung dalam sebuah jaringan. IPC adalah penyedia layanan terbaik dengan menggnakan sebuah sistem penyampaian pesan, dan sistem-sistem pesan dapat diberikan dalam banyak cara.<br />
<div class="SECTION"><h4 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-1-2-1">Sistem Penyampaian Pesan</a></h4>Fungsi dari sebuah sistem pesan adalah untuk memperbolehkan komunikasi satu dengan yang lain tanpa perlu menggunakan pembagian data. Sebuah fasilitas IPC menyediakan paling sedikit 2 operasi yaitu kirim (pesan) dan terima (pesan). Pesan dikirim dengan sebuah proses yang dapat dilakukan pada ukuran pasti atau variabel. Jika hanya pesan dengan ukuran pasti dapat dikirimkan, level sistem implementasi adalah sistem yang sederhana. Pesan berukuran variabel menyediakan sistem implementasi level yang lebih kompleks.<br />
Jika dua buah proses ingin berkomonikasi, misalnya proses P dan proses Q, mereka harus mengirim pesan atau menirima pesan dari satu ke yang lainnya. Jalur ini dapat diimplentasikan dengan banyak cara, namun kita hanya akan memfokuskan pada implementasi logiknya saja, bukan implementasi fisik(seperti shared memory, hardware bus, atau jaringan).Berikut ini ada beberapa metode untuk mengimplementasikan sebuah jaringan dan operasi pengiriman / penerimaan secara logika :<br />
<br />
<ul><li>Komunikasi langsung atau tidak langsung.</li>
<li>Komunikasi secara simetris / asimetris.</li>
<li>Buffer otomatis atau eksplisit.</li>
<li>Pengiriman berdasarkan salinan atau referensi.</li>
<li>Pesan berukuran pasti dan variabel.</li>
</ul></div><div class="SECTION"><h4 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-1-2-2">Penamaan</a></h4>Proses-proses yang ingin dikomunikasikan harus memiliki sebuah cara untuk memilih satu dengan yang lain. Mereka dapat menggunakan komunikasi langsung / tidak langsung.<br />
<div class="SECTION"><h5 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-1-2-2-1">Komunikasi Langsung</a></h5>Setiap proses yang ingin berkomunikasi harus memiliki nama yang bersifat eksplisit baik penerimaan atau pengirim dari komunikasi tersebut. Dalam konteks ini, pengiriman dan penerimaan pesan secara primitive dapat dijabarkan sebagai :<br />
<br />
<ul><li>Send (P, message) - mengirim sebuah pesan ke proses P.</li>
<li>Receive (Q, message) - menerima sebuah pesan dari proses Q.</li>
</ul>Sebuah jaringan komunikasi pada bahasan ini memiliki beberapa sifat, yaitu :<br />
<br />
<ul><li>Sebuah jaringan yang didirikan secara otomatis diantara setiap pasang dari proses yang ingin dikomunikasikan. Proses tersebut harus mengetahui identitas dari semua yang ingin dikomunikasikan.</li>
<li>Sebuah jaringan adalah terdiri dari penggabungan 2 proses.</li>
<li>Diantara setiap pesan dari proses terdapat tepat sebuah jaringan.</li>
</ul>Pembahasan ini memperlihatkan sebuah cara simetris dalam pemberian alamat. Oleh karena itu, baik keduanya yaitu pengirim dan penerima proses harus memberi nama bagi yang lain untuk berkomunikasi, hanya pengirim yang memberikan nama bagi penerima sedangkan penerima tidak menyediakan nama bagi pengirim. Dalam konteks ini, pengirim dan penerima secara sederhana dapat dijabarkan sebagai :<br />
<br />
<ul><li>Send (P, message) - mengirim sebuah pesan kepada proses P.</li>
<li>Receive (id, message) - menerima sebuah pesan dari semua proses. Variabel id diatur sebagai nama dari proses dengan komunikasi.</li>
</ul>Kerugian dari kedua cara yang disebutkan diatas adalah adanya kebatasan modularitas, merubah nama proses mungkin mengharuskan kita untuk merubah semua definisi proses yang lain. Semua referensi kepada nama yang lama harus ditemukan.</div><div class="SECTION"><h5 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-1-2-2-2">Komunikasi Tidak Langsung</a></h5>Dengan komunikasi tidak langsung, pesan akan dikirimkan pada dan diterima dari / melalui mailbox (Kotak Surat) atau terminal-terminal, sebuah mailbox dapat dilihat secara abstrak sebagai sebuah objek didalam setiap pesan yang dapat ditempatkan dari proses dan dari setipap pesan yang bias dipindahkan. Setiap kotak surat memiliki sebuah identifikasi (identitas) yang unik, sebuah proses dapat berkomunikasi dengan beberapa proses lain melalui sebuah nomor dari mailbox yang berbeda. Dua proses dapat saling berkomunikasi apabila kedua proses tersebut sharing mailbox. Pengirim dan penerima dapat dijabarkan sebagai :<br />
<br />
<ul><li>Send (A, message) - mengirim pesan ke mailbox A.</li>
<li>Receive (A, message) - menerima pesan dari mailbox A.</li>
</ul>Dalam masalah ini, link komunikasi mempunyai sifat sebagai berikut :<br />
<br />
<ul><li>Sebuah link dibangun diantara sepasang proses dimana kedua proses tersebut membagi mailbox.</li>
<li>Sebuah link mungkin dapat berasosiasi dengan lebih dari 2 proses.</li>
<li>Diantara setiap pasang proses komunikasi, mungkin terdapat link yang berbeda-beda, dimana setiap link berhubungan pada satu mailbox.</li>
</ul>Misalkan terdapat proses P1, P2 dan P3 yang semuanya share mailbox. Proses P1 mengirim pesan ke A, ketika P2 dan P3 masing-masing mengeksekusi sebuah kiriman dari A. Proses mana yang akan menerima pesan yang dikirim P1?. Jawabannya tergantung dari jalur yang kita pilih :<br />
<br />
<ul><li>Mengijinkan sebuah link berasosiasi dengan paling banyak 2 proses.</li>
<li>Mengijinkan paling banyak 1 proses pada suatu waktu untuk mengeksekusi hasil kiriman (receive operation).</li>
<li>Mengijinkan sistem untuk memilih secara mutlak proses mana yang akan menerima pesan (apakah itu P2 atau P3 tetapi tidak keduanya, tidak akan menerima pesan). Sistem mungkin mengidentifikasi penerima kepada pengirim.</li>
</ul>Mailbox mungkin dapat dimiliki oleh sebuah proses atau sistem operasi. Jika mailbox dimiliki oleh proses, maka kita mendefinisikan antara pemilik (yang hanya dapat menerima pesan melalui mailbox) dan pengguna dari mailbox (yang hanya dapat mengirim pesan ke mailbox). Selama setiap mailbox mempunyai kepemilikan yang unik, maka tidak akan ada kebingungan tentang siapa yang harus menerima pesan dari mailbox. Ketika proses yang memiliki mailbox tersebut diterminasi, mailbox akan hilang. Semua proses yang mengirim pesan ke mailbox ini diberi pesan bahwa mailbox tersebut tidak lagi ada.<br />
Dengan kata lain, mempunyai mailbox sendiri yang independent, dan tidak melibatkan proses yang lain. Maka sistem operasi harus memiliki mekanisme yang mengijinkan proses untuk melakukan hal-hal dibawah ini :<br />
<ul><li>Membuat mailbox baru.</li>
<li>Mengirim dan menerima pesan melalui mailbox.</li>
<li>Menghapus mailbox.</li>
</ul><br />
Proses yang membuat mailbox pertama kali secara default akan memiliki mailbox tersebut. Untuk pertama kali, pemilik adalah satu-satunya proses yang dapat menerima pesan melalui mailbox ini. Bagaimanapun, kepemilikan dan hak menerima pesan mungkin dapat dialihkan ke proses lain melalui sistem pemanggilan.</div></div></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-1-3">Sinkronisasi</a></h3>Komunikasi antara proses membutuhkan place by calls untuk mengirim dan menerima data primitive. Terdapat design yang berbeda-beda dalam implementasi setiap primitive. Pengiriman pesan mungkin dapat diblok (blocking) atau tidak dapat dibloking (nonblocking) - juga dikenal dengan nama sinkron atau asinkron.<br />
<br />
<ul><li>Pengiriman yang diblok : Proses pengiriman di blok sampai pesan diterima oleh proses penerima (receiving process) atau oleh mailbox.</li>
<li>Pengiriman yang tidak diblok : Proses pengiriman pesan dan mengkalkulasi operasi.</li>
<li>Penerimaan yang diblok : Penerima mem blok samapai pesan tersedia.</li>
<li>Penerimaan yang tidak diblok : Penerima mengembalikan pesan valid atau null.</li>
</ul></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-1-4">Buffering</a></h3>Baik komunikasi itu langsung atau tak langsung, penukaran pesan oleh proses memerlukan antrian sementara. Pada dasarnya, terdapat tiga jalan dimana antrian tersebut diimplementasikan :<br />
<br />
<ul><li>Kapasitas nol: antrian mempunyai panjang maksimum 0, maka link tidak dapat mempunyai penungguan pesan (message waiting). Dalam kasus ini, pengirim harus memblok sampai penerima menerima pesan.</li>
<li>Kapasitas terbatas: antrian mempunyai panjang yang telah ditentukan, paling banyak n pesan dapat dimasukkan. Jika antrian tidak penuh ketika pesan dikirimkan, pesan yang baru akan menimpa, dan pengirim pengirim dapat melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas. Jika link penuh, pengirim harus memblok sampai terdapat ruang pada antrian.</li>
<li>Kapasitas tak terbatas: antrian mempunyai panjang yang tak terhingga, maka, semua pesan dapat menunggu disini. Pengirim tidak akan pernah di blok.</li>
</ul></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-1-5">Contoh Produser-Konsumer</a></h3>Sekarang kita mempunyai solusi problem produser-konsumer yang menggunakan penyampaian pesan. Produser dan konsumer akan berkomunikasi secara tidak langsung menggunakan mailbox yang dibagi. Buffer menggunakan java.util.Vector class sehingga buffer mempunyai kapasitas tak terhingga. Dan send() dan read() method adalah nonblocking. Ketika produser memproduksi suatu item, item tersebut diletakkan ke mailbox melalui send() method. Konsumer menerima item dari mailbox menggunakan receive() method. Karena receive() nonblocking, consumer harus mengevaluasi nilai dari Object yang direturn dari receive(). Jika null, mailbox kosong.<br />
<table bgcolor="#e0e0e0" border="0"><tbody>
<tr><td><pre class="PROGRAMLISTING">import java.util.*;
public class Producer extends Thread {
private MessageQueueueue mbox;
public Producer( MessageQueueueue m ) {
mbox = m;
}
public void run() {
Date message;
while ( true ) {
int sleeptime = ( int ) ( Server.NAP_TIME * Math.random() );
System.out.println( "Producer sleeping for " + sleeptime + " seconds" );
try {
Thread.sleep(sleeptime*1000);
} catch( InterruptedException e ) {}
message = new Date();
System.out.println( "Producer produced " + message );
mbox.send( message );
}
}
}
</pre></td></tr>
</tbody></table><table bgcolor="#e0e0e0" border="0"><tbody>
<tr><td><pre class="PROGRAMLISTING">import java.util.*;
public class Consumer extends Thread {
private MessageQueueueue mbox;
public Consumer( MessageQueueueue m ) {
mbox = m;
}
public void run() {
Date message;
while ( true ) {
int sleeptime = ( int ) ( Server.NAP_TIME * Math.random());
System.out.println("Consumer sleeping for " + sleeptime + " seconds" );
try {
Thread.sleep( sleeptime * 1000 );
} catch( InterruptedException e ) {}
message = ( Date ) mbox.receive();
if ( message != null )
System.out.println("Consumer consume " + message );
}
}
}
</pre></td></tr>
</tbody></table>Kita memiliki dua aktor di sini, yaitu Produser dan Konsumer. Produser adalah thread yang menghasilkan waktu (Date) kemudian menyimpannya ke dalam antrian pesan. Produser juga mencetak waktu tersebut di layer (sebagai umpan balik bagi kita). Konsumer adalah thread yang akan mengakses antrian pesan untuk mendapatkan waktu (date) itu dan tak lupa mencetaknya di layer. Kita menginginkan supaya konsumer itu mendapatkan waktu sesuatu dengan urutan sebagaimana produser menyimpan waktu tersebut. Kita akan menghadapi salah satu dari dua kemungkinan situasi di bawah ini :<br />
<br />
<ul><li>Bila p1 lebih cepat dari c1, kita akan memperoleh output sebagai berikut :<br />
<br />
<table bgcolor="#e0e0e0" border="0"><tbody>
<tr><td><pre class="SCREEN">. . .
Consumer consume Wed May 07 14:11:12 ICT 2003
Consumer sleeping for 3 seconds
Producer produced Wed May 07 14:11:16 ICT 2003
Producer sleeping for 4 seconds
// p1 sudah mengupdate isi mailbox waktu dari Wed May 07
// 14:11:16 ICT 2003 ke Wed May 07 14:11:17 ICT 2003,
// padahal c1 belum lagi mengambil waktu Wed May 07 14:11:16
Producer produced Wed May 07 14:11:17 ICT 2003
Producer sleeping for 4 seconds
Consumer consume Wed May 07 14:11:17 ICT 2003
Consumer sleeping for 4 seconds
// Konsumer melewatkan waktu Wed May 07 14:11:16
. . .
</pre></td></tr>
</tbody></table></li>
<li>Bila p1 lebih lambat dari c1, kita akan memperoleh keluaran seperti berikut :<br />
<br />
<table bgcolor="#e0e0e0" border="0"><tbody>
<tr><td><pre class="SCREEN">. . .
Producer produced Wed May 07 14:11:11 ICT 2003
Producer sleeping for 1 seconds
Consumer consume Wed May 07 14:11:11 ICT 2003
Consumer sleeping for 0 seconds
// c1 sudah mengambil isi dari mailbox, padahal p1 belum
// lagi megupdate isi dari mailbox dari May 07 14:11:11
// ICT 2003 ke May 07 14:11:12 ICT 2003, c1 mendapatkan
// waktu Wed May 07 14:11:11 ICT 2003 dua kali.
Consumer consume Wed May 07 14:11:11 ICT 2003
Consumer sleeping for 0 seconds
Producer sleeping for 0 seconds
Producer produced Wed May 07 14:11:12 ICT 2003
. . .
</pre></td></tr>
</tbody></table></li>
</ul>Situasi di atas dikenal dengan race conditions. Kita dapat menghindari situasi itu dengan mensinkronisasikan aktivitas p1 dan c1 (sehubungan dengan akses mereka ke mailbox. Proses tersebut akan didiskusikan pada chapter yang akan datang (chapter 5).</div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-1-6">Mailbox</a></h3><table bgcolor="#e0e0e0" border="0"><tbody>
<tr><td><pre class="PROGRAMLISTING">import java.util.*;
public class MessageQueue {
private Vector q;
public MessageQueue() {
q = new Vector();
}
// Mengimplementasikan pengiriman nonblocking
public void send( Object item ) {
q.addElement( item );
}
// Mengimplementasikan penerimaan nonblocking
public Object receive() {
Object item;
if ( q.size() == 0 ) {
return null;
}
else {
item = q.firstElement();
q.removeElementAt(0);
return item;
}
}
}
</pre></td></tr>
</tbody></table><br />
<ol type="1"><li>Menunggu sampai batas waktu yang tidak dapat ditentukan sampai terdapat ruang kosong pada mailbox.</li>
<li>Menunggu paling banyak n milidetik.</li>
<li>Tidak menunggu, tetapi kembali (return) secepatnya.</li>
<li>Satu pesan dapat diberikan kepada sistem operasi untuk disimpan, walaupun mailbox yang dituju penuh. Ketika pesan dapat disimpan pada mailbox, pesan akan dikembalikan kepada pengirim(sender). Hanya satu pesan kepada mailbox yang penuh yang dapat diundur (pending) pada suatu waktu untuk diberikan kepada thread pengirim.</li>
</ol></div></div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-2">Client/Server System</a></h2>Dengan makin berkembangnya teknologi jaringan komputer, sekarang ini ada kecenderungan sebuah sistem yang bekerja sama menggunakan jaringan. Dalam topik ini akan kita bahas beberapa metoda komunikasi antar proses yang melibatkan jaringan komputer.<br />
<div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-2-1">Socket</a></h3>Socket adalah sebuah endpoint untuk komunikasi didalam jaringan. Sepasang proses atau thread berkomunikasi dengan membangun sepasang socket, yang masing-masing proses memilikinya. Socket dibuat dengan menyambungkan dua buah IP Address melalui port tertentu. Secara umum socket digunakan dalam client/server system, dimana sebuah server akan menunggu client pada port tertentu. Begitu ada client yang mengkontak server maka server akan menyetujui komunikasi dengan client melalui socket yang dibangun.<br />
<div class="SECTION"><h4 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-2-2">Server dan Thread</a></h4>Pada umumnya sebuah server melayani client secara konkuren, oleh sebab itu dibutuhkan thread yang masing-masing thread melayani clientnya masing-masing. Jadi server akan membentuk thread baru begitu ada koneksi dari client yang diterima (accept)<br />
Server menggunakan thread apabila client melakukan koneksi, sehingga server memiliki tingkat reabilitas yang tinggi. Pada sistem yang memiliki banyak pemakai sekaligus thread mutlak dibutuhkan, karena setiap pemakai sistem pasti menginginkan respon yang baik dari server.</div><div class="SECTION"><h4 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-2-3">Java Socket</a></h4>Java menyediakan dua buah tipe socket yang berbeda dan sebuah socket spesial. Semua soket ini tersedia dalam paket jaringan, yang merupakan paket standar java. Berikut ini soket yang disediakan oleh java : <br />
<ul><li>Connection-Oriented (TCP) socket, yang diimplementasikan pada kelas <i class="FOREIGNPHRASE">java.net.Socket</i> </li>
<li>Connectionless Socket (UDP), yang diimplentasikan oleh kelas <i class="FOREIGNPHRASE">java.net.DatagramSocket</i></li>
<li>Dan yang terakhir adalah <i class="FOREIGNPHRASE">java.net.MulticastSocket</i>, yang merupakan perluasan (extended) dari Socket UDP. Tipe socket ini memiliki kemampuan untuk mengirim pesan kebanyak client sekaligus (Multicast), sehingga baik digunakan pada sistem yang memiliki jenis layanan yang sama.</li>
</ul><table bgcolor="#e0e0e0" border="0"><tbody>
<tr><td><pre class="PROGRAMLISTING">...
public WebServer(int port, String docRoot) throws IOException
{
this.docRoot = new File(docRoot);
if(!this.docRoot.isDirectory())
{
throw new IOException(docRoot + " bukan direktori.");
}
System.out.println("Menghidupkan Web server ");
System.out.println("port : " + port);
System.out.println("docRoot : " + docRoot);
try
{
serverSocket = new ServerSocket(port);
}
catch(IOException ioe)
{
System.out.println("Port sudah digunakan");
System.exit(1);
}
}
public void run()
{
while(true)
{
try{
System.out.println("Menanti connection ... ");
Socket socket = serverSocket.accept();
String alamatClient = socket.getInetAddress().getHostAddress();
System.out.println("Menangkap connection dari " + alamatClient);
InputStream inputStream = socket.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
OutputStream outputStream = socket.getOutputStream();
...
</pre></td></tr>
</tbody></table>Potongan kode diatas memperlihatkan teknik yang digunakan oleh java untuk membuka socket (pada kasus ini server socket). Selanjutnya server dapat berkomunikasi dengan clientnya menggunakan InputStream untuk menerima pesan dan OutputStream untuk mengirim pesan.</div><div class="SECTION"><h4 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-2-4">RPC (Remote Procedure Call)</a></h4>Remote Procedure Call (RPC) adalah sebuah metoda yang memungkinkan kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk bisa melakukan ini sebuah komputer (server) harus menyediakan layanan remote prosedur. Pendekatan yang dilakuan adalah, sebuah server membuka socket, menunggu client yang meminta proseduryang disediakan oleh server.<br />
Remote Procedure Call masih menggunakan cara primitive dalam pemrograman, yaitu menggunakan paradigma procedural programming. Hal itu membuat kita sulit ketika menyediakan banyak remote procedure.<br />
RPC menggunakan soket untuk berkomunikasi dengan proses lainnya. Pada beberapa sistem (Seperti SUN) RPC secara default sudah terinstall kedalam sistemnya, biasanya RPC ini digunakan untuk administrasi sistem. Sehingga seorang administrator jaringan bisa mengakses sistemnya dan memanajemen sistemnya dari mana saja, selama sistemnya terhubung kejaringan.</div><div class="SECTION"><h4 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-2-5">Java RMI</a></h4>Pendekatan kedua yang akan kita bahas adalah RMI (Remote Method Invocation), sebuah teknik pemanggilan method remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakan paradigma pemrograman berorientasi objek (OOP).Dengan RMI memungkinkan kita untuk mengirim objek sebagai parameter dari remote method. Dengan dibolehkannya program java memanggil method pada remote objek, RMI membuat user dapat mengembangkan aplikasi java yang terdistribusi pada jaringan<br />
Untuk membuat remote method bisa diakses RMI mengimplementasikan remote object menggukan stub dan skleton. Stub bertindak sebagai proxy disisi client, yaitu yang menghubungkan client dengan skleton yang berada disisi server. Stub yang ada disisi client bertanggung jawab untuk membungkus nama method yang akan diakses, dan parameternya, hal ini biasa dikenal dengan marshalling. Stub mengirim paket yang sudah dibungkus ini ke server dan akan di buka (unmarshalling) oleh skleton. Skleton akan menerima hasil keluaran yang telah diproses oleh method yang dituju, lalu akan kembali dibungkus (marshal) dan dikirim kembali ke client yang akan diterima oleh stub dan kembali dibuka paketnya (unmarshall).<br />
<div class="SECTION"><h5 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-2-5-1">Pembuatan Remote Objek</a></h5>Untuk membuat remote objek kita harus mendefinisikan semua method yang akan kita sediakan pada jaringan, setelah itu dapat digunakan RMI compiler untuk membuat stub dan skleton. Setelah itu kita harus mem-binding remote objek yang kita sediakan kedalam sebuah RMI registry. Setelah itu client dapat mengakses semua remote method yang telah kita sediakan menggunkan stub yang telah dicompile menggunakan RMI compiler terebut.</div><div class="SECTION"><h5 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=7300989088823285042" name="C34-2-5-2">Akses ke Remote Objek</a></h5>Sekali objek didaftarkan ke server, client dapat mengakses remote object dengan menjalankan <i class="FOREIGNPHRASE">Naming.lookup()</i> method. RMI menyediakan url untuk pengaksesan ke remote objek yaitu <i class="FOREIGNPHRASE">rmi://host/objek</i>, dimana host adalah nama server tempat kita mendaftarkan remote objek dan objek adalah parameter yang kita gunakan ketika kita memanggil method <i class="FOREIGNPHRASE">Naming.rebind()</i>. Client juga harus menginstall RMISecurityManager untuk memastikan keamanan client ketika membuka soket kejaringan.<br />
Java memilki sistem security yang baik sehingga user dapat lebih nyaman dalam melakukan komunikasi pada jaringan. Selain itu java sudah mendukung pemorograman berorientasi object, sehingga pengembangan software berskala besar sangat dimungkinkan dilakukan oleh java. RMI sendiri merupakan sistem terdistribusi yang dirancang oleh SUN pada platfrom yang spesifik yaitu Java, apabila anda tertarik untuk mengembangkan sistem terdistribusi yang lebih portable dapat digunakan CORBA sebagai solusi alternatifnya.</div></div></div></div></div><br />
<br />
<br />
</div></div></div></div>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-46801432931212817312011-07-06T01:17:00.000-07:002011-07-07T01:23:30.050-07:00Konsep Dasar Sistem Operasi<div class="SECTION"><h1 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C21">Struktur Sistem Operasi</a></h1>Menurut Avi Silberschatz, Peter Galvin, dan Greg Gagne, memandang atau mengartikan apa itu sistem Operasi bisa diketahui dari beberapa hal, diantaranya dengan mengetahui komponen-komponen sistemnya dan layanan yang disediakan oleh sistem operasi.<br />
<div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C21-1">Komponen-komponen Sistem</a></h2>Pada kenyataannya tidak semua sistem operasi mempunyai struktur yang sama. Namun menurut Avi Silberschatz, Peter Galvin, dan Greg Gagne, umumnya sebuah sistem operasi modern mempunyai komponen sebagai berikut:<br />
<ul><li>Manajemen Proses</li>
<li>Manajemen Memori Utama </li>
<li>Manajemen Berkas </li>
<li>Manajemen Sistem I/O </li>
<li>Manajemen Penyimpanan Sekunder </li>
<li>Sistem Proteksi </li>
<li>Jaringan </li>
<li> <i class="FOREIGNPHRASE">Command-Interpreter System </i> </li>
</ul>Sedangakan menurut A.S.Tananbaum, Sistem Operasi mempunyai empat komponen utama, yaitu manajemen proses, <i class="FOREIGNPHRASE"> input/output,</i> manajemen memori dan sistem berkas.<br />
<div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C21-1-1">Manajemen Proses</a></h3>Proses adalah sebuah program yang sedang dijalankan (dieksekusi). Sebuah proses membutuhkan beberapa sumber daya untuk menyelesaikan tugasnya. Sumber daya tersebut dapat berupa <i class="FOREIGNPHRASE">CPU time</i>, memori, berkas - berkas, dan perangkat-perangkat I/O. Sistem operasi mengalokasikan sumber daya-sumber daya tersebut saat proses itu diciptakan atau sedang diproses/dijalankan. Ketika proses tersebut berhenti dijalankan, sistem operasi akan mendapatkan kembali semua sumber daya yang bisa digunakan kembali.<br />
Sistem operasi bertanggung jawab atas aktivitas-aktivitas yang berkaitan dengan manajemen proses seperti:<br />
<ul><li>Membuat dan menghapus proses <i class="FOREIGNPHRASE">user </i> dan sistem proses. </li>
<li> Menunda atau melanjutkan proses. </li>
<li>Menyediakan mekanisme untuk proses sinkronisasi. </li>
<li>Menyediakan mekanisme untuk proses komunikasi. </li>
<li>Menyediakan mekanisme untuk penanganan <i class="FOREIGNPHRASE">deadlock</i> </li>
</ul></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C21-1-2">Manajemen Memori Utama</a></h3>Memori utama atau lebih dikenal sebagai memori adalah sebuah array yang besar dari word atau byte, yang ukurannya mencapai ratusan, ribuan, atau bahkan jutaan. Setiap word atau byte mempunyai alamat tersendiri. Memori utama berfungsi sebagai tempat penyimpanan instruksi / data yang akses datanya digunakan oleh CPU dan perangkat <i class="FOREIGNPHRASE">I/O </i>.Memori utama termasuk tempat penyimpanan data yang yang bersifat volatile - tidak permanen (sementara), artinya data akan hilang kalau komputer dimatikan.<br />
Sistem operasi bertanggung jawab atas aktivitas-aktivitas yang berkaitan dengan manajemen memori seperti:<br />
<ul><li>Menjaga<i class="FOREIGNPHRASE"> track </i> dari memori yang sedang digunakan dan siapa yang menggunakannya. </li>
<li> Memilih program yang akan di-<i class="FOREIGNPHRASE">load </i> ke memori. </li>
</ul></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C21-1-3">Manajemen Berkas</a></h3>Berkas adalah kumpulan informasi yang berhubungan, sesuai dengan tujuan pembuat berkas tersebut. Umumnya berkas merepresentasikan program dan data. Berkas dapat mempunyai struktur yang bersifat hirarkis (direktori, volume, dll.). Sistem operasi mengimplementasikan konsep abstrak dari berkas dengan mengatur media penyimpanan massa, misalanya <i class="FOREIGNPHRASE">tapes</i> dan <i class="FOREIGNPHRASE"> disk</i><br />
Sistem operasi bertanggung jawab dalam aktivitas yang berhubungan dengan manajemen berkas :<br />
<ul><li>Pembuatan dan penghapusan berkas. </li>
<li> Pembuatan dan penghapusan direktori. </li>
<li>Mendukung manipulasi berkas dan direktori. </li>
<li>Memetakan berkas ke <i class="FOREIGNPHRASE">secondary-storage </i> </li>
<li>Mem-<i class="FOREIGNPHRASE"> back up</i> berkas ke media penyimpanan yang permanen <i class="FOREIGNPHRASE"> (non-volatile). </i> </li>
</ul></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C21-1-4">Manajemen Sistem <i class="FOREIGNPHRASE"> I/O </i></a></h3>Sering disebut <i class="FOREIGNPHRASE"> device manager</i>. Menyediakan<i class="FOREIGNPHRASE"> device driver</i>yang umum sehingga operasi <i class="FOREIGNPHRASE">I/O </i> dapat seragam (membuka, membaca, menulis,menutup). Contoh: pengguna menggunakan operasi yang sama untuk membaca berkas pada perangkat keras, <i class="FOREIGNPHRASE">CD-ROM </i> dan <i class="FOREIGNPHRASE">floppy disk </i>.<br />
Komponen Sistem Operasi untuk sistem <i class="FOREIGNPHRASE">I/O </i>:<br />
<ul><li>Penyangga : menampung sementara data dari/ ke perangkat <i class="FOREIGNPHRASE">I/O </i>. </li>
<li> <i class="FOREIGNPHRASE">Spooling:</i> melakukan penjadualan pemakaian <i class="FOREIGNPHRASE">I/O </i>sistem supaya lebih efisien (antrian dsb.). </li>
<li> Menyediakan <i class="FOREIGNPHRASE">driver:</i> untuk dapat melakukan operasi "rinci" (detail) untuk perangkat keras <i class="FOREIGNPHRASE">I/O </i>tertentu. </li>
</ul></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C21-1-5">Manajemen Penyimpanan Sekunder</a></h3>Data yang disimpan dalam memori utama bersifat sementara dan jumlahnya sangat kecil. Oleh karena itu, untuk meyimpan keseluruhan data dan program komputer dibutuhkan penyimpanan sekunder yang bersifat permanen dan mampu menampung banyak data, sebagai <i class="FOREIGNPHRASE">back up</i> dari memori utama. Contoh dari penyimpanan sekunder adalah <i class="FOREIGNPHRASE">hard-disk</i>, disket, dll.<br />
Sistem operasi bertanggung-jawab atas aktivitas-aktivitas yang berkaitan dengan manajemen disk seperti:<br />
<ul><li><i class="FOREIGNPHRASE"> free-space management </i> </li>
<li>alokasi penyimpanan </li>
<li>penjadwalan disk </li>
</ul></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C21-1-6">Sistem Proteksi</a></h3>Proteksi mengacu pada mekanisme untuk mengontrol akses yang dilakukan oleh program, prosesor, atau pengguna ke sistem sumber daya. Mekanisme proteksi harus:<br />
<ul><li>membedakan antara penggunaan yang sudah diberi izin dan yang belum. </li>
<li> Menspesifikasi kontrol untuk dibebankan/ diberi tugas. </li>
<li>Menyediakan alat untuk pemberlakuan sistem. </li>
</ul></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C21-1-7">Jaringan</a></h3>Sistem terdistribusi adalah sekumpulan prosesor yang tidak berbagi memori, atau <i class="FOREIGNPHRASE"> clock</i>. Tiap prosesor mempunyai memori dan clock tersendiri. Prosesor-prosesor tersebut terhubung melalui jaringan komunikasi Sistem terdistribusi menyediakan akses pengguna ke bermacam sumber-daya sistem. Akses tersebut menyebabkan peningkatan kecepatan komputasi dan meningkatkan kemampuan penyediaan data.</div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C21-1-8"><i class="FOREIGNPHRASE">Command-Interpreter System</i></a></h3>Sistem Operasi menunggu instruksi dari pengguna <i class="FOREIGNPHRASE">(command driven)</i>. Program yang membaca instruksi dan mengartikan control statements umumnya disebut: <i class="FOREIGNPHRASE">control-card interpreter,command-line interpreter</i> dan terkadang dikenal sebagai <i class="FOREIGNPHRASE">shell</i>. <i class="FOREIGNPHRASE">Command-Interpreter System</i> sangat bervariasi dari satu sistem operasi ke sistem operasi yang lain dan disesuaikan dengan tujuan dan teknologi perangkat <i class="FOREIGNPHRASE">I/O </i>yang ada. Contohnya: <i class="FOREIGNPHRASE">CLI, Windows, Pen-based (touch),</i> dan lain-lain.<br />
<br />
<br />
<div class="SECTION"><h1 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C22">Layanan Sistem Operasi, System Calls, dan System Program</a></h1><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C22-1">Layanan Sistem Operasi</a></h2>Layanan sistem operasi dirancang untuk membuat pemrograman menjadi lebih mudah. <br />
<ol type="1"><li>Pembuatan Program<br />
Sistim operasi menyediakan berbagai fasilitas yang membantu programer dalam membuat program seperti editor. Walaupun bukan bagian dari sistim operasi, tapi layanan ini diakses melalui sistim operasi. </li>
<li>Eksekusi Program<br />
Sistem harus bisa me-<i class="FOREIGNPHRASE">load</i> program ke memori, dan menjalankan program tersebut. Program harus bisa menghentikan pengeksekusiannya baik secara normal maupun tidak (ada <i class="FOREIGNPHRASE">error</i>) </li>
<li>Operasi I/O<br />
Program yang sedang dijalankan kadang kala membutuhkan I/O. Untuk effisiensi dan keamanan, user biasanya tidak bisa mengatur peranti I/O secara langsung, untuk itulah sistem operasi harus menyediakan mekanisme dalam melakukan operasi I/O. </li>
<li>Manipulasi Sistem Berkas<br />
Program harus membaca dan menulis berkas, dan kadang kala juga harus membuat dan menghapus berkas. </li>
<li>Komunikasi<br />
Kadang kala sebuah proses memerlukan informasi dari proses yang lain.Ada dua cara umum dimana komunikasi dapat dilakukan. komunikasi dapat terjadi antara proses dalam satu komputer, atau antara proses yang berada dalam komputer yang berbeda, tetapi dihubungkan oleh jaringan komputer.Komunikasi dapat dilakukan dengan <i class="FOREIGNPHRASE">share-memory</i> atau <i class="FOREIGNPHRASE">message-passsing</i>, dimana sejumlah informasi dipindahkan antara proses oleh sistem operasi. </li>
<li>Deteksi <i class="FOREIGNPHRASE">Error</i> <br />
Sistem operasi harus selalu waspada terhadap kemungkinan <i class="FOREIGNPHRASE">error</i>. <i class="FOREIGNPHRASE">Error</i> dapat terjadi di CPU dan memori perangkat keras, I/O, dan di dalam program yang dijalankan user. Untuk setiap jenis <i class="FOREIGNPHRASE">error</i> sistem operasi harus bisa mengambil langkah yang tepat untuk mempertahankan jalannya proses komputasi. Misalnya dengan menghentikan jalannya program, mencoba kembali melakukan operasi yang dijalankan, atau melaporkan kesalahan yang terjadi agar pengguna dapat mengambil langkah selanjutnya. </li>
</ol>Disamping pelayanan diatas, sistem operasi juga menyediakan layanan lain. Layanan ini bukan untuk membantu user tapi lebih pada mempertahankan efisiensi sistem itu sendiri. Layanan tambahan itu yaitu : <br />
<ol type="1"><li>Alokasi Sumber Daya<br />
Ketika beberapa user menggunakan sistem atau beberapa program dijalankan secara bersamaan, sumber daya harus dialokasikan bagi masing-masing user dan program tersebut. </li>
<li><i class="FOREIGNPHRASE">Accounting</i><br />
Kita menginginkan agar jumlah user yang menggunakan sumber daya, dan jenis sumber daya yang digunakan selalu terjaga. Untuk itu maka diperlukan suatu perhitungan dan statistik. Perhitungan ini diperlukan bagi seseorang yang ingin merubah konfigurasi sistem untuk meningkatkan pelayanan. </li>
<li>Proteksi<br />
Layanan proteksi memastikan bahwa segala akses ke sumber daya terkontrol. Dan tentu saja keamanan terhadap gangguan dari luar sistem tersebut. Keamanan bisa saja dilakukan dengan terlebih dahulu mengidentifikasi user. Ini bisa dilakukan dengan meminta <i class="FOREIGNPHRASE">passsword</i> bila ingin menggunakan sumber daya. </li>
</ol></div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C22-2">System Calls</a></h2>Biasanya tersedia sebagai instruksi bahasa <i class="FOREIGNPHRASE">assembly</i>. Beberapa sistem mengizinkan system calls dibuat langsung dari program bahasa tingkat tinggi. Beberapa bahasa pemrograman (contoh : C, C++) telah didefenisikan untuk menggantikan bahasa <i class="FOREIGNPHRASE">assembly</i> untuk sistem pemrograman. <br />
Tiga metode umum yang digunakan dalam memberikan parameter kepada sistem operasi <br />
<ul><li>Melalui <i class="FOREIGNPHRASE">register</i></li>
<li>Menyimpan parameter dalam <i class="FOREIGNPHRASE">block</i> atau tabel pada memori dan alamat <i class="FOREIGNPHRASE">block</i> tersebut diberikan sebagai parameter dalam <i class="FOREIGNPHRASE">register</i> </li>
<li>Menyimpan parameter (<i class="FOREIGNPHRASE">push</i>) ke dalam <i class="FOREIGNPHRASE">stack</i> (oleh program), dan melakukan <i class="FOREIGNPHRASE">pop off</i> pada <i class="FOREIGNPHRASE">stack</i> (oleh sistem operasi) <br />
Gambar : Memberikan parameter melalui tabel <br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c22-2-f1-parameter.png" /></div>Sumber: Silberschatz,et.al, Operating System Concepts, 6th ed, .2003, New York: John Wiley & Son.Inc , page 65</li>
</ul><span class="strong"><b class="EMPHASIS">Jenis System Calls</b></span> <br />
<ol type="1"><li>Kontrol Proses<br />
<i class="FOREIGNPHRASE">System calls</i> yang berhubungan dengan kontrol proses antara lain ketika penghentian pengeksekusian program. Baik secara normal (<i class="FOREIGNPHRASE">end</i>) maupun tidak normal (<i class="FOREIGNPHRASE">abort</i>). Selama proses dieksekusi kadang kala diperlukan untuk me<i class="FOREIGNPHRASE">load</i> atau mengeksekusi program lain, disini diperlukan lagi suatu <i class="FOREIGNPHRASE">system calls</i>. Juga ketika membuat suatu proses baru dan menghentikan sebuah proses. Ada juga <i class="FOREIGNPHRASE">system calls</i> yang dipanggil ketika kita ingin meminta dan merubah atribut dari suatu proses. <br />
MS-DOS adalah contoh dari sistem <i class="FOREIGNPHRASE">single-tasking</i>. MS-DOS menggunakan metode yang sederhana dalam menjalankan program dan tidak menciptakan proses baru. Program di-<i class="FOREIGNPHRASE">load</i> ke dalam memori, kemudian program dijalankan. <br />
Gambar : Eksekusi MS-Dos<br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c22-2-f2-msdos.png" /></div>Sumber: Silberschatz,et.al, Operating System Concepts, 6th ed, .2003, New York:John Wiley & Son.Inc , page 68 <br />
Barkeley Unix adalah contoh dari sistem <i class="FOREIGNPHRASE">multi-tasking</i>. <i class="FOREIGNPHRASE">Command interpereter</i> masih tetap bisa dijalankan ketika program lain dieksekusi. <br />
Gambar : Multi program pada Unix<br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c22-2-f3-unix.png" /></div>Sumber: Silberschatz,et.al, Operating System Concepts, 6th ed, .2003, New York:John Wiley & Son.Inc , page 69 </li>
<li>Manajemen Berkas<br />
<i class="FOREIGNPHRASE">System calls</i> yang berhubungan dengan berkas sangat diperlukan. Seperti ketika kita ingin membuat atau menghapus suatu berkas. Atau ketika ingin membuka atau menutup suatu berkas yang telah ada, membaca berkas tersebut, dan menulis berkas itu.<i class="FOREIGNPHRASE">System calls</i> juga diperlukan ketika kita ingin mengetahui atribut dari suatu berkas atau ketika kita juga ingin merubah atribut tersebut. Yang termasuk atribut berkas adalah nama berkas, jenis berkas, dan lain-lain <br />
Ada juga <i class="FOREIGNPHRASE">system calls</i> yang menyediakan mekanisme lain yang berhubungan dengan direktori atau sistim berkas secara keseluruhan. Jadi bukan hanya berhubungan dengan satu spesifik berkas. Contohnya membuat atau menghapus suatu direktori, dan lain-lain </li>
<li>Manajemen Peranti<br />
Program yang sedang dijalankan kadang kala memerlukan tambahan sumber daya. Jika banyak user yang menggunakan sistem, maka jika memerlukan tambahan sumber daya maka harus meminta peranti terlebih dahulu. Dan setelah selesai penggunakannnya harus dilepaskan kembali. Ketika sebuah peranti telah diminta dan dialokasikan maka peranti tersebut bisa dibaca, ditulis, atau direposisi. </li>
<li>Informasi <i class="FOREIGNPHRASE">Maintenance</i> <br />
Beberapa <i class="FOREIGNPHRASE">system calls</i> disediakan untuk membantu pertukaran informasi antara user dan sistem operasi. Contohnya <i class="FOREIGNPHRASE">system calls</i> untuk meminta dan mengatur waktu dan tanggal. Atau meminta informasi tentang sistem itu sendiri, seperti jumlah user, jumlah memori dan disk yang masih bisa digunakan, dan lain-lain. Ada juga <i class="FOREIGNPHRASE">system calls</i> untuk meminta informasi tentang proses yang disimpan oleh sistem dan system calls untuk merubah ( <i class="FOREIGNPHRASE">reset</i> ) informasi tersebut. </li>
<li>Komunikasi<br />
Dua model komunikasi<br />
<ul><li><i class="FOREIGNPHRASE">message-passing</i> <br />
pertukaran informasi dilakukan melalui fasilitas komunikasi antar proses yang disediakan oleh sistem operasi. </li>
<li><i class="FOREIGNPHRASE">shared-memory</i> <br />
Proses menggunakan memori yang bisa digunakan oleh berbagai proses untuk pertukaran informasi dengan membaca dan menulis data pada memori tersebut </li>
</ul>Gambar : Mekanisme komunikasi<br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c22-2-f4-komunikasi.png" /></div>Sumber: Silberschatz,et.al, Operating System Concepts,6th e, .2003, New York:John Wiley & Son.Inc, page 72<br />
Dalam <i class="FOREIGNPHRASE">message-passing</i>, sebelum komunikasi dapat dilakukan harus dibangun dulu sebuah koneksi.Untuk itu diperlukan suatu <i class="FOREIGNPHRASE">system calls</i> dalam pengaturan koneksi tersebut, baik dalam menghubungkan koneksi tersebut maupun dalam memutuskan koneksi tersebut ketika komunikasi sudah selesai dilakukan. Juga diperlukan suatu <i class="FOREIGNPHRASE">system calls</i> untuk membaca dan menulis pesan( <i class="FOREIGNPHRASE">message</i> ) agar pertukaran informasi dapat dilakukan. </li>
</ol></div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C22-3">System Program</a></h2><i class="FOREIGNPHRASE">System program</i> menyediakan lingkungan yang memungkinkan pengembangan program dan eksekusi berjalan dengan baik. <br />
Dapat dikategorikan :<br />
<ul><li>Manajemen/manipulasi Berkas<br />
Membuat, menghapus, <i class="FOREIGNPHRASE">copy, rename</i>, print, memanipulasi berkas dan direktori </li>
<li>Informasi status<br />
Beberapa program meminta informasi tentang tanggal, jam, jumlah memori dan disk yang tersedia, jumlah user dan informasi lain yang sejenis. </li>
<li>Modifikasi berkas<br />
membuat berkas dan memodifikasi isi berkas yang disimpan pada disk atau tape. </li>
<li>Pendukung bahasa pemrograman <br />
kadang kala <i class="FOREIGNPHRASE">compiler</i>, <i class="FOREIGNPHRASE">assembler</i>, <i class="FOREIGNPHRASE">interpreter</i> dari bahasa pemrograman diberikan kepada user dengan bantuan sistem operasi. </li>
<li><i class="FOREIGNPHRASE">Loading</i> dan eksekusi program<br />
Ketika program di-<i class="FOREIGNPHRASE">assembly</i> atau di-<i class="FOREIGNPHRASE">compile</i>, program tersebut harus di-<i class="FOREIGNPHRASE">load</i> ke dalam memori untuk dieksekusi. Untuk itu sistem harus menyediakan <i class="FOREIGNPHRASE">absolute loaders</i>, <i class="FOREIGNPHRASE">relocatable loaders</i>, <i class="FOREIGNPHRASE">linkage editors</i>,dan <i class="FOREIGNPHRASE">overlay loaders</i> </li>
<li>Komunikasi<br />
menyediakan mekanisme komunikasi antara proses, user, dan sistem komputer yang berbeda.Sehingga user bisa mengirim pesan, browes web pages, mengirim e-mail, atau mentransfer berkas. </li>
</ul>Umumnya sistem operasi dilengkapi oleh <i class="FOREIGNPHRASE">system-utilities</i> atau program aplikasi yang di dalamnya termasuk <i class="FOREIGNPHRASE">web browser</i>, <i class="FOREIGNPHRASE">word prossesor</i> dan format teks, sistem database, <i class="FOREIGNPHRASE">games</i>. <i class="FOREIGNPHRASE">System program</i> yang paling penting adalah <i class="FOREIGNPHRASE">command interpreter</i> (mengambil dan menerjemahkan <i class="FOREIGNPHRASE">user-specified command</i> selanjutnya).<br />
<br />
<br />
<div class="SECTION"><h1 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C23">Struktur Sistem</a></h1>Sebuah sistem yang besar dan kompleks seperti sistem operasi modern harus diatur dengan cara membagi <i class="FOREIGNPHRASE"> task</i> kedalam komponen-komponen kecil agar dapat berfungsi dengan baik dan mudah dimodifikasi. Pada bab ini, kita akan membahas cara komponen-komponen ini dihubungkan satu sama lain. Menurut Avi Silberschatz, Peter Galvin, dan Greg Gagne, ada tiga cara yaitu:<br />
<ul><li>Struktur Sederhana</li>
<li>Pendekatan <i class="FOREIGNPHRASE">Terlapis</i> </li>
<li>Mikrokernel</li>
</ul>Sedangkan menurut William Stallings, kita bisa memandang sistem sebagai seperangkat lapisan. Tiap lapisan manampilkan bagian fungsi yang dibutuhkan oleh sistem operasi. Bagian yang terletak pada lapisan yang lebih rendah akan menmpilkan fungsi yang lebih primitif dan menyimpan detail fungsi tersebut.<br />
<div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C23-1">Struktur Sederhana</a></h2>Banyak sistem yang tidak terstruktur dengan baik, sehingga sistem operasi seperti ini dimulai dengan sistem yang lebih kecil, sederhana, dan terbatas. Kemudian berkembang dengan cakupan yang original. Contoh sistem seperti ini adalah MS-DOS, yang disusun untuk mendukung fungsi yang banyak pada ruang yang sedikit karena keterbatasan perangkat keras untuk menjalankannya.<br />
Contoh sistem lainnya adalah UNIX, yang terdiri dari dua bagian yang terpisah, yaitu <i class="FOREIGNPHRASE">kernel</i> dan program sistem. <i class="FOREIGNPHRASE">Kernel</i> selanjutnya dibagi dua bagian, yaitu antarmuka dan <i class="FOREIGNPHRASE">device drivers.</i> <i class="FOREIGNPHRASE">Kernel</i> mendukung sistem berkas, penjadwalan CPU, manajemen memori,dan fungsi sistem operasi lainnya melalui <i class="FOREIGNPHRASE">system calls.</i></div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C23-2">Pendekatan Terlapis</a></h2>Sistem operasi dibagi menjadi sejumlah lapisan yang masing-masing dibangun diatas lapisan yang lebih rendah. Lapisan yang lebih rendah menyediakan layanan untuk lapisan yang lebih tinggi. Lapisan yang paling bawah adalah perangkat keras, dan yang paling tinggi adalah <i class="FOREIGNPHRASE">user-interface.</i><br />
<span class="strong"><b class="EMPHASIS">Lapisan pada Sistem Operasi</b></span><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c23-2-f1-oslayer.png" /></div>Sumber: Silberschatz,et.al, Operating System Concepts,6th e, .2003, New York:John Wiley & Son.Inc, halaman 77<br />
Sebuah lapisan adalah implementasi dari objek abstrak yang merupakan enkapsulasi dari data dan operasi yang bisa memanipulasi data tersebut. Keuntungan utama dengan sistem ini adalah modularitas. Pendekatan ini mempermudah <i class="FOREIGNPHRASE">debug</i> dan verifikasi sistem. Lapisan pertama bisa di <i class="FOREIGNPHRASE">debug</i> tanpa mengganggu sistem yang lain karena hanya menggunakan perangkat keras dasar untuk implementasi fungsinya. Bila terjadi error saat <i class="FOREIGNPHRASE">debugging</i> sejumlah lapisan, error pasti pada lapisan yang baru saja di <i class="FOREIGNPHRASE">debug,</i> karena lapisan dibawahnya sudah di <i class="FOREIGNPHRASE">debug.</i><br />
Sedangkan menurut Tanenbaum dan Woodhull, sistem terlapis terdiri dari enam lapisan, yaitu :<br />
<ul><li>Lapisan 0<br />
Mengatur alokasi prosesor, pertukaran antar proses ketika interupsi terjadi atau waktu habis. Lapisan ini mendukung dasar multi-programming pada CPU </li>
<li>Lapisan 1<br />
Mengalokasikan ruang untuk proses di memori utama dan pada 512 kilo word <i class="FOREIGNPHRASE">drum</i> yang digunakan untuk menahan bagian proses ketika tidak ada ruang di memori utama </li>
<li>Lapisan 2<br />
Menangani komunikasi antara masing-masing proses dan operator <i class="FOREIGNPHRASE">console</i>. Pada lapis ini masing-masing proses secara efektif memiliki opertor <i class="FOREIGNPHRASE">console </i> sendiri. </li>
<li>Lapisan 3<br />
Mengatur peranti I/O dan menampung informasi yang mengalir dari dan ke proses tersebut. </li>
<li>Lapisan 4<br />
Tempat program pengguna. Pengguna tidak perlu memikirkan tentang proses, memori, <i class="FOREIGNPHRASE">console</i>, atau manajemen I/O. </li>
<li>Lapisan 5<br />
Merupakan opertor sistem</li>
</ul>Menurut Stallings, model tingkatan sistem operasi yang mengaplikasikan prinsip ini dapat dilihat pada tabel berikut, yang terdiri dari level-level dibawah ini :<br />
<span class="strong"><b class="EMPHASIS">Tabel Level pada Sistem Operasi</b></span><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c23-2-f2-table.png" /></div>Sumber: Stallings, Operating Systems, 4th e, 2001, Prentice Hall, halaman 69.<br />
<ul><li>Level 1<br />
terdiri dari sirkuit elektronik dimana objek yang ditangani adalah <i class="FOREIGNPHRASE">register memory cell,</i> dan gerbang logika Operasi pada objek ini seperti membersihkan register atau membaca lokasi memori. </li>
<li>Level 2<br />
Pada level ini adalah set instruksi pada prosesor. Operasinya adalah instruksi bahasa-mesin, seperti menambah, mengurangi, <i class="FOREIGNPHRASE">load </i> dan <i class="FOREIGNPHRASE">store.</i> </li>
<li>Level 3<br />
Tambahan konsep prosedur atau subrutin ditambah operasi <i class="FOREIGNPHRASE">call</i> atau <i class="FOREIGNPHRASE">return.</i> </li>
<li>Level 4<br />
Mengenalkan interupsi yang menyebabkan prosesor harus menyimpan perintah yang baru dijalankan dan memanggil rutin penanganan interupsi </li>
</ul>Empat level pertama bukan bagian sistem operasi tetapi bagian perangkat keras. Meskipun demikian beberapa elemen sistem operasi mulai tampil pada level-level ini, seperti rutin penanganan interupsi Pada level 5, kita mulai masuk kebagian sistem operasi dan konsepnya berhubungan dengan <i class="FOREIGNPHRASE">multi-programming.</i><br />
<ul><li>Level 5<br />
Level ini mengenalkan ide proses dalam mengeksekusi program. Kebutuhan-kebutuhan dasar pada sistem operasi untuk mendukung proses ganda termasuk kemampuan men<i class="FOREIGNPHRASE">suspend</i> dan me<i class="FOREIGNPHRASE">resume</i> proses. Hal ini membutuhkan register perangkat keras untuk menyimpan agar eksekusi bisa ditukar antara satu proses ke proses lainnya. </li>
<li>Level 6<br />
Mengatasi penyimpanan sekunder dari komputer. Level ini untuk menjadwalkan operasi dan menanggapi permintaan proses dalam melengkapi suatu proses. </li>
<li>Level 7<br />
Membuat alamat logis untuk proses. Level ini mengatur alamat virtual ke dalam blok yang bisa dipindahkan antara memori utama dan memori tambahan. Cara-cara yang sering dipakai adalah menggunakan ukuran halaman yang tetap, menggunakan segmen sepanjang variabelnya, dan menggunakan cara keduanya. Ketika blok yang dibutuhkan tidak ada dimemori utama, alamat logis pada level ini meminta transfer dari level 6. </li>
</ul>Sampai point ini, sistem operasi mengatasi sumber daya dari prosesor tunggal. Mulai level 8, sistem operasi mengatasi objek eksternal seperti peranti bagian luar, jaringan, dan sisipan komputer kepada jaringan. <br />
<ul><li>Level 8<br />
Mengatasi komunikasi informasi dan pesan-pesan antar proses. Dimana pada level 5 disediakan mekanisme penanda yang kuno yang memungkinkan untuk sinkronisasi proses, pada level ini mengatasi pembagian informasi yang lebih banyak. Salah satu peranti yang paling sesuai adalah <i class="FOREIGNPHRASE">pipe</i> (pipa) yang menerima output suatu proses dan memberi input ke proses lain. </li>
<li>Level 9<br />
Mendukung penyimpanan jangka panjang yang disebut dengan berkas. Pada level ini, data dari penyimpanan sekunder ditampilkan pada tingkat abstrak, panjang variabel yang terpisah. Hal ini bertentangan tampilan yang berorientasikan perangkat keras dari penyimpanan sekunder </li>
<li>Level 10<br />
Menyediakan akses ke peranti eksternal menggunakan antarmuka standar. </li>
<li>Level 11<br />
Bertanggung jawab mempertahankan hubungan antara internal dan eksternal <i class="FOREIGNPHRASE">identifier</i> dari sumber daya dan objek sistem. Eksternal <i class="FOREIGNPHRASE">identifier</i> adalah nama yang bisa dimanfaatkan oleh aplikasi atau pengguna. Internal <i class="FOREIGNPHRASE">identifier</i> adalah alamat atau indikasi lain yang bisa digunakan oleh level yang lebih rendah untuk meletakkan dan mengontrol objek. </li>
<li>Level 12<br />
Menyediakan suatu fasilitator yang penuh tampilan untuk mendukung proses. Hal ini merupakan lanjutan dari yang telah disediakan pada level 5. Pada level 12, semua info yang dibutuhkan untuk manajemen proses dengan berurutan disediakan, termasuk alamat virtual di proses, daftar objek dan proses yang berinteraksi dengan proses tersebut serta batasan interaksi tersebut, parameter yang harus dipenuhi proses saat pembentukan, dan karakteristik lain yang mungkin digunakan sistem operasi untuk mengontrol proses. </li>
<li>Level 13<br />
Menyediakan antarmuka dari sistem operasi dengan pengguna yang dianggap sebagai <i class="FOREIGNPHRASE">shell</i> atau dinding karena memisahkan pengguna dengan sistem operasi dan menampilkan sistem operasi dengan sederhana sebagai kumpulan servis atau pelayanan. </li>
</ul>Dari ketiga sumber diatas dapat kita simpulkan bahwa lapisan sistem operasi secara umum terdiri atas 4 bagian, yaitu: <br />
<ol type="1"><li>Perangkat keras<br />
lebih berhubungan kepada perancang sistem. Lapisan ini mencakup lapisan 0 dan 1 menurut Tanenbaum, dan level 1 sampai dengan level 4 menurut Stallings. </li>
<li>Sistem operasi<br />
lebih berhubungan kepada programmer. Lapisan ini mencakup lapisan 2 menurut Tanenbaum, dan level 5 sampai dengan level 7 menurut Stallings. </li>
<li>Kelengkapan<br />
lebih berhubungan kepada programmer. Lapisan ini mencakup lapisan 3 menurut Tanenbaum, dan level 8 sampai dengan level 11 menurut Stallings. </li>
<li>Program aplikasi<br />
lebih berhubungan kepada pengguna aplikasi komputer. Lapisan ini mencakup lapisan 4 dan lapisan 5 menurut Tanebaum, dan level 12 dan level 13 menurut Stallings. </li>
</ol><span class="strong"><b class="EMPHASIS">Lapisan Sistem Operasi secara umum</b></span><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c23-2-f3-lapisan.png" /></div>Sumber: Stallings, Operating Systems, 4th e, 2001, Prentice Hall, halaman 46.<br />
Salah satu kesulitan besar dalam sistem terlapis disebabkan karena sebuah lapisan hanya bisa menggunakan lapisan-lapisan dibawahnya, misalnya : <i class="FOREIGNPHRASE">backing-store driver</i>, normalnya diatas penjadwal CPU sedangkan pada sistem yang besar, penjadwal CPU punya informasi tentang proses yang aktif yang ada di memori. Oleh karena itu, info ini harus dimasukkan dan dikeluarkan dari memori, sehingga membutuhkan <i class="FOREIGNPHRASE">backing-store driver</i> dibawah penjadwal CPU. Kesulitan lainnya adalah paling tidak efisien dibandingkan tipe lain. Ketika pengguna mengeksekusi I/O , akan mengeksekusi lapisan I/O, lapisan manajemen memori, yang memanggil lapisan penjadwal CPU</div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C23-3">Mikrokernel</a></h2>Metode ini menyusun sistem operasi dengan menghapus semua komponen yang tidak esensial dari <i class="FOREIGNPHRASE">kernel</i>, dan mengimplementasikannya sebagai program sistem dan level pengguna. Hasilnya <i class="FOREIGNPHRASE">kernel</i> yang lebih kecil. Pada umumnya mikrokernel mendukung proses dan menajemen memori yang minimal, sebagai tambahan utnuk fasilitas komunikasi.<br />
Fungsi utama mikrokernel adalah mendukung fasilitas komunikasi antara program klien dan bermacam-macam layanan yang juga berjalan di <i class="FOREIGNPHRASE">user space</i>. Komunikasi yang dilakukan secara tidak langsung, didukung oleh sistem <i class="FOREIGNPHRASE">message passing,</i> dengan bertukar pesan melalui mikrokernel.<br />
Salah satu keuntungan mikrokernel adalah ketika layanan baru akan ditambahkan ke <i class="FOREIGNPHRASE">user space, kernel</i> tidak perlu dimodifikasi. Kalau pun harus, perubahan akan lebih sedikit. Hasil sistem operasinya lebih mudah untuk ditempatkan pada suatu desain perangkat keras ke desain lainnya. Mikrokernel juga mendukung keamanan reliabilitas lebih, karena kebanyakan layanan berjalan sebagai pengguna proses. Jika layanan gagal, sistem operasi lainnya tetap terjaga. Beberapa sistem operasi yang menggunakan metode ini adalah TRU64 UNIX, MacOSX, dan QNX.<br />
<br />
<br />
<h1 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C24">Mesin Virtual, Desain Sistem dan Implementasinya, dan System Generation</a></h1><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C24-1">Mesin Virtual</a></h2>Pada dasarnya, sistem komputer dibangun atas lapisan-lapisan(layers). Perangkat keras adalah lapisan terendah. Kernel yang berada di lapisan atasnya menggunakan instruksi perangkat keras untuk menciptakan seperangkat <i class="FOREIGNPHRASE">system calls</i> yang dapat digunakan oleh komponen-komponen lain yang berada pada level di atasnya. Sistem program pada level di atasnya dapat menggunakan <i class="FOREIGNPHRASE">system call</i> dan perangkat keras seolah-olah mereka berada pada level yang sama.<br />
Meski sistem program berada di level tertinggi, program aplikasi bisa melihat segala sesuatu di bawahnya( pada tingkatan) seakan mereka adalah bagian dari mesin. Pendekatan dengan lapisan-lapisan inilah yang diambil sebagai kesimpulan logis pada konsep mesin virtual atau <span class="strong"><b class="EMPHASIS">virtual machine</b></span>(VM). Pendekatan VM menyediakan sebuah antarmuka yang identik dengan <i class="FOREIGNPHRASE">underlying bare hardware</i>. VM dibuat dengan pembagian sumber daya oleh <i class="FOREIGNPHRASE">physical computer</i>.VM perangkat lunak membutuhkan ruang pada disk untuk menyediakan memori virtual dan <i class="FOREIGNPHRASE">spooling</i> sehingga perlu ada disk virtual.<br />
Meski sangat berguna, VM sulit untuk diimplementasikan. Banyak hal yang dibutuhkan untuk menyediakan duplikat yang tepat dari <i class="FOREIGNPHRASE">underlying machine</i>. VM dapat dieksekusi pada <i class="FOREIGNPHRASE">only user mode</i> sehingga kita harus mempunyai <i class="FOREIGNPHRASE">virtual user mode</i> sekaligus <i class="FOREIGNPHRASE">virtual memory mode</i> yang keduanya berjalan di <i class="FOREIGNPHRASE">physical user mode</i>. Ketika instruksi yang hanya membutuhkan <i class="FOREIGNPHRASE">virtual user mode</i> dijalankan, ia akan mengubah isi register yang berefek pada <i class="FOREIGNPHRASE">virtual monitor mode</i> sehingga dapat memulai ulang VM tersebut. Sebuah instruksi I/O yang membutuh waktu 100ms, dengan menggunakan VM bisa dieksekusi lebih cepat( karena <i class="FOREIGNPHRASE">spooling</i>) atau lebih lambat(karena interpreter). Terlebih lagi, CPU menjadi <i class="FOREIGNPHRASE">multiprogrammed</i> di antara banyak VM. Jika setiap user diberi 1 VM, dia akan bebas menjalankan sistem operasi(kernel) yang diinginkan pada VM tersebut.<br />
Selain kekurangan yang telah disebutkan diatas, jelas VM memiliki kelebihan-kelebihan, yaitu: Keamanan yang terjamin karena VM mempunyai perlindungan lengkap pada berbagai sistem sumber daya, tidak ada pembagian resources secara langsung . Pembagian disk mini dan jaringan diimplementasikan dalam perangkat lunak. Sistem VM adalah kendaraan yang sempurna untuk penelitian dan pengembangan Sistem Operasi. Dengan VM, perubahan satu bagian dari mesin dijamin tidak akan mengubah komponen lainnya.<br />
<div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C24-1-1">Mesin Virtual Java</a></h3>Mesin Virtual Java atau Java Virtual Machine(JVM) terdiri dari sebuah kelas loader dan java interpreter yang mengeksekusi <i class="FOREIGNPHRASE">the architecture-neutral bytecodes</i>. Java interpreter bisa berupa perangkat lunak yang menginterpretasikan kode byte setiap waktu atau hanya <span class="strong"><b class="EMPHASIS">Just-In-Time</b></span>(JIT) yang mengubah <i class="FOREIGNPHRASE">architecture-neutral bytecodes</i> menjadi bahasa mesin lokal. Interpreter bisa juga diimplementasikan pada sebuah <i class="FOREIGNPHRASE">chip</i> perangkat keras. <i class="FOREIGNPHRASE">Instance</i> dari JVM dibentuk ketika aplikasi java atau applet dijalankan. JVM mulai berjalan saat method <i class="FOREIGNPHRASE">main</i> dipanggil. Pada applet, JVM menciptakan method <i class="FOREIGNPHRASE">main</i> sebelum membuat applet itu sendiri.<br />
Java Development Environment terdiri dari sebuah Compile Time Environment dan RunTime Environment. Compile berfungsi mengubah <i class="FOREIGNPHRASE">java sourcecode</i> menjadi kode byte. Sedangkan RunTime merupakan <i class="FOREIGNPHRASE">Java platform</i> untuk sistem <i class="FOREIGNPHRASE">host</i>.</div></div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C24-2">Desain Sistem dan Implementasinya</a></h2>Desain sistem memiliki masalah dalam menentukan tujuan dan spesifikasi sistem. Pada level paling tinggi, desain system akan dipengaruhi oleh pilihan perangkat keras dan jenis sistem. Kebutuhannya akan lebih sulit untuk dispesifikasikan. Kebutuhan terdiri dari target user dan target sistem. User menginginkan sistem yang nyaman digunakan, mudah dipelajari, dapat dipercaya, aman, dan cepat. Namun itu semua tidaklah signifikan untuk desain sistem. Orang yang mendesain ingin sistem yang mudah didesain, diimplementasikan, fleksibel, dapat dipercaya, bebas eror, efisien. Sampai saat ini belum ada solusi yang pas untuk menentukan kebutuhan dari system operasi. Lain lingkungan, lain pula kebutuhannya.<br />
<div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C24-2-1">Mekanisme dan Kebijakan</a></h3>Mekanisme menentukan bagaimana melakukan sesuatu. Kebijakan menentukan apa yang akan dilakukan.Pemisahan antara mekanisme dan kebijakan sangatlah penting untuk fleksibilitas. Perubahan kebijakan akan membutuhkan definisi ulang pada beberapa parameter system, bahkan bisa mengubah mekanisme yang telah ada. Sistem operasi <i class="FOREIGNPHRASE">Microkernel-based</i> menggunakan pemisahan mekanisme dan kebijakan secara ekstrim dengan mengimplementasikan perangkat dari <i class="FOREIGNPHRASE">primitive building blocks</i>. Semua aplikasi mempunyai antarmuka yang sama karena antarmuka dibangun dalam kernel.<br />
Kebijakan penting untuk semua alokasi sumber daya dan penjadwalan problem. Perlu atau tidaknya sistem mengalokasikan sumber daya, kebijakan yang menentukan. Tapi bagaimana dan apa, mekanismelah yang menentukan</div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C24-2-2">Implementasi</a></h3>Umumnya sistem operasi ditulis dalam bahasa rakitan, tapi sekarang ini sering ditulis dalam bahasa tingkat tinggi. Keuntungannya adalah kodenya bisa ditulis lebih cepat, lebih padat, mudah dimengerti dan di<i class="FOREIGNPHRASE">debug</i>. Sistem operasi mudah diport(dipindahkan ke perangkat keras lain). Kerugiannya adalah mengurangi kecepatan dan membutuhkan tempat penyimpanan yang lebih banyak.</div></div><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=4680143293121281731" name="C24-3">System Generation</a></h2>Adalah mungkin untuk mendesign, mengkode, dan megimplementasikan sebuah sistem operasi khusus untuk satu mesin di suatu <i class="FOREIGNPHRASE">site</i>. Pada umumnya sistem operasi dibuat untuk berjalan pada beberapa kelas mesin di berbagai <i class="FOREIGNPHRASE">site</i> dan berbagai konfigurasi <i class="FOREIGNPHRASE">peripheral</i>. Kemudian, sistem dikonfigurasikan untuk masing-masing komputer, untuk <i class="FOREIGNPHRASE">site</i> yang spesifik. Proses ini terkadang disebut sebagai <span class="strong"><b class="EMPHASIS">System Generation</b></span>.<br />
Sistem program membaca dari berkas yang diberikan atau mungkin bertanya pada operator tentang informasi yang berhubungan dengan perangkat keras tersebut, antara lain adalah sebagai berikut: <br />
<ul><li>CPU apa yang digunakan, pilihan yang diinstall?</li>
<li>Berapa banyak memori yang tersedia?</li>
<li>Peralatan yang tersedia?</li>
<li>Pilihan Sistem operasi apa yang diinginkan atau parameter yang digunakan?</li>
</ul>Satu kali informasi didapat, bisa digunakan dengan berbagai cara.</div><div class="SECTION"><br />
<br />
</div></div></div></div></div></div></div>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-69603624819933663642011-07-06T01:12:00.000-07:002011-07-06T01:12:46.594-07:00Operasi Sistem Komputer<div class="NAVHEADER"><table border="0" cellpadding="0" cellspacing="0" summary="Header navigation table"><tbody>
<tr><th align="center" colspan="3"></th></tr>
<tr><td align="left" valign="bottom" width="10%"><br />
</td><td align="center" valign="bottom" width="80%"><br />
</td><td align="right" valign="bottom" width="10%"><br />
</td></tr>
</tbody></table><b>Struktur Sistem Komputer</b></div>Tidak ada suatu eventual khusus tentang bagaimana seharusnya struktur sistem sebuah komputer. Setiap ahli dan desainer arsitektur komputer memiliki pandangannya masing-masing. Akan tetapi, untuk mempermudah kita memahami detail dari sistem operasi di bab-bab berikutnya, kita perlu memiliki pengetahuan umum tentang struktur sistem komputer.<br />
<div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-1">Operasi Sistem Komputer</a></h2>Secara umum, sistem komputer terdiri atas CPU dan sejumlah <i class="FOREIGNPHRASE">device controller</i> yang terhubung melalui sebuah <i class="FOREIGNPHRASE">bus</i> yang menyediakan akses ke memori. Umumnya, setiap <i class="FOREIGNPHRASE">device controller</i> bertanggung jawab atas sebuah hardware spesisfik. Setiap <i class="FOREIGNPHRASE">device</i> dan CPU dapat beroperasi secara konkuren untuk mendapatkan akses ke memori. Adanya beberapa <i class="FOREIGNPHRASE">hardware</i> ini dapat menyebabkan masalah sinkronisasi. Karena itu untuk mencegahnya sebuah <i class="FOREIGNPHRASE">memory controller</i> ditambahkan untuk sinkronisasi akses memori.<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-1-F1"></a><b>Gambar 1-12. Arsitektur Umum Komputer</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c12-1-f1-arsitektur_umum.png" /></div></div>Pada sistem komputer yang lebih maju, arsitekturnya lebih kompleks. Untuk meningkatkan performa, digunakan beberapa buah <i class="FOREIGNPHRASE">bus</i> . Tiap <i class="FOREIGNPHRASE">bus</i> merupakan jalur data antara beberapa <i class="FOREIGNPHRASE">device</i> yang berbeda. Dengan cara ini <i class="FOREIGNPHRASE">RAM, Prosesor, GPU (VGA AGP)</i> dihubungkan oleh <i class="FOREIGNPHRASE">bus</i> utama berkecepatan tinggi yang lebih dikenal dengan nama <i class="FOREIGNPHRASE">FSB (Front Side Bus)</i> . Sementara perangkat lain yang lebih lambat dihubungkan oleh <i class="FOREIGNPHRASE">bus</i> yang berkecepatan lebih rendah yang terhubung dengan <i class="FOREIGNPHRASE">bus</i> lain yang lebih cepat sampai ke bus utama. Untuk komunikasi antar bus ini digunakan sebuah <i class="FOREIGNPHRASE">bridge</i> .<br />
Tanggung jawab sinkronisasi <i class="FOREIGNPHRASE">bus</i> yang secara tak langsung juga mempengaruhi sinkronisasi memori dilakukan oleh sebuah <i class="FOREIGNPHRASE">bus controller</i> atau dikenal sebagai <i class="FOREIGNPHRASE">bus master</i> . <i class="FOREIGNPHRASE">Bus master</i> akan mengendalikan aliran data hingga pada satu waktu, bus hanya berisi data dari satu buah <i class="FOREIGNPHRASE">device</i> .<br />
Pada prakteknya <i class="FOREIGNPHRASE">bridge</i> dan <i class="FOREIGNPHRASE">bus master</i> ini disatukan dalam sebuah <i class="FOREIGNPHRASE">chipset</i> .<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-1-F2"></a><b>Gambar 1-13. Arsitektur PC Modern</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c12-1-f2-arsitektur_pc_modern.png" /></div></div>NB: <i class="FOREIGNPHRASE">GPU</i> = Graphics Processing Unit; <i class="FOREIGNPHRASE">AGP</i> = Accelerated Graphics Port; <i class="FOREIGNPHRASE">HDD</i> = Hard Disk Drive; <i class="FOREIGNPHRASE">FDD</i> = Floppy Disk Drive; <i class="FOREIGNPHRASE">FSB</i> = Front Side Bus; <i class="FOREIGNPHRASE">USB</i> = Universal Serial Bus; <i class="FOREIGNPHRASE">PCI</i> = Peripheral Component Interconnect; <i class="FOREIGNPHRASE">RTC</i> = Real Time Clock; <i class="FOREIGNPHRASE">PATA</i> = Pararel Advanced Technology Attachment; <i class="FOREIGNPHRASE">SATA</i> = Serial Advanced Technology Attachment; <i class="FOREIGNPHRASE">ISA</i> = Industry Standard Architecture; <i class="FOREIGNPHRASE">IDE</i> = Intelligent Drive Electronics/Integrated Drive Electronics; <i class="FOREIGNPHRASE">MCA</i> = Micro Channel Architecture; <i class="FOREIGNPHRASE">PS/2</i> =Sebuah <i class="FOREIGNPHRASE">port</i> yang dibangun IBM untuk menghubungkan mouse ke <i class="FOREIGNPHRASE">PC</i>; <br />
Jika komputer dinyalakan, yang dikenal dengan nama <i class="FOREIGNPHRASE">booting,</i> komputer akan menjalankan <i class="FOREIGNPHRASE">bootstrap program</i> yaitu sebuah program sederhana yang disimpan dalam ROM yang berbentuk chip <i class="FOREIGNPHRASE">CMOS (Complementary Metal Oxide Semiconductor)</i> . Chip CMOS modern biasanya bertipe <i class="FOREIGNPHRASE">EEPROM(Electrically Erasable Programmable Read Only Memory),</i> yaitu memori <i class="FOREIGNPHRASE">non-volatile</i> (tak terhapus jika power dimatikan) yang dapat ditulis dan dihapus dengan pulsa elektronik. Lalu <i class="FOREIGNPHRASE">bootsrap program</i> ini lebih dikenal sebagai <i class="FOREIGNPHRASE">BIOS (Basic Input Output System)</i> .<br />
<i class="FOREIGNPHRASE">Bootstrap program</i> utama, yang biasanya terletak di <i class="FOREIGNPHRASE">Motherboard</i> akan memeriksa <i class="FOREIGNPHRASE">hardware-hardware</i> utama dan melakukan inisialisasi terhadap program dalam <i class="FOREIGNPHRASE">hardware</i> yang dikenal dengan nama <i class="FOREIGNPHRASE">firmware</i> .<br />
<i class="FOREIGNPHRASE">Bootstrap program</i> utama kemudian akan mencari dan meload <i class="FOREIGNPHRASE">kernel</i> sistem operasi ke memori lalu dilanjutkan dengan inisialisasi sistem operasi.Dari sini program sistem operasi akan menunggu kejadian tertentu. Kejadian ini akan menentukan apa yang akan dilakukan sistem operasi berikutnya ( <i class="FOREIGNPHRASE">event-driven</i> ).<br />
Kejadian ini pada komputer modern biasanya ditandai dengan munculnya <i class="FOREIGNPHRASE">interrupt</i> dari software atau hardware, sehingga Sistem Operasi ini disebut <i class="FOREIGNPHRASE">Interrupt-driven. Interrupt</i> dari <i class="FOREIGNPHRASE">hardware</i> biasanya dikirimkan melalui suatu signal tertentu, sedangkan <i class="FOREIGNPHRASE">software</i> mengirim <i class="FOREIGNPHRASE">interrupt</i> dengan cara menjalankan <i class="FOREIGNPHRASE">system call</i> atau juga dikenal dengan istilah <i class="FOREIGNPHRASE">monitor call . System/Monitor call</i> ini akan menyebabkan <i class="FOREIGNPHRASE">trap</i> yaitu <i class="FOREIGNPHRASE">interrupt</i> khusus yang dihasilkan oleh software karena adanya masalah atau permintaan terhadap layanan sistem operasi. <i class="FOREIGNPHRASE">Trap</i> ini juga sering disebut sebagai <i class="FOREIGNPHRASE">exception</i> .<br />
Setiap <i class="FOREIGNPHRASE">interrupt</i> terjadi, sekumpulan kode yang dikenal sebagai <i class="FOREIGNPHRASE">ISR (Interrupt Service Routine)</i> akan menentukan tindakan yang akan diambil. Untuk menentukan tindakan yang harus dilakukan, dapat dilakukan dengan dua cara yaitu <i class="FOREIGNPHRASE">polling</i> yang membuat komputer memeriksa satu demi satu perangkat yang ada untuk menyelidiki sumber <i class="FOREIGNPHRASE">interrupt</i> dan dengan cara menggunakan alamat-alamat <i class="FOREIGNPHRASE">ISR</i> yang disimpan dalam array yang dikenal sebagai <i class="FOREIGNPHRASE">interrupt vector</i> di mana sistem akan memeriksa <i class="FOREIGNPHRASE">Interrupt Vector</i> setiap kali <i class="FOREIGNPHRASE">interrupt</i> terjadi.<br />
Arsitektur <i class="FOREIGNPHRASE">interrupt</i> harus mampu untuk menyimpan alamat instruksi yang di- <i class="FOREIGNPHRASE">interrupt</i> . Pada komputer lama, alamat ini disimpan di tempat tertentu yang tetap, sedangkan padakomputer baru, alamat itu disimpan di <i class="FOREIGNPHRASE">stack</i> bersama-sama dengan informasi state saat itu.</div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-2">Struktur I/O</a></h2>Ada dua macam tindakan jika ada operasi <i class="FOREIGNPHRASE">I/O</i> . Kedua macam tindakan itu adalah:<br />
Setelah proses I/O dimulai, kendali akan kembali ke user program saat proses I/O selesai <i class="FOREIGNPHRASE">(Synchronous).</i> Instruksi wait menyebabkan CPU idle sampai <i class="FOREIGNPHRASE">interrupt</i> berikutnya. Akan terjadi <i class="FOREIGNPHRASE">Wait loop</i> (untuk menunggu akses berikutnya). Paling banyak satu proses I/O yang berjalan dalam satu waktu.<br />
Setelah proses I/O dimulai, kendali akan kembali ke user program tanpa menunggu proses I/O selesai (Asynchronous). System call permintaan pada sistem operasi untuk mengizinkan user menunggu sampai I/O selesai.Device-status table mengandung data masukkan untuk tiap I/O device yang menjelaskan tipe, alamat, dan keadaannya. Sistem operasi memeriksa I/O device untuk mengetahui keadaan device dan mengubah tabel untuk memasukkan <i class="FOREIGNPHRASE">interrupt.</i> Jika I/O device mengirim/mengambil data ke/dari memory hal ini dikenal dengan nama (Direct Memory Access) DMA.<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-2-F1"></a><b>Gambar 1-14. Struktur I/O</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c12-2-f1-struktur_io.png" /></div></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-2-1">Direct Memory Access</a></h3>Digunakan untuk <i class="FOREIGNPHRASE">I/O device</i> yang dapat memindahkan data dengan kecepatan tinggi (mendekati frekuensi bus memori). <i class="FOREIGNPHRASE">Device controller</i> memindahkan data dalam blok-blok dari buffer langsung ke memory utama atau sebaliknya tanpa campur tangan prosesor. <i class="FOREIGNPHRASE">Interrupt</i> hanya terjadi tiap blok bukan tiap word atau byte data. Seluruh proses DMA dikendalikan oleh sebuah controller bernama <i class="FOREIGNPHRASE">DMA Controller (DMAC)</i> . <i class="FOREIGNPHRASE">DMA Controller</i> mengirimkan atau menerima signal dari memori dan <i class="FOREIGNPHRASE">I/O device.</i> Prosesor hanya mengirimkan alamat awal data, tujuan data, panjang data ke <i class="FOREIGNPHRASE">DMA Controller</i> . . <i class="FOREIGNPHRASE">Interrupt</i> pada prosesor hanya terjadi saat proses transfer selesai. Hak terhadap penggunaan <i class="FOREIGNPHRASE">bus memory</i> yang diperlukan <i class="FOREIGNPHRASE">DMA controller</i> didapatkan dengan bantuan <i class="FOREIGNPHRASE">bus arbiter</i> yang dalam PC sekarang berupa <i class="FOREIGNPHRASE">chipset Northbridge</i> .</div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-2-2">Bus</a></h3>Suatu jalur transfer data yang menghubungkan setiap <i class="FOREIGNPHRASE">device</i> pada komputer. Hanya ada satu buah <i class="FOREIGNPHRASE">device</i> yang boleh mengirimkan data melewati sebuah bus, akan tetapi boleh lebih dari satu <i class="FOREIGNPHRASE">device</i> yang membaca data bus tersebut. Terdiri dari dua buah model: <i class="FOREIGNPHRASE">Synchronous bus</i> di mana digunakan dengan bantuan clock tetapi berkecepatan tinggi, tapi hanya untuk device berkecepatan tinggi juga; <i class="FOREIGNPHRASE">Asynchronous bus</i> digunakan dengan sistem <i class="FOREIGNPHRASE">handshake</i> tetapi berkecepatan rendah, dapat digunakan untuk berbagai macam <i class="FOREIGNPHRASE">device</i> .</div></div><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-3">Struktur Storage</a></h2>Hal penting yang perlu diingat adalah program adalah bagian dari data.<br />
<div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-3-1">Register</a></h3>Tempat penyimpanan beberapa buah data <i class="FOREIGNPHRASE">volatile</i> yang akan diolah langsung di prosesor yang berkecepatan sangat tinggi. Register ini berada di dalam prosesor dengan jumlah yang sangat terbatas karena fungsinya sebagai tempat perhitungan/komputasi data</div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-3-2">Cache Memory</a></h3>Tempat penyimpanan sementara ( <i class="FOREIGNPHRASE">volatile</i> ) sejumlah kecil data untuk meningkatkan kecepatan pengambilan atau penyimpanan data di memori oleh prosesor yang berkecepatan tinggi. Dahulu <i class="FOREIGNPHRASE">cache</i> disimpan di luar prosesor dan dapat ditambahkan. Misalnya <i class="FOREIGNPHRASE">pipeline burst</i> cache yang biasa ada di komputer awal tahun 90-an. Akan tetapi seiring menurunnya biaya produksi <i class="FOREIGNPHRASE">die</i> atau <i class="FOREIGNPHRASE">wafer </i> dan untuk meningkatkan kinerja, <i class="FOREIGNPHRASE">cache</i> ditanamkan di prosesor. Memori ini biasanya dibuat berdasarkan desain <i class="FOREIGNPHRASE">static memory.</i> </div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-3-3">Random Access Memory (RAM) - Main Memory</a></h3>Tempat penyimpanan sementara sejumlah data <i class="FOREIGNPHRASE">volatile</i> yang dapat diakses langsung oleh prosesor. Pengertian langsung di sini berarti prosesor dapat mengetahui alamat data yang ada di memori secara langsung. Sekarang, <i class="FOREIGNPHRASE">RAM</i> dapat diperoleh dengan harga yang cukup murah dangan kinerja yang bahkan dapat melewati <i class="FOREIGNPHRASE">cache</i> pada komputer yang lebih lama.</div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-3-4">Extension Memory</a></h3>Tambahan memory yang digunakan untuk membantu proses-proses dalam komputer, biasanya berupa buffer. Peranan tambahan memori ini sering dilupakan akan tetapi sangat penting artinya untuk efisiensi. Biasanya tambahan memori ini memberi gambaran kasar kemampuan dari perangkat tersebut, sebagai contoh misalnya jumlah <i class="FOREIGNPHRASE">VGA memory, soundcard memory.</i> </div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-3-5">Secondary Storage</a></h3>Media penyimpanan data yang non-volatile yang dapat berupa <i class="FOREIGNPHRASE">Flash Drive, Optical Disc, Magnetic Disk, Magnetic Tape.</i> Media ini biasanya daya tampungnya cukup besar dengan harga yang relatif murah. <i class="FOREIGNPHRASE">Portability-nya</i> juga relatif lebih tinggi.<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-3-5-F1"></a><b>Gambar 1-15. Struktur Harddisk</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c12-3-5-f1-harddisk_storage.png" /></div></div><div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-3-5-F2"></a><b>Gambar 1-16. Struktur Optical Drive</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c12-3-5-f2-optical_disc_storage.png" /></div></div></div></div><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C12-4">Hirarki Storage</a></h2>Dasar susunan sistem storage adalah kecepatan, biaya, sifat volatilitas. <i class="FOREIGNPHRASE">Caching</i> menyalin informasi ke <i class="FOREIGNPHRASE">storage media</i> yang lebih cepat; Main memory dapat dilihat sebagai cache terakhir untuk <i class="FOREIGNPHRASE">secondary storage</i> . Menggunakan memory berkecepatan tinggi untuk memegang data yang diakses terakhir. Dibutuhkan <i class="FOREIGNPHRASE">cache management policy.</i> <i class="FOREIGNPHRASE">Cache</i> juga memperkenalkan tingkat lain di hirarki storage. Hal ini memerlukan data untuk disimpan bersama-sama di lebih dari satu level agar tetap konsisten.<br />
<br />
<br />
<h1 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C13">Proteksi Hardware dan Struktur Jaringan</a></h1><div class="SECTION"><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C13-1">Proteksi Perangkat Keras</a></h2><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C13-1-1">Dual Mode Operation</a></h3>Membagi sumber daya sistem yang memerlukan sistem operasi untuk menjamin bahwa program yang salah tidak menyebabkan program lain berjalan salah juga. Menyediakan dukungan <i class="FOREIGNPHRASE">hardware</i> untuk membedakan minimal dua mode operasi yaitu: <i class="FOREIGNPHRASE">User Mode</i> - Eksekusi dikendalikan oleh user; <i class="FOREIGNPHRASE">Monitor/Kernel/System Mode</i> - Eksekusi dikendalikan oleh sistem operasi. Instruksi tertentu hanya berjalan di mode ini. <i class="FOREIGNPHRASE">(Privileged Instruction).</i> Ditambahkan sebuah bit penanda operasi. Jika terjadi <i class="FOREIGNPHRASE">interrupt,</i> maka <i class="FOREIGNPHRASE">hardware</i> berpindah ke <i class="FOREIGNPHRASE">monitor mode</i> .<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C13-1-1-F1"></a><b>Gambar 1-18. Dual Mode Operation</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c13-1-1-f1-dual_mode_operation.png" /></div></div></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C13-1-2">I/O Protection</a></h3>Semua instruksi I/O umumnya <i class="FOREIGNPHRASE">Privileged Instruction</i> (kecuali pada DOS, dan program tertentu). Harus menjamin user program tidak dapat mengambil alih kontrol komputer di <i class="FOREIGNPHRASE">monitor mode.</i> <br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C13-1-2-F1"></a><b>Gambar 1-19. I/O Protection</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c13-1-2-f1-io_protection.png" /></div></div></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C13-1-3">Memory Protection</a></h3>Harus menyediakan perlindungan terhadap memori minimal untuk <i class="FOREIGNPHRASE">interrupt vector</i> dan <i class="FOREIGNPHRASE">interrupt service routine</i> . Ditambahkan dua register yang menentukan di mana alamat legal sebuah program boleh mengakses, yaitu <i class="FOREIGNPHRASE">base register</i> untuk menyimpan alamat awal yang legal dan <i class="FOREIGNPHRASE">limit register</i> untuk menyimpan ukuran memori yang boleh diakses Memori di luar jangkauan dilindungi.<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C13-1-3-F1"></a><b>Gambar 1-20. Memory Protection</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c13-1-3-f1-memory_protection.png" /></div></div></div><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C13-1-4">CPU Protection</a></h3><i class="FOREIGNPHRASE">Timer</i> melakukan <i class="FOREIGNPHRASE">interrupt</i> setelah perioda waktu tertentu untuk menjamin kontrol sistem operasi. <i class="FOREIGNPHRASE">Timer</i> diturunkan setiap clock. Ketika timer mencapai nol, sebuah Interrupt terjadi. Timer biasanya digunakan untuk mengimplementasikan pembagian waktu. Timer dapat juga digunakan untuk menghitung waktu sekarang walaupun fungsinya sekarang ini sudah digantikan <i class="FOREIGNPHRASE">Real Time Clock (RTC). (System Clock Timer</i> terpisah dari Pencacah Waktu). <i class="FOREIGNPHRASE">Timer</i> sekarang secara <i class="FOREIGNPHRASE">hardware</i> lebih dikenal sebagai <i class="FOREIGNPHRASE">System Timer/ CPU Timer</i> . <i class="FOREIGNPHRASE">Load Timer</i> juga <i class="FOREIGNPHRASE">Privileged Instruction</i> .</div></div><h2 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C13-2">Struktur Jaringan</a></h2><div class="SECTION"><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C13-2-1">Local Area Network</a></h3>Muncul untuk menggantikan komputer besar. Dirancang untuk melingkupi suatu daerah yang kecil. Menggunakan peralatan berkecepatan lebih tinggi daripada <i class="FOREIGNPHRASE">WAN</i> . Hanya terdiri atas sejumlah kecil komputer.<br />
<div class="FIGURE"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C13-2-1-F1"></a><b>Gambar 1-21. Local Area Network</b><br />
<div class="MEDIAOBJECT"><img src="http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2003/49/produk/SistemOperasi/img/c13-2-1-f1-local_area_network.png" /></div></div></div><h3 class="SECTION"><a href="http://www.blogger.com/post-edit.g?blogID=1767158636814948495&postID=6960362481993366364" name="C13-2-2">Wide Area Network</a></h3>Menghubungkan daerah yang lebih luas. Lebih lambat, dihubungkan oleh <i class="FOREIGNPHRASE">router</i> melalui jaringan telepon.Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-35599886408430883152011-07-06T00:50:00.000-07:002011-07-07T20:43:31.936-07:00Ini dia perbedaan Processor Intel Core i3, i5, dan i7<script src="http://twitter.com/javascripts/blogger.js" type="text/javascript">
</script><script src="http://twitter.com/statuses/user_timeline/YOUR-USER-NAME%20.json?callback=twitterCallback2&count=1" type="text/javascript">
</script> <br />
<form action="/search" class="mainsearch" method="get"><input class="keyword" id="s" name="q" type="text" value="" /> <input class="submit" type="submit" value="" /> </form><div class="widget AdSense" id="AdSense1"><div class="widget-content"><iframe allowtransparency="true" frameborder="0" height="60" hspace="0" id="aswift_0" marginheight="0" marginwidth="0" name="aswift_0" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&&s.handlers,h=H&&H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&&d&&(!d.body||!d.body.firstChild)){if(h.call){i+='.call';setTimeout(h,0)}else if(h.match){i+='.nav';w.location.replace(h)}s.log&&s.log.push(i)}" scrolling="no" style="left: 0pt; position: absolute; top: 0pt;" vspace="0" width="468"></iframe><br />
</div></div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUgwAjL-UTrRhaNI-8sk5QK_1Bg2QFEykZrD5B3xFYO31bfuNd32sf7Sv0vXObpb4Kbzby6lX3gnvHqMskgewH9caje3rrJXHmbO-s9TkQlDkNwR_IkqwQYfVielajOh2BoXCYsknTdxc/s1600/intelheader.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5457786472519934690" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUgwAjL-UTrRhaNI-8sk5QK_1Bg2QFEykZrD5B3xFYO31bfuNd32sf7Sv0vXObpb4Kbzby6lX3gnvHqMskgewH9caje3rrJXHmbO-s9TkQlDkNwR_IkqwQYfVielajOh2BoXCYsknTdxc/s400/intelheader.png" style="cursor: pointer; display: block; height: 160px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
<br />
Intel sudah agak lama merilis processor terbarunya yaitu Intel core i7, kemudian disusul i5 dan i3. Yang perlu diperhatikan nanti Intel ga bakal pake lagi brand core 2 duo dan core 2 quad, sedangkan brand pentium dan celeron bakal dipertahankan. Terus kalo brand centrino mereka bakal pake di produknya yang berbasis Wifi dan Wimax, jadi ga bakal lagi kita nemuin notebook dengan brand Intel Centrino.<br />
<br />
Lalu apa perbedaan dari ketiga produk barunya tersebut? Intinya sih core i3 ditujukan buat Entry Level, core i5 buat mid level, kalo core i7 buat High Level. Terus ketiganya bakal ditanam di dekstop maupun notebook. Selain itu, core i5 dan i7 mengadopsi fitur “Intel Turbo Mode Technology” dimana fitur ini akan mematikan core yang tidak dipakai ketika memproses aplikasi yang hanya membutuhkan single thread, ketika memproses aplikasi single thread, processor akan mengoverclock aliran thread data yang berjalan di atasnya sehingga pemrosesan lebih cepat, sedangkan jika memproses aplikasi yang bukan single thread, core tersebut akan hidup kembali.<br />
<br />
Berikut deskripsi lebih jelasnya mengenai ketiga produk ini:<br />
<span class="fullpost"><br />
<span style="color: #cc0000; font-size: 130%;"><b><u>Intel Core i7</u></b></span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxjOgALxRfW63ih0YJS1TlbY0OeYJVxXWEr0gpyMiUFBHQd7V89VZW_9cJsOTebhD6CgKgWkMXLBRgZN01SY2jaWDu6b57a3bh7CWiSkbAJ7o1ZrlLFX_056_eW34n5usgAuKzf0lTYk/s1600/corei7logonya.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5457788734398646914" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilxjOgALxRfW63ih0YJS1TlbY0OeYJVxXWEr0gpyMiUFBHQd7V89VZW_9cJsOTebhD6CgKgWkMXLBRgZN01SY2jaWDu6b57a3bh7CWiSkbAJ7o1ZrlLFX_056_eW34n5usgAuKzf0lTYk/s320/corei7logonya.png" style="cursor: pointer; display: block; height: 158px; margin: 0px auto 10px; text-align: center; width: 208px;" /></a><br />
Core i7 sendiri merupakan processor pertama dengan teknologi “Nehalem”. Nehalem menggunakan platform baru yang betul-betul berbeda dengan generasi sebelumnya. Salah satunya adalah mengintegrasikan chipset MCH langsung di processor, bukan motherboard. Nehalem juga mengganti fungsi FSB menjadi QPI (Quick Path Interconnect) yang lebih revolusioner.<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfN163NneOj9V4P7qgDz1jWCGswPmg5Bb4hhCQEDfifGEAkltNhKviMnxmUiEI2LhWO7ULXkl9toPpSu6gZNtwNJv8UZDPEtSWirDXI7lZeSJVDRD7vc1LlRsnWYH4KYe1_-L8MKd0rVk/s1600/corei7benchmark.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5457790025987568850" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfN163NneOj9V4P7qgDz1jWCGswPmg5Bb4hhCQEDfifGEAkltNhKviMnxmUiEI2LhWO7ULXkl9toPpSu6gZNtwNJv8UZDPEtSWirDXI7lZeSJVDRD7vc1LlRsnWYH4KYe1_-L8MKd0rVk/s320/corei7benchmark.png" style="cursor: pointer; display: block; height: 320px; margin: 0px auto 10px; text-align: center; width: 286px;" /></a><br />
<br />
<br />
<span style="color: #cc0000; font-size: 130%;"><b><u>Intel Core i5</u></b></span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD1iSXl5cfnxqvb27E8h8qwdn7-LmuNw5n2uGWTEUSy91gdrh-0c9NTrM5IZ5tEMKPuSIMRVFLCicZ9G6O2vb43qfewbZci8G22ycNyYxL9eGIdMjzvSSUOnvG7Dih4MkipwaAC4l0vyU/s1600/corei5logonya.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5457788742150014562" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD1iSXl5cfnxqvb27E8h8qwdn7-LmuNw5n2uGWTEUSy91gdrh-0c9NTrM5IZ5tEMKPuSIMRVFLCicZ9G6O2vb43qfewbZci8G22ycNyYxL9eGIdMjzvSSUOnvG7Dih4MkipwaAC4l0vyU/s320/corei5logonya.jpg" style="cursor: pointer; display: block; height: 158px; margin: 0px auto 10px; text-align: center; width: 208px;" /></a><br />
Jika Bloomfield adalah codename untuk Core i7 maka Lynnfield adalah codename untuk Core i5. Core i5 adalah seri value dari Core i7 yang akan berjalan di socket baru Intel yaitu socket LGA-1156. Tertarik begitu mendengar kata value ? Tepat ! Core i5 akan dipasarkan dengan harga sekitar US$186.<br />
<br />
Kelebihan Core i5 ini adalah ditanamkannya fungsi chipset Northbridge pada inti processor (dikenal dengan nama MCH pada Motherboard). Maka motherboard Core i5 yang akan menggunakan chipset Intel P55 (dikelas mainstream) ini akan terlihat lowong tanpa kehadiran chipset northbridge. Jika Core i7 menggunakan Triple Channel DDR 3, maka di Core i5 hanya menggunakan Dual Channel DDR 3. Penggunaan dayanya juga diturunkan menjadi 95 Watt. Chipset P55 ini mendukung Triple Graphic Cards (3x) dengan 1×16 PCI-E slot dan 2×8 PCI-E slot. Pada Core i5 cache tetap sama, yaitu 8 MB L3 cache.<br />
<br />
Intel juga meluncurkan Clarksfield, yaitu Core i5 versi mobile yang ditujukan untuk notebook. Socket yang akan digunakan adalah mPGA-989 dan membutuhkan daya yang terbilang cukup kecil yaitu sebesar 45-55 Watt.<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ8x9VBmKU8ysDowYwl6F_WVHcybJxpx-nfcMobpC3hCF04c0w1LPZbVB78XglxFbJzBUscozWrWYkLfcZySA3ZZnY5SSbFUdccnTqrQ0go_YqOzSrONx8IzzI7XMNqHhJE25ribsJgCk/s1600/corei5benchmark.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5457790388179672770" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ8x9VBmKU8ysDowYwl6F_WVHcybJxpx-nfcMobpC3hCF04c0w1LPZbVB78XglxFbJzBUscozWrWYkLfcZySA3ZZnY5SSbFUdccnTqrQ0go_YqOzSrONx8IzzI7XMNqHhJE25ribsJgCk/s320/corei5benchmark.jpg" style="cursor: pointer; display: block; height: 311px; margin: 0px auto 10px; text-align: center; width: 320px;" /></a><br />
<br />
<br />
<span style="color: #cc0000; font-size: 130%;"><b><u>Intel Core i3</u></b></span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJaup8TO00_4pq2B4g_wEEeO3JyiBF4EORsnfrjmvH5j8VgJTI0l-fSt5xYeQpUxlSzyDRraMYoGU6GpGTQydq6uEoNQ3pMUVdUQFKKfx7pPtmuoU-8Q7StprZ9Fw4t7iSG8nVYt6t0DE/s1600/corei3logonya.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5457790569350660610" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJaup8TO00_4pq2B4g_wEEeO3JyiBF4EORsnfrjmvH5j8VgJTI0l-fSt5xYeQpUxlSzyDRraMYoGU6GpGTQydq6uEoNQ3pMUVdUQFKKfx7pPtmuoU-8Q7StprZ9Fw4t7iSG8nVYt6t0DE/s320/corei3logonya.jpg" style="cursor: pointer; display: block; height: 158px; margin: 0px auto 10px; text-align: center; width: 208px;" /></a><br />
Intel Core i3 merupakan varian paling value dibandingkan dua saudaranya yang lain. Processor ini akan mengintegrasikan GPU (Graphics Processing Unit) alias Graphics On-board didalam processornya. Kemampuan grafisnya diklaim sama dengan Intel GMA pada chipset G45. Selain itu Core i3 nantinya menggunakan manufaktur hybrid, inti processor dengan 32nm, sedangkan memory controller/graphics menggunakan 45nm. Code produk Core i3 adalah “Arrandale”.<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijrH45-cq59ysR3wagUJ_U_aLLvv6i_eHm31gNXAA52FQV8azmxFpWPc7JJGTbbAcGUyVC_Azg_rDX_TGrxzVhSdnGGjhvVrYeztObw2M-LlivsbM7hTggCs_p6nt8Z-ZS9gtkABjqoLg/s1600/corei3benchmark.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5457790561720211138" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijrH45-cq59ysR3wagUJ_U_aLLvv6i_eHm31gNXAA52FQV8azmxFpWPc7JJGTbbAcGUyVC_Azg_rDX_TGrxzVhSdnGGjhvVrYeztObw2M-LlivsbM7hTggCs_p6nt8Z-ZS9gtkABjqoLg/s320/corei3benchmark.png" style="cursor: pointer; display: block; height: 309px; margin: 0px auto 10px; text-align: center; width: 320px;" /></a><br />
<br />
<b><u>Berikut Tabel Detail mengenai ketiga produk ini:</u></b><br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8fK0mooYQeWufJewOXg-Wc1L0UvNR6gXYCSMufG4akg6KA5Ia7XQpD9J8GmojcLDcYnT3cTnFvj6vKZC_1D3wq6fq0hBcNxLIWpR65gOgnvjnYtxsUJaGQ9kJhY_LOUMuZdlNVLF-M9k/s1600/intelspec.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5457791166106839058" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8fK0mooYQeWufJewOXg-Wc1L0UvNR6gXYCSMufG4akg6KA5Ia7XQpD9J8GmojcLDcYnT3cTnFvj6vKZC_1D3wq6fq0hBcNxLIWpR65gOgnvjnYtxsUJaGQ9kJhY_LOUMuZdlNVLF-M9k/s400/intelspec.png" style="cursor: pointer; display: block; height: 479px; margin: 0px auto 10px; text-align: center; width: 601px;" /></a><br />
</span>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-4365132464838336182011-07-06T00:41:00.000-07:002011-07-06T00:41:13.163-07:00Perbedaan Intel Core 2 dan Intel i3, i5, i7<a href="http://www.indowebster.web.id/showthread.php?t=111659&s=6759505a063e6a0ea4eb5ee6f3f628ef">Perbedaan Intel Core 2 dan Intel i3, i5, i7</a> <br />
<hr /> <div class="floatcontainer"> </div><br />
<div class="post"><div class="posttop"><div class="username">hyde666</div><div class="date">23-08-2010, 08:54 AM</div></div><div class="posttext">Pengertian Intel Duo Core dan “Keluarga”-nya<br />
Core merupakan merek Dagang Intel untuk arsitektur baru Prosesornya yang mengacu kepada teknologi prosesor komputer dimana ada 2 “inti” didalam satu packaging, sehingga ada 2 prosesor di atas satu chip<br />
<br />
Pengertian Intel Core i3, i5, i7<br />
Intel dalam beberapa waktu lalu telah merilis processor terbarunya yaitu Intel core i7, kemudian disusul i5 dan i3, yang perlu diperhatikan adalah, bahwa intel tidak akan mengeluarkan lagi brand brand core 2 duo dan core 2 quad, sedangkan brand pentium dan celeron bakal dipertahankan, sedangkan brand centrino akan intel pakai pada produknya yang berbasis wifi dan wimax.<br />
<br />
<br />
http://i35.tinypic.com/ptwmr.jpg<br />
<br />
Perbedaan antar Intel Core Duo dan Intel Core i<br />
Intel Core Duo<br />
<br />
Teknologi "Core" dengan "Core 2" berbeda jauh sekali, terutama dengan<br />
adanya dukungan komputasi[kekuatan 2 inti] 64-bit di Core 2, Makanya harga antara<br />
keduanya dapat berbeda cukup jauh. Berikut pembagian Kelas dari Core Duo:<br />
- "Core Duo" berarti prosesor berarsitektur "Core" dengan 2 inti.<br />
- "Core 2 Duo" berarti prosesor berarsitektur "Core 2" dengan 2 inti.<br />
- "Core 2 Quad" berarti prosesor berarsitektur "Core 2" dengan 4 inti.<br />
<br />
SUGGEST/SARAN<br />
Karena harga antara keduanya beda cukup jauh. Jika hendak membeli, disarankan untuk membeli "Core 2" atau teknologi "Phenom" dariAMD karena cepat atau lambat semua akan bermigrasi ke sistem 64-bit.<br />
<br />
Intel Core i<br />
Merupakan keluaran terbaru dari Intel, terdiri dari 3 jenis, yaitu;<br />
<br />
* i7 = codename Bloomfield<br />
* i5 = codename Lynnfield<br />
* i3 = codename Arrandale/clarksfield<br />
<br />
<br />
http://i35.tinypic.com/2hx7yoz.jpg<br />
<br />
perbedaan dari ketiga produk barunya tersebut? Intinya core i3 ditujukan buat Entry Level, core i5 buat mid level, kalo core i7 buat High Level. Terus ketiganya bakal ditanam di dekstop maupun notebook. Selain itu, core i5 dan i7 mengadopsi fitur “Intel Turbo Mode Technology” dimana fitur ini akan mematikan core yang tidak dipakai ketika memproses aplikasi yang hanya membutuhkan single thread, ketika memproses aplikasi single thread, processor akan mengoverclock aliran thread data yang berjalan di atasnya sehingga pemrosesan lebih cepat, sedangkan jika memproses aplikasi yang BUKAN single thread, core tersebut akan hidup kembali.<br />
<br />
<br />
http://i36.tinypic.com/33mu5j5.jpg<br />
<br />
http://i34.tinypic.com/35hee4n.jpg<br />
<br />
http://i37.tinypic.com/msy6v.jpg<br />
<br />
<br />
Update:<br />
Intel mengeluarkan Prosesor generasi terbaru yaitu Intel i9 “code name GULFTOWN” [analogi dari i7 + 2, dengan 6 core fisik, sehingga dengan begitu total thread count dapat mencapai 12 thread paralel ] dengan 12 MB L3, Rilis pertengahan 2010…<br />
<br />
<br />
http://www.legitreviews.com/images/reviews/news/intel-Core-i9.jpg<br />
<br />
Kalo berkenan thnks atau cendol<br />
<br />
<br />
Sumber : Di Sini (http://www.premiumtrick.com/2010/05/perbedaan-intel-core-2-dan-intel-i3-i5.html)<br />
<br />
UPDATE<br />
<br />
Intel Atom<br />
<br />
<br />
http://i35.tinypic.com/ofagw6.jpg<br />
<br />
Intel Atom adalah prosesor ultra low power baru dari Intel dengan kode produksi Diamondville, merupakan prosesor paling hemat energi saat ini untuk PC desktop, prosesor ini hanya membutuhkan daya sebesar 1 - 2,5 Watt atau hanya sekitar 3% dari daya yang dibutuhkan oleh Prosesor Intel Core 2 Duo (65 Watt), namun dapat memberikan kemampuan desktop PC X86 seutuhnya, untuk menggenjot fungsi multimedia.<br />
<br />
Intel Atom dilengkapi dengan dukungan Streaming SIMD Extensions 3 (SSE3). Prosesor Intel atom diproduksi dengan teknolgi 45nm, dengan 47juta transistor didalamnya dan ukuran fisik kurang dari 26mm persegi, merupakan prosesor Intel terkecil saat ini.<br />
<br />
PC desktop berbasis Intel ATOM diberi istilah NETTOP yang dapat diartikan sebagai PC yang “low–cost”. "Bukan hanya dari sisi harga yang terjangkau, lebih dari itu sebenarnya Intel telah memulai era hemat energi pada dunia komputer khususnya desktop PC sehingga pengertian low-cost akan mencapai pada biaya pemakaian harian dan kami memulainya pertama kali di Makassar," demikian disampaikan oleh Wandy Effendi, Managing Director Elextra Komputer, melalui media rilis, Rabu 17 September.<br />
<br />
PC Hybrid Grand SC530 yang berbasis ATOM cocok untuk semua kalangan, mulai dari siswa yang baru mulai belajar menggunakan komputer sampai dengan professional dikantor, ketika di test, PC Hybrid Grand SC530 ternyata sangat responsif menjalankan aplikasi office (internet, pengetikan, kalkulasi, tabulasi dan presentasi), serta memadai pada fungsi multimedia seperti memutar musik dan video.</div></div>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-71554440536343657432011-06-30T21:12:00.000-07:002011-06-30T21:12:15.863-07:00Avenged Sevenfold<h2 class="pgtitle">Avenged Sevenfold</h2><div class="" id="player"><div class="hd"><h2>Play Avenged Sevenfold Radio</h2></div><div class="bd"> <table><tbody>
<tr> <th width="285"><strong>Avenged Sevenfold Essentials</strong></th> <th width="50">Lyrics</th> <th width="50">Save</th> <th width="40">Buy</th> </tr>
<tr> <td class="playtitle"> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Track({id:11740283,mn:11740283}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Track({id:11740283,mn:11740283}).queue()">QUEUE</a></li>
</ul></div><a class="title" href="http://mog.com/tracks/mn11740283/avenged-sevenfold/avenged-sevenfold-%28parental-advisory%29/almost-easy">1 Almost Easy</a> </td> <td><a href="http://mog.com/tracks/mn11740283/avenged-sevenfold/avenged-sevenfold-%28parental-advisory%29/almost-easy"><img alt="Ico_playlist" src="http://images2.mog.com/images/wm/ico_playlist.jpg?1263592586" /></a></td> <td> <a class="isave" href="http://mog.com/tracks/mn11740283/save" title="Save to playlist or favorites">save</a> </td> <td class="buy"> <a href="itms://phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearchResults?artistTerm=Avenged%20Sevenfold&albumTerm=Avenged%20Sevenfold%20%28Parental%20Advisory%29&songTerm=Almost%20Easy" rel="nofollow" target="_new"><img alt="Buy song from iTunes" height="14" src="http://images3.mog.com/images/wm/ico_itunes.png?1276634477" width="14" /></a> </td> </tr>
<tr> <td class="playtitle"> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Track({id:11740287,mn:11740287}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Track({id:11740287,mn:11740287}).queue()">QUEUE</a></li>
</ul></div><a class="title" href="http://mog.com/tracks/mn11740287/avenged-sevenfold/avenged-sevenfold-%28parental-advisory%29/afterlife">2 Afterlife</a> </td> <td><a href="http://mog.com/tracks/mn11740287/avenged-sevenfold/avenged-sevenfold-%28parental-advisory%29/afterlife"><img alt="Ico_playlist" src="http://images2.mog.com/images/wm/ico_playlist.jpg?1263592586" /></a></td> <td> <a class="isave" href="http://mog.com/tracks/mn11740287/save" title="Save to playlist or favorites">save</a> </td> <td class="buy"> <a href="itms://phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearchResults?artistTerm=Avenged%20Sevenfold&albumTerm=Avenged%20Sevenfold%20%28Parental%20Advisory%29&songTerm=Afterlife" rel="nofollow" target="_new"><img alt="Buy song from iTunes" height="14" src="http://images3.mog.com/images/wm/ico_itunes.png?1276634477" width="14" /></a> </td> </tr>
<tr> <td class="playtitle"> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Track({id:3964193,mn:3964193}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Track({id:3964193,mn:3964193}).queue()">QUEUE</a></li>
</ul></div><a class="title" href="http://mog.com/tracks/mn3964193/avenged-sevenfold/city-of-evil-%28parental-advisory%29/beast-and-the-harlot">3 Beast And The Harlot</a> </td> <td><img alt="Ico_playlist_disabled" src="http://images3.mog.com/images/wm/ico_playlist_disabled.jpg?1263592586" /></td> <td> <a class="isave" href="http://mog.com/tracks/mn3964193/save" title="Save to playlist or favorites">save</a> </td> <td class="buy"> <a href="itms://phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearchResults?artistTerm=Avenged%20Sevenfold&albumTerm=City%20Of%20Evil%20%28Parental%20Advisory%29&songTerm=Beast%20And%20The%20Harlot" rel="nofollow" target="_new"><img alt="Buy song from iTunes" height="14" src="http://images3.mog.com/images/wm/ico_itunes.png?1276634477" width="14" /></a> </td> </tr>
<tr> <td class="playtitle"> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Track({id:3964199,mn:3964199}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Track({id:3964199,mn:3964199}).queue()">QUEUE</a></li>
</ul></div><a class="title" href="http://mog.com/tracks/mn3964199/avenged-sevenfold/city-of-evil-%28parental-advisory%29/bat-country">4 Bat Country</a> </td> <td><img alt="Ico_playlist_disabled" src="http://images3.mog.com/images/wm/ico_playlist_disabled.jpg?1263592586" /></td> <td> <a class="isave" href="http://mog.com/tracks/mn3964199/save" title="Save to playlist or favorites">save</a> </td> <td class="buy"> <a href="itms://phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearchResults?artistTerm=Avenged%20Sevenfold&albumTerm=City%20Of%20Evil%20%28Parental%20Advisory%29&songTerm=Bat%20Country" rel="nofollow" target="_new"><img alt="Buy song from iTunes" height="14" src="http://images3.mog.com/images/wm/ico_itunes.png?1276634477" width="14" /></a> </td> </tr>
<tr> <td class="playtitle"> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Track({id:6361511,mn:6361511}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Track({id:6361511,mn:6361511}).queue()">QUEUE</a></li>
</ul></div><a class="title" href="http://mog.com/tracks/mn6361511/avenged-sevenfold/waking-the-fallen/unholy-confessions">5 Unholy Confessions</a> </td> <td><img alt="Ico_playlist_disabled" src="http://images3.mog.com/images/wm/ico_playlist_disabled.jpg?1263592586" /></td> <td> <a class="isave" href="http://mog.com/tracks/mn6361511/save" title="Save to playlist or favorites">save</a> </td> <td class="buy"> <a href="itms://phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearchResults?artistTerm=Avenged%20Sevenfold&albumTerm=Waking%20The%20Fallen&songTerm=Unholy%20Confessions" rel="nofollow" target="_new"><img alt="Buy song from iTunes" height="14" src="http://images3.mog.com/images/wm/ico_itunes.png?1276634477" width="14" /></a> </td> </tr>
</tbody></table><a class="morelink" href="http://mog.com/artists/songs/mn192358/avenged-sevenfold">View all Avenged Sevenfold songs <span>></span></a> </div></div><div id="top_albums_beta"> <div class="mogcrsl" id="album-carousel"> <div class="bd clrfx"> <div class="clrfx"> <h3>Top Albums</h3><form>Sorted By </form></div><div class=" jcarousel-skin-mog"><div class="jcarousel-container jcarousel-container-horizontal" style="display: block; position: relative;"><div class="jcarousel-clip jcarousel-clip-horizontal" style="overflow: hidden; position: relative;"><ul class="crsl jcarousel-list jcarousel-list-horizontal" id="alb-crsl" style="left: 0px; margin: 0px; overflow: hidden; padding: 0px; position: relative; top: 0px; width: 1344px;"><li class="jcarousel-item jcarousel-item-horizontal jcarousel-item-1 jcarousel-item-1-horizontal" style="float: left; list-style: none outside none; width: 112px;"> <a class="thumb" href="http://mog.com/albums/mn11740279/avenged-sevenfold/avenged-sevenfold-%28parental-advisory%29" title="Avenged Sevenfold (Parental Advisory)"><img alt="Avenged Sevenfold (Parental Advisory)" src="http://images.musicnet.com/albums/011/740/279/a.jpeg" style="height: 73px; width: 73px;" /></a> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Album({id:11740279,mn:11740279}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Album({id:11740279,mn:11740279}).queue()">QUEUE</a></li>
</ul></div><div class="nfo"> <a class="title" href="http://mog.com/albums/mn11740279/avenged-sevenfold/avenged-sevenfold-%28parental-advisory%29" title="Avenged Sevenfold (Parental Advisory)">Avenged Sevenfold (Par...</a> </div></li>
<li class="jcarousel-item jcarousel-item-horizontal jcarousel-item-2 jcarousel-item-2-horizontal" style="float: left; list-style: none outside none; width: 112px;"> <a class="thumb" href="http://mog.com/albums/mn3964191/avenged-sevenfold/city-of-evil-%28parental-advisory%29" title="City Of Evil (Parental Advisory)"><img alt="City Of Evil (Parental Advisory)" src="http://images.musicnet.com/albums/003/964/191/a.jpeg" style="height: 73px; width: 73px;" /></a> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Album({id:3964191,mn:3964191}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Album({id:3964191,mn:3964191}).queue()">QUEUE</a></li>
</ul></div><div class="nfo"> <a class="title" href="http://mog.com/albums/mn3964191/avenged-sevenfold/city-of-evil-%28parental-advisory%29" title="City Of Evil (Parental Advisory)">City Of Evil (Parental...</a> </div></li>
<li class="jcarousel-item jcarousel-item-horizontal jcarousel-item-3 jcarousel-item-3-horizontal" style="float: left; list-style: none outside none; width: 112px;"> <a class="thumb" href="http://mog.com/albums/mn6361487/avenged-sevenfold/waking-the-fallen" title="Waking The Fallen"><img alt="Waking The Fallen" src="http://images.musicnet.com/albums/006/361/487/a.jpeg" style="height: 73px; width: 73px;" /></a> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Album({id:6361487,mn:6361487}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Album({id:6361487,mn:6361487}).queue()">QUEUE</a></li>
</ul></div><div class="nfo"> <a class="title" href="http://mog.com/albums/mn6361487/avenged-sevenfold/waking-the-fallen" title="Waking The Fallen">Waking The Fallen</a> </div></li>
<li class="jcarousel-item jcarousel-item-horizontal jcarousel-item-4 jcarousel-item-4-horizontal" style="float: left; list-style: none outside none; width: 112px;"> <a class="thumb" href="http://mog.com/albums/mn6361459/avenged-sevenfold/sounding-the-seventh-trumpet" title="Sounding The Seventh Trumpet"><img alt="Sounding The Seventh Trumpet" src="http://images.musicnet.com/albums/006/361/459/a.jpeg" style="height: 73px; width: 73px;" /></a> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Album({id:6361459,mn:6361459}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Album({id:6361459,mn:6361459}).queue()">QUEUE</a></li>
</ul></div><div class="nfo"> <a class="title" href="http://mog.com/albums/mn6361459/avenged-sevenfold/sounding-the-seventh-trumpet" title="Sounding The Seventh Trumpet">Sounding The Seventh T...</a> </div></li>
<li class="jcarousel-item jcarousel-item-horizontal jcarousel-item-5 jcarousel-item-5-horizontal" style="float: left; list-style: none outside none; width: 112px;"> <a class="thumb" href="http://mog.com/albums/mn11767003/avenged-sevenfold/avenged-sevenfold-%28edited%29" title="Avenged Sevenfold (Edited)"><img alt="Avenged Sevenfold (Edited)" src="http://images.musicnet.com/albums/011/767/003/a.jpeg" style="height: 73px; width: 73px;" /></a> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Album({id:11767003,mn:11767003}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Album({id:11767003,mn:11767003}).queue()">QUEUE</a></li>
</ul></div><div class="nfo"> <a class="title" href="http://mog.com/albums/mn11767003/avenged-sevenfold/avenged-sevenfold-%28edited%29" title="Avenged Sevenfold (Edited)">Avenged Sevenfold (Edi...</a> </div></li>
<li class="jcarousel-item jcarousel-item-horizontal jcarousel-item-6 jcarousel-item-6-horizontal" style="float: left; list-style: none outside none; width: 112px;"> <a class="thumb" href="http://mog.com/albums/mn43523511/avenged-sevenfold/nightmare-%28parental-advisory%29" title="Nightmare (Parental Advisory)"><img alt="Nightmare (Parental Advisory)" src="http://images.musicnet.com/albums/043/523/511/a.jpeg" style="height: 73px; width: 73px;" /></a> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Album({id:43523511,mn:43523511}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Album({id:43523511,mn:43523511}).queue()">QUEUE</a></li>
</ul></div><div class="nfo"> <a class="title" href="http://mog.com/albums/mn43523511/avenged-sevenfold/nightmare-%28parental-advisory%29" title="Nightmare (Parental Advisory)">Nightmare (Parental Ad...</a> </div></li>
<li class="jcarousel-item jcarousel-item-horizontal jcarousel-item-7 jcarousel-item-7-horizontal" style="float: left; list-style: none outside none; width: 112px;"> <a class="thumb" href="http://mog.com/albums/mn12913117/avenged-sevenfold/crossroads-%28single%29" title="Crossroads (Single)"><img alt="Crossroads (Single)" src="http://images.musicnet.com/albums/012/913/117/a.jpeg" style="height: 73px; width: 73px;" /></a> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Album({id:12913117,mn:12913117}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Album({id:12913117,mn:12913117}).queue()">QUEUE</a></li>
</ul></div><div class="nfo"> <a class="title" href="http://mog.com/albums/mn12913117/avenged-sevenfold/crossroads-%28single%29" title="Crossroads (Single)">Crossroads (Single)</a> </div></li>
<li class="jcarousel-item jcarousel-item-horizontal jcarousel-item-8 jcarousel-item-8-horizontal" style="float: left; list-style: none outside none; width: 112px;"> <a class="thumb" href="http://mog.com/albums/mn10930801/avenged-sevenfold/walk-%28studio-version%29" title="Walk (Studio Version)"><img alt="Walk (Studio Version)" src="http://images.musicnet.com/albums/010/930/801/a.jpeg" style="height: 73px; width: 73px;" /></a> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Album({id:10930801,mn:10930801}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Album({id:10930801,mn:10930801}).queue()">QUEUE</a></li>
</ul></div><div class="nfo"> <a class="title" href="http://mog.com/albums/mn10930801/avenged-sevenfold/walk-%28studio-version%29" title="Walk (Studio Version)">Walk (Studio Version)</a> </div></li>
<li class="jcarousel-item jcarousel-item-horizontal jcarousel-item-9 jcarousel-item-9-horizontal" style="float: left; list-style: none outside none; width: 112px;"> <a class="thumb" href="http://mog.com/albums/mn11236701/avenged-sevenfold/critical-acclaim-%28single%29-%28parental-advisory%29" title="Critical Acclaim (Single) (Parental Advisory)"><img alt="Critical Acclaim (Single) (Parental Advisory)" src="http://images.musicnet.com/albums/011/236/701/a.jpeg" style="height: 73px; width: 73px;" /></a> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Album({id:11236701,mn:11236701}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Album({id:11236701,mn:11236701}).queue()">QUEUE</a></li>
</ul></div><div class="nfo"> <a class="title" href="http://mog.com/albums/mn11236701/avenged-sevenfold/critical-acclaim-%28single%29-%28parental-advisory%29" title="Critical Acclaim (Single) (Parental Advisory)">Critical Acclaim (Sing...</a> </div></li>
<li class="jcarousel-item jcarousel-item-horizontal jcarousel-item-10 jcarousel-item-10-horizontal" style="float: left; list-style: none outside none; width: 112px;"> <a class="thumb" href="http://mog.com/albums/mn11367343/avenged-sevenfold/almost-easy-%28single%29" title="Almost Easy (Single)"><img alt="Almost Easy (Single)" src="http://images.musicnet.com/albums/011/367/343/a.jpeg" style="height: 73px; width: 73px;" /></a> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Album({id:11367343,mn:11367343}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Album({id:11367343,mn:11367343}).queue()">QUEUE</a></li>
</ul></div><div class="nfo"> <a class="title" href="http://mog.com/albums/mn11367343/avenged-sevenfold/almost-easy-%28single%29" title="Almost Easy (Single)">Almost Easy (Single)</a> </div></li>
<li class="jcarousel-item jcarousel-item-horizontal jcarousel-item-11 jcarousel-item-11-horizontal" style="float: left; list-style: none outside none; width: 112px;"> <a class="thumb" href="http://mog.com/albums/mn43763895/avenged-sevenfold/nightmare" title="Nightmare"><img alt="Nightmare" src="http://images.musicnet.com/albums/043/763/895/a.jpeg" style="height: 73px; width: 73px;" /></a> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Album({id:43763895,mn:43763895}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Album({id:43763895,mn:43763895}).queue()">QUEUE</a></li>
</ul></div><div class="nfo"> <a class="title" href="http://mog.com/albums/mn43763895/avenged-sevenfold/nightmare" title="Nightmare">Nightmare</a> </div></li>
<li class="jcarousel-item jcarousel-item-horizontal jcarousel-item-12 jcarousel-item-12-horizontal" style="float: left; list-style: none outside none; width: 112px;"> <a class="thumb" href="http://mog.com/albums/mn40396589/avenged-sevenfold/nightmare-%28single%29%28parental-advisory%29" title="Nightmare (Single)(Parental Advisory)"><img alt="Nightmare (Single)(Parental Advisory)" src="http://images.musicnet.com/albums/040/396/589/a.jpeg" style="height: 73px; width: 73px;" /></a> <div class="play-button small-play-button small-play-button-alt"> <ul class=""><li class="play-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rev="new Mog.Album({id:40396589,mn:40396589}).play()">PLAY</a></li>
<li class="queue-btn"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#queue" rev="new Mog.Album({id:40396589,mn:40396589}).queue()">QUEUE</a></li>
</ul></div><div class="nfo"> <a class="title" href="http://mog.com/albums/mn40396589/avenged-sevenfold/nightmare-%28single%29%28parental-advisory%29" title="Nightmare (Single)(Parental Advisory)">Nightmare (Single)(Par...</a> </div></li>
</ul></div></div></div><a class="morelink" href="http://mog.com/artists/discography/mn192358/avenged-sevenfold">View All Albums <span>></span></a> </div></div></div><div class="addpost"> <span class="wrapper"> <a class="button gray oro" href="http://mog.com/blog_posts/new?artist_name=avenged-sevenfold&mn_artist_id=mn192358"><strong><span>Add A Post</span></strong></a> </span> </div><ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"><li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-tabs-left" id="panel_1_tab"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#panel_1"><span>News <cite>(102)</cite></span></a></li>
<li class="ui-state-default ui-corner-top" id="panel_2_tab"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#panel_2"><span>Reviews <cite>(18)</cite></span></a></li>
<li class="ui-state-default ui-corner-top" id="panel-3_tab"><a href="http://mog.com/artists/mn192358/avenged-sevenfold#panel-3"><span>Posts <cite>(203)</cite></span></a></li>
</ul><div class="post firstpost mmn clrfx"> <div class="user-nfo"> <div class="attr"><a href="http://mog.com/blog_posts/content"><img alt="MMN" height="8" src="http://images0.mog.com/images/wm/mmn.gif?1263592586" width="45" /></a></div><div class="avatar"> <a href="http://mog.com/blog_posts/content/670"><img alt="Metal(z) Videos" src="http://cdn2.mog.com/pictures/143209/143209.regular.jpg?1271812776" width="85" /></a> </div><div class="username"> <a href="http://mog.com/blog_posts/content/670">Metal(z) Videos</a> </div></div><div class="post-body" id="post-body3161923"> <a class="title" href="http://mog.com/blog_post/content/670/3161923">AVENGED SEVENFOLD: Pro-Shot Footage From Belgium’s GRASPOP METAL MEETING</a> <div class="timestamp"> 2 days ago </div><div class="desc clrfx"> <ul class="post-attr"><li> <div class="tag">Artist:</div><div class="play-button small-play-button small-radio-button"> <ul class=""><li class="play-btn"><a class="blog-post-ping" href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rel="3161923" rev="new Mog.Artist({id:192358,mn:192358}).play()">PLAY</a></li>
</ul></div><div class="aas_name"><a href="http://mog.com/artists/mn192358/avenged-sevenfold">Avenged Sevenfold</a></div></li>
</ul><blockquote><img class="ltqt" src="http://mog.com/images/wm/ico_Lqt.png" />Professionally filmed video footage of AVENGED SEVENFOLD's appearance at this year's Graspop Metal Meeting on June 26, 2011 in Dessel, Belgium can be viewed below.<img class="rtqt" src="http://mog.com/images/wm/ico_Rqt.png" /><br />
<a class="morelink" href="http://mog.com/blog_post/content/670/3161923" rel="nofollow">More <span>></span></a></blockquote><ul class="post-footer clrfx"><li><a href="http://mog.com/blog_post/content/670/3161923" rel="nofollow">Permalink</a></li>
<li class="last"><a href="http://mog.com/blog_post/content/670/3161923#comments" rel="nofollow">Comments (<span id="blog_comments_count">0</span>)</a></li>
</ul><div class="mogitup "> <span class="digits">1</span> <a class="login" href="http://mog.com/blog_posts/rate/3161923" rel="nofollow"> <span>MOG it up!</span> </a> </div></div></div></div><div class="post mmn clrfx"> <div class="user-nfo"> <div class="attr"><a href="http://mog.com/blog_posts/content"><img alt="MMN" height="8" src="http://images0.mog.com/images/wm/mmn.gif?1263592586" width="45" /></a></div><div class="avatar"> <a href="http://mog.com/blog_posts/content/670"><img alt="Metal(z) Videos" src="http://cdn2.mog.com/pictures/143209/143209.regular.jpg?1271812776" width="85" /></a> </div><div class="username"> <a href="http://mog.com/blog_posts/content/670">Metal(z) Videos</a> </div></div><div class="post-body" id="post-body3147265"> <a class="title" href="http://mog.com/blog_post/content/670/3147265">AVENGED SEVENFOLD Bassist Interviewed By Germany’s METAL HAMMER (Video)</a> <div class="timestamp"> 8 days ago </div><div class="desc clrfx"> <ul class="post-attr"><li> <div class="tag">Artist:</div><div class="play-button small-play-button small-radio-button"> <ul class=""><li class="play-btn"><a class="blog-post-ping" href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rel="3147265" rev="new Mog.Artist({id:192358,mn:192358}).play()">PLAY</a></li>
</ul></div><div class="aas_name"><a href="http://mog.com/artists/mn192358/avenged-sevenfold">Avenged Sevenfold</a></div></li>
</ul><blockquote><img class="ltqt" src="http://mog.com/images/wm/ico_Lqt.png" />AVENGED SEVENFOLD bassist Johnny Christ spoke to the German edition of Metal Hammer magazine at the Rock am Ring festival, which took place June 3-5, 2011 in Nürburgring, Germany.<img class="rtqt" src="http://mog.com/images/wm/ico_Rqt.png" /><br />
<a class="morelink" href="http://mog.com/blog_post/content/670/3147265" rel="nofollow">More <span>></span></a></blockquote><ul class="post-footer clrfx"><li><a href="http://mog.com/blog_post/content/670/3147265" rel="nofollow">Permalink</a></li>
<li class="last"><a href="http://mog.com/blog_post/content/670/3147265#comments" rel="nofollow">Comments (<span id="blog_comments_count">0</span>)</a></li>
</ul><div class="mogitup "> <span class="digits">0</span> <a class="login" href="http://mog.com/blog_posts/rate/3147265" rel="nofollow"> <span>MOG it up!</span> </a> </div></div></div></div><div class="post mmn clrfx"> <div class="user-nfo"> <div class="attr"><a href="http://mog.com/blog_posts/content"><img alt="MMN" height="8" src="http://images0.mog.com/images/wm/mmn.gif?1263592586" width="45" /></a></div><div class="avatar"> <a href="http://mog.com/blog_posts/content/918"><img alt="Metal Injection" src="http://cdn2.mog.com/pictures/210506/6208_119110368895_5866633895_2285032_8163360_n.regular.jpg?1281373795" width="85" /></a> </div><div class="username"> <a href="http://mog.com/blog_posts/content/918">Metal Injection</a> </div></div><div class="post-body" id="post-body3119181"> <a class="title" href="http://mog.com/blog_post/content/918/3119181">Dates for the Rockstar Energy UPROAR Festival Announced (AVENGED SEVENFOLD, BULLET FOR MY VALENTINE)</a> <div class="timestamp"> 17 days ago </div><div class="desc clrfx"> <ul class="post-attr"><li> <div class="tag">Artist:</div><div class="play-button small-play-button small-radio-button"> <ul class=""><li class="play-btn"><a class="blog-post-ping" href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rel="3119181" rev="new Mog.Artist({id:192358,mn:192358}).play()">PLAY</a></li>
</ul></div><div class="aas_name"><a href="http://mog.com/artists/mn192358/avenged-sevenfold">Avenged Sevenfold</a></div></li>
</ul><blockquote><img class="ltqt" src="http://mog.com/images/wm/ico_Lqt.png" />Uproar Festival is like the softer cousin of Mayhem Festival, featuring hard rock acts such as Avenged Sevenfold, Three Days Grace, Bullet For My Valentine, Seether, & Escape The Fate on the main stage, with Sevendust, Black Tide, The Art Of Dying & The Black Cloud Collective on the second stage. The party kicks off ...<img class="rtqt" src="http://mog.com/images/wm/ico_Rqt.png" /><br />
<a class="morelink" href="http://mog.com/blog_post/content/918/3119181" rel="nofollow">More <span>></span></a></blockquote><ul class="post-footer clrfx"><li><a href="http://mog.com/blog_post/content/918/3119181" rel="nofollow">Permalink</a></li>
<li class="last"><a href="http://mog.com/blog_post/content/918/3119181#comments" rel="nofollow">Comments (<span id="blog_comments_count">0</span>)</a></li>
</ul><div class="mogitup "> <span class="digits">0</span> <a class="login" href="http://mog.com/blog_posts/rate/3119181" rel="nofollow"> <span>MOG it up!</span> </a> </div></div></div></div><div class="post mmn clrfx"> <div class="user-nfo"> <div class="attr"><a href="http://mog.com/blog_posts/content"><img alt="MMN" height="8" src="http://images0.mog.com/images/wm/mmn.gif?1263592586" width="45" /></a></div><div class="avatar"> <a href="http://mog.com/blog_posts/content/1318"><img alt="The Audio Perv" src="http://cdn2.mog.com/pictures/209597/ofmontrealfallon-300x189.regular.jpg?1280853076" width="85" /></a> </div><div class="username"> <a href="http://mog.com/blog_posts/content/1318">The Audio Perv</a> </div></div><div class="post-body" id="post-body3118721"> <a class="title" href="http://mog.com/blog_post/content/1318/3118721">Initial Dates for Rockstar Energy Drink UPROAR Festival Announced</a> <div class="timestamp"> 17 days ago </div><div class="desc clrfx"> <ul class="post-attr"><li> <div class="tag">Artist:</div><div class="play-button small-play-button small-radio-button"> <ul class=""><li class="play-btn"><a class="blog-post-ping" href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rel="3118721" rev="new Mog.Artist({id:192358,mn:192358}).play()">PLAY</a></li>
</ul></div><div class="aas_name"><a href="http://mog.com/artists/mn192358/avenged-sevenfold">Avenged Sevenfold</a></div></li>
</ul><blockquote><img class="ltqt" src="http://mog.com/images/wm/ico_Lqt.png" /><img alt="" src="http://theaudioperv.com/wp-content/uploads/2011/06/rockstaruproar2011.jpg" /><img class="rtqt" src="http://mog.com/images/wm/ico_Rqt.png" /><br />
<a class="morelink" href="http://mog.com/blog_post/content/1318/3118721" rel="nofollow">More <span>></span></a></blockquote><ul class="post-footer clrfx"><li><a href="http://mog.com/blog_post/content/1318/3118721" rel="nofollow">Permalink</a></li>
<li class="last"><a href="http://mog.com/blog_post/content/1318/3118721#comments" rel="nofollow">Comments (<span id="blog_comments_count">0</span>)</a></li>
</ul><div class="mogitup "> <span class="digits">1</span> <a class="login" href="http://mog.com/blog_posts/rate/3118721" rel="nofollow"> <span>MOG it up!</span> </a> </div></div></div></div><div class="user-nfo"> <div class="attr"><a href="http://mog.com/blog_posts/content"><img alt="MMN" height="8" src="http://images0.mog.com/images/wm/mmn.gif?1263592586" width="45" /></a></div><div class="avatar"> <a href="http://mog.com/blog_posts/content/4484"><img alt="WENN" src="http://cdn2.mog.com/pictures/207184/wenn_logo_2010small.jpg.regular.jpg?1279655916" width="85" /></a> </div><div class="username"> <a href="http://mog.com/blog_posts/content/4484">WENN</a> </div></div><a class="title" href="http://mog.com/blog_post/content/4484/3116705">Avenged Sevenfold Remember Late Drummer At Download Festival</a> <div class="timestamp"> 18 days ago </div><ul class="post-attr"><li> <div class="tag">Artist:</div><div class="play-button small-play-button small-radio-button"> <ul class=""><li class="play-btn"><a class="blog-post-ping" href="http://mog.com/artists/mn192358/avenged-sevenfold#play" rel="3116705" rev="new Mog.Artist({id:192358,mn:192358}).play()">PLAY</a></li>
</ul></div><div class="aas_name"><a href="http://mog.com/artists/mn192358/avenged-sevenfold">Avenged Sevenfold</a></div></li>
</ul><blockquote><img class="ltqt" src="http://mog.com/images/wm/ico_Lqt.png" />Rockers Avenged Sevenfold paid tribute to their late drummer Jimmy Sullivan during their set at Britain's Download Festival on Saturday, dedicating the show to "our brother upstairs". Sullivan died from an accidental overdose of prescription drugs in December 2009, and the band considered quitting altogether in the wake of his passing.However, they returned to the stage last year and Saturday's fe<img class="rtqt" src="http://mog.com/images/wm/ico_Rqt.png" /><br />
<a class="morelink" href="http://mog.com/blog_post/content/4484/3116705" rel="nofollow">More <span>></span></a></blockquote><ul class="post-footer clrfx"><li><a href="http://mog.com/blog_post/content/4484/3116705" rel="nofollow">Permalink</a></li>
<li class="last"><a href="http://mog.com/blog_post/content/4484/3116705#comments" rel="nofollow">Comments (</a></li>
</ul>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-54716514748324014642011-06-30T20:59:00.000-07:002011-06-30T20:59:42.905-07:00Indonesian Music<table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="icon" width="24"><img alt="Musik" height="24" src="http://images.multiply.com/multiply/icons/clean/24x24/music.png" title="Musik" width="24" /></td><td class="cattitle"><a href="http://hanif76.multiply.com/music/item/185/PERASAAN_HATIKU" rel="bookmark">PERASAAN HATIKU</a></td><td class="itemsubsub"><nobr></nobr><br />
</td></tr>
</tbody></table><div class="itemshadow"><div class="itembox"><div class="bodytext" id="item_body">SEDIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH</div><div class="musicwrapper"><table class="musictable"><tbody>
<tr><td><b>Dua Sedjoli</b></td><td> </td><td>Bintang Lima</td><td> </td><td>Dewa</td><td> </td></tr>
<tr><td><b>Permintaan Hati</b></td><td> </td><td>Don't Make Me Sad</td><td> </td><td>Letto</td><td> </td></tr>
<tr><td><b>Penjara Hati</b></td><td> </td><td>Tempat Yang Paling Indah</td><td> </td><td>Tahta</td><td> </td></tr>
</tbody></table></div></div></div><br clear="left" /><div id="item_hanif76:music:159"><div class="itemboxsub"><table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="icon" width="24"><img alt="Musik" height="24" src="http://images.multiply.com/multiply/icons/clean/24x24/music.png" title="Musik" width="24" /></td><td class="cattitle"><a href="http://hanif76.multiply.com/music/item/159/LAGU_KEDAMAIAAN" rel="bookmark">LAGU KEDAMAIAAN</a></td><td class="itemsubsub"><nobr>Jan 6, '08 1:07 PM</nobr><br />
untuk semuanya</td></tr>
</tbody></table></div><div class="itemshadow"><div class="itembox"><div class="musicwrapper"><table class="musictable"><tbody>
<tr><td><b>Nyawa Hidupku</b></td><td> </td><td>http://kesha.multiply.com/</td><td> </td><td>Ada Band</td><td> </td></tr>
<tr><td><b>Permintaan Hati</b></td><td> </td><td>Don't Make Me Sad</td><td> </td><td>Letto</td><td> </td></tr>
<tr><td><b>Semenjak Ada Dirimu</b></td><td> </td><td>http://kesha.multiply.com/</td><td> </td><td>Andity</td><td> </td></tr>
<tr><td><b>Mencintai Untuk Disakiti</b></td><td> </td><td>Funk Me</td><td> </td><td>Ari</td><td> </td></tr>
<tr><td><b>Sang Penghibur</b></td><td> </td><td>Tak Hanya Diam</td><td> </td><td>Padi</td><td> </td></tr>
</tbody></table></div></div></div></div><div class="itemactions" id="itemactions"><div class="ritemactions"><a class="replybutton" href="http://hanif76.multiply.com/music/item/159/LAGU_KEDAMAIAAN"></a></div></div><br clear="left" /><div id="item_hanif76:music:139"><div class="itemboxsub"><table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="icon" width="24"><img alt="Musik" height="24" src="http://images.multiply.com/multiply/icons/clean/24x24/music.png" title="Musik" width="24" /></td><td class="cattitle"><a href="http://hanif76.multiply.com/music/item/139/haose_mosik" rel="bookmark">haose mosik</a></td><td class="itemsubsub"><nobr>Nov 29, '07 9:51 AM</nobr><br />
untuk semuanya</td></tr>
</tbody></table></div><div class="itemshadow"><div class="itembox"><div class="musicwrapper"><table class="musictable"><tbody>
<tr><td><b>01 ingin memelukmu</b></td><td> </td><td>Dangdut House Music 2</td><td> </td><td>Varioust</td><td> </td></tr>
<tr><td><b>02 darah muda</b></td><td> </td><td>Dangdut House Music 2</td><td> </td><td>Varioust</td><td> </td></tr>
<tr><td><b>03 hallo dangdut</b></td><td> </td><td>Dangdut House Music 2</td><td> </td><td>Varioust</td><td> </td></tr>
<tr><td><b>04 duh engkang</b></td><td> </td><td>Dangdut House Music 2</td><td> </td><td>Varioust</td><td> </td></tr>
<tr><td><b>05 mati lampu</b></td><td> </td><td>Dangdut House Music 2</td><td> </td><td>Varioust</td><td> </td></tr>
<tr><td><b>06 akang haji</b></td><td> </td><td>Dangdut House Music 2</td><td> </td><td>Varioust</td><td> </td></tr>
<tr><td><b>07 rekayasa cinta</b></td><td> </td><td>Dangdut House Music 2</td><td> </td><td>Varioust</td><td> </td></tr>
<tr><td><b>08 pengemis cinta</b></td><td> </td><td>Dangdut House Music 2</td><td> </td><td>Varioust</td><td> </td></tr>
<tr><td><b>09 bekas pacar</b></td><td> </td><td>Dangdut House Music 2</td><td> </td><td>Varioust</td><td> </td></tr>
<tr><td><b>10 tidak semua laki-laki</b></td><td> </td><td>Dangdut House Music 2</td><td> </td><td>Varioust</td><td> </td></tr>
</tbody></table></div></div></div></div><div class="itemactions" id="itemactions"><div class="ritemactions"><a class="replybutton" href="http://hanif76.multiply.com/music/item/139/haose_mosik"></a></div></div><br clear="left" /><div id="item_hanif76:music:128"><div class="itemboxsub"><table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="icon" width="24"><img alt="Musik" height="24" src="http://images.multiply.com/multiply/icons/clean/24x24/music.png" title="Musik" width="24" /></td><td class="cattitle"><a href="http://hanif76.multiply.com/music/item/128/New_Music_21" rel="bookmark">New Music 21</a></td><td class="itemsubsub"><nobr>Nov 28, '07 8:39 AM</nobr><br />
untuk semuanya</td></tr>
</tbody></table></div><div class="itemshadow"><div class="itembox"><div class="musicwrapper"><table class="musictable"><tbody>
<tr><td><b>Jennifer Lost the War</b></td><td> </td><td>Offspring</td><td> </td><td>The Offspring</td><td> </td></tr>
<tr><td><b>Welcome</b></td><td> </td><td>Americana</td><td> </td><td>The Offspring</td><td> </td></tr>
<tr><td><b>Come Out Swinging</b></td><td> </td><td>Conspiracy Of One</td><td> </td><td>The Offspring</td><td> </td></tr>
<tr><td><b>Elders</b></td><td> </td><td>Offspring</td><td> </td><td>The Offspring</td><td> </td></tr>
<tr><td><b>Have You Ever</b></td><td> </td><td>Americana</td><td> </td><td>The Offspring</td><td> </td></tr>
<tr><td><b>Out on Patrol</b></td><td> </td><td>Offspring</td><td> </td><td>The Offspring</td><td> </td></tr>
<tr><td><b>Staring at the Sun</b></td><td> </td><td>Americana</td><td> </td><td>The Offspring</td><td> </td></tr>
<tr><td><b>Crossroads</b></td><td> </td><td>Offspring</td><td> </td><td>The Offspring</td><td> </td></tr>
<tr><td><b>Pretty Fly (For a White Guy)</b></td><td> </td><td>Americana</td><td> </td><td>The Offspring</td><td> </td></tr>
<tr><td><b>Want You Bad</b></td><td> </td><td>Conspiracy Of One</td><td> </td><td>The Offspring</td><td> </td></tr>
</tbody></table></div></div></div></div><div class="itemactions" id="itemactions"><div class="ritemactions"><a class="replybutton" href="http://hanif76.multiply.com/music/item/128/New_Music_21"></a></div></div><br clear="left" /><div id="item_hanif76:music:126"><div class="itemboxsub"><table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="icon" width="24"><img alt="Musik" height="24" src="http://images.multiply.com/multiply/icons/clean/24x24/music.png" title="Musik" width="24" /></td><td class="cattitle"><a href="http://hanif76.multiply.com/music/item/126/New_Music_20" rel="bookmark">New Music 20</a></td><td class="itemsubsub"><nobr>Oct 5, '07 8:09 AM</nobr><br />
untuk semuanya</td></tr>
</tbody></table></div><div class="itemshadow"><div class="itembox"><div class="musicwrapper"><table class="musictable"><tbody>
<tr><td><b>AudioTrack 01</b></td><td> </td><td>no title</td><td> </td><td>no artist</td><td> </td></tr>
</tbody></table></div></div></div></div><div class="itemactions" id="itemactions"><div class="ritemactions"><a class="replybutton" href="http://hanif76.multiply.com/music/item/126/New_Music_20"></a></div></div><br clear="left" /><div id="item_hanif76:music:120"><div class="itemboxsub"><table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="icon" width="24"><img alt="Musik" height="24" src="http://images.multiply.com/multiply/icons/clean/24x24/music.png" title="Musik" width="24" /></td><td class="cattitle"><a href="http://hanif76.multiply.com/music/item/120/New_Music_19" rel="bookmark">New Music 19</a></td><td class="itemsubsub"><nobr>Oct 5, '07 7:19 AM</nobr><br />
untuk semuanya</td></tr>
</tbody></table></div><div class="itemshadow"><div class="itembox"><div class="musicwrapper"><table class="musictable"><tbody>
<tr><td><b>Paint My Love</b></td><td> </td><td>m</td><td> </td><td>Michael Learns To Rock</td><td> </td></tr>
<tr><td><b>Michael Learns To Rock - 25 minutes</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Thats Why You Go Away</b></td><td> </td><td>Greatest Hits Paint My Love</td><td> </td><td>Michael Learns To Rock</td><td> </td></tr>
<tr><td><b>Blue Night</b></td><td> </td><td><br />
</td><td> </td><td>Michael Learns To Rock</td><td> </td></tr>
<tr><td><b>SOMEDAY - MICHAEL LEARNS TO ROCK</b></td><td> </td><td><br />
</td><td> </td><td>MICHAEL LEARNS TO ROCK</td><td> </td></tr>
<tr><td><b>Sandaran Hati</b></td><td> </td><td>Truth, Cry and Lie</td><td> </td><td>Letto</td><td> </td></tr>
<tr><td><b>Guns N Roses - Dont Cry</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>November Rain</b></td><td> </td><td>Use Your Illusion I</td><td> </td><td>Guns N' Roses</td><td> </td></tr>
<tr><td><b>Don't Cry</b></td><td> </td><td><br />
</td><td> </td><td>Guns N' Roses</td><td> </td></tr>
<tr><td><b>Guns N Roses - Sweet Child Of Mine</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Welcome to the Jungle</b></td><td> </td><td>Appetite for Destruction</td><td> </td><td>Guns N Roses</td><td> </td></tr>
<tr><td><b>Paradise City</b></td><td> </td><td>Appetite for Destruction</td><td> </td><td>Guns N' Roses</td><td> </td></tr>
<tr><td><b>BBC (Benci Bilang Cinta)</b></td><td> </td><td>Aku Ada Karena Kau Ada</td><td> </td><td>Radja</td><td> </td></tr>
<tr><td><b>Jujur</b></td><td> </td><td>Langkah Baru</td><td> </td><td>RADJA</td><td> </td></tr>
<tr><td><b>Jangan_Sakiti</b></td><td> </td><td>Untuk Semua</td><td> </td><td>Radja</td><td> </td></tr>
<tr><td><b>03 Demi Waktu</b></td><td> </td><td>MELAYANG</td><td> </td><td>U N G U</td><td> </td></tr>
<tr><td><b>04 Terbaik</b></td><td> </td><td>AKU ADA KARENA KAU ADA</td><td> </td><td>RADJA</td><td> </td></tr>
<tr><td><b>Separuh Napas</b></td><td> </td><td>Bintang Lima</td><td> </td><td>Dewa</td><td> </td></tr>
<tr><td><b>Terlalu Manis (Suka2) SLANK</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>65 Bintang Di Surga</b></td><td> </td><td>BINTANG DI SURGA</td><td> </td><td>PETERPAN 2</td><td> </td></tr>
<tr><td><b>Kirana</b></td><td> </td><td><br />
</td><td> </td><td>Dewa 19</td><td> </td></tr>
<tr><td><b>Radja -Tulus</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Suatu Masa</b></td><td> </td><td><br />
</td><td> </td><td>Amy</td><td> </td></tr>
<tr><td><b>Sepi Sekuntum Mawar Merah</b></td><td> </td><td><br />
</td><td> </td><td>Ella</td><td> </td></tr>
<tr><td><b>Bukan Aku Tak Cinta</b></td><td> </td><td><br />
</td><td> </td><td>Iklim</td><td> </td></tr>
<tr><td><b>Suci Dalam Debu</b></td><td> </td><td><br />
</td><td> </td><td>Iklim</td><td> </td></tr>
<tr><td><b>Untuk Mu</b></td><td> </td><td>Flop Poppy</td><td> </td><td>Flop Poppy</td><td> </td></tr>
<tr><td><b>scan-mengapa sukar untuk setia</b></td><td> </td><td><br />
</td><td> </td><td>Scan - Mengapa Sukar Untuk Set</td><td> </td></tr>
<tr><td><b>Iklim - Gerhana Cinta Luka[1]</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Bunga Emas</b></td><td> </td><td>Hits 2004</td><td> </td><td>Iklim</td><td> </td></tr>
<tr><td><b>Sepi Sekuntum Mawar Merah</b></td><td> </td><td><br />
</td><td> </td><td>Ella</td><td> </td></tr>
<tr><td><b>Bayangan</b></td><td> </td><td>El - Edisi Terhad</td><td> </td><td>Ella</td><td> </td></tr>
<tr><td><b>Beautiful</b></td><td> </td><td>Human Clay [Australia Bonus CD] Disc 1</td><td> </td><td>Creed</td><td> </td></tr>
<tr><td><b>My Own Prison</b></td><td> </td><td>My Own Prison</td><td> </td><td>Creed</td><td> </td></tr>
<tr><td><b>Six Feet From the Edge</b></td><td> </td><td>Weathered</td><td> </td><td>Creed</td><td> </td></tr>
<tr><td><b>One Last Breath</b></td><td> </td><td>Weathered</td><td> </td><td>Creed</td><td> </td></tr>
<tr><td><b>12 Stones - The Way I Feel (Cr</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Are You Ready?</b></td><td> </td><td>Human Clay</td><td> </td><td>Creed</td><td> </td></tr>
<tr><td><b>It's Amateur Night At The Appollo Creed</b></td><td> </td><td>While The City Sleeps, We Rule The Streets</td><td> </td><td>Cobra Starship</td><td> </td></tr>
<tr><td><b>Goodbye</b></td><td> </td><td>Now And Forever</td><td> </td><td>Air Supply</td><td> </td></tr>
<tr><td><b>Crawling</b></td><td> </td><td>Hybrid Theory</td><td> </td><td>Linkin Park</td><td> </td></tr>
<tr><td><b>05 Shalawat.mp3</b></td><td> </td><td>SURGAMU</td><td> </td><td>U N G U</td><td> </td></tr>
<tr><td><b>Klaproject - Yogyakarta</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Klaproject - Tak Bisa Ke Lain Hati</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Klaproject - Bahagia Tanpamu</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Kla-kustik - romansa</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Klaproject - Terpurukku Disini</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Aku Mau-http://situskugratis.googlepages.com</b></td><td> </td><td><br />
</td><td> </td><td>Once</td><td> </td></tr>
<tr><td><b>Ari Lasso - misteryilahi</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Ari Lasso - Penjaga Hati</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>08 Kisah Kasih Di Sekolah</b></td><td> </td><td>By Request</td><td> </td><td>Chrisye</td><td> </td></tr>
<tr><td><b>01 peterpan</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Ari Lasso - Ampunilah</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Ari Lasso - Selamat Jalan Mama</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Ari Lasso - Percuma</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Ari Lasso - Jika</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Kembalilah Kasih</b></td><td> </td><td>Peace, Love 'N Respect</td><td> </td><td>Gigi</td><td> </td></tr>
<tr><td><b>Bersalah</b></td><td> </td><td>Rockmantic</td><td> </td><td>Five Minutes</td><td> </td></tr>
<tr><td><b>Masihkah Aku</b></td><td> </td><td>Rockmantic</td><td> </td><td>Five Minutes</td><td> </td></tr>
<tr><td><b>Benarkah Itu</b></td><td> </td><td>Rockmantic</td><td> </td><td>Five Minutes</td><td> </td></tr>
<tr><td><b>Takkan Rela</b></td><td> </td><td>Rockmantic</td><td> </td><td>Five Minutes</td><td> </td></tr>
<tr><td><b>Bidadari</b></td><td> </td><td>Rockmantic</td><td> </td><td>Five Minutes</td><td> </td></tr>
</tbody></table></div></div></div></div><div class="itemactions" id="itemactions"><div class="ritemactions"><a class="replybutton" href="http://hanif76.multiply.com/music/item/120/New_Music_19"></a></div></div><br clear="left" /><div id="item_hanif76:music:114"><div class="itemboxsub"><table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="icon" width="24"><img alt="Musik" height="24" src="http://images.multiply.com/multiply/icons/clean/24x24/music.png" title="Musik" width="24" /></td><td class="cattitle"><a href="http://hanif76.multiply.com/music/item/114/new_musik" rel="bookmark">new musik</a></td><td class="itemsubsub"><nobr>Oct 4, '07 10:53 AM</nobr><br />
untuk semuanya</td></tr>
</tbody></table></div><div class="itemshadow"><div class="itembox"><div class="musicwrapper"><table class="musictable"><tbody>
<tr><td><b>Paint My Love</b></td><td> </td><td>m</td><td> </td><td>Michael Learns To Rock</td><td> </td></tr>
<tr><td><b>Michael Learns To Rock - 25 minutes</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Thats Why You Go Away</b></td><td> </td><td>Greatest Hits Paint My Love</td><td> </td><td>Michael Learns To Rock</td><td> </td></tr>
<tr><td><b>Blue Night</b></td><td> </td><td><br />
</td><td> </td><td>Michael Learns To Rock</td><td> </td></tr>
<tr><td><b>SOMEDAY - MICHAEL LEARNS TO ROCK</b></td><td> </td><td><br />
</td><td> </td><td>MICHAEL LEARNS TO ROCK</td><td> </td></tr>
<tr><td><b>Sandaran Hati</b></td><td> </td><td>Truth, Cry and Lie</td><td> </td><td>Letto</td><td> </td></tr>
<tr><td><b>Guns N Roses - Dont Cry</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>November Rain</b></td><td> </td><td>Use Your Illusion I</td><td> </td><td>Guns N' Roses</td><td> </td></tr>
<tr><td><b>Guns N Roses - Sweet Child Of Mine</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>BBC (Benci Bilang Cinta)</b></td><td> </td><td>Aku Ada Karena Kau Ada</td><td> </td><td>Radja</td><td> </td></tr>
<tr><td><b>Jujur</b></td><td> </td><td>Langkah Baru</td><td> </td><td>RADJA</td><td> </td></tr>
<tr><td><b>Jangan_Sakiti</b></td><td> </td><td>Untuk Semua</td><td> </td><td>Radja</td><td> </td></tr>
<tr><td><b>03 Demi Waktu</b></td><td> </td><td>MELAYANG</td><td> </td><td>U N G U</td><td> </td></tr>
<tr><td><b>04 Terbaik</b></td><td> </td><td>AKU ADA KARENA KAU ADA</td><td> </td><td>RADJA</td><td> </td></tr>
<tr><td><b>Separuh Napas</b></td><td> </td><td>Bintang Lima</td><td> </td><td>Dewa</td><td> </td></tr>
<tr><td><b>Terlalu Manis (Suka2) SLANK</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>65 Bintang Di Surga</b></td><td> </td><td>BINTANG DI SURGA</td><td> </td><td>PETERPAN 2</td><td> </td></tr>
<tr><td><b>Kirana</b></td><td> </td><td><br />
</td><td> </td><td>Dewa 19</td><td> </td></tr>
<tr><td><b>Radja -Tulus</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>03 Track 3</b></td><td> </td><td><br />
</td><td> </td><td>03 Track 3</td><td> </td></tr>
<tr><td><b>Suatu Masa</b></td><td> </td><td><br />
</td><td> </td><td>Amy</td><td> </td></tr>
<tr><td><b>Sepi Sekuntum Mawar Merah</b></td><td> </td><td><br />
</td><td> </td><td>Ella</td><td> </td></tr>
<tr><td><b>Bukan Aku Tak Cinta</b></td><td> </td><td><br />
</td><td> </td><td>Iklim</td><td> </td></tr>
<tr><td><b>Suci Dalam Debu</b></td><td> </td><td><br />
</td><td> </td><td>Iklim</td><td> </td></tr>
<tr><td><b>Untuk Mu</b></td><td> </td><td>Flop Poppy</td><td> </td><td>Flop Poppy</td><td> </td></tr>
<tr><td><b>scan-mengapa sukar untuk setia</b></td><td> </td><td><br />
</td><td> </td><td>Scan - Mengapa Sukar Untuk Set</td><td> </td></tr>
<tr><td><b>Iklim - Gerhana Cinta Luka[1]</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Bunga Emas</b></td><td> </td><td>Hits 2004</td><td> </td><td>Iklim</td><td> </td></tr>
<tr><td><b>Sepi Sekuntum Mawar Merah</b></td><td> </td><td><br />
</td><td> </td><td>Ella</td><td> </td></tr>
<tr><td><b>Bayangan</b></td><td> </td><td>El - Edisi Terhad</td><td> </td><td>Ella</td><td> </td></tr>
<tr><td><b>Beautiful</b></td><td> </td><td>Human Clay [Australia Bonus CD] Disc 1</td><td> </td><td>Creed</td><td> </td></tr>
<tr><td><b>My Own Prison</b></td><td> </td><td>My Own Prison</td><td> </td><td>Creed</td><td> </td></tr>
<tr><td><b>Six Feet From the Edge</b></td><td> </td><td>Weathered</td><td> </td><td>Creed</td><td> </td></tr>
<tr><td><b>One Last Breath</b></td><td> </td><td>Weathered</td><td> </td><td>Creed</td><td> </td></tr>
<tr><td><b>12 Stones - The Way I Feel (Cr</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Are You Ready?</b></td><td> </td><td>Human Clay</td><td> </td><td>Creed</td><td> </td></tr>
<tr><td><b>It's Amateur Night At The Appollo Creed</b></td><td> </td><td>While The City Sleeps, We Rule The Streets</td><td> </td><td>Cobra Starship</td><td> </td></tr>
<tr><td><b>Goodbye</b></td><td> </td><td>Now And Forever</td><td> </td><td>Air Supply</td><td> </td></tr>
<tr><td><b>Crawling</b></td><td> </td><td>Hybrid Theory</td><td> </td><td>Linkin Park</td><td> </td></tr>
<tr><td><b>Sandaran Hati</b></td><td> </td><td>Truth, Cry and Lie</td><td> </td><td>Letto</td><td> </td></tr>
<tr><td><b>Klaproject - Yogyakarta</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Klaproject - Tak Bisa Ke Lain Hati</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Klaproject - Bahagia Tanpamu</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Kla-kustik - romansa</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Klaproject - Terpurukku Disini</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Aku Mau-http://situskugratis.googlepages.com</b></td><td> </td><td><br />
</td><td> </td><td>Once</td><td> </td></tr>
<tr><td><b>Ari Lasso - misteryilahi</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Ari Lasso - Penjaga Hati</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>08 Kisah Kasih Di Sekolah</b></td><td> </td><td>By Request</td><td> </td><td>Chrisye</td><td> </td></tr>
<tr><td><b>01 peterpan</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Ari Lasso - Ampunilah</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Ari Lasso - Selamat Jalan Mama</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Ari Lasso - Percuma</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Ari Lasso - Jika</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Kembalilah Kasih</b></td><td> </td><td>Peace, Love 'N Respect</td><td> </td><td>Gigi</td><td> </td></tr>
</tbody></table></div><div class="relatedlinks"><div class="taglinks"><b>Tag:</b></div></div></div></div></div><div id="item_hanif76:music:103"><div class="itemboxsub"><table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="icon" width="24"><img alt="Musik" height="24" src="http://images.multiply.com/multiply/icons/clean/24x24/music.png" title="Musik" width="24" /></td><td class="cattitle"><a href="http://hanif76.multiply.com/music/item/103/indonesia_2" rel="bookmark">indonesia 2</a></td><td class="itemsubsub"><nobr>Oct 3, '07 8:33 AM</nobr><br />
untuk semuanya</td></tr>
</tbody></table></div><div class="itemshadow"><div class="itembox"><div class="musicwrapper"><table class="musictable"><tbody>
<tr><td><b>BBC (Benci Bilang Cinta)</b></td><td> </td><td>Aku Ada Karena Kau Ada</td><td> </td><td>Radja</td><td> </td></tr>
<tr><td><b>Jujur</b></td><td> </td><td>Langkah Baru</td><td> </td><td>RADJA</td><td> </td></tr>
<tr><td><b>Jangan_Sakiti</b></td><td> </td><td>Untuk Semua</td><td> </td><td>Radja</td><td> </td></tr>
<tr><td><b>03 Demi Waktu</b></td><td> </td><td>MELAYANG</td><td> </td><td>U N G U</td><td> </td></tr>
<tr><td><b>04 Terbaik</b></td><td> </td><td>AKU ADA KARENA KAU ADA</td><td> </td><td>RADJA</td><td> </td></tr>
<tr><td><b>Separuh Napas</b></td><td> </td><td>Bintang Lima</td><td> </td><td>Dewa</td><td> </td></tr>
<tr><td><b>Terlalu Manis (Suka2) SLANK</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>65 Bintang Di Surga</b></td><td> </td><td>BINTANG DI SURGA</td><td> </td><td>PETERPAN 2</td><td> </td></tr>
<tr><td><b>Kirana</b></td><td> </td><td><br />
</td><td> </td><td>Dewa 19</td><td> </td></tr>
<tr><td><b>Radja -Tulus</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Suatu Masa</b></td><td> </td><td><br />
</td><td> </td><td>Amy</td><td> </td></tr>
<tr><td><b>Bukan Aku Tak Cinta</b></td><td> </td><td><br />
</td><td> </td><td>Iklim</td><td> </td></tr>
<tr><td><b>Suci Dalam Debu</b></td><td> </td><td><br />
</td><td> </td><td>Iklim</td><td> </td></tr>
<tr><td><b>scan-mengapa sukar untuk setia</b></td><td> </td><td><br />
</td><td> </td><td>Scan - Mengapa Sukar Untuk Set</td><td> </td></tr>
<tr><td><b>Bayangan</b></td><td> </td><td>El - Edisi Terhad</td><td> </td><td>Ella</td><td> </td></tr>
<tr><td><b>Sandaran Hati</b></td><td> </td><td>Truth, Cry and Lie</td><td> </td><td>Letto</td><td> </td></tr>
<tr><td><b>Klaproject - Yogyakarta</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Klaproject - Tak Bisa Ke Lain Hati</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Klaproject - Bahagia Tanpamu</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Kla-kustik - romansa</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Klaproject - Terpurukku Disini</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Aku Mau-http://situskugratis.googlepages.com</b></td><td> </td><td><br />
</td><td> </td><td>Once</td><td> </td></tr>
<tr><td><b>Ari Lasso - misteryilahi</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>Ari Lasso - Penjaga Hati</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>08 Kisah Kasih Di Sekolah</b></td><td> </td><td>By Request</td><td> </td><td>Chrisye</td><td> </td></tr>
<tr><td><b>01 peterpan</b></td><td> </td><td><br />
</td><td> </td><td><br />
</td><td> </td></tr>
</tbody></table></div></div></div></div><div id="item_hanif76:music:96"><div class="itemboxsub"><table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="icon" width="24"><img alt="Musik" height="24" src="http://images.multiply.com/multiply/icons/clean/24x24/music.png" title="Musik" width="24" /></td><td class="cattitle"><a href="http://hanif76.multiply.com/music/item/96/ramadhan" rel="bookmark">ramadhan</a></td><td class="itemsubsub"><nobr>Sep 14, '07 5:08 AM</nobr><br />
untuk semuanya</td></tr>
</tbody></table></div><div class="itemshadow"><div class="itembox"><div class="musicwrapper"><table class="musictable"><tbody>
<tr><td><b>TAKBIRAN</b></td><td> </td><td>TAKBIRAN</td><td> </td><td>H. NANANG QOSIM</td><td> </td></tr>
<tr><td><b>Takbir (Long Version)</b></td><td> </td><td><br />
</td><td> </td><td>Idul Fitri</td><td> </td></tr>
<tr><td><b>Sandaran Hati</b></td><td> </td><td>Truth, Cry and Lie</td><td> </td><td>Letto</td><td> </td></tr>
<tr><td><b>seasoner, Harapan Ramadhan</b></td><td> </td><td>Koleksi Lagu Raya</td><td> </td><td>069.Raihan & Man Bai</td><td> </td></tr>
<tr><td><b>Haddad & Sulis Sholawat Badar.mp3</b></td><td> </td><td>pilihan</td><td> </td><td><br />
</td><td> </td></tr>
<tr><td><b>05 Shalawat.mp3</b></td><td> </td><td>SURGAMU</td><td> </td><td>U N G U</td><td> </td></tr>
</tbody></table></div></div></div></div><div class="itemactions" id="itemactions"><div class="ritemactions"><br clear="left" /></div></div><br clear="left" /><div id="item_hanif76:music:92"><div class="itemboxsub"><table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="icon" width="24"><img alt="Musik" height="24" src="http://images.multiply.com/multiply/icons/clean/24x24/music.png" title="Musik" width="24" /></td><td class="cattitle"><a href="http://hanif76.multiply.com/music/item/92/baru" rel="bookmark">baru</a></td><td class="itemsubsub"><nobr>Aug 26, '07 3:24 AM</nobr><br />
untuk semuanya</td></tr>
</tbody></table></div><div class="itemshadow"><div class="itembox"><div class="musicwrapper"><table class="musictable"><tbody>
<tr><td><b>Goodbye</b></td><td> </td><td>Now And Forever</td><td> </td><td>Air Supply</td><td> </td></tr>
<tr><td><b>Crawling</b></td><td> </td><td>Hybrid Theory</td><td> </td><td>Linkin Park</td><td> </td></tr>
<tr><td><b>Rimas</b></td><td> </td><td>Fantastik</td><td> </td><td>The Fabulous Cats</td><td> </td></tr>
</tbody></table></div></div></div></div>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-56651380319578094372011-06-30T20:49:00.000-07:002011-06-30T20:49:48.470-07:00Fungsi Robot di Masa Depan<h2>Fungsi Robot di Masa Depan</h2><div class="icn-bm "><div class="icn-sh"> <span class="st_facebook"><span class="stButton" style="color: black; cursor: pointer; display: inline-block; text-decoration: none;"><span class="chicklets facebook"> </span></span></span><span class="st_twitter"><span class="stButton" style="color: black; cursor: pointer; display: inline-block; text-decoration: none;"><span class="chicklets twitter"> </span></span></span><span class="st_email"><span class="stButton" style="color: black; cursor: pointer; display: inline-block; text-decoration: none;"><span class="chicklets email"> </span></span></span><span class="st_gbuzz"><span class="stButton" style="color: black; cursor: pointer; display: inline-block; text-decoration: none;"><span class="chicklets gbuzz"> </span></span></span><span class="st_ybuzz"><span class="stButton" style="color: black; cursor: pointer; display: inline-block; text-decoration: none;"><span class="chicklets ybuzz"> </span></span></span><span class="st_sharethis"><span class="stButton" style="color: black; cursor: pointer; display: inline-block; text-decoration: none;"><span class="chicklets sharethis"> </span></span></span></div></div><div class="fb-like" style="clear: none;"><h4>Do you like this story?</h4></div>Fungsi robot semakin hari semakin mengambil alih fungsi seorang manusia. Beberapa waktu yang lalu kita dihebohkan oleh fungsi seorang robot seks yang bisa diajak untuk bercinta dengan manusia. Memang kalau dipikir-pikir, perkembangan teknologi bisa membahayakan manusia maupun bisa membantu manusia.<br />
Foto-foto dibawah ini adalah penampakan fungsi-fungsi robot yang akan menggantikan manusia di jaman yang akan datang. Robot-robot ini bahkan menjadi teman manusia di rumah, di kantor, dan sebagainya. Akan kah ini terjadi pada jaman atau generasi kita? Mudah-mudah jangan dulu ya, karena kita masih belum siap untuk itu.<br />
<strong><br />
Semakin banyak nya fungsi manusia yang akan diambil alih oleh para robot, maka dikhawatirkan manusia lama-lama akan dimusnahkan oleh para robot ini.</strong><br />
<div style="margin: 5px 20px 20px;"><div class="smallfont" style="margin-bottom: 2px;"><strong>Spoiler</strong> for <em>robot2nya gan</em>:<br />
</div><div class="alt2" style="border: 1px inset; margin: 0px; padding: 6px;"><div><img alt="" border="0" src="http://www.chilloutpoint.com/images/2009/09/human-and-robots-visions-of-the-future/human-vs-robot-11.jpg" width="500" /></div></div></div><div style="margin: 5px 20px 20px;"><div class="smallfont" style="margin-bottom: 2px;"><strong>Spoiler</strong> for <em>robot2nya gan</em>:<br />
</div><div class="alt2" style="border: 1px inset; margin: 0px; padding: 6px;"><div>Kira2 yang ini buat apa ya gan..<img alt="" border="0" class="inlineimg" src="http://www.kaskus.us/images/smilies/mahos.gif" title="Maho (S)" /><br />
<img alt="" border="0" src="http://www.chilloutpoint.com/images/2009/09/human-and-robots-visions-of-the-future/human-vs-robot-14.jpg" width="500" /></div></div></div><div style="margin: 5px 20px 20px;"><div class="smallfont" style="margin-bottom: 2px;"><strong>Spoiler</strong> for <em>robot2nya gan</em>:<br />
</div><div class="alt2" style="border: 1px inset; margin: 0px; padding: 6px;"><div><img alt="" border="0" src="http://www.chilloutpoint.com/images/2009/09/human-and-robots-visions-of-the-future/human-vs-robot-04.jpg" width="500" /><br />
lagi dibengkel gan..<img alt="" border="0" class="inlineimg" src="http://www.kaskus.us/images/smilies/sumbangan/8.gif" title="Hammer" /></div></div></div><div style="margin: 5px 20px 20px;"><div class="smallfont" style="margin-bottom: 2px;"><strong>Spoiler</strong> for <em>robot2nya gan</em>:<br />
</div><div class="alt2" style="border: 1px inset; margin: 0px; padding: 6px;"><div>yang ini robot striptis gan..<img alt="" border="0" class="inlineimg" src="http://www.kaskus.us/images/smilies/ngakaks.gif" title="Ngakak (S)" /> <img alt="" border="0" class="inlineimg" src="http://www.kaskus.us/images/smilies/ngakaks.gif" title="Ngakak (S)" /><br />
</div></div></div><div style="margin: 5px 20px 20px;"><div class="smallfont" style="margin-bottom: 2px;"><strong>Spoiler</strong> for <em>robot2nya gan</em>:<br />
</div><div class="alt2" style="border: 1px inset; margin: 0px; padding: 6px;"><div>No komeng ane gan..<img alt="" border="0" class="inlineimg" src="http://www.kaskus.us/images/smilies/najis.gif" title="Najis" /><br />
<br />
<br />
</div></div></div><div style="margin: 5px 20px 20px;"><div class="smallfont" style="margin-bottom: 2px;"><strong>Spoiler</strong> for <em>robot2nya gan</em>:<br />
</div><div class="alt2" style="border: 1px inset; margin: 0px; padding: 6px;"><div><img alt="" border="0" src="http://www.chilloutpoint.com/images/2009/09/human-and-robots-visions-of-the-future/human-vs-robot-13.jpg" width="500" /></div></div></div><div style="margin: 5px 20px 20px;"><div class="smallfont" style="margin-bottom: 2px;"><strong>Spoiler</strong> for <em>robot2nya gan</em>:<br />
</div><div class="alt2" style="border: 1px inset; margin: 0px; padding: 6px;"><div><img alt="" border="0" src="http://www.chilloutpoint.com/images/2009/09/human-and-robots-visions-of-the-future/human-vs-robot-09.jpg" width="500" /></div></div></div><div style="margin: 5px 20px 20px;"><div class="smallfont" style="margin-bottom: 2px;"><strong>Spoiler</strong> for <em>robot2nya gan</em>:<br />
</div><div class="alt2" style="border: 1px inset; margin: 0px; padding: 6px;"><div><img alt="" border="0" src="http://www.chilloutpoint.com/images/2009/09/human-and-robots-visions-of-the-future/human-vs-robot-08.jpg" width="500" /></div></div></div>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-66223409799830665162011-06-23T20:56:00.001-07:002011-06-23T20:56:48.301-07:00Robot di Pabrik Mobil<div class="attachment"><a href="http://cdn.requestartikel.com/wp-content/uploads/2010/10/Robot-di-Pabrik-Mobil.jpg" title="Robot di Pabrik Mobil"><img alt="Robot di Pabrik Mobil" class="attachment-medium" height="237" src="http://cdn.requestartikel.com/wp-content/uploads/2010/10/Robot-di-Pabrik-Mobil-300x237.jpg" title="Robot di Pabrik Mobil" width="300" /></a></div>Banyak robot juga mempunyai kemampuan sentuhan, kesanggupan mengumpulkan dan menjawab informasi yang terkumpul melalui tangan si robot. Walaupun tenth saja robot tidak sebaik kemampuan manusia, tangan robot dapat membuat penyesuaian sebagai respons terhadap sesuatu yang disentuhnya. Misalnya, robot dapat memutar skrup atau mur sampai pada tingkat kekencangan yang tepat. Robot dapat juga menyesuaikan pegangannya bila tidak memegang sesuatu dengan tepat.Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-60681154909041188212011-06-23T20:23:00.000-07:002011-06-23T20:23:32.609-07:00Software circuit WizardSofware ini merupakan salah satu sofware untuk merancang desain elektronik dengan cara penggunanaan yang sangat simple, untuk lebih lanjut anda dapat mendapatkannya pada link dibawah ini :<br />
<a href="http://www.4shared.com/file/4h_j0Kxd/CktWiz.html">Download </a>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-49920667832635397902011-06-23T02:46:00.000-07:002011-06-23T02:46:53.731-07:00Beethoven Music<div class="MsoNormal" style="color: #ccffff; text-align: justify;"><span style="color: red;"><strong><span style="color: blue;">SEMUA FILE DOWNLOAD VIA ” ZIDDU ” – BILA INGIN MEMPERCEPAT DOWNLOAD BUATLAH ACCOUNT ZIDDU GRATIS, DAFTAR</span> <a href="http://syadiashare.com/goto/http://www.ziddu.com/register.php?referralid=%28y2N[Xu2bh" rel="nofollow" target="_blank" title="DAFTAR ZIDDU">KLIK DISINI</a> <span style="color: blue;">ACCOUNT ANDA BISA DIPAKAI MENDOWNLOAD DISELURUH WEBSITE YANG DIDUKUNG OLEH ZIDDU.</span></strong></span></div><ul><li><a href="http://syadiashare.com/goto/http://www.ziddu.com/download/3142653/BEETHOVENFORBABY01.rar.html" rel="nofollow" target="_blank">Beethoven 1</a></li>
<li><a href="http://syadiashare.com/goto/http://www.ziddu.com/download/3142769/BEETHOVENFORBABY02.rar.html" rel="nofollow" target="_blank">Beethoven 2</a></li>
<li><a href="http://syadiashare.com/goto/http://www.ziddu.com/download/3204297/BEETHOVENFORBABY03.rar.html" rel="nofollow" target="_blank">Beethoven 3</a></li>
<li><a href="http://syadiashare.com/goto/http://www.ziddu.com/download/3221840/BEETHOVENFORBABY04.rar.html" rel="nofollow" target="_blank">Beethoven 4</a></li>
<li><a href="http://syadiashare.com/goto/http://www.ziddu.com/download/3225247/BEETHOVENFORBABY05.rar.html" rel="nofollow" target="_blank">Beethoven 5</a></li>
<li><a href="http://syadiashare.com/goto/http://www.ziddu.com/download/3225497/BEETHOVENFORBABY06.rar.html" rel="nofollow" target="_blank">Beethoven 6</a></li>
<li><a href="http://syadiashare.com/goto/http://www.ziddu.com/download/3253802/BEETHOVENFORBABY07.rar.html" rel="nofollow" target="_blank">Beethoven 7</a></li>
<li><a href="http://syadiashare.com/goto/http://www.ziddu.com/download/3319341/BEETHOVENFORBABY08.rar.html" rel="nofollow" target="_blank">Beethoven 8</a></li>
<li><a href="http://syadiashare.com/goto/http://www.ziddu.com/download/3319445/BEETHOVENFORBABY09.rar.html" rel="nofollow" target="_blank">Beethoven 9</a></li>
<li><a href="http://syadiashare.com/goto/http://www.ziddu.com/download/3244641/BEETHOVENFORBABY10.rar.html" rel="nofollow" target="_blank">Beethoven 10</a></li>
</ul>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-469916954954938492011-06-23T02:28:00.000-07:002011-06-23T02:28:21.595-07:00Control System Specifics<h2>Control System Specifics</h2>Pick a year...any year... <br />
<br />
<table align="center" border="0" cellpadding="3" cellspacing="0"><tbody>
<tr align="left"> <td rowspan="3" width="30%"> <br />
<a href="http://team358.org/files/programming/ControlSystem2009-" title="<i>FIRST</i> Control System 2009-"> <img alt="2009 <i>FIRST</i> RC" src="http://team358.org/files/programming/2009cRIO.jpg" /></a> <br />
<a href="http://team358.org/files/programming/ControlSystem2009-" title="<i>FIRST</i> Control System 2009-"><b>FRC Control System 2009-present</b></a> <br />
<br />
<br />
<a href="http://team358.org/files/programming/ControlSystem1997-1999" title="<i>FIRST</i> Control System 1997-1999"> <img alt="1997 <i>FIRST</i> RC" src="http://team358.org/files/programming/ControlSystem1997-1999/sm_1999-RobotReceiver.jpg" /></a> <br />
<a href="http://team358.org/files/programming/ControlSystem1997-1999" title="<i>FIRST</i> Control System 1997-1999"><b>FRC Control System 1997-1999</b></a> </td> <td> <br />
<a href="http://team358.org/files/programming/ControlSystem2004-2008" title="<i>FIRST</i> Control System 2004-2008"> <img alt="2004 <i>FIRST</i> RC" src="http://team358.org/files/programming/2004RC.gif" /></a> <br />
<a href="http://team358.org/files/programming/ControlSystem2004-2008" title="<i>FIRST</i> Control System 2004-2008"><b>FRC Control System 2004-2008</b></a> <br />
<br />
<br />
<a href="http://team358.org/files/programming/ControlSystem1996" title="<i>FIRST</i> Control System 1995-1996"> <img alt="1996 <i>FIRST</i> RC" src="http://team358.org/files/programming/ControlSystem1996/sm_FRC1996ControlSystem.jpg" /></a> <br />
<a href="http://team358.org/files/programming/ControlSystem1996" title="<i>FIRST</i> Control System 1995-1996"><b>FRC Control System 1995-1996</b></a> </td> <td> <br />
<a href="http://team358.org/files/programming/ControlSystem2001-2003" title="<i>FIRST</i> Control System 2000-2003"> <img alt="2001 <i>FIRST</i> RC" src="http://team358.org/files/programming/med_2003RC.jpg" /></a> <br />
<a href="http://team358.org/files/programming/ControlSystem2001-2003" title="<i>FIRST</i> Control System 2000-2003"><b>FRC Control System 2000-2003</b></a> <br />
<br />
<br />
<a href="http://team358.org/files/programming/ControlSystem1993" title="<i>FIRST</i> Control System 1993-1994"> <img alt="1993 <i>FIRST</i> RC" src="http://team358.org/files/programming/ControlSystem1993/sm_1993TermiflexController.jpg" /></a> <br />
<a href="http://team358.org/files/programming/ControlSystem1993" title="<i>FIRST</i> Control System 1993-1994"><b>FRC Control System 1993-1994</b></a> </td> </tr>
</tbody></table><br />
<br />
<br />
<a href="http://team358.org/files/programming/ControlSystem1992" title="<i>FIRST</i> Control System 1992"> <img alt="1992 <i>FIRST</i> RC" src="http://team358.org/files/programming/ControlSystem1992/sm_1992ControlDiagram.jpg" /></a> <br />
<a href="http://team358.org/files/programming/ControlSystem1992" title="<i>FIRST</i> Control System 1992"><b>FRC Control System 1992</b></a> <br />
<br />
<br />
Prior to 2000 the <i>FIRST</i> control systems were loaned to the teams only for the duration of the competition season and had to be returned after the last competition. In 1992 the robots ran tethered to the operator controls. In 1994 the system was a wireless one made by Motorola and had 6 control channels, each of which was Forward/Stop/Reverse. The <i>FIRST</i> IFI control system appeared in 1999, but had to be returned to <i>FIRST</i> at the end of the competition season. In 2000 teams got to keep their control systems and the off-season events were born. <br />
<br />
<br />
The <i>FIRST</i> Robotics Competition (FRC) control system has several smaller, mini-robot cousins designed and manufactured by Innovation <i>FIRST</i> Inc. (IFI). These can be used to develop software that ports quite easily to the full-sized robot controller and to prototype simple mechanical design concepts. The Vex system is the basis for a robotics competition all it's own. <br />
<br />
<br />
<a href="http://team358.org/files/programming/edu_vex/indexVex.php" title="Vex 2006-2008"> <img alt="Vex" src="http://team358.org/files/programming/Vex_micro-controller.gif" /></a> <br />
<a href="http://team358.org/files/programming/edu_vex/indexVex.php" title="Vex 2006-2008"><b>Vex 2006-2008</b></a> <br />
Compatable with the full-size FRC control systems from 2004-2008 <br />
<br />
<br />
<a href="http://team358.org/files/programming/edu_vex/indexEdu.php" title="Edu 2004-2005"> <img alt="Edu or Robovation" src="http://team358.org/files/programming/sm_Edu_micro-controller.jpg" /></a> <br />
<a href="http://team358.org/files/programming/edu_vex/indexEdu.php" title="Edu 2004-2005 PIC version"><b>Edu 2003-2005 PIC version</b></a> <br />
Compatable with the full-size FRC control systems from 2004-2008 <br />
<br />
<br />
<a href="http://team358.org/files/programming/edu_vex/indexEdu.php" title="Isaac 16 Edu 2003"> <img alt="Isaac 16 Edu" src="http://team358.org/files/programming/sm_EDU_2003_mini-Controller.jpg" /></a> <br />
<a href="http://team358.org/files/programming/edu_vex/indexEdu.php" title="Isaac 16 Edu 2003 pBasic version"><b>Isaac 16 Edu 2003 pBasic version</b></a> <br />
Compatable with the full-size FRC control systems from 2000-2003 <br />
<br />
<a href="http://team358.org/files/programming/Edu-Vex-FRC_Comparison.doc" title="Edu-Vex-FRC Comparison 2000-2008">Edu-Vex-FRC Specs Comparison 2000-2008 </a> <br />
<br />
<br />
<br />
<h2>Generic Algorithms, Sensor Specifics, General Examples, Topics of Interest</h2><br />
<br />
<h3>PID Control Theory</h3>"One of the more difficult programming problems to solve in <i>FIRST</i> robotics is accurate control of systems. For example in the 2006 Game ("Aim High") robots used a low-resolution digital camera with a serial output to track a green light. A series of globally accessible variables allowed the robot program to access the results of that tracking while processing. Now here’s where control theory comes in, in order to target the goal with a shooter mechanism we need some way to get it there. Many people recommend PID and this paper goes over the basic math and principles behind using it. It’s meant to be a general overview to help you to develop your own PID control programming." <br />
<a href="http://team358.org/files/programming/PIDControlTheory_rev3.pdf" target="_blank" title="PID Control Theory">PID Control Theory Rev. 3</a> (<img alt="Adobe PDF" src="http://team358.org/files/icons/adobe_pdf.gif" />, 38.6 KB) <br />
<br />
<br />
<h3>Gyroscope Programming</h3>One of the more common sensors in <i>FIRST</i> Robotics is the Gyro, also known as a Gyroscope, Angular Rate Sensor, and Yaw Rate Sensor. The uses for them are plentiful, from detecting tipping, to making accurate turns, to driving in a straight line. <br />
<a href="http://team358.org/files/programming/GyroProgrammingforFRCRobots.pdf" target="_blank" title="Gyro Programming for FRC Robots">Gyro Programming for FRC Robots <i>Draft</i></a> (<img alt="Adobe PDF" src="http://team358.org/files/icons/adobe_pdf.gif" />, 55.2 KB) <br />
<br />
<br />
<h3>Integer Math</h3>The <i>FIRST</i> Robotics Competition robot controllers up through 2008, as well as, the Vex and Edu mini-robot controllers do not have floating-point processors, so all math is performed as interger math. Floating-point values, e.g., 3.14159, can be used, but what really happens behind the scenes is the compiler includes software that computes real numbers using integer math. That means integer math is much more efficient (many times faster) than floating point math. <br />
Integer math has it's pitfalls that you should be aware of. <br />
<a href="http://team358.org/files/programming/Integer%20Math%20Lesson.doc" target="_blank" title="Integer Math Lesson for FRC Robots">Integer Math for FRC Robots </a> (<img alt="Microsoft Word" src="http://team358.org/files/icons/WordIcon2.gif" />, 44 KB) <br />
<br />
<br />
<h3>Lookup Tables</h3>Lookup tables are simple ways to take advantage of a table of data, so the data can be easily used in calculations. Examples include complex functions that can be reduced to a table for quick and easy reference, such as, sine/cosine values or points describing an ellipse or complex curve. It could also be a simple table of indexes into some database or something similar. Just for purposes of explanation a lookup table to convert a joystick that a driver is moving to change the robot motor response is shown. This particular example also touches on adjusting the drive table to match the characteristics of the Victor 884 sprrd controller. <br />
<a href="http://team358.org/files/programming/ProgrammingBasics-LookupTables.doc" target="_blank" title="Programming Basics-Lookup Tables for FRC Robots">Lookup Tables for FRC Robots </a> (<img alt="Microsoft Word" src="http://team358.org/files/icons/WordIcon2.gif" />, 122 KB) <br />
<br />
<br />
<h3>Control Buttons</h3>Not the kind you wear, but the ones the driver pushes, and I don't mean knowing how to press your teacher's buttons either. A pretty simple topic, so simple most people don't think much about it. Tell me though how does a button work in code? How do you make a button toggle on/off or act like a deadman switch and only react when you let go of a trigger? <br />
<a href="http://team358.org/files/programming/ProgrammingBasics-ButtonAction.doc" target="_blank" title="Programming Basics-Buttons for FRC Robots">Pressing Buttons on an FRC Robot </a> (<img alt="Microsoft Word" src="http://team358.org/files/icons/WordIcon2.gif" />, 45 KB) <br />
<br />
<br />
<h3>Rangefinders</h3>Okay, so you have a rangefinder – ultrasonic, IR, whatever – what do you do with it? Let’s say you already have your rangefinder hooked up and you’re getting readings from it. You can tell something is in front of you and how far away it is to the inch. Now what? Who is your robot going to tell? What can your code do with that? Here's a brief practical application or two for rangefinders. <br />
<a href="http://team358.org/files/programming/PracticalApplications-Rangefinder.doc" target="_blank" title="Practical Applications-Rangefinder for FRC Robots">Practical Applications-Rangefinders for FRC Robot </a> (<img alt="Microsoft Word" src="http://team358.org/files/icons/WordIcon2.gif" />, 178 KB) <br />
<br />
<br />
<br />
<h2><a href="http://www.team358.org/files/workshops/" title="<i>FIRST</i> Programming Workshops">Programming Workshops</a></h2><br />
<br />
<h2>ChiefDelphi Whitepapers:</h2><br />
<a href="http://www.chiefdelphi.com/media/search/papers" target="_blank" title="ChiefDelphi Whitepapers">Search for keyword "Programming"</a> <br />
<br />
<br />
<br />
<br />
<h2>Suggested References & Reading:</h2><ul><li>The C Programming Language, Brian Kernighan & Dennis Ritchie </li>
<li>The C Answer Book, Clovis Tondo & Scott Gimpel (a companion to the above book with solutions to the exercises in that book)) </li>
<li>Programming Robot Controllers (Robot DNA Series) by Myke Predko </li>
<li>Robot Programming : A Practical Guide to Behavior-Based Robotics by Joe Jones, Daniel Roth </li>
<li>Physical Computing -- Dan O'Sullivan & Tom Igoe, Thomson Course Technology, 2004 </li>
</ul>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0tag:blogger.com,1999:blog-1767158636814948495.post-56476052657917514282011-06-23T02:19:00.000-07:002011-06-23T02:19:48.161-07:00Kontrol Dasar Metode<span style="font-family: bookman old style,times new roman,times;"></span><br />
<h1><span style="font-family: bookman old style,times new roman,times;"><span style="color: #3333cc;"><a href="" name="SECTION001700000000000000000">Robot Control</a> </span></span></h1><span style="font-family: bookman old style,times new roman,times;"> <a href="" name="9037"> </a> <a href="" name="chap-control"> </a> <br />
The most common kind of robot failure is not mechanical or electronic failure but rather failure of the software that controls the robot. For example, if a robot were to run into a wall, and its front touch sensor did not trigger, the robot would become stuck (unless the robot is a tank), trying to drive through the wall. This robot is not physically stuck, but it is "mentally stuck": its control program does not account for this situation and does not provide a way for the robot to get free. Many robots fail in this way. This chapter will discuss some of the problems typically encountered when using robot sensors, and present a framework for thinking about control that may assist in preventing control failure of ELEC 201 robots. <br />
<br />
A few words of advice: most people severely underestimate the amount of time that is necessary to write control software. A program can be hacked together in a couple nights, but if a robot is to be able to deal with a spectrum of situations in a capable way, more work will be required. <br />
Also, it is very difficult to be developing final software while still making hardware changes. Any hardware change will necessitate software changes. Some of these changes may be obvious but others will not. The message is to finalize mechanical and sensor design early enough to develop software based upon a stable hardware platform. <br />
<h1><span style="color: #3333cc;"><a href="" name="SECTION001710000000000000000">Basic Control Methods</a> </span></h1><h2><span style="color: #009933;"><a href="" name="SECTION001711000000000000000">Feedback Control</a> <a href="" name="Feedback Control"></a></span></h2><a href="" name="9045"> </a><a href="" name="9349"> </a> <br />
<br />
</span><br />
<div align="CENTER"><span style="font-family: bookman old style,times new roman,times;"><a href="" name="fig-edge"></a> <a href="" name="9050"> </a> <br />
</span><table><caption><strong>Figure 11.1:</strong> Driving along a Wall Edge</caption> <tbody>
<tr> <td><span style="font-family: bookman old style,times new roman,times;"><img alt="\begin{figure}
\fbox {\centerline{\psfig{figure=control/edge.PS}}}\end{figure}" height="325" src="http://www.clear.rice.edu/elec201/Book/images/img173.gif" width="567" /></span></td> </tr>
</tbody></table></div><span style="font-family: bookman old style,times new roman,times;"> <br />
<br />
Suppose the robot should be programmed to drive with its left side near a wall, following the wall edge (see Figure <a href="http://www.clear.rice.edu/elec201/Book/control.html#fig-edge">11.1</a>). Several options exist to accomplish this task: <br />
One solution is to orient the robot exactly parallel to the wall, then drive it straight ahead. However, this simple solution has two problems: if the robot is not initially oriented properly, it will fail. Also, unless the robot were extremely proficient at driving straight, it will eventually veer from its path and drive either into the wall or into the game board. <br />
The common and effective solution is to build a negative feedback loop. With continuous monitoring and correction, a goal state (in this case, maintaining a constant distance from a wall) can be achieved. <br />
<br />
<br />
</span><div align="CENTER"><span style="font-family: bookman old style,times new roman,times;"><a href="" name="fig-twohall"></a> <a href="" name="9057"> </a> <br />
</span><table><caption><strong>Figure 11.2:</strong> Using Two Hall Effect Sensors to Follow Wall</caption> <tbody>
<tr> <td><span style="font-family: bookman old style,times new roman,times;"><img alt="\begin{figure}
\fbox {\centerline{\psfig{figure=control/ABedge.PS}}}\end{figure}" height="533" src="http://www.clear.rice.edu/elec201/Book/images/img174.gif" width="567" /></span></td> </tr>
</tbody></table></div><span style="font-family: bookman old style,times new roman,times;"> <br />
<br />
Several of the sensors provided in the ELEC 201 kit can be used to control the distance between the robot and the wall. For example, two Hall effect sensors could be mounted to the robot as shown in Figure <a href="http://www.clear.rice.edu/elec201/Book/control.html#fig-twohall">11.2</a>. In this example the wall contains a magnetic strip (as is sometimes the case on the ELEC 201 game board). The two magnetic sensors are mounted on the robot as shown. Since the <b>A</b> sensor is closer to the wall, it will trigger first as the robot moves toward the wall, followed by <b>B</b> if the robot continues to move toward the wall. As the robot moves away from the wall, <b>B</b> will release first, followed by <b>A</b> if the robot continues to move away from the wall. A decision process making use of this information is depicted in Figure <a href="http://www.clear.rice.edu/elec201/Book/control.html#fig-AB">11.3</a>. <br />
<br />
</span><div align="CENTER"><span style="font-family: bookman old style,times new roman,times;"><a href="" name="fig-AB"></a> <a href="" name="9077"> </a> <br />
</span><table><caption><strong>Figure 11.3:</strong> Control Process With Two Hall Effect Sensors</caption> <tbody>
<tr> <td><span style="font-family: bookman old style,times new roman,times;"><img alt="\begin{figure}
\begin{center}
\begin{tabular}
{\vert c\vert c\vert c\vert}\hline...
...or\\ \hline
off & off & too far \\ \hline\end{tabular}\end{center}\end{figure}" height="122" src="http://www.clear.rice.edu/elec201/Book/images/img175.gif" width="195" /></span></td> </tr>
</tbody></table></div><span style="font-family: bookman old style,times new roman,times;"> <br />
Notice that the situation with <b>A</b> off and <b>B</b> on is indicative of some failure of the sensor or its mounting. <br />
<br />
<br />
</span><div align="CENTER"><span style="font-family: bookman old style,times new roman,times;"><a href="" name="fig-bendwall"></a> <a href="" name="9084"> </a> <br />
</span><table><caption><strong>Figure 11.4:</strong> Using a Proximity Sensor to Measure Distance to a Wall</caption> <tbody>
<tr> <td><span style="font-family: bookman old style,times new roman,times;"><img alt="\begin{figure}
\fbox {\centerline{\psfig{figure=control/proxwall.ps}}}\end{figure}" height="232" src="http://www.clear.rice.edu/elec201/Book/images/img176.gif" width="567" /></span></td> </tr>
</tbody></table></div><span style="font-family: bookman old style,times new roman,times;"> <br />
<br />
Other sensors provided in the ELEC 201 kit can be used to measure the distance between the robot and the wall (see Figure <a href="http://www.clear.rice.edu/elec201/Book/control.html#fig-bendwall">11.4</a>). For example, a magnetic field intensity sensor can be used if the wall contains a magnetic strip. In this case the magnetic field sensor would produce a higher value as the robot got closer to the wall. A light source/photocell<a href="" name="9089"> </a>pair could also be used. In this case the light source (shielded from stray light, perhaps by a cardboard tube) would be aimed at the wall, and the photocell (also shielded from stray light) would produce a value proportional to the distance from a reflective wall. A <a href="" name="9091"> </a>"bend" sensor could also be used, although the ELEC 201 kit does not contain any of these useful sensors. In this case, the shorter the distance, the more the bend sensor is bent (see explanation of bend sensors). <br />
Suppose a function were written using the two <a href="" name="9094"> </a>Hall effect sensors to discern four states: <tt>TOO_CLOSE</tt>, <tt>TOO_FAR</tt>, <tt>JUST_RIGHT</tt> (from the wall), and <tt>SENSOR_ERROR</tt>. Here is a possible definition of the function, called <tt>wall_distance()</tt>: <br />
<small> </small></span><pre><small>
int TOO_CLOSE= -1;
int JUST_RIGHT= 0;
int TOO_FAR= 1;
int SENSOR_ERROR= -99;
int wall_distance()
{
/* get reading on A & B sensors */
int A_value= digital(A_SENSOR);
int B_value= digital(B_SENSOR);
/* assume "ON" means the sensor reads zero */
if ((A_value == 0) && (B_value == 0)) return TOO_CLOSE;
if ((A_value == 0) && (B_value == 1)) return JUST_RIGHT;
if ((A_value == 1) && (B_value == 0)) return SENSOR_ERROR;
/* if ((A_value == 1) && (B_value == 1)) */ return TOO_FAR;
}
</small> </pre><span style="font-family: bookman old style,times new roman,times;"> Suppose instead a function were written using a proximity sensor to discern the three states: <tt>TOO_CLOSE</tt>, <tt>TOO_FAR</tt>, and <tt>JUST_RIGHT</tt>. Here is a possible definition of this function, called <tt>wall_dist_prox()</tt>: <br />
<small> </small></span><pre><small>
int TOO_CLOSE= -1;
int JUST_RIGHT= 0;
int TOO_FAR= 1;
int TOO_CLOSE_THRESHOLD= 50; /* Embedding threshold constants in this */
int TOO_FAR_THRESHOLD= 150; /* manner in a real program is not good */
/* programming practice. Instead, they */
/* should be placed in a separate file. */
int wall_dist_prox()
{
/* get reading on proximity sensor */
int prox_value= analog(PROXIMITY_SENSOR);
/* assume smaller values mean closer to wall */
if (prox_value < TOO_CLOSE_THRESHOLD) return TOO_CLOSE;
if (prox_value > TOO_FAR_THRESHOLD) return TOO_FAR;
return JUST_RIGHT;
}
</small> </pre><span style="font-family: bookman old style,times new roman,times;"> Now, a function to drive the robot making use of the <tt>wall_distance()</tt> function would create the feedback. In this example, the functions <tt>veer_away_from_wall()</tt>, <tt>veer_toward_wall()</tt>, and <tt>drive_straight()</tt> are used to actually move the robot, as shown in Figure <a href="http://www.clear.rice.edu/elec201/Book/control.html#pgm-folwall">11.5</a>. <br />
<br />
<br />
</span><div align="CENTER"><span style="font-family: bookman old style,times new roman,times;"><a href="" name="pgm-folwall"></a> <a href="" name="9114"> </a> <br />
</span><table><caption><strong>Figure 11.5:</strong> Wall-Following Function</caption> <tbody>
<tr> <td><span style="font-family: bookman old style,times new roman,times;"><img alt="\begin{figure}
{\small
\addtolength {\baselineskip}{-.2\baselineskip}
\begin{v...
...AR) veer_toward_wall();
else drive_straight();
}
}\end{verbatim}}\end{figure}" height="187" src="http://www.clear.rice.edu/elec201/Book/images/img177.gif" width="492" /></span></td> </tr>
</tbody></table></div><span style="font-family: bookman old style,times new roman,times;"> <br />
<br />
Even if the function to drive the robot straight were not exact (maybe one of the robot's wheels performs better than the other), this function should still accomplish its goal. Suppose the "drive straigh" routine actually veered a bit toward the wall. Then after driving straight for a bit, the "follow wall" routine would notice that the robot was too close to the wall, and execute the "veer away" function. <br />
The actual performance of this algorithm would be influenced by many things, including: <br />
</span><table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td valign="baseline" width="42"><img height="20" hspace="11" src="http://www.clear.rice.edu/elec201/Book/_themes/blocks/blobul1e.gif" width="20" /></td><td valign="top" width="100%"><span style="font-family: bookman old style,times new roman,times;">How sharply the "veer away" and "veer toward" functions made the robot turn.</span></td></tr>
<tr><td valign="baseline" width="42"><img height="20" hspace="11" src="http://www.clear.rice.edu/elec201/Book/_themes/blocks/blobul1e.gif" width="20" /></td><td valign="top" width="100%"><span style="font-family: bookman old style,times new roman,times;">The accuracy of the Hall effect switching thresholds, or how well the proximity sensors measured the distance to the wall.</span></td></tr>
<tr><td valign="baseline" width="42"><img height="20" hspace="11" src="http://www.clear.rice.edu/elec201/Book/_themes/blocks/blobul1e.gif" width="20" /></td><td valign="top" width="100%"><span style="font-family: bookman old style,times new roman,times;">For proximity sensors, the settings of the <tt>TOO_CLOSE_THRESHOLD</tt> and <tt>TOO_FAR_THRESHOLD</tt> values.</span></td></tr>
<tr><td valign="baseline" width="42"><img height="20" hspace="11" src="http://www.clear.rice.edu/elec201/Book/_themes/blocks/blobul1e.gif" width="20" /></td><td valign="top" width="100%"><span style="font-family: bookman old style,times new roman,times;">The rate at which the <tt>follow_wall()</tt> function made corrections to the robot's path.</span></td></tr>
</tbody></table><span style="font-family: bookman old style,times new roman,times;"> Still, use of a negative feedback loop ensures basically stable and robust performance, once the parameters are tuned properly.<br />
<small> *The type of feedback just described is called <em>negative</em> feedback because the corrections subtract from the error, making it smaller. With <em>positive </em>feedback, corrections add to the error. Such systems tend to be unstable. </small><br />
<h2><span style="color: #009933;"><a href="" name="SECTION001712000000000000000">Open-Loop Control</a> <a href="" name="Open-Loop Control"></a></span></h2><a href="" name="9131"> </a><a href="" name="9385"> </a> <br />
<br />
<br />
</span><div align="CENTER"><span style="font-family: bookman old style,times new roman,times;"><a href="" name="fig-corner"></a> <a href="" name="9135"> </a> <br />
</span><table><caption><strong>Figure 11.6:</strong> Negotiating a Corner</caption> <tbody>
<tr> <td><span style="font-family: bookman old style,times new roman,times;"><img alt="\begin{figure}
\fbox {\centerline{\psfig{figure=control/corner.PS}}}\end{figure}" height="286" src="http://www.clear.rice.edu/elec201/Book/images/img178.gif" width="567" /></span></td> </tr>
</tbody></table></div><span style="font-family: bookman old style,times new roman,times;"> <br />
<br />
Suppose now the robot has been following the wall, and a touch sensor indicates that it has reached the far edge. The robot needs to turn clockwise ninety degrees to continue following the edge of the wall (see Figure <a href="http://www.clear.rice.edu/elec201/Book/control.html#fig-corner">11.6</a>). How should this be accomplished? <br />
One simple method would be to back up a little and execute a turn command that was timed to accomplish a ninety degree rotation. The following code fragment illustrates this idea: <br />
<small> </small></span><pre><small>
....
robot_backward(); sleep(.25); /* go backward for 1/4 second */
robot_spin_clockwise(); sleep(1.5); /* 1.5 sec = 90 degrees */
....
</small> </pre><span style="font-family: bookman old style,times new roman,times;"> This method will work reliably only when the robot is very predictable. For example, one cannot assume that a turn command of 1.5 seconds will always produce a rotation of 90 degrees. Many factors affect the performance of a timed turn, including the battery strength, traction on the surface, and friction in the geartrain. <br />
This method of using a timed turn is called <em>open-loop control</em> (as compared to <em>closed-loop control</em>) because there is no feedback from the commanded action about its effect on the state of the system. If the command is tuned properly and the system is very predictable, open-loop commands can work fine, but generally closed-loop control is necessary for good performance. <br />
<br />
<br />
</span><div align="CENTER"><span style="font-family: bookman old style,times new roman,times;"><a href="" name="fig-bonk"></a> <a href="" name="9149"> </a> <br />
</span><table><caption><strong>Figure 11.7:</strong> Negotiating a Corner with Touch Sensor Feedback</caption> <tbody>
<tr> <td><span style="font-family: bookman old style,times new roman,times;"><img alt="\begin{figure}
\fbox {\centerline{\psfig{figure=control/bonk.PS}}}\end{figure}" height="199" src="http://www.clear.rice.edu/elec201/Book/images/img179.gif" width="567" /></span></td> </tr>
</tbody></table></div><span style="font-family: bookman old style,times new roman,times;"> <br />
<br />
How could the corner-negotiation action be made into a closed-loop system? One approach is to have the robot make little turns, drive straight ahead, hit the wall, back up, and repeat (see Figure <a href="http://www.clear.rice.edu/elec201/Book/control.html#fig-bonk">11.7</a>), dealing with the corner in a series of little steps. <br />
<h2><span style="color: #009933;"><a href="" name="SECTION001713000000000000000">Feed-Forward Control</a> <a href="" name="Feed-Forward Control"></a></span></h2><a href="" name="9154"> </a><a href="" name="9402"> </a> <br />
There are certain advantages to open-loop control, most notably speed. Clearly a single timed turn would be much faster than a set of small turns, bonks, and back-ups. <br />
One approach when using open-loop control is to use <em>feed-forward</em> control, where the commanded signal is a function of some parameters measured in advance. For the timed turn action, battery strength is probably one of the most significant factors determining the turn's required time. Using feed-forward control, a battery strength measurement would be used to "predict" how much time is needed for the turn. Note that this is still open-loop control -- the feedback is not based on the actual result of a movement command -- but a computation is made to make the control more accurate. <br />
For this example, the battery strength could be measured or estimated based on usage since the last charge. <br />
<h2><span style="color: #009933;"><a href="" name="SECTION001714000000000000000">Summary</a> </span></h2>For the types of activities commonly performed by ELEC 201 robots, feedback control proves very useful in: <br />
</span><table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td valign="baseline" width="42"><img height="20" hspace="11" src="http://www.clear.rice.edu/elec201/Book/_themes/blocks/blobul1e.gif" width="20" /></td><td valign="top" width="100%"><span style="font-family: bookman old style,times new roman,times;"><b>Wall following.</b> As discussed in this section.</span></td></tr>
<tr><td valign="baseline" width="42"><img height="20" hspace="11" src="http://www.clear.rice.edu/elec201/Book/_themes/blocks/blobul1e.gif" width="20" /></td><td valign="top" width="100%"><span style="font-family: bookman old style,times new roman,times;"><b>Line following.</b> Using one or more reflectance sensors aimed at the surface of the ELEC 201 game board.</span></td></tr>
<tr><td valign="baseline" width="42"><img height="20" hspace="11" src="http://www.clear.rice.edu/elec201/Book/_themes/blocks/blobul1e.gif" width="20" /></td><td valign="top" width="100%"><span style="font-family: bookman old style,times new roman,times;"><b>Infrared tracking.</b> Homing in on a source of infrared light, using the IR sensors.</span></td></tr>
</tbody></table><span style="font-family: bookman old style,times new roman,times;"> Open-loop control should probably be used sparingly and in time-critical applications. Small segments of open-loop actions interspersed between feedback activities should work well. <br />
Feed-forward techniques can enhance the performance of open-loop control when it is used. <br />
<h1><span style="color: #3333cc;"><a href="" name="SECTION001720000000000000000">Sensor Calibration</a> </span></h1><a href="" name="9168"> </a> <br />
<h2><span style="color: #009933;"><a href="" name="SECTION001721000000000000000">Manual Sensor Calibration</a> <a href="" name="Manual Sensor Calibration"></a></span></h2><a href="" name="9170"> </a><a href="" name="9412"> </a> <br />
The function <tt>wall_dist_prox()</tt> (one of the examples in Section <a href="http://www.clear.rice.edu/elec201/Book/control.html#sec-walldist">11.1.1</a>) used threshold variables (<tt> TOO_FAR_THRESHOLD</tt> and <tt>TOO_CLOSE_THRESHOLD</tt>) to interpret the data from the proximity sensor. Depending on the actual reading from the proximity sensors and the settings of these threshold variables, <tt>wall_dist_prox()</tt> determined if the robot was "too close," "too far," or "just the right" distance from the wall. <br />
Proper calibration of these threshold values is necessary for good robot performance. Often it is convenient to write a routine that allows interactive manipulation of the robot's sensors to determine the proper calibration settings. <br />
For a given proximity sensor, a calibration routine could be included that allows placing the sensor a fixed distance from the wall (the <tt>TOO_FAR_THRESHOLD</tt>), and then depression of one of the user buttons. The routine would then "capture" the value of the proximity sensor at that point, and use this value as the appropriate threshold. Similarly, sensors could be placed closer to the wall and then captured as the <tt>TOO_CLOSE_THRESHOLD</tt> value. <br />
Later, the values of these thresholds could be noted when the robot is performing particularly well. These "optimal" settings could be hard-coded as default values. The calibration routine could be kept for use under certain circumstances or if other parameters affecting the robot's performance necessitate readjustment of the calibration settings. <br />
<h2><span style="color: #009933;"><a href="" name="SECTION001722000000000000000">Dealing with Changing Environmental Conditions</a> <a href="" name="Dealing with Changing Environmental Conditions"></a></span></h2>Calibration routines are particularly important when environmental conditions cause fluctuations in sensor values. Two sensor types are strongly affected either by external environmental conditions or by the robot's internal state: <br />
<dl><dt><strong>Light Sensors.</strong> </dt>
<dd>Heavily affected by room lighting (ambient light), unless extremely well-shielded. </dd>
<dt><strong>Motor Force Sensing.</strong> </dt>
<dd>Dependent on battery voltage. When battery weakens, force readings increase. </dd></dl><h3><span style="color: #cc3333;"><a href="" name="SECTION001722100000000000000">Light Sensors</a> <a href="" name="Light Sensors"></a></span></h3>Any light sensor will operate differently in different amounts of ambient (e.g., room) lighting. For best results when using light sensors, they should be physically shielded from room lighting as much as possible, but this is not usually perfect. Given that room lighting will affect nearly all light sensors to some degree, software should be designed to compensate for room lighting. <br />
When using reflectance-type or break-beam light sensing, controlling the sensor's own illumination source is a good strategy. If a sensor reading is taken with the sensor's own illumination off, the reading due to ambient light is measured. If a reading is then taken with the illumination on, a value combining ambient light plus the sensor's own illumination results. By subtracting these two values, the sensor reading due to its illumination alone can be obtained. <br />
The illumination source control method will not wholly eliminate the influence of ambient light. Further calibration in an actual performance environment will probably be necessary. <br />
<h3><span style="color: #cc3333;"><a href="" name="SECTION001722200000000000000">Motor Force Sensing</a> <a href="" name="Motor Force Sensing"></a></span></h3>Direct measurement of the battery voltage can be used in a function to compensate for its effect on the motor force readings. However, a simple calibration sequence might suffice. <br />
When the motor is trying to turn but can't, then the motor current increases. The RoboBoard's motor force sensing circuitry allows this current to be measured. Set the wheels of your robot in motion at the speed you intend to drive. Hold the wheel to keep it from turning and take a motor force reading. This reading should be significantly higher than the free spinning motor force. If you want to see if your robot is stuck, take a motor force reading. If you get a value near the stalled reading, your robot is stuck. <br />
This calibration sequence would need to be performed periodically over the life cycle of the motor battery. <br />
<h2><span style="color: #009933;"><a href="" name="SECTION001723000000000000000">Using Persistent Global Variables</a> <a href="" name="Using Persistent Global Variables"></a></span></h2><a href="" name="9194"> </a> <br />
A persistent global variable (PGV) is a type of global variable that keeps its state despite pressing reset or turning the robot on and off. PGV'S are ideal for keeping track of calibration settings: after calibrating the robot once, it would not need to be recalibrated until after a new program were downloaded (in general, downloading of code will destroy the previous values of a persistent global, although this can be circumvented as explained in Section <a href="http://www.clear.rice.edu/elec201/Book/icmanual.html#sec-persistent">10.7.3</a>). <br />
Using persistent globals requires the creation of an initialization program to allow interactive setting of persistent variable values. A menuing program could be written to use the two user buttons (C<span><small>HOOSE</small></span> and E<span><small>SCAPE</small></span>) and the RoboKnob variable resistor on the RoboBoard (VR1) to navigate around a series of menus. This program could allow the selection and modification or calibration of any of a number of parameters. <br />
By exiting the initialization program without making any changes, or simply not calling it at all, the robot can operate under the previous settings made to the persistent variables. <br />
The routine could also allow restoration of the default values of all of the globals, returning them to some tested and known-to-work values. <br />
<h1><span style="color: #3333cc;"><a href="" name="SECTION001730000000000000000">Robot Control</a> </span></h1><a href="" name="9204"> </a> <br />
This section presents some ideas about designing software for controlling a robot. The focus is not on low-level coding issues, but on high level concepts about the special situations robots will encounter and ways to address these peculiarities. The approach taken here proposes and examines some control software architectures that will comprise the brains of the robot. <br />
<br />
<br />
Probably the biggest problem facing a robot is overall system reliability. A robot might face any combination of the following failure modes: <br />
</span><table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td valign="baseline" width="42"><img height="20" hspace="11" src="http://www.clear.rice.edu/elec201/Book/_themes/blocks/blobul1e.gif" width="20" /></td><td valign="top" width="100%"><span style="font-family: bookman old style,times new roman,times;"><b>Mechanical Failures.</b> These might range from temporarily jammed movements to wedged geartrains or a serious mechanical breakdown.</span></td></tr>
<tr><td valign="baseline" width="42"><img height="20" hspace="11" src="http://www.clear.rice.edu/elec201/Book/_themes/blocks/blobul1e.gif" width="20" /></td><td valign="top" width="100%"><span style="font-family: bookman old style,times new roman,times;"><b>Electrical Failures.</b> We hope it is safe to assume that the computer itself will not fail but loose connections of motors and sensors are a common problem.</span></td></tr>
<tr><td valign="baseline" width="42"><img height="20" hspace="11" src="http://www.clear.rice.edu/elec201/Book/_themes/blocks/blobul1e.gif" width="20" /></td><td valign="top" width="100%"><span style="font-family: bookman old style,times new roman,times;"><b>Sensor Unreliability.</b> Sensors will provide noisy data (data that is sometimes accurate, sometimes not) or data that is simply incorrect (touch sensor fails to be triggered).</span></td></tr>
</tbody></table><span style="font-family: bookman old style,times new roman,times;"> The first two of the above problems can be minimized with careful design, but the third category, sensor unreliability, warrants a closer look. Before discussing control ideas further, here is a brief analysis of the sensor problem. <br />
<h2><span style="color: #009933;"><a href="" name="SECTION001731000000000000000">Sensor Unreliability</a> <a href="" name="Sensor Unreliability"></a></span></h2><a href="" name="9212"> </a> <br />
A variety of problems afflict typical robot sensors: <br />
<dl><dt><strong>Spurious Sensor Data.</strong> </dt>
<dd>Most sensors will occasionally generate noise in their output. For example, an<a href="" name="9216"> </a>infrared sensor might indicate the infrared light is present when actually no light is present. Or, a proximity sensor might give a questionable reading. If the noise is predictable enough, it can be filtered out in software. The noisy IR sensor might not be trusted until it gives some number of consecutive readings in agreement with one another. However, if the noise problem is very bad, a sensor might be rendered useless -- or worse, dangerous -- if the program running the robot places too much trust in the sensor reading.
</dd>
<dt><strong>Missed Sensor Data.</strong> </dt>
<dd>Affiliated with the problem of noisy data is missed data, where for either electrical or software reasons, a sensor reading is not detected -- a light sensor changes state twice before the software can count it, or a touch sensor jams and fails to trigger. </dd>
<dt> </dt>
<dt><strong>Corrupted Sensor Data.</strong> </dt>
<dd>As discussed in the previous section on calibration, sensor data can be adversely affected by ambient environmental conditions or battery strength. </dd></dl>To some extent, unruly sensor data can be filtered or otherwise processed "at the source," that is, before higher-level control routines see it. The following example uses the function <tt>wall_dist_prox()</tt> introduced at the beginning of the chapter: <br />
The wall distance routine gets its data directly from the proximity sensor and then outputs an interpretation of that data. The routine does not process the sensor data in any way -- it does not check for unreasonable data samples, for example. Suppose that the proximity sensor should never report a value above 250, and for some reason, a bogus value is detected. This probably indicates some type of sensor failure, such as an unplugged sensor. It makes sense to intercept this failure locally, where the sensor data is first entered into the software system. <br />
In a similar way, sensor data could be averaged, smoothed, or otherwise processed before interpretation. It is logical to assign individual routines to perform this activity for any sensor that might need to be dealt with in a particular way. Using the multi-tasking capabilities of IC, each sensor or sensor sub-system could be assigned its own C process to perform this activity. <br />
<h2><span style="color: #009933;"><a href="" name="SECTION001732000000000000000">Task-Oriented Control</a> </span></h2><a href="" name="9223"> </a><a href="" name="9224"> </a> <br />
With so many problems facing a robot, how can it get anything done? Usually, one assumes that these problems do not exist. The insidious part is that most of the time, ignoring the failure modes will work. However, when the failures do occur, they will return to inflict crippling damage to a robot's performance. <br />
Returning again to the wall-following example (as implemented by the function <tt>follow_wall()</tt> (see Figure <a href="http://www.clear.rice.edu/elec201/Book/control.html#pgm-folwall">11.5</a>) ), in a worst-case scenario, what could happen while a robot was merrily running along, following a wall? Several possibilities: <br />
<dl compact="compact"><dt>1. </dt>
<dd>The robot could run into an object or a corner, properly triggering a touch sensor. </dd>
<dt>2. </dt>
<dd>The robot could run into an object or corner, <em>not</em> triggering a touch sensor. </dd>
<dt>3. </dt>
<dd>The robot could wander off away from the wall. </dd>
<dt>4. </dt>
<dd>The robot could slam into the wall, get stuck, and conditionally trigger a touch sensor. </dd>
<dt>5. </dt>
<dd>The proximity sensor could fall off its mount, causing a series of incorrect sensor readings. </dd></dl>Ideally, control software should <em>expect</em> occurrences of cases like those numbered #1 through #4 and be able to <em>detect</em> case #5. <br />
<br />
<br />
Suppose the wall-following activity is treated as a discrete <em>robot task</em> with initial conditions, an activity to perform (perhaps repetitively), exit conditions, and a return value. <br />
<div align="CENTER"><b> Task Analysis of Simple Wall Follow Function.</b> <img align="BOTTOM" alt="\fbox {\parbox{5.8in}{
\begin{description}
\item [Initial conditions.] Robot is ...
...ever exits.
\item [Return value.] None, even if it did exit.\end{description}}}" border="0" height="194" src="http://www.clear.rice.edu/elec201/Book/images/img181.gif" width="707" /><br />
</div><h3><span style="color: #cc3333;"><a href="" name="SECTION001732100000000000000">Exit Conditions</a> <a href="" name="Exit Conditions"></a></span></h3>Within this framework, the simple wall-following function could be extended such that it could deal with several of the potential problems it might face while following a wall. Some of these "problems" actually <em>must</em> be dealt with; if a robot doesn't run into an obstacle sooner or later, either something is wrong or the robot is following a very long (circular?) wall. <br />
<br />
<br />
</span><div align="CENTER"><span style="font-family: bookman old style,times new roman,times;"><a href="" name="pgm-folwall2"></a> <a href="" name="9248"> </a> <br />
</span><table><caption><strong>Figure 11.8:</strong> Wall Following Function with Exit Condition</caption> <tbody>
<tr> <td><span style="font-family: bookman old style,times new roman,times;"><img alt="\begin{figure}
{\small
\addtolength {\baselineskip}{-.2\baselineskip}
\begin{v...
...;
else drive_straight();
}
return NORMAL_EXIT;
}\end{verbatim}}\end{figure}" height="257" src="http://www.clear.rice.edu/elec201/Book/images/img182.gif" width="492" /></span></td> </tr>
</tbody></table></div><span style="font-family: bookman old style,times new roman,times;"> <br />
<br />
By adding a test for touch sensors inside the loop code of <tt>follow_wall()</tt>, a function that exits upon detection of a collision can be created. This new function, <tt>follow_wall2()</tt>, is shown in Figure <a href="http://www.clear.rice.edu/elec201/Book/control.html#pgm-folwall2">11.8</a>. Note the new sensor function <tt>robot_stuck()</tt>, which is expected to return a boolean true if it believes that the robot is stuck. To double-check that the robot is stuck, the function can get additional data from any of the robot's sensors -- including touch sensors, shaft encoders, and motor force sensors. <br />
<h3><span style="color: #cc3333;"><a href="" name="SECTION001732200000000000000">Timeouts</a> </span></h3><a href="" name="9261"> </a> <br />
Detecting collisions can only be as good as the collision sensors. Since such sensors are not perfect, it may be a good idea to add some kind of timer-based exit condition. This will prevent the case of a robot from getting stuck and not having its touch sensor depressed. Often a robot simply does not "believe" that it is stuck -- its program stays stuck in some loop and does not properly react. <br />
Time-outs can solve this problems and provide other information as well. In a typical application, the <em>maximum time</em> that the robot is allowed to take in performing a particular task would be determined. When the function to perform the task is invoked, it would be given this maximum time. If (continuing the example) the wall-following task failed to exit before the time limit had expired, the timeout would trigger and cause the function to exit (with an appropriate error return value). <br />
Additionally, the timing information could be used to <em>verify</em> that the task had exited normally. If a robot is supposed to take six seconds to get from the start of the wall-follow to another wall and in one instance takes only three seconds, then probably an obstacle caused the premature exit. <br />
<br />
<br />
</span><div align="CENTER"><span style="font-family: bookman old style,times new roman,times;"><a href="" name="pgm-folwall3"></a> <a href="" name="9267"> </a> <br />
</span><table><caption><strong>Figure 11.9:</strong> Wall Following Function with Exit and Timeout Conditions</caption> <tbody>
<tr> <td><span style="font-family: bookman old style,times new roman,times;"><img alt="\begin{figure}
{\small
\addtolength {\baselineskip}{-.2\baselineskip}
\begin{v...
...eout) return PREMATURE_EXIT;
return NORMAL_EXIT;
}\end{verbatim}}\end{figure}" height="585" src="http://www.clear.rice.edu/elec201/Book/images/img183.gif" width="573" /></span></td> </tr>
</tbody></table></div><span style="font-family: bookman old style,times new roman,times;"> <br />
<br />
Figure <a href="http://www.clear.rice.edu/elec201/Book/control.html#pgm-folwall3">11.9</a> lists the third wall-following function, with added timeout capability. Note that the timing variables are defined in long integers (timing units in milliseconds). <a href="" name="9273"></a>Floating point variables could also have been used (with the more intuitive units of seconds), but long integers are much more efficient. <br />
A task analysis of the <tt>follow_wall3()</tt> function shows a much better set of specifications, as shown in Figure <a href="http://www.clear.rice.edu/elec201/Book/control.html#fig-specs">11.10</a>. <br />
<br />
<br />
</span><div align="CENTER"><span style="font-family: bookman old style,times new roman,times;"><a href="" name="IIIinput"></a> <a href="" name="fig-specs"> </a><a href="" name="9283"> </a> <br />
</span><table><caption><strong>Figure 11.10:</strong> Task Analysis of Wall Follow Function with Sensing and Timeout</caption> <tbody>
<tr> <td><span style="font-family: bookman old style,times new roman,times;"><img alt="\begin{figure}
\fbox {\parbox{5.8in}{
\begin{description}
\item [Initial conditi...
...l exit, timeout error exit, premature error exit.\end{description}}}\end{figure}" height="248" src="http://www.clear.rice.edu/elec201/Book/images/img184.gif" width="679" /></span></td> </tr>
</tbody></table></div><span style="font-family: bookman old style,times new roman,times;"> <br />
<br />
<h3><span style="color: #cc3333;"><a href="" name="SECTION001732300000000000000">Monitoring State Transitions inside a Feedback Loop</a> </span></h3><a href="" name="9287"> </a> <br />
The third version of the wall-following function ensures that the robot will not wedge and get stuck forever. However, going a step further, a program can be written to detect failure situations in advance of the overall task timeout. <br />
The key is in the guts of the feedback loop, associated with the functions <tt>veer_away_from_wall()</tt>, <tt>veer_toward_wall()</tt>, and <tt>drive_straight()</tt>. When the robot is following a wall normally, these functions should alternate control, each being operative for only a short period of time. Said another way: the robot will not simply drive straight for a long time, it will veer into the wall for a bit, veer away from the wall for a bit, drive straight for a bit, etc. Conversely, if the robot wandered away from the wall, then the <tt>veer_toward_wall()</tt> output would be continuously asserted. <br />
Monitoring for normal exchange of control among these feedback outputs allows detection of the feedback loop's normal operation. Conversely, by looking for abnormal exchange of control -- in particular, one output being asserted for too long a period of time -- failure conditions can be detected. <br />
<br />
<br />
</span><div align="CENTER"><span style="font-family: bookman old style,times new roman,times;"><a href="" name="pgm-folwall4a"></a> <a href="" name="9294"> </a> <br />
</span><table><caption><strong>Figure 11.11:</strong> Wall Following Function with Exit, Timeout, and Feedback Monitoring Conditions, Page 1</caption> <tbody>
<tr> <td><span style="font-family: bookman old style,times new roman,times;"><img alt="\begin{figure}
{\small
\addtolength {\baselineskip}{-.2\baselineskip}
\begin{v...
...nerate movement command */
veer_away_from_wall();
}\end{verbatim}}\end{figure}" height="845" src="http://www.clear.rice.edu/elec201/Book/images/img185.gif" width="632" /></span></td> </tr>
</tbody></table></div><span style="font-family: bookman old style,times new roman,times;"> <br />
<br />
<br />
<br />
</span><div align="CENTER"><span style="font-family: bookman old style,times new roman,times;"><a href="" name="pgm-folwall4b"></a> <a href="" name="9299"> </a> <br />
</span><table><caption><strong>Figure 11.12:</strong> Wall Following Function with Exit, Timeout, and Feedback Monitoring Conditions, Page 2</caption> <tbody>
<tr> <td><span style="font-family: bookman old style,times new roman,times;"><img alt="\begin{figure}
{\small
\addtolength {\baselineskip}{-.2\baselineskip}
\begin{v...
...meout) return PREMATURE_EXIT;
return NORMAL_EXIT;
}\end{verbatim}}\end{figure}" height="482" src="http://www.clear.rice.edu/elec201/Book/images/img186.gif" width="585" /></span></td> </tr>
</tbody></table></div><span style="font-family: bookman old style,times new roman,times;"> <br />
<br />
The code to implement this idea works as follows: each time a new feedback output is selected, a timer is reset. The timer measures time spent in consecutive selections of the feedback output. If the same feedback output is selected repeatedly for too long a period of time, an exit error condition is generated. <br />
Several constants are used to adjust the parameters of the timeout: <tt>DRIVE_STRAIGHT_MAXTIME</tt>, <tt>VEER_IN_MAXTIME</tt>, and <tt>VEER_OUT_MAXTIME</tt>. Three new exit error conditions are used to report which part of the feedback loop failed. The final program, <tt>follow_wall4()</tt>, is shown in Figures <a href="http://www.clear.rice.edu/elec201/Book/control.html#pgm-folwall4a">11.11</a> and <a href="http://www.clear.rice.edu/elec201/Book/control.html#pgm-folwall4b">11.12</a>. <br />
One potential problem: It is conceivable that for some duration of time that it would be <em>correct</em> for the loop to stay in one state for an unusually long period of time, in which case this method would incorrectly cause a premature exit. In the wall-following example, if the robot were perhaps to drive very straight and were oriented exactly parallel to the wall, it would be proper to stay in the "drive straight" state for a long while. <br />
Increasing the timeout values of the constants would minimize the potential of this problem -- at the expense of the method's effectiveness. It is probably best to deal with these circumstances on a case-by-case basis. One possibility is to deliberately handicap the feedback control so that it oscillates a bit; clearly this has disadvantages too. <br />
<h2><span style="color: #009933;"><a href="" name="SECTION001733000000000000000">Coordination of Tasks</a> </span></h2><a href="" name="9311"> </a> <br />
The robot task model just presented should prove a useful way to make a robot's behavior more reliable. But further questions come up: How should the selection and execution of different tasks be done? <br />
This question is often asked by contemporary robot researchers. In addition to a variety of ways of thinking about robot tasks, there are many different approaches to organizing the higher-level control of mobile robots. <br />
Unlike robots used more generally in research, ELEC 201 robots have special requirements: these robots must be fast; many research robots can sit and compute for a while. ELEC 201 robots must be reliable, whereas for other demonstrations, a robot might be videotaped until it does what the programmers want it to. ELEC 201 robots have only a few chances to perform correctly for the competition; in some research experiments, software robots are "evolved" through many generations until they behave appropriately. <br />
<br />
<br />
Still, some of the ideas from the research field may be helpful. To extend from the task model developed in this chapter, here are several different approaches that could be used to coordinate and control task execution. <br />
<h3><span style="color: #cc3333;"><a href="" name="SECTION001733100000000000000">Task Sequencing</a> </span></h3>In this model, only one task executes at a time. A "task manager" is responsible for selecting tasks based upon a predetermined task sequence, with alternative sequences to deal with exceptional circumstances. This can be visualized as a connected graph of tasks, with the path of traversal determined by the task manager. <br />
A simple example of task sequencing would be a program to make a robot follow the inside wall of a rectangular area. The <a href="" name="9490"> </a>task manager would alternately invoke "follow wall" and "negotiate corner" tasks, assuming there were no errors. <br />
<h3><span style="color: #cc3333;"><a href="" name="SECTION001733200000000000000">Concurrent and Non-Competing Tasks</a> </span></h3>This model builds on the task sequencing model by allowing concurrent execution of tasks that are essentially non-interfering. For example, a task to control a "radar dish" sensor (that locates sources of infrared light) can be operated independently from a task that drives the robot. There may be some communication between the tasks (the radar dish task may wish to know that the robot's base is moving), but there is no direct interference or need for coordination between the tasks. <br />
<h3><span style="color: #cc3333;"><a href="" name="SECTION001733300000000000000">Concurrent and Competing Tasks</a> </span></h3>In the most general situation, concurrent tasks might interfere with each other, or compete for resources on the robot (such as control of drive motors or control of an active sensor). In this case, some method, either explicit or implicit, must be devised to resolve resource conflicts. <br />
One method is to provide each task with a priority level; if two or more tasks are competing for the same resource, the task with the highest priority would win. A method for dealing with ties would be needed as well. <br />
<h3><span style="color: #cc3333;"><a href="" name="SECTION001733400000000000000">Robot Metacognition</a> </span></h3>A sophisticated task manager might have a separate module that acts as its "overseer." To use Marvin Minsky's idea and terminology from his <em>Society of Mind</em>, the main part of our brains (the "A brain") might be observed by a separate part of the brain (the "B brain"). <br />
The B brain, or overseer, checks the A-brain (which is mostly in control) for things like non-productive loops and other wedged conditions. If it detects one of these undesirable states, it makes an intervention that will provoke a different response from the A brain. <br />
Here is an example to bring this metaphor back to our robots. Suppose a task manager (of the sequencer variety) is trying to drive the robot around the inside of a rectangle, as suggested earlier. It is alternating between two tasks: a "follow wall" task and a "negotiate corner" task. But suppose the corner routine is failing, and unbeknownst to the sequencer, the robot is stuck in the same corner. <br />
The robot's "B-brain controller" might notice an especially tight loop between the execution of the two tasks (much the same as the wall-follower would notice trouble in shifting between the feedback outputs). The B-brain would conclude that something had gone wrong, and execute an emergency "get unwedged task. <br />
<h3><span style="color: #cc3333;"><a href="" name="SECTION001733500000000000000">Control of an ELEC 201 Robot</a> </span></h3>Most robots have been designed with the "task sequencer" model in mind. Occasionally concurrent, non-competing tasks are employed, but only rarely are concurrent and competing tasks considered. <br />
Rather than advocating a specific method, it is left for the reader to think about these issues and decide what is best for his or her own robot. Some of these methods were developed to make robots more "creature-like," which is not necessarily a desirable characteristic for an ELEC 201 robot. For example, it would not be ideal for a robot to suddenly decide that it did not really want to follow that wall. A task sequencing method, perhaps with a few checks for unproductive loops, should be more than adequate for most robot ELEC 201 designs. </span>Anonymoushttp://www.blogger.com/profile/06472600501348700211noreply@blogger.com0