Pages

Dokumentasi untuk memunculkan database di combobox

void initGol() {
        go.removeAllItems();

        Statement ste = null;
        ResultSet rse = null;

        try {
            konek k = new konek();
            conn = k.login();
            ste = conn.createStatement();
            String sql = "SELECT jenis from golongan order by jenis ASC";
            rse = ste.executeQuery(sql);
            while (rse.next()) {
                String no = rse.getString("jenis");
                go.addItem(no);
            }
            gol = go.getSelectedItem().toString();
        } catch (Exception e) {
            System.out.println(e);
        } finally {
            try {
                if (rse != null) {
                    rse.close();
                }
            } catch (SQLException e) {
            }
            try {
                if (ste != null) {
                    ste.close();
                }
            } catch (SQLException e) {
            }
        }
    }

Dokumentasi pencarian nama obat

private void cariobatKeyPressed(java.awt.event.KeyEvent evt) {                                    
        try {
            String nm = cariobat.getText();
            conn = (Connection) new konek().login();
            statement = conn.createStatement();
            MTObat.getDataVector().removeAllElements();
            String sql = "select idobat, jenis, namaobat,   keterangan from obat o, golongan g , satuanobat s WHERE o.idgolongan=g.idgolongan AND s.idsatuan=o.idsatuan AND namaobat like '%" + nm + "%'";
            ResultSet rs = statement.executeQuery(sql);
            while (rs.next()) {
                Object[] data = {rs.getString("idobat"),                    
                    rs.getString("jenis"),
                    rs.getString("namaobat"),
                    rs.getString("keterangan"),};
                MTObat.addRow(data);
            }


        } catch (Exception e) {
            e.printStackTrace();
        }
    }                                   


Dokumentasi insert date from date.util to mysql


 public String setDate(String date) {
        String tg = "";
        String tgl[] = date.split("-");

      
        if (tgl[1].equals("Jan")) {
            tg = tgl[0] + "-" + "01"+ "-" + tgl[2];
        } else if (tgl[1].equals("Feb")) {
           tg = tgl[0] + "-" + "02"+ "-" + tgl[2];
        } else if (tgl[1].equals("Mar")) {
            tg = tgl[0] + "-" + "03"+ "-" + tgl[2];
        }else if (tgl[1].equals("Apr")) {
            tg = tgl[0] + "-" + "04"+ "-" + tgl[2];
        }else if (tgl[1].equals("Mei")) {
            tg = tgl[0] + "-" + "05"+ "-" + tgl[2];
        }else if (tgl[1].equals("Jun")) {
            tg = tgl[0] + "-" + "06"+ "-" + tgl[2];
        }else if (tgl[1].equals("Jul")) {
            tg = tgl[0] + "-" + "07"+ "-" + tgl[2];
        }else if (tgl[1].equals("Agu")) {
            tg = tgl[0] + "-" + "08"+ "-" + tgl[2];
        }else if (tgl[1].equals("Sep")) {
            tg = tgl[0] + "-" + "09"+ "-" + tgl[2];
        }else if (tgl[1].equals("Okt")) {
            tg = tgl[0] + "-" + "10"+ "-" + tgl[2];
        }else if (tgl[1].equals("Nov")) {
            tg = tgl[0] + "-" + "11"+ "-" + tgl[2];
        }else{
        tg = tgl[0] + "-" + "12"+ "-" + tgl[2];
        }
        return tg;
    }

Dokumentasi pembobotan fungsi

untuk menyimpan jumlah[kolom]fungsi di database
public void simpenkolomfungsi() {
        konek k = new konek();
        conn = (Connection) k.login();
       // String a = null;
        //String b = null;

        try {
            statement = conn.createStatement();
            String sql = "SELECT idobat, COUNT( * ) AS jumlahfungsi FROM fungsiobat GROUP BY idobat ORDER BY idfungsiobat DESC LIMIT 1";
            ResultSet rs = statement.executeQuery(sql);
            while (rs.next()) {
                String a = rs.getString("idobat").toString();
                String b = rs.getString("jumlahfungsi").toString();

                System.out.println("idobat : " + a + " jumlah fungsi : " + b + " ");
                try {
                    statement = conn.createStatement();
                    String sqlok = "INSERT INTO temp_fungsi (idobat,totalfungsi) values('" + a + "','" + b + "')";
                    System.out.println("simpan idobat : " + a + " bobot : " + b + " ");
                    statement.executeUpdate(sqlok);
                } catch (Exception e) {
                    System.err.println("gagal : " + e);
                }
            }
        } catch (Exception e) {
            System.err.println("kacau : " + e);
        }

    }


untuk pembobotan fungsi
public String FuzzyFungsi(String n) {
        int jumlah = Integer.parseInt(n);
        String nilai = null;
        if ((jumlah <= 10) && (jumlah >= 8)) {
            nilai = "5";
        } else if ((jumlah < 8) && (jumlah >= 6)) {
            nilai = "4";
        } else if ((jumlah < 6) && (jumlah >= 4)) {
            nilai = "3";
        } else if ((jumlah < 4) && (jumlah >= 2)) {
            nilai = "2";
        } else {
            nilai = "1";
        }
        return nilai;
    }
 untuk simpan bobot fungsi ke dalam tabel bobot_fungsi
 public void simpenDatabobot() {
        konek k = new konek();
        conn = (Connection) k.login();
        String oo = null;
        String c = null;

        try {
            statement = conn.createStatement();
            String sql2 = "SELECT idobat, totalfungsi FROM  temp_fungsi  ORDER BY idtempfungsi DESC LIMIT 1";
            ResultSet rsa = statement.executeQuery(sql2);
            while (rsa.next()) {
                c = rsa.getString("idobat").toString();
                String d = rsa.getString("totalfungsi").toString();
                oo = FuzzyFungsi(d);
                System.out.println("idobat : " + c + " bobot : " + oo + " ");
                try {
                    statement = conn.createStatement();
                    String sql3 = "INSERT INTO bobot_fungsi (idobat,bobotfungsi) values('" + c + "','" + oo + "')";
                    System.out.println("simpan idobat : " + c + " bobot : " + oo + " ");
                    statement.executeUpdate(sql3);
                } catch (Exception e) {
                    System.err.println("gagal : " + e);
                }
            }
        } catch (Exception e) {
            System.err.println("kacau : " + e);
        }

    }


jangan lupa letakkan method simpenDatabobot(); di aksi JButton

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        saveData();
        simpenkolomfungsi();
        simpenDatabobot();
        int brs = TFungsi.getRowCount();
        for (int i = 0; i < brs; i++) {
            MTFungsi.removeRow(0);
        }

        awal();
        showTableDaftar();
        
    }       

Kehidupan 3tahun di Grafika


