Selasa, 30 Oktober 2018

Tugas 2 SO "Critical Section"

Critical Section

Hasil gambar untuk apa itu 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.
Struktur umum dari proses Pi yang memiliki segmen critical section adalah :
do {
entry section
critical section
exit section
remainder section
} while (1);
Solusi dari masalah critical section harus memenuhi tiga syarat berikut:
1. Mutual Exclusion.
Jika suatu proses sedang menjalankan critical section-nya, maka proses-proses lain tidak dapat menjalankan critical section mereka. Dengan kata lain, tidak ada dua proses yang berada dicritical section pada saat yang bersamaan.
2. Terjadi kemajuan (progress).
Jika tidak ada proses yang sedang menjalankan critical section-nya dan ada proses-proses lain yang ingin masuk ke critical section, maka hanya proses-proses yang yang sedang berada dalamentry section saja yang dapat berkompetisi untuk mengerjakan critical section.
3. Ada batas waktu tunggu (bounded waiting).
Jika seandainya ada proses yang sedang menjalankan critical section, maka proses lain memiliki waktu tunggu yang ada batasnya untuk menjalankan critical section -nya, sehingga dapat dipastikan bahwa proses tersebut dapat mengakses critical section-nya (tidak mengalamistarvation: proses seolah-olah berhenti, menunggu request akses ke critical sectiondiperbolehkan).
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.

         Algoritma I

Algoritma I mencoba mengatasi masalah critical section untuk dua proses. Algoritma ini menerapkan sistem bergilir kepada kedua proses yang ingin mengeksekusi critical section, sehingga kedua proses tersebut harus bergantian menggunakan critical section.
Algoritma ini menggunakan variabel bernama turn, nilai turn menentukan proses mana yang boleh memasuki critical section dan mengakses data yang di- sharing. Pada awalnya variabel turn diinisialisasi 0, artinya P0 yang boleh mengakses critical section. Jika turn= 0 dan P0 ingin menggunakan critical section, maka ia dapat mengakses critical section-nya. Setelah selesai mengeksekusi critical section, P0 akan mengubah turnmenjadi 1, yang artinya giliran P1 tiba dan P1 diperbolehkan mengakses critical section. Ketika turn= 1 dan P0 ingin menggunakan critical section, maka P0 harus menunggu sampai P1 selesai menggunakan critical section dan mengubah turn menjadi 0.
Ketika suatu proses sedang menunggu, proses tersebut masuk ke dalam loop, dimana ia harus terus-menerus mengecek variabel turn sampai berubah menjadi gilirannya. Proses menunggu ini disebut busy waiting. Sebenarnya busy waiting mesti dihindari karena proses ini menggunakan CPU. Namun untuk kasus ini, penggunaan busy waiting diijinkan karena biasanya proses menunggu hanya berlangsung dalam waktu yang singkat.
Pada algoritma ini masalah muncul ketika ada proses yang mendapat giliran memasuki critical section tapi tidak menggunakan gilirannya sementara proses yang lain ingin mengakses critical section. Misalkan ketika turn= 1 dan P1 tidak menggunakan gilirannya maka turn tidak berubah dan tetap 1. Kemudian P0 ingin menggunakan critical section, maka ia harus menunggu sampai P1 menggunakan critical section dan mengubah turn menjadi 0. Kondisi ini tidak memenuhi syarat progress karena P0 tidak dapat memasuki critical section padahal saat itu tidak ada yang menggunakan critical section dan ia harus menunggu P1 mengeksekusi non- critical section-nya sampai kembali memasuki critical section. Kondisi ini juga tidak memenuhi syarat bounded waiting karena jika pada gilirannya P1 mengakses critical section tapi P1 selesai mengeksekusi semua kode danterminate, maka tidak ada jaminan P0 dapat mengakses critical section dan P0-pun harus menunggu selamanya.

         Algoritma II

