Indonesia Linux Conference 2012

Image

 

Indonesia GNU/Linux Conference (ILC) merupakan kegiatan tahunan berskala nasional, sebagai ajang bertemunya insan penggiat, pengguna, pemerhati dan vendor open source, khususnya sistem operasi GNU/Linux (baca: Linux). ILC yang awal mulanya sebagai ajang diskusi para penggiat dan aktivis GNU/Linux seluruh Indonesia, sekarang tidak hanya sekedar diskusi saja, tetapi sudah menjadi rangkaian kegiatan yang diawali dengan seminar, workshop, training, pameran dan pada akhir acara ditutup dengan diskusi.

Diskusi diikuti oleh para penggiat dan aktivis GNU/Linux dari seluruh Indonesia yang diwakili oleh organisasi-organisasi penggiat GNU/Linux seperti Kelompok Pengguna Linux Indonesia (KPLI), Linux User Grup (LUG), dan Kelompok Studi Linux (KSL). Kelompok-kelompok ini mewakili kalangan umum, hobiis, mahasiswa dan akademisi.

ILC sendiri dilaksanakan dengan harapan dapat mendorong pemanfaatan GNU/Linux di semua bidang baik di lingkungan rumah tangga, bisnis, pendidikan serta pemerintahan. Selain menjadi media sosialisasi dan advokasi GNU/Linux, ILC juga menjadi forum untuk membahas masalah-masalah dalam implementasi GNU/Linux dan menemukan serta sharing solusi bersama yang diharapkan bisa diterapkan secara regional maupun nasional.

Indonesia Linux Conference dilaksanakan pertama kali pada tahun 2006 di Kota Surabaya. Pada tahun ini Indonesia Linux Conference akan digelar di Kota Malang, acara ini nantinya akan menjadi konferensi linux tingkat nasional yang ketujuh kalinya. Indonesia Linux Conference kali ini diselenggarakan bersama Yayasan Penggerak Linux Indonesia (YPLI) dan Komunitas Linux Arek Malang (KOLAM) dibantu oleh rekan-rekan sesama aktivis Linux dan Open Source di daerah Malang Raya. Salah satu acara utama ILC 2012 adalah KPLI Meeting yang akan diikuti oleh ratusan peserta dari perwakilan seluruh KPLI dan komunitas linux dari seluruh Indonesia. Sebelum KPLI Meeting digelar, akan didahului dengan rangkaian acara berupa diskusi panel, lomba blog dan desain, serta workshop dan lomba hardening server.

Tujuan dari ILC 2012 ini adalah :
1. Memperluas pengenalan manfaat Linux dan Open Source kepada masyarakat.
2. Memberikan rekomendasi terhadap kebijakan pemerintah di bidang IT.
3. Meningkatkan konstribusi Indonesia dalam penggunaan dan pengembangan Linux dan Free Open Source Software (FOSS).
4. Meningkatkan pengembangan bisnis melalui pemanfaatan Linux dan FOSS.

 

Rangkaian Acara ILC 2012

1. Panel Discussion – 1 September

2. Linux Open Day – 2 September

3. Poster Design Contest – 2 September 

4. Blogging Contest – 2 Agust – 2 Sept

5. Hardening Server – 8 – 9 September

6. KPLI Meeting – 14 – 16 September

Info lebih lengkap silahkan kunjungi : http://ilc.linux.or.id

Jangan lupa ikuti perkembangannya di : ilc 2012 malang

Animasi pada Java

DASAR ANIMASI

Animasi pada dasarnya adalah membuat objek seolah-olah bergerak sehingga
terjadi pergerakan yang membuat mata kita memandangnya sebagai sebuah
kesatuan utuh. Padahal dibalik itu, animasi dibuat berdasarkan pada bagian-bagian
tertentu (terpisah) dan baru kemudian akan disatukan untuk mendapatkan
pergerakan yang sempurna.
Untuk membuat animasi, terlebih dahulu kita harus membuat satu per satu bagian-
bagian tertentu tadi. Hal ini merupakan hal yang sangat berat dalam membuat
animasi mengingat kita harus memikirkan bagaimana desain atau bagian dari
animasi yang kita buat tersebut supaya benar-benar mendapatkan hasil yang
sempurna jika disatukan.

DASAR ANIMASI DENGAN JAVA

Java merupakan bahasa pemrograman yang sangat ampuh sekali. Ini bisa
dibuktikan dengan kemampuannya yang tidak bergantung pada platform. Artinya
Java dapat dijalankan pada sembarang komputer dan bahkan pada sembarang
sistem operasi (sering disebut dengan istilah portabilitas). Yang menarik, tingkat
portabilitas Java tidak hanya sebatas pada program sumber (source code),
melainkan juga pada tingkat kode biner yang disebut bytecode. Ini berarti, bila
Anda telah mengkompilasi program Java pada komputer bersistem operasi
Windows, maka Anda dapat menjalankan hasil kompilasi pada komputer
bersistem operasi Linux tanpa perlu mengkompilasi ulang lagi.

DASAR-DASAR THREAD