*pertama kali msuk grafika kayak msuk rumah sakit#tllau bnyak lorong
*aku ga mngerti oven di kelas sablon itu malfungsi atau multifungsi...#di pke buat ngeringin hasil sablon sekalian masak
*tiap msuk di kelas repro rasana kyak msuk rumh hantuna jatim park
*kelas setting penuh dengan kata membosankan tp jg mnyanagkan #stu2na ksmpatn bsa liat oky dr jarak deket 
*kelas design selalu kompak satu genk duduk d dpan sndiri #aku sih cm pgen liatin p.cone aja 
*WC segala macam kelamin
*tangga tempat maksiat
*adegan ambil kapur sambil muter2 sekolah sekalian beli bakso
*sparepart mesin cetak jadul di ambil trs di kiloin #akhrna q ngerti knpa skolah qt pndah dket pasar loak..mngatasi siswa yg lagi kanker
*shalat dhuhur di masjid skolah #mnghindari mata pelajaran prtama skalian Tepe2 di senior
*si itu lho yang bawa motor ini#cew2 lebih hapal motor daripada nama yang punya
*Razia sepatu # momen kedua q nangis di kelas
*panderman bukit cintana anak grafika
*mancing ikan di kolam depan kleas pas pelajaran repro #ikan empang aja semangat 45 bwa senar sama umpan dari rumah
*basecamp #tempat keren dan penuh kenangan harus direlakan demi broadcasting TV pendidikan
*perpus #tmpat q brnaung kl lagi bosen dan kanker
*harun yahya dan teori darwin #hubunganna sama KKPI apa pak??
*Pak apa sih gunanya pelajaran matematika yang sulit bin njlimet itu di lapangan nnti,kan qt designer pak...#pertanyaanna begoNa si candra
*ayam abu2,black market,jack daniels,sampoerna,nyolong hardisk,keyboard,speaker,headset #grafika undercover
*jari kepotong mesin, kelindes rol cetak,rambut ketarik mesin plat #kejadian mengerikan tahun2 pertama
*duduk, menyimak tapi pikiran gak di tempat #kebiasaanku di kelas matematika
*tidur di tengah2 jam repro #capek abis begadang ambil paketan di warnet
*tukeran hadiah #kebiasaan ku sama shincan
*minum air keran di sekolah #lagi kanker stadium akhir
*nagih uang LKS ala preman #sapa suruh q jadi bendhara
*INTER ARMA CARITAS #PMR,Paskibra,Pramuka, eskul males2n
*main pingpong pas pelajaran #drpda meja pingpongna nganggur
*ini jam olahraga, bukan saatnya makan bakso #kan qt g bisa maen sepak bola pak 
* kelas kimia #stu2na guru pelit yg nilai
*makan gorengan di sebelah sekolah #pisang goreng di makan sma petis??zzzz
*makan nasgor di cafe sebelah sekolah #awal bulan aja. akhir bulanna brakhir di warteg sebelah kos2an
*penggemar no satu...penggemar no lima # kebiasaan burukku
*ketemu co yg gak pengen di temuin #sin, langkah cepat
*pesen kopi ya bu #traktiranna anak2 cowok di kelas
*bu, SPPna belum ada diskon ya?? #kerjaan q di bag.keuangan.kasian..ibu SPPna meninggal dunia padahal masih muda
*mutilasi sayur2an #pelajaran pertama photosop
*flashdisk pertama q 512 hargana 150 modelna sama ky sinta, isinya bukan pelajaran tp gmbar2 #komputerna Sinta 60% gambar kartun
*guru2 yg muda GRin murid #pengalaman pribadi
*kakiku kelindes ban mobilnya guru setting#jaim depan ank2 pura2 g sakit dalam hati pengen teriak
*alun alun kota #pusat hiburan murah meriah anak grafika
*pacaran sama senior #jamanna hape sm email msh ngrim surat lewat pos
*terpesona terus cinlok terus merid #guru2 di grafika banyak yg masih muda
*makan gak makan ngumpul #motonya anak pramuka
* ga bapak,g ibu,g anak,g adek,g spupu skolahna di grafika #guru2 smpe hapal smua turunanna.guruna juga anak grafika
*jam repro paling asik!! Kelasna di blkang sendiri,gurunya cm ngasih tugas terus ilang. p.har(paling cs sama murid2) malah tidur di klas. anak2 keluyuran ke kantin (yang sekarang jadi foodcourt), perpus, tiduran di masjid sekolah, mancing yang lain belajar maen skateboard di lorong skolah
*kolam depan kelas cetak sudah terkontaminasi pipisna nike x_x
*shinta jelek #tiba2 nangis d toilet cew ktana kcewa g bsa jd ------ (penting ya sin??)
*shinta dan aku, nisa selalu jadi korban setiap upacara baris di depan sendiri #soalna rajin bawa topi sekolah,kalo q cuma pengen sebelahan ma oky aja 
*di meja sekolah banyak coretan no HP #maklum g laku. promosinya lewat bangku (keajaiban moving class)
*owwww bang AW!!! #nyindirrr :))
*bau asep di kelas repro #guru2 produksi ma murid2na lagi bakar ubi di belakang sekolah
*kewirausahaan #q pikir cuma teori padahal plajaranna ngitung kertas berdasarkan tebal,jenis dan ukuran untuk mesin cetak
*shinta selalu menyeretku duduk di bangku paling depan atau barisan ke dua di setiap pelajaran
*pas basket ada yang g sngaja nyenggol..... #nyindir lagi :))
*pelajaran PKS matanya selalu meleng ke lapangan basket#OMIGOD senior2 kita ganteng2
*abis ospek pasti seniornya ada yang jadian ma junior#q gak trmasuk
*status nya jomblo?? #prtanyaan q di candra pas perkenalan ospek
*pertama kali masuk grafika mukanya pada culun2 terus rajin abis PKL mendadak jadi bajingan smua
*abis PKL setaun pas ketemu udah ky orang joss semua..pakaian udah necis,hp udah punya, tambah pede, udah makin pinter (pinter ngeles sama gombal) tapi amnesia sama plajaran2
*Pas brgkt PKL semua pada sedih harus pisah setaun. pas ketemu semingguan pada crita2 sampe bosen
*pas PKL selalu ada pejuang yg kalah di medan perang dan akhrna out dari sekolah :((
*PKL di sekolah #pling apes. udah gak dapet duit...kerja rodi 
*mas VIKI ketua osis pling ganteng 
*bu dwi sma bu sri #srikandi grafika,kaki tangan kepsek
*pak..udah merid atau belum #perkenalan sama guru mat pa kun*m
*dicariin bu wiwik dikantin gara" kelasna kosong
*ngobrol berempat bareng shita nike setelah liburan panjang..ngobrolin first kiss
*ya ampun Okyyy...kata2 yang sering terdengar
*dimarahi bu sri gara2 sering keluar kelas ijin ke km
*makan sama2 di ruang repro satu kelas
*warung gorengan sebelah sekolah namanya markas,,,kalo gak ada duit ya cukup beli krupuk sama petis
*malem taon baru 2006 pertama kali aku keluar di malam taon baru..ujan2an...
*sinta..sinta..sinta..laguna nirina zubir yang diplesetkan #nyindir wkwkwk
*bu dian..wali kelas yang smp sekaran masih bisa dikontak
*siang2 panas disuruh push up sama senior #melepuh rekkk
*istri empat grak #pakGembuk
*angel as himawari | shinta as chibi maruko chan | nike as jayko | shita as shiro petoes
*ditembak sama temen barengan pulang #nyindir
*bawa baju ganti buat jalan2 ke Ramayana sebelum masuk sekolah
*waktu pertama kali pake catlepack berasa bangga buat anak PS sm Pd
*waktu pertama kali dapet baju olahraga berasa jijay
*suatu hari ada banyak yang kesurupan ,,ada pesta hantu di bagian belakang skola _katanya
*gak suka dipanasin waktu selese upacara sama pak gembuk
*kalo lagi olahraga lebih sering nongkrong di kantin dari pada olahraganya
*pak anam..guru yang sering ngebanyol di dpn kelas sendiri, ketawa2 sendiri,.muridna pada tidur smw
*pernah dpt teguran menohok dri guru pks [pak kubam] "tulisan merusak mata"
*suka NGETRENK
*tiap hari ke skul #eskulTime
*kalo di repro slalu duduk berempat #pampers jadi banyak ngobrolnya
*sombongnya minta ampun waktu punya flashdisk 512 mb..baru pertama keluar..disekolah dipamerin ke anak2..

by: @AngelHimawari dilengkapi oleh @Re29_

APLIKASI SIAKAD MOBILE LAPORAN HASIL BELAJAR SISWA


APLIKASI SIAKAD MOBILE LAPORAN HASIL BELAJAR SISWA

Shinta Rahayu E(08650153)
Jurusan Teknik Informatika, Fakultas Sains dan Teknologi
UIN Maulana Malik Ibrahim Malang

Abstrak, Aplikasi yang dibuat dengan menggunakan bahasa pemrograman Java yang diimplementasikan pada perangkat mobile yaitu Java 2 Micro edition atau J2ME, untuk membangun sebuah aplikasi siakad yang mengakses webserver. Aplikasi ini diharapkan bermanfaat bagi para orangtua untuk mengetahui nilai-nilai ulangan, UTS maupun UAS sehingga orang tua lebih mudah dalam memantau perkembangan anak-anak mereka serta bagi para guru yang menguasai perangkat mobile untuk dapat terus mengupdate nilai-nilai dari anak didiknya.
Pembahasan dalam paper ini dimulai dari pemahaman desain sistem, kemudian disertai dengan alur-alur dari user-user yang terlibat. Dilengkapi pula dengan desain database dan kebutuhan data yang diperlukan.
Kata Kunci  : J2ME, SIAKAD, RAPORSISWA

1.       PENDAHULUAN
Setiap lembaga pendidikan selalu menginginkan kemajuan dari anak didik mereka.  Misalnya dengan memprogram ulangan, UTS maupun UAS. Hasil dari ulangan, UTS maupun UAS menjadi parameter perkembangan kegiatan belajar mengajar tersebut. Oleh karena itu, pendidik juga perlu untuk mengupdate data kapan saja dan dimana saja.
 Lembaga pendidikan yang mengeluarkan tenaga pendidik berkualitas ternyata tidak cukup ampuh untuk meningkatkan perkembangan anak didik. Oleh karena itu, lembaga pendidikan memerlukan kerja sama yang baik dengan wali murid. Wali murid atau orang tua memiliki peran penting dalam perkembangan anak. Dengan memantau perkembangan hasil belajar anaknya, orang tua akan mengetahui bagaimana cara memotivasi anak tersebut. Tapi seringkali, anak tidak jujur kepada orang tuanya mengenai hasil dari ulangan, UTS maupun UAS. Sehingga banyak info dari sekolah yang tidak sampai ke orang tua. Oleh karena itu dibutuhkan sebuah sistem informasi akademik laporan hasil belajar yang mampu diakses orang tua/wali murid dimana saja dan kapan saja.
Tujuan dibentuknya sistem infomasi ini adalah orang tua dapat mengakses nilai  secara real time. Selain itu, tenaga pendidik dapat mengakses dan memanipulasi data secara real time. Sedangkan dari segi manfaatnya banyak sekali, misalnya orang tua dapat memantau perkembangan kapan saja dan dimana saja sehingga orang tua tahu bagaimana cara memotivasi anaknya tersebut. Dari segi tenaga pendidik, manfaat yang diperoleh adalah kemudahan dalam mengankses dan memanipulasi data. Selain itu aplikasi ini juga mengurangi tindak ketidak jujuran anak.

2.       RANCANGAN SISTEM
Desain sistem disini melibatkan dua user yaitu guru dan wali murid. User pertama yaitu guru,  ruang lingkupnya hanya sebatas melihat laporan nilai dan input mata pelajaran. Sedangkan wali murid, ruang lingkupnya sebatas mengakses database dan melihat laporan nilai anak mereka. Sistem ini dirancang dengan sifat real time. Oleh karena itu, guru maupun wali murid dapat mengaksesnya kapan saja dan dimana saja. Untuk gambaran lebih jelasnya lihat gambar 2.1.

Ryan Cabrera - True

I won't talk
I won't breathe
I won't move till you finally see
that you belong with me

you might think
I don't look
but deep inside in the corner of my mind
I'm attatched to you
mmmm

I'm weak
it's true
cause I'm afraid to know the answer
do you want me too?
cause my heart keeps falling faster

[chorus]
I've waited all my life to cross this line
to the only thing thats true
so I will not hide
i'ts time to try anything to be with you
all my life I've waited
this is true

you don't know
what you do
everytime you walk into the room
I'm afraid to move

I'm weak
it's true
I'm just scared to know the ending
do you see me too?
do you even know you meant me!

[Chorus]
I've waited all my life to cross this line
to the only thing thats true
so I will not hide
its time to try anything to be with you
all my life I've waited
this is true

I know when I go
I'll be on my way to you
the way that's true

[chorus]
I've waited all my life to cross this line
to the only thing thats true
so I will not hide
its time to try anything to be with you
all my life I've waited
this is true

Jatuh Cinta Ala Anak TI

Jika cinta itu OOP,
Maka, cintaku padamu bagaikan sebuah kelas yang extend ke kelas hati. dimana kelas itu memiliki properties dengan atribute final dengan prefilages private, tidak akan berubah-ubah valuenya sampai akhir waktu.
Jika cinta itu adalah Tipe Data,
Maka, cintaku padamu adalah boolean yang akan selalu kupertahankan tetap true.
Jika cinta itu Method,
Maka, method itu adalah sebuah method yang bersifat rekursif, yang tidak akan pernah berhenti di eksekusi jika status hidupku belum mati.
Jika cinta itu Object,
maka, fungsi destroy(); object tidak akan pernah bisa dipakai. karena sudah di override dengan fungsi looping didalamnya.

Jika cinta itu Array,
maka, cintaku padamu tak pernah empty jika di unset(). 
Jika cinta itu Java,
maka, kemurnian code cinta ini melebihi kelas manapun yang pernah dibuat. kelas cintaku padamu tidak akan pernah di akses oleh kelas-kelas lain dengan cara apapun.

Jika cinta itu php,
maka, cintaku padamu tidak akan berhenti ketika seseorang asing mencoba menambahkan code die(); karena fungsi itu sudah aku hapus dari core php yang ada.
Jika cinta itu Sistem Operasi,
Maka, tak akan kubiarkan cinta ini terkena virus yang bisa mengganggu stabilitas dan eksistensinya sebagai sistem operasi yang tangguh. kalau perlu akan kugunakan sistem operasi yang kebal virus.

Jika cinta itu Algoritma,
Maka, cinta hanyalah logika.

Jika cinta itu Sequential,
Maka tidak akan ada syarat apapun didalam IF..Karena cinta itu buta..
Jika cinta itu Router,
Maka aku akan selalu masuk global conf mode untuk membuatmu tetap terconfigure.

Jika cinta itu LOOPING,
while (Love)
{
withYouForever();
protectYou();
lovingYou();
makeYouHappy();
eternalLove();
}


sumber

Intelligence

INTELLIGENCE

Nursyahira Nabilla (08650122), Suci Nur Fauziah(08650146), Shinta Rahayu E(08650153)
Jurusan Teknik Informatika, Fakultas Sains dan Teknologi
UIN Maulana Malik Ibrahim Malang

Abstrack  -Intelligence merupakan sebuah konsep yang rumit  dimana semua orang mengetahuinya
namun dalam pemahaman yang berbeda-beda dalam beberapa dimensi. Terdapat dua belas tugas yang dapat kita lakukan dengan menerapkan AI.  Desain yang berhubungan dengan AI perlu  lebih spesifik, terukur, dapat dicapai, dan lebih  lebih realistis pada object tersebut. Untuk merancang objek yang cocok, maka perlu mengusulkan disain object secara keseluruhan. Salah satu disain objek yang mungkin adalah meniru kecerdasan manusia. Selain kemampuan manusia untuk bercakap, manusia  juga memiliki kemampuan memecahkan masalah, dimana diharapka kehidupan buatan yang kita ciptakan memiliki beberapa kemampuan manusia seperti bercakap dan memcahkan  masalah.

Kata Kunci : Intelligence, Artificial Intelegence

1.  APA KECERDASAN ITU??
Intelligence atau kecerdasan adalah konsep yang rumit dimana semua orang mengetahuinya namun
dalam pemahaman yang berbeda-beda dalam beberapa dimensi. Demikian pula, peneliti AI dengan latar belakang pengetahuan teknik dan pendekatan simbolis menjelaskan kecerdasan AI akan menggunakan
bahan-bahan seperti berikut ini:
  • kapasitas untuk memperoleh dan menerapkan pengetahuan;
  • kemampuan untuk melakukan penalaran, dan
  • kemampuan untuk membuat keputusan dan  rencana untuk mencapai tujuan tertentu.
Peneliti AI yang lebih memilih pendekatan berbasis perilaku akan menggambarkan perilaku cerdas adalah sebagai berikut:
  • kemampuan untuk melakukan tindakan yang cerdas
  • kemampuan untuk menunjukkan pengetahuan tentang konsekuensi dari tindakannya, dan
  • kemampuan  untuk menunjukkan pengetahuan tentang bagaimana untuk mempengaruhi atau mengubah lingkungan dalam rangka untuk mengubah hasil dan mencapai tujuannya.

Jika kita berpikir dari kecerdasan menggunakan analogi pemetaan, maka kita akan mengambil kesimpulan bahwa agen cerdas adalah sebagai berikut:
  • kemampuan mewujudkan suatu, mengenali lingkungannya, baik yang nyata dan abstrak (yaitu mengenali pola-pola untuk menyediakan penyederhanaan berguna dan / atau karakteristik dari lingkungan nya);
  • kemampuan untuk menggunakan peta untuk navigasi sekitar lingkungan tersebut;
  • kemampuan untuk memperbarui peta ketika menemukan mereka tidak cocok realitas; dan
  • kemampuan untuk berkomunikasi rincian peta untuk agen lainnya.


2.  KECERDASAN TANPA REPRESENTASIDAN ALASAN 
Dalam kondisi apapun, agent tidak membutuhkan representasi eksplisit dari lingkungannya. Dan agen
tidak membutuhkan dasar pengetahuan eksplisit mengenai kondisi di sekitarnya karena agen mampu berinteraksi secara langsung dengan lingkungan tersebut.
Dalam merancangsistem AI,  kita tidak mungkin harusmelakukan semua pekerjaansendiri.  Jika kita dapat menemukancara yang tepat untukmenyiapkankondisi awaldari sistem,sistem itu sendiri akan melakukan pekerjaan untuk kita, dan melalui self-organisasi, kecerdasan  akan muncul sebagai  hasilnya. Sayangnya, meskipun ide ini sangat menarik,  tidak ada yang belum sudah tahu cara  mengatur kondisi awal yang diperlukan.

3.  APA YANG DAPAT DILAKUKAN AI DAN APA YANG TIDAK DAPAT DILAKUKAN AI
Ray Kurzweil (1990) dalam The Age of Mesin Cerdas telah membuat banyak prediksi tentang teknologi komputer dan AI secara khusus, banyak yang telah terjadi, tapi beberapa yang tidak (seperti
prediksi bahwa pada tahun 2009, pengguna akan bergantung terutama pada pengenalan suara untuk
berkomunikasi dengan PC mereka daripada menggunakan keyboard). Ini akan menjadi peristiwa
mengubah dunia mengganggu yang akan selamanya mengubah arah sejarah manusia dan akan terjadi
ketika AI melampaui manusia sebagai entitas yang paling cerdas di planet ini. Sejak saat itu,  pengembangan teknologi akan diambil alih oleh mesin, dan kita, sebagai manusia, tidak akan lagi
mampu bersaing. Hal ini sangat sulit untuk memprediksi masa depan, terutama ketika datang ke
kemajuan teknologi, dan apakah prediksi Kurzweil itu terwujud kita harus menunggu dan melihat.
Daripada memprediksi apa AI mungkin bisa mencapai di masa depan, kita malah dapat memeriksa
apa yang telah dicapai AI di masa lalu, dan juga kita lihat saat ini. Sebagai contoh, Berikut daftar dua
belas tugas yang kita dapat menerapkan AI.
1.  Memainkan permainan tenis meja yang layak. 
2.  Drive di pusat Kairo. 
3.  Membeli belanjaan mingguan di pasar atau diWeb. 
4.  Memainkan permainan yang layak dari jembatan di tingkat kompetitif. 
5.  Menemukan dan membuktikan teorema matematika. 
6.  Menulis cerita lucu. 
7.  Memberikan nasihat hukum yang kompeten di daerah khusus hukum. 
8.  Menerjemahkan bahasa Inggris ke Swedia yang diucapkan berbicara secara real time. 
9.  Melakukan operasi bedah yang kompleks. 
10.  Mengenali dan menghargai estetis Mona Lisa. 
11.  Membuat Elvis virtual. 
12.  Melakukan semua di atas.

4.  SASARAN DISAIN YANG BAGUS
Dalam  manajemen  proyek,  ada  akronim  terkenal yang digunakan  untuk memandu  kegiatan untuk
memperoleh sasaran disain  yang baik  yaitu SMARTER. Berikut singkatannya:
HURUF  Mayor Atribut Minor Atribut
S  Specific  Penting, sederhana
M  Measurable  Bermakna, motivasional, dapat diatur
A  Achievable    Dapat dicapai, disetujui, cocok, 
R  Realistic    Bersangkut-paut, berorientasi pada hasil, 
T  Time-bound  Jangka waktu, tepat waktu, dijadwalkan
E    Menyenangkan, dievaluasi, etis
R    Direkam, memberi manfaat

Disain yang berhubungan dengan Artificial Intelligence maka perlu yang  lebih spesifik, terukur, dapat dicapai,  dan  lebih  lebih  realistis  pada object tersebut.

5.  BEBERAPA OBJECT DISAIN PADA ARTIFICIAL INTELLIGENCE
Untuk merancang objek yang cocok, maka perlu mengusulkan disain object secara keseluruhan. Salah
satu disain objek yang mungkin adalah meniru kecerdasan manusia. Tujuan dengan dibuatnya sistem
ini adalah dapat membangun sebuah objek  yang cerdas yang mungkin membantu dalam beberapa hal. 
Desain  untuk sistem  Artificial Intelligence  antara lain:
a.  Design Principle 1:  Sistem AI seharusnya sistem yang berorientasi agent
b.  Design Goal 1: Sistem AI seharusnya meniru kecerdasan manusia
c.  Design Objective 1.1: Sistem AI seharusnya bertindak dengan cara berpengetahuan
d.  Design Objective 1.2: Sistem AI seharusnya bertindak cerdas
e.  Design Objective 1.3: Sistem AI seharusnya bertindak rasional.
f.  Design Objective 1.4: Sistem AI seharusnya bertindak sendiri
g.  Design Objective 1.5:  Sistem AI seharusnya berfikir
h.  Design Objective 1.6: Sistem AI seharusnya bertindak seolah-olah sadar.
Desain Object untuk Agent Dipercaya, maka harus memenuhi hal-hal berikut:
a.  Design  Object 2.1:Sebuah sistem  AI  harus lulus  tes  kepercayaan untuk bertindak dalam cara yang berpengetahuan: ia  tidak hanya harus memiliki kemampuan untuk memperoleh pengetahuan, tetapi juga  harus bertindak  secara  luas,  dengan memamerkan pengetahuan  - dari dirinya sendiri, agen  lain, dan lingkungan  -  dan  menunjukkan  pemahaman pengetahuan itu. 
b.  Design Object 2.2: Sebuah sistem  AI  harus lulus  tes  kepercayaan untuk bertindak  dalam cara yang  cerdas dan penalaran.  Ini  harus dapat memecahkan masalah untuk dirinya sendiri,  melalui pengamatan  dan pembelajaran,  dan  melalui  penalaran.  Ini  juga harus mampu menerapkan solusi dari satu domain masalah yang lain tanpa menunjukkan bagaimana melakukannya.
c.  Design Object 2.3: Sebuah sistem AI harus lulus tes kepercayaan untuk bertindak dalam cara yang rasional: pertama, dengan memastikan kesempatan terbaik untuk bertahan hidup dari dirinya sendiri dan
keluarga sendiri atau orang lain dari jenisnya, kedua, dengan berbagi pengetahuan yang telah diperoleh dengan agen lainnya, dan ketiga, dengan memilih untuk bertindak sesuai dengan preferensi sendiri pribadi.
d.  Design Object  2.4: Sebuah sistem  AI  harus lulus  Test  Cermin  dan menguji kepercayaan untuk bertindak sebagai jika sadar diri.
e.  Design Object  2.5: Sebuah sistem  AI  harus lulus  tes  kepercayaan untuk bertindak sebagai jika berpikir dan sadar.
f.  Design Object  2.6: Sebuah sistem  AI  harus lulus  Tes Turing  untuk intelijen.  Pemikiran  untuk menguji  rasionalitas, perhatian dan kesadaran.

6.  MENUJU AGEN TERPERCAYA
Jika tujuan kita untuk menciptakan sebuah sistem yang memenuhi kriteria kepercayaan, maka dapat
dilanjutkan dengan mengikut apa yang disebut “artificial life path” untuk mencapai tujuan. Dalam
pendekatan ini, tujuannya adalah untuk menciptakan kehidupan buatan dari meningkatnya kompleksitas
dan realisme, baik nyata (misal robot) atau virtual (makhluk virtual). Joseph Weinzenbaum merancang agen percakapan pertama yang disebut Eliza pada  pertengahan  1960-an,  dia  digambarkan sebagai sebuah  tiruan dari seorang psikoterapis  Rogerian.  Tidak lama setelah itu,  Kenneth  Colby  menemuka   agen percakapan lain yang  disebut Parry pada tahun 1972 yang disimulasikan  penderita skizofrenia paranoid.  Model NetLogo ChatBot menunjukkan bagaimana mudahnya untuk membuat percakapan agen sederhana seperti Eliza dan Parry. 
Lihatlah aturan yang menunjukkan bagaimana ekspresi reguler         didefinisikan. Aturan pertama
memiliki teks sederhana string "hello" sebagai ekspresi reguler tanpa karakter khusus dengan makna
yang spesifik (ini disebut 'karakter meta'). Dalam kasus ini, aturan tersebut hanya akan cocok ketika
pengguna memasukkan teks yang tepat string "hello". Tanggapan dari ChatBot adalah memberi
salah satu jawaban yang dipilih secara acak dari daftar berikut: "Siapa Anda?"," Mengapa Anda
berbicara kepada saya?", "Apa yang kau inginkan? "dan" Bagaimana kau tahu aku?". Para aturan kedua
juga memiliki ekspresi reguler tanpa karakter meta. Ini hanya akan cocok dengan string “Bye” dan
merespon dengan baik “bye” atau “yeah bye”. Aturan ketiga menggunakan ekspresi reguler dengan meta karakter tunggal  "?" yang berarti bahwa karakter sebelumnya adalah opsional, maka baik ejaan
Amerika dan ejaan Inggris dari kata yang sama, "color" dan "colour", akan cocok. Aturan  keempat
menggunakan ekspresi reguler "(\  \ w +) @ (\  \ w +\ \.) (\  \ w +) (\  \.  \  \ w +) *" untuk  mendeteksi ketika pengguna telah mengetik username (sesuatu dengan karakter '@', beberapa penuh berhenti '.' dan intervensi urutan yang sering digunakan di seluruh aturan. Urutan meta ini akan cocok dengan setiap urutan intervensi karakter. Oleh karena itu, aturan tertentu akan cocok dengan pernyataan “Apakah anda bot?” Dimana string “Apakah anda” cocok dengan urutan meta pertama, dan” ”?” cocok dengan urutan meta kedua cara ekspresi reguler bekerja juga akan mengartikan bahwa aturan ini juga akan cocok dengan masukan pengguna seperti “Saya seorang bot juga”, “Aku tidak suka bot”, “-bot-” dan “=bot?”. Ini menunjukkan bagaiman menggunakan ekspresi reguler dapat menjadi kutukan dan berkah. Dikatakan kutukan bila terlalu banyak string yang kita tidak ingin   dicocokkan, dan dikatakan  berkah karena kita dapat menentukan berbagai string tak terbatas hanya
dengan beberapa karakter meta. Kode yang mendefinisikan apa yang  terjadi ketika tombol ditekan chatting di Interface tercantum dalam NetLogo Kode 10.2.

 7.  MENUJU KOMPUTER DENGAN KEMAMPUAN MEMECAHKAN MASALAH
Kemampuan bercakap hanya salah satu bahan dari kecerdasan manusia. Bahan lain yang penting adalah
kemampuan  memecahkan masalah. Manusia memiliki kemampuan yang unik untuk memecahkan
masalah.  Untuk ilustrasi, mari  kita memeriksa tujuh masalah yang membutuhkan kecerdasan untuk solusi mereka: 
1.  Mencari solusi yang lebih baik.
2.  Mewakili pengetahuan
3.  Memelihara percakapan dengan manusia
4.  Membuat kehidupan buatan
5.  Membuat kecerdasan buatan.
6.  Membuat aliran air menanjak.
7.  Mencari metode umum pemecahan masalahyang dapat diterapkan untuk semua masalah ini.

8.  KESIMPULAN
Bahwa sistem AI masa depan akan  melakukan pekerjaan untuk kami.  Atau jika kita dapat
membangun sistem AI dengan pemecahan masalah serupa kemampuan untuk manusia, sistem bisa
menemukan cara untuk memecahkan masalah bagi kami, karena akan memiliki kemampuan untuk
menghasilkan dan menguji  solusi lebih cepat dari yang kita bisa. Kemungkinan baik, bagaimanapun,
membutuhkan beberapa terobosan besar sebelum mereka dapat direalisasikan. Sebuah  ringkasan dari  konsep-konsep penting  yang harus dipelajari dari bab ini adalah sebagai berikut:
-  Ada banyak cara untuk menerapkan kecerdasan yang berbeda
-  Kemampuan percakapan (chatting) adalah unsur penting untuk kecerdasan.
-  Kemampuan memecahkan masalah adalah unsur terpenting dalam kecerdasan
-  Object SMARTER pertama kali dibutuhkan ketika mendisain system AI
-  Sistem AI yang mulai menghasilkan hasil yang sangat baik  di banyak bidang,  tetapi untuk masih ada  banyak  pekerjaan yang harus dilakukan untuk mencapai hasil yang kompetitif bagi manusia.
-  Kepercayaan  diusulkan  sebagai kriteria  untuk pengujian AI dalam lingkungan virtual.

9.  DAFTAR PUSTAKA
William John Teahan.  “Artificial Intelligence- Agent Behaviour”. 2010. Hal 199-231

MANAGEMENT INPUT/OUTPUT DAN PENJADWALAN DISK


A. Klasifikasi Perangkat I/O
Pengolahan Perangkat Input/Output merupakan pengolahan perangkat lunak yang mengatasi penggunaan perangkat masukan dan keluaran. Pengelolaan perangkat I/O merupakan aspek perancangan sistem operasi yang terluas karena beragamnya peralatan dan begitu banyaknya aplikasi dari peralatan-peralatan itu.
Manajemen I/O mempunyai fungsi, di antaranya:
·                 Mengirim perintah ke perangkat I/O agar menyediakan layanan.
·                 Menangani interupsi peralatan I/O
·                 Menangani kesalahan pada peralatan I/O
·                 Memberi interface ke pemakai.
Berdasarkan sasaran komunikasi, klasifikasi perangkat I/O atau divice dibagi menjadi beberapa tipe. Tipe-tipe device secara umum dibagi menjadi device penyimpanan (disk, tape), transmission, device (peralatan yang cocok untuk komunikasi dengan peralatan-peralatan jarak jauh seperti modem) dan human-interface device (Peralatan yang terbaca oleh manusia seperti keyboard, mouse). Device- device tersebut dikontrol oleh instruksi I/O. Alamat-alamat yang dimiliki oleh device akan digunakan oleh direct I/O instruction dan memory-mapped I/O .
Klasifikasi lain yang dapat dilakukan terhadap peralatan I/O adalah berdasarkan unit transfer yang dilakukan perangkat I/O, yaitu sbb:
a)     Perangkat berorientasi blok (block-oriented devices) Peralatan mentransfer dari dan ke  peralatan dengan satuan transfer adalah satu blok (sekumpulan karakter) yant telah ditentukan.
b)     Perangkat berorientasi aliran karakter (character-oriented devices) Peralatan mentransfer dari dan ke peralatan berupa aliran karakter.



B.  Teknik Pengoperasian Perangkat I/O
  Teknik Pengoperasian Perangkat I/O meliputi:
1)    Perangkat I/O terprogram (programmed I/O)
Merupakan perangkat I/O komputer yang dikontrol oleh program. Contohnya, perintah mesin in, out, move. Perangkat I/O terprogram tidak sesuai, untuk pengalihan data dengan kecepatan tinggi karena dua alasan yaitu:
Ø  Memerlukan overhead (ongkos) yang tinggi, karena beberapa perintah program
harus dieksekusi untuk setiap kata data yang dialihkan antara peralatan eksternal dengan memori utama.
Ø   Banyak peralatan periferal kecepatan tinggi memiliki mode operasi sinkron,
yaitu pengalihan data dikontrol oleh clock frekuensi tetap, tidak tergantung
CPU.
2)   Perangkat berkendalikan interupsi (Interrupt I/O)
Interupsi lebih dari sebuah mekanisme sederhana untuk mengkoordinasi pengalihan I/O. Konsep interupsi berguna di dalam sistem operasi dan pada banyak aplikasi kontrol di mana pemrosesan rutin tertentu harus diatur dengan seksama,
a. Mekanisme Dasar Interupsi
 Ketika CPU mendeteksi bahwa sebuah controller telah mengirimkan sebuah sinyal ke interrupt request line (membangkitkan sebuah interupsi), CPU kemudian menjawab interupsi tersebut (juga disebut menangkap interupsi)dengan menyimpan beberapa informasi mengenai state terkini CPU --contohnya nilai instruksi pointer, dan memanggil interrupt handler agar handler tersebut dapat melayani controller atau alat yang mengirim interupsi tersebut.