Algoritma II juga mencoba memecahkan masalah critical section untuk dua proses. Algoritma ini mengantisipasi masalah yang muncul pada algoritma I dengan mengubah penggunaan variabel turn dengan variabel flag. Variabel flag menyimpan kondisi proses mana yang boleh masuk critical section. Proses yang membutuhkan akses ke critical section akan memberikan nilai flag-nya true. Sedangkan proses yang tidak membutuhkancritical sectionakan men- set nilai flagnya bernilai false.Suatu proses diperbolehkan mengakses critical section apabila proses lain tidak membutuhkan critical section atau flag proses lain bernilai false. Tetapi apabila proses lain membutuhkan critical section (ditunjukkan dengan nilai flag-nya true), maka proses tersebut harus menunggu dan “mempersilakan” proses lain menggunakan critical section-nya. Disini terlihat bahwa sebelum memasuki critical section suatu proses melihat proses lain terlebih dahulu (melalui flag-nya), apakah proses lain membutuhkan critical section atau tidak.
Awalnya flag untuk kedua proses diinisialisai bernilai false, yang artinya kedua proses tersebut tidak membutuhkan critical section. Jika P0 ingin mengakses critical section, ia akan mengubah flag[0] menjadi true. Kemudian P0 akan mengecek apakah P1 juga membutuhkan critical section, jika flag[1] bernilai false maka P0 akan menggunakan critical section. Namun jika flag[1] bernilai true maka P0 harus menunggu P1 menggunakan critical section dan mengubah flag[1] menjadi false.
Pada algoritma ini masalah muncul ketika kedua proses secara bersamaan menginginkan critical section, kedua proses tersebut akan men- set masing-masing flag-nya menjadi true. P0 men- set flag[0] = true, P1 men-setflag[1] = true. Kemudian P0 akan mengecek apakah P1 membutuhkan critical section. P0 akan melihat bahwa flag[1] = true, maka P0 akan menunggu sampai P1 selesai menggunakan critical section. Namun pada saat bersamaan, P1 juga akan mengecek apakah P0 membutuhkan critical section atau tidak, ia akan melihat bahwa flag[0] = true, maka P1 juga akan menunggu P0 selesai menggunakan critical section-nya. 
Kondisi ini menyebabkan kedua proses yang membutuhkan critical section tersebut akan saling menunggu dan “saling mempersilahkan” proses lain untuk mengakses critical section, akibatnya malah tidak ada yang mengaksescritical section. Kondisi ini menunjukkan bahwa Algoritma II tidak memenuhi syarat progress dan syarat bounded waiting, karena kondisi ini akan terus bertahan dan kedua proses harus menunggu selamanya untuk dapat mengakses critical section.

         Algoritma III

