alamsyahnoer.files.wordpress.com … · web viewdalam ilmu komputer, komputasi terdistribusi...

Download alamsyahnoer.files.wordpress.com … · Web viewDalam ilmu komputer, komputasi terdistribusi mempelajari penggunaan terkoordinasi dari komputer yang secara fisik terpisah atau terdistribusi

If you can't read please download the document

Upload: dangdung

Post on 06-Feb-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

(KelasC)

Tugas individu

SISTEM OPERASI

Disusun oleh:

NUR ALAMSYAH NURDIN

102 904 056

Laboratorium Pendidikan Teknik Informatika dan Komputer

Jurusan Pendidikan Teknik Elektro

Universitas Negeri Makassar

2011

1. KOMPUTASI

Dalam ilmu komputer, komputasi terdistribusi mempelajari penggunaan terkoordinasi dari komputer yang secara fisik terpisah atau terdistribusi. Sistem terdistribusi membutuhkan perangkat lunak yang berbeda dengan sistem terpusat.

Tujuan dari komputasi terdistribusi adalah menyatukan kemampuan dari sumber daya (sumber komputasi atau sumber informasi) yang terpisah secara fisik, ke dalam suatu sistem gabungan yang terkoordinasi dengan kapasitas yang jauh melebihi dari kapasitas individual komponen-komponennya.

Tujuan lain yang ingin dicapai dalam komputasi terdistribusi adalah transparansi. Kenyataan bahwa sumber daya yang dipakai oleh pengguna sistem terdistribusi berada pada lokasi fisik yang terpisah, tidak perlu diketahui oleh pengguna tersebut. Transparansi ini memungkinkan pengguna sistem terdistribusi untuk melihat sumber daya yang terpisah tersebut seolah-olah sebagai satu sistem komputer tunggal, seperti yang biasa digunakannya.

Salah satu masalah yang dihadapi dalam usaha menyatukan sumber daya yang terpisah ini antara lain adalah skalabilitas, dapat atau tidaknya sistem tersebut dikembangkan lebih jauh untuk mencakup sumber daya komputasi yang lebih banyak.

Banyak arsitektur perangkat lunak dan keras yang bervariasi yang digunakan untuk komputasi terdistribusi. Pada tingkat yang lebih rendah, penghubungan beberapa CPU dengan menggunakan jaringan sangat dibutuhkan. Pada tingkat yang lebih tinggi menghubungkan proses yang berjalan dalam CPU tersebut dengan sistem komunikasi juga dibutuhkan.

Manfaat Sistem Operasi Terdistribusi

Sistem operasi terdistribusi memiliki manfaat dalam banyak sistem dan dunia komputasi yang luas. Manfaat-manfaat ini termasuk dalam sharing resource, waktu komputasi dan komunikasi.

Shared Resource

Walaupun perangkat sekarang sudah memiliki kemampuan yang cepat dalam proses-proses komputasi, atau misal dalam mengakses data, tetapi pengguna masih saja menginginkan sistem berjalan dengan lebih cepat. Apabila hardware terbatas, kecepatan yang diinginkan user dapat di atasi dengan menggabung perangkat yang ada dengan sistem DOS.

Manfaat Komputasi

Salah satu keunggulan sistem operasi terdistribusi ini adalah bahwa komputasi berjalan dalam keadaan paralel. Proses komputasi ini dipecah dalam banyak titik, yang mungkin berupa komputer pribadi, prosesor tersendiri, dan kemungkinan perangkat prosesor-prosesor yang lain. Sistem operasi terdistribusi ini bekerja baik dalam memecah komputasi ini dan baik pula dalam mengambil kembali hasil komputasi dari titik-titik cluster untuk ditampilkan hasilnya.

Reliabilitas

