Senin, 27 September 2010

Suatu hari, si A sebagai seorang anak IT yang kuliah di suatu perguruan tinggi di jakarta, dia sebenernya anak yang pinter, sangat pinter apa lagi di bidang pemrograman dan logika, tapi dia keok di bidang teorinya.

Suatu ketika si A sedang belajar Bahasa Inggris, karena si A tidak suka mata kuliah ini maka dia ngobrol dan membuat ribut di kelas, sampai2 dosennya marah2 dan terjadi percakapan yang cukup membuat tercengang, kira2 seperti ini …

pak dosen : Woi, kamu jangan ribut di kelas …

si A : santai aja donk pak, saya cuma ngobrol doank,

pak dosen : kalo mau ngobrol ya diluar, jgn di kelas

si A : saya ngomongin tentang pelajaran kok pak, bener deh, sumpah

pak dosen : lalu kenapa kamu malah bikin, pesawat dari kertas, kaya anak kecil saja kamu

si A : ya, saya cuma iseng pak, cita2 saya kan mau jadi pilot,

Sekelas tertawa, mendengar si A ngomong kaya gitu.

pak dosen : ywd, kamu saya hukum, tulis tulisan ” Saya tidak akan melempar pesawat kertas di kelas “, di papan tulis

si A : wah, itu mah gampang pak,

pak dosen : tapi sampai 500 kali, dan dalam bahasa INGGRIS …

si A : kaget, dan hanya bisa melongo …

si A, bingung, dan hanya bisa berdiam, dan berpikir, gmn cara paling optimal, untuk hukuman tersebut, lalu tercetus lah pikiran licik, tetapi cukup pintar .


Selasa, 21 September 2010

Saat mau mencetak dokumen, ternyata kertasnya selalu miring, dan tidak tertarik semua. Atau bahkan tidak mau menarik kertas, hanya rollernya muter2 aja..

Masalah ini kemungkinan besar karena adanya benda asing yang masuk ke dalam paper tray atau mungkin malah masuk kedalam mesinnya (ga tau nama asli bagiannya, pokoknya dalamnya printer lah...). Trus gimana dong.. OK, langsung menuju TKP...

Untuk kertas yang selalu miring nariknya, atau mau masuk sebagian, kemudian jam...

1. Bongkar printer anda
2. Cek di bagian bawah roller penarik kertas (dari ujung ke ujung ya).
3. Apakah ada benda asing (kotoran, kertas, clip, uang logam, pensil, serangga mati, atau yang lainnya)
4. Jika susah melihat atau mengeceknya, lepas semua pegas penahan roller (apa sih nama sebetulnya ?)
5. Biasanya benda asing tersebut terjepit, bersihkan/buang benda yang nyangkut tersebut.
6. Pasang kembali pegas dan yang lainnya, tes dulu sebelum printer dipasang covernya.


Untuk printer yang tidak mau menarik kertas sama sekali :

1. Bongkar printer anda.
2. Pada bagian mekanis printer (satu set biasanya, yang letaknya di bawah roller dan paper tray) terdapat satu pasangan roda yang didalamnya terdapat pegas.
3. Biasanya roda tersebut lepas dari dudukannya (ditahan oleh sebuah besi panjang mirip jarum).
4. Apabila roda tersebut cuman lepas, anda cukup memasang kembali.
5. Tapi apabila pegas (di dalam) roda tersebut rusak, biasanya susuananya berantakan, sudah tidak bulat sama sekali.
6. Anda dapat memotong pegasnya maksimal 50% dari pegas yang ada.
7. Pegas ini berfungi untuk mengatur putaran searah saja. Kalau pegasnya terlalu sedikit, maka putaran akan terjadi dua arah, kalau sampai dua arah maka tidak dapat dipakai.
8. Kalau masih bisa dipotong selamat deh...
9. Kalau ga bisa dipotong terpaksa cari kanibalan dari printer lain..


Langkah-langkah di atas bisa digunakan pada printer jenis MP 140, MP 150, MP 160, IP 1200, IP 1300, IP 1500, IP 1600, IP 1700, IP 1800, dan IP 1900. Kalau ada yang mau ditanyakan silahkan.. pasti dijawab.

http://www.betalphi.com/index.php/hardware/36-printer/50-canon-mp-dan-ip-series-kertas-selalu-miring
Beberapa hari yang lalu, saya dapat masalah dengan printer customer (MP145). Keluhannya hasil cetaknya selalu putus-putus. Misalnya kalau mencetak teks, pada bagian atas atau bawah teks terdapat bagian yang hilang. Jadi teks tidak sepenuhnya tercetak. Awalnya yang saya vonis adalah catridge. Tapi setelah catridge diganti ternyata tidak menyelesaikan masalah juga (asem dah terlanjur beli..)
Ahirnya dengan berat hati, printer saya bongkar. Kemudian test print dengan kondisi kap terbuka, sambil melihat hasil cetak yang masih tetap patah-patah. Sampai habis 4 lembar belum kelihatan juga. Pada saat saya perhatikan sensor di sebelah kiri printer, (yang bundar dan nempel di roda) kok kayaknya agak aneh gerakannya. Eh.. ternyata sensor ini lepas dari roda gerigi tempat dudukannya. Cuman karena bingun dengan kode "F" di sensor tersebut, ahirnya dengan metode "trial and error" saya pasang tanpa memperdulikan kode "F" tersebut (soalnya kepikiran klo magnet pada motor ada kode T untuk Top dan F untuk Fure.. gak nyambung ya).

Dengan menambahkan isolasi double tape pada sensor untuk menempelkan kembali pada roda gerigi, saya pasang kembali sensor tersebut. Kemudian test print... seeepppp ini ternyata masalahnya. Hasil printer sudah baik kembali. Ternyata printer bingung mengenali pergerakan kertas, alias lompat-lompat. Makanya hasilnya putus-putus... dan setelah sensor direkatkan kembali, hasil printer menjadi bagus lagi.

Karena secara garis besar sistem kerja printer canon sama semua, cara ini dapat digunakan untul semua jenis printer canon.
Lumayan tambahan ilmu lagi, ngga tau besok dapat masalah apa lagi...
Tapi memang itu yang diharapkan.. soalnya klo ga ada masalah saya ga dapat duid... :)



http://www.betalphi.com/index.php/hardware/36-printer/71-hasil-ceak-printer-putus-putus-canon-lagi



Tak bisa dipungkiri, Printer merk Canon masih merupakan printer favorite dan banyak dipakai dimana-mana. Selain harganya yang relatif murah (untuk entry level), hasil print lumayan bagus juga isi ulang yang tidak ribet. Nah, kalau anda pemakai setia printer Canon, dan mengalami beberapa masalah dengan printer anda yang satu ini. Simak aja beberapa penyakit umum yang sering melanda Printer Canon berikut ini.1. Blinking, Indikator Kedap-kedip ketika Printer dinyalakanBiasanya penyakit ini melanda Canon iP1200, iP1300, iP1600, iP1700, i255,Solusi Ringan, maksudnya solusi ini harus anda lakukan setiap kali anda menyalakan printer, sebab langkah ini hanya bersifat sementara. Ketika printer anda terputus dari arus listrik, maka blinking akan kembali muncul. Tapi, nggak ada salahnya ada lakukan langkah ini, bila anda belum familiar dengan cara-cara mereset printer menggunakan software.