Algoritma III ditemukan oleh G.L. Petterson pada tahun 1981 dan dikenal juga sebagai Algoritma Petterson. Petterson menemukan cara yang sederhana untuk mengatur proses agar memenuhi mutual exclusion. Algoritma ini adalah solusi untuk memecahkan masalah critical section pada dua proses. Ide dari algoritma ini adalah menggabungkan variabel yang di- sharing pada Algoritma I dan Algoritma II, yaitu variabel turn dan variabelflag. Sama seperti pada Algoritma I dan II, variabel turn menunjukkan giliran proses mana yang diperbolehkan memasuki critical section dan variabel flag menunjukkan apakah suatu proses membutuhkan akses kecritical sectionatau tidak.
Awalnya flag untuk kedua proses diinisialisai bernilai false, yang artinya kedua proses tersebut tidak membutuhkan akses ke critical section. Kemudian jika suatu proses ingin memasuki critical section, ia akan mengubahflag-nya menjadi true (memberikan tanda bahwa ia butuh critical section) lalu proses tersebut memberikan turn kepada lawannya. Jika lawannya tidak menginginkan critical section (flag-nya false), maka proses tersebut dapat menggunakan critical section, dan setelah selesai menggunakan critical section ia akan mengubah flag-nya menjadi false. Tetapi apabila proses lawannya juga menginginkan critical section maka proses lawan-lah yang dapat memasuki critical section, dan proses tersebut harus menunggu sampai proses lawan menyelesaikan critical sectiondan mengubah flag-nya menjadi false.
Misalkan ketika P0 membutuhkan critical section, maka P0 akan mengubah flag[0] = true, lalu P0 mengubah turn1. Jika P1 mempunyai flag[1] = false, (berapapun nilai turn) maka P0 yang dapat mengakses critical section. Namun apabila P1 juga membutuhkan critical section, karena flag[1] = true dan turn= 1, maka P1 yang dapat memasuki critical section dan P0 harus menunggu sampai P1 menyelesaikan critical section dan mengubah flag[1] = false, setelah itu barulah P0 dapat mengakses critical section.
Bagaimana bila kedua proses membutuhkan critical section secara bersamaan? Proses mana yang dapat mengakses critical section terlebih dahulu? Apabila kedua proses (P0 dan P1) datang bersamaan, kedua proses akan menset masing-masing flag menjadi true (flag[0] = true dan flag[1] = true), dalam kondisi ini P0 dapat mengubah turn = 1 dan P1 juga dapat mengubah turn = 0. Proses yang dapat mengakses critical sectionterlebih dahulu adalah proses yang terlebih dahulu mengubah turn menjadi turn lawannya. Misalkan P0 terlebih dahulu mengubah turn= 1, lalu P1 akan mengubah turn= 0, karena turn yang terakhir adalah 0 maka P0-lah yang dapat mengakses critical section terlebih dahulu dan P1 harus menunggu.
Algoritma III memenuhi ketiga syarat yang dibutuhkan. Syarat progress dan bounded waiting yang tidak dipenuhi pada Algoritma I dan II dapat dipenuhi oleh algoritma ini karena ketika ada proses yang ingin mengaksescritical section dan tidak ada yang menggunakan critical section maka dapat dipastikan ada proses yang bisa menggunakan critical section, dan proses tidak perlu menunggu selamanya untuk dapat masuk ke critical section.
Solusi Untuk Proses Jamak: Algoritma Tukang Roti
Algoritma Tukang Roti adalah solusi untuk masalah critical section pada n-buah proses. Algoritma ini juga dikenal sebagai Lamport’s Baker Algorithm. Ide algoritma ini adalah dengan menggunakan prinsip penjadwalan seperti yang ada di tempat penjualan roti. Para pelanggan yang ingin membeli roti sebelumnya harus mengambil nomor urut terlebih dahulu dan urutan orang yang boleh membeli ditentukan oleh nomor urut yang dimiliki masing-masing pelanggan tersebut.
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 dani < j, maka Pi dilayani dahulu. Karena setiap nama proses adalah unik dan berurut, maka algoritma ini dapat digunakan untuk memecahkan masalah critical sectionuntuk 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 < a=” c”>
- 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 ((number[j]!=0) && ((number[j],j) < number[i],i)));
while (choosing[j]); }
number[i] = 0;
<foreignphrase>critical section</foreignphrase>
} while (1);
<foreignphrase>remainder section</foreignphrase>

       Rangkuman

          Solusi critical section harus memenuhi ketiga syarat berikut:

  1. Mutual Exclusion
  2. Progress
  3. 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.