Fitur unik yang dimiliki oleh DOS ini adalah reliabilitas. Berdasarkan design dan implementasi dari design sistem ini, maka hilangnya satu node tidak akan berdampak terhadap integritas sistem. Hal ini berbeda dengan PC, apabila ada salah satu hardware yang mengalami kerusakan, maka sistem akan berjalan tidak seimbang, bahkan sistem bisa tidak dapat berjalan atau mati.

Komunikasi

Sistem operasi terdistribusi biasanya berjalan dalam jaringan dan biasanya melayani koneksi jaringan. Sistem ini biasanya digunakan user untuk proses networking. Uses dapat saling bertukar data, atau saling berkomunikasi antara titik baik secara LAN maupun WAN.

Kelemahan dan Kerugian

Jika tidak direncanakan dengan tepat, suatu distributed system dapat menurunkan reliabilitas total dari komputasi jika ketidak-tersediaan dari suatu node dapat menyebabkan gangguan bagi node-node lain. Troubleshooting dan diagnosing terhadap masalah dalam distributed system dapat menjadi lebih sulit, karena perlu analisis yang berkaitan dengan node jauh atau menginspeksi komunikasi antar node di dalam sistem.

Banyak tipe komputasi tidak cocok bagi lingkungan terdistribusi, biasanya yang berhubungan dengan jumlah komunikasi jaringan atau sinkronisasi yang dibutuhkan antar node. Jika bandwidth, latency, atau persyaratan komunikasi begitu signifikan, maka tidak ada keuntungan dari distributed computing dan kinerja dapat lebih burukk daripada lingkungan non-distributed.

Jenis Sistem Operasi Terdistribusi

Ada berbagai macam sistem operasi terdistribusi yang saat ini beredar dan banyak digunakan. Keanekaragaman sistem ini dikarenakan semakin banyaknya sistem yang bersifat opensource sehingga banyak yang membangun OS sendiri sesuai dengan kebutuhan masing-masing, yang merupakan pengembangan dari OS opensource yang sudah ada. Beberapa contoh dari sistem operasi terdistribusi ini diantaranya :

Amoeba (Vrije Universiteit). Amoeba adalah sistem berbasis mikro-kernel yang tangguh yang menjadikan banyak workstation personal menjadi satu sistem terdistribusi secara transparan. Sistem ini sudah banyak digunakan di kalangan akademik, industri, dan pemerintah selama sekitar 5 tahun.

Angel (City University of London). Angel didesain sebagai sistem operasi terdistribusi yang pararel, walaupun sekarang ditargetkan untuk PC dengan jaringan berkecepatan tinggi. Model komputasi ini memiliki manfaal ganda, yaitu memiliki biaya awal yang cukup murah dan juga biaya incremental yang rendah. Dengan memproses titik-titik di jaringan sebagai mesin single yang bersifat shared memory, menggunakan teknik distributed virtual shared memory (DVSM), sistem ini ditujukan baik bagi yang ingin meningkatkan performa dan menyediakan sistem yang portabel dan memiliki kegunaan yang tinggi pada setiap platform aplikasi.

Chorus (Sun Microsystems). CHORUS merupakan keluarga dari sistem operasi berbasis mikro-kernel untuk mengatasi kebutuhan komputasi terdistribusi tingkat tinggi di dalam bidang telekomunikasi, internetworking, sistem tambahan, realtime, sistem UNIX, supercomputing, dan kegunaan yang tinggi. Multiserver CHORUS/MiX merupakan implementasi dari UNIX yang memberi kebebasan untuk secara dinamis mengintegrasikan bagian-bagian dari fungsi standar di UNIX dan juga service dan aplikasi-aplikasi di dalamnya.

GLUnix (University of California, Berkeley). Sampai saat ini, workstation dengan modem tidak memberikan hasil yang baik untuk membuat eksekusi suatu sistem operasi terdistribusi dalam lingkungan yang shared dengan aplikasi yang berurutan. Hasil dari penelitian ini adalah untuk menempatkan resource untuk performa yang lebih baik baik untuk aplikasi pararel maupun yang seri/berurutan.

2. BOUNDED BUFFER

