Perintah Dasar Terminal Linux

Sebelum ke terminal linux kita cari tahu apa itu linux?

Linux adalah sebuah sistem operasi yang dikembangkan oleh Linus Benedict Torvaldsdari Universitas Helsinki Finlandia sebagai proyek hobi mulai tahun 1991. Ia menulis Linux, sebuah kernel untuk prosesor 80386, prosesor 32-bit pertama dalam kumpulan CPU Intel yang cocok untuk PC. Baru pada tanggal 14 Maret 1994 versi 1.0 mulai diluncurkan, dan hal ini menjadi tonggak sejarah Linux.

 

Linux merupakan clone dari UNIXyang telah di-port ke beragam platform, antara lain: Intel 80×86, AlphaAXP, MIPS, Sparch, Power PC, dan lain sebagainya. Sekitar 95% kode sumber kernel sama untuk semua platform perangkat keras.

 

Linux termasuk sistem operasi yang didistribusikan secara open source, artinya kode sumber Linux diikutsertakan sehingga dapat dipelajari dan dikembangkan dengan mudah. Selain itu Linux dikembangkan oleh GNU(General Public License).

 

Linux dapat digunakan untuk berbagai keperluan, seperti: jaringan, pengembangan software, dan sebagai end-user platform. Selama ini Linux menjadi sistem operasi yang menjadi banyak perhatian karena kecanggihan dan harganya yang relatif murah dibanding dengan sistem operasi yang lain.

 

Perintah Dasar untuk Penanganan File.

Membuat direktori . misalkan kita ingin membuat folder kita bisa menggunakan perintah mkdir nama_folder atau contohnya mkdir kucing

Is.

Perintah ini jika di jalankan akan menampilkan daftar file dan folder yang berada di direktori yang sedang aktif.

Perintah ini juga memiliki beberapa atribut seperti :

  • ls –l → Memperlihatkan daftar file di sertai dengan atribut seperti pemilik, permission, ukuran dan tanggal modifikasi.
  • ls –a → Memperlihatkan daftar file dan folder tersembunyi di dalam direktori sekarang tanpa atribut apapun
  • ls –l → Menggabungkan opsi perintah –l dan –a untuk ls.
  • ls /direktori/kucing → Memperlihatkan daftar file dari /direktori/kucing ketika sedang berada di direktori sekarang.

 

 

 

cd direktori_tujuan

Perintah ini digunakan untuk berpindah ke direktori lain. Contohnya saat kita berada di direktori home dan ingin berpindah ke direktori “kucing”, kita dapat menggunakan perintah cd kucing.

Perintah ini juga memiliki beberapa atribut, seperti:

 

cd direktori/ → pindah direktori ke direktori yang berada di dalam direktori sekarang.

  • cd → pindah ke direktori home.
  • cd ~ → pindah ke direktori home.
  • cd .. → pindah satu direktori ke direktori teratas atau kembali ke direktori sebelumnya.
  • cd ../../n → pindah n direktori sebelumnya.
  • cd/a/b/c → Pindah ke direktori tanpa harus mundur ke direktori sebelumnya jika penulisan direktori tersebut benar dan tersedia

pwd

Penggunaan perintah ini untuk menampilkan tempat direktori yang aktif.

cp file_yang_akan_disalin direktori_tujuan.

Perintah ini digunakan untuk menyalin file. Beberapa atribut dari perintah ini adalah

 

  • cp file /path/a/b/c → menyalin file tertentu ke direktori tertentu
  • cp -r folder /path/a/b/c → menyalin folder tertentu secara rekursif ke direktori tertentu
  • cp *.extension /path/a/b/c → menyalin file –file yang berekstensi tertentu ke direktori tertentu
  • cp nama* /path/a/b/c → menyalin file –file yang namanya diawali dengan ‘nama’ke direktori tertentu.

 

mv file_yang_akan_dipindahkan direktori_tujuan

perintah ini digunakan untuk memindahkan file. Selain itu, perintah ini juga dapat digunakan untuk mengganti nama file dengan mengetikkan perintah mv nama_file_lama.abc nama_file_baru.abc. perintah ini memiliki cara kerja yang hampir sama dengan cp.

 

rm file

Perintah ini digunakan untuk menghapus file. Beberapa atribut untuk perintah ini adalah :

rm –r folder → Menghapus folder.

rm –rf folder → Menghapus folder secara paksa.

find nama_file atau find folder_yang_akan_dicari

Perintah ini digunakan utuk mencari file yang dikehendaki pada direktori yang aktif. Apabila file ditemukan maka file tersebut akan ditampilkan. Tapi jika tidak ada maka akan muncul notifikasi bahwa file tidak ada

 

Perintah Dasar dalam Pemrosesan Teks.

Cat

Perintah ini digunakan untuk menampilkan isi file ke dalam bentuk plaintext. Contoh penggunaannya adalah cat nama_file.txt. Perintah tersebut akan menampilkan file “nama_file.exe” ke dalam bentuk plain text