Penjadwalan CPU secara garis besar dibagi menjadi 2, yaitu Penjadwalan Preemptive dan Penjadwalan Non Preemptive.
1. Penjadwalan Pre-emptive
Penjadwalan Preemptive mempunyai arti kemampuan sistem operasi untuk memberhentikan sementara proses yang sedang berjalan untuk memberi ruang kepada proses yang prioritasnya lebih tinggi. Penjadwalan ini bisa saja termasuk penjadwalan proses atau I/O.
Dengan kata lain, penjadwalan Preemptive melibatkan mekanisme interupsi yang menyela proses yang sedang berjalan dan memaksa sistem untuk menentukan proses mana yang akan dieksekusi selanjutnya.
Penjadwalan Preemptive memungkinkan sistem untuk lebih bisa menjamin bahwa setiap proses mendapat sebuah slice waktu operasi. Dan juga membuat sistem lebih cepat merespon terhadap event dari luar (contohnya seperti ada data yang masuk) yang membutuhkan reaksi cepat dari satu atau beberapa proses.
Lama waktu suatu proses diizinkan untuk dieksekusi dalam penjadwalan Preemptive disebut time slice/quantum.
Penjadwalan berjalan setiap satu satuan time slice untuk memilih proses mana yang akan berjalan selanjutnya. Bila time slice terlalu pendek maka penjadwal akan memakan terlalu banyak waktu proses, tetapi bila time slice terlau lama maka memungkinkan proses untuk tidak dapat merespon terhadap event dari luar secepat yang diharapkan.
Dalam waktu-waktu tertentu, proses dapat dikelompokkan ke dalam dua kategori: proses yang memiliki Burst I/O yang sangat lama disebut I/O Bound, dan proses yang memiliki Burst CPU yang sangat lama disebut CPU Bound. Terkadang juga suatu sistem mengalami kondisi yang disebut busywait, yaitu saat dimana sistem menunggu request input(seperti diskkeyboard, atau jaringan). Saat busywait tersebut, proses tidak melakukan sesuatu yang produktif, tetapi tetap memakan resource dari CPU. Dengan penjadwalan Preemptive, hal tersebut dapat dihindari.
Keuntungan penggunaan penjadwalan pre-emptive:
a.       sistem lebih responsif daripada sistem yang memakai penjadwalan Non Preemptive.
b.       Sistem terhindar dari keadaan busywait.
contoh sistem operasi yang menerapkan penjadwalan Preemptive:
Windows 95, Windows XP, Linux, Unix, AmigaOS, MacOS X, dan Windows NT .
2. Penjadwalan Non Pre-emptive
Penjadwalan Non Preemptive ialah salah satu jenis penjadwalan dimana sistem operasi tidak pernah melakukan context switch dari proses yang sedang berjalan ke proses yang lain. Dengan kata lain, proses yang sedang berjalan tidak bisa di- interupt.
Penjadwalan Non Preemptive terjadi ketika proses hanya:
1. Berjalan dari running state sampai waiting state.
2. Dihentikan.
Ini berarti CPU menjaga proses sampai proses itu pindah ke waiting state ataupun dihentikan (proses tidak diganggu). Metode ini digunakan oleh Microsoft Windows 3.1 dan Macintosh. Ini adalah metode yang dapat digunakan untuk platforms hardware tertentu, karena tidak memerlukan perangkat keras khusus (misalnya timer yang digunakan untuk meng interupt pada metode penjadwalan Preemptive).
Dispatcher
Komponen yang lain yang terlibat dalam penjadwalan CPU adalah dispatcher.
Dispatcher adalah modul yang memberikan kontrol CPU kepada proses yang sedang terjadwal. Fungsinya:
  1. Context switching
Mengganti state dari suatu proses dan mengembalikannya untuk menghindari monopoli CPU timeContext switching dilakukan untuk menangani suatu interrupt(misalnya menunggu waktu I/O). Untuk menyimpan state dari proses-proses yang terjadwal sebuah Process Control Block harus dibuat untuk mengingat proses-proses yang sedang diatur scheduler. Selain state suatu proses, PCB juga menyimpan process IDprogram counter(posisi saat ini pada program), prioritas proses dan data-data tambahan lainnya.
  1. Switching to user mode dari kernel mode.
  2. Lompat dari suatu bagian di progam user untuk mengulang program.





Sumber : 

Tugas 2 SO "Batch System"

Batch System

Hasil gambar untuk apa itu 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 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 begini 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

  •   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 
  •   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:

1. Submitt: Proses baru saja dikirimkan oleh user dan masih menunggu untuk dilayani.
2. Running: Proses benar-benar menggunakan CPU pada saat itu.
3. Ready: Proses berhenti sementara untuk memberikan kesempatan pada proses lain untuk menggunakan CPU.
4. Blocked: Proses tidak dapat di-Run sampai terjadi kejadian eksternal yang sesuai (misalkan selesainya operasi input/output atau telah tersedianya data input).
5. 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 menjalan kan 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 suati 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 

Pengertian dan Tujuan Pembuatan System Call
System call adalah jembatan yang menghubungkan antara user dengan sistem operasi.
Fungsi dari system call adalah menyediakan interface antara program (program pengguna yang berjalan) dan bagian OS

Fungsi dari System Call

  1. mengakhiri (end) dan membatalkan (abort)
  2. mengambil (load) dan mengeksekusi (execute)
  3. menentukan dan mengeset atribut proses
  4. membuat dan menghapus file
  5. membuka dan menutup file
  6. membaca, dan menulis reposisi file    




Sumber : 

Sabtu, 20 Oktober 2018

Tugas 1 SO "Sistem Operasi Android"

Sistem Operasi Android OS


Image result for android logo

