Wednesday, October 30, 2024

Batch System

1. Batch System


Batch system dikenalkan pada generasi kedua (1955-1965). Batch sistem adalah suatu teknik pengurutan kerja secara otomatis untuk menghindari waktu menganggurnya CPU. Tugas ini dikerjakan dalam satu rangkaian, lalu dieksekusi secara berurutan. Pada generasi ini sistem komputer belum dilengkapi sistem operasi, tetapi beberapa fungsi sistem operasi telah ada, contohnya fungsi sistem operasi ialah FMS dan IBSYS.

Bentuk bentuk dari Batch System
Multi-programming 
Multi-programming adalah salah satu teknik penjadwalan dimana tugas (task) yang sedang  berjalan tetap berjalan sampai ia melakukan operasi yang membutuhkan waktu untuk menunggu respon dari luar (external event), misalnya membaca data dari disket/CD/dsb, atau sampai komputer memaksa untuk menukar tugas yang sedang berjalan dengan tugas lainnya. Sistem operasi yang yang menggunakan multi-program sebagai scheduler-nya bertujuan untuk memaksimalkan penggunaan CPU.

Multiprocessing
Multiprocessing adalah istilah teknologi informasi dalam bahasa Inggris yang merujuk kepada kemampuan pemrosesan komputer yang dilakukan secara serentak. Hal ini dimungkinkan dengan menggunakan dua CPU atau lebih dalam sebuah sistem komputer. Istilah ini juga dapat merujuk kepada dukungan sebuah sistem untuk mendukung lebih dari satu prosesor dan mengalokasikan tugas kepada prosesor-prosesor tersebut.

Jenis jenis System Operasi
1. Sistem Operasi Real-time
Sistem Operasi Real-time adalah sebuah sistem operasi multitasking yang bertujuan mengeksekusi aplikasi secara real-time. Real-time Operating System sering menggunakan algoritma penjadwalan khusus, sehingga mereka bisa mencapai sifat deterministik perilaku. Tujuan utama dari sistem operasi ini adalah memberikan respon cepat dan real-time, serta prediksi suatu event. Ia juga didesain dengan event-driven atau time-sharing one. Sebuah sistem switch event antara tugas-tugas yang berdasarkan prioritas, sementara sistem operasi time-sharing akan beralih tugas berdasarkan jam interupsi.
Windows CE , OS - 9 , Symbian dan LynxOS adalah beberapa yang dikenal sebagai sistem operasi real-time .

2. Sistem Operasi Multi-user dan Single-user
Sistem Operasi Multi-user dan Single-user sistem operasi komputer jenis ini akan memungkinkan beberapa pengguna untuk mengakses sistem komputer secara bersamaan. Sistem time sharing dapat diklasifikasikan sebagai sistem multi-user, karena mereka memungkinkan akses beberapa pengguna ke komputer melalui berbagi waktu. Sistem operasi single-user, adalah sebagai lawan dari sistem operasi multi-user, yang dapat digunakan oleh satu pengguna pada satu waktu. Pada OS windows mampu memiliki beberapa account, namun tidak membuat sistem multi-user. Sebaliknya, hanya administrator jaringanlah pengguna yang sebenarnya. Tapi untuk sistem operasi yang mirip Unix, adalah mungkin untuk dua pengguna untuk login pada satu waktu, dan kemampuan OS ini yang membuatnya menjadi sistem operasi multi-user.

Windows 95, Windows 2000 , Mac OS , dan Palm OS adalah contoh dari sistem operasi single-user. Unix dan OpenVMS adalah contoh dari sistem operasi multi-user.

3. Sistem operasi Multi-tasking dan Single-tasking
Sistem operasi Multi-tasking  dan Single-tasking ketika sebuah program tunggal yang diperbolehkan untuk berjalan pada satu waktu, sistem ini dikelompokkan di bawah kategori sistem single- tasking, sedangkan dalam kasus sistem operasi yang memungkinkan untuk pelaksanaan beberapa tugas pada satu waktu, ini diklasifikasikan sebagai sistem operasi multi - tasking. Multi-tasking masih ada dua jenis yaitu, pre-emptive atau co-operative. Pre-emptive multitasking OS memotong waktu CPU, dan mendedikasikan satu slot untuk masing-masing program. Unix - sistem operasi seperti Solaris dan Linux, yang  mendukung pre-emptive multitasking. Jika Anda mengerti terminologi multi-threading, Anda dapat mempertimbangkan jenis multi-tasking yang mirip dengan multi-threading. Co-operative multitasking dicapai dengan mengandalkan setiap proses untuk memberikan waktu kepada proses lain, dengan cara yang sudah ditetapkan. Ini adalah jenis multi-tasking yang mirip dengan gagasan blok multi-threading, di mana satu thread berjalan hingga diblok oleh beberapa even lainnya. MS Windows (sebelum Windows 95) digunakan untuk mendukung multitasking co-operative.

Palm OS untuk Palm handheld adalah Multi-tasking and Single-tasking Operating Systems. Windows 9x mendukung multi- tasking. DOS Plus adalah sistem operasi multi - tasking yang relatif kurang dikenal.

