Rabu, 31 Oktober 2018

Tugas 3 Individu



DATA TRANSFER WITH A DIRECT MEMORY ACCESS (DMA)


PENGERTIAN DMA (Direct Memory Access)

Direct Memory Access adalah suatu alat pengendali khusus disediakan untuk memungkinkan transfer blok data langsung antar perangkat eksternal dan memori utama, tanpa intervensi terus menerus dari prosesor. Transfer DMA dilakukan oleh sirkuit kontrol yang merupakan bagian dari antar muka perangkat I/O. Istilah ini yang sering banyak kita ketahui adalah sebagai kontroler DMA. Kontroler DMA melakukan fungsi yang biasanya dilakukan oleh prosesor pada saat mengakses memori utama (yang sering disebut RAM). Untuk setiap word yang ditransfer, kontroler ini menyediakan alamat memori dan semua sinyal bus yang mengontrol tranfer data. Karena harus mentranfer sejumlah blok data, maka kontroler DMA harus menaikkan alamat memori untuk wordyang berurutan dan mencatatjumlah transfer.

Sekalipun kontroler DMA dapat mentransfer data tanpa intervensi dari prosesor, operasinya tetap berada dibawah kontrol program yang dieksekusi oleh prosesor. Untuk menginisiasi transfer suatu blok word, prosesor mengirim alamat awal jumlah word dalam blok, dan arah transfer. Pada saat seluruh blok telah ditransfer, kontroler tersebut memberitahu prosesor dengan memunculkan sinyal interupt. Pada saat transfer DMA terjadi, program yang meminta transfer tersebut berhenti bekerja dan prosesor dapat digunakan untuk mengeksekusi program lain. Setelah transfer DMA selesai, prosesor dapat kembali ke program yang meminta transfer tersebut.

Operasi I/O selalu dilakukan oleh OS sebagai respon terhadap request dari program aplikasi. OS juga bertanggung jawab untuk menunda eksekusi satu program dan memulai eksekusi program lain. Sehingga, untuk operasi I/O yang melibatkan DMA, OS menetapkan program yang meminta transfer tsb pada keadaan blocked, menginisiasi operasi DMA, dan memulai eksekusi program lain. Pada saat transfer selesai, kontroler DMA memberitahu prosesor dengan mengirim interupt request. Sebagai responnya, OS menetapkan program yang ditunda ke keadaan runnable sehingga dapat dipilih oleh scheduler untuk melanjutkan eksekusi.

DMA ialah sebuah prosesor khusus (spesial purpose processor) yang berguna untuk menghindari pembebanan CPU utama oleh program  I/O (PIO). Untuk memulai sebuah transfer DMA, host akan menuliskan sebuah DMA command block yang berisi pointer yang menunjukkan kesumbet transfer, ke memori. CPU kemudian menuliskan alamat command block inike pengendali DMA, sehingga pengendalian DMA dapat kemudian mengoperasikan bus memori secara langsung dengan menempatkan alamat-alamat pada bus tersebut untuk melakukan transfer tanpa bantuan CPU.

DMA (Direct Memory Access) adalah suatu hardware spesial (chip) yang dapat mengontrol aliran bit data antara memory (RAM) dan beberapa controller dari I/O devices tanpa memerlukan interferensi dari CPU secara terus menerus. (Mengakses dan mengontrol memori sistem tanpa interferensi CPU secara terus menerus).

TRANSFER DMA (Direct Memory Access)
Ada 3 langkah dalam transfer DMA
  1. Prosesor menyiapkan DMA prosesor Transfer dengan menyediakan data-data dari perangkat, operasi yang akan ditampilkan, alamat memori yang akan menjadi sumber, tujuan data, dan banyaknya byte yang akan ditransfer.
  2. Pengendali DMA memulai operasi dengan menyiapkan bus,menyediakan alamat, menulis, dan membaca data sampai seluruh blok sudah ditransfer.
  3. Pengendali DMA menginterupsi prosesor, dimana selanjutnya akan ditentukan tindakan berikutnya.

DATA TRANSFER WITH DMA CONTROLLER :


Penjelasan :
Selama transfer byte masukan blok, urutan berikut terjadi saat byte data dikirim dari antarmuka ke memori:
  1. Antarmuka mengirimkan DMA controller permintaan untuk layanan DMA.
  2. Permintaan bus dibuat ke pin HOLD (aktif Tinggi) pada mikroprosesor tebhe 8086 dan pengendali mendapatkan kontrol bus.
  3. Isi bus dikembalikan ke kontroler DMA dari pin HOLD Acknowledge (HLDA) (aktve High) pada mikroprosesor 8086.
  4.  Pengontrol DMA menempatkan isi register alamat ke alamat bus.
  5. Pengontrol mengirimkan antarmuka pengakuan DMA, yang memberi tahu antarmuka untuk menempatkan bus data (untuk keluarannya memberi sinyal antarmuka untuk mengunci data berikutnya yang ditempatkan di bus)
  6. Data dalam bentuk byte ditransfer ke lokasi memori yang ditunjukkan oleh  alamat bus.
  7. Interface mengaitkan data / memasang datanya. 
  8.  Permintaan bus dijatuhkan, pin HOLD menjadi rendah, dan pengendali melepaskan bus.
  9. Isi bus dari mikroprosesor 8086 menurun dan pin HLDA menjadi turun..Register alamat bertambah 1,Hitungan byte dikurangi 1.Jika jumlah byte tidak nol, kembali ke langkah 1, jika tidak hentikan.
OPSI PENGENDALIAN DMA UNTUK TRANSFER DATA
·         Siklus mencuri
·         Transfer Burst
·         DMA Tersembunyi

JENIS-JENIS DMA (Direct Memory Access)
Ada 2 jenis DMA, yaitu:
  1. Third−party DMA, untuk melakukan operasi transfer data menggunakan DMA controller yang ada pada motherboard.
  2. First−party DMA (busmastering DMA). Untuk melakukan operasi transfer data dikerjakan oleh bagian logic di interface card.

STRUKTUR DMA (Direct Memory Access)
  • Transfer data dari buffer ke memori atau sebaliknya dilakukan perkarakter
  • Dimana setiap kali transfer selalu ada interrup dari CPU sebelum dan sesudah transfer.   
  • Jika waktu untuk mentranfer satu karakter sebesar 2 us dan sekali interrupt butuh 1ms , maka untuk mentransfer data dari memori ke buffer butuh 4 us per karakter.
  • Dengan menggunakan DMA transfer data dapat dilakukan secara langsung oleh device controller per-blok tanpa ada campur tangan dari CPU.
  • CPU hanya memberikan interrupt sebelum dan sesudah transfer setiap blok.

FUNGSI DMA (Direct Memory Access)
Fungsi dari DMA sendiri adalah agar CPU dapat melakukan pekerjaan atau instruksi yang berbeda ketika melakukan operasi baca tulis dari perangkat peripheral. Tanpa adanya  DMA CPU akan terus sibuk melakukan operasi baca tulis (transfer data) dan tidak dapat melakukan atau menyelesaikan instruksi yang lain. Dengan adanya DMA, CPU cukup mempersiapkan DMA chip dengan cara memberikan beberapa informasi seperti jumlah data bit yang ditransfer, alamat dari device dan memory yang diperlukan dan arah dari aliran data tersebut, setelah itu DMA chip sendiri yang akan menyelesaikannya. DMA chip akan melakukan interupt, ketika pekerjaannya sudah selesai. Selama DMA chip melakukan tugasnya hingga munculnya interupt, CPU dapat menyelesaikan instruksi yang lainnya.

DMA chip atau DMA controller sangat beragam tergantung dari teknologi yang ditanamkan padanya, untuk menjelaskan cara kerjanya akan digunakan jenis yang paling sederhana, yaitu DMA chip yang menangani sebuah transfer setiap waktunya. Berikut ini cara kerjanya:

Pertama CPU akan memprogram atau mengeset DMA chip dengan mengatur registerinya, agar DMA chip mengetahui apa saja yang perlu ditransfer dan kemana informasi tersebut perlu ditransfer. Selain itu CPU juga akan memberikan command atau perintah pada disk controller untuk membaca data dari disk dan menuliskannya pada internal buffer, serta melakukan checksum untuk memastikan tidak adanya error yang terjadi ketika membaca dan menuliskan data dari disk menuju internal buffer. Bila tidak ada terjadi error maka DMA chip dapat  memulai untuk melakukan transfer. DMA chip akan melakukan request kepada disk controller untuk melakukan transfer data menuju main memory (RAM). Selama melakukan transfer menuju memory akan terjadi bus cycle, dan setiap kali selesai menuliskan data pada memory, disk controller akan mengirim suatu sinyal (acknowledgement signal) pada DMA chip.

Kemudian DMA chip akan menaikkan alamat memory untuk digunakan dan melakukan pengurangan pada counter bit data. Proses dari DMA chip melakukan request sampai disk controller mengirimkan sinyal kembali pada DMA chip akan terus berlangsung hingga counter mencapai 0. Ketika counter mencapai 0, maka DMA chip akan melakukan interupt dan memberitahukan pada CPU bahwa proses transfer sudah selesai. Semua transfer data dan sinyal ini dikirimkan melalui suatu bus yang menghubungkan CPU, DMA chip (controller), Disk controller dan main memory.
Berikut ini adalah gambar untuk mempermudah penjelasan:


METODE KERJA DMA (Direct Memory Access)
Ada beberapa metode DMA dalam mentransfer data:
  1. Metode yang sangat baku dan sederhana disebut HALT, atau Burst Mode DMA, karena pengendali DMA memegang kontrol dari sistem bus dan mentransfer semua blok data ke atau dari memori pada single burst. Selagi transfer masih dalam proses, sistem mikro prosessor diset idle. Tidak melakukan instruksi operasi untuk menjaga internal register. Tipe operasi DMA seperti ini ada pada kebanyakan komputer. 
  2. Metode kedua mengikutsertakan pengendali DMA untuk memegang kontrol dari sistem bus untuk jangka waktu yang lebih pendek pada periode dimana mikro prosessor 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 pengendali DMA harus mempunyai kepintaran untuk merasakan waktu pada saat sistem bus terbuka.
Pada dasarnya cara kerja DMA terkait erat dengan: DMA controller, Processor, Memory, I/O device. Adapun juga cara kerjanya sebagai berikut:
  • I/O device terhubung dengan DMA controller memberikan instruksi yang harus diproses.
  • DMA controller mengirimkan pemberitahuan ke processor akan ada proses yang dihandle oleh DMA controller.
  • Processor menginformasikan ke memory bahwa DMA akan mengakses memori untuk pemrosesan suatu instruksi.
  • DMA controller terhubung dengan memori dan akses alamat, data yang diperlukan.
  • DMA controller mengirimkan hasil proses kembali ke I/O device.
  • Jika proses selesai, DMA controller kembali melapor ke processor bahwa proses telah beres dilakukan.