Cara termudah untuk membuat thread adalah membuat kelas turunan dari java.lang.Thread, yang memiliki semua metode untuk membuat dan menjalankan thread. Metode paling penting adalah run(), yang bisa kita beban-lebihkan untuk melakukan tugas yang kita butuhkan. Atau dengan kata lain run() adalah metode yang akan dijalankan bersamaan dengan thread lain.

Contoh berikut membuat 5 thread, masing-masing memiliki nomor identifikasi unik yang dibuat dengan menggunakan variabel statik. Metode run() dibebanlebihkan untuk menghitung mundur hingga hitungMundur bernilai nol. Setelah metode run()selesai dijalankan, thread akan mati secara otomatis.

public class ThreadDasar extends Thread {
    private int hitungMundur = 5;
    private static int jumlahThread = 0;

    public ThreadDasar() {
      super("Thread ke-" + ++jumlahThread);
      start();
    }

    public void run() {
      while (true) {
        System.out.println( getName() + " : " + hitungMundur );
        if (--hitungMundur == 0)
            return;
      }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        for(int i = 0; i < 5; i++)
            new ThreadDasar();
    }
}

Metode run() pada thread biasanya memiliki perulangan internal yang akan terus menerus dipanggil hingga tidak lagi digunakan. Kita harus membuat suatu kondisi sehingga bisa keluar dari perulangan tersebut (misalnya pada contoh di atas, perulangan akan selesai jika hitungMundur bernilai 0). Seringkali, run() dijalankan di dalam perulangan yang tak pernah berhenti (kita akan lihat nanti bagaimana menghentikan suatu thread dengan aman).

Pada metode main(), thread dibuat beberapa kali kemudian dijalankan. Metode start() pada kelas Thread digunakan untuk melakukan tugas tertentu sebelum metode run() dijalankan. Jadi, langkah-langkahnya adalah : konstruktor dipanggil untuk membuat objek, kemudian memanggil start() untuk melakukan konfigurasi thread, dan kemudian metode run() dijalankan. Jika kita tidak memanggil start() maka metode run() tidak akan pernah dijalankan.

Keluaran dari program ini akan berbeda setiap kali dijalankan, karena penjadwalan thread tidak dapat ditentukan dengan pasti (non-deterministik). Bahkan, kita bisa melihat perbedaan yang sangat jelas ketika kita menggunakan versi JDK yang berbeda. Misalnya, JDK lama tidak melakukan pembagian waktu lebih cepat, artinya, 1 thread mungkin bisa melakukan tugasnya dengan cepat hingga selesai sebelum thread lain dijalankan. Pada JDK lain kita akan melihat program akan mencetak 5 untuk seluruh thread hingga 1 untuk seluruh thread. Artinya pembagian waktunya lebih baik, karena setiap thread memiliki kesempatan yang sama untuk menjalankan program. Karenanya, untuk membuat suatu program multi-threading, kita tidak boleh terpaku pada keluaran suatu kompiler. Program kita harus dibuat seaman mungkin

Tidur (sleeping)

Cara lain untuk mengatur perilaku thread kita adalah dengan memanggil sleep untuk menunda eksekusi thread selama waktu tertentu (dalam mili detik). Misalnya pada kode berikut, kita ubah metode run() menjadi seperti :

    public void run() {
      while (true) {
        System.out.println( getName() + " : " + hitungMundur );
        if (--hitungMundur == 0)
            return;
        try {
              sleep(100);
        } catch (InterruptedException e) {
              throw new RuntimeException(e);
        }
      }
    }

Ketika kita memanggil sleep(), metode ini harus diletakkan di dalam blok try karena sleep() bisa melemparkan pengecualian, yaitu jika tidurnya diganggu sebelum waktunya selesai. Hal ini terhadi misalnya apabila thread lain yang memiliki referensi ke thread ini memanggil interrupt() pada thread ini. Pada contoh di atas, kita lemparkan lagi pengecualian yang terjadi dengan pengecualian lain bertipe RuntimeException, karena kita tidak tahu bagaimana pengecualian ini harus ditangani, dan membiarkan metode yang memanggilnya menangkap pengecualian baru ini.

Metode sleep() tidak digunakan untuk mengatur bagaimana thread akan berjalan menurut urutan tertentu. Metode ini hanya menghentikan eksekusi suatu thread sementara. Yang dijamin adalah bahwa thread akan tidur selama paling sedikit 100 mili detik (atau mungkin sedikit lebih lama hingga thread jalan kembali). Urutan thread diatur oleh penjadwal thread yang memiliki mekanisme sendiri tergantung dari keadaan thread lain atau bahkan aplikasi lain di luar Java, oleh karena itu sifatnya disebut non-deterministik.

Inheritance

Konsep Inheritance:

  • žVariabel dan method suatu class dapat diwarisi oleh class lain, yang berarti bahwa class yang mewarisi dapat memiliki dan menggunakan method dan class tersebut tanpa perlu membuat objek terlebih dulu.
  • žClass yang memberikan warisan disebut class induk(parent class ) dan class yang menerima warisan disebut class anak(subclass).
  • žSuatu subclass dapat mewarisi semua atau sebagian member yang dimiliki oleh parent class.
  • žJadi dengan kata lain suatu subclass adalah tidak lain hanya memperluas (extend) parent class-nya.