Buffer adalah area memori yang menyimpan data ketika mereka sedang dipindahkan antara dua device atau antara device dan aplikasi. Buffering dilakukan untuk tiga buah alasan. Alasan pertama adalah untuk men-cope dengan kesalahan yang terjadi karena perbedaan kecepatan antara produsen dengan konsumen dari sebuah stream data. Sebagai contoh, sebuah file sedang diterima melalui modem dan ditujukan ke media penyimpanan di hard disk. Kecepatan modem tersebut kira-kira hanyalah 1/1000 daripada hard disk. Jadi buffer dibuat di dalam memori utama untuk mengumpulkan jumlah byte yang diterima dari modem. Ketika keseluruhan data di buffer sudah sampai, buffer tersebut dapat ditulis ke disk dengan operasi tunggal. Karena penulisan disk tidak terjadi dengan instan dan modem masih memerlukan tempat untuk menyimpan data yang berdatangan, maka dipakai 2 buah buffer. Setelah modem memenuhi buffer pertama, akan terjadi request untuk menulis di disk. Modem kemudian mulai memenuhi buffer kedua sementara buffer pertama dipakai untuk penulisan ke disk. Pada saat modem sudah memenuhi buffer kedua, penulisan ke disk dari buffer pertama seharusnya sudah selesai, jadi modem akan berganti kembali memenuhi buffer pertama dan buffer kedua dipakai untuk menulis. Metode double buffering ini membuat pasangan ganda antara produsen dan konsumen sekaligus mengurangi kebutuhan waktu di antara mereka.

Alasan kedua dari buffering adalah untuk menyesuaikan device-device yang mempunyai perbedaan dalam ukuran transfer data. Hal ini sangat umum terjadi pada jaringan komputer, dimana buffer dipakai secara luas untuk fragmentasi dan pengaturan kembali pesan-pesan yang diterima. Pada bagian pengirim, sebuah pesan yang besar akan dipecah ke paket-paket kecil. Paket-paket tersebut dikirim melalui jaringan, dan penerima akan meletakkan mereka di dalam buffer untuk disusun kembali.

Alasan ketiga untuk buffering adalah untuk mendukung copy semantics untuk aplikasi I/O. Sebuah contoh akan menjelaskan apa arti dari copy semantics. Jika ada sebuah aplikasi yang mempunyai buffer data yang ingin dituliskan ke disk. Aplikasi tersebut akan memanggil sistem penulisan, menyediakan pointer ke buffer, dan sebuah integer untuk menunjukkan ukuran bytes yang ingin ditulis. Setelah pemanggilan tersebut, apakah yang akan terjadi jika aplikasi tersebut merubah isi dari buffer, dengan copy semantics, keutuhan data yang ingin ditulis sama dengan data waktu aplikasi ini memanggil sistem untuk menulis, tidak tergantung dengan perubahan yang terjadi pada buffer. Sebuah cara sederhana untuk sistem operasi untuk menjamin copy semantics adalah membiarkan sistem penulisan untuk mengkopi data aplikasi ke dalam buffer kernel sebelum mengembalikan kontrol kepada aplikasi. Jadi penulisan ke disk dilakukan pada buffer kernel, sehingga perubahan yang terjadi pada buffer aplikasi tidak akan membawa dampak apa-apa. Mengcopy data antara buffer kernel data aplikasi merupakan sesuatu yang umum pada sistem operasi, kecuali overhead yang terjadi karena operasi inikarena clean semantics. Kita dapat memperoleh efek yang sama yang lebih efisien dengan memanfaatkan virtual-memori mapping dan proteksi copy-on-wire dengan pintar.

Masalah Bounded-Buffer

Pengertian secara umum mengenai bounded-buffer adalah sebuah tempat penampungan data, yang ukurannya terbatas. Bounded-buffer digambarkan sebagai array yang melingkar.