Menurut referensi lain cara kerja DMA sebagai berikut:
CPU mengirimkan data data ini ke DMA controller. Perintah read/write Alamat device yang akan diakses alamat awal blok memory yang akan dibaca atau ditulis jumlah blok data yang akan ditransfer.
  • CPU mengeksekusi program lain
  • DMA controller mengirim seluruh blok data (persatu word) langsung ke memori tanpa melihat CPU.
  • DMA controller mengirim interrupt ke CPU jika telah selesai.

Dapat disimpulkan prinsip sederhananya: DMA controller mengambil alih kerja prosessor dalam memproses instruksi yang masuk melalui I/O device. Processor cukup mendapatkan laporan saja bahwa akan ada tugas yang dihandle oleh DMA controller , dan setelah beres tinggal menunggu laporan.

IMPLEMENTASI DMA (Direct Memory Access)
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 memori mapped device tanpa intervensi CPU.

KONFIGURASI MODUL DMA (Direct Memory Access)
a)   Konfigurasi 1 (single bus)
·      Hanya menggunakan single bus
·      DMA dan modul I/O terpisah
·      Setiap transfer harus mengakses bus dua kali: modul I/O ke DMA kemudian DMA ke memori
·      Lebih lambat CPU (tertunda 2 kali)

b)   Konfigurasi 2 ( single bus, integrated DMA-I/O)
·      Hanya menggunakan single bus
·      Modul I/O terintegrasi
·      Satu DMA controller dapat menangani > 1 modul I/O
·      Setiap transfer hanya perlu mengakses bus satu kali saja DMA ke memori
·      CPU hanya tertunda satu kali (lebih baik dari konfigurasi 1)

c)      Konfigurasi 3 (IO Bus)
·      Digunakan bus IO secara terpisah
·      Lebih hemat hardware secara modul I/O cukup dilayani dengan sebuah DMA
·      Setiap transfer hanya perlu mengakses bus satu kali saja DMA ke memori
·      CPU hanya tertunda (lebih baik dari konfigurasi 2).

KEUNTUNGAN MENGGUNAKAN DMA
Adapun beberapa kelebihan dari Direct Memory Access (DMA) adalah sebagai berikut :
  • Dapat menirukan sebagian fungsi processor.
  • Dapat mengambil alih fungsi processor yang berhubungan dengan transfer data.
  • CPU dapat melakukan manajemen operasi baca tulis (transfer data) dengan baik dan juga dapat menyelesaikan instruksi lain.
  • Mendapat informasi tentang jumlah data bit yang ditransfer , alamat dari device dan memory yang diperlukan dan arah dari aliran data. 

KEKURANGAN MENGGUNAKAN DMA
Jika ada kelebihan kemungkinan ada juga kekurangan. Adapun beberapa kekurangan dari Direct Memory Access (DMA) adalah sebagai berikut : 
  • Transfer rate data terbatas.
  • Masih memerlukan keterlibatan CPU, sehingga CPU menjadi lebih sibuk.
Sumber :



Rabu, 24 Oktober 2018

Tugas 2 Individu


Penjelasan Dan Contoh dari Batch System, Critical Section, Process Control Block, Distributed Processing, Hanheld dan Thread

BATCH SYSTEM



PENGERTIAN BATCH SYSTEM
Batch system adalah dimana job-job yang mirip dikumpulkan dan dijalankan secara kelompok kemudian setelah kelompok yang dijalankan tadi selesai maka secara otomatis kelompok lain dijalankan. jadi dengan kata lain adalah teknologi proses komputer dari generasi ke-2. yang jika suatu tugas sedang dikerjakan pada 1 rangkaian, akan di eksekusi secara berurutan. Pada komputer generasi ke-2 sistem komputer nya maasih blum dilengkapi oleh sebuah sistem operasi. But, dalan beberapa fungsi sistem operasi, seperti os yang tengah berkembang pada jaman sekarang ini. Contohnya adlah FMS ( Fortarn Monitoring System ) dan IBSYS.


Jadi bisa disimpulkan, bahwa komputer generasi ke-2 ini merupakan generasi pertama Sistem Operasi.

CONTOH BATCH SYSTEM
Contoh sebuah Batch System adalah sebuah e-mail dan transaksi batch processing. Dalam suatu sistem batch processing, transaksi secara individual dientri melalui peralatan terminal, dilakukan validasi tertentu, dan ditambahkan ke transaction file yang berisi transaksi lain, dan kemudian dientri ke dalam sistem secara periodik. Di waktu kemudian, selama siklus pengolahan berikutnya, transaction file dapat divalidasi lebih lanjut dan kemudian digunakan untuk meng-up date master file yang berkaitan.

ADA 2 CARA DALAM BATCH SYSTEM, yaitu :
1.   Resident Monitor
a.    Operator bertugas mengatur urutan job
b.   Job-job yg sama cukup dicetak sekali saja, cara inilah yg disebut “Batch system”
Teknik pengurutan job secara manual ini akan menyebabkan tingginya waktu menganggur CPU. Muncul teknik pengurutan job otomatis yg mampu mentransfer secara otomatis dari suatu proses ke proses lainnya.Program kecil dan bersifat residen dimemori serta berisi urutan2 job yg akan berpindah secara otomatis, inilah “Resident Monitor”

2.   Overlap Operasi antara I/O dg CPU
a.Off line Processing, data yg dibaca dari card reader disimpan dulu dalam tape driver sebelum  dibawa ke CPU, demikian pula informasi yg mau dicetak, disimpan dulu di tape.
b.Spooling  adalah suatu program dapat dikerjakan walaupun I/O masih mengerjakan  proses lainnya dan disk secara bersamaan menggunakan data untuk banyak proses. Pengertian multi programming adalah kegiatan menjalankan beberapa program pada memori pada satu waktu.

MULTIPROGRAMMING SYSTEM
Multi programming system adalah dimana job-job disimpan di main memory di waktu yang sama dan CPU dipergunakan bergantian. Hal ini membutuhkan beberapa kemampuan tambahan yaitu : Penyediaan I/O routine oleh sistem, Pengaturan memori untuk mengalokasikan memory pada beberapa Job, penjadwalan CPU untuk memilih job mana yang akan dijalankan, serta pengalokasian hardware lain.

Multiprogramming berarti meletakkan lebih dari sebuah program di main memory. Cara ini dilakukan dengan membagi main memory menjadi beberapa partisi. Tiap partisi akan menyimpan sebuah program. Foreground partitions akan berisi program dengan prioritas yang lebih tinggi sedang background partitions akan berisi program dengan prioritas yang lebih rendah.

Meskipun setiap proses merupakan Entitiy yang berdiri sendiri, dan masing-masing memiliki program Counter dan status internal, beberapa proses sering kali harus berinteraksi dengan proses yang lain. Keluaran dari suatu proses dapat menjadi masukan bagi proses yang lain. Jika proses yang sedang menunggu masukan tidak menemukan masukan yang dikehendaki, proses tersebut diblok sampai masukan tersedia.

Pada saat proses diblok, secara logika proses tersebut tidak dapat dilanjutkan karena menuggu masukan yang belum tersedia. Dapat terjadi bahwa proses yang Ready dan dapat di-run terpaksa harus dihentikan karena sistem operasi arus mengalokasikan CPU ke proses lain untuk sementara waktu.

Proses dapat berada pada status berikut:
Submitt: Proses baru saja dikirimkan oleh user dan masih menunggu untuk dilayani.
Running: Proses benar-benar menggunakan CPU pada saat itu.
Ready: Proses berhenti sementara untuk memberikan kesempatan pada proses lain untuk menggunakan CPU.
Blocked: Proses tidak dapat di-Run sampai terjadi kejadian eksternal yang sesuai (misalkan selesainya operasi input/output atau telah tersedianya data input).
Finished: Proses telah dilaksanakan secara sempurna.

Di antara status Running, Ready dan Blocked, hanya terdapat 4 kemungkinan perubahan status, yaitu:
1.Running ke Blocked: Terjadi jika proses diblok, karena menunggu masukan atau menunggu selesainya aktivitas I/O.
2.Running ke Ready: Terjadi jika Process Scheduler menghentikan proses yang sedang running untuk memberikan kesempatan pada proses lain menggunakan CPU.
3.Blocked ke Ready: Terjadi jika ada kejadian eksternal yang menyebabkan proses dapat dijalankan kembali. Misalnya datangnya input atau selesainya suatu aktifitas I/O.
4.Ready ke Running: Terjadi jika proses siap untuk menggunakan CPU dan masukan yang sesuai untuk proses tersebut telah tiba.

MULTITASKING
Multitasking adalah adalah pemrosesan beberapa tugas pada waktu yang bersamaan.
Cara Kerja Multitasking, Dewasa ini penggunaan time-sharing jarang digunakan, dan digantikan dengan multitasking.

Contoh sistem operasi jenis ini antara lain adalah linux. Linux adalah sistem operasi yang multitasking dan multiuser seperti kebanyakan SO yang ada pada saat ini. Multitasking pada linux artinya linux bisa atau mampu menjalankan beberapa proses dalam waktu yang bersamaan.

Seperti contoh pada saat kita menjalankan aplikasi web browser kita juga bisa menjalankan aplikasi kompresi file. Sedangkan multiuser pada linux adalah user bisa login ke dalam sistem secara bersamaan, dengan artinya user bisa menggunakan satu sistem secara bersamaan dalam satu waktu. Multitasking dan multiuser pada sistem operasi merupakan satu keharusan dalam masa ini.

Keuntungan sistem ini adalah :
1. Suatu perintah dapat dilaksanakan secara tuntas sampai berakhir dengan prioritas tertinggi.
2. Mampu memproses lebih dari satu perintah dalam waktu yang bersamaan.hal ini dapat terjadi karena kemampuan membagi sumber daya yang tersedia.

Jika suatu perintah datang membutuhkan sumber daya media simpan menyelesaikan perintah/pekerjaan yang telah ditentukan, apabila datang perintah lain yang membutuhkan sumber daya memori misalnnya, perintah tersebut dapat langsung dikerjakan tanpa menunggu perintah sebelumnya selesai dierjakan.

Kelemahan dari sistem ini adalah jika terdapat banyak perintah, maka akan terjadi antian perintah yang cukup panjang. Pengguna harus menunggu perintah selesai dilaksanakan untuk memasukkan perintah selanjutnya.

Manfaat metode ini akan terasa ketika banyak terdapat perintah yang menggunakan sumber daya yang berbeda, sehingga rangkaian perintah dapat diselesaikan dengan lebih cepat.