4. Distributed Operating System
Distributed Operating System adalah sistem operasi yang mengelola sekelompok komputer independen, dan membuat merekaseolah hanya sebuah komputer, dikenal sebagai sistem operasi terdistribusi. Perkembangan jaringan komputer yang dapat dihubungkan, dan dibuat untuk berkomunikasi satu sama lain yang memunculkan ide komputasi terdistribusi. Perhitungan terdistribusi dilakukan oleh lebih dari satu mesin. Ketika komputer dalam suatu kelompok kerja  sama, maka mereka akan membuat sistem terdistribusi .

Amoeba, Plan9 dan LOCUS ( yang dikembangkan antara tahun 1980-an ) adalah beberapa contoh Distributed Operating System.

5. Embedded System
Embedded System adalah Sistem operasi yang dirancang untuk digunakan dalam sistem komputer embedded, atau yang dikenal sebagai Embedded System. Ini dirancang untuk beroperasi pada perangkat kecil seperti PDA yang dengan otonomi kurang. System ini mampu beroperasi dengan jumlah sumber daya yang terbatas. Sangat compact, serta dengan desain yang sangat efisien.
Windows CE , FreeBSD dan Minix 3 adalah beberapa contoh Embedded System. Penggunaan Linux dengan sistem komputer embedded disebut sebagai  Embedded Linux .

6. Mobile Operating System/OS Mobile
Mobile Operating System/OS Mobile Meskipun ini bukanlah  tipe yang berbeda fungsional dari sebuah sistem operasi, OS mobile juga termasuk penting untuk dimasukkan kedalam daftar jenis sistem operasi ini. OS mobile berfungsi untuk mengontrol perangkat mobile, yang memiliki desain yang mendukung untuk komunikasi nirkabel dan aplikasi mobile. Ia juga built- in dalam mendukung format multimedia pada perangkat mobile. Tablet PC dan smartphone adalah contoh perangkat yang dijalankan dengan sistem operasi mobile .

Blackberry OS , Google Android dan Apple iOS adalah beberapa nama OS Mobile yang paling dikenal .

7. Batch Processing dan Interactive Systems
Batch Processing dan Interactive Systems Batch processing mengacu pada pelaksanaan program komputer dalam ' batch ' tanpa intervensi manual. Dalam sistem batch processing, program dikumpulkan, dikelompokkan dan diproses di kemudian hari. Tidak ada input data oleh user, sebagai input data dikumpulkan terlebih dahulu untuk proses selanjutnya. Input data dikumpulkan dan diproses dalam batch, maka dinamakan batch processing. IBM z / OS memiliki kemampuan pemrosesan batch. Sistem yang berlawanan dengan ini, operasi interaktif membutuhkan intervensi oleh pengguna , dan tidak dapat dijalankan tanpa pengguna.

8. Online dan Offline Processing
Online dan Offline Processing Dalam pengolahan data online, pengguna tetap berhubungan dengan komputer, dan proses dijalankan di bawah kendali central processing unit (CPU) komputer. Bila proses tidak dieksekusi di bawah kontrol langsung dari CPU, maka pengolahan ini disebut dengan offline. Mari kita ambil contoh batch processing. Di sini, batching atau pengelompokan data dapat dilakukan tanpa melibatkan pengguna dan intervensi oleh CPU, dan bisa dilakukan secara offline. Namun pelaksanaan proses yang sebenarnya mungkin terjadi di bawah kontrol prosesor langsung (yang online).

Sistem operasi juga membantu untuk menyederhanakan interaksi manusia dengan perangkat keras komputer, bertanggung jawab untuk menghubungkan antara program aplikasi dengan perangkat keras, sehingga pengguna dapat mencapai akses komputasi dengan mudah. Tanpa OS, komputer tak akan ada gunanya, atau paling tidak akan sulit untuk dioperasikan oleh kebanyakan orang.</div>

- Sistem Operasi Komputer PC
Berikut Jenis-Jenis Sistem Operasi pada Komputer Pc
1. DOS
2. Unix
3. Linux
4. Windows
5. Mac OS
6. Ubuntu

- Sistem Operasi Hadphone, dll
Sedagkan untuk Jenis Sistem Operasi pada Handphone, dll adalah Sbb:
1. Symbian
2. Windows Mobile
3. Mobile Linux
4. OS BlackBerry
5. Palm
6. Java
7. Android

2. Critical Section


Critical Section adalah bagian dari suatu proses yang akan melakukan akses dan manipulasi data
ketika sebuah proses sedang dijalankan dalam critical section nya, tidak ada proses lain yang boleh dijalankan dalam critical section tersebut, karena akan menyebabkan keadaan mutually exclusive.

Mutually exclusive yakni keadaan terjadinya akses resources yang sama di saat yang bersamaan mutually exclusive memerlukan kondisi tertentu agar dapat terpenuhi.

Critical section biasanya digunakan saat program multithreading, dimana program tersebut terdiri dari banyak thread, akan mengubah nilai dari variabel. Dalam hal ini critical sectiondiperlukan untuk melindungi variabel dari concurrent access (pengaksesan program di saat yang bersamaan) yang dapat membuat nilai dari variabel tersebut menjadi tidak konsisten.