1. Pengertian Android OS

      Android adalah sistem operasi untuk telepon seluler yang berbasis Linux. Android menyediakan platform terbuka bagi para pengembang untuk menciptakan aplikasi mereka sendiri dan digunakan oleh bermacam perangkat mobile. Awalnya Google inc membeli Android inc, pendatang baru yang membuat perangkat lunak untuk posel. Kemudian untuk mengembangkan Android, dibentuklah Open Handset Alliance, konsorsium dari 34 perusahaan hardware, software dan telekomunikasi, termasuk Google, HTC, Intel, Motorola, Qualcorm, T-Mobile, dan Nvidia.

Pada saat perilisan perdana Android, 5 November 2007, Android bersama Open Handset Alliance menyatakan mendukung pengembangan standar terbuka pada perangkat seluler. Di lain pihak, Google merilis kode-kode Android di bawah lisensi Apache.

Di dunia ini terdapat dua jenis distributor sistem operasi Android. Pertama yang mendapat dukungan penuh dari Google  atau Google Mail Services (GMS) dan kedua yang benar-benar bebas distribusinya tanpa dukungan langsung Google atau dikenal sebagai Open Hanset Distribution (OHD).
Logo android yang berupa layaknya robot memiliki beberapa makna sebagai berikut :
Bentuk Robot yang memiliki  makna para user android dapat memodifikasi perangkat androidnya dengan menambah performa, mengganti UI, bahkan mengganti ROM agar bias menjadi lebih tangguh lagi. Layaknya robot di modifikasi untuk berperang.
Warna hijau memiliki makna tumbuh berkembang. Warna ini digunakan untuk android dengan perkembangan pertumbuhannya yang sekarang sangat bagus dan popular di seluruh dunia.

2. Sejarah Android OS

       Android, Inc. didirikan di Palo Alto, California, pada bulan Oktober 2003 oleh Andy Rubin, Nick Sears, dan Chris White  untuk mengembangkan perangkat seluler pintar yang lebih sadar akan lokasi dan preferensi penggunanya. Tujuan awal pengembangan Android adalah untuk mengembangkan sebuah sistem operasi canggih yang diperuntukkan bagi kamera digital, namun kemudian disadari bahwa pasar untuk perangkat tersebut tidak cukup besar, dan pengembangan Android lalu dialihkan bagi pasar telepon pintar untuk menyaingi Symbian dan Windows Mobile (iPhone Apple belum dirilis pada saat itu). Meskipun para pengembang Android adalah pakar-pakar teknologi yang berpengalaman, Android Inc. dioperasikan secara diam-diam, hanya diungkapkan bahwa para pengembang sedang menciptakan sebuah perangkat lunak yang diperuntukkan bagi telepon seluler. Masih pada tahun yang sama, Rubin kehabisan uang. Steve Perlman, seorang teman dekat Rubin, meminjaminya $10.000 tunai dan menolak tawaran saham di perusahaan.
Google mengakuisisi Android Inc. pada tanggal 17 Agustus 2005, menjadikannya sebagai anak perusahaan yang sepenuhnya dimiliki oleh Google. Pendiri Android Inc. seperti Rubin, Miner dan White tetap bekerja di perusahaan setelah diakuisisi oleh Google. Setelah itu, tidak banyak yang diketahui tentang perkembangan Android Inc., namun banyak anggapan yang menyatakan bahwa Google berencana untuk memasuki pasar telepon seluler dengan tindakannya ini. Di Google, tim yang dipimpin oleh Rubin mulai mengembangkan platform perangkat seluler dengan menggunakan kernel Linux. Google memasarkan platform tersebut kepada produsen perangkat seluler dan operator nirkabel, dengan janji bahwa mereka menyediakan sistem yang fleksibel dan bisa diperbarui. Google telah memilih beberapa mitra perusahaan perangkat lunak dan perangkat keras, serta mengisyaratkan kepada operator seluler bahwa kerjasama ini terbuka bagi siapapun yang ingin berpartisipasi.
Spekulasi tentang niat Google untuk memasuki pasar komunikasi seluler terus berkembang hingga bulan Desember 2006. BBC dan Wall Street Journal melaporkan bahwa Google sedang bekerja keras untuk menyertakan aplikasi dan mesin pencarinya di perangkat seluler. Berbagai media cetak dan media daring mengabarkan bahwa Google sedang mengembangkan perangkat seluler dengan merek Google. Beberapa di antaranya berspekulasi bahwa Google telah menentukan spesifikasi teknisnya, termasuk produsen telepon seluler dan operator jaringan. Pada bulan Desember 2007, Information Week melaporkan bahwa Google telah mengajukan beberapa aplikasi paten di bidang telepon seluler.
Pada tanggal 5 November 2007, Open Handset Alliance (OHA) didirikan. OHA adalah konsorsium dari perusahaan-perusahaan teknologi seperti Google, produsen perangkat seluler seperti HTC, Sony dan Samsung, operator nirkabel seperti Sprint Nextel dan T-Mobile, serta produsen chipset seperti Qualcomm dan Texas Instruments. OHA sendiri bertujuan untuk mengembangkan standar terbuka bagi perangkat seluler. Saat itu, Android diresmikan sebagai produk pertamanya; sebuah platform perangkat seluler yang menggunakan kernel Linux versi 2.6. Telepon seluler komersial pertama yang menggunakan sistem operasi Android adalah HTC Dream, yang diluncurkan pada 22 Oktober 2008.