b.  Fitur Tambahan pada Komputer Modern

 Pada arsitektur komputer modern, 3 fitur disediakan oleh CPU dan interrupt controller (pada perangkat keras) untuk dapat menangani interrupsi dengan lebih bagus. Fitur-fitur ini antara lain adalah kemampuan menghambat sebuah proses interrupt handling selama prosesi berada dalam critical state, efisiensi penanganan interupsi sehingga tidak perlu dilakukan polling untuk mencari device yang mengirimkan interupsi, dan fitur yang ketiga adalah adanya sebuah konsep multilevel interupsi sedemikian rupa sehingga terdapat prioritas dalam penanganan interupsi (diimplementasikan dengan interrupt priority level system) .

c.  Interrupt Request Line

 Pada peranti keras CPU terdapat kabel yang disebut interrupt request line , kebanyakan CPU memiliki dua macam interrupt request line , yaitu nonmaskable interrupt dan maskable interrupt. Maskable interrupt dapat dimatikan / dihentikan oleh CPU sebelum pengeksekusian deretan critical instruction (critical instruction sequence) yang tidak boleh diinterupsi. Biasanya, interrupt jenis ini digunakan oleh device controller untuk meminta pelayanan CPU.

d.  Interrupt Vector dan Interrupt Chaining

 Sebuah mekanisme interupsi akan menerima alamat interrupt handling routine yang spesifik dari sebuah set, pada kebanyakan arsitektur komputer yang ada sekarang ini, alamat ini biasanya berupa sekumpulan bilangan yang menyatakan offset pada sebuah tabel (biasa disebut interrupt vector ).Tabel ini menyimpan alamat- alamat interrupt handler spesifik di dalam memori. Keuntu ngan dari pemakaian vektor adalah untuk mengura ngi kebutuhan akan sebuah interrupt handler yang harus men cari semua kemungkinan sumber interupsi untuk menemukan pengirim interupsi.
 Akan tetapi, interrupt vector memiliki hambatan karena pada kenyataannya, komputer yang ada memiliki device (dan interrupt handler ) yang lebih banyak dibandingkan dengan jumlah alamat pada interrupt vector. Karena itulah, digunakanlah teknik interrupt chaining dimana setiap elemen dari interrupt vector menunjuk / merujuk pada elemen pertama dari sebuah daftar interrupt handler. Dengan teknik ini, overhead yang dihasilkan oleh besarnya ukuran tabel dan inefisiensi dari penggunaan sebuah interrupt handler (fitur pada CPU yang telah disebutkan sebelumnya) dapat dikurangi, sehingga keduanya menjadi kurang lebih seimbang.