wc nama_file.txt

Perintah ini digunakan untuk menampilkan jumlah baris, jumlah kata, dan ukuran file (dalam byte) suatu file.

Perintah Dasar dalam Sistem Administrasi

sudo nama_perintah

Perintah ini digunakan untuk menjalankan program sebagai super user. Karena terkadang suatu perintah di Linux harus dijalanlan dengan menggunakan super user untuk alasan keamanan.

whoami

Perintah tersebut untuk melihat user yang sedang aktif.

 

Perintah Dasar dalam Manajemen Pemrosesan.

ps

Perintah ini digunakan untuk melihat kondisi proses yang ada dengan menampilkan nomor identitas proses (PID), nama terminal dimana proses tersebut aktif (TTY), staus sleeping dan running (STAT) dan instruksi yang digunakan (CMD). Perintah ini juga memiliki beberapa atribut,

di antaranya:

ps u → Untuk melihat elemen lainnya seperti %CPU, %MEM, SIZE, RSS, dan START.

ps –u <user> → Mencari proses yang spesifik untuk pemakai.

ps –a/ps –au/ps –aux → Mencari proses lainnya.

op → Melihat proses yang sedang berjalan. Juga dapat menggunakan htop dengan menginstall terlebih dahulu.

ps –eH → Menampilkan hubungan proses parent dan child.

ps –eF → Menampilkan hubungan proses parent dan child serta letak prosesnya.

pstree → Menampilkan semua proses pada sistem dalam bentuk hirarki parent/child.

Kill.

Perintah ini digunakan untuk mengakhiri proses yang sedang berjalan. Cara penggunaannya adalah:

kill PID : Membunuh sebuah proses yang memiliki PID tertentu.

pkillall program : Membunuh semua proses yang memiliki nama tertentu.

Beberapa perintah dasar dalam manajemen pemrosesan lainnya adalah:

 

 

renic <prioritas> <PID> : Mengubah prioritas suatu proses.

lsusb : Menampilkan daftar perangkat yang ditancapkan di port USB.

clear : Membersihkan tampilan terminal.

reboot : restart sistem

shutdown/halt : Mematikan system

lshw : Menampilkan daftar hardware (harus dijalankan sebagai super user)

uptime : Menampilkan lamanya sistem telah berjalan

bc : kalkulator dalam terminal

 

Referenci.

 

  • Modul praktikum mata kuliah Sistem Operasi 2012

 

 

 

 

 

 

 

Implementasi masalah interprocess communication pada Andorid

Tugas Sistem Operasi 2

Nama Anggota :

Farista Rachman Latuconsina (1304702)

Mokhamad Afrizal Hanifa (1304373)

Muhammad Aziz Ashari (1305793)

Yogi Siswanto (1301614)

Kelas : Ilmu Komputer C2

Link : http://1304373.blog.upi.edu/2015/03/13/implementasi-masalah-interprocess-communication-pada-android/

 

Gabungan Kelompok Kerja 21–28 IKI-20230 Semester Genap 2002/ 2003 menyatakan bahwa:

Komunikasi Proses Dalam Sistem

Cara lain untuk meningkatkan efek yang sama adalah untuk sistem operasi yaitu untuk menyediakan alat-alat proses kooperatif untuk berkomunikasi dengan yang lain lewat sebuah komunikasi dalam proses (IPC = Inter-Process Communication). IPC menyediakan sebuah mekanisme untuk mengizinkan proses-proses untuk berkomunikasi dan menyelaraskan aksi-aksi mereka tanpa berbagi ruang alamat yang sama. IPC adalah khusus digunakan dalam sebuah lingkungan yang terdistribusi dimana proses komunikasi tersebut mungkin saja tetap ada dalam komputer-komputer yang berbeda yang tersambung dalam sebuah jaringan. IPC adalah penyedia layanan terbaik dengan menggnakan sebuah sistem penyampaian pesan, dan sistem-sistem pesan dapat diberikan dalam banyak cara.

Sistem Penyampaian Pesan

Fungsi dari sebuah sistem pesan adalah untuk memperbolehkan komunikasi satu dengan yang lain tanpa perlu menggunakan pembagian data. Sebuah fasilitas IPC menyediakan paling sedikit dua operasi yaitu kirim (pesan) dan terima (pesan). Pesan dikirim dengan sebuah proses yang dapat dilakukan pada ukuran pasti atau variabel. Jika hanya pesan dengan ukuran pasti dapat dikirimkan, level sistem implementasi adalah sistem yang sederhana. Pesan berukuran variabel menyediakan sistem implementasi level yang lebih kompleks.

Berikut ini ada beberapa metode untuk mengimplementasikan sebuah jaringan dan operasi pengiriman/ penerimaan secara logika:

Komunikasi langsung atau tidak langsung.

Komunikasi secara simetris/ asimetris.

Buffer otomatis atau eksplisit.

Pengiriman berdasarkan salinan atau referensi.