* Lepaskan kabel power dari printer anda.
* Tekan terus tombol Power, sambil anda memasang kembali kabel power.
* Indikator power akan kelihatan menyala berwarna kuning.
* Lepaskan tombol power, ketika anda selesai memasang kabel power.
* Kemudian tekan lagi tombol power, untuk menyalakan printer anda.
* Dipastikan printer anda tidak blinking lagi. Namun ketika printer anda terputus dari arus listrik, maka blinking ini akan muncul, dan anda tinggal ulangi langkah diatas.

Solusi Software, anda bisa mengatasi penyakit blinking ini dengan menggunakan software GeneralTool khusus untuk iP 1300 dan iP 1700. Dengan menggunakan software ini, blinking biasanya dapat teratasi secara permanen, artinya anda tidak perlu mengulang-ulang seperti pada solusi ringan diatas.
2. Blinking, kedap-kedip ketika habis tinta, atau ketika selesai isi tintaBiasanya penyakit ini melanda printer Canon iP 1880, dan terjadi ketika tinta habis atau ketika anda selesai mengisi tinta. Atau malah tinta belum habis, tapi blinking ini kerapkali melanda iP 1880. Salah satu Solusinya :

* Tekan dan tahan tombol “Resume” selama kurang lebih 1 sampai 2 menit
* Kemudian buka tutup atau cover printer anda.
* Buka dulu Cartridge-nya kemudian pasang lagi
* Tutup cover printer
* Matikan, kemudian hidupkan kembali

3. Huruf hasil Print putus-putus (bergaris-garis), tidak merataCoba lakukan cleaning beberapa kali, bila cara ini tidak berhasil juga, anda bersihkan catrige anda secara manual. Tapi, solusi terbaik, berdasarkan pengalaman beberapa user, adalah sudah saatnya anda mengganti Catrige printer anda.
4. Mengatasi “ink absorber is full” pada Canon IP1700 dan IP1200

* Matikan printer dan cabut kabel power
* Tekan terus tombol power (jangan dilepaskan) sambil kemudian colokan kembali kabel power
* Saat tombol power masih ditekan dan kabel power sudah dicolokan kembali, tekan tombol resume dua kali (berturut-turut)
* Lepaskan tombol power
* Selesai
* Kini komputer anda akan mendeteksi sebuah Printer baru, ikuti langkah yang diminta sampai kemudian terinstal printer baru.

5. Solusi “The waste ink absorber is almost full” dan “ink absorber is Full” pada Canon IP3000 dan IP2000

* Matikan printer
* Tekan tombol resume dan kemudian tekan tombol power
* Tekan terus tombol power dan kemudian lepaskan tombol resume
* Tekan kembali tombol resume 2 kali berturut dan kemudian lepaskan kedua tombol (tombol resume dan tombol power)
* Akan muncul Indikator berwarna hijau
* Saat indikator berwarna hijau, kemudian tekan tombol resume 4 kali
* Tekan tombol power, printer akan mati (turn off), jika tidak tekan lagi tombol power
* Printer kembali normal.


http://punokawancelluler09.wordpress.com/2010/07/17/beberapa-penyakit-umum-pada-printer-canon-dan-solusinya/



Linux, Printer dan Permasalahannya (2)
Wednesday, June 24th, 2009

Ternyata semua analisa dan solusi yang saya aplikasikan pada masalah komputer yg sering restart ketika ngeprint dari Open Office dengan printer laser SAMSUNG ML-2240 tidak membuahkan hasil. 2 hari yang lali saya ditelpon karena komputer terkadang masih restart, datanglah saya ke kantor pusat, saya mencoba lagi upgrade dengan Open Office 3.1. Setelah proses download dan instalasi selesai, saya coba ngeprint dan kebetulan saja tiba-tiba leeebbbbbb….komputer restart….asemmmmm…

Setelah komputer nyala kembali ternyata printer mengeluarkan hasil print yang berisi tulisan begini:

INTERNAL ERROR - FALSE

POSITION : 0×21d9 (8665)

SYSTEM : h6fwdim_snipe/xl_pa_sim

LINE : 254

VERSION : SPL 5.07 06-27-2006

Dari output print ini saya langsung curiga bahwa driver yang saya install ada masalah, dan mencobalah saya menggunakan Samsung Unified Linux Driver dari situs Samsung dengan meng-install secara manual, setelah saya buat tes print gak ada masalah, dan sayapun meninggalkan kantor pusat. Tapi tak berapa lama saya ditelpon lagi kalau komputernya restart lagi….hemm….wlehhhh…..Sampai saat ini saya masih belum menemukan solusi untuk masalah itu. Ada anda juga pernah mengalami masalah yang sama dengan saya ???

Posted in Debian, Driver Samsung ML-2240 Linux, Isu Linux, Printer, Solusi, Ubuntu, Unified Linux Driver | No Comments »
Linux, Printer dan Permasalahannya
Thursday, June 18th, 2009

Windows Linux PrinterPagi tadi dari kantor pusat benerin komputer staf keuangan yang sering restart ketika ngeprint dari OpenOffice. Linux Debian 4 (Etch) dengan VMWare 1.5 dan Windows XP sebagai Guest OS, Windows XP terinstal program dari Bank Lippo. Windows XP ngeprint secara jaringan ke Host OS yang terinstall printer laser Samgung ML-2240.

Masalah timbul bermula ketika program dari Bank Lippo tidak dapat ngeprint secara jaringan, printer di Host OS (Linux) yang sudah di add tidak dikenali oleh program, dikarenakan program tersebut membaca port printer LPT, sehingga printer jaringan tidak berfungsi. Agar printer jaringan dapat dipergunakan maka diperlukan “konversi” printer dengan mengetikkan perintah “net use LPT1: \\hostos\samsung-ml-2240″.

Ketika perintah tersebut dijalankan dimintalah username dan password untuk otentikasi, saya ketik user name dan password yang ada di Host OS (Linux Debian) kok tetep gak mau konek. Saya curiga pada konfigurasi samba, kenapa ketika add printer biasa di Windows bisa tapi ketika konek printer menggunakan printah net use diatas kok ga bisa. Kemudian saya coba juga perintah diatas konek ke printer yang juga Linux tapi menggunakan PCLinux 2007, jreng…jreng lha kok bisa…..!!????? aneh…….

Beberapa saat saya pelototi konfigurasi samba bawaan Debian, dan semua konfigurasi terkait printer gak ada masalah tapi kok tetep diminta username dan password gitu lohhhhhhh. Wes tanpa pikir panjang saya copy saja konfigurasi sambanya ke Linux Debian kemudian restart service sambanya, jreng…jreng…lho kok bisa….aneh….