e.  Penyebab Interupsi

 Interupsi dapat disebabkan berbagai hal, antara lain exception,page fault , interupsi yang diki- rimkan oleh device controllers , dan system call .Exception adalah suatu kondisi dimana terjadi sesuatu / dari sebuah operasi didapat hasil tertentu yang dianggap khusus sehingga harus mendapat perhatian lebih, contoh nya pembagian dengan 0 (nol), pengaksesan alamat memori yang restricted atau bahkan tidak valid, dan lain-lain. System call adalah sebuah fungsi pada aplikasi (perangkat lunak) yang dapat mengeksekusikan instruksi khusus berupa software interrupt atau trap.
3)   DMA (Direct Memory Address)
Merupakan suatu pendekatan alternatif yang digunakan sebagai unit pengaturan khusus yang disediakan untuk memungkinkan pengalihan blok data secara langsung antara peralatan eksternal dan memori utama tanpa intervensi terus menerus oleh CPU.

a.     Transfer DMA

 Untuk memulai sebuah transfer DMA, host akan menuliskan sebuah DMA command block yang berisi pointer yang menunjuk ke sumber transfer, pointer yang menunjuk ke tujuan / destinasi transfer, dan jumlah byte yang ditransfer, ke memori. CPU kemudian menuliskan alamat command block ini ke DMA controller, sehingga DMA controller dapat kemudian mengoperasikan bus memori secara langsung dengan menempatkan alamat-alamat pada bus tersebut untuk melakukan trans fer tanpa bantuan CPU.
 Tiga Langkah Dalam Transfer DMA :
   1.  Prosesor menyiapkan DMA transfer dengan menyedia  kan data-data dari device  , operasi yang akan  ditampilkan, alamat memori yang menjadi sumber  dan tujuan data, dan banyaknya byte yang di  transfer. 
   2.  DMA controller  memulai operasi (menyiapkan bus,  menyediakan alamat, menulis dan membaca data),  sampai seluruh blok sudah di transfer. 
   3.  DMA controller  meng-interupsi prosesor, dimana  selanjutnya akan ditentukan tindakan berikutnya. 

 Pada dasarnya, DMA mempunyai dua metode yang berbeda dalam mentransfer data. Metode yang pertama adalah metode yang sangat baku dan simple disebut HALT, atau Burst Mode DMA, karena DMA controller memegang kontrol dari sistem bus dan men-transfer semua blok data ke atau dari memori pada single burst . Selagi transfer masih dalam progres, sistem mikroprosessor di-set idle, tidak melakukan instruksi operasi untuk menjaga internal register. Tipe operasi DMA seperti ini ada pada kebanyakan komputer.
 Metode yang kedua, mengikutsertakan DMA controller untuk memegang kontrol dari sistem bus untuk jangka waktu yang lebih pendek pada periode dimana mikroprosessor sibuk dengan operasi internal dan tidak membutuhkan akses ke sistem bus. Metode DMA ini disebut cycle stealing mode . Cycle stealing DMA lebih kompleks untuk diimplementasikan dibandingkan HALT DMA, karena DMA controller harus mempunyai kepintaran untuk merasakan waktu pada saat sistem bus terbuka.