Pesan berukuran pasti dan variabel.

Komunikasi Langsung

Proses-proses yang ingin dikomunikasikan harus memiliki sebuah cara untuk memilih satu dengan yang lain. Mereka dapat menggunakan komunikasi langsung/ tidak langsung.

Setiap proses yang ingin berkomunikasi harus memiliki nama yang bersifat eksplisit baik penerimaan atau pengirim dari komunikasi tersebut. Dalam konteks ini, pengiriman dan penerimaan pesan secara primitive dapat dijabarkan sebagai:

Send (P, message) – mengirim sebuah pesan ke proses P.

Receive (Q, message) – menerima sebuah pesan dari proses Q.

Sebuah jaringan komunikasi pada bahasan ini memiliki beberapa sifat, yaitu:

Sebuah jaringan yang didirikan secara otomatis diantara setiap pasang dari proses yang ingin dikomunikasikan. Proses tersebut harus mengetahui identitas dari semua yang ingin dikomunikasikan.

Sebuah jaringan adalah terdiri dari penggabungan dua proses.

Diantara setiap pesan dari proses terdapat tepat sebuah jaringan.

Pembahasan ini memperlihatkan sebuah cara simetris dalam pemberian alamat. Oleh karena itu, baik keduanya yaitu pengirim dan penerima proses harus memberi nama bagi yang lain untuk berkomunikasi, hanya pengirim yang memberikan nama bagi penerima sedangkan penerima tidak menyediakan nama bagi pengirim. Dalam konteks ini, pengirim dan penerima secara sederhana dapat dijabarkan sebagai:

Send (P, message) – mengirim sebuah pesan kepada proses P.

Receive (id, message) – menerima sebuah pesan dari semua proses. Variabel id diatur sebagai nama dari proses dengan komunikasi.

Komunikasi Tidak Langsung

Dengan komunikasi tidak langsung, pesan akan dikirimkan pada dan diterima dari/ melalui mailbox (kotak surat) atau terminal-terminal, sebuah mailbox dapat dilihat secara abstrak sebagai sebuah objek didalam setiap pesan yang dapat ditempatkan dari proses dan dari setiap pesan yang bias dipindahkan. Setiap kotak surat memiliki sebuah identifikasi (identitas) yang unik, sebuah proses dapat berkomunikasi dengan beberapa proses lain melalui sebuah nomor dari mailbox yang berbeda. Dua proses dapat saling berkomunikasi apabila kedua proses tersebut sharing mailbox. Pengirim dan penerima dapat dijabarkan sebagai:

Send (A, message) – mengirim pesan ke mailbox A.

Receive (A, message) – menerima pesan dari mailbox A.

Dalam masalah ini, link komunikasi mempunyai sifat sebagai berikut:

Sebuah link dibangun diantara sepasang proses dimana kedua proses tersebut membagi mailbox.

Sebuah link mungkin dapat berasosiasi dengan lebih dari dua proses.

Diantara setiap pasang proses komunikasi, mungkin terdapat link yang berbeda-beda, dimana setiap link berhubungan pada satu mailbox.

Misalkan terdapat proses P1, P2 dan P3 yang semuanya share mailbox. Proses P1 mengirim pesan ke A, ketika P2 dan P3 masing-masing mengeksekusi sebuah kiriman dari A. Proses mana yang akan menerima pesan yang dikirim P1? Jawabannya tergantung dari jalur yang kita pilih:

Mengizinkan sebuah link berasosiasi dengan paling banyak 2 proses.

Mengizinkan paling banyak satu proses pada suatu waktu untuk mengeksekusi hasil kiriman (receive operation).

Mengizinkan sistem untuk memilih secara mutlak proses mana yang akan menerima pesan (apakah itu P2 atau P3 tetapi tidak keduanya, tidak akan menerima pesan). Sistem mungkin mengidentifikasi penerima kepada pengirim.

Mailbox mungkin dapat dimiliki oleh sebuah proses atau sistem operasi. Jika mailbox dimiliki oleh proses, maka kita mendefinisikan antara pemilik (yang hanya dapat menerima pesan melalui mailbox) dan pengguna dari mailbox (yang hanya dapat mengirim pesan ke mailbox). Selama setiap mailbox mempunyai kepemilikan yang unik, maka tidak akan ada kebingungan tentang siapa yang harus menerima pesan dari mailbox. Ketika proses yang memiliki mailbox tersebut diterminasi, mailbox akan hilang. Semua proses yang mengirim pesan ke mailbox ini diberi pesan bahwa mailbox tersebut tidak lagi ada.

Dengan kata lain, mempunyai mailbox sendiri yang independent, dan tidak melibatkan proses yang lain. Maka sistem operasi harus memiliki mekanisme yang mengizinkan proses untuk melakukan hal-hal dibawah ini:

Membuat mailbox baru.

Mengirim dan menerima pesan melalui mailbox.

Menghapus mailbox.