3. Perkembangan Sistem Operasi Android OS

Android hampir semua orang di seluruh penjuru dunia menggunakan sistem operasi yang satu ini pada smartphone mereka. Namun tak banyak yang tahu bagaimana awal mula sistem operasi Android bisa begitu booming seperti sekarang ini. Andoid merupakan sistem operasi berbasis Linux yang memang diperuntukkan bagi smartphone maupun komputer tablet. Awalnya, Android dikembangkan oleh Android, Inc dengan bantuan finansial dari Google. Android, Inc sendiri didirikan pada tahun 2003 dengan tujuan untuk mengembangkan sebuah sistem operasi canggih yang diperuntukkan bagi kamera digital. Namun melihat pasar kamera digital yang tidak begitu luas, akhirnya Android. Inc memutuskan untuk mengalihkan peruntukkan sistem pengoperasian tersebut dari yang awalnya diperuntukkan bagi kamera digital dialihkan bagi telepon pintar atau smartphone, menyaingi Symbian dan Windows Mobile yang telah lebih dahulu menguasai pasar.
Karena adanya keterbatasan dana, maka Android ini diakuisisi oleh perusahaan besar Google pada tahun 2005. Android Inc menjadi anak perusahaan Google, dimana para pendirinya tetap bekerja di perusahaan yang telah diakusisis Google tersebut. Akhirnya pada tahun 2008 telepon pintar (Smartphone) pertama yang menggunakan Android sebagai sistem pengoperasiaannya berhasil dirilis dan diperkenalkan ke pasar. Telepon seluler ini adalah HTC Dream. Menggunakan OS Android versi 1.0, smartphone ini berhasil mmenarik perhatian masyarakat. Pada tahun 2010, Android bermitra dan bekerjasama dengan beberapa produsen telepon seluler ternama seperti Samsung, HTC, dan LG. Android menggunakan kode dengan sistem terbuka sehingga memungkinkan para pembuat perangkat, operator nirkabel, dan para pengembang aplikasi secara bebas memodifikasi serta mengembangkan perangkat lunak yang ada pada sistem operasi Android tersebut. Maka bukan suatu hal yang mengherankan apabila hingga saat ini Android telah memiliki lebih dari 700 ribu aplikasi dan sekitar lebih dari 25 juta aplikasi telah diunduh oleh para penggunanya melalui toko aplikasi utama milik Android, yakni Google Play Store. Karena berbagai kemudahan dan pencapaian inilah maka Android menjadi sistem operasi telepon pintar paling popular dan paling banyak digunakan oleh milyaran manusia di berbagai penjuru dunia, mengalahkan Symbian yang sebelumnya sempat berjaya memimpin pasar.
Berbagai transformasi dan pengembangan-pengembangan pun dilakukan oleh Android untuk meningkatkan performanya. Sistem operasi Andorid dikembangkan dengan kode yang diberi nama berdasarkan berbagai nama dessert atau makanan pencuci mulut dan diurutkan berdasarkan urutan alfabetis.
Sebenarnya, versi komersil pertama dari Android adalah Android 1.0, OS ini dirilis pada bulan September 2008 dan versi beta yang dirilis pada November 2007. Android merupakan pengembangan berkelanjutan oleh Google dan Open Handset Alliance (OHA) dan telah melakukan beberapa kali update sejak sistem operasi ini dirilis. Berikut akan dibahas perkembangan Android yang memiliki kode nama khusus dari masing-masing versi nya.