b.       Handshaking

 Proses handshaking antara DMA controller dan device controller dilakukan melalui sepasang kabel yang disebut DMA- request dan DMA- acknowledge. Device controller mengirimkan sinyal melalui DMA- request ketika akan mentransfer data sebanyak satu word . Hal ini kemudian akan mengakibatkan DMA controller memasukkan alamat- alamat yang dinginkan ke kabel alamat memori, dan mengirimkan sinyal melalui kabel DMA- acknowledge. Setelah sinyal melalui kabel DMA- acknowledge diterima, device controller mengirimkan data yang dimaksud dan mematikan sinyal pada DMA-request .
 Hal ini berlangsung berulang-ulang sehingga disebut handshaking . Pada saat DMA controller mengambil alih memori, CPU sementara tidak dapat mengakses memori (dihalangi), walaupun masih dapat mengaksees data pada cache primer dan sekunder. Hal ini disebut cycle stealing, yang walaupun memperlambat komputasi CPU, tidak menurunkan kinerja karena memindahkan pekerjaan data transfer ke DMA controller meningkatkan performa sistem secara keseluruhan.

c.     Cara-cara Implementasi DMA

 Dalam pelaksanaannya, beberapa komputer menggunakan memori fisik untuk proses DMA , sedangkan jenis komputer lain menggunakan alamat virtual dengan melalui tahap "penerjemahan" dari alamat memori virtual menjadi alamat memori fisik, hal ini disebut direct virtual-memory address atau DVMA. Keuntungan dari DVMA adalah dapat mendukung transfer antara dua memory mapped device tanpa intervensi CPU.