TIME SHARING SYSTEM
Time-sharing adalah metode dimana banyak pengguna dapat melakukan processing dalam satu komputer. Christopher Strachy pada tahun 1959 telah memberikan ide mengenai pembagian waktu yang dilakukan oleh CPU. Baru pada tahun 1961, pertama kali sistem yang benar-benar berbentuk time sharing system dilakukan di MIT (Massachusetts Institute of Technology) dan diberi nama CTSS (Compatible Time Sharing System) yang bisa melayani sebanyak 8 pemakai dengan menggunakan omputer IBM 7090. Pada TSS tiap-tiap User dilayani oleh komputer dengan bergiliran dalam waktu yang sangat cepat. Sehingga tiap pemakai komputer tidak merasa bahwa komputer melayani beberapa pemakai sekaligus secara bergiliran.

Contoh penggunaan Time Sharing System
Salah satu penggunaan time sharing system ini dapat dilihat dalam pemakaian suatu teller terminal pada suatu bank. Bilamana seorang nasabah datang ke bank tersebut untuk menyimpan uang atau mengambil uang, maka buku tabungannya ditempatkan pada terminal. Dan oleh operator pada terminal tersebut dicatat melalui papan ketik (keyboard), kemudian data tersebut dikirim secara langsung ke pusat komputer, memprosesnya, menghitung jumlah uang seperti yang dikehendaki, dan mencetaknya pada buku tabungan tersebut untuk transaksi yang baru saja dilakukan. 

REAL TIME SYSTEM
Real time system adalah suatu sistem yang mengharuskan suatu komputasi selesai dalam jangka waktu tertentu. Jika komputasi ternyata belum selesai maka sistem dianggap gagal dalam melakukan tugasnya.

Arsitektur Real-time System
Arsitektur sistem real-time merupakan suatu blog diagram yang mengambarkan interkoneksi antar sistem yang ada pada real-time. Secara garis besar dibedakan menjadi dua, yaitu bagian statistik dan algoritma. Pada bagian algoritma terdapat sejumlan n algoritma. Semakin kompleks suatu program, maka akan semakin banyak punya algoritma yang bisa digunakan untuk menyelesaikan program tersebut.

Pada bagian masukan terdapat saklar selector yang digunakan untuk memilih input mana yang akan dieksekusi menggunakan algoritma 1 – n, tergantung dari keinginan kita atau tingkat komplektifitas program. Agar bisa diperoleh konsep real-time, maka ditambahkan suatu kontrol /pencatat kapan program mulai start dan kapan program tersebut harus berhenti dengan menghasilkan nilai dan waktu sesuai dengan kesepakatan batas waktu (deadline).

Suatu hasil dikatakan tepat waktu :
· Yang meminta hasil memberitahu, hasilnya harus diserahkan sesuai dengan waktu yang telah disepakati/ditentukan. Misalnya seorang dosen memberikian ulangan kepada sejumlah mahasiswa dan memberikan waktu pengerjaan selama 1 jam. Apabila waktu pengerjaan telah mencapai 1 jam, maka seluruh pekerjaan yang diberikan tadi harus segera dukumpulkan.
·   Bisa memberikan jawaban setiap kali diminta.
·  Harus bisa memberikan jawaban yang dapat memuaskan penanya dan jawabannya harus akurat.
·  Selalu siap sedia kapanpun peminta memerintahkan dan kapan harus diberikan oleh sistem serta dapat menjawab pada setiap saat 

Sumber :


            CRITICAL SECTION

Critical section adalah dengan mendesain sebuah protokol di mana proses-proses dapat menggunakannya secara bersama-sama. Setiap proses harus 'meminta izin' untuk memasuki critical section-nya. Bagian dari kode yang mengimplementasikan izin ini disebut entry section. Akhir dari critical section itu disebut exit section. Bagian kode selanjutnya disebut remainder section.

 
Solusi dari masalah Critical Section harus memenuhi tiga syarat berikut:
1.      Mutual Exclusion.
Mutual Exclusion merupakan sebuah jalan yang menjamin jika sebuah proses sedang menggunakan variabel atau berkas yang digunakan bersama-sama, proses lain akan dikeluarkan dari pekerjaan yang sama. Misal proses Pi sedang menjalankan critical section (dari proses Pi), maka tidak ada proses-proses lain yang dapat menjalankan critical section dari proses-proses tersebut. Dengan kata lain, tidak ada dua proses yang berada di critical section pada saat yang bersamaan.

Contoh  Struktur umum dari proses Pi adalah:
      do {
    entry section
    critical section
    exit section
    remainder section
} while (1);
Setiap proses harus meminta izin untuk memasuki critical section-nya. Bagian dari kode yang mengimplementasikan izin ini disebut entry section. Akhir dari critical section itu disebut exit section. Bagian kode selanjutnya disebut remainder section. Dari kode di atas, dapat kita lihat bahwa untuk bisa memasuki critical section sebuah proses harus melalui entry section.


Gambar. ilustrasi proses Pi

2.      Terjadi Kemajuan (Progress).
Jika tidak ada proses yang sedang menjalankan critical section-nya dan jika terdapat lebih dari satu proses lain yang ingin masuk ke critical section, maka hanya proses-proses yang tidak sedang menjalankan remainder section-nya yang dapat berpartisipasi dalam memutuskan siapa yang berikutnya yang akan masuk ke critical section, dan pemilihan siapa yang berhak masuk ke critical section ini tidak dapat ditunda secara tak terbatas (sehingga tidak terjadi deadlock).

3.      Ada Batas Waktu Tunggu (Bounded Waiting).
Jika seandainya ada proses yang sedang menjalankan critical section, maka terdapat batasan waktu berapa lama suatu proses lain harus menunggu giliran untuk mengakses critical section. Dengan adanya batas waktu tunggu akan menjamin proses dapat mengakses ke critical section (tidak mengalami starvation: proses seolah-olah berhenti, menunggu request akses ke critical section diperbolehkan).

Solusi Untuk Dua Proses:
Ada dua jenis solusi masalah critical section, yaitu:
1.      Solusi Perangkat Lunak.
Dengan menggunakan algoritma-alogoritma yang nilai kebenarannya tidak tergantung pada asumsi-asumsi lain, selain bahwa setiap proses berjalan pada kecepatan yang bukan nol.

2.      Solusi Perangkat Keras.
Tergantung pada beberapa instruksi mesin tertentu, misalnya dengan me-non-aktifkan interupsi atau dengan mengunci suatu variabel tertentu.

Selanjutnya akan dibahas sebuah algoritma sebagai solusi masalah dari critical section yang memenuhi tiga syarat seperti yang telah disebutkan di atas. Solusi ini tidak tergantung pada asumsi mengenai instruksi-instruksi perangkat keras atau jumlah prosesor yang dapat didukung oleh perangkat keras. Namun, kita mengasumsikan bahwa insruksi bahasa mesin yang dasar (instruksi-instruksi primitif seperti load, store, dan test) dieksekusi secara atomik. Artinya, jika dua instruksi tersebut dieksekusi secara konkuren, hasilnya ekuivalen dengan eksekusi instruksi tersebut secara sekuensial dalam urutan tertentu. Jadi, jika load dan store dieksekusi secara konkuren, load akan mendapatkan salah satu dari nilai yang lama atau nilai yang baru, tetapi tidak kombinasi dari keduanya.

CONTOH CRITICAL SECTION
Alogoritma I
Pada algoritma 1, variabel yang digunakan bersama (shared variabel) adalah sebuah variabel integer turn, yang diinisialisasi awal nilai 0 (atau 1 di proses yang kedua). Jika turn == i, maka proses Pi diizinkan untuk mengeksekusi critical sectionnya.

Algoritma ini menjamin bahwa hanya ada satu proses pada suatu saat yang berada di critical section. Namun, algoritma ini tidak memenuhi syarat terjadinya kemajuan, karena algoritma ini membutuhkan pergiliran proses di dalam menjalankan critical section. Misalnya, jika turn == 0 dan P1 ingin masuk ke critical section, P1 tidak dapat masuk, meskipun P0 sedang berada di remainder section. Hal ini dikarenakan P0 belum masuk ke critical section. dan oleh karenanya P0 belum mengubah nilai turn (menjadi turn == 1.)
            
/**
    * Program ini sesuai dengan solusi critical section dengan
    * menggunakan algoritma 1.
    * Disadur dari  buku Silberschatz dkk,
    * Applied Operating Systems Concepts, 2000.
    */

   public class Algoritma_1 extends MutualExclusion
   {
      public Algoritma_1() {
         turn = TURN_0;
      } 

      public void masukCriticalSection(int t) {
         while (turn != t)
            Thread.yield();
      }

      public void keluarCriticalSection(int t) {
         turn = 1 - t;
      }

      private volatile int turn;
   }
  
  

Algoritma 2
Kelemahan algoritma 1 adalah bahwa algoritma 1 tidak menyediakan informasi yang cukup mengenai keadaan state setiap proses, ia hanya mengingat proses mana yang diperbolehkan untuk memasuki critical section. Untuk memecahkan masalah ini, variabel turn diganti dengan sebuah array, yaitu:
boolean flag[2];

Setiap elemen dari array tersebut diinisialisasi awal ke false. Jika flag[i] bernilai true, maka ini mengindikasikan bahwa Pi siap untuk masuk ke critical section. Setiap proses memantau suatu flag yang mengindikasikan ia ingin memasuki critical section. Dia memeriksa flag proses lain dan tidak akan memasuki critical section bila ada proses lain yang sedang masuk.

/**
    * Program ini sesuai dengan solusi critical section dengan
    * menggunakan algoritma 2.
    * Disadur dari  buku Silberschatz dkk,
    * Applied Operating Systems Concepts, 2000.
    */

   public class Algoritma_2 extends MutualExclusion
   {
      public Algoritma_2() {
         flag[0] = false;
         flag[1] = false;
      }

      public void masukCriticalSection(int t) {
         int other;
  
         other = 1 - t;

         flag[t] = true;
     
         while (flag[other] == true)
            Thread.yield();
      }

      public void keluarCriticalSection(int t) {
         flag[t] = false;
      }

      private volatile boolean[] flag = new boolean[2];
   }
  
  
Di algoritma 2 ini, proses Pi pertama-tama mengubah nilai(set) flag[i] menjadi true, menandakan bahwa Pi mau masuk ke critical section. Kemudian Pi mengecek apakah proses Pj juga mau masuk kecritical section. Jika proses Pj mau masuk, maka proses Pi akan menunggu sampai proses Pj mengubah statenya bahwa ia tidak mau lagi masuk ke critical section (flag[j] == false). Pada saat itu, maka Pi akan masuk ke critical section. Ketika keluar dari critical section, Pi akan mengset nilai flag[i] menjadi                 false, memperbolehkan proses lain (jika ada proses lain yang menunggu) untuk masuk ke critical section.