Senang hatiku karena akhirnya problemnya teratasi, beberapa hari kemudian si empunya komputer telpon, komplain kalau komputer sering restart tiba-tiba ketika ngeprint dari OpenOffice yang di Host OS. Wadooohhh apalagi ini, tanpa babibu datanglah saya ke kantor pusat dan saya maintain tuh problemnya. Setelah liat-liat sebentar muncul masalah lagi, karena sering restart openoffice 3 ketika dijalankan selalu melakukan recovery dokumen, akan tetapi proses recovery selalu tidak berhasil dan pertanyaan recovery selalu muncul setiap OpenOffice dijalankan….asemmmmmmmmmmmmm

Dengan mengucap sedikit mantra akhirnya dapat ide nih saya:

1. Saya curiga restartnya komputer secara tiba-tiba karena konfigurasi samba PCLinux yg gak cocok di pasang di Debian…aneh memang..tapi siapa tau aja memang benar. Lantas saya copy ulang konfigurasi samba Debian dengan sedikit modifikasi.
2. Upgrade paket-paket dengan dengan release terakhir.
3. Hapus profile OpenOffice untuk menghilangkan pertanyaan recovery, dengan menghapus folder .openoffice.org yang ada di home folder user.

Setelah 3 langkah diatas saya lakukan, saya cobalah kembali fungsi print dari program Bank Lippo berserta beberapa prosedur standar lainnya untuk memastikan gak ada masalah.

Alhamdulillah hirobbilalamin, sampai posting ini ditulis, si empunya komputer belum menelpon saya lagi dan transfer gaji gak akan terlambat :), kalo sampai nelpon saya berarti masih gak beres tuh komputer….dan yang pasti gaji akan terlambat masuk rekening…

Posted in Linux Printer, Personal, Printer | No Comments »
Instalasi Driver Canon Pixma iP1880 Linux Debian
Tuesday, April 28th, 2009

Canon adalah salah satu vendor printer yang rada setengah-setengah mensupport Linux, tapi untungnya ada orang-orang baik hati yang mau memberikan atau membuat driver untuk beberapa printer kelas SOHO yang tidak tersedia drivernya.

Bagi anda pengguna printer tipe Canon Pixma iP1880 dan menggunakan Linux Debian khususnya, bisa mengikuti url berikut untuk panduan instalasi drivernya.

Posted in Debian, Linux Printer Driver, Pixma iP1880 Linux, Printer, Solusi | No Comments »
Instalasi Printer Canon IP1880 di BlankOn 4.1
Wednesday, March 11th, 2009

Saya tidak akan menulis apa-apa di sini karena salah seorang teman kita sudah menjelaskan secara gamblang cara instalasi driver Canon IP1880 di sini. Oh ya, cara tersebut juga berlaku untuk Ubuntu 8.10 Intrepid Ibex.

http://punokawancelluler09.wordpress.com/2010/07/17/beberapa-penyakit-umum-pada-printer-canon-dan-solusinya/

Jumat, 21 Mei 2010

Array adalah tipe data terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe sama. Komponen-komponen tersebut disebut sebagai komponen type, larik mempunyai jumlah komponen yang jumlahnya tetap. Banyaknya komponen dalam larik ditunjukkan oleh suatu index, dimana tiap komponen di array dapat diakses dengan menunjukkan nilai indexnya atau subskript. Array dapat bertipe data sederhana seperti byte, word, integer, real, bolean, char, string dan tipe data scalar atau subrange. Tipe larik mengartikan isi dari larik atau komponen- komponenya mempunyai nilai dengan tipe data tersebut.
Contoh:
Var
Untai : array[1..50] of Integer;
Pada contoh Array dengan nama untai telah dideklarasikan dengan tipe integer, dengan jumlah elemen maksimum 50 elemen, nilai dari elemen array tersebut diatas harus bertipe integer.

Contoh Program :
Program Contoh_Array_Input;
Uses Crt;
Var
Bilangan : array[1..50] of Integer;
Begin
ClrScr;
Bilangan[1]:=3;
Bilangan[2]:=29;
Bilangan[3]:=30;
Bilangan[4]:=31;
Bilangan[5]:=23;
Writeln('nilai varibel bilangan ke 3 =',Bilangan[3]);
Readln;
End.

Array juga dapat dideklarasikan bersama dengan tipe yang beragam seperti contoh dibawah ini :
Program Contoh_Deklarasi_Array_Beragam;
Uses Crt;
Var
NPM : array[1..20] of string[10];
Nama : array[1..20] of string[25];
Nilai : array[1..20] of real;
Umur : array[1..20] of byte;
banyak,i : integer;
Begin
ClrScr;
Write('Isi berapa data array yang diperlukan :');Readln(banyak);
For i := 1 to banyak Do
Begin
Write('NPM =');Readln(NPM[i]);
Write('Nama =');readln(Nama[i]);
Write('Nilai=');readln(Nilai[i]);
Write('Umur =');readln(Umur[i]);
End;
{cetak varibel array}
Writeln('NPM NAMA NILAI UMUR ');
For i:= 1 to banyak Do
Begin
Writeln(Npm[i]:10,Nama[i]:25,Nilai[i]:3:2,' ',Umur[i]:3);
End;
Readln;
End.

Untuk deklarasi array dapat digunakan beberapa cara seperti berikut ini :
Type
Angka = String[20];
Var
Nama : Array [1..50] of Angka;
Begin
.
.
End.

Deklarasi tipe indeks subrange integer Indeks pada array dapat tipe skalar atau subrange, tetapi tidak bisa real.
Contoh:
Var
Nilai : Array[1..10] of Integer;
pada contoh ini array nilai mempunyai 10 buah elemen yaitu dari 1 sampai 10. Array tersebut dapat dideklarasikan dengan type seperti berikut ini :

Type
Skala = 1..10;
Var
Nilai : Array [skala] of Integer;
atau :
Type
Skala = 1..10;
Y = Array[skala] of Integer;
Var
Nilai : Y;
atau :
Type
Y = Array[1..10] of Integer;
Var
Nilai : Y;
atau :
Const
Atas =1;
Bawah = 5;
type
Y = Array[Atas..Bawah] of Integer;
Var
Nilai : Y;

I. Deklarasi Type Indeks Skalar
Indeks dari larik dapat berupa tipe skalar.
Contoh. :
Program Deklarasi_Indeks_Array_Skalar;
Uses Crt;
Var
Jum : Array[(jan,feb,mar,apr,mei)] of Integer;
Begin
Jum[jan]:=25;
Jum[feb]:=45;
Jum[mar]:=21;
Jum[apr]:=23;
Jum[mei]:=50;
Writeln('Jumlah nilai bulan maret =',Jum[mar]);
Readln;
End.
dapat juga ditulis :
type
Bln = (jan,feb,mar,apr,mei);
Var
Jum : Array[bln] of Integer;
atau :
type
Bln =(jan,feb,mar,apr,mei);
Var
Jum : Array[jan..mei] of Integer;