C.   Penanganan Permintaan I/O

 Sistem Operasi yang modern mendapatkan fleksibilitas yang signifikan dari tahapan-tahapan tabel lookup di jalur diantara permintaan dan physical device controller. Kita dapat mengenalkan devicedan driver baru ke komputer tanpa harus meng-compile ulang kernelnya. Sebagai fakta, ada beberapa sistem operasi yang mampu untuk me-load device drivers yang diinginkan. Pada waktu boot, sistem mula-mula meminta bus piranti keras untuk menentukan device apa yang ada, kemudian sistem me-load ke dalam driver yang sesuai; baik sesegera mungkin, maupun ketika diperlukan oleh sebuah permintaan I/O.
 Sistem V UNIX mempunyai mekanisme yang menarik, yang disebut streams, yang membolehkan aplikasi untuk men-assemble pipeline dari kode driver secara dinamis. Sebuah stream adalah sebuah koneksi full duplex antara sebuah device driver dan sebuah proses user-level. Stream terdiri atas sebuah stream head yang merupakan antarmuka dengan user process, sebuah driver end yang mengontrol device, dan nol atau lebih stream modules diantara mereka. Modules dapat didorong ke stream untuk menambah fungsionalitas di sebuah layered fashion. Sebagai gambaran sederhana, sebuah proses dapat membuka sebuah alat port serial melalui sebuah stream, dan dapat mendorong ke sebuah modul untuk memegang edit input. Stream dapat digunakan untuk interproses dan komunikasi jaringan. Faktanya, di Sistem V, mekanisme soket diimplementasikan dengan stream.
 Berikut dideskripsikan sebuah lifecycle yang tipikal dari sebuah permintaan pembacaan blok.