Solusi dengan algoritma 2 ini memenuhi syarat mutual exclusion, tetapi tidak memenuhi syarat terjadinya kemajuan. Untuk mengilustrasikan masalah ini, perhatikan urutan eksekusi berikut:
T0: P0 sets flag[0] true
                  T1: P1 sets flag[1] true              

Sekarang P0 dan P1 akan loop selama-lamanya di dalam statement while masing-masing. Perhatikan bahwa mengubah urutan instuksi untuk mengset flag[i] dan mengecek nilai flag[j] tidak akan memecahkan masalah ini. Kita malah akan berada di situasi di mana ada kemungkinan untuk kedua proses berada dicritical section pada saat yang bersamaan, yang akan melanggar syarat mutual exclusion.

Algoritma 3
Dengan menggabungkan algoritma 1 dan algoritma 2, kita akan memperoleh solusi yang tepat untuk masalahcritical section, di mana solusi itu akan memenuhi tiga syarat seperti yang telah disebutkan di atas. Setiap proses menggunakan dua variabel:
boolean flag[2];
                  int turn;

Awalnya flag[0] = flag[1] = false, dan nilai turn tergantung dari proses yang boleh masuk (0 atau 1). Untuk
masuk ke critical section, proses Pi pertama-tama mengset flag[i] menjadi true, dan kemudian mengset nilai turn menjadi j, sehingga memperbolehkan proses lain yang ingin masuk ke critical section untuk dapat masuk ke critical section. Jika kedua proses mencoba untuk masuk ke critical section pada saat yang bersamaan, turn akan diset ke nilai i dan j pada saat yang hampir bersamaan. Yang terakhir mengubah nilai turn akan mempersilakan proses yang lainnya untuk masuk ke critical section.
/**
    * Program ini sesuai dengan solusi critical section dengan
    * menggunakan algoritma 3.
    * Disadur dari  buku Silberschatz dkk,
    * Applied Operating Systems Concepts, 2000.
    */

   public class Algoritma_3 extends MutualExclusion
   {
      public Algoritma_3() {
         flag[0] = false;
         flag[1] = false;
         turn = TURN_0;
      }

      public void masukCriticalSection(int t) {
         int other;

         other = 1 - t;
  
         flag[t] = true;
         turn = other;

         while ( (flag[other] == true) && (turn == other) )
            Thread.yield();
      }

      public void keluarCriticalSection(int t) {
         flag[t] = false;
      }

      private volatile int turn;
      private volatile boolean[] flag = new boolean[2];
   }  

Solusi Untuk Proses Jamak: Algoritma Tukang Roti
Algoritma ini didasarkan pada algoritma penjadualan yang biasanya digunakan oleh tukang roti, di mana urutan pelayanan ditentukan dalam situasi yang sangat sibuk.

Algoritma ini dapat digunakan untuk memecahkan masalah critical section untuk n buah proses, yang diilustrasikan dengan n buah pelanggan. Ketika memasuki toko, setiap pelanggan menerima sebuah nomor. Sayangnya, algoritma tukang roti ini tidak dapat menjamin bahwa dua proses (dua pelanggan) tidak akan menerima nomor yang sama. Dalam kasus di mana dua proses menerima nomor yang sama, maka proses dengan nomor ID terkecil yang akan dilayani dahulu. Jadi, jika Pi dan Pj menerima nomor yang sama dan i < j, maka Pi dilayani dahulu. Karena setiap nama proses adalah unik dan berurut, maka algoritma ini dapat digunakan untuk memecahkan masalah critical section untuk n buah proses.

Struktur data umum algoritma ini adalah:
               boolean choosing[n];
               int number [n];
Awalnya, struktur data ini diinisialisasi masing-masing ke false dan 0, dan menggunakan notasi berikut:
- (a, b) < (c, d) jika a < c atau jika a= c dan b < d
- max(a0, ..., an-1) adalah sebuah bilangan k, sedemikian sehingga k >= ai untuk setiap i= 0, ..., n – 1

Algoritma Tukang Roti


  
      do {
         choosing[i] = true;
         number[i] = max(number[0], number [1], ..., number [n+1])+1;
         choosing[i] = false;
         for (j=0; j < n; j++) {
            while (choosing[j]);
            while ((number[j]!=0) && ((number[j],j) < number[i],i)));
         }
            <foreignphrase>critical section</foreignphrase>
         number[i] = 0;
            <foreignphrase>remainder section</foreignphrase>
      } while (1);
Rangkuman
Solusi critical section harus memenuhi ketiga syarat berikut:
·         Mutual Exclusion
·         Progress
·         Bounded Waiting
Algoritma I dan II terbukti tidak dapat memecahkan masalah critical section untuk dua proses karena tidak memenuhi syarat progress dan bounded waiting. Algoritma yang dapat menyelesaikan masalah critical sectionpada dua proses adalah Algoritma III. Sedangkan untuk masalah critical section pada n-buah proses dapat diselesaikan dengan menggunakan Algoritma Tukang Roti.

Sumber :


PCB (PROCESS CONTROL BLOCK)


PENGERTIAN PROCESS CONTROL BLOCK
Proses adalah program yang sedang dieksekusi. Menurut SilberSchatz, suatu proses adalah lebih dari sebuah kode program, yang terkadang disebut text section . Proses juga mencakup program counter , yaitu sebuah stack untuk menyimpan alamat dari instruksi yang akan dieksekusi selanjutnya dan register. Sebuah proses pada umumnya juga memiliki sebuah stack yang berisikan data-data yang dibutuhkan selama proses dieksekusi (seperti parameter method, alamat return dan variabel lokal), dan sebuah data section yang menyimpan variabel global.