Seperti yang telah kita ketahui bahwa proses dapat bekerja sendiri (independent process) dan juga dapat bekerja bersama proses-proses yang lain (cooperating process). Pada umumnya ketika proses saling bekerjasama (cooperating process) maka proses-proses tersebut akan saling berbagi data. Pada saat proses-proses berbagi data, ada kemungkinan bahwa data yang dibagi secara bersama itu akan menjadi tidak konsisten dikarenakan adanya kemungkinan proses-proses tersebut melakukan akses secara bersamaan yang menyebabkan data tersebut berubah, hal ini dikenal dengan istilah Race Condition.

Dibutuhkan solusi yang tepat untuk menghindari munculnya Race Condition. Solusi tersebut harus memenuhi ketiga syarat berikut:
- Mutual Exclusion
- Progress
- Bounded Waiting

Ada dua jenis solusi untuk memecahkan masalah critical section, yaitu.
Solusi Perangkat Lunak
Solusi ini menggunakan algoritma-algoritma untuk mengatasi masalah critical section.
Solusi Perangkat Keras
Solusi ini tergantung pada beberapa instruksi mesin tertentu, misalnya dengan me-non-aktifkan interupsi, mengunci suatu variabel tertentu atau menggunakan instruksi level mesin seperti tes dan set.

Berikut ini algoritma-algoritma yang digunakan untuk mengatasi masalah critical section:
1. Algoritma I
Algoritma I memberikan giliran kepada setiap proses untuk memproses critical section-nya secara bergantian.
Asumsi yang digunakan disini setiap proses secara bergantian memasuki critical section-nya.

Statement while(turn != 4) akan memeriksa apakah pada saat itu proses 4 mendapatkan turn, jika tidak maka proses 4 akan busy waiting(lihat kembali bahwa printah while diakhiri dengan “;”). Jika ternyata pada saat itu merupakan giliran proses 4 maka proses 4 akan mengerjakan critical section-nya. Sampai sini jelas terlihat bahwa mutex terpenuhi! Proses yang tidak mendapatkan turn tidak akan dapat mengerjakan critical section-nya dan turn hanya akan diberikan pada satu proses saja.

Setelah proses 4 selesai mengerjakan critical section maka turn diberikan pada proses lainnya (turn= j, j merupakan proses selanjutnya yang dapat mengerjakan critical section). Setelah turn-nya diberikan kepada proses lain, proses 4 akan mengerjakan remainder section. Disini jelas terlihat bahwa syarat bounded waiting jelas terpenuhi. Ingat asumsi yang digunakan dalam algoritma ini adalah setiap proses secar bergantian memasuki critical section-nya, jika pada saat itu proses 4 ternyata belum mau mengerjakan critical section-nya maka proses ke-j tidak akan mendapatkan kesempatan untuk mengerjakan critical section walau saat itu sebenarnya proses ke-j akan memasuki critical section. Artinya syarat progress tidak terpenuhi pada algoritma ini.

Pada semua contoh, i adalah proses yang sedang berjalan, j adalah proses yang lain. Pada contoh ini code.

                          i. Shared variables
                             • int turn
                                      Initially turn=0


                             • turn = i, Pi can enter its critical section


                         ii. Process Pi


                                   do {
                                         while(turn!=1);
                                         critical section
                                         turn=j;
                                         remainder section
                                   } while(1);


2. Algoritma II
Masalah yang terjadi pada algoritma 1 ialah ketika di entry section terdapat sebuah proses yang ingin masuk ke critical section, sementara di critical section sendiri tidak ada proses yang sedang berjalan, tetapi proses yang ada di entry section tadi tidak bisa masuk ke critical section. Hal ini terjadi karena giliran untuk memasuki critical section adalah giliran proses yg lain sementara proses tersebut masih berada di remainder section. Untuk mengatasi masalah ini maka dapat diatasi dengan merubah variabel trun pada algoritma pertama dengan array

Boolean flag [2];

Elemen array diinisialisasi false. Jika flag[i] true, nilai tersebut menandakan bahwa Pi ready untuk memasuki critical section. Pada algoritma ini. hal pertama yang dilakukan ialah mengeset proses Pi dengan nilai True, ini menandakan bahwa Pi ready untuk masuk ke critical section. kemudian, Pi memeriksa apakah Pj

tidak ready untuk memasukui critical section. Jika Pj ready, maka Pi menunggu sampai Pj keluar dari critical section (flag[j] bernilai false). Ketika keluar dari critcal section, Pi harus merubah nilai flag[i] menjadi false agar prores lain dapat memasuki critical section.

Contoh:
Pada algoritma ini, kriteria Mutual-exclusion terpenuhi, tetapi tidak memenuhi kriteria progress. Ilustrasinya seperti di bawah ini.

T0 : Po set flag [0] = true
T1 : Po set flag [1] = true

Dari ilustrasi diatas terlihat bahwa algoritma ini memungkinkan terjadinya nilai true untuk kedua proses, akibatnya tidak ada proses yang akan berhasil memasuki critical section.
Jadi untuk algoritma 2 masih terdapat kelemahan, seperti yang terjadi di atas.

Setiap proses memantau suatu flag yang mengindikasikan ia ingin memasuki critical section. Dia memeriksa flag poses lain dan tidak akan memasuki critical section bila ada proses lain yang sedang masuk.