Proses yang membuat mailbox pertama kali secara default akan memiliki mailbox tersebut. Untuk pertama kali, pemilik adalah satu-satunya proses yang dapat menerima pesan melalui mailbox ini. Bagaimana pun, kepemilikan dan hak menerima pesan mungkin dapat dialihkan ke proses lain melalui sistem pemanggilan.

Sinkronisasi

Komunikasi antara proses membutuhkan place by calls untuk mengirim dan menerima data primitive. Terdapat rancangan yang berbeda-beda dalam implementasi setiap primitive. Pengiriman pesan mungkin dapat diblok (blocking) atau tidak dapat dibloking (nonblocking) – juga dikenal dengan nama sinkron atau asinkron.

 

Pengiriman yang diblok: Proses pengiriman di blok sampai pesan diterima oleh proses penerima (receiving process) atau oleh mailbox.

Pengiriman yang tidak diblok: Proses pengiriman pesan dan mengkalkulasi operasi.

Penerimaan yang diblok: Penerima mem blok samapai pesan tersedia.

Penerimaan yang tidak diblok: Penerima mengembalikan pesan valid atau null.

Buffering

Baik komunikasi itu langsung atau tak langsung, penukaran pesan oleh proses memerlukan antrian sementara. Pada dasarnya, terdapat tiga jalan dimana antrian tersebut diimplementasikan:

Kapasitas nol: antrian mempunyai panjang maksimum 0, maka link tidak dapat mempunyai penungguan pesan (message waiting). Dalam kasus ini, pengirim harus memblok sampai penerima menerima pesan.

Kapasitas terbatas: antrian mempunyai panjang yang telah ditentukan, paling banyak n pesan dapat dimasukkan. Jika antrian tidak penuh ketika pesan dikirimkan, pesan yang baru akan menimpa, dan pengirim pengirim dapat melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas. Jika link penuh, pengirim harus memblok sampai terdapat ruang pada antrian.

Kapasitas tak terbatas: antrian mempunyai panjang yang tak terhingga, maka, semua pesan dapat menunggu disini. Pengirim tidak akan pernah di blok.

Contoh Produser-Konsumer

Sekarang kita mempunyai solusi problem produser-konsumer yang menggunakan penyampaian pesan. Produser dan konsumer akan berkomunikasi secara tidak langsung menggunakan mailbox yang dibagi. Buffer menggunakan java.util.Vector class sehingga buffer mempunyai kapasitas tak terhingga. Dan send() dan read() method adalah nonblocking. Ketika produser memproduksi suatu item, item tersebut diletakkan ke mailbox melalui send() method. Konsumer menerima item dari mailbox menggunakan receive() method. Karena receive() nonblocking, consumer harus mengevaluasi nilai dari Object yang di-return dari receive(). Jika null, mailbox kosong.

Gambar 2-12. Program Produser Konsumer Alternatif. Sumber: . . .

import java.util.*;public class Producer extends Thread {

private MessageQueueueue mbox;

 

public Producer( MessageQueueueue m ) {

mbox = m;

}

 

public void run() {

Date message;

 

while ( true ) {

int sleeptime = ( int ) ( Server.NAP_TIME * Math.random() );

System.out.println( “Producer sleeping for ” +

sleeptime + ” seconds” );

try {

Thread.sleep(sleeptime*1000);

} catch( InterruptedException e ) {}

 

message = new Date();

System.out.println( “Producer produced ” + message );

mbox.send( message );

}

}

}

 

import java.util.*;

 

public class Consumer extends Thread {

private MessageQueueueue mbox;

 

public Consumer( MessageQueueueue m ) {

mbox = m;

}

 

public void run() {

Date message;

 

while ( true ) {

int sleeptime = (int) (Server.NAP_TIME * Math.random());

System.out.println(“Consumer sleeping for ” +

sleeptime + ” seconds” );

try {

Thread.sleep( sleeptime * 1000 );

} catch( InterruptedException e ) {}

 

message = ( Date ) mbox.receive();

 

if ( message != null )

System.out.println(“Consumer consume ” + message );

}

}

}

Kita memiliki dua aktor di sini, yaitu Produser dan Konsumer. Produser adalah thread yang menghasilkan waktu (Date) kemudian menyimpannya ke dalam antrian pesan. Produser juga mencetak waktu tersebut di layer (sebagai umpan balik bagi kita). Konsumer adalah thread yang akan mengakses antrian pesan untuk mendapatkan waktu (date) itu dan tak lupa mencetaknya di layer. Kita menginginkan supaya konsumer itu mendapatkan waktu sesuatu dengan urutan sebagaimana produser menyimpan waktu tersebut. Kita akan menghadapi salah satu dari dua kemungkinan situasi di bawah ini:

Bila p1 lebih cepat dari c1, kita akan memperoleh output sebagai berikut:

Gambar 2-13. Keluaran Program Produser Konsumer. Sumber: . . .

   . . .Consumer consume Wed May 07 14:11:12 ICT 2003Consumer sleeping for 3 seconds