Kami tekankan bahwa program itu sendiri bukanlah sebuah proses; suatu program adalah satu entitas pasif; seperti isi dari sebuah berkas yang disimpan didalam disket. Sedangkan sebuah proses dalam suatu entitas aktif, dengan sebuah program counter yang menyimpan alamat instruksi selanjut yang akan dieksekusi dan seperangkat sumber daya ( resource yang dibutuhkan agar sebuah proses dapat dieksekusi.

Setiap proses dalam sebuah sistem operasi mendapatkan sebuah PCB (Process Control Block) yang memuat informasi tentang proses tersebut, yaitu: sebuah tanda pengenal proses (Process ID) yang unik dan menjadi nomor identitas, status proses, prioritas eksekusi proses dan informasi lokasi proses dalam memori. Prioritas proses merupakan suatu nilai atau besaran yang menunjukkan seberapa sering proses harus dijalankan oleh prosesor. Proses yang memiliki prioritas lebih tinggi, akan dijalankan lebih sering atau dieksekusi lebih dulu dibandingkan dengan proses yang berprioritas lebih rendah. Suatu sistem operasi dapat saja menentukan semua proses dengan prioritas yang sama, sehingga setiap proses memiliki kesempatan yang sama. Suatu sistem operasi dapat juga mengubah nilai prioritas proses tertentu, agar proses tersebut akan dapat memiliki kesempatan lebih besar pada eksekusi berikutnya (misalnya: pada proses yang sudah sangat terlalu lama menunggu eksekusi, sistem operasi menaikkan nilai prioritasnya).
CONTOH PROSES CONTROL BLOCK
Process Control Block ini  hanya berfungsi sebagai tempat penyimpanan informasi yang dapat  bervariasi dari proses yang satu dengan yang lain. Setiap proses digambarkan dalam sistem operasi oleh sebuah Process Control Block (PCB). PCB ini berisikan banyak informasi yang berhubungan dengan sebuah proses yang spesifik, yaitu pointer, status proses, program counter, CPU registers, informasi manajemen memori, informasi pencatatan, dan informasi status I/O.

Tiap proses digambarkan dalam sistem operasi oleh sebuah process control block PCB - juga disebut sebuah control block. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal dibawah ini:
1. Pointer
Merupakan perubahan dinamis dimana suatu perubahan yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program di eksekusi.
2. Status Proses
Sebagaimana proses bekerja, maka proses tersebut merubah state (keadaan statis/asal). Status dari sebuah proses didefinisikan dalam bagian oleh aktivitas yang ada dari proses tersebut. Tiap proses mungkin adalah satu dari keadaan proses new, ready, running, waiting, terminated.
a.  New
Status yang dimiliki pada saat proses baru saja dibuat oleh penjadwalan tingkat tinggi, tetapi belum siap melakukan eksekusi.
b. Ready
Status yang dimiliki pada saat proses siap dieksekusi oleh prosesor.
c.  Running
Status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi. Proses bisa dieksekusi karena CPU tidak sedang mengerjakan tugas yang lain.
e. Waiting
Status yang dimiliki pada saat proses menunggu suatu event (kejadian), seperti penyelesaian I/O atau menerima signal.
f.   Terminated
Status yang dimiliki pada saat proses telah selesai dieksekusi.

Hanya satu proses yang dapat berjalan pada prosesor mana pun pada satu waktu. Namun, banyak proses yang dapat berstatus Ready atau Waiting. Ada tiga kemungkinan bila sebuah proses memiliki status Running, yaitu:
·  Jika program telah selesai dieksekusi maka status dari proses tersebut akan berubah menjadiTerminated.
· Jika waktu yang disediakan oleh OS untuk proses tersebut sudah habis maka akan terjadi interupsi dan proses tersebut berstatus Ready.
·  Jika suatu event (kejadian) terjadi pada saat proses dieksekusi maka proses tersebut akan menunggu event tersebut selesai dan proses berstatus Waiting.

Diagram Status Proses:

3. Program Counter
Program Counter menunjukkan alamat berikutnya yang akan dieksekusi oleh suatu proses. Program Counter mengindikasikan address dari perintah selanjutnya untuk dijalankan dan ditambah code information pada kondisi apapun.
4. CPU Registers
Register bervariasi dalam setiap jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk dalam accumulator, register indeks, stack pointer, general-purpose register, ditambah kode informasi pada kondisi apa pun. Beserta dengan program counter, keadaan/status informasi harus disimpan pada saat gangguan terjadi, untuk memungkinkan proses tersebut berjalan / bekerja dengan benar setelahnya.
5. Informasi Manajemen Memori
Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem operasi.
6.  Informasi Pencatatan
Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun, jumlah job atau proses, dan banyak lagi.
7. Informasi Status
Informasi termasuk daftar dari perangkat M/K yang di gunakan pada proses ini, suatu daftar berkas-berkas yang sedang diakses dan banyak lagi. PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yang satu dengan yang lain.

Elemen-elemen dari Process Control Block (PCB) :
1. Identifier : menjelaskan proses yang sedang terjadi
2. State : kondisi yang terjadi pada proses
3. Priority : urutan perintah yang jelas pad suatu proses
4. Program counter : instruksi pada proses
5.Memory pointers : media penyimpanan (penunjuk alamat) pada proses
6.  Context data : data yang berkaitan dengan proses
7.  I/O status information : terdapat masukan dan keluaran yang diinginkan
8. Accounting information : memberikan informasi yang dibutuhkan


Macam-Macam Jenis Status Proses
Jenis status yang mungkin dapat disematkan pada suatu proses pada setiap sistem operasi dapat berbeda-beda. Tetapi paling tidak ada 3 macam status yang umum, yaitu:
·   Ready adalah status dimana proses siap untuk dieksekusi pada giliran berikutnya
· Running adalah status dimana saat ini proses sedang dieksekusi oleh prosesor
· Blocked adalah status dimana proses tidak dapat dijalankan pada saat prosesor siap/bebas

Informasi pada Process Control Block (PCB)
Struktur data PCB menyimpan informasi lengkap mengenai proses sehingga dapat terjadi siklus hidup proses. Sistem operasi memerlukan banyak informasi mengenai proses guna pengelolaan proses. Informasi ini berada di PCB. Sistem berbeda akan mengorganisasikan secara berbeda.
Informasi-informasi pada PCB antara lain:

1.      Informasi Identifikasi Proses
Informasi ini berkaitan dengan identitas proses yang berkaitan dengan tabel lainnya. Informasi tersebut meliputi:
·         Identifier proses
·         Identifier proses yang menciptakan
·         Identifier pemakai

2.      Informasi Status Proses
Informasi ini tentang isi register-register pemroses. Saat proses berstatus running, informasi tersebut berada diregister-register. Ketika proses diinterupsi, semua informasi register harus disimpan agar dapat dikembalikan  saat   proses dieksekusi kembali. Jumlah dan jenis register yang terlibat tergantung arsitektur komputer. Informasi status proses ini terdiri dari :
·     Register-Register yang Terlihat Pemakai
Yaitu register-register yang dapat ditunjuk instruksi bahasa assembly untuk diproses pemroses.
·     Register-Register Kendali dan Status
Yaitu register-register yang digunakan untuk mengendalikan operasi pemroses, seperti program counter dan PSW.
·     Pointer Stack
Setiap proses mempunyai satu atau lebih stack, yang digunakan untuk parameter atau alamat prosedur pemanggil dan system call. Pointer stack menunjukkan posisi paling atas dari stack.

3.     Informasi Kendali Proses
Informasi kendali proses adalah informasi lain yang diperlukan sistem operasi untuk mengendalikan dan koordinasi beragam proses aktif. Informasi kendali terdiri dari:
·         Informasi Penjadwalan dan Status
 Informasi-informasi ini digunakan untuk menjalankan fungsi penjadwalan, antara lain:
o   Status Proses, Mendefinisikan keadaan/status proses (running, ready, blocked).
o   Prioritas, Menjelaskan prioritas proses.
o Informasi Berkaitan dengan Penjadwalan, Berkaitan dengan informasi penjadwalan, seperti lama menunggu, lama proses terakhir dieksekusi.
o   Kejadian/Event, Identitas kejadian yang ditunggu proses.
o  Penstrukturan Data, satu proses dapat dikaitkan dengan proses lain dalam satu antrian atau ring, atau struktur lainnya. PCB harus memiliki pointer untuk mendukung struktur ini.
·      Komuikasi Antar Proses
Beragam  flag,  sinyal  dan  pesan  dapat  diasosiasikan  dengan  komunikasi antara dua proses yang terpisah. Informasi ini disimpan di dalam PCB.
·     Kewenangan Proses
Proses dapat mempunyai kewenangan berkaitan dengan memori dan tipe instruksi yang dapat dijalankan.
·     Manajemen Memori
Bagian yang berisi pointer ke tabel segmen atau page yang menyatakan memori maya (virtual memory) proses.
·     Kepemilikan dan Utilisasi Sumber Daya
Sumber daya yang dikendalikan proses harus diberi tanda, misalnya berkas yang dibuka, pemakaian pemroses dan pemakaian sumber daya lainnya. Informasi yang terdapat pada setiap proses meliputi Status Proses, Program Counter, CPU Registers, Informasi Penjadwalan CPU, Informasi Manajemen Memori, Informasi Accounting dan Informasi Status I/O.

Sumber :


DISTRIBUTED PROCESSING



PENGERTIAN DISTRIBUTED PROCESSING
Distributed Processing adalah kemampuan menjalankan semua proses pengolahan data secara bersama antara komputer yang berfungsi sebagai pusat dengan beberapa komputer yang lebih kecil dan saling dihubungkan melalui jalur komunikasi. Setiap komputer tersebut memiliki prosesor mandiri sehingga mampu mengolah sebagian data secara terpisah, kemudian hasil pengolahan tadi digabungkan menjadi satu penyelesaian total. Jika salah satu prosesor mengalami kegagalan atau masalah maka prosesor yang lain akan mengambil alih tugasnya. Dalam proses distribusi sudah mutlak diperlukan perpaduan yang mendalam antara teknologi komputer dan telekomunikasi, karena selain proses yang harus didistribusikan, semua host komputer wajib melayani terminal-terminalnya dalam satu perintah dari komputer pusat.

Distributed Data Processing System  yang dalam bahasa indonesianya Sistem pengolahan data terdistribusi. Merupakan Sekumpulan komputer yang saling berkoneksi untuk memenuhi kebutuhan pengolahan informasi dari satu entity perusahaan atau organisasi modern. Didukung oleh komputer dan komunikasi, sistem pengolahan data terdistribusi merupakan media pelayanan data.
Sistem pengolahan data terdistribusi dalam arti lain yaitu meletakan sumber daya komputer pada tempat dimana  user berada, dimana sumber daya tersebut secara  geografis terpisah dan saling interkoneksi secara on-line atau secara langsung.

Sumber Daya Pengolahan Data Dalam Sistem Terdistribusi
Apa yang dimaksud sumber daya pengolahan data dalam sistem terdistribusi? Adapun yang dimaksud dengan Sumber daya yang didistribusikan  yaitu berupa sumber daya Platform (Hardware dan Software System), Aplikasi atau Proses dan Data atau Database. Terminologi sistem pengolahan datanya dapat berbentuk distribusi horisontal (setiap node komputer atau jaringan mempunyai kedudukan yang sama dengan node lainnya).Sedangkan distribusi vertical dimana ada penjenjangan atau hirarki antar node di setiap lokasi, misalnya kantor pusat, kantor wilayah, kantor cabang dan unit lebih kecil lainnya yang terdistribusi hirachical secara komputasi.

Diperlukan jaringan komunikasi komputer pada sistem pengolahan data terdistribusi untuk dapat saling berhubungan antar site. Jaringan komputer adalah interkoneksi antara sejumlah komputer autonomous yang dapat saling bertukar informasi antara komputer yang  saling terhubung. Bentuk komputer yang saling terhubung biasanya disebut dengan Node, Host atau Site. Bentuk hubungan antar komputer tidak hanya melalui kawat tembaga saja, tetapi dapat melalui serat optic, gelombang mikro dan satelit komunikasi
Sistem pengolahan data terdidtribusi dibangun pada top of network, sedemikian rupa sehingga jaringan tidak nampak pada user.  User tidak perlu tahu kerumitan pengelolaan jaringan, semuanya sudah dilakukan secara otomatik oleh sistem.

Sistem pengolahan data terdistribusi dapat diakses oleh pengguna dengan menggunakan dua aplikasi yaitu berupa aplikasi lokal dan aplikasi global, sehingga distributed data processing system memiliki karakteristik yaitu :
1.      Kumpulan dari data logik yang digunakan bersama-sama.
2.      Data di bagi menjadi beberapa fragment.
3.      Fragment mungkin mempunyai copy ( replika ).
4.      Fragment / replika nya di alokasikan pada yang digunakan.
5.      Setiap site berhubungan dengan jaringan komunikasi.
6.      Data pada masing-masing site dibawah pengawasan DBMS.
7.  DBMS pada masing-masing site dapat mengatasi aplikasi lokal, secara otonomi.
8. Masing-masing DBMS berpastisipasi paling tidak satu global aplikasi.

Alasan Sistem Pengolahan Data Terdistribusi Digunakan Dalam Berbagai Perusahaan, Organisasi Dan Perkantoran

Perkembangan organisasi yang pada umumnya mempunyai banyak cabang yang tersebar dalam berbagai lokasi. Dan Menginginkan untuk mengintregrasikan antar cabang-cabang tersebut sehingga pertukaran data dan informasi dapat dilakukan dengan cepat dan koordinasi antar cabang dapat ditingkatkan lebih baik lagi.
Distributed data processing system juga sangat berperan, ini dikarenakan terdapat kebutuhan dan tuntutan baik dari pihak perusahaan maupun dari sisi customer agar user dan customer dapat berinteraksi dengan mudah.

Pengaruh Distributed Data Processing System Pada Organisasi
1.      Meningkatkan kemampuan komputasi
2.      Meningkatkan kemampuan Data Storage
3.      Memungkinkan kerja lebih efisien
4.      Meningkatkan End-user, manajemen punya otoritas lebih

Masalah pada End-User
Banyak End-user merasa tidak puas terhadap pelayanan dari organisasi Sentralisasi Data Prosesing:
1.      Harus membuat/mengisi aplikasi form.
2.      Menunggu proses yang lama.
3.    Tidak dapat mengakses ke komputer setiap saat dimana ia membutuhkan.

Persyaratan & Tujuan pendukung System Pengolahan Data Terdistribusi
1.   Penggunaan komputer Mini & Mikro(dimana interkoneksi micro computer, mini computer dan large computer lebih efektif biayanya).
2.      Pemakaian teknik Database. (dapat sharing data oleh banyak user).
3.      Corporation wide work.
4.      Struktur jaringan yang fleksibel.
5.      Penggunaan standard line control & network architecture.

CONTOH DISTRIBUTED PROCESSING
Contoh Sistem Pengolahan Data terdistribusi
1.      Internet
·         Jaringan komputer dan aplikasi yang heterogen.
·         Mengimplementasikan protokol internet.
2.      Intranet
·         Jaringan yang teradminitrasi secara lokal.
·         Terhubung ke internet melalui feriwall.
·         Menyediakan layanan internet dan eksternal.
3.      Mobile Computing ( Sistem Komunikasi telepon seluler)
·         Menggunakan frekuensi radio sebagai media transmisi
·         Perangkat dapat bergerak kemanapun asal masih terjangkau dengan frekuensinya
·         Dapat menghandle/dihububngkan dengan perangkat lain
4.      Sistem Telepon
·         ISDN atau yang biasa disebut jaringan telpon tetap (dengan kabel).
·         PSTN jaringan telepon/telekomunikasi yang semuanya digital.
5.      Network File System (NTFS)
·       WWW
6.      Arsitektur client server yang diterpakan dalam infrastruktur internet

Contoh Impementasi Distributed Data Processing System
Aplikasi facebook.Com yang biasa anda gunakan untuk bersosialisai dengan saudara, kawan dan orang di seluruh dunia melalui internet. Bila kita lihat aplikasi tersebut, database tidak didistribusikan, tetapi proses sistem dan penggunaan fungsi-fungsi atau feature pada sistem terpisah-pisah prosesnya tidak satu proses saja dalam satu waktu. Pada waktu tertentu ada orang yang sedang isi status, dan mungkin di waktu yang sama ada sedang mencari teman, ada yang mengupload foto dan sebagainya.  Tampak disini beberapa proses pada sistem terdistribusi pada setiap client yang berbeda.

Pada penggunaan aplikasi pembayaran / transaksi online pada suatu perusahaan, misalnya saja tiket pesawat terbang. Aplikasi tersebut juga contoh dari aplikasi pengolahan data terdistribusi, dimana data pembayaran ada tersimpan di database bank, sementara data tiketnya tersimpan di database server maskapai yang menyediakan aplikasi tiket online tersebut. Jadi dapat dikatakan bila aplikasi yang digunakan menggunakan database yang terpisah tidak satu database saja, maka dapat dikatakan itu adalah aplikasi pengolahan data terdistribusi atau dikenal juga dengan distributed  data processing system.

Figure 6-1 The Client/Server Architecture and Distributed Processing
Oracle client / server arsitektur dalam lingkungan pemrosesan terdistribusi memberikan manfaat sebagai berikut:
1.     Aplikasi client tidak bertanggung jawab untuk melaksanakan setiap pengolahan data. Sebaliknya, mereka meminta masukan dari pengguna, data permintaan dari server, dan kemudian menganalisa dan menyajikan data ini menggunakan kemampuan tampilan dari workstation klien atau terminal (misalnya, dengan menggunakan grafik atau spreadsheet).
2.   Aplikasi client tidak tergantung pada lokasi fisik dari data. Jika data tersebut akan dipindahkan atau didistribusikan ke server database lain, aplikasi terus berfungsi dengan modifikasi sedikit atau tidak ada.
3. Oracle memanfaatkan fasilitas multitasking dan berbagi-memori sistem operasi yang mendasarinya. Akibatnya, ini memberikan tingkat tertinggi kemungkinan konkurensi, integritas data, dan kinerja untuk aplikasi kliennya.
4.  Klien workstation atau terminal dapat dioptimalkan untuk penyajian data (misalnya, dengan menyediakan grafis dan dukungan mouse) dan server dapat dioptimalkan untuk pengolahan dan penyimpanan data (misalnya, dengan memiliki sejumlah besar memori dan ruang disk) .
5.     Dalam lingkungan jaringan, Anda dapat menggunakan workstation klien murah untuk mengakses data remote dari server efektif.
6.   Jika perlu, Oracle dapat ditingkatkan sebagai sistem Anda tumbuh. Anda dapat menambahkan beberapa server untuk mendistribusikan beban database pengolahan seluruh jaringan (horizontal skala), atau Anda dapat memindahkan Oracle ke komputer mini atau mainframe, untuk mengambil keuntungan dari kinerja sistem yang lebih besar itu (vertikal skala). Dalam kedua kasus, semua data dan aplikasi yang dipertahankan dengan modifikasi sedikit atau tidak ada, karena Oracle adalah portabel antara sistem.
7.  Dalam lingkungan jaringan, data bersama disimpan pada server, bukan pada semua komputer dalam sistem. Hal ini membuat lebih mudah dan lebih efisien untuk mengelola akses konkuren.
8.   Dalam lingkungan jaringan, aplikasi client mengirimkan permintaan database ke server dengan menggunakan pernyataan SQL. Setelah diterima, pernyataan SQL diproses oleh server, dan hasilnya dikembalikan ke aplikasi klien. Jaringan lalu lintas disimpan ke minimum karena hanya permintaan dan hasilnya dikirim melalui jaringan.

Sumber :

SISTEM OPERASI  HANDHELD

PENGERTIAN SISTEM OPERASI HANDHELD
Handheld computer adalah komputer yang cukup kecil sehingga dapat digenggam. Komputer genggam ini dapat bekerja dengan fungsi yang hampir sama dengan komputer biasa. Meskipun sangat mudah untuk dibawa, komputer genggam tidak dapat menggantikan komputer biasa (PC) karena hanya memiliki keyboard dan layar yang kecil. Beberapa produsen mencoba untuk memecahkan masalah keyboard yang terlalu kecil. Keyboard tersebut diganti dengan electronic pen. Bagaimanapun, electronic pen ini masih bergantung pada teknologi pengenalan tulisan tangan yang masih dalam tahap pengembangan.

Kelebihan dari komputer genggam ini adalah pengguna dapat menyimpan serta mengatur data dengan lebih efisien dan akurat. Biasanya komputer genggam dilengkapi dengan teknologi Bluetooth. Bluetooth memang tepat untuk mencetak secara nirkabel, menghubungkan antara komputer genggam dengan mobile printer. Tidak hanya dengan printer tetapi komputer genggam juga dapat dihubungkan dengan alat-alat lain melalui koneksi Bluetooth.

Komputer genggam dapat meningkatkan produktivitas pengguna dan memudahkan mereka untuk bekerja lebih efisien. Komputer genggam yang paling banyak digunakan adalah komputer yang khusus dirancang untuk menyediakan fungsi PIM (Personal Information Manager), seperti kalender, agenda, dan buku alamat.

CONTOH SISTEM OPERASI HANDHELD
1.      Android
Android adalah sebuah sistem operasi mobile phone yang direlease oleh google. Google merupakan sebuah perusahaan yang memiliki segudang aplikasi yang handal, seperti gmail, blogger, webmaster tool, google analytic, google buzz, google wave, spreadsheet, dan masih banyak lagi. Itulah yang menjadi kunci keunggulan Android OS karena didukung oleh sebuah perusahaan terkemuka dan memiliki segudang fitur unggulan yang saat ini banyak digunakan oleh khalayak ramai.

Kelebihan :
·     Multitasking – Android bisa menjalankan berbagai aplikasi, artinya bisa menggunakan berbagai  aplikasi dalam waktu yang bersamaan.
·      Notifikasi – Setiap ada SMS, Email, atau bahkan artikel terbaru dari RSS Reader, akan selalu ada notifikasi di Home Screen Ponsel Android, tak ketinggalan Lampu LED Indikator yang berkedip- kedip, sehingga tidak akan terlewatkan satu SMS, Email ataupun Misscall sekalipun.
·     Akses Mudah terhadap Ribuan Aplikasi Android lewat Google Android App Market – Jika kita  menyukai kegiatan menginstall aplikasi ataupun games, lewat Google Android App Market, bisa  mendownload berbagai aplikasi dengan gratis. Ada banyak ribuan aplikasi dan games yang siap  untuk di download di ponsel Android.
·    Pilihan Ponsel yang beranekaragam - Bicara ponsel Android, akan terasa ‘beda’ dibandingkan  dengan iOS, jika iOS hanya terbatas pada iPhone dari Apple, maka Android tersedia di ponsel dari berbagai produsen, mulai dari Sony Ericsson, Motorola, HTC sampai Samsung. Dan setiap pabrikan ponsel pun menghadirkan ponsel Android dengan gaya masing-masing, seperti Motorola  dengan Motoblur-nya, Sony Ericsson dengan TimeScape-nya.
·   Bisa menginstal ROM yang dimodifikasi – Jika tidak puas dengan tampilan standar Android, jangan khawatir ada banyak Costum ROM yang bisa di pakai di ponsel Android.
·   Widget – Dengan adanya Widget di homescreen, kita bisa dengan mudah mengakses berbagai  setting dengan cepat dan mudah.
·      Google Maniak – Pengguna setia layanan Google mulai dari Gmail sampai Google Reader, ponsel Android telah terintegrasi dengan layanan Google, sehingga bisa dengan cepat mengecek email dari gMail.

Kekurangan:
Tak bisa dipungkiri disamping kelebihan tentu saja ada kekurangan dari sistem operasi Android ini.
·     Koneksi Internet yang terus menerus – Kebanyakan ponsel Android memerlukan koneksi internet yang simultan alias terus menerus aktif, artinya pengguna harus siap berlangganan paket GPRS yang sesuai dengan kebutuhan.
·    Iklan – Aplikasi di ponsel Android memang bisa didapatkan dengan mudah dan gratis, namun konsekuensinya di setiap aplikasi tersebut, akan selalu iklan yang terpampang, entah itu bagian atas atau bawah aplikasi.
·      Karena masih baru, maka belum banyak aplikasi yg tersedia untuk android, namun tidak menutup kemungkinan bakal bertambah banyak mengingat Android adalah OS open source. Hampir semua aplikasi bisa didapat gratis, dan dapat diunduh melalui fasilitas Android Market dan blog-blog pribadi.
·       Bagi orang yg belum pernah memakainya mungkin akan sedikit membingungkan
·       ponsel Android kurang nyaman jika dipakai untuk telepon.
·       Masih sedikit yg memakai OS ini.
·      Android masih mampu sedikit mengimbangi Wndows Mobile untuk terintegrasi dengan Exchange (outlook) server tanpa hambatan.
·      Android tidak bisa konek ke wireless ad-hoc. Sudah browsing ke forum2x, ternyata memang dari Androidnya.

2.      Symbian OS
Symbian OS adalah sistem operasi terbuka yang dikembangkan oleh Symbian Ltd. yang dirancang untuk digunakan peralatan bergerak (mobile).

Kelebihan :
·       Mudah dalam dimasukkan game atau aplikasi apa saja (Format jar. dan sis.)
·       Dirancang sebagai gabungan kemampuan computer dengan ponsel
·      Bersifat open application environment yang memungkinkan ponsel menjadi sebuah platform bagi pengembangan berbagai aplikasi dan layanan (Bahasa dan konten)
·    Open standard dan interoperability, modul-modulnya mudah diimplementasikan secara fleksibel karena mendukung berbagai aplikasi teknologi dan pemrograman interfaces (APIs)
·        Multitasking, yang menekankan pada object oriented dan component based.
·        Flexible user interface design sehingga mudah dikembangkan dengan inovasi yang diinginkan

Kekurangan :
·     Karena memiliki sistem operasi terbuka, handphone jenis ini sangat rentan terhadap serangan   virus  seperti Cabir, Commwarrior, SymbOS.skulls. dan masih banyak lagi.
·      Handphone dengan sistem ini gampang Hang, atau lambat dalam membuka gallery, lagu, serta   pesan singkat(SMS).
·         Symbian ini termasuk dalam kategori OS yang mahal
·         Selain itu, Symbian OS ini pemakaiannya cukup rumit bagi seorang pemula
·      Symbian OS ini juga boros dalam penggunaan baterainya, dikarenakan sistemnya sangat besar   dan canggih.

3.      Palm OS
System Operasi Palm yang dimulai pada tahun 1996 sebenarnya sistem operasi ini bisa saja disebut sebagai perintis OS pada sebuah handset untuk PDA maupun Smartphone, hal ini dikarenakan pesatnya perkembangan produk yang menggunakan Palm dan juga banyaknya jumlah pihak ketiga yang membuat program untuk Palm, hingga sekarang telah ada ribuan program untuk perangkat elektronik yang berbasis Palm.

Palm OS di desain untuk tepat pada devais ukuran telapak tangan dari ukuran tertentu dengan ukuran layar tertentu pula. Palm OS menggunakan multitasking, tetapi hanya satu task untuk setiap aplikasi. Pengguna menggunakan satu aplikasi pada waktu tertentu, satu program apikasi harus selesai sebelum yang berikutnya dapat dipilih. Pembatasan ini membuat sistem operasi mendedikasikan penuh perhatian pada aplikasi yang terbuka. Space yand dibutuhkan oleh sistem untuk setiap aplikasi yang berjalan adalah bersifat dinamis, reusable random access memory (RAM). Aplikasi dan database yang berhubungan disimpan dalam tempat penyimpanan permanen, tetapi tempat penyimpanan permanen itu adalah RAM (bukan hard disk).

Palm OS membagi sebuah aplikasi menjadi code yang dapat dijalankan dan tipe elemen data yang berbeda, seperti elemen antar muka (user interface) dan icons. Elemen data dapat diubah dengan mudah tanpa perlu menulis ulang code.

Kelebihan :
·    Palm memiliki kebutuhan sistem yang sedikit dan cepat sehingga tidak dibutuhkan perangkat  PDA yang canggih dan mahal, dan tidak memerlukan banyak memory untuk dapat menjalankannya dengan baik.
·     User interfacenya sangat mudah digunakan. Anda hanya memerlukan tidak lebih dari lima menit untuk menggunakan fungsi-fungsi utama dari PDA-Phone tersebut
·    Alasan kemudahan penggunaan tersebut adalah sudah tersedianya tomboltombol shortcut untuk  fungsi organizer serta fungsi komunikasi
·     Terlebih lagi, Anda dapat melakukan navigasi dan menggunakan hampir semua aplikasi bawaan Treo tanpa harus menyentuh layar sentuhnya, cukup menggunakan keypad saja
·       Berkat penggunaan Palm OS yang sudah lama beredar, tersedia ratusan, bahkan ribuan aplikasi

Kelemahan:
·     Palm OS yaitu tidak memiliki media penyimpanan eksternal/tambahan, walaupun bisa diisi sebuah program
·     Software maupun Aplikasi tetapi tidak bisa di instal dengan kapasitas yang banyak karena hanya keterbatasan memori.
·  Selain itu , perusahaan yang mengembangkan Palm telah dihentikan maka kemungkinan perkembangan program Palm tidak akan ada lagi dan development yang ada sekarang mungkin hanya berupa support untuk produk produk lama Palm
·        Masih kalah bersaing dengan OS yang terkenal yaitu: Symbian dan Android
·        Penyimpanan memori berupa RAM, bukan berupa Harddisk.

4.      OS di iPad
Sistem Operasi pada iPad yaitu menggunakan Sistem Operasi Multitasking. Multitasking Memungkinkan lebih dari satu program untuk berjalan secara bersamaan.

Kelebihan:
·     Dalam sistem multi-program, pekerjaan yang sedang diolah terus berjalan hingga membutuhkan suatu operasi yang memerlukan interaksi dari luar. (e.g. membaca dari tape). Sistem multi-program didesain untuk memaksimalkan penggunaan CPU.
·     Dalam sistem time-sharing , pekerjaan yang sedang diolah diharuskan melepaskan kerja CPU,    baik secara sukarela atau dari interaksi luar, seperti interupsi-perangkat-keras. Sistem Time-sharing didesain untuk memperbolehkan beberapa program seolah diproses secara bersamaan.
·    Dalam sistem real-time, beberapa program yang sedang menunggu dijamin untuk mendapatkan pengolahan dari CPU ketika interaksi luar terjadi. Sistem real-time didesain untuk melakukan kontrol mekanik seperti robot-robot industri, yang memerlukan ketepatan pemrosesan.
·     Menjadwalkan pekerjaan mana yang dapat berjalan dalam satu waktu, dan kapan pekerjaan yang lain menunggu untuk diolah dapat dikerjakan
·     Mengalokasikan CPU dari pekerjaan satu ke pekerjaan yang lain disebut context switch. Ketika context switch terjadi dengan sangat cepat -- kondisi ini cukup untuk memberikan ilusi pengolahan-paralel.

Kelemahan:
·      No Drag and Drop File Management. iPhone adalah kebutuhan untuk mensinkronkan iPad dengan komputer lain untuk sistem manajemen di konten utama. Jika hal yang sama bisa bekerja pada iPhone dan iPod, maka Anda hanya dapat melakukan hal ini pada satu device saja. Ini merupakan sebuah kendala bagi orang yang memiliki media yang tersebar di beberapa komputer, hard drives, network attached storage unit dan sebagainya. Anda hanya bisa mengunduh konten dari web lewat iTunes.
·      No USB Port. Pad baru bisa sync via USB-namun hanya saat ditancapkan lewat dock connector. Dan Anda tidak dapat menggunakan external USB keyboard yang sudah Anda miliki tanpa memakai USB adaptor yang harus dibeli terpisah. Anda juga harus menggunakan iPad Camera Connection Kit jika ingin mengambil foto lewat kamera yang USB-enabled. Ini berarti Anda juga wajib menginstal perangkat tambahan, saat ingin menggunakan mouse atau bahkan keyboard.
·      No SD Slot. Berbicara mengenai storage, baik 16GB, 32 GB atau 64GB, maka itulah yang bakal Anda dapat. Mengingat iPad tidak memiliki konektor USB dan atau SD Card reader. Artinya, Anda tidak dapat menggunakan SD card 16GB sebagai semi permanen storage (lagi-lagi) tanpa menggunakan iPad Camera Connection. Sangat-sangat tidak efisien.
·     No Flash Support. Situs Mashable pernah mendemonstrasikan salah satu keburukan iPad: tidak adanya support untuk Adobe Flash. Sudah beredar kabar bahwa Apple memang tidak menyukai ekosistem Flash. Apple juga berharap bahwa HTML5 segera keluar dan menggantikan dominasi Flash sebagai sebuah teknologi video playback di web.
·  No HDMI Out. Berbicara mengenai video, Anda juga tidak bisa menemukan port untuk mengkoneksikan iPad ke televisi. Untuk menonton video yang baru saja diunggah ke YouTube di ruang TV bersama keluarga, Anda harus menancapkan adaptor VGA ke Dock Connector yang bakal membatasi resolusi VGA itu sendiri.
·    No Full HD Playback. Di era High-Definition seperti sekarang ini, miris rasanya jika pabrikan sebesar Apple justru melansir gadget yang tidak compatible untuk memutar tayangan HD. Memang, untuk layar berdimensi 9.7 inci sudah cukup untuk memutar video berukuran 720pixel. Namun kenyataan yang cukup menggangu adalah, ukuran video yang sekarang banyak beredar di internet adalah video yang memiliki dimensi 1080 pixel. Anda harus mengkonversinya baru bisa ditonton lewat layar iPad.
·      No Open SDK. Apple kerap melakukan hal ini. Namun Software Development Kit untuk iPhone OS 3.2-yang merupakan sistem operasional yang juga diaplikasikan di iPad-membuat developer harus menandatangani perjanjian Non-Disclosure Agreement sebelum memulai akses. Perjanjian ini mencegah developer mendiskusikan OS diluar forum Apple yang sah. Hal tersebut berarti programmer yang mengerjakan aplikasi untuk device ini tidak bisa membicarakan platform ke orang lain yang juga belum menandatangani NDA, lewat Twitter misalnya.

5.      Windows CE
Windows CE adalah perangkat lunak keluaran Microsoft untuk perangkat keras organizer. Organizer Windows CE tersedia dalam dua bentuk, sebagai Handheld yang horizontal dan Palmsize yang vertikal. Versi Handheld memiliki keyboard dan pena untuk input, sedangkan Palmsize menggunakan layar tampilan yang lebih kecil dan pena. Handheld dilengkpi dengan Pocket-Office-Suite komplit berisi Word, Exel, PowerPoint dan Outlook. Palmsize hanya dilengkapi dengan Pocket-Outlook sebagai channel browser (Internet Explorer mini) dan Notetaker sebagai editor. Tetapi kini banyak perkembangan yang terjadi pada Palmsize yaitu layar tampilan telah berwarna.

Kelebihan :
·        Tampilannya tampak familiar dan hanya Windows CE yang memiliki tampilan warna.
·        Handheld yang horizontal juga memiliki keistimewaan yaitu pada kecepatan.
·   Kompatibilitas dengan Microsoft Windows dalam komunikasi data, penanganan transfer file, sinkronisasi, dan akses database sehingga Windows CE sudah mulai dipakai pada beberapa PDA (Personal Digital Assistant) terbaru.
·   Pengguna tidak perlu lagi mempelajari abjad baru seperti pada Palm. Jika pengguna tidak  menyukai pengenalan tulisan tangan, maka pengguna dapat menggantinya dengan keyboard  virtual
·    Untuk mendukung suksesnya Pocket PC, Microsoft bahkan memberikan Compiler VisualBasic dan C++ berbasiskan Pocket PC-nya secara gratis, yang dapat didownload di Internet

Kelemahan:
·         Sistem operasi Windows CE ini rentan terhadap serangan virus
·         Harus sesekali diupdate software-nya untuk selalu menjaga konsistensi OS ini dalam bekerja
·         Sistem yang kurang stabil
·         Komunitasnya terlalu sedikit, karena bersifat closed-source
·         Tidak adanya Java Virtual Machine seperti generasi-geerasi windows sebelumnnya

Sumber :


SISTEM OPERASI THREAD

PENGERTIAN SISTEM OPERASI THREAD           
Thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor. 

Suatu proses didefinisikan oleh resource yang digunakan dan lokasi yang akan dieksekusi. Namun ada kalanya proses-proses akan menggunakan resource secara bersama-sama. Suatu unit dasar dari CPU utilization yang berisi program counter, kumpulan register, dan ruang stack disebut dengan thread atau lighweight process(LWP). Thread akan bekerja sama dengan thread lainnya dalam hal penggunaan bagian kode, bagian data, dan resource sistem operasi, seperti open file dan sinyal secara kolektif yang sering disebut dengan task.

·         Thread adalah unit terkecil dalam suatu proses yang bisa dijadwalkan oleh sistem operasi.
·         Merupakan sebuah status eksekusi (ready, running, suspend, block, queue, dll)
·         Kadang disebut sebagai proses ringan (lightweight).
·         Unit dasar dari dari sistem utilisasi pada processor (CPU).
·         Dalam thread terdapat: ID Thread, Program Counter, Register dan Stack.
·         Sebuah thread berbagi code section, data section dan resource sistem operasi dengan thread yang lain yang memiliki proses yang sama.
Single-Threading dan Multi-Threading
·     Single-Threading adalah sebuah lightweight process (proses sederhana) yang mempunyai thread tunggal yang berfungsi sebagai pengendali/ controller.
·       Multi-Threading adalah proses dengan thread yang banyak dan mengerjakan lebih dari satu tugas dalam satu waktu
Dalam gambar tersebut terlihat perbedaan antara single thread dengan multi thread. Setiap thread dapat melakukan proses tersendiri, sehingga proses yang semula besar dipecah ke dalam proses kecil­kecil, sedangkan pada single thread hanya ada 1 thread yang menangani proses yang besar. Tentu multithread akan lebih cepat dari pada single thread, namun dalam kasus tertentu terlalu banyak multithread justru memperlambat kerja atau proses. 

Keuntungan Multi-Threading
1.   Responsive; tanggap : Multi-Threading mengizinkan program untuk berjalan terus walau-pun pada bagian program tersebut di block atau sedang dalam keadaan menjalankan operasi yang lama/panjang. Sebagai contoh, multithread web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.
2.    Pembagian sumber daya : Secara default, thread membagi memori dan sumber daya dari proses. Ketika thread berjalan pada data yang sama, thread tersebut bisa berbagi cache memory.
3.   Ekonomis : Mengalokasikan memori dan sumber daya untuk membuat proses adalah sangat    mahal. Alternatifnya, karena thread membagi sumber daya dari proses, ini lebih ekonomis untuk membuat threads.
4.  Pemberdayaan arsitektur multiprosesor: Keuntungan dari multi-threading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara paralel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu.

Kerugian Multi-Threading
1.  Multiple thread bisa mengganggu satu sama lain saat berbagi hardware resource, misalnya chace memory.
2.  Execution time (waktu proses) dari sebuah single-thread tidak dapat diimprove (ditambah), tapi malah bisa diturunkan. Ini terjadi karena penurunan frequensi yang dibutuhkan ketika terjadi pergantian thread yang berjalan.
3.      Harus ada dukungan dari hardware ataupun software untuk melakukan multi-Threading.

Model-Model Threading
1.   Kernel-level threading; thread ini dibuat oleh pengguna yang berkorespondensi 1-1 dengan entitas-entitas yang terjadwalkan yang berada di kernel. Ini merupakan implementasi (penerapaan) paling sederhana dari threading.
·         Thread kernel didukung langsung oleh sistem operasi.
·         Pembuatan, penjadwalan, dan manajemen thread dilakukan oleh kernel pada kernel space.
·   Pengaturan thread dilakukan oleh sistem operasi, sehingga pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread.
2. User-level threading; sebuah pemetaan N-1, yang berarti bahwa semua level aplikasi thread dipetakan ke entitas tunggal yang ada di kernel. Dengan pendekatan ini, switching proses dapat dilakukan dengan sangat cepat.
·  Thread pengguna didukung kernel serta diimplementasikan dengan pustaka (library)   thread pada tingkatan pengguna.
·  Pustaka (library) menyediakan fasilitas untuk pembuatan thread, penjadwalan thread,  dan manajemen thread tanpa dukungan dari kernel.
·  Semua pembuatan dan penjadwalan thread dilakukan dalam ruang pengguna tanpa campur tangan kernel.

Thread dalam Sistem Operasi
1.      Sistem operasi telah mendukung proses multithreading.
2.      Setiap sistem operasi memiliki konsep tersendiri dalam pengimplementasiannya.
3.      Sistem operasi dapat mendukung thread pada tingkatan kernel maupun tingkatan pengguna.

Model Multi-Threading
1.      Many-to-One
Model many­to­one ini memetakan beberapa tingkatan pengguna thread hanya ke satu buah kernel thread. Managemen proses thread dilakukan oleh (di ruang) pengguna, sehingga menjadi efisien, tetapi apabila sebuah thread melakukan sebuah pemblokingan terhadap sistem pemanggilan, maka seluruh proses akan berhenti (blocked). Kelemahan dari model ini adalah multihreads tidak dapat berjalan atau bekerja secara paralel di dalam multiprosesor dikarenakan hanya satu thread saja yang bisa mengakses kernel dalam suatu waktu.

2.      One-to-One
Model one­to­one memetakan setiap thread pengguna ke dalam satu kernel thread. Hal ini membuat model one­to­one lebih sinkron daripada model many­to­one dengan mengizinkan thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap sistem pemanggilan; hal ini juga mengizinkan multiple thread untuk berjalan secara parallel dalam multiprosesor. Kelemahan model ini adalah dalam pembuatan thread pengguna dibutuhkan pembuatan korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread dapat mempengaruhi kinerja dari aplikasi maka kebanyakan dari implementasi model ini membatasi jumlah thread yang didukung oleh sistem. Model one­to­one diimplementasikan oleh Windows NT dan OS/2. 


3.      Many-to-Many
Beberapa tingkatan thread pengguna dapat menggunakan jumlah kernel thread yang lebih kecil atau sama dengan jumlah thread pengguna. Jumlah dari kernel thread dapat dispesifikasikan untuk beberapa aplikasi dan beberapa mesin (suatu aplikasi dapat dialokasikan lebih dari beberapa kernel thread dalam multiprosesor daripada dalam uniprosesor) dimana model many­to­one mengizinkan pengembang untuk membuat thread pengguna sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu. Model one­to­one mempunyai konkurensi yang lebih tinggi, tetapi pengembang harus hati­hati untuk tidak membuat terlalu banyak thread tanpa aplikasi dan dalam kasus tertentu mungkin jumlah thread yang dapat dibuat dibatasi.


Thread cancellation
Thread cancellation/ pembatalan thread ialah pemberhentian thread sebelum tugasnya selesai. Misalnya jika dalam program Java hendak mematikan Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka seluruh thread yang berjalan harus dihentikan terlebih dahulu. Thread yang akan diberhentikan disebut sebagai target thread. Pembatalan Thread terdiri dari 2 jenis:
1.      Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread.
2.     Deffered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.

Thread Pools
Pada web server yang multithreading ada dua masalah yang timbul:Ukuran waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan yang diajukan terlebih pada kenyataannya thread dibuang ketika ia seketika sesudah ia menyelesaikan tugasnya.Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem.Solusinya adalah dengan penggunaan Thread Pools, cara kerjanya adalah dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools, dimana mereka duduk diam dan menunggu untuk bekerja. Jadi ketika server menerima permintaan maka maka ia akan membangunkan thread dari pool dan jika thread tersedia maka permintaan tersebut akan dilayani.Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali ke pool dan menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan maka server menunggu sampai ada satu thread yang bebas.
Thread Pools adalah cara kerja dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools.

Keuntungan menggunakan Thread Pools
·   Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat.
·    Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini penting pada sistem yang tidak dapat mendukung banyak thread yang berjalan secara concurrent.


CONTOH SYSTEM OPERASI THREAD

Contoh Thread Pada Os Windows
Windows mengunakan Win32 API sebagai API utama dalam hampir semua sistem operasi Microsoft. Selain itu windows mengimplementasi model relasi One-to-One, dimana terdapat satu kernel thread yang berasosiasi dengan masing – masing user thread. Thread pada windows secara umum mempunyai komponen sebagai berikut :
·         Thread ID
·         Register set
·         User stack dan kernel stack
·         Private storage area.
Register set, stacks dan private data storage disebut sebagai context dari sebuah thread. Struktur data utama dari sebuah thread :
·         ETHREAD (executive thread block)
·         KTHREAD (kernel thread block)
·         TEB (thread environment block)

 ETHREAD (executive thread block)

Bagian penting dari ETHREAD adalah KTHREAD, Process ID, Thread start address. Blok KTHREAD merupakan pointer yang merujuk pada kernel thread (KTHREAD), Process ID juga merupakan suatu pointer yang menunjuk pada proses utama yang memiliki thread tersebut dan Thread start address adalah alamat dari rutin awal thread.  

KTHREAD (kernel thread block)
KTHREAD menyimpan informasi yang dibutuhkan oleh kernel untuk dapat melakukan penjadwalan dan sinkronisasi thread. Pada KTHREAD juga terdapat kernel stack, yang mana akan digunakan ketika thread berjalan pada kernel mode. Juga terdapat pointer yang menunjuk TEB.

TEB (thread environment block)

TEB menyimpan informasi image loader dan beberapa DLLs dari windows. Komponen - komponen ini berjalan pada user mode, maka dibutuhkan suatu struktur data yang dapat dimanipulasi(writable) pada user mode. Oleh karena itu, tidak seperti KTHREAD dan ETHREAD yang berada pada kernel space, TEB berada pada user space.

Contoh Thread Pada OS Linux
Berikut langkah-langkah ringkas untuk membuat thread sederhana pada linux:
1.      Pastikan telah ada include dan id dari thread sudah dicantumkan dalam kode
      
        #include<stdio.h>
        #include<string.h>
        #include<pthread.h>
        #include<stdlib.h>
        #include<unistd.h>

        pthread_t tid[2];

Note : pthread_tid adalah untuk membuat thread id

2.      Buatlah thread pada inti program (int main) dengan menggunakan fungsi
pthread_create     
pthread_create(&(tid[i]), NULL, &doSomeThing, NULL);
Note :
o   tid[i] adalah id thread yang dibuat pada langkah 1 
o   &doSomeThing adalah fungsi yang dijalankan oleh thread

3.      Pastikan thread mempunyai fungsi yang dijalankan,
   
        void* doSomeThing(void *arg) {
        unsigned long i = 0;
        pthread_t id = pthread_self();

        if(pthread_equal(id,tid[0])) {
            printf("\n First thread processing\n");
        }
        else {
            printf("\n Second thread processing\n");
        }
   
        for(i=0; i<(0xFFFFFFFF);i++);
   
        return NULL;
        }

Note : fungsi ini berkaitan dg langkah 2. fungsi ini yang dipass-ing pada pthread_create

4.     Jika ingin antarthread mengetahui satu sama lain (satu thread mengetahui ada thread lain, sehingga dalam berproses tidak error) gunakan fungsi pthread_join
   
    pthread_join(th1, NULL);
    pthread_join(th2, NULL);

Note :
Contoh ini jika misalnya ada dua thread bernama th1 dan th2 yang akan di-join.

Sumber :