Contoh :
                            i. Shared variables
                                 • boolean flag[2];
                                              initially flag [0] = flag [1] = false


                                • flag [i] = true , Pi ready to enter its critical section


                           ii. Process Pi


                                          do {
                                               flag[i]:=true;
                                               while(turn!=1);
                                               critical section
                                               turn=j;
                                               remainder section
                                       } while(1);


3. Algoritma III
Idenya berasal dari algoritma 1 dan 2. Algoritma 3 mengatasi kelemahan pada algoritma 1 dan 2 sehingga progres yang diperlukan untuk mengatasi critical section terpenuhi.

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 variabel flag. 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 ke critical section atau 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 mengubah flag-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 section dan mengubah flag-nya menjadi false.

Misalkan ketika P0 membutuhkan critical section, maka P0 akan mengubah flag[0] = true, lalu P0 mengubah turn= 1. 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] = truedan flag[1] = true), dalam kondisi ini P0 dapat mengubah turn = 1 dan P1 juga dapat mengubah turn = 0. Proses yang dapat mengakses critical section terlebih 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 waitingyang tidak dipenuhi pada Algoritma I dan II dapat dipenuhi oleh algoritma ini karena ketika ada proses yang ingin mengakses critical section dan tidak ada yang menggunakan critical sectionmaka dapat dipastikan ada proses yang bisa menggunakan critical section, dan proses tidak perlu menunggu selamanya untuk dapat masuk ke critical section.
Contoh :

FLAG untuk meminta izin masuk:
- Setiap proses mengeset sebuah flag untuk meminta izin masuk. Lalu setiap proses mentoggle bit untuk mengizinkan yang lain untuk yang pertama
- Kode ini dijalankan untuk setiap proses i

Contoh :
                       Shared variables
                       F boolean flag[2];
                       initially flag[0] = flag[1] = false
                       F flag[i] = true;





Pi ready to enter its critical section
- Gabungan shared variables dari algorima 1 dan 2
- Process Pi

                        do {
                              flag[i]:=true;
                              turn = j;
                              while(flag[j] and turn = j);
                              critical section
                              flag[i] = false;
                              remainder section
                        } while(1);

-Memenuhi ketiga persyaratan, memecahkan persoalan critical section untuk kedua proses

4. Algoritma Tukang Roti
Algoritma ini didasarkan pada algoritma penjadwalan yang biasanya digunakan oleh tukang roti, dimana 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

Dengan demikian, diketahui bahwa 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 section pada dua proses adalah Algoritma III. Sedangkan untuk masalah critical section pada n-buah proses dapat diselesaikan dengan menggunakan Algoritma Tukang Roti.

Contoh :
Critical Section untuk n buah proses:
Sebelum memasukkan proses ke critical section, proses menerima sebuah nomor. Pemegang nomor terkecil masuk ke critical section. Jika ada dua proses atau lebih menerima nomor sama, maka proses dengan indeks terkecil yang dilayani terlebih dahulu untuk masuk ke critical section. Skema penomoran selalu naik secara berurut contoh: 1, 2, 3, 3, 3, 3, 4, 5,...

                           boolean choosing [n];
                           long long long int number [n];
                           /* 64 bit maybe okay for about 600 years */
                           Array structure elements are initiallized to false and 0 respectively
                           while (true) {
                                       choosing[i] = true;
                                       number[i] = max(number[0], ... [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))) {}
                                       }
                                        number[i] = 0
                           }
                            Solves the critical-section problem
                            for n process

3. Process Control Block


PROCESS CONTROL BLOCK (PCB) adalah struktur data yang dipakai oleh OS untuk mengelola proses.Hampir semua OS yang modern telah memuat PCB(Process Control Block) namun strukturnya berbeda-beda pada setiap OS tersebut.PCB juga memuat informasi tentang proses, 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. Sebuah PCB ditunjukkan dalam gambar berikut.

PCB dibagi 3 kelompok yaitu :
Process identification data
Process identification data selalu menyertakan sebuah identifier unik untuk prosesnya (hampir selalu bernilai integer) dan, dalam sebuah sistem multiuser-multitasking, data seperti identifier proses induk, identifier pengguna, identifier grup pengguna, dll. Proses ini sangan relevan, karena itu sering digunakan untuk referensi silang tabel OS, misalnya memungkinkan untuk mengidentifikasi proses yang menggunakan device I/O, atau daerah memori.

Processor state data
Processor state data adalah potongan-potongan informasi yang mendefinisikan status dari suatu proses ketika proses itu ditangguhkan, yang memungkinkan OS untuk melakukan restart proses nantinya dan masih dapat mengeksekusinya dengan benar. Hal ini selalu menyertakan isi dari register CPU tujuan.

Process control data
Process control data digunakan oleh OS untuk mengelola proses itu sendiri.
Process Control Block adalah informasi-informasi lain yang diperlukan SO untuk mengendalikan dan koordinasi beragam proses aktif, termasuk ini:
- Keadaan proses
Keadaan mungkin, new ,ready ,running, waiting, halted, dan juga banyak lagi.

- Program counter
Counter mengindikasikan address dari perintah selanjutnya untuk dijalankan untuk ditambah code information pada kondisi apapun. Besertaan dengan program counter, keadaan/ status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya.