Producer produced Wed May 07 14:11:16 ICT 2003

Producer sleeping for 4 seconds

// p1 sudah mengupdate isi mailbox waktu dari Wed May 07

// 14:11:16 ICT 2003 ke Wed May 07 14:11:17 ICT 2003,

// padahal c1 belum lagi mengambil waktu Wed May 07 14:11:16

Producer produced Wed May 07 14:11:17 ICT 2003

Producer sleeping for 4 seconds

Consumer consume Wed May 07 14:11:17 ICT 2003

Consumer sleeping for 4 seconds

// Konsumer melewatkan waktu Wed May 07 14:11:16

. . .

Bila p1 lebih lambat dari c1, kita akan memperoleh keluaran seperti berikut:

Gambar 2-14. Keluaran Program Produser Konsumer. Sumber: . . .

   . . .Producer produced Wed May 07 14:11:11 ICT 2003Producer sleeping for 1 seconds

Consumer consume Wed May 07 14:11:11 ICT 2003

Consumer sleeping for 0 seconds

// c1 sudah mengambil isi dari mailbox, padahal p1 belum

// lagi megupdate isi dari mailbox dari May 07 14:11:11

// ICT 2003 ke May 07 14:11:12 ICT 2003, c1 mendapatkan

// waktu Wed May 07 14:11:11 ICT 2003 dua kali.

Consumer consume Wed May 07 14:11:11 ICT 2003

Consumer sleeping for 0 seconds

Producer sleeping for 0 seconds

Producer produced Wed May 07 14:11:12 ICT 2003

. . .

Situasi di atas dikenal dengan race conditions. Kita dapat menghindari situasi itu dengan mensinkronisasikan aktivitas p1 dan c1 (sehubungan dengan akses mereka ke mailbox).

Mailbox

Gambar 2-15. Program Send/ Receive. Sumber: . . .

import java.util.*;public class MessageQueue {

private Vector q;

 

public MessageQueue() {

q = new Vector();

}

 

// Mengimplementasikan pengiriman nonblocking

public void send( Object item ) {

q.addElement( item );

}

 

// Mengimplementasikan penerimaan nonblocking

public Object receive() {

Object item;

if ( q.size() == 0 )

return null;

else {

item = q.firstElement();

q.removeElementAt(0);

 

return item;

}

}

}

 

Menunggu sampai batas waktu yang tidak dapat ditentukan sampai terdapat ruang kosong pada mailbox.

Menunggu paling banyak n milidetik.

Tidak menunggu, tetapi kembali (return) secepatnya.

Satu pesan dapat diberikan kepada sistem operasi untuk disimpan, walau pun mailbox yang dituju penuh. Ketika pesan dapat disimpan pada mailbox, pesan akan dikembalikan kepada pengirim (sender). Hanya satu pesan kepada mailbox yang penuh yang dapat diundur (pending) pada suatu waktu untuk diberikan kepada thread pengirim.

 

 

Rishabh di http://codetheory.in, mengatakan bahwa contoh penerapan komunikasi antarproses pada sistem operasi android adalah:

Dua proses tidak dapat berbagi memori dan berkomunikasi satu sama lain secara langsung. Oleh karena itu untuk dapat berkomunikasi, objek harus didekomposisi menjadi primitif atau yang disebut dengan marshalling dan ditransfer melalui batas-batas proses. Untuk melakukan marshalling ini, kita harus menulis banyak kode yang rumit, maka dari itu Android menanganinya dengan AIDL (Android Interface Definition Language).

AIDL merupakan kontrak komunikasi, dimana satu set metode antara klien dan layanan setuju agar klien dapat mengakses metode yang berada pada layanan seolah-olah itu terjadi dalam konteks lokal. Kode AIDL ini harus ditulis dalam sebuah file berekstensi .aidl. Sekalinya itu ditulis, peralatan android SDK akan menghasilkan kode java dari file .aidl itu dan akan disimpan di direktori proyek dimana direktori tersebut hasil keluaran dari semua .aidl. Contohnya, dalam kasus ini android studio berada di

build/generated/source/aidl/debug/com.example.app.aidl/GeneratedFile.java. Untuk berkomunikasi

, aplikasi hanya perlu mendeteksi antarmuka, yaitu metode yang tersedia bukanlah yang akan dihasilkan ke dalam file. Aplikasi server dan aplikasi klien akan membutuhkan file .aidl untuk berkomunikasi.

Dalam file antarmuka yang dihasilkan, ada dua kelas utama yang disebut Proxy (untuk sisi klien) dan Stub (untuk sisi layanan). Mereka menangani pengiriman dan penanganan transaksi, serta marshalling dan demarshalling data. Jadi sebenarnya proxy dan server client stub mengelola transaksi (panggilan RPC) atas nama komponen klien dan layanan.