II. Deklarasi Konstanta Array
Array tidak hanya dapat berupa suatu varibel yang dideklarasikan di bagian deklarasi variabel, tetapi dapat juga berupa konstanta (const).
Contoh Program :
Program Contoh_Deklarasi_Array_Konstan;
Uses Crt;
Const
Tetap : Array[1..4] of Integer=(7,10,21,20);
Var
i : Integer;
Begin
For i:= 1 to 4 Do
Writeln('Nilai Konstan array ke ',i:2,' =',Tetap[i]);
Readln;
End.
konstanta array dapat juga berupa ketetapan dalam bentuk karakter seperti berikut.
Contoh Program :
Program Contoh_Konstan_Array_Char_;
Uses Crt;
Const
Huruf : Array[0..5] of Char=('A','B','C','D','E','F');
Var
i : Integer;
Begin
For i:= 0 to 5 Do
Writeln('Nilai konstan array ke',i:2,' = ',Huruf[i]);
Readln;
End.
Konstanta array dapat juga berupa string seperti berikut ini.
Contoh Program :
Program Constanta_Array_String;
Uses Crt;
Type
A = Array [1..5] of String;
Const
Nama : A = ('basic','pascal','cobol','paradox','dbase');
Var
i : Integer;
Begin
For i:= 1 to 5 Do
Writeln('Nilai Array ke-',i:2,'= ',Nama[i]);
readln;
end.

Dalam pascal string merupakan array dari elemen- elemen karakter seperti berikut :
Contoh Program :
Program String_Adalah_Array_Tipe_Char;
Uses Crt;
Var
Nama : string;
i : Integer;
Begin
Nama:='Turbo Pascal';
For i:= 1 to Length(nama) Do
Writeln('Elemen ',i,' dari ',Nama,'= ',Nama[i]);
Readln;
End.

contoh program bilangan prima dengan menggunakan bantuan array.
Contoh program :
Program Mencari_Bilangan_Prima_Dengan_Array;
Uses Crt;
Var
Prima : Array[1..100] of Integer;
i,j : Integer;
bil : Integer;
Begin
ClrScr;
For i := 2 to 100 Do
Begin
Prima[i]:=i;
For j:= 2 to i-1 Do
Begin
bil := (i mod j); {* i dibagi j dicek apakah 0*}
If bil = 0 then Prima[i]:=0; {*jika habis dibagi,berarti bkn prima*}
End;
If Prima[i]<> 0 Then Write(Prima[i],' '); {*cetak array yg prima*}
End;
Readln;
End.

Contoh pengurutan data dengan metode buble sort, yaitu dengan cara penukaran, dapat dilihat pada contoh dibawah ini :
Contoh Program :
Program Penggunaan_Array_Untuk_Sortir_Buble_Sort;
Uses Crt;
Var
nil1 : Array[1..100] of Integer;
n,i,j,dum : Integer;
Begin
ClrScr;
Write('mau isi berapa data acak (integer) ='); readln(n);
For i := 1 to n Do
Begin
Write('Data Ke ',i,':');Readln(nil1[i]);
End;
{* penyapuan proses}
for i:= 1 to n-1 do
begin
for j:= i to n do
begin
if nil1[j]
begin
dum:=nil1[j];
nil1[j]:=nil1[i];
nil1[i]:=dum;
end;
end;
end;
writeln;
writeln('Hasil Sortir');
for i := 1 to n do
write(nil1[i]:3);
readln;
end.


III. Array Dua Dimensi
Di dalam pascal Array dapat berdimensi lebih dari satu yang disebut dengan array dimensi banyak (Multidimensional array), disini akan dibahas array 2 dimensi saja. Array 2 dimensi dapat mewakili suatu bentuk tabel atau matrik, yaitu indeks pertama menunjukkan baris dan indeks ke dua menunjukkan kolom dari tabel atau matrik.
1 2
1 2 3
Untuk mengetahui cara mendeklarasikan dari penggunaan aray dua dimensi dapat dilihat pada listing program dibawah ini .

Contoh Program:
Program Deklarasi_Array_Dua_Dimensi;
Uses Crt;
Var Tabel : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin
ClrScr;
Tabel[1,1]:=1;
Tabel[1,2]:=2;
Tabel[2,1]:=3;
Tabel[2,2]:=4;
Tabel[3,1]:=5;
Tabel[3,2]:=6;
For I := 1 to 3 Do Begin For J:= 1 to 2 Do Begin Writeln('Elemen ',i,',',j,'= ',tabel[i,j]);
End;
End;
Readln;
End.


IV. Alternatif Deklarasi Array Dua Dimensi.
Ada beberapa cara dalam mendeklarasikan array dua dimensi, beberapa cara tersebut dapat dilihat dibawah ini :
Contoh :
Var
Tabel : Array[1..3] of Array[1..2] of Byte;
atau :
Type
Matrik = Array[1..3,1..2] of Byte;
Var
Tabel : Matrik;
atau :
Type
Baris = 1..3;
Kolom = 1..2;
Matrik = Array[Baris,Kolom] of Byte;
Var
Tabel : Matrik;
atau :
Type
Baris = 1..3;
Kolom=1..2;
Matrik= Array[Baris] of Array[Kolom] of Byte;
Var
Tabel : Matrik;
Dibawah ini akan diberikan listing program penggunaan array dua dimensi dalam aplikasi penjumlahan matrik :
Contoh Prorgam:
Program Penjumlahan_Matrik;
Uses Crt;
Var
Matrik1,Matrik2, Hasil : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin
ClrScr;
{ input matrik ke satu }
Writeln(' Elemen matrik satu');
For i := 1 to 3 Do
Begin
For j := 1 to 2 Do
Begin
Write('Elemen baris -',i,' Kolom -',j,'= ');
Readln(matrik1[i,j]);
End;
End;
{input matrik ke dua}
Writeln('input elemen matrik dua');
For i:= 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Write('Elemen baris -',i,' kolom -',j,'= ');
Readln(matrik2[i,j]);
End;
End;
{proses penjumlahan tiap elemen}
For i := 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Hasil[i,j]:=Matrik1[i,j]+Matrik2[i,j];
End;
End;
{proses cetak hasil}
For i:= 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Write(Hasil[i,j]:6);
End;
Writeln;
End;
Readln;
End.


V. Array Sebagai Parameter
Array dapat digunakan sebagai parameter yang dikirimkan baik secara nilai (by value) atau secara acuan (by reference) ke procedure atau ke function. Procedure yang menggunakan parameter berupa array harus dideklarasikan di dalam judul procedure yang menyebutkan parameternya bertipe array.