1.    Sebuah proses mengeluarkan sebuah blocking read  system call ke sebuah file deskriptor dari berkas  yang telah dibuka sebelumnya. 
2.    Kode system-call di kernel mengecek  parameter untuk kebenaran. Dalam kasus input, jika data telah  siap di buffer cache, data akan dikembalikan ke proses dan  permintaan I/O diselesaikan. 
3.    Jika data tidak berada dalam buffer cache  , sebuah physical I/O  akan bekerja, sehingga proses akan dikeluarkan dari antrian jalan  (run queue) dan diletakkan di antrian  tunggu (wait queue) untuk alat, dan  permintaan I/O pun dijadwalkan.  Pada akhirnya, subsistem I/O  mengirimkan permintaan ke device driver.  Bergantung pada sistem operasi, permintaan dikirimkan melalui  call subrutin atau melalui pesan  in-kernel. 
4.    Device driver mengalokasikan ruang  buffer pada kernel untuk menerima  data, dan menjadwalkan I/O. Pada  akhirnya, driver mengirim perintah  ke device controller dengan menulis  ke register device control. 
5.    Device controller mengoperasikan  piranti keras device untuk melakukan  transfer data. 
6.    Driver dapat menerima status dan  data, atau dapat menyiapkan transfer DMA ke memori kernel. Kita  mengasumsikan bahwa transfer diatur oleh sebuah DMA  controller, yang meggunakan interupsi ketika trans-  fer selesai. 
7.    Interrupt handler yang sesuai mene-  rima interupsi melalui tabel vektor-interupsi, menyimpan sejumlah  data yang dibutuhkan, menandai device driver  , dan kembali dari interupsi. 
8.    Device driver menerima tanda,  menganalisa permintaan I/O mana yang  telah diselesaikan, menganalisa status permintaan, dan menandai  subsistem I/O kernel yang  permintaannya telah terselesaikan. 
9.    Kernel mentransfer data atau mengembalikan kode ke ruang alamat  dari proses permintaan, dan memindahkan proses dari antrian tunggu  kembali ke antrian siap. 
10.     Proses tidak diblok ketika dipindahkan ke antrian siap. Ketika  penjadwal (scheduler) mengembalikan  proses ke CPU, proses meneruskan eksekusi pada penyelesaian dari  system call. 



D.    Struktur Disk

 Disk menyediakan penyimpanan sekunder bagi sistem komputer modern. Magnetic tape sebelumnya digunakan sebagai media penyimpanan sekunder, tetapi waktu aksesnya lebih lambat dari disk. Oleh karena itu, sekarang tape digunakan terutama untuk backup ,untuk penyimpanan informasi yang tidak sering, sebagai media untuk mentransfer infromasi dari satu sistem ke sistem yang lain, dan untuk menyimpan sejumlah data yang terlalu besar untuk sistem disk.
 Disk drive modern dialamatkan sebagai suatu array satu dimensi yang besar dari blok lojik, dimana blok lojik merupakan unit terkecil dari transfer. Ukuran dari blok lojik biasanya adalah 512 bytes , walaupun sejumlah disk dapat diformat di level rendah (low level formatted) untuk memilih sebuah ukuran blok lojik yang berbeda, misalnya 1024 bytes.
 Array satu dimensi dari blok lojik dipetakan ke bagian dari disk secara sekuensial. Sektor 0 adalah sektor pertama dari trek pertama di silinder paling luar (outermost cylinder ). Pemetaan kemudian memproses secara berurutan trek tersebut, kemudian melalui trek selanjutnya di silinder tersebut, dan kemudian sisa silinder dari yang paling luar sampai yang paling dalam.
 Dengan menggunakan pemetaan, kita dapat -minimal dalam teori- mengubah sebuah nomor blok logikal ke sebuah alamat disk yang bergaya lama (old-style disk address) yang terdiri atas sebuah nomor silinder, sebuah nomor trek di silinder tersebut, dan sebuah nomor sektor di trek tersebut. Dalam prakteknya, adalah sulit untuk melakukan translasi ini, dengan 2 alasan. Pertama, kebanyakan disk memiliki sejumlah sektor yang rusak, tetapi pemetaan menyembunyikan hal ini dengan mensubstitusikan dengan sektor yang dibutuhkan dari mana-mana di dalam disk. Kedua, jumlah dari sektor per trek tidaklah konstan. Semakin jauh sebuah trek dari tengah disk, semakin besar panjangnya, dan juga semakin banyak sektor yang dipunyainya. Oleh karena itu,disk modern diatur menjadi zona-zona silinder. Nomor sektor per trek adalah konstan dalam sebuah zona. Tetapi seiring kita berpindah dari zona dalam ke zona luar, nomor sektor per trek bertambah. Trek di zona paling luar tipikalnya mempunyai 40 persen sektor lebih banyak daripada trek di zona paling dalam.
 Nomor sektor per trek telah meningkat seiring dengan peningkatan teknologi disk, dan adalah lazim untuk mempunyai lebih dari 100 sektor per trek di zona yang lebih luar dari disk. Dengan analogi yang sama, nomor silinder per disk telah meningkat, dan sejumlah ribuan silinder adalah tak biasa.

E.  Penjadwalan Disk

 Salah satu tanggung jawab sistem operasi adalah menggunakan hardware dengan efisien. Khusus untuk disk drives, efisiensi yang dimaksudkan di sini adalah dalam hal waktu akses yang cepat dan aspek bandwidth disk. Waktu akses memiliki dua komponen utama yaitu waktu pencarian dan waktu rotasi disk. Waktu pencarian adalah waktu yang dibutuhkan disk arm untuk menggerakkan head ke bagian silinder disk yang mengandung sektor yang diinginkan. Waktu rotasi disk adalah waktu tambahan yang dibutuhkan untuk menunggu rotasi atau perputaran disk, sehingga sektor yang diinginkan dapat dibaca oleh head. Pengertian Bandwidth adalah total jumlah bytes yang ditransfer dibagi dengan total waktu antara permintaan pertama sampai seluruh bytes selesai ditransfer. Untuk meningkatkan kecepatan akses dan bandwidth, kita dapat melakukan penjadwalan pelayanan atas permintaan I/O dengan urutan yang tepat.
 Sebagaimana kita ketahui, jika suatu proses membutuhkan pelayanan I/O dari atau menuju disk, maka proses tersebut akan melakukan system call ke sistem operasi. Permintaan tersebut membawa informasi-informasi antara lain:
  1. Apakah operasi input atau output
  2. Alamat disk untuk proses tersebut
  3. Alamat memori untuk proses tersebut
  4. Jumlah bytes yang akan ditransfer
 Jika disk drive beserta controller tersedia untuk proses tersebut, maka proses akan dapat dilayani dengan segera. Jika ternyata disk drive dan controller tidak tersedia atau sedang sibuk melayani proses lain, maka semua permintaan yang memerlukan pelayanan disk tersebut akan diletakkan pada suatu antrian penundaan permintaan untuk disk tersebut. Dengan demikian, jika suatu permintaan telah dilayani, maka sistem operasi memilih permintaan tertunda dari antrian yang selanjutnya akan dilayani.

a)   Penjadwalan FCFS

 Bentuk paling sederhana dalam penjadwalan disk adalah dengan sistem antrian (queue) atau First-come first-served (FCFS). Algoritma ini secara intrinsik bersifat adil, tetapi secara umum algoritma ini pada kenyataannya tidak memberikan pelayanan yang paling cepat. Sebagai contoh, antrian permintaan pelayanan disk untuk proses I/O pada blok dalam silinder adalah sebagai berikut: 98, 183, 37, 122, 14, 124, 65, 67. Jika head pada awalnya berada pada 53, maka head akan bergerak dulu dari 53 ke 98, kemudian 183, 37, 122, 14, 124, 65, dan terakhir 67, dengan total pergerakan head sebesar 640 silinder.
 Permasalahan dengan menggunakan penjadwalan jenis ini dapat diilustrasikan dengan pergerakan dari 122 ke 14 dan kembali lagi ke 124. Jika permintaan terhadap silinder 37 dan 14 dapat dikerjakan/dilayani secara bersamaan, baik sebelum maupun setelah permintaan 122 dan 124, maka pergerakan total head dapat dikurangi secara signifikan, sehingga dengan demikian pendayagunaan akan meningkat.