Kita harus mengetahui rincian-rincian tentang bagaimana :

 

  1. Menulis sebuah antarmuka AIDL (dan di mana itu dihasilkan).
  2. Mengimplementasikan antarmuka.
  3. Mengekspos antarmuka untuk klien.
  4. Terhubung ke layanan dan mulai berkomunikasi.

 

Dengan mengetahui ke empat poin diatas kita akan mempelajari secara tidak langsung tentang implementasi Synchronous RPC. Lalu bagaimana dengan Asynchronous RPCnya?

 

Asynchronous RPC

 

Secara dasar, panggilan RPC dari klien telah sinkron. Ini berarti jika panggilan dipanggil di thread UI, maka akan memblokir thread tersebut dan berdampak pada respon aplikasi. Untuk menghindari hal ini kita bisa menjalankan semua panggilan jarak jauh pada thread pekerja tapi kemudian hal ini tetap tidak memecahkan masalah kebocoran memori yang dapat terjadi karena faktanya bahwa thread pekerja klien dan semua referensi objeknya tetap hidup selayaknya thread pekerja yang diblokir.

 

Untuk mengatasi masalah ini, kita bisa menerapkan RPC asynchronous yang pada dasarnya memanggil metode dari klien dan kemudian kembali sesegera mungkin ketika proses server selesai melakukan pekerjaannya, dia akan memanggil kembali metode proses client. Ketika klien memulai transaksi dan segera kembali, pengikat memberikan transaksi untuk proses server dan koneksi dari klien ke server ditutup.

 

Antarmuka Asynchronous AIDL didefinisikan dengan kata kunci oneway baik di tingkat antarmuka atau metode individual:

 

oneway interface IAsyncInterface {

void methodOne();

void methodTwo();

}

 

/*

or

 

interface IAsyncInterface {

oneway void methodOne();

void methodTwo();

}

*/

 

Catatan : Metode Asynchronous tidak harus keluar sebagai argumen. Mereka juga harus kembali sebagai void.

 

Sekarang didasarkan pada antarmuka AIDL yang ada di atas, jika ingin layanan mengirim kembali hasilnya, maka harus didefinisikan antarmuka callback dalam metode panggilan seperti ini contohnya :

 

oneway interface IAsyncInterface {

void methodOne(IAsyncCallback callback);

void methodTwo(IAsyncCallback callback);

}

 

Kemudian Anda membuat file AIDL lain yang menyatakan antarmuka callback yang diimplementasikan dalam proses klien:

 

interface IAsyncCallback {

void handleResponse(String name);

}

 

Jadi berdasarkan dua antarmuka AIDL ini, inilah bagaimana caranya menerapkan yang pertama di Server :

 

IAsyncInterface.Stub mBinder = new IAsyncInterface.Stub() {

public void methodOne(IAsyncCallback callback) throws RemoteException {

callback.handleResponse(“methodOne”);

}

 

public void methodTwo(IAsyncCallback callback) throws RemoteException {

callback.handleResponse(“methodTwo”);

}

};

 

lalu AIDL kedua (antarmuka callback) diimplementasikan seperti ini di klien:

 

IAsyncCallback.Stub mCallback = new IAsyncCallback.Stub() {

public void handleResponse(String name) throws RemoteException {

Log.d(TAG, name);

}

}

 

 

Jadi memanggil methodOne () dan atau methodTwo () dari klien setelah mengikat akan mengirimkan transaksi dan kembali secara instan. Lalu kemudian pada saat transaksi tersebut diterima oleh layanan dan diproses di sana, mCallback.handleResponse () itu dipanggil dengan hasilnya.

 

In, out, inout.

 

Tidak seperti di Java ada tiga tag directional yang dapat ditentukan dalam prototipe metode ketika mendefinisikan antarmuka AIDL. Tag ini menunjukkan cara dimana data akan pergi/keluar. Contoh pertama :

 

package com.pycitup.pyc.aidl;

 

import com.example.app.Bar;

 

interface IBoundService {

void getAll(out

void save(inout Bar bar);

void delete(in Bar bar);

}

 

– In, berarti bahwa benda tersebut ditransfer dari klien ke layanan dan hanya digunakan untuk masukan. Jika perubahan yang dibuat ke bar objek dalam service maka tidak akan mencerminkan apa yang terjadi di klien.

– Out, menunjukkan bahwa objek tersebut tidak memiliki data yang relevan dan akan diisi oleh layanan lalu kembali sebagai respon.

– Inout, menunjukkan bahwa data akan disalin, yaitu jika ada perubahan yang dibuat untuk bar dalam service maka itu juga akan mencerminkan objek bar klien

 

Kapan menggunakan AIDL?

 

Pada umumnya tidak dianjurkan menggunakan AIDL untuk membuat layanan terikat sebagai thread pengaman karena telah dipastikan kemampuan multi threading harus dapat diatasi. Hal ini membuatnya sangat rumit untuk diterapkan, dan sudah harus berhati-hati dalam penggunaannya. Gunakan AIDL ketika klien dari aplikasi yang berbeda perlu berkomunikasi dengan layanan pada beberapa thread melalui IPC. Jika tidak, maka pertimbangkan untuk menggunakan layanan terikat sederhana di mana kita membuat Binder (dengan menerapkan kelas Binder) objek dan menyampaikan kepada klien yang dimana mereka dapat mengeksekusi metode di dalam layanan.

 

 

 

 

 

 

 

 

 

Sumber:
Gabungan Kelompok Kerja 21–28 IKI-20230 Semester Genap 2002/2003.2003.Sistem        Operasi: Bahan Kuliah IKI-20230 [Online]. http://ikc.dinus.ac.id/umum/ibam/ib       am-os- html/i24.html#AEN1158 . [12 Maret 2015]
Rishabh. 2015. Android Interprocess Communication (IPC) with AIDL[Online]. http://c            odetheory.in/android- interprocess-communication-ipc-with-aidl/. [12Maret 201         5]

 

REVIEW SISTEM OPERASI Solaris