Contoh Program :
Program Contoh_Pengiriman_Parameter_Array_Di_Procedure;
Uses Crt;
Const
Garis ='---------------------------------------------------';
Type
Untai = Array[1..10] of String[15];
Bulat = Array[1..10] of Integer;
Huruf = Array[1..10] of Char;
Var
i,Banyak : Integer;
Procedure Proses(Nama:Untai;Nilai:Bulat);
Var
Ket : String;
Abjad : Char;
Begin
Writeln(Garis);
Writeln('Nama Nilai Abjad Keterangan');
Writeln(Garis);
For i := 1 to Banyak Do
Begin
If Nilai[i] > 90 Then
Begin
Abjad:='A';
Ket :='Istimewa';
End;
If (Nilai[i]<90) And (Nilai[i]>70) Then
Begin
Abjad:='B';
Ket :='Memuaskan';
End;
If (Nilai[i]<70) And (Nilai[i]>60) Then
Begin
Abjad:='C';
Ket :='Cukup';
End;
If (Nilai[i]<60) And (Nilai[i]>45) Then
Begin
Abjad:='D';
Ket :='Kurang';
End;
If Nilai[i]< 45 Then
Begin
Abjad:='E';
Ket :='Sangat kurang';
End;
Writeln(Nama[i]:15,' ',Nilai[i]:4,' ',Abjad,' ',Ket:15);
End;
Writeln(Garis);
End;
Procedure Masuk_Data;
Var
Nama : Untai;
Nilai : Bulat;
Begin
Write('Banyak data =');Readln(Banyak);
For i:= 1 to Banyak Do
Begin
ClrScr;
Writeln('Data ke - ',i);
Write('Nama =');readln(Nama[i]);
Write('Nilai =');readln(Nilai[i]);
End;
Proses(Nama,Nilai);
End;
{modul Utama}
Begin
Masuk_Data;
Readln;
End.
Referensi :
# Lepkom Universitas Gunadarma.
# Dasar-dasar Pemrograman Pascal, Teori dan Program terapan , Ir.P. Insap Santosa, M.Sc.

Sabtu, 08 Mei 2010

Sistem Operasi (SO)
Posted on September 30, 2007 by panjitapen

Apa itu Sistem Operasi ?

Untuk memahami sistem operasi, terdapat dua pendekatan fungsi :

1.
1.
1.

Sistem Operasi sebagai Extended Machine ( Perluasan Mesin )

*

Pendekatan fungsi ditinjau dari arah pengguna atau top down view
*

Dilakukan berdasarkan pada kenyataan bahwa struktur internal sistem komputer pada aras bahasa mesin sangat primitif dan tidak fleksibel untuk pemrograman terutama untuk proses input/output
*

Sistem operasi dibuat untuk menyembunyikan keadaan sesungguhnya dari perangkat keras dengan tampilan yang menyenangkan dan mudah digunakan
*

Disini sistem operasi berperan sebagai penyedia interface yang sesuai berupa perluasan mesin (extended machine) atau mesin semu (virtual machine)

1.1.2. Sistem Operasi sebagai Resources Manager ( Pengelola Sumberdaya )

*

Pendekatan fungsi ditinjau dari arah perangkat keras atau bottom up view
*

Sistem operasi beperan untuk mengatur , mengorganisasikan, mengoperasikan secara keseluruhan bagian sistem yang kompleks
*

Sistem operasi mengontrol alokasi sumberdaya sistem komputer (pemroses, memori, piranti I/O) untuk berbagai program yang akan memakainya

1.
1.

Sejarah Perkembangan Sistem Operasi

1.
1.
1.

Generasi Pertama ( 1945 -1955 ) : Tabung Hampa dan Plugboard

*

belum ada bahasa pemrograman selain bahasa mesin
*

satu pekerjaan menggunakan satu mesin

1.
1.
1.

Generasi Kedua ( 1955 -1956 ) : Transisteor dan Sistem Batch

*

bahasa pemrograman Fortran atau Assembler
*

system batch : mengumpulkan sejumlah job (program) dibaca ke dalam suatu tape melalui computer tertentu ( IBM 1401), kemudian tape tersebut menjadi masukan untuk computer berikutnya (IBM 7094) yang akan menjalankan program dan melakukan komputasi, hasilnya dituliskan kembali kedalam tape dan menjadi masukan computer pertama untuk dicetak
*

system operasi : FMS ( Fortran Monitor System ), IBSYS

1.
1.
1.

Generasi Ketiga ( 1965 -1980 ) : IC dan Multiprograming

*

multiprogramming : dimaksudkan untuk mengoptimasi semua sumberdaya system computer yang tersedia, karena adanya kesenjangan proses terutama antara CPU dengan piranti I/O.

Beberapa proses berada pada saat yang sama, dengan cara mempartisi memori kedalam beberapa bagian dan menempatkan job yang berbeda pada setiap setiap partisi.

*

time sharing : variant dari multiprogramming dimana tiap pengguna mempunyai online terminal, jadi dimungkinkan adanya banyak penggunayang dapat log-in ke dalam suatu system computer.

Pengguna dialokasikan pada selang waktu yang singkat secara bergantian

*

spooling : simultaneous peripheral operation on line dimaksudkan untuk meningkatkan proses I/O yang berkaitan dengan proses baca dan tulis
*

system operasi: UNIX

1.
1.
1.

Generasi Keempat ( 1980 -1990 ) : Personal Komputer

*

system operasi

single user : MS-DOS

multi user : UNIX

*

network operating system
*

distributed operating system



1.
1.

Konsep Sistem Operasi

1.
1.
1.

Proses : program yang sedang berjalan /dieksekusi

Tiap proses terdiri dari bagian program, data dan stack program, program counter, stack pointer dan beberapa register yang lain, serta informasi lain yang dibutuhkan

Sistem timesharing : secara periodik sistem operasi akan memeriksa proses-proses yang sedang berjalan dan mengatur waktu penggunaan prosessor bagi proses-proses tersebut

System call untuk pengelolaan proses, berkaitan erat dengan pembentukan pembentukan proses serta akhir suatu proses

1.
1.
1.

File

System calls juga berhubungan dengan pengelolaan sistem file.

System calls ini harus dapat membuat file, menghapus file, membaca file, dan menulis file.

System calls harus mendukung pembuatan dan penghapusan direktori

Organisai file dibuat dala bentuk pohon (tree)

1.
1.
1.

System Calls

Program pengguna dapat berkomunikasi dengan sistem operasi untuk meminta pelayanannya melalui system calls.

Penghubung ke setiap system calls ini adalah suatu prosedur pustaka yang dapat dipanggil oleh program pengguna.

System calls memberikan layanan untuk :

*
o

Manajemen proses
o

Manajemen file
o

Manajemen directory

1.
1.
1.

Shell

Sistem operasi adalah pengelola system calls dan sebagai antarmuka antara pengguna dengan perangkat keras.

Antarmuka antara pengguna dengan sistem operasi disebut shell (Unix) atau command interpreter (MS-DOS)

Aktifnya shell ditandai dengan munculnya tanda prompt $ (UNIX) atau karakter > (MS-DOS)

1.
1.

Struktur Sistem Operasi
1.

Sistem Monolitik

*

Terdiri atas kumpulan beberapa prosedur
*

Terdapat dua mode operasi yang disediakan :

*
o

Mode kernel : seluruh instruksi boleh dipanggil
o

Mode pengguna : beberapa instruksi I/O dan instruksi tertentu tidak boleh dipanggil

*

Struktur dasar sistem monolitik :

*
o

Program utama yang menghubungi prosedur pelayanan yang diminta
o

Kumpulan prosedur pelayanan yang menyediakan system calls
o

Kumpulan prosedur utilitas yang membantu prosedur pelayanan

1.
1.
1.

Sistem Berlapis (Layered)

*
o
+

Sistem operasi diorganisasikan sebagai hirarki layer
+