- Informasi manajemen memori
Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasardan batas register. tabel page/ halaman, atau tabel segmen tergantung pada sistem memori yangdigunakan oleh sistem operasi (ch 9).

- Informasi pencatatan
Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan bataswaktu, jumlah akun, jumlah job atau proses, dan banyak lagi.
Informasi status I/O:
Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini,suatu daftar open file dan banyak lagi.

- PCB
PCB hanya berfungsi sebagai tempat menyimpan/gudang untuk informasi apapun yang dapatbervariasi dari prose ke proses.proses ini.

- CPU register
Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer.Register tersebut termasuk accumulator, index register, stack pointer, general-puposes register.

Proses Control Blok



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:
1.Ready adalah status dimana proses siap untuk dieksekusi pada giliran berikutnya
2.Running adalah status dimana saat ini proses sedang dieksekusi oleh prosesor
3.Blocked adalah status dimana proses tidak dapat dijalankan pada saat prosesor siap/bebas

4. Distributed Processing


Distributed data processing (DDP) system merupakan bentuk yang sering digunakan sekarang sebagai perkembangan dari time sharing system. Bila beberapa sistem komputer yang bebas tersebar yang masing-masing dapat memproses data sendiri dan dihubungkan dengan jaringan telekomunikasi, maka istilah time sharing sudah tidak tepat lagi. DDP system dapat didefinisikan sebagai suatu sistem komputer interaktif yang terpencar secara geografis dan dihubungkan dengan jalur telekomunikasi dan seitap komputer mampu memproses data secara mandiri dan mempunyai kemampuan berhubungan dengan komputer lain dalam suatu sistem.
Contoh dari Distributed Data Processing System adalah: ATM, komputer yang dirancang untuk tugas-tugas melaksanakan proyek, analisis finansial, penjadwalan waktu dan akuntansi. Contoh lainnya, pengolahan data pada server yahoo yang tersebar hampir di seluruh dunia secara distribusi, setiap wilayah mempunyai server masing-masing. Seperti di indonesia mempunyai server tersendiri sehingga pengolahan data tidak di pusat melainkan di wilayah masing-masing, dll.

Oracle client / server arsitektur dalam lingkungan pemrosesan terdistribusi memberikan manfaat sebagai berikut

  • 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).
  • 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.
  • 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.
  • 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) .
  • Dalam lingkungan jaringan, Anda dapat menggunakan workstation klien murah untuk mengakses data remote dari server efektif.
  • 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.
  • 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.
  • 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.


Distributed data processing / pemrosesan data terdistribusi
Merupakan sekumpulan peralatan pemrosesan yang saling terhubung melalui jaringan yang mengerjakan tugas-tugas tertentu.

Pemrosesan terdistribusi dapat dikelompokan berdasarkan beberapa kriteria yaitu :
  • Struktur antar hubungan
  • Kesaling tergantungan komponen-komponen.
  • Keselarasan antar komponen.

Distributed database system / system database terdistribusi
Merupakan sekumpulan database yang saling terhubung secara logical dan secara fisik terdistribusi pada berbagai tempat melalui jaringan computer.

Sistem yang mengelola database terdistribusi dan menyediakan mekanisme agar distribusi transparent adalah distributed database management system (DDBMS).

Ciri-ciri untuk system yang bukan merupakan system database terdistribusi :
  • Sistem yang berisi kumpulan file
  • Berbagai arsitektur fisik berkait dengan system multiprocessor.
Ciri sistem database distribusi
  1. Data disimpan pada sejumlah tempat. Setiap tempat secara logic terdiri dari processor tunggal.
  2. Processor pada tempat yang berbeda tersebut dihubungkan dengan jaringan computer.
  3. Bukan sekumpulan file yang berada pada berbagai tempat tetapi merupakan database pada berbagai tempat.
  4. Setiap tempat mempunyai kemampuan untuk mandiri memproses permintaan user yang membutuhkan akses kedata ditempat tersebut, dan juga mampu untuk memproses data yang tersimpan di tempat lain
Keuntungan dan Kelemahan sistem database distribusi

– Keuntungan :
  1. Pengelolaan secara transparan data terdistribusi dan replicated.
  2. Mengacu pada struktur organisasi
  3. Meningkatkan kemampuan untuk share dan otonomi local
  4. Meningkatkan ketersediaan data
  5. Meningkatkan kehandalan
  6. Meningkatkan unjuk kerja
  7. Memudahkan pengembangan system
– Kelemahan :
  1. Kompleksitas manajemen
  2. Control integritas lebih sulit
  3. Biaya pengembangan
  4. Keamanan
  5. Kurang standarisasi
  6. Menambahkan kebutuhan penyimpanan
  7. Lebih sulit dalam mengatur lingkungan data
  8. Menambah biaya pelatihan.

 5.Handheld


Sistem handheld adalah sebuah komputer yang mudah dapat disimpan di saku (dari ukuran yang cukup) dan digunakan saat Anda sedang me-megangnya. Komputer genggam saat ini, yang juga disebut personal digital assistant (PDA), dapat dibagi menjadi mereka yang menerima tulisan tangan sebagai masukan dan mereka dengan keyboard kecil. Handheld asli yang diterima tulisan tangan adalah Apple Newton, yang kemudian ditarik dari pasar. Hari ini, handheld paling populer yang menerima input tulisan tangan adalah PalmPilot dari 3Com. Philips, Casio, NEC, Compaq, dan perusahaan lain membuat handheld dengan keyboard kecil.