  • Tentang Solaris

Sun Solaris adalah sebuah system operasi keluarga Unix yang di kembangkan oleh un microsystem inc.open solaris adalah sun solaris yang di open-source kan di bawah lisensi CDDL (common development and distributuin License). Solaris OS adalah operating system yang sangat terkenal di dunia karena kestabilannya. Solaris OS sangat dipercaya sebagai OS server terutama pada mesin-mesin critical yang menuntut high availability, stability, reliable, serta scalable.

Sun diambil dari singkatan Stanford University Network, sun pertama kali di konsepkan ole handy Bechtolsheim, seorang lulusan Standford University, Palo Alto, California dan ia merupakan original desain SUN workstation untuk Stanford University Network proyek komunikasi dan proyek ini di desain dengan menggunakan 3M Computer atau 1 Megabyte, 1 MIPS dan 1 Megapixel.

 

 

 

  • STRUKTUR SISTEM SUN SOLARIS

 

Struktur sistem dari sun solaris terdiri dari terdiri dari tiga bagian utama yaitu kernel, shell dan tool application. Untuk memahami arsitekstur sistem sun solaris maka kita harus memahami arsitekstur sistem UNIX operating systems. Konsep arsiteskstur UNIX terdiri dari beberapa konsep :

  • Kernel sebagai pusat dari operating sistem yang mengatur sistem dan proses aktivitas
  • Semua software non-kernel diorganisasikan secara terpisah dan kernel mengatur prosesnya
  • Unix sistems bersifat preemptively multitasking atau banyak proses yang dapat berjalan dalam satu waktu , atau dalam waktu yang sangat singkat dan berdekatan dalam waktu yang sama, dan proses yang dapat mengganggu disingkirkan oleh kernel. Ini terkenal dengan urutan manajemen.
  • File disimpan dalam disk dalam sebuah hierarki file sistem, dengan sebuah lokasi utama dalam seluruh sistem (root, atau “/”), dengan yang mana file-file dan direktori, subdirektori, sub-subdirektori, berada dibawah ini.
  • Dengan sedikit pengecualian, seluruh perlengkapan dan beberapa tipe komunikasi diantara proses-proses diatur dan tampak seperti file atau pseudo-files didalam hierarki file sistem.

 

 

 

  • FITUR SUN SOLARIS

 

Fitur yang ada di Solaris, diantaranya file sistem ZFS file sistem ini memiliki banyak keunggulan dari pada file sistem lainnya yang digunakan di Linux maupun Windows. ZFS ini memiliki kemampuan untuk mengetahui apakah suatu file corrupt. Di setiap file yang disimpan dengan ZFS dicek integritas nya dengan Checksum. Solaris juga memiliki dukungan pada format ODT (Open Document Format).

 

 

 

Referensi:

http:// www.geocities.com/achmad syafaat /dwn/sk distribusi linux abg lamp.pdf

sun solaris.org

Ilmu Komputer.com

www.sun.com

 

Review programmed I/O, Interrupt-Driven I/O, DIRECT MEMORY ACCESS (DMA)

Nama : Mokhamad. Afrizal. Hanifa

NIM   : 1304373

Jurusan: Ilmu Komputer

Kelas: C-2

 

Programmed I/O

Apa itu Programmed I/O???

Programmed I/O merupakan operasi I/O di mana CPU atau prosesor mengirimkan perintah ke modul I/O. CPU mengendalikan langsung operasi I/O seperti berikut ini :