ž
Deklarasinya:
  • žMenambahkan kata kunci / keyword extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class-nya.
  • žKata kunci / keyword extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class.
ž
Contoh Deklarasi:

* Definisi kelas A

public class A {

}

* Definisi subkelas B turunan kelas A

public class B extends A {

}

ž
Apa yang diwariskan???
  • žSemua fields bertipe “protected” or “public”.
—”private” fields are only visible to the class that declared them *.
—”protected” fields are only visible to the class that declared them, and any subclasses
  • žžSemua public dan protected methods.
Contoh:
žpublic class list
ž{
ž   protected int[] values;
ž   private   int   size;
ž…
žž
žpublic class stack extends list
ž{
ž…
ž   public void some_method ()
ž   {
ž      values[i] = myinteger; // legal
ž      size++;                // illegal
Macam Inheritance:
  1. Single Inheritance
žKonsep inheritance yang ada di Java hanya memperkenankan adanya single inheritance.
žKonsep single inheritance hanya memperbolehkan suatu sublass mempunyai satu parent class.
          2.  Multilevel Inheritance
žKonsep inheritance yang ada di Java memperkenankan adanya multilevel inheritance.
žKonsep multilevel inheritance memperbolehkan suatu subclass mempunyai subclass lagi.
ž
žAbstract Class:
žAdalah class yang hanya mendeklarasikan method tanpa implementasi.
žClass abstrak tidak dapat digunakan untuk membentuk objek secara langsung, penggunaannya dilakukan melalui class turunannya.
Deklarasinya:
žAbstract class bangunan{

double alas;

double tinggi;

abstract void hitungLuas();

abstract void hitungKeliling();

ž}
Override:
  • žJika suatu method di dalam kelas turunan yang nama dan daftar parameternya sama persis seperti yang terdapat pada kelas induk, maka dikatakan kita telah melakukan override method yang tersimpan dalam kelas induk.
  • žPemanggilan method pada class anak akan menyebabkan nilai yang ada pada method induk tertimpa oleh nilai pada method anak.
žContohnya:
žclass SuperClass {
int a = 10;
void methodA() {
System.out.println(“€œNilai a di SuperClass : ” + a);
}
}class SubClass extends SuperClass {
int a = 20;
void methodA() {
System.out.println(“œNilai a di SubClass : “ + a);
}
}

class AksesClass {
public static void main(String[] args) {
SubClass sub = new SubClass();
sub.methodA();
}
}

Keyword Super:
  • žKeyword super digunakan untuk memanggil cunstructor class induk.
  • žIni diperlukan ketika class anak perlu mengakses variabel di class induk yang memiliki akses private.
  • žFormat penulisannya adalah sebagai berikut :
  • —super.data_member : merujuk pada data member pada parent class
  • —super.function_member() : merujuk pada function member pada parent class
  • —super() : merujuk pada konstruktor pada parent class
ž
Konstruktor tidak diwariskan,, kenapa??
  • žžKonstruktor dari parent class tidak dapat diwariskan ke subclass-nya.
  • žKonsekuensinya, setiap kali kita membuat suatu subclass, maka kita harus memanggil konstruktor parent class di konstruktor subclass.
  • žPemanggilan konstruktor parent harus dilakukan pada baris pertama dari konstruktor subclass.
ž
Keyword This:
žKata kunci this sangat berguna untuk menunjukkan suatu member dalam class-nya sendiri. This dapat digunakan baik untuk data member maupun untuk function member, serta dapat juga digunakan untuk konstruktor.
ž–this.data_member >> merujuk pada data member
ž–this.function_member() >> merujuk pada function  member
ž–this() >> merujuk pada konstruktor
kalau masih bingung, download source dibawah yaa…smoga bisa membantu…


Interface

Apakah Interface itu ??

  • Adalah Jenis khusus dari blok yang hanya berisi method signature (atau constant ). Interface mendefinisikan sebuah  kumpulan method tanpa tubuh.
  • Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class. Mereka menyediakan class-class, tanpa memperhatikan lokasinya dalam hirarki class, untuk mengimplementasikan sifat-sifat yang umum. Dengan catatan bahwa interface-interface juga menunjukkan polimorfisme.
  • Interface pada bahasa pemrograman Java sangat mirip dengan kelas, tapi tanpa atribut kelas dan memiliki metode yang dideklarasikan tanpa isi. Deklarasi metode pada sebuah interface dapat diimplementasikan oleh kelas lain. Sebuah kelas dapat mengimplementasikan lebih dari satu interface bahwa kelas ini akan mendeklarasikan metode pada interface yang dibutuhkan kelas itu sekaligus mendefiniskan isinya pada kode program kelas itu. Metode pada interface yang diimplementasikan pada suatu kelas harus sama persis dengan yang ada pada interface
Kapan kita memakai Interface ??

  • Kita akan menggunakan interface jika kita ingin class yang tidak berhubungan mengimplementasikan method yang sama. Melalui interface-interface, kita dapat menangkap kemiripan diantara class yang tidak berhubungan tanpa membuatnya seolah-olah class yang berhubungan
  • Alasan lain dalam menggunakan interface pemrograman object adalah untuk menyatakan sebuah interface pemrograman object tanpa menyatakan classnya. Seperti yang dapat kita lihat nanti dalam bagian Interface vs class.
  • Pada akhirnya, kita perlu menggunakan interface untuk pewarisan model jamak dimana menyediakan class untuk mempunyai lebih dari satu superclass. Pewarisan jamak tidak ditunjukkan di Java, tetapi ditunjukkan di bahasa berorientasi object lain seperti C++.
Contoh 1:
Buatlah java model Bentuk (interface) yang terdiri dari method di bawah ini.

*   double keliling();
*   double  luas();

Source Code:

Class bangun = super class

package tugas1;

public interface bangun {

double luas();

double keliling();

}

Class lingkaran = sub class

package tugas1;

public class lingkaran implements bangun {

double r;

final double phi = 3.14;

public lingkaran(double jari) {

this.r = jari;

}

public double luas() {

return (phi * r * r);

}

public double keliling() {

return (2 * phi * r);

}

}

Class persegi = sub class

package tugas1;

public class persegi implements bangun {

double s;

public persegi(double sisi) {

this.s = sisi;

}

public double luas() {

return (s * s);

}

public double keliling() {

return (4 * s);

}

}

Class segitiga = sub class

package tugas1;

public class segitiga implements bangun {

double a, t;

public segitiga(double alas, double tinggi) {

this.a = alas;

this.t = tinggi;

}

public double luas() {

return ((a * t) / 2);

}

public double keliling() {

return (a + t + Math.sqrt(Math.pow(a, 2) + Math.pow(t, 2)));

}

}

Class uji_bangun = main class

package tugas1;

public class uji_bangun {

public static void main(String[] rei) {

persegi persegi = new persegi(5);

segitiga segitiga = new segitiga(6, 10);

lingkaran lingkaran = new lingkaran(7);

System.out.println(“Persegi : “);

System.out.println(“Luas = ” + persegi.luas());

System.out.println(“Keliling = ” + persegi.keliling());

System.out.println(“——————————–“);

System.out.println(“Segitiga : “);

System.out.println(“Luas = ” + segitiga.luas());

System.out.println(“Keliling = ” + segitiga.keliling());

System.out.println(“——————————–“);

System.out.println(“Lingkaran: “);

System.out.println(“Luas = ” + lingkaran.luas());

System.out.println(“Keliling = ” + lingkaran.keliling());

System.out.println(“——————————–“);

}

}

Contoh 2:

  • Buatlah sebuah class BankImplement yang mengimplentasikan intarface :

interface  Bank{
void   deposit (double Amount);
boolean   withdraw  (double Amount);
double cekSaldo();
}

  • Buatlah class BankApp  yang mensimulasikan angka acak dari transaksi deposit “menabung”  dan withdraw  “mengambil uang”  dari Bank yang sudah mempunyai uang tabungan. Nilai transaksi baik penarikan ataupun deposit dibuat random 0 – 99999. Pengambilan tidak bisa dilakukan jika sisa uang tabungan kurang dari nol (0).
Sample :
input  lewat konstruktor BankApp 125000Output :

Saldo Awal = 125000
witdrawal  = 25000, Saldo = 100000
Deposit = 7000, Saldo = 107000
widrawal = 90000, Saldo = 17000
widrawal = 20000,  widrawal is rejected, Saldo = 17000
deposit = 10000, Saldo = 27000.
Source Code:

Class bank = super class

package tugas2;

public interface bank {

void deposit(int amount);

boolean withDrawal();

int saldoCheck();

}

Class implement_bank = main class

package tugas2;

public class implement_bank {

int deposit;

int amount;

public static void main(String[] rei) {

implement_bank atm = new implement_bank();

atm.deposit(10000000);

System.out.println(“WithDrawal = ” + atm.withDrawal());

System.out.println(“———————————-“);

System.out.println(“Your Saldo = ” + atm.saldoCheck());

}

public void deposit(int amount) {

this.deposit = amount;

System.out.println(“Your First Saldo = ” + this.deposit);

}

public boolean withDrawal() {

for (int x = 0; x <= this.deposit; x++) {

this.amount = (int) (Math.random() * 99999);

if (this.deposit <= this.amount) {

System.out.println(“WithDrawal = ” + this.amount);

System.out.println(“\n” + “Saldo Anda Tidak Mencukupi”);

break;

} else {

this.deposit -= this.amount;

System.out.println(“WithDrawal = ” + this.amount);

System.out.println(“\n” + “Saldo = ” + this.deposit);

}

}

return (false);

}

public int saldoCheck() {

return (this.deposit);

}

}
Gimana ?? mudah bukan pakai interface ?? so, coba-coba gag ada salahnya kann ^^

Input / Output

Pengertian :

Input/Output (I/O) adalah bagian dari sistem mikroprosesor yang digunakan oleh mikroprosesor itu untuk berhubungan dengan dunia luar. Unit input adalah unit luar yang digunakan untuk memasukkan data dari luar ke dalam mikroprosesor ini, contohnya data yang berasal dari keyboard atau mouse. Sementara unit output biasanya digunakan untuk menampilkan data, atau dengan kata lain untuk menangkap data yang dikirimkan oleh mikroprosesor, contohnya data yang akan ditampilkan pada layar monitor atau printer.

Beberapa contoh input

ALAT INPUT LANGSUNG

–          Keyboard

–          Pointing device contoh mouse, ligh pen, digitizer graphic tablet

–          Scanner, contoh micr, magnetic strip, optical data reader(ocr reader, ocr tag reader, bar code wand, omr reader)

–          Sensor, contoh camera

–          Voice recognizer atau speech recognizer

ALAT INPUT TAK LANGSUNG

–          Key to card

–          Key to tape

–          Key to disk

Beberapa contoh output

HARD COPY DEVICE

–          Berupa alat yang digunakan untuk mencetak tulisan serta image pada media kertas seperti kertas, plastic atau film.

–          Contoh: printer, plotter, computer output to microfilm (com)

SOFT COPY DEVICE

–          Berupa alat yang dignakan untuk menampilkan tulisan serta image pada media lunak yang berupa signal elektronik.

–          Contoh: video display (CRT), flat panel display (LCD), seaker

DRIVE DEVICE

–           Berupa alat yang digunakan untuk merekam symbol dalam bentuk yang hanya dapat dibaca oleh mesin dan berfungsi sebagai alat input maupun output.

–          Contoh : disk drive, tape drive, optical drive, CD-ROM.

Pengaksesan I/O terdiri dari 2 cara :

  1. MEMORY MAPPED I/O

Piranti I/O dihubungkan sebagai lokasi memori virtual dimana port I/O tergantung memori utama.

Karakteristik:

–          Port I/O dihubungkan ke bus alamat.

–          Piranti input sebagai bagian memori yang memberikan data ke bus data. Piranti output sebagai bagian memori yang memiliki data yang tersimpan di dalamnya.

–          Port I/O menempati lokasi tertentu pada ruang alamat

dan diakses seolah-olah adalah lokasi memori.

  1. I/O MAPPED I/O (I/O ISOLATED)

Piranti I/O dihubungkan sebagai lokasi terpisah dengan lokasi memori, dimana port I/O tidak tergantung pada memori utama.

Karakteristik:

–          Port I/O tidak tergantung memori utama.

–          Transfer informasi dilakukan di bawah kendali sinyal kontrol yang menggunakan instruksi INPUT dan OUTPUT

–          Operasi I/O tergantung sinyal kendali dari CPU.

–          lnstruksi I/O mengaktifkan baris kendali read/write pada port I/O, sedangkan instruksi memori

akan mengaktifkan baris kendali read/write pada memori.

–          Ruang memori dan ruang alamat I/O menyatu, sehingga dapat memiliki alamat yang sama.

Kelebihan dan kekurangan:

–          I/O mapped I/O Iebih cepat dan efisien, karena lokasi I/O terpisah dengan lokasi memori.

–          I/O mapped I/O mempunyai keterbatasan jumlah instruksi yang dapat digunakan untuk operasi I/O.

Operasi I/O terbagi menjadi 3 metode :

  1.  I/O TERPROGRAM

Metode di mana CPU mengendalikan operasi I/O secara

keseluruhan dengan menjalankan serangkaian instruksi

I/O dengan sebuah program.

Karakteristik:

–          Program tersebut digunakan untuk memulai, mengarahkan dan menghentikan operasi-operasi I/O.

–          Membutuhkan sejumlah perangkat keras (register)

yaitu:

  • Register status, berisi status piranti I/O dan data yang akan dikirimkan.
  • Register buffer, menyimpan data sementara sampai CPU siap menerimanya
  • Pointer buffer, menunjuk ke lokasi memori di mana sebuah karakter harus ditulis atau dan mana karakter tersebut harus dibaca.
  • Counter data, tempat penyimpanan jumlah karakter dan akan berkurang nilainya jika karakter ditransfer.

–          Membutuhan waktu proses yang lama dan tidak efesien dalarn pemanfaatan CPU.

  1.  I/O INTERUPSI

Metode di mana CPU akan bereaksi ketika suatu piranti mengeluarkan permintaan untuk pelayanan.

Karakteristik:

–          Lebih efisien dalam pemanfaatan CPU, karena tidak harus menguji status dari piranti.

–          Interupsi dapat berasal dari piranti I/O, interupsi perangkat keras misalnya : timer, memori, power supply, dan Interupsi perangkat lunak misalnya :

  • overflow, opcode/data yang ilegal, pembagian dengan nol.

Ada 2 jenis interupsi:

  1.  lnterupsi maskable

Interupsi yang dapat didisable (dimatikan) untuk sementara dengan sebuah instruksi disable interupsi khusus.

2.  Interupsi nonmaskable

Interupsi yang tidak dapat didisable dengan instruksi perangkat lunak.

Metode Interupsi:

– Polling/polled interupt

Berdasarkan urutan prioritas yang telah ditentukan sebelum piranti memerlukan interupsi.

Misal: piranti A dan B mempunyai urutan prioritas A lebih Iebih dulu dari B, maka jika A dan B secara bersamaan memerlukan pelayanan interupsi, maka piranti A akan didahulukan.

– Vector Interupt

Peralatan yang berinterupsi diidentifikasikan secara Iangsung dan dihubungkan routine pelayanan vector interupt.

INTR  = Sinyal yang dikeluarkan oleh peralatan.

INTA = Sinyal kendali yang digunakan CPU untuk menyiapkan pelayanan interrupt. Cara yang biasa digunakan dengan metode daisy chain dan encoder prioritas.

3. Direct Memory Access (DMA)

Metode transfer data secara langsung antara memori dengan piranti tanpa pengawasan dan pengendalian CPU.

• Skema transfer blok DMA dual port CPU dan DMA controller mengakses memori utama melalui MAR dan MBR dengan menggunakan sebuah memori utama dual port (2 port).

Port I —-> melayani CPU

Port II —-> melayani DMA controller

• Skema transfer blok DMA cycle stealing (pencurian siklus)

Hanya memerlukan sebuah memori port tunggal dimana CPU dan piranti I/O beradu cepat pada basis asinkron, prioritas utama akan diberikan pada piranti I/O.

Interfacing

Adalah peralatan yang digunakan untuk menghubungkan suatu piranti dengan CPU melalui bus.

Keterangan:

• Register kendali (CR) digunakan untuk mencatat berbagai perintah dan informasi lainnya dalam peripheral.

• Register status (SR) digunakan untuk menyimpan status piranti dan memberitahukan pesan-pesan kesalahan

• Register data input (IDR) dan register data output (ODR) masing-masing berfungsi sebagai bufer data untuk operasi input dan output.

Urutan operasi interface:

– Unit logika handshaking memasok unit kendali dengan empat sinyal.

– Dua sinyal, register kendali penulisan (WCR atau write control register) dan register status pembacaan (RSR atau read status register), masing-masing berhubungan dengan CR dan SR.

– Sedangkan dua sinyal lainnya adalah register pembacaan data input (RIDR atau read input data register) dan register penulisan data output (WODR atau write output data register ), masing-masing mengendalikan IDP dan ODR.

Transfer data

Format transfer:

– Paralel : semua bit pada karakter (word dengan panjang tertentu) dikirim secara bersamaan dalam batas waktu yang diberikan.

– Serial : Data dikirim secara berurutan dalam satu saluran.

Transfer data secara paralel lebih cepat daripada secara serial karena saluran transmisinya banyak, kelemahannya kalau terlalu panjang akan terjadi interferensi antar saluran.

Mode transfer data:

1. Synchronous mode

Baris kendali digunakan untuk mengsinkronkan waktu pada semua kejadian yang terjadi selama periode waktu tertentu.

Kelemahan:

• Tiap piranti I/O berbeda-beda kecepatan operasinya, sehingga harus diturunkan pada kecepatan yang paling rendah.

Gambar 2. Sinyal Pengaturan waktu mode sinkron

2. Asynchronous mode

Menggunakan teknik jabat tangan (hand shaking) untuk menyakinkan transfer data antara pengirim dan penerima tidak ada kesalahan (data valid)

Gambar 3. Sinyal Pengaturan waktu mode asinkron

Kelemahan :

– memerlukan lebih banyak kendali

– kecepatan transfer lebih rendah dari yang sebenarnya.

Kelebihan :

– memungkinkan penggunaan piranti I/O yang memiliki berbagai varasi kecepatan dalama system yang sama.

Sistem Prosesor I/O

  1. Saluran I/O:

Merupakan sebuah prosesor khusus dengan kemampuan terbatas yang disusun untuk interface beberapa piranti I/O ke memori.

– Saluran I/O dapat melakukan pendeteksian dan pembetulan kesaIahan dan beroperasi dalam basis cycle stealing.

– Saluran I/O berkomunikasi dengan CPU sebagai suatu fasiIitas DMA dan berkomunikasi dengan piranti I/O seolah-olah sebuah CPU.

3 pelayanan saluran:

– Saluran Multiplexer : Digunakan untuk menghubungkan piranti yang berkecepatan rendah dan sedang serta serta mengoperasikannya secara bersamaan dengan multiplexing.

– Saluran Selektor : Digunakan untuk menghubungkan piranti I/O yang berkecepatan tinggi tanpa multiplexing.

Contoh: pita magnetis, disk

-Saluran Multiplexer Blok Merupakan kombinasi dari dua pelayanan diatas.

  1. Prosesor I/O (IOP)

Merupakan komputer umum yang berkomunikasi dengan memori utama melalui fasilitas DMA system bus dan dengan piranti I/O atas satu atau lebih bus I/O.

Ada 2 mode yaitu :

–           Single Shared bus

Setiap IOP mengendalikan sejumlah piranti I/O tertentu yang tetap.

Gambar 4. Model Single Shared bus

–           Switching matriks bus

Setiap IOP mengendalikan satu piranti I/O

Gambar 5. Model Switching matriks bus

Konfigurasi Multiprosesor:

Di dalam satu komputer seakan-akan terdapat beberapa mikroprosesor, meskipun sebenarnya mikroprosesor utamanya hanya satu, sedangkan yang Iainnya berupa prosesor I/O (lOP). Hubungan yang paling sederhana menggunakan common bus.

Gambar 6. Model common bus pada multiprosesor

• Bus umum bersifat membagi waktu (time shared) oleh semua prosesor dan hanya satu prosesor yang dapat mengakses memori pada waktu tertentu.Tetapi dapat juga menggunakan bus umum ke dalam organisasi multiprosesor dual bus.

• Setiap komputer dihubungkan suatu pengendali sistem ke bus umum

• Komunikasi interkomputer ini dilakukan pada sistem bus melalui memori umum.

Gambar 7. Model system bus pada multiprosesor

Kernel I/O Subsystem:

  1. Scheduling :

–          Permohonan I/O dilakukan berdasarkan antrian perangkat

–          Beberapa sistem operasi berusaha untuk seadil mungkin

  1. Buffering : menyimpan data di memori selama proses transfer antar perangkat

–          Solusi perbedaan kecepatan dari perangkat yang ada

–          Solusi perbedaan ukuran transfer perangkat

Caching

  1. Cache : area memori yang cepat, yang berisikan kopian-kopian data.
  2. Beda BUFFER dan CACHE :

–          Buffer dapat menyimpan satu-satunya copy dari sebuah item data yang ada.

–          Cache hanya menyimpan sebuah salinan dari data di tempat lain pada storage sehingga lebih cepat diakses.

  1. Peningkatan performa I/O, terutama untuk:

–          berkas yang digunakan secara bersama oleh beberapa aplikasi,

–          berkas yang sedang di baca/tulis secara berulang-ulang.

Spooling

  1. Spool : buffer yang menyimpan output device

–          Tidak dapat menerima interleaved data stream.

  1. 1 device memenuhi 1 permintaan, tapi aplikasi bisa minta bersamaan.
  2. Sistem operasi meng-intercept semua output ke device.

Masing-masing output aplikasi di-spooled ke berkas disk yang berbeda.

  1. Setiap Sistem Operasi menyediakan control interface yang :

–          Membuat users dan administrator sistem menampilkan antrian,

–          Menyingkirkan pekerjaan yang tidak diinginkan.

–          dll.

Error Handling

  1. Sistem Operasi dengan pelindung memori dapat bertahan dari berbagai jenis error dari perangkat keras dan aplikasi.
  2. Sistem Operasi sulit memperbaiki kesalahan permanen bila

terjadi pada komponen penting,.

  1. Umumnya akan me-return sebuah error number atau kode

ketika permintaan I/O gagal.

  1. Log system error menyimpan laporan masalah yang ada.

Struktur Data Kernel

  1. Kernel menyimpan informasi penggunaan komponen I/O, termasuk tabel open-file, koneksinetworking, informasi karakter device.
  2. Struktur data yang rumit dapat digunakan untuk memeriksa buffer, alokasi memori, dan menentukan batasan sektor/blok.
  3. 3.      Beberapa sistem operasi menggunakan tehnik object oriented untuk mengkapsulasikan perbedaan-perbedaan semantik yang ada.

Transformasi I/O Menjadi Operasi H/W

Proses:

  1. Blocking read system call diberikan pada pendeskripsi data

dari data yang sudah terbuka sebelumnya.

  1. Kode di kernel memeriksa parameter. Dalam proses input, jika data sudah ada di buffer, data dikembalikan ke proses dan permintaan I/O selesai

Contoh:

  1. membaca data dari disk untuk di proses.
  2. Menentukan device yang mengandung data,
  3. 3.      Menerjemahkan nama ke perwakilan device
  4. 4.      Secara fisik memindahkan data dari disk ke buffer
  5. Mempersiapkan data untuk proses permintaan I/O
  6. Mengembalikan kontrol ke proses

I/O Stream (1)

I/O stream adalah suatu mekanisme pengiriman data secara

bertahap dan terus menerus melalui suatu aliran data (dua arah). Biasa digunakan dalam network protocol.Asynchronous.

–          Menggunakan message passing dalam men-transfer data.

–          Untuk memasukkan ke dalam stream digunakan ioctl system call

–          Untuk menuliskan data ke device digunakan write / putmsg system call

–          Untuk membaca data dari device digunakan read / getmsg system call

 

Kinerja I/O

  1. Pembuat CPU melaksanakan kode device-driver
  2. Memberitahukan ke-tidak efisien-an pada mekanisme penanganan interrupt dalam kernel
  3. Me-load memory bus sewaktu menyalin data yang dilakukan di controller dan physical memory

Meningkatkan Kinerja I/O

  1. Memperkecil jumlah context switch
  2. Memperkecil jumlah penyalinan data yang dilakukan sewaktu pengoperan data antara device dan aplikasi
  3. Memperkecil jumlah interrupt dengan menggunakan transfer secara besar-besaran, smart controllersdan polling (jika busywaiting bisa diminimalisir)
  4. Menambah konkurensi dengan menggunakan DMA controllers atau channels yang telah diketahui untuk meng-offload penyalin sederhana dari CPU
  5. Memindahkan proses-proses primitif ke perangkat keras, untuk membuat operasinya dalam device controllers konkuren dengan CPU dan operasi Bus
  6. Menyeimbangkan CPU, memory subsystem, bus, dan I/O performance, karena kelebihan di salah satu area akan membuat keterlambatan pada yang lain

Mengimplementasikan I/O

  1. I/O seharusnya diimplementasikan dalam pada waktu application level
  2. Ketika algoritma pada application-level sudah menunjukkan kegunaannya, implementasikan kembali dalam kernel
  1. Kinerja tertinggi bisa didapatkan dari implementasi spesial ke perangkat keras, baik dalam deviceatau dalam controller

Konversi Bilangan ASCII

Pengertian :
  • ASCII singkatan dari American Standard Kode untuk Informasi Interchange. Komputer hanya dapat memahami nomor, maka kode ASCII adalah representasi numerik dari karakter seperti ‘a’ atau ‘@’. ASCII dikembangkan lama dan sekarang non-cetak karakter yang jarang digunakan untuk tujuan aslinya. Berikut ini adalah tabel karakter ASCII dan ini termasuk deskripsi dari 32 karakter pertama non-cetak. ASCII sebenarnya dirancang untuk digunakan dengan teletypes dan deskripsi agak kabur. Jika seseorang mengatakan mereka ingin Anda CV Namun dalam format ASCII, semua ini berarti mereka ingin ‘plain’ teks tanpa format seperti tab, tebal atau menggarisbawahi – format baku bahwa setiap komputer dapat memahami. Hal ini biasanya sehingga mereka dapat dengan mudah mengimpor file ke dalam aplikasi mereka sendiri tanpa masalah. Notepad.exe menciptakan teks ASCII, atau di MS Word Anda dapat menyimpan file ‘teks saja’.
  • Setiap kode ASCII itulah yang kemudian akan dikonfersi kebilangan biner sehingga terbentuk bit-bit yang terdiri dari bit ‘0’ dan bit ‘1’. Bit inilah yang akan dikirimkan dan pada penerima akan dikodekan kembali. Kemudian bit-bit tadi yang dikirimkan dan akan dikodekan kembali kedalam teks aslinya. Proses inilah yang dinamakan decoding. Misalnya kita ingin mengirimkan pesan “kirim”. Maka setiap huruf yaitu k,i,r,i,m akan dikodekan menjadi biner.
Contoh :

Kode ASCII untuk setiap huruf :

–          k = 107 = 01101011 (yang dikirim pertama)

–          i = 105 = 01101001

–          r = 114 = 01110010

–          i = 105 = 01101001

–          m = 109 = 01101101 (yang dikirim terakhir)

Kemudian bit-bit tadi yang dikirimkan dan akan dikodekan kembali kedalam teks aslinya. Asumsikan pengiriman tanpa gangguan. Maka, pada penerima akan diterima kode-kode bit

01101101  01101001  01110010  01101001  01101011

Kemudian kode-kode bit itu akan diterjemahkan dengan memisah menjadi 8 bit.

01101101 = 109 = m (yang diterima terakhir)

01101001 = 105 = i

01110010 = 114 = r

01101001 = 105 = i

01101011 = 107 = k (yang diterima pertama)

Maka diterjemahkan bahwa pesannya adalah kata “kirim” .

selengkapnya, bisa download link dibawah ini:

Klik disini


Pembuatan Sinyal Pada Matlab

Pengertian Sinyal :
  • Sinyal merupakan fungsi suatu variable yang menunjukkan informasi dalam fisik fenomena alam. Sinyal adalah besaran fisis yang berubah menurut waktu, ruang, atau variabel-variabel bebas lainnya. Sinyal berupa arus data yang mengalir melalui jalur tranmisi sebagai indikator untuk alat komunikasi.
  • Jenis sinyal berdasarkan waktu (t) ada 2 macam, yaitu sinyal analog dan sinyal digital. Sinyal Analog merupakan suatu sinyal dimana salah satu besaran karakteristiknya mengikuti secara kontinyu perubahan dari besaran fisik lainnya yang melambangkan informasi, secara fisik sinyal analog berarti selalu mempunyai nilai di sepanjang waktu. Karakteristik yang dimiliki oleh sinyal analog antara lain : Amplitudo, frekuensi dan fasenya. Sedangkan Sinyal Digital merupakan suatu sinyal yang terdiri atas sederetan elemen yang berurutan terhadap waktu, dimana salah satu atau lebih karakteristiknya membawa informasi. Karakteristik dari sinyal diskrit adalah : Amplitudo, lebar dan bentuk gelombangnya.

Rumus :

            1.    Sinyal Sinusoida Kontinyu

x(t) = f(t)

x(t) = sin(2πft)

x(t) = cos(2πf1t) + 2sin(2πf2t)

            2.    Sinyal Sinusoida Diskrit

x[n] = f(n)

x(t) = sin(2πft)

x(t) = cos(2πf1t) + 2sin(2πf2t)

            3.    Sinyal Deterministik

yn = y + sqrt(0.2)*randn(size(x));  atau  graji=sawtooth(2*pi*t);

            4.    Sinyal Random

sig = rand(1,pjg_sig);

–untuk lebih lengkapnya, silahkan download di link: download lengkap