Sistem pertama yang dibuat denga struktur ini adalah strukrut THE oleh E.W Dijkstra
+

Direalisasikan dengan 6 layer
o

Layer 0 : berhubungan dengan alokasi prosesor, pemindahan proses ketika terjadi interupsi atau alokasi waktu habis dan multiprogramming
o

Layer 1 : melakukan pengelolaan memori. Proses, baik dimemori utamaatau dalam drum akan segera ditransfer ke memori utama pada saat diperlukan
o

Layer 2 : menangani komunikasi antara proses dengan operator
o

Layer 3 : mengelola piranti I/O, dan menyimpan aliran informasi antar piranti ke dalam buffer
o

Layer 4 : tempat program pengguna berada, tanpa memikirkan pengelolaan proses, memori console dan piranti I/O
o

Layer 5 : tempat proses sistem operator

1.
1.
1.

Virtual Machine

*

Sistem timesharing : Menyediakan kemampuan untuk multiprogramming dan perluasan mesin dengan antarmuka yang lebih mudah
*

Struktur virtual machine ( CP/CMS, VM/370 ) terdiri atas komponen dasar utama :

*
o

Control Program, yaitu virtual machine monitor yang mengatur fungsi ari prosessor, memori dan piranti I/O. Komponen ini berhubungan langsung dengan perangkat keras
o

Conventional Monitor System, yaitu sistem operasi sederhanayang mengatur fungsi dari proses, pengelolaan informasi dan pengelolaan piranti.

1.
1.
1.

Model Client-Server

*

Kecenderungan SO modern adalah menyederhanakan struktur sistem operasi dengan menaikkan sebanyank mungkin fungsi so ke layer yang lebih atas dan meninggalkan mode kernel yang seminimal mungkin
*

Mengimplementasikansebagian besar fungsi SO pada proses pengguna
*

Dengan membagi SO dalam bagian-bagian yang menangani pelayanan file, pelayanan proses, pelayanan terminal, pelayanan memori menjadikan SO mudah dikelola
*

Untuk melayani suatu permintaan, proses pengguna sebagai proses client mengirimkan permintaan ke server proses, yang kemudian akan mengerjakan dan mengirimkan kembali jawaban
*

Pada model ini kernel hanya menangani komunikasi antar client dan server
*

Semua server dijalankan sebagai proses pada mode pengguna, tidak pada mode kernel , maka tidak ada akses langsung terhadap perangkat keras sehingga misalnya jika ada kerusakan pada file server, maka pelayanan file tidak dapat diberikan tetapi tidak menyebabkan seluruh sistem berhenti



KONSEP PROSES

2.1. Model Proses dan Implementasinya

Dalam model ini seluruh software yang berjalan di komputer diorganisasikan dalam sejumlah proses sekuensial (proses).

Secara konseptual, setiap proses mempunyai virtual CPU, namun dalam kenyataan CPU akan berpindah dari satu proses ke proses yang lain (multiprogramming)

1.

Terdapat 4 program di memori yang berjalan secara multiprogramming
2.

Program-program tersebut diabstraksikan menjadi 4 proses, yang masing-masing mempunyai flow kontrol dam berjalan secara independen
3.

Dari grafik waktu terhadap proses terlihat selama interval waktu tertentu, seluruh proses berjalan tapi dalam satu interval waktu hanya ada satu proses yang berjalan

2.1.1. Hirarki Proses

Sistem operasi yang mendukung konsep mengenai proses harus menyediakan suatu cara untuk mengcreate semua proses yang diperlukan

Untuk system yang sederhana sangat mungkin bahwa semua proses yang akan diperlukan harus sudah ada pada saat system dihidupkan.

Pada kebanyakan system , perlu suatu cara tertentu untuk dapat menciptakan dan menghapus proses yang diperlukan selama operasi.

Suatu proses dapat membentuk sub proses dan subproses dapat membentuk subproses yang lain, sehingga secara keseluruhan membentuk struktur pohon.

2.1.2. Status Proses

Pada suatu saat proses akan berada dalam status tertentu yang menggambarkan keadaan proses tersebut .

Status Proses :

1.

Running : proses sedang menggunakan CPU
2.

Blocked : proses tidak dapat berjalan sampai terjadinya event eksternal
3.

Ready : proses siap dijalankan, sementara dihentikan agar proses yang lain berjalan

Transisi yang mungkin terjadi antara status proses :

1.

Running ke blocked : transisi terjadi ketika sebuah proses tidak dapat dilanjutkan, misalnya karena sedang menunggu proses eksternal
2.

Running ke ready : terjadi ketika Scheduler memutuskan bahwa proses yang sedang berjalan telah cukup lama dijalankan, dan sudah waktunya untuk memberi kesempatan proses yang lain berjalan
3.

Ready ke running : terjadi ketika seluruh proses telah mendapat kesempatan menggunakan prosesor dan sudah waktunya proses yang pertama berjalan kembali
4.

Blocked ke ready : terjadi ketika event eksternal yang ditunggu proses terjadi (contoh proses menunggu kedatangan sejumlah input). Jika tidak ada proses yang berjalan, maka transisi 3 akan segera terjadi dan proses akan mulai berjalan

Selain model diatas terdapat pula model model sebagai berikut :

*

Model Dua Status
*

Model Lima Status
*

Penambahan status Suspend pada model Lima Status

2.1.3. Implementasi Proses

1.
1.

Tabel Proses
2.

Penerapan Mekanisme Interupsi pada Sistem Multi Programming

2.2. Penjadwalan Proses

Untuk meminimalkan waktu tanggap pengguna interaktif, penjadwal sama sekali tidak dapat menjalankan proses batch, umumnya algoritma yang mementingkan salah satu kelas proses akan merugikan kelas proses yang lain

Kesulitan yang lain yang ditemui pada penjadwalan proses adalah setiap proses bersifat unik dan tidak dapat diduga sehingga membutuhkan suatu strategi yang tetap untuk mengatasinya

Preemptive Scheduling : strategi penjadwalan yang memungkinkan proses yang sedang berjalan dihentikan

Non Preemptive Scheduling / run to complete : tidak memungkinkan proses yang sedang berjalan dihentikan

2.2.1. Algoritma Penjadwalan

1.

Penjadwalan Round Robin
2.

Penjadwalan dengan Prioritas ( Priority Scheduling )
3.

Penjadwalan Antrian Ganda ( Multiple Queues Scheduling )
4.

Penjadwalan Job Terpendek lebih dahulu ( Shortest Job First Scheduling )
5.

Penjadwalan Policy Driven ( Policy Driven Scheduling )
6.

Penjadwalan Dua Tingkat ( Two Level Scheduling )

2.2.2. Implementasi dan Evaluasi Algoritma Penjadwalan Proses

2.2.3. Mekanisme vs Kebijakan

2.3. Komunikasi Antar Proses

KONGKURENSI

KONGKURENSI

*

Proses-proses disebut kongkuren jika proses-proses berada / berjalan pada saat yang sama.
*

Proses-proses kongkuren dapat sepenuhnya tidak bergantung dengan lainnya, tetapi dapat juga saling berinteraksi
*

