MULTITASKING,
KONKURENSI, DAN THREAD
1. MULTITASKING
Multitasking
adalah sebuah metode dimana banyak pekerjaan (proses) diolah dengan menggunakan
sumber daya CPU yang sama dalam waktu yang hampir bersamaan. Dalam kasus sebuah
computer dengan prosesor tunggal, hanya satu in instruksi yang dapat bekerja
dalam satu waktu, berarti bahwa CPU tersebut secara aktif mengolah instruksi
untuk satu pekerjaan tersebut.
Multitasking memecahkan masalah ini
dengan menjadwalkan pekerjaan mana yang dapat berjalan dalam satu waktu, dan
kapan pekerjaan yang lain menunggu untuk diolah dapat dikerjakan. Kondisi
mengalokasikan CPU dari pekerjaan satu ke pekerjaan yang lain disebut context switch. Ketika
context switch terjadi dengan sangat cepat, kondisi ini cukup memberikan ilusi
pengolahan-paralel. Bahkan dalam
komputer yang memiliki lebih dari satu CPU (multi-processor)
multitasking memperbolehkan lebih banyak pekerjaan dijalankan dibanding dengan
jumlah CPU yang tersedia.
Sistem operasi komputer dapat juga mengadopsi berbagai macam
strategi penjadwalan, yang secara garis besar dapat dikategorikan sebagai
berikut:
·
Dalam system multi-program, pekerjaan yang sedang diolah terus
berjalan hingga membutuhkan suatu operasi yang memerlukan interaksi dari luar.
Siatem multi-program didesain untuk memaksimalkan penggunaan CPU.
·
Dalam system time-sharing, pekerjaan yang sedang diolah
diharuskan melepaskan kerja CPU, baik secara sukarela atau dari interaksi luar,
seperti interupsi-perangkat-keras. Sistem time-sharing didesain untuk
memperbolehkan beberapa program seolah diproses secara bersamaan.
·
Dalam system real-time, beberapa program ang sedang menunggu
dijamin untuk mendapatkan pengolahan dari CPU ketika interaksi luar terjadi.
Sistem real-time didesain untuk melakukan control mekanik seperti robot-robot
industry, yang memerlukan ketepatan pemrosesan.
Saat 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.
Banyak proses dijalankan hampir bersamaan, masing-masing proses
mendapat bagian memori dan kendali tersendiri. Program yang dijalankan bersifat
:
1.
Tidak
bergantung (Independent)
proses terpisah satu dari lainnya & tidak berpengaruh.
2.
Satu
program pada satu saat (one program at any instant), pada satu waktu hanya satu
proses yang dilayani pemroses, menggunakan interleave bukan overlap
diantara program-program.
Keuntungasn
system ini adalah:
·
Suatu perintah dapat dilaksanakan secara tuntas sampai
berakhir dengan prioritas tertinggi.
·
Mampu memproses lebih dari satu perintah
dalam waktu yang bersamaan.hal ini dapat terjadi karena kemampuan membagi sumber
daya yang tersedia. Jika suatu perintah datang membutuhkan sumber daya media
simpan menyelesaikan perintah/pekerjaan yang telah ditentukan, apabila datang
perintah lain yang membutuhkan sumber daya memori misalnnya, perintah tersebut
dapat langsung dikerjakan tanpa menunggu perintah sebelumnya selesai dierjakan.
Kelemahan dari sistem ini adalah jika
terdapat banyak perintah, maka akan terjadi antian perintah yang cukup panjang.
Pengguna harus menunggu perintah selesai dilaksanakan untuk memasukkan perintah
selanjutnya.
Manfaat metode ini akan terasa ketika
banyak terdapat perintah yang menggunakan sumber daya yang berbeda, sehingga
rangkaina perintah dapat diselesaikan dengan lebih cepat.
2. KONKURENSI
Konkurensi adalah proses-proses
(lebih dari satu proses) yang terjadi pada saat bersamaan. Konkurensi merupakan
landasan umum perancangan sistem operasi. Proses-proses disebut konkuren jika
proses-proses berada pada saat yang sama. Pada proses-proses konkuren yang berinteraksi
mempunyai beberapa masalah yang harus diselesaikan:
a. Mutual
Exclusion
b. Sinkronisasi
c. Deadlock
d. Startvation
A. Prinsip-Prinsip Konkurensi
Konkurensi
meliputi hal-hal sebagai berikut :
• Alokasi waktu pemroses untuk proses-proses.
• Pemakaian bersama dan persaingan untuk mendapatkan sumber daya.
• Komunikasi antarproses.
• Sinkronisasi aktivitas banyak proses.
• Alokasi waktu pemroses untuk proses-proses.
• Pemakaian bersama dan persaingan untuk mendapatkan sumber daya.
• Komunikasi antarproses.
• Sinkronisasi aktivitas banyak proses.
Konkurensi
dapat muncul pada konteks berbeda, antara lain:
a. Banyak
aplikasi (multiple application).
Multiprogramming
memungkinkan banyak proses sekaligus dijalankan. Proses-proses dapat berasal
dari aplikasi-aplikasi berbeda. Pada sistem multiprogramming bisa terdapat
banyak aplikasi sekaligus yang dijalankan di sistem komputer.
b. Aplikasi
terstruktur.
Perluasan
prinsip perancangan modular dan pemrograman terstruktur adalah suatu aplikasi
dapat secara efektif diimplementasikan sebagai sekumpulan proses. Dengan
sekumpulan proses, maka tiap proses menyediakan satu layanan spesifik tertentu.
c. Struktur
sistem operasi.
Keunggulan
strukturisasi dapat juga diterapkan ke pemrograman sistem. Beberapa sistem
operasi aktual yang dipasarkan dan yang sedang dalam riset telah
diimplementasikan sebagai sekumpulan proses. Sistem operasi bermodelkan
client/server menggunakan pendekatan ini.
d. Untuk
Strukturisasi Satu Proses.
Saat ini untuk
peningkatan kinerja maka satu proses dapat memiliki banyak thread yang
independen. Thread-thread tersebut harus dapat bekerjasama untuk mencapai
tujuan proses.
B. Interaksi Antar Proses
Pada
sistem dengan banyak proses (kongkuren), terdapat 2 katagori interaksi, yaitu:
a.
Proses-proses Saling Tidak Peduli
(Independen).
Proses-proses ini tidak dimaksudkan untuk bekerja untukmencapai tujuan tertentu. Pada multiprogramming dengan proses-proses independen, dapat berupa batch atau sesi interaktif, atau campuran keduanya.
Proses-proses ini tidak dimaksudkan untuk bekerja untukmencapai tujuan tertentu. Pada multiprogramming dengan proses-proses independen, dapat berupa batch atau sesi interaktif, atau campuran keduanya.
b.
Proses-proses Saling Mempedulikan
Secara Tidak Langsung.
Proses-proses tidak perlu saling mempedulikan identitas proses-proses lain, tapi sama-sama mengakses objek tertentu, seperti buffer masukan/keluaran. Proses-proses itu perlu bekerja sama (cooperation) dalam memakai bersama objek tertentu.
Proses-proses tidak perlu saling mempedulikan identitas proses-proses lain, tapi sama-sama mengakses objek tertentu, seperti buffer masukan/keluaran. Proses-proses itu perlu bekerja sama (cooperation) dalam memakai bersama objek tertentu.
C. Kesulitan- Kesulitan yang Ditimbulkan Konkurensi
Masalah
yang dihadapi proses-proses kongkurensi pada multiprogramming dan
multiprocessing serupa, yaitu: kecepatan eksekusi proses-proses di sistem tidak
dapat diprediksi. Beberapa kemungkinan yang terjadi tidak dapat diprediksi
seperti:
a.
Kecepatan proses pada sistem tergantung
pada beberapa hal, antara lain:
· Aktivitas
proses-proses lain.
· Cara
sistem operasi menangani interupsi
· Kebijaksanaan
penjadwalan yang dilakukan oleh sistem operasi.
b.
Beberapa kesulitan yang dapat muncul, di
antaranya adalah:
· Pemakaian
bersama sumber daya global.
Jika dua proses menggunakan variabel global yang sama, serta keduanya membaca dan menulis variabel itu maka urutan terjadinya pembacaan dan penulisan terhadap variabel itu menjadi kritis.
Jika dua proses menggunakan variabel global yang sama, serta keduanya membaca dan menulis variabel itu maka urutan terjadinya pembacaan dan penulisan terhadap variabel itu menjadi kritis.
· Pengelolaan
alokasi sumber daya agar optimal
Jika proses A meminta suatu kanal masukan/keluaran tertentu dan dapat terjadi kemudian proses A di suspend sebelum menggunakan kanal itu. Jika sistem operasi mengunci kanal tersebut dan orang lain tidak dapat menggunakannya, maka akan terjadi inefisiensi.
Jika proses A meminta suatu kanal masukan/keluaran tertentu dan dapat terjadi kemudian proses A di suspend sebelum menggunakan kanal itu. Jika sistem operasi mengunci kanal tersebut dan orang lain tidak dapat menggunakannya, maka akan terjadi inefisiensi.
· Pencarian
kesalahan pemrograman.
Pencarian kesalahan pada pemrograman kongkuren lebih sulit dibanding pencarian kesalahan pada program-program sekuen.
Pencarian kesalahan pada pemrograman kongkuren lebih sulit dibanding pencarian kesalahan pada program-program sekuen.
c.
Proses-proses konkuren mengharuskan
beberapa hal yang harus ditangani, antara lain:
· Sistem
operasi harus mengetahui proses-proses yang aktif.
· Sistem
operasi harus mengalokasikan dan mendealokasikan beragam sumber daya untuk tiap
proses aktif. Sumber daya yang harus dikelola, antara lain:
i. Waktu
pemroses
ii. Memori
iii. Berkas-berkas
iv. Perangkat
I/O
· Sistem
operasi harus memproteksi data dan sumber daya fisik masing-masing proses dari
gangguan proses-proses lain.
· Hasil-hasil
proses harus independen terhadap kecepatan relatif proses-proses lain dimana
eksekusi dilakukan.
D. Pokok Penyelesaian Masalah Konkurensi
Pada
dasarnya penyelesaian masalah kongkurensi terbagi menjadi 2, yaitu:
1. Mengasumsikan
adanya memori yang digunakan bersama.
2. Tidak
mengasumsikan adanya memori yang digunakan bersama.
Adanya memori
bersama lebih memudahkan penyelesaian masalah kongkurensi. Metode memori
bersama dapat dipakai untuk singleprocessor ataupun multiprocessor yang
mempunyai memori bersama. Penyelesaian ini tidak dapat digunakan untuk
multiprocessor tanpa memori bersama atau untuk sistem tersebar.
3. THREAD
Thread adalah unit dasar dari penggunaan
CPU, yang terdiri dari thread ID, program counter, set register, dan stack.
Thread juga sering disebut Lightweight process. Thread berbagi code section,
data section, dan sumber daya sistem operasi dengan thread lain yang termasuk
dalam proses yang sama.
Keuntungan dari thread adalah :
·
Responsiveness :
Melakukan multithreading pada aplikasi yang interaktif dapat membuat
program terus berjalan meskipun bagian dari program tersebut diblok atau sedang
menjalankan operasi yang panjang, karena itu dapat meningkatkan respon kepada
user.
·
Resource
sharing : sebuah aplikasi dapat
mempunyai beberapa thread yang berbeda dalam sebuah alamat memori yang
sama karena Thread berbagi memori dan sumber daya dari proses yang
memilikinya.
·
Economy: karena mahal untuk
mengalokasikan memori dan sumber daya untuk pembuatan proses. Alternatifnya
adalah dengan penggunaan thread sebab thread berbagi sumber daya dari proses
yang memilikinya oleh sebab itu akan lebih ekonomis untuk membuat sebuah
thread.
·
Utilization
of multiproccesor architectures: keuntungan dari multithreading dapat meningkat secara drastis
dalam arsitektur multiprosesor, dimana setiap thread dapat berjalan
secara pararel pada prosesor yang berbeda.
User threads didukung diatas kernel dan
diimplementasikan oleh thread library pada level user. Library mendukung
pembuatan thread, penjadwalan, dan manajemen tanpa dukungan dari kernel. Karena
kernel tidak menyadari adanya user-level threads maka pembuatan semua
thread dan penjadwalan dilakukan di dalam user space tanpa intervensi
dari kernel. Kernel threads didukung secara langsung dari sistem operasi.
Pembuatan thread, penjadwalan, dan manajemen dilakukan oleh sistem operasi,
secara umum kernel threads lebih lambat untuk dibuat dan diatur dibanding user
thread.
Fasilitas thread adalah mekanisme yang berguna yang
diadopsi pada beberapa OS baru untuk mendukung resource sharing dan akses
konkuren. Penggunaan thread sepadan dengan penggunaan system call “fork”
dihasilkan dengan program counter baru, atau thread control dan mengeksekusinya
dalam ruang alamat yang sama. Thread bekerjasama dengan thread yang lain dalam
penggunaan bagian kode, bagian data, resource; seperti open file dan sinyal
secara kolektif yang sering disebut task.
Dengan menggunakan fasilitas thread, CPU dapat secara
ekstensif membagi di antara peer thread tanpa menggunakan manajemen memori.
Meskipun context switch pada thread masih memerlukan register set switch,
tetapi pembuatan thread lebih murah dibandingkan dengan context switch di
antara proses heavy-weight.
Beberapa sistem
mengimplementasikan “user-level threads” pada user-level library daripada
melalui system call :
·
Sehingga
switching thread tidak perlu memanggil OS dan menyebabkan interrupt ke kernel
·
Switching antara
user-level thread dapat dilakukan secara independent dari OS (dapat dilakukan
lebih cepat)
No comments:
Post a Comment