Interface atau antarmuka adalah Penghubung antara dua sistem atau alat media penghubung antara satu subsistem dengan subsistem lainnya. Melalui penghubung ini memungkinkan sumber daya mengalir dari satu subsistem ke subsistem yang lainnya. Keluaran (output) dari suatu subsistem akan menjadi masukan (input) untuk subsistem lainnya dengan melalui penghubung. Dengan penghubung satu subsistem dapat terintegrasi dengan subsistem yang lainnya membentuk satu kesatuan.
Interface ini, meliputi:
1. perangkat yang dipakai untuk mengerjakan sesuatu, dan perangkat yang secara tidak langsung mengontrol perangkat lunak.
2. piranti input atau output
3. prosedur pemakaian perangkat.
Dalam terminologi perangkat lunak, interface bisa diartikan sebagai tampilan atau cara perangkat lunak bersangkutan berinteraksi dengan penggunanya. Sedangkan dalam terminologi perangkat keras, interface mengacu kepada standar yang digunakan oleh suatu peripheral tertentu untuk berhubungan dengan peripheral lainnya dalam satu sistem.
Kareakteristik utama interface adalah pararel dan serial
1.Pararel
-Terdapat sejumlah saluran yang terhuibung kemodul I/O dan perifheral dan sejumlah bit yang dipindahkan secara simultan melalui bus data.
-Digunakan untuk perifheral berkecepatan tinggi seperti pita dan disk
2.Serial
-Hanya terdapat saluran yang digunaka untuk mentransmisikan data dan bit-bit harus di transmisikan satu persatu.
-serial umum digunakan untuk printer dan terminal.
Interface Aplikasi I/O
Ketika suatu aplikasi ingin membuka data yang ada dalam suatu disk, sebenarnya aplikasi tersebut harus dapat membedakan jenis disk apa yang akan diaksesnya. Untuk mempermudah pengaksesan, sistem operasi melakukan standarisasi cara pengaksesan pada peralatan I/O. Pendekatan inilah yang dinamakan interface aplikasi I/O.
interface aplikasi I/O melibatkan abstraksi, enkapsulasi, dan software layering. Abstraksi dilakukan dengan membagi-bagi detail peralatan-peralatan I/O ke dalam kelas-kelas yang lebih umum. Dengan adanya kelas-kelas yang umum ini, maka akan lebih mudah untuk membuat fungsi-fungsi standar(interface) untuk mengaksesnya. Lalu kemudian adanya device driver pada masing-masing peralatan I/O, berfungsi untuk enkapsulasi perbedaan-perbedaan yang ada dari masing-masing anggota kelas-kelas yang umum tadi. Device driver mengenkapsulasi tiap -tiap peralatan I/O ke dalam masing-masing 1 kelas yang umum tadi(interface standar). Tujuan dari adanya lapisan device driver ini adalah untuk menyembunyikan perbedaan-perbedaan yang ada pada device controller dari subsistem I/O pada kernel. Karena hal ini, subsistem I/O dapat bersifat independen dari hardware.
Karena subsistem I/O independen dari hardware maka hal ini akan sangat menguntungkan dari segi pengembangan hardware. Tidak perlu menunggu vendor sistem operasi untuk mengeluarkan support code untuk hardware-hardware baru yang akan dikeluarkan oleh vendor hardware.
Peralatan Block dan Karakter
peralatan block diharapkan dapat memenuhi kebutuhan akses pada berbagai macam disk drive dan juga peralatan block lainnya. Block device diharapkan dapat memenuhi/mengerti perintah baca, tulis dan juga perintah pencarian data pada peralatan yang memiliki sifat random-access.
Keyboard adalah salah satu contoh alat yang dapat mengakses stream-karakter. System call dasar dari interface ini dapat membuat sebuah aplikasi mengerti tentang bagaimana cara untuk mengambil dan menuliskan sebuah karakter. Kemudian pada pengembangan lanjutannya, kita dapat membuat library yang dapat mengakses data/pesan per-baris.
Peralatan Jaringan
Karena adanya perbedaan dalam kinerja dan pengalamatan dari jaringan I/O, maka biasanya sistem operasi memiliki interface I/O yang berbeda dari baca, tulis dan pencarian pada disk. Salah satu yang banyak digunakan pada sistem operasi adalah interface socket.
Socket berfungsi untuk menghubungkan komputer ke jaringan. System call pada socket interface dapat memudahkan suatu aplikasi untuk membuat local socket, dan menghubungkannya ke remote socket. Dengan menghubungkan komputer ke socket, maka komunikasi antar komputer dapat dilakukan.
Jam dan Timer
Adanya jam dan timer pada hardware komputer, setidaknya memiliki 3 fungsi, memberi informasi waktu saat ini, memberi informasi lamanya waktu sebuah proses, sebagai trigger untuk suatu operasi pada suatu waktu. Fungsi fungsi ini sering digunakan oleh sistem operasi. Sayangnya, system call untuk pemanggilan fungsi ini tidak di-standarisasi antar sistem operasi
hardware yang mengukur waktu dan melakukan operasi trigger dinamakan programmable interval timer. Dia dapat di set untuk menunggu waktu tertentu dan kemudian melakukan interupsi. Contoh penerapannya ada pada scheduler, dimana dia akan melakukan interupsi yang akan memberhentikan suatu proses pada akhir dari bagian waktunya.
Sistem operasi dapat mendukung lebih dari banyak timer request daripada banyaknya jumlah hardware timer. Dengan kondisi seperti ini, maka kernel atau device driver mengatur list dari interupsi dengan urutan yang duluan datang yang duluan dilayani.
Blocking dan Nonblocking I/O
Ketika suatu aplikasi menggunakan sebuah blocking system call, eksekusi aplikasi itu akan diberhentikan untuk sementara. aplikasi tersebut akan dipindahkan ke wait queue. Dan setelah system call tersebut selesai, aplikasi tersebut dikembalikan ke run queue, sehingga pengeksekusian aplikasi tersebut akan dilanjutkan. Physical action dari peralatan I/O biasanya bersifat asynchronous. Akan tetapi, banyak sistem operasi yang bersifat blocking, hal ini terjadi karena blocking application lebih mudah dimengerti dari pada nonblocking application.
Contoh Program INTERFACE
interface AlatMusik {
void mainkan();
void setelNada();
String ambilNama();
}
class AlatMusikPetik implements AlatMusik{
protected String nama;
public void mainkan() {
System.out.println(ambilNama() + "dimainkan dengan cara petik");
}
public void setelNada() {
System.out.println("setel nada pada " + ambilNama());
}
public String ambilNama() {
return nama;
}
}
class AlatMusikTiup implements AlatMusik{
protected String nama;
public void mainkan() {
System.out.println(ambilNama() + "dimainkan dengan cara tiup");
}
public void setelNada() {
System.out.println("setel nada pada " + ambilNama());
}
public String ambilNama() {
return nama;
}
}
class AlatMusikPukul implements AlatMusik{
protected String nama;
public void mainkan() {
System.out.println(ambilNama() + "dimainkan dengan cara pukul");
}
public void setelNada() {
System.out.println("setel nada pada " + ambilNama());
}
public String ambilNama() {
return nama;
}
}
class Gitar extends AlatMusikPetik {
Gitar(String nama){
this.nama = nama;
}
}
class Bass extends AlatMusikPetik {
Bass(String nama){
this.nama = nama;
}
}
class DemoInterface {
public static void main(String[] args) {
AlatMusikPetik gitar, bass;
gitar = new Gitar("Gitar");
bass = new Bass("Bass");
gitar.mainkan();
gitar.setelNada();
System.out.println();
bass.mainkan();bass.setelNada();
}
}
Output:
Gitar dimainkan dengan cara petik
Setel nada pada Gitar
Bass dimainkan dengan cara petik
Setel nada pada Bass
Tidak ada komentar:
Posting Komentar