Proses-proses yang berinteraksi memerlukan sinkronisasi agar terkendali dengan baik.

Masalah-masalah yang dapat muncul pada proses-proses kongkuren yang saling berinteraksi :

*

Mutual Exclusion
*

Deadlock
*

Starvation
*

Sinkronisasi

Prinsip-prinsip Kongkurensi

*

Alokasi waktu pemroses untuk proses-proses
*

Pemakaian bersama dan persaingan untuk mendapatkan sumber daya
*

Komunikasi antar proses
*

Sinkronisasi aktivitas banyak proses

Mutual Exclusion

*

Terdapat sumber daya yang tak dapat dipakai bersama pada saat bersamaan

Sumber daya ini disebut critical section/region

*

Hanya satu proses pada suatu saat yang diijinkan untuk masuk critical section
*

Terdapat beberapa mekanisme yang menjamin Mutual Exclusion
*

Pemaksaan adanya mutual exclusion menimbulkan deadlock dan starvation

Deadlock

*

Ilustrasi Deadlock

Misalnya :

*

dua proses P1 dan P2
*

dua sumber daya kritis R1 dan R2
*

Proses P1 dan P2 harus mengakses kedua sumber daya

Kondisi berikut dapat terjadi : R1 diberikan ke P1, sedang R2 diberikan ke P2.

Karena untuk melanjutkan eksekusi memerlukan kedua sumber daya sekaligus maka kedua proses akan saling menunggu sumber daya lain selamanya.

Tidak ada proses yang dapat melepaskan sumber daya yang telah dipegangnya karena menunggu sumber daya lain yang tak pernah diperolehnya. Kedua proses dalam kondisi deadlock, tidak dapat membuat kemajuan apapun

Kondisi deadlock adalah kondisi terparah Karen banyak proses dapat terlibat dan semuanya tidak dapat mengakhiri prosesnya secara benar

Starvation

*

Ilustrasi Starvation

Misalnya

*

Terdapat tiga proses P1, P2 dan P3
*

P1, P2 dan P3 memerlukan pengaksesan sumber daya R secara periodik

Skenario berikut dapat terjadi :

*

P1 sedang diberi sumber dayaR, P2 dan P3 blocked menunggu sumber daya R
*

Ketika P1 keluar dari critical section, P2 dan P3 diijinkan mengakses R
*

Asumsi P3 diberi hak akses, kemudian setelah selesai, hak akses kembali diserahkan ke P1 yang saat itu kembali membutuhkan sumber daya R

Jika pemberian hak akses bergantian terus-menerus antara P1 dan P3, maka P2 tidak pernah memperoleh pengaksesan sumber daya R, meski tidak deadlock.

Pada situsasi ini P2 mengalami starvation

Mutual Exclusion

*

Mutual exclusion adalah jaminan bahwa hanya ada satu proses yang mengakses sumber daya pada suatu interval waktu tertentu.

*

Ilustrasi eksekusi daemon printer

*

Ilustrasi aplikasi tabungan

*

Kriteria Penyelesaian Mutual Exclusion

*
o

Mutual Exclusion harus dijamin : hanya satu proses yang diijinkan masuk critical section
o

Proses yang berada di non critical section dilarang memblocke proses proses lain yang ingin masuk critical section
o

Harus dijamin proses yang ingin masuk critical section tidak menunggu selama waktu yang tak terhingga, atau tidak boleh terdapat deadlock atau starvation
o

Ketika tidak ada proses pada critical section maka proses yang ingin masuk critical section harus diijinkan masuk tanpa waktu tunda
o

Tidak ada asumsi mengenai kecepata relatif proses atau jumlah proses yang ada

*
o
+

Metode-metode Penjaminan Mutual Exclusion

*

Metode naïf
o

metode variable lock sederhana

*

Metode untuk situasi tertentu
o

metode bergantian secara ketat

*

Metode menggunakan busy waiting
o

metode penyelesaian Dekker
o

metode penyelesaian Peterson
o

metode berbantuan perangkat keras menggunakan instruksi pematian interupsi
o

metode berbantuan perangkat keras menggunakan instruksi khusus
*

Metode penyelesaian level tinggi
o

metode semaphore

Metode-metode Penjaminan Mutual Exclusion

*

Metode naïf
o

metode variable lock sederhana : meniru mekanisme penguncian pintu dengan kunci pintu diganti variabel lock

variabel lock bernilai 0 : pintu tidak terkunci

variabel lock bernilai 1 : pintu terkuncigint

*

Metode untuk situasi tertentu
o

metode bergantian secara ketat

*

Metode menggunakan busy waiting
o

metode penyelesaian Dekker
o

metode penyelesaian Peterson
o

metode berbantuan perangkat keras menggunakan instruksi pematian interupsi
o

metode berbantuan perangkat keras menggunakan instruksi khusus

*

Metode penyelesaian level tinggi
o

metode semaphore

Program Mutual Exclusion dengan Lock

Program Mutex_with_lock;

Var

lock : Integer;

Procedure enter_critical_section;

{ mengerjakan kode-kode kritis }

Procedure ProsesA;

Begin

While lock <> 0 Do Begin End;

lock := 1;

enter_critical_section;

lock :=0;

End;

Procedure ProsesB;

Begin

While lock <> 0 Do Begin End;

lock := 1;

enter_critical_section;

lock :=0;

End;

Begin

lock := 0;

Repeat

Parbegin

ProsesA;

ProsesB;

Parend

Forever

End;



Mekanisme program :

Ketika proses hendak masuk critical section, proses lebih dulu memeriksa variabel lock dengan ketentuan sbb:

*
o

Jika variabel lock bernilai 0, proses men-set variabel lock menjadi 1 dan kemudian masuk critical section
o

Jika variabel lock bernilai 1, proses menunggu sampai nilai variabel lock menjadi nol (situasi ini berarti terdapat proses lain pada critical section)

Skenario yang membuat situasi kacau :

Proses A Proses B

{ lock = 0 }

membaca lock

{lock = 0 }

{ keluar dari While lock <> 0 Do ..} { lock = 0 }

{ penjadwal menjadwalkan proses B berjalan } membaca lock lock <- 1

enter critical section

{ lock = 1 } {penjadwal menjadwalkan

proses A berjalan}

lock <- 1

enter critical section



{ Dua proses secara bersamaan berada pada critical section }

Metoda melanggar kriteria mutual exclusion : hanya ada satu proses yang berada pada critical section

Pada saat proses A telah membaca variabel lock dan sebelum menset variabel lock menjadi 1, penjadwal dapat menjadwalkan proses B.

Proses B pun membaca variabel yang bernilai nol dan masuk pada critical section.

Penjadwal menggilir proses A, karena telah membaca variabel lock bernilai 0 maka proses A pun segera masuk critical section yang sedang dimasuk B.

Proses A dan Proses B berada pada critical section pada saat yang sama

*

Metode bergantian Secara Ketat

Metode ini mengasumsikan dapat menggilir masuk critical section secara bergantian.



Variable Turn : digunakan untuk mencatat nomor proses yang sedang masuk critical section



Skenario yang terjadi :

*
o