Windows CE dan EPOC adalah dua sistem operasi yang paling banyak digunakan dalam komputer genggam. Komputer genggam biasanya di-gunakan manajer informasi pribadi (PIM) jenis aplikasi: mempertahankan jadwal, menjaga nama dan nomor telepon, melakukan perhitungan sederhana, mencatat, dan, dengan modem, saling berkirim e-mail dan mendapatkan informasi dari Web. Keyboard memiliki kunci kecil yang mengambil membiasakan diri. Mereka yang menangani tulisan tangan juga memberlakukan kendala dan me-merlukan beberapa pembelajaran. Namun demikian, kelas ini komputer banyak dijual dan dihargai oleh banyak pengguna.

a) PDA (Personal Digital Assistants)

Personal Digital Assistants disingkat PDA adalah sebuah alat elektronik yang berbasis komputer dan berbentuk kecil serta dapat dibawa kemana-mana. PDA banyak digunakan sebagai pengorganisir pribadi pada awalnya, tetapi karena perkembangannya, kemudian ber-tambah banyak fungsi kegunaannya, seperti kalkulator, penunjuk jam dan waktu, permainan komputer, pengakses internet, penerima dan pengirim surat elektronik (e-mail), penerima radio, perekam video, dan pencatat memo. Selain dari itu dengan PDA (komputer saku) ini, kita dapat menggunakan buku alamat dan menyimpan alamat, membaca buku-e, menggunakan GPS dan masih banyak lagi fungsi yang lain. Bahkan versi PDA yang lebih canggih dapat digunakan sebagai telepon genggam, akses internet, intranet, atau extranet lewat Wi-Fi atau Jaringan Wireless. Salah satu ciri khas PDA yang paling utama adalah fasilitas layar sentuh.

b) Symbian OS 
Symbian bisa dibilang sebagai sistem operasi paling populer di dunia mengingat jumlah peng-gunanya mencapai lebih dari 50% dari pengguna smartphone. Sistem operasi ini dikembangkan oleh Symbian, Ltd.–yang merupakan kolaborasi vendor ponsel Ericsson, Nokia, Motorola, dan Psion–dan memang dikhususkan sebagai mobile operating system. Sistem operasi ini ditulis dengan bahasa C++. Awalnya sistem operasi ini merupakan OS yang close source, namun dalam perkembangannya, sistem operasi ini berubah menjadi open source dan memungkinkan banyak pihak untuk mengembangkan aplikasi yang bisa dioperasikan di ponsel ber-OS symbian. Versi stabil terbaru dari Symbian OS adalah Symbian OS 9.5 dan versi tak-stabil terbarunya adalah Symbian^2 platform / Q3 yang dirilis pada tahun 2009.
Dalam perkembangannya Symbian OS memiliki beberapa versi, yaitu :
• Symbian OS 6.0 dan 6.1. contohnya adalah Nokia 9210 Communicator.
• Symbian OS 7.0 dan 7.0s. Pada versi ini muncul berbagai versi user interface seperti UIQ (Sony Ericsson P800, P900, P910, Motorola A925), Series 60 (Nokia 7650, 3230, 6260, 6600, 6670, 7610, N-Gage, N-Gage QD), Series 80 (Nokia 9210, 9300, 9500), series 90 (Nokia 7710), dan MOAP–Mobile Oriented Application Platform (Contohnya ponsel NTT DoComo). Symbian OS 7.0s adalah versi 7.0 yang diadaptasi agar memiliki kompatibilitas yang lebih baik dengan versi 6.x.
• Symbian OS 8.0 dan 8.1. Contohnya adalah Nokia N91.
• Symbian OS 9. Digunakan untuk keperluan internal Symbian.
• Symbian OS 9.1. Termasuk ponsel Nokia seri S60 3rd edition dan beberapa tipe Sony Ericsson seperti M600 dan P990.
• Symbian OS 9.2. Contohnya Nokia E90, Nokia N95, Nokia N82, dan Nokia 5700.
• Symbian OS 9.3. Misalnya Nokia E72, E75, E79, dan N96.
• Symbian OS 9.4. Contohnya Samsung OMNIA HD, Nokia N97, Nokia 5800 XpressMusic, Sony Ericsson Satio, dan ponsel S60 5th edition lainnya..
Sistem operasi Symbian juga rentan terhadap ancaman sekuriti berupa virus. Contoh virus yang sering menyerang ponsel ber-OS Symbian adalah Cabir, yang me-ngirimkan dirinya dari ponsel ke ponsel lain via bluetooth.