b.   Penjadwalan SSTF

 Sangat berasalasan jika kita menutup semua pelayanan pada posisi head saat ini, sebelum menggerakkan head ke tempat lain yang jauh untuk melayani suatu permintaan. Asumsi ini mendasari algoritma penjadwalan kita yang kedua yaitu shortest-seek-time-first (SSTF). Algoritma ini memilih permintaan dengan berdasarkan waktu pencarian atau seek time paling minimum dari posisi head saat itu. Karena waktu pencarian meningkat seiring dengan jumlah silinder yang dilewati oleh head, maka SSTF memilih permintaan yang paling dekat posisinya di disk terhadap posisi head saat itu.
 Perhatikan contoh antrian permintaan yang kita sajikan pada penjadwalan FCFS, permintaan paling dekat dengan posisi head saat itu (53) adalah silinder 65. Jika kita penuhi permintaan 65, maka yang terdekat berikutnya adalah silinder 67. Dari 67, silinder 37 letaknya lebih dekat ke 67 dibandingkan silinder 98, jadi 37 dilayani duluan. Selanjutnya, dilanjutkan ke silinder 14, 98, 122, 124, dan terakhir adalah 183. Metode penjadwalan ini hanya menghasilkan total pergerakan head sebesar 236 silinder -- kira-kira sepertiga dari yang dihasilkan penjadwalan FCFS. Algoritma SSTF ini memberikan peningkatan yang cukup signifikan dalam hal pendayagunaan atau performance sistem.
 Penjadwalan SSTF merupakan salah satu bentuk dari penjadwalan shortest-job-first (SJF), dan karena itu maka penjadwalan SSTF juga dapat mengakibatkan starvation pada suatu saat tertentu. Kita ketahui bahwa permintaan dapat datang kapan saja. Anggap kita memiliki dua permintaan dalam antrian, yaitu untuk silinder 14 dan 186. Selama melayani permintaan 14, kita anggap ada permintaan baru yang letaknya dekat dengan 14. Karena letaknya lebih dekat ke 14, maka permintaan ini akan dilayani dulu sementara permintaan 186 menunggu gilirannya. Jika kemudian berdatangan lagi permintaan-permintaan yang letaknya lebih dekat dengan permintaan terakhir yang dilayani jika dibandingkan dengan 186, maka permintaan 186 bisa saja menunggu sangat lama. Kemudian jika ada lagi permintaan yang lebih jauh dari 186, maka juga akan menunggu sangat lama untuk dapat dilayani.
 Walaupun algoritma SSTF secara substansial meningkat jika dibandingkan dengan FCFS, tetapi algoritma SSTF ini tidak optimal. Seperti contoh diatas, kita dapat menggerakkan head dari 53 ke 37, walaupun bukan yang paling dekat, kemudian ke 14, sebelum menuju 65, 67, 98, 122, dan 183. Strategi ini dapat mengurangi total gerakan head menjadi 208 silinder.

c.     Penjadwalan SCAN

 Pada algoritma SCAN, pergerakan disk arm dimulai dari salah satu ujung disk, kemudian bergerak menuju ujung yang lain sambil melayani permintaan setiap kali mengunjungi masing-masing silinder. Jika telah sampai di ujung disk, maka disk arm bergerak berlawanan arah, kemudian mulai lagi melayani permintaan-permintaan yang muncul. Dalam hal ini disk arm bergerak bolak-balik melalui disk.
 Kita akan menggunakan contoh yang sudah dibarikan diatas. Sebelum melakukan SCAN untuk melayani permintaan-permintaan 98, 183, 37, 122, 14, 124, 65, dan 67, kita harus mengetahui terlebih dahulu pergerakan head sebagai langkah awal dari 53. Jika disk arm bergerak menuju 0, maka head akan melayani 37 dan kemudian 14. Pada silinder 0, disk arm akan bergerak berlawanan arah dan bergerak menuju ujung lain dari disk untuk melayani permintaan 65, 67, 98, 122, 124, dan 183. Jika permintaan terletak tepat pada head saat itu, maka akan dilayani terlebih dahulu, sedangkan permintaan yang datang tepat dibelakang head harus menunggu dulu head mencapai ujung disk, berbalik arah, baru kemudian dilayani.
 Algoritma SCAN ini disebut juga algoritma lift/elevator, karena kelakuan disk arm sama seperti elevator dalam suatu gedung, melayani dulu orang-orang yang akan naik ke atas, baru kemudian berbalik arah untuk melayani orang-orang yang ingin turun ke bawah.
 Kelemahan algoritma ini adalah jika banyak permintaan terletak pada salah satu ujung disk, sedangkan permintaan yang akan dilayani sesuai arah arm disk jumlahnya sedikit atau tidak ada, maka mengapa permintaan yang banyak dan terdapat pada ujung yang berlawanan arah dengan gerakan disk arm saat itu tidak dilayani duluan? Ide ini akan mendasari algoritma penjadwalan berikut yang akan kita bahas.

d.    Penjadwalan C-SCAN

 Circular-SCAN adalah varian dari algoritma SCAN yang sengaja didesain untuk menyediakan waktu tunggu yang sama. Seperti halnya SCAN, C-SCAN akan menggerakkan head dari satu ujung disk ke ujung lainnya sambil melayani permintaan yang terdapat selama pergerakan tersebut. Tetapi pada saat head tiba pada salah satu ujung, maka head tidak berbalik arah dan melayani permintaan-permintaan, melainkan akan kembali ke ujung disk asal pergerakannya. Jika head mulai dari ujung 0, maka setelah tiba di ujung disk yang lainnya, maka head tidak akan berbalik arah menuju ujung 0, tetapi langsung bergerak ulang dari 0 ke ujung satunya lagi.

e.     Penjadwalan LOOK

 Perhatikan bahwa SCAN dan C-SCAN menggerakkan disk arm melewati lebar seluruh disk. Pada kenyataanya algoritma ini tidak diimplementasikan demikian (pergerakan melewati lebar seluruh disk). Pada umumnya, arm disk bergerak paling jauh hanya pada permintaan terakhir pada masing-masin arah pergerakannya. Kemudian langsung berbalik arah tanpa harus menuju ujung disk. Versi SCAN dan C-SCAN yang berprilaku seperti ini disebut LOOK SCAN dan LOOK C-SCAN, karena algoritma ini melihat dulu permintaan-permintaan sebelum melanjutkan arah pergerakannya.

f.      Pemilihan Algoritma Penjadwalan Disk

 Dari algoritma-algoritma diatas, bagaimanakah kita memilih algoritma terbaik yang akan digunakan? SSTF lebih umum dan memiliki prilaku yang lazim kita temui. SCAN dan C-SCAN memperlihatkan kemampuan yang lebih baik bagi sistem yang menempatkan beban pekerjaan yang berat kepada disk, karena algoritma tersebut memiliki masalah starvation yang paling sedikit. Untuk antrian permintaan tertentu, mungkin saja kita dapat mendefinisikan urutan akses dan pengambilan data dari disk yang optimal, tapi proses komputasi membutuhkan penjadwalan optimal yang tidak kita dapatkan pada SSTF atau SCAN.
 Dengan algoritma penjadwalan yang manapun, kinerja sistem sangat tergantung pada jumlah dan tipe permintaan. Sebagai contoh, misalnya kita hanya memiliki satu permintaan, maka semua algoritma penjadwalan akan dipaksa bertindak sama, karena algoritma-algoritma tersebut hanya punya satu pilihan dari mana menggerakkan disk head: semuanya berprilaku seperti algoritma penjadwalan FCFS.
 Perlu diperhatikan pula bahwa pelayanan permintaan disk dapat dipengaruhi pula oleh metode alokasi file. Sebuah program yang membaca alokasi file secara terus menerus mungkin akan membuat beberapa permintaan yang berdekatan pada disk, menyebabkan pergerakan head menjadi terbatas. File yang memiliki link atau indeks, dilain pihak, mungkin juga memasukkan blok-blok yang tersebar luas pada disk, menyebabkan pergerakan head yang sangat besar.
 Lokasi blok-blok indeks dan directory juga tidak kalah penting. Karena file harus dibuka sebelum digunakan, proses pembukaan file membutuhkan pencarian pada struktur directory, dengan demikian directory akan sering diakses. Kita anggap catatan directory berada pada awal silinder, sedangkan data file berada pada silinder terakhir. Pada kasus ini, disk head harus bergerak melewati sepanjang lebar disk. Membuat tempat penyimpanan sementara dari blok-blok indeks dan directory ke dalam memori dapat membantu mengurangi pergerakan disk arm, khususnya untuk permintaan membaca disk.
 Karena kerumitan inilah, maka algoritma penjadwalan disk harus ditulis dalam modul terpisah dari sistem operasi, jadi dapat saling mengganti dengan algoritma lain jika diperlukan. Baik SSTF maupun LOOK keduanya merupakan pilihan yang paling masuk akal sebagai algoritma yang paling dasar.