Proses 0, memeriksa variabel turn bernilai 0 dan segera memasuki critical section

*
o

Proses 1, menemukan variabel turn bernilai 0 melakukan loop memeriksa variabel turn terus menerus apakah turn telah bernilai 1



Busy Waiting

Kondisi memeriksa variabel terus-menerus, menunggu sampai suatu nilai muncul.

Jika busy waiting terjadi lama maka akan akan menyia-nyiakan waktu proses.

Metode ini bisa digunakan jika lama menunggu singkat

Program Mutex_with_strict_alternation;

Var

turn : Integer;

Procedure enter_critical_section;

{ mengerjakan kode-kode kritis }

Procedure enter_noncritical_section;

{ mengerjakan kode-kode tidak kritis }

Procedure Proses0;

Begin

Repeat

While turn <> 0 Do Begin End;

enter_critical_section;

turn := 1;

enter_noncritical_section;

Forever

End;

Procedure Proses1;

Begin

Repeat

While turn <> 1 Do Begin End;

enter_critical_section;

turn := 0;

enter_noncritical_section;

Forever

End;

Begin

turn := 0;

Parbegin

Proses0;

Proses1;

Parend

End

Skenario yang Membuat Situasi Kacau



Misal proses0 adalah prose cepat, proses1 adalah proses lambat :

Proses 0 Proses 1

{ turn = 0 }

While turn<> 0 Do ..}

enter_critical_section

turn <- 1

{ turn = 1} { turn = 1}

{ penjadwal menjadwalkan proses 1 } While turn<> 0 Do ..} enter_critical_section

turn <- 0

{ turn = 0 }

enter_non_critical_section

{penjadwal menjadwalkan

proses 0}

lock <- 1

enter critical section



{ Dua proses secara bersamaan berada pada critical section }

Metode Dengan Semaphore

Semaphore dikemukakan oleh Dijkstra

Prinsip semaphore :

*
o

Dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana
o

Proses dipaksa berhenti sampai proses memperoleh penanda tertentu
o

Variabel khusus untuk penandaan ini disebut semaphore

Semaphore mempunyai 2 properti, yaitu :

*
o

semaphore dapat diinisialisasi dengan nilai non negatif
o

terdapat dua operasi terhadap semaphore yaitu Down dan Up. Nama aslinya : P dan V

Operasi Down (P)

*
o

operasi ini menurunkan nilai semaphore
o

jika nilai semaphore menjadi non positif maka proses yang mengeksekusinya diblocked
o

operasi down adalah atomik artinya tidak dapat diinterupsi sebelum selesai

Type

Semaphore = Integer;

Procedure Down ( Var s : semaphore);

Begin

s := s – 1;

If s <= 0 then

Begin

Tempatkan proses pada antrian semaphore s

Proses di blocked

End;

End;

Operasi Up (V)

*
o

operasi ini menaikkan nilai semaphore
o

jika satu proses atau lebih telah di blocked pada suatu semaphore tak dapat menyelesaikan operasi Down, maka salah satu dipilih oleh sistem dan dibolehkan menyelesaikan operasi Down-nya
o

urutan proses yang dipilih tidak ditentukan oleh Dijkstra dapat dipilih secara acak, FIFO dll sesuai kepentingan
o

operasi UP menaikkan nilai semaphore, memindahkan dari antrian dan menempatkan proses ke antrian.

Type

Semaphore = Integer;

Procedure Up ( Var s : semaphore);

Begin

s := s + 1;

If s <= 0 then

Begin

Pindahkan satu proses P dari antrian untuk semaphore s

Tempatkan proses P di antrian ready

End;

End;

Mutual Exclusion dengan semaphore

*
o

Sebelum masuk critical section, proses melakukan Down
o

Bila berhasil maka prose masuk critical section
o

Bila tidak berhasil maka proses diblocked pada semaphore itu
o

Proses yang diblocked akan dapat melanjutkan kembali proses bila proses di critical section keluar dan melakukan operasi UP sehingga menjadikan proses yang diblocked menjadi ready dan berlanjut sehingga operasi Down-nya berhasil

Program Mutual_exclusion_with_semaphore

Const

N = 2;

Var

s : semaphore;

Procedure enter_critical_section;

{ mengerjakan kode-kode kritis}

Procedure enter_noncritical_section;

{ mengerjakan kode-kode non kritis}

Procedure Proses (i : integer);

Begin

Repeat

Down(s);

enter_critical_section;

Up(s);

Enter_non_critical_section;

Forever

End

Begin

s:=1;

Parbegin

Proses(0);

Proses(1);

Parend

End.

DIarsipkan di bawah: IT

Kamis, 08 April 2010

C++ untuk menentukan bil. prima...

#include 

#include
main()
{
clrscr();
int n;
cout<<"Program menentukan bilangan prima"< cout<<"Masukkan bilangan : ";
cin>>n;
int prima = 1;
for(int i=2; i {
if(n%i == 0)
prima = 0;
}
if(prima)
cout< else
cout< getch();
}

SQL Select Command

Used to retrieve selected data. Syntax:

SELECT [ALL | DISTINCT] columnname1 [,columnname2]
FROM tablename1 [,tablename2]
[WHERE condition] [ and|or condition...]
[GROUP BY column-list]
[HAVING "conditions]
[ORDER BY "column-list" [ASC | DESC] ]

The sections between the brackets [] are optional. A simpler syntax statement is:

select columnname1 [,columnname2] from tablename [where condition];

A "*" may be used to select all columns. The where clause is optional and only one column name must be specified.

The Where Clause

This clause is used to specify which columns and values are returned. Where conditions specify an OPERATOR to use for comparison. OPERATORs include:

  • = - Equal
  • < - Less than
  • > - Greater than
  • <= - Less than or equal
  • >= - Greater than or equal
  • <> - Not equal
  • LIKE - Allows the wildcard operator, %, to be used to select items that are a partial match. An example is:

    select city, state from towntable where state LIKE 'north%';

    This allows selection of all towns in states that begin with the word "north" allowing states like North Dakota and North Carolina to be selected.

The GROUP BY Clause

This "GROUP BY" clause allows multiple columns to be grouped so aggregate functions (listed below) may be performed on multiple columns with one command.

Aggregate function keywords:

  • AVG - Get the average of a specified column.
  • COUNT - Get the quantity of values in the column.
  • MAX - Return the maximum value in a specified column.
  • MIN - Return the minimum value in a specified column.
  • SUM - Return the sum of all numeric values in the specified column.

Example:

SELECT MAX(population)
FROM citylist;
WHERE state = 'Indiana';

Example using the GROUP BY clause which gets the smallest population of each city in every state:

SELECT MIN(population)
FROM citylist;
GROUP BY state;

The HAVING Clause

Allows selection of set test criteria on rows. You can display average size of towns whose population is less than 100.

The ORDER BY Clause

This clause lets results be displayed in ascending or descending order. Keywords:

  • ASC - Ascending order.
  • DESC - Descending order.

Other Keywords

  • ALL - Used to select all records.
  • DISTINCT - Used to select unique records. Only unique values are returned.

Example

SELECT city, state FROM towntable WHERE population > '100000';