c) Windows Mobile 
Windows mobile adalah versi mobile dari sistem operasi PC paling populer, Windows, keluaran Microsoft. Sistem operasi ini didesain khusus agar bisa berjalan pada smartphone dan perangkat mobile. Sistem operasi yang awalnya dirilis dengan nama Pocket PC 2000 ini hampir semuanya dilengkapi stylus pen yang digunakan sebagai ‘mouse’ pada layar ponsel. OS ini sudah berkali-kali di-update versinya dengan versi terbarunya saat ini adalah Windows Mobile 6.5 yang dirilis 5 Oktober 2009. Ke depannya akan dirilis Windows Mobile 7.0 yang akan keluar sekitar pertengahan 2010. User interface dari perangkat Windows Mobile menyerupai Windows pada PC, namun sayangnya, seperti halnya Windows pada PC, sistem operasi ini bersifat close source sehingga agak menyulitkan pihak ketiga untuk menyediakan aplikasi yang mendukung.
Versi-versi yang telah dirilis meliputi:
• Pocket PC 2000
• Pocket PC 2002
• Windows Mobile 2003 yang memiliki 4 edisi, yaitu : Windows Mobile 2003 for Pocket PC Premium Edition, Windows Mobile 2003 for Pocket PC Professional Edition, Windows Mobile 2003 for Smartphone, dan Windows Mobile 2003 for Pocket PC Phone Edition.
• Windows Mobile 2003 Second Edition (Windows Mobile 2003 SE).
• Windows Mobile 5
• Windows Mobile 6 yang memiliki 3 versi, yaitu : Windows Mobile 6 Standard for Smartphone (phone without touchscreen), Windows Mobile 6 Professional for Pocket PC with phone functionality, dan Windows Mobile 6 Classic for Pocket PCs without cellular radio.
Contoh dari perangkat yang memiliki sistem operasi ini antara lain Audiovox SMT 5600, iMate SP3i, Samsung SCH-i600, Mio 8390, Sagem myS-7, Orange SPV C500, HP iPAQ rw6100, Motorola MPx220, O2 Xphone, dan O2 Xphone II. UPDATE 08-02-2011: Saat ini versi terbaru dari Windows Mobile adalah Windows Phone 7.

d) Palm OS 
Palm OS adalah sistem operasi mobile yang dikembangkan oleh Palm, Inc. yang awalnya dikhususkan sebagai sistem operasi untuk PDA. Namun dalam perkembangannya, Palm OS juga dibuat untuk smartphone. Sistem operasi ini didesain untuk kemudahan penggunaan dengan GUI (Graphical User Interface) berbasis touchscreen. Sistem operasi ini ditulis dengan bahasa pemrograman C/C++ dan bersifat close source. Contoh perangkat yang meng-gunakan sistem operasi Palm adalah Palm Treo 680. Smartphone ini menggunakan system operasi Palm OS 5.4.9. Beberapa fitur yang ditawarkan adalah Pocket Express, Microsoft Media Player, Palm files, PDF viewer, Adobe Acrobat reader, eReader, Pocket Tunes, dan Document To Go.

e) Android 
Android adalah sistem operasi mobile yang berjalan pada kernel Linux, yang dirilis pada 21 Oktober 2008. Awalnya, sistem operasi ini dikembangkan oleh Android, Inc, yang kemudian dibeli oleh Google, dan yang terakhir, sistem operasi ini dibeli oleh Open Handset Alliance, sebuah consortium dari 47 perusahaan hardware, software, dan telecom (termasuk Google) yang didirikan untuk membuat open standard bagi perangkat lunak mobile. Sistem operasi ini bersifat free dan open source. Perangkat mobile yang mendukung sistem operasi ini di antaranya adalah HTC Dream dan HTC Magic, ponsel keluaran vendor asal Taiwan, HTC.

f) Blackberry OS 
Blackberry OS adalah sistem operasi mobile yang dikembangkan oleh perusahaan Kanada, Research in Motion (RIM) yang dibuat untuk handheld andalan mereka dengan nama yang sama. Sistem operasi ini ditulis dalam bahasa Java dan bersifat Close Source. Versi stabil terakhir yang dikeluarkan adalah versi 5.0.0.419 (Blackberry Storm 9530). Perangkat yang menggunakan Blackberry OS sebagai sistem operasi tentu saja adalah semua varian Blackberry seperti Blackberry Bold, Storm, Curve, Pearl, dan Tour.

g) Iphone OS (iOS). 
iPhone OS adalah sistem operasi mobile yang dikembangkan oleh Apple, Inc. yang dibuat untuk produk mereka yaitu iPhone dan iPod Touch. Sistem operasi ini termasuk dalam keluarga Mac OS X / Unix-like operating system. Walaupun sistem operasinya bersifat close source, namun komponennya bersifat open source sehingga memudahkan pihak ketiga untuk mengembangkan aplikasi-aplikasi yang bisa berjalan pada sistem operasi ini.
User interface pada sistem operasi ini menggunakan konsep manipulasi langsung pada layar handheld dengan menggunakan multi-touch gesture. Kontrol pada interfacenya meliputi slider, swith, dan tombol. Aplikasi-aplikasi yang disertakan dalam sistem operasi ini meliputi Messaging, Calendar, Photos, Camera, Youtube, Google Maps, iPhone, Safari, dan beberapa aplikasi standar lainnya.

6. Thread


  • 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-Threadingadalah proses dengan thread yang banyak dan mengerjakan lebih dari satu tugas dalam satu waktu.



Keuntungan Multi-Threading
  • 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.
  • 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.
  • 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.
  • 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
  • Multiple thread bisa mengganggu satu sama lain saat berbagi hardware resource, misalnya chace memory.
  • 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.
  • Harus ada dukungan dari hardware ataupun software untuk melakukan multi-Threading.