1. Cupcake (OS Android 1.5)
Merupakan versi OS Android pertama yang menggunakan nama dessert. OS ini diluncurkan pertama kali pada tahun 2009. Berbagai aplikasi dan fitur yang ditawarkan dalam sistem Android ini di antaranya ialah aplikasi kamus dan keyboard, kemampuan merekam dan memutar video dalam format MPEG-4, aplikasi widget yang lebih lengkap, serta kemampuan transisi layar dan fitur untuk mengunggah video ke dalam Youtube secara lebih mudah dan cepat.

2. Donut (OS Android 1.6)
Enam bulan setelah peluncuran OS Android versi 1.5 Cupcake, Android kembali memperkenalkan sistem operasi versi terbarunya yaitu  OS Android versi 1.6 Donut. Secara keseluruhan tampilan OS ini sama dengan Cupcake, hanya saja terdapat penambahan dan perkembangan pada sistem kamera dan serach engine atau mensin pencarian. Selain itu, Androd versi ini dilengkapi pula dengan dukungan bagi jaringan CDMA yang sebelumnya belum ada pada OS Android versi 1.5 Cupcake.

3. Eclair (OS Android 2.0-2.1)
Perkembangan atau transformasi yang lebih besar lagi dilakukan oleh Android. Bersamaan dengan diluncurkannya perangkat seluler bernama Motorola Droid yang merupakan peningkatan spesifikasi dari perangkat sebelumnya yaitu HTC Dream, Android memperkenalkan sistem operasi terbarunya versi 2.0-2.1 dengan kode Eclair. Perangkat ini hadir dengan adanya fitur GPS dan tampilan yang lebih modern dibandingkan versi sebelumnya.

4. Froyo (OS Android 2.2-2.2.3)
Tahun 2010, tepatnya pada bulan Mei, Android kembali memperkenalkan versi OS terbarunya yaitu OS Android 2.2-2.2.3 Froyo yang memiliki dukungan Adobe Flash Player yang belum ada pada versi sebelumnya, Eclair. Performa Froyo lebih baik dibandingkan Eclair, ditambah lagi dengan adanya dukungan SD (Secure Digital) Card yang semakin mempermudah pengguna atau user-nya dalam melakukan penyimpanan data dalam perangkat seluler pintarnya.

5. Gingerbread (OS Android 2.3-2.3.7)
Tak lama berselang, pada bulan Desember tahun 2010, versi terbaru Android, Gingerbread, diperkenalkan ke pasar. Banyak sekali transformasi dan perubahan yang dilakukan, mengingat versi Gingerbread ini memang diperuntukkan untuk memaksimalkan jalannya berbagai aplikasi dan game yang ada pada Google Play Store. Dilengkapi dengan layar WXGA dan konektivitas NFC semakin membuat Android semakin bersinar di hati para penggunanya.

6. Honeycomb (OS Android 3.0-3.2.6)
OS Android versi terbaru ini hadir pada bulan Februari tahun 2011. Versi ini menawarkan tampilan status bar yang semakin mudah untuk dilakukan kustomisasi oleh penggunanya. OS ini memang diluncurkan khusus mendukung perangkat tablet PC.

7. Ice Cream Sandwich (OS Android 4.0-4.0.4)
Ice Cream Sandwich hadir dengan tampilan yang lebih elegan dan menarik dibandingkan OS versi terdahulu yaitu Honeycomb. Mulai diluncurkan pada bulan Oktober tahun 2011, Ice Cream Sandwich semakin mempertegas konsistensi Android dalam melakukan transformasi dan perkembangan yang konsisten terhadap sistem operasi yang dimilikinya.

8. Jelly Bean (OS Android 4.1-4.3)
Tak berhenti sampai di situ, Android membuktikan eksistensinya lewat OS versi terbarunya yaitu Jelly Bean yang resmi dirilis bulan Juli tahun 2012. Dalam ersi terbarunya ini, terdapat pembaharuan peningkatan input keyboard yang kian lengkap dan adanya pencarian Google Now yang mampu memberikan berbagai informasi mengenai cuaca dan traffic.