Proses yang kooperatif bisa berbagi data melalui penukaran pesan. Pesan-pesan yang dikirim antar proses akan disimpan dalam sebuah antrian sementara, yaitu buffer. Jika kapasitas buffer tersebut terbatas, maka dia disebut bounded-buffer. Untuk mencegah inkonsistensi data yang terjadi akibat akses data oleh proses kooperatif yang berjalan secara konkuren, maka diperlukan sinkronisasi antar proses-proses tersebut.

Permasalahan bounded-buffer ini diilustrasikan dalam proses produsen-konsumen. Masalah-masalah yang timbul adalah:

buffer yang merupakan critical section, sehingga hanya boleh diakses satu proses pada satu waktu;

keadaan dimana produsen ingin menaruh data di antrian, namun antrian penuh

keadaan dimana konsumen ingin mengambil data dari antrian namun antrian kosong.

Untuk menyelesaikan masalah, digunakanlah perangkat sinkronisasi semafor. Semafor yang digunakan adalah

mutex. yang menjaga buffer hanya diakses satu proses pada satu waktu;

tempat_kosong. jumlah tempat kosong.

tempat_terisi. jumlah tempat terisi

Dengan demikian produsen yang ingin menaruh data atau konsumen yang ingin mengakses data harus memeriksa apakah proses lain sedang memakai buffer (menggunakan mutex) dan memeriksa apakah buffer penuh atau kosong (menggunakan tempat_kosong dan tempat_terisi).

Ilustrasi dari bounded-buffer

Penunjuk masuk menunjuk pada posisi kosong selanjutnya pada array. Data yang baru dihasilkan akan dimasukkan ke dalam array yang ditunjuk oleh masuk. Sedangkan penunjuk keluar menunjuk pada posisi penuh pertama pada array. Jika ada data yang akan dikeluarkan dari buffer, maka data yang akan dikeluarkan itu merupakan isi dari array yang ditunjuk oleh keluar.

3. UNBOUNDED BUFFER

Proses unbounded buffer, tidak menggunakan batasan ukuran di buffer:

#ifndef LINK_GUARD

#define LINK_GUARD

class Link

{

public:

Link *_next;

void *_data;

Link(void * data, Link *next):_next(next),_data(data){}

};

#endif

********************************************************************************************

#ifndef BUFFER_GUARD

#define BUFFER_GUARD

#include "ace/Synch.h"

#include "Link.h"

class Buffer{

private:

Link *_head;

Link *_tail;

ACE_Thread_Mutex _lock;

ACE_Condition cond;

public:

Buffer();

~Buffer();

void insert(void*);

void* remove();

};

#endif

***************************************************************************************************

#include "Buffer.h"

Buffer::Buffer():cond(_lock)

{

_head= NULL;

_tail=NULL;

}

void Buffer::insert(void* d)

{

_lock.acquire();

if (_tail == NULL) // list is empty

{

_tail = new Link(d,NULL );

_head = _tail;

}

else

{

Link * newLink = new Link(d,NULL);

_tail->_next = newLink;

_tail = newLink;

}

cond.signal();

_lock.release();

}

void* Buffer::remove()

{

_lock.acquire();

void * ret;

while (NULL == _head)

{

cond.wait();

}

if (_head == _tail) // we have one item.

{

ret = _head->_data;

_head = NULL;

_tail = NULL;

}

else

{

ret = _head->_data;

_head = _head->_next;

}

_lock.release();

return ret;

}

Buffer::~Buffer()

{

}

***************************************************************************************************

#ifndef PRODUCER_GUARD

#define PRODUCER_GUARD

#include "Buffer.h"

#include "ace/Task.h"

class Producer : public ACE_Task

{

private:

Buffer *_buf;

public:

Producer(Buffer *buf);

int svc();

};

#endif

***************************************************************************************************

#include"Producer.h"

#include "ace/OS.h"

#define DELAY 3000000

Producer::Producer(Buffer *buf)

{

_buf = buf;

}

int Producer::svc()

{

char *msg;

for (int i = 0 ; i