  • CPU menunggu modul I/O menyelesaikan tugasnya, sebelum melalukan pekerjaan lainnya.
  • Selesai atau tidaknya modul I/O melakukan tugas ditandai dengan kondisi bit status pada modul tersebut.
  • Secara periodik, CPU harus melakukan pengecekan bit status pada modul I/O tersebut.

Karena ada perbedaan besar antara kecepatan CPU dengan kecepatan I/O device, pola interaksi seperti ini menyebabkan pemborosan waktu CPU, sangat tidak efisien karena CPU harus menunggu sesuai dengan lambatnya kerja I/O device.

Keuntungan cara ini antara lain :

Ada dua cara menetapkan alamat untuk I/O, yaitu Isolated atau Standard I/O dan Memory mapped I/O.

– Isolated (standard) I/O

»  Address untuk I/O terpisah dari address untuk memory.

»  Untuk mengakses I/O diperlukan instruksi khusus yang berbeda dengan instruksi untuk akses memory.

»          Diperlukan bit kendali khusus untuk read/write dan IO/M untuk membedakan operasi read/write terhadap I/O atau Memory

– Memory mapped I/O

» Address I/O terintegrasi dengan address memory.

» Sehingga untuk mengakses I/O dapat digunakan instruksi yang sama dengan instruksi untuk mengakses memory.

» Sebagai kompensasinya, ruang untuk memory berkurang karena sebagian dialokasikan untuk address I/O. Tetapi untuk saat ini, hal tersebut bukan masalah berat, karena kapasitas memory sedemikian besar.

 

Interrupt-Driven I/O.

Untuk megurangi waktu yang dibutuhkan untuk operasi I/O, CPU atau prosesor dapat menggunakan pendekatan Interrupt driven I/O.

–  CPU atau prosesor mengirimkan perintah ke modul I/O

–  CPU melanjutkan pekerjaannya sementara modul I/O juga menyelesaikan tugasnya.

–  Modul I/O memberi tanda ke CPU jika operasi I/O selesai dikerjakan atau ketika modul I/O memerlukan pelayanan dari CPU, ini disebut interrupt.

–  CPU menanggapi interrupt tersebut, kemudian mengeksekusi bagian program yang disebut Interrupt Service Routine (ISR), setelah itu CPU melanjutkan kembali pekerjaannya yang terhenti akibat interupsi tadi.

CPU mengenali dan merespon interrupt pada setiap akhir siklus eksekusi instruksi. Teknik interupsi ini digunakan untuk mendukung beragam variasi device. Dari mekanisme ini muncul pertanyaan:

  • bagaimana dengan jumlah modul I/O lebih dari satu dan tentu saja jumlah interrupt yang banyak.
  • Bagaimana CPU memastikan, device mana yang menyebabkan interupsi ?
  • Jika lebih dari 1 interupsi terjadi pada saat yang bersamaan, mana yang diproses lebih dulu.

Penentuan asal Interupsi :

  • Menyediakan lebih dari satu jalur sinyal interupsi. Hanya cocok untuk jumlah interupsi yang sedikit.
  • Menggunakan 1 jalur interrupt untuk lebih dari 1 device.

»   Harus melakukan polling singkat untuk menentukan device mana yang memerlukan service.

»   Device yang memberikan sinyal interupsi dapat meletakkan ID-nya pada bus, vectored interrupts.

»          Penggunaan bus secara bergantian dan meletakkan daftar alamat ISR pada ruang tertentu di memory (interrupt vector).

3

-Respon CPU terhadap Interrupt.

4

– Intel 8259 Interrupt Controller.

 

 

DIRECT MEMORY ACCESS (DMA)

Baik Programmed I/O maupun Interrupt Driven I/O, keduanya memerlukan keterlibatan CPU yang terus-menerus dalam operasi I/O. Untuk Interrupt Driven I/O, meskipun CPU tidak harus menunggu modul I/O menyelesaikan tugas, CPU harus tetap terlibat ketika ISR dieksekusi dan transfer data antara memory dengan I/O sedang berlangsung.

Direct Memory Access (DMA) mengambil alih tugas transfer data antara I/O dengan memory, kecuali untuk inisialisasi sebelum operasi I/O dilakukan.

Sejumlah besar data dapat ditransfer antara memory dengan I/O.

  • CPU melakukan inisialisasi modul DMA.

» Menetapkan jenis operasi, Read atau Write.

» I/O device yang dilibatkan

» Address awal dari blok memory yang akan dilibatkan.

» Jumlah data yang akan ditransfer.

  • Kemudian CPU melanjutkan tugasnya.

5

DMA beroperasi dengan cara ‘mencuri’ siklus bus dari CPU.

  • DMA menggunakan bus saat CPU tidak menggunakannya, sehingga tidak mempengaruhi unjuk kerja CPU.
  • Mengakses memory untuk mengambil data
  • Mengirimkannya ke I/O device.

6

Konfigurasi DMA.

 

Sumber:

http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&sqi=2&ved=0CDgQFjAE&url=http%3A%2F%2Fdosen.narotama.ac.id%2Fwp-content%2Fuploads%2F2012%2F12%2Fmodul-9-MODUL-INPUT-atau-OUPUT.doc&ei=1qrgVNexF9CzuATP3YCgCQ&usg=AFQjCNHfRCWLjWRdWksRhF-dWMR5yMJeWQ&bvm=bv.85970519,d.c2E&cad=rja