9. Kitkat (OS Android 4.4+)
OS ini mampu memberikan tampilan status bar transparan serta dapat beroperasi secara optimal pada perangkat berspesifikasi rendah. Dan juga pada saat perilisan OS ini, Android juga merilis Android Wear, yang mana dapat digunakan pada smartwaches. Selain itu Android juga memperbarui User Interface pada program Google Maps Navigation dan Alarms.

10. Lolipop (OS Android 5.+)
Fitur-fitur pada Android Lollipop merupakan desain ulang dari user interface yang dibangun sekitar bahasa desain responsif yang disebut dengan ”material design”. Perubahan lainnya yaitu perbaikan pada pemberitahuan/notifikasi, yang bisa di akses dari lockscreen dan dapat ditampilkan tanpa aplikasi tambahan sebagai top-of-the-screen banner. Dan Google juga membuat suatu perubahan internal untuk platform, dengan Android Runtime (ART) yang secara resmi menggantikan Dalvik untuk meningkatkan performa aplikasi dan bermaksud juga untuk meningkatkan dan mengoptimalkan penggunaan baterai yang dikenal oleh mereka sebagai projek Volta.

4. Kelebihan dan Kekurangan Sistem Operasi Android

Sistem operasi android memang tergolong baru, namun sistem operasi android ini telah mengalami perkembangan yag cukup pesat. Awalnya diciptakan sebagai tandingan iOS. Android menunjukkan perkembangan yang signifikan, ini tidak terlepas dari dukungan-dukungan pabrik ponsel besar yang ikut menghadirkan ponsel-ponsel bersistem operasi Android. Namun  demikian, sistem operasi android memiliki kelebihan dan kekurangan. Berikut adalah kelebihan dari sistem operasi android, yaitu:
Multitasking
Ponsel atau tablet PC berbasis Android dapat menjalankan berbagai aplikasi, itu artinya pengguna bisa browsing, membaca e-book dan mendengarkan lagu.
Kemudahan dalam notifikasi
Setiap ada SMS, E-mail, atau bahkan artikel terbaru dari RSS Reader akan selalu ada di notifikasi di Home Screen, tak ketinggalan lampu LED indicator yang berkedip-kedip, sehingga pengguna tidak akan terlewatkan satu SMS, E-mail ataupun miscall sekalipun.
Akses mudah terhadap ribuan aplikasi Android lewat Google Android App Market
Google Android Market menyediakan ribuan aplikasi dan games yang dapat didownload dan diinstal sesuai dengan keinginan pengguna
Pilihan ponsel yang beranekaragam
Android tersedia diponsel dari berbagai produsen, mulai dari Sony Ericson, Motorola, HTC, sampai Samsung. Dan setiap pabrik ponsel menghadirkan ponsel Android dengan gaya masing-masing, seperti dengan Motorola dengan Motoblur-nya, Sony Ericson dengan TimeSpace-nya.
Bisa menginstal ROM yang dimodifikasikan
Pengguna dapat merubah ROM dengan fitur Costum ROM jika tidak puas dengan tampilan standar Android.
Widget
Dengan adanya widget di homescreen, pengguna dapat dengan mudah mengakses berbagai fitur dengan cepat.
Google Oriental
Android telah terintegrasi dengan layanan Google, sehingga pengguna bisa dengan cepat mengakses berbagai fitur yang disediakan oleh Google.
Berikut adalah kekurangan sistem operasi adroid, yaitu :
Koneksi internet yang terus-menerus
Kebanyakkan ponsel Android memerlukan koneksi internet yang simultan atau terus-menerus aktif. Hal ini berarti pengguna harus berlangganan layanan internet.
Iklan
Aplikasi di ponsel android memang bisa didapatkan dengan mudah dan gratis, namun konsekuensinya di setiap aplikasi tersebut, akan ada iklan yang terpampang, entah itu bagian atas atau bawah aplikasi.
Boros Baterai
Karena setiap aplikasi yang dijalankan, sinyal, RUM yang digunakan akan menggunakan daya baterai. Apalagi sinyal di Indonesia yang belum stabil maka baterai akan mudah habis karena untuk mempertahankan sinyal agar tetap stabil.




Tugas 1 Individual IMK Life Cycle Software

Proses Desain Interaksi Dalam pengembangan software ada bereapa tahapan utnuk mencapai kualitas pembuatan/ siklus hidup software. Dapat...