Model-Model Threading
  • 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.
User-level threading
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
  • Sistem operasi telah mendukung proses multithreading.
  • Setiap sistem operasi memiliki konsep tersendiri dalam pengimplementasiannya.
  • Sistem operasi dapat mendukung thread pada tingkatan kernel maupun tingkatan pengguna.

Model Multi-Threading

Many-to-One

  • Memetakan beberapa thread tingkatan pengguna
  • ke sebuah thread tingkatan kernel.
  • Pengaturan thread dilakukan dalam ruang
  • pengguna, sehingga efisien.
  • Hanya satu thread pengguna yang dapat
  • mengakses thread kernel pada satu saat.
One-to-One

  • Memetakan setiap thread tingkatan pengguna ke thread kernel.
  • Model ini menyediakan lebih banyak concurrency dibandingkan model Many-to-One.
  • D3 KomSI UGM Sistem Operasi

Many-to-Many

  • Mengelompokkan banyak thread pengguna untuk dipetakan ke thread kernel yang
  • jumlahnya lebih sedikit atau sama dengan tingkatan pengguna.
  • Mengijinkan sistem operasi untuk membuat sejumlah thread kernel.

Cancellation
Thread cancellation ialah pemberhentian thread sebelum tugasnya selesai. Umpama, 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 biasa disebut target thread.Pemberhentian target thread dapat terjadi melalui dua cara yang berbeda:Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread.

Defered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.

Alternatifnya adalah dengan menggunakan deffered cancellation. Cara kerja dari deffered cancellation adalah dengan menggunakan satu thread yang berfungsi sebagai pengindikasi bahwa target thread hendak diberhentikan. Tetapi pemberhentian hanya akan terjadi jika target thread memeriksa apakah ia harus berhenti atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia dapat diberhentikan secara aman yang aman. Pthread merujuk tersebut sebagai cancellation points.

Threads 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.
Keuntungan thread pool
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 pentingpada sistem yang tidak dapat mendukung banyak thread yang berjalan secara concurrent.


THREAD PADA ANDROID
Dengan semakin umumnya penggunaan chip multicore pada smartphone, penggunaan thread yang memungkinkan beberapa task berjalan secara paralel semakin penting untuk meningkatkan kinerja app. Multicore sudah disupport Android sejak versi HoneyComb (3.0). Selain itu, app Android yang terlalu lama berproses dan membuat user interface “hang” akan terkena error ANR (Application Not Responding). Thread dapat digunakan untuk mengatasi ini dengan memindahkan aktivitas yang lama pada thread yang terpisah.

Pada Android, yang dasarnya adalah Linux, setiap app yang dijalankan berada di proses yang terpisah. Satu proses kemudian dapat memiliki satu atau lebih thread. Thread-thread di dalam proses yang sama berbagi memory, walaupun setiap thread punya register dan stack sendiri. Proses independen satu sama lain, sedangkan thread-thread pada proses yang sama saling terkait (gambar bawah).

Kenapa menggunakan thread? karena untuk men-create proses mahal dari sisi resources dibandingkan thread dan komunikasi antar thread lebih mudah dibandingkan antar proses. Kasus yang menarik di desktop adalah browser Chrome vs Firefox. Setiap tab pada Chrome menggunakan proses yang berbeda, sedangkan Firefox menggunakan thread yang berbeda untuk setiap tab. Coba lihat task manager saat membuka banyak tab di Chrome, akan banyak proses bernama Chrome.exe. Pembuat Chrome beralasan dengan arsitektur seperti ini, jika salah satu tab “hang” maka tidak akan mempengaruhi tab yang lain. Tapi efek sampingnya, Chrome membutuhkan lebih banyak memori dibandingkan Firefox. Firefox sebenarnya juga menggunakan multi proses, tapi hanya untuk plugin, karena plugin sering menjadi sumber masalah.

Terlepas dari keunggulannya, penggunaan multithread atau multiproses juga dapat menimbulkan masalah, misalnya sinkronisasi, deadlock, race condition dan starvation (dipelajari di kuliah sistem operasi). Program juga lebih sulit didebug dan kadang malah kinerjanya lebih jelek. Walaupun Java dan Android telah menyediakan berbagai library untuk memudahkan pembuatan program multithreading, tetap saja ini bukan hal yang mudah.

Kembali ke Android, saat setiap app dijalankan maka app tersebut memiliki thread utama yang disebut main thread atau UI thread. UI thread ini mengatur tampilan, menerima event dan sebagainya. Aturan yang harus dipegang adalah:
  1. Jangan memblok UI thread.Misalnya saat user menekan tombol, maka app menjalankan program yang loop sejuta kali sehingga membuat user interface macet. Ini akan berakibat muncul error ANR (App Not Responding). Resources pada smartphone jauh lebih terbatas daripada PC/laptop, sehingga aturan ini lebih ketat. 
  2. Jangan mengakses komponen UI di luar UI thread. Misalnya ada thread kedua dan thread ini mengakses TextView, Button dsb. Ini dapat menyebabkan error yang tidak terduga. Ini akan lebih jelas pada tutorial berikutnya.

No comments:

Post a Comment