BAB 2 LANDASAN TEORI 2.1 Multithreading Pada saat

advertisement
BAB 2
LANDASAN TEORI
2.1
Multithreading
Pada saat membangun sebuah program, kita sering menemukan proses yang harus
dikerjakan dengan urutan sequencial yang memiliki pola tertentu. Meskipun masingmasing indeks didalam urutan tersebut memiliki variable yang berubah-ubah nilainya
sesuai indeks yang diwakilinya, contohnya proses perkalian matriks, penentuan nilai
deret bilangan dan deret aritmatika, pemrosesan matriks adjacency didalam teori
graph, penyusunan laporan didalam file Microsoft Excel, dan lain-lain. Pada
penerapannya, proses-proses sequencial tersebut harus diolah mulai dari indeks
pertama hingga indeks terakhir. Maka secara logika indeks yang ke n tidak akan
diproses sebelum indeks yang ke n-1 selesai diproses dan indeks yang ke n-1 juga
tidak akan diproses sebelum indeks yang ke n-2 selesai diproses. Tetapi dengan
menggunakan teknik multithreading, kita mampu mengolah indeks-indeks yang ada
didalam sebuah proses sequencial tanpa menunggu indeks yang sebelumnya selesai
diproses. Dan salah satu keuntungan yang didapat melalui multithreading adalah
proses
runtime
akan
berjalan
lebih
cepat
karena
multithreading
mampu
memparalelkan proses yang berjalan pada proses sequencial tersebut.
2.1.1
Pengertian Multitasking
Kita mungkin sering mendengar tentang multitasking, sebuah kemampuan didalam
sebuah sistem operasi yang memungkinkan berjalannya lebih dari satu program pada
saat yang bersamaan. Sebagai contoh, kita bisa mencetak sebuah dokumen sambil
mendengarkan music, atau kita bisa menonton video sambil mendownload sebuah
lagu dari internet. Multitasking bisa dilakukan dalam dua cara berdasarkan bagaimana
cara sistem operasi menghentikan program, dua cara tersebut adalah preemptive
multitasking dan cooperative (atau nonpreemptive) multitasking (Sun Microsystem,
1994). Preemptive multitasking adalah sistem operasi menghentikan program tanpa
persetujuan dari program yang bersangkutan dengan kata lain program dihentikan
dengan cara dipaksa sehingga program berakhir sebelum perintah exit. Sedangkan
Universitas Sumatera Utara
8
cooperative multitasking adalah ketika program berakhir pada saat program tersebut
diperintahkan untuk berakhir.
2.1.2
Pengertian Multithreading
Program dengan multithreading sebenarnya mengembangkan ide dari multitasking
tersebut dengan mengambil satu level pemahaman dibawahnya, yaitu sebuah program
tunggal yang menjalankan lebih dari satu task pada waktu yang bersamaan (Sun
Microsystem, 1994). Biasanya task tersebut disebut dengan thread yang merupakan
singkatan dari istilah thread control. Maka, sebuah program yang menjalankan lebih
dari satu thread pada saat yang bersamaan disebut dengan program multithreading.
Untuk lebih memperjelas mengenai multithreading, penulis akan mencoba
memberikan gambaran melalui gambar 2.1.1 dibawah ini.
Gambar 2.1.1 : Penjabaran multithreading
Pada gambar 2.1.1 diberikan penjabaran tentang multithreading. Gambar yang
disebelah kiri adalah proses squencial dan yang disebelah kanan adalah proses yang
dikerjakan dengan multithreading. Pada proses multithreading dapat dilihat bahwa ada
dua thread yang bekerja meskipun diatur dengan penjadwalan. Pada proses
multithreading tersebut, akan lebih banyak code yang dieksekusi pada saat thread
yang lain sedang menunggu.
Universitas Sumatera Utara
9
Pemrograman multithreading telah ada lebih dari 30 tahun ini (Shene C-k,
2001), beberapa sistem sebelumnya juga sudah mendukung pemrograman
multithreading dengan beberapa nama yang berbeda. Sebagai contoh IBM memanggil
sebuah thread dengan sebutan coroutine. Dan sekarang ini hampir semua sistem
operasi mendukung pemrograman multithreading sejak Windows 95/NT hingga
sistem operasi turunan dari Unix.
2.1.3
Penjadwalan Thread
Processor komputer semakin lama semakin cepat, sebelum kemampuan aplikasi
komputer belum mampu memepertahankan kecepatannya. Untuk aplikasi komersial,
nilai rata-rata CPI (Cycles Per Instruction) processor mencapai 2.5 atau 3 CPI.
Melalui instruksi empat arah dari processor, satu diantara 3 CPI berarti hanya satu slot
dari dua puluh yang sedang baik untuk digunakan. Karena itu kemampuan aplikasi
komputer tidak berubah meskipun kemampuan hardware telah ditingkatkan.
Penjadwalan thread adalah sebuah metode yang digunakan untuk melakukan
pengukuran terhadap thread yang sedang dieksekusi pada multithreaded processor.
Resource utilitas dari masing-masing multiple thread diukur pada saat thread tersebut
dieksekusi secara bersamaan pada sebuah multithreaded processor (Chrysos, 2003).
2.1.4
Desain Perancangan Pemrograman Multithreading
Pada saat ini, hampir semua sistem operasi mendukung pemrograman multithreading
sejak Windows 95/NT hingga sistem operasi turunan Unix. Untuk melakukan
pemrograman multithreading, dibutuhkan bahasa yang berbasis objek (Object
Oriented Programming) dikarenakan hanya bahasa pemrograman yang berorientasi
objek yang menyediakan fasilitas untuk pemrograman multithreading dimana bahasa
tersebut menyediakan eksekusi serentak dari banyak thread yang ada pada sebuah
program yang sama. Pada dasarnya, thread menyediakan cara untuk mengeksekusi
program secara parallel didalam satu program yang sama.
Untuk desain perancangan pemrograman multithreading digunakan metode
UML (Unified Modelling Language). UML dikeluarkan oleh Object Management
Group (OMG), adalah sebuah bahasa grafis yang telah diterima secara umum sebagai
metode standart untuk menggambarkan sistem perangkat lunak yang dikembangkan
berorientasi objek (Saxena dan Shrivastava, 2009). Selain diaplikasikan pada desain
Universitas Sumatera Utara
10
perancangan program atau sistem, UML juga bisa diaplikasikan pada perancangan
proses bisnis dan arsitektur sistem hardware. Detail dan deskripsi yang baik tentang
UML ditunjukkan pada tulisan oleh Booch et al tahun 2004 dan Alhir tahun 1998.
2.1.4.1 Representasi UML dari Proses dan Thread
Gambar 2.1.2 : Representasi UML untuk proses dan thread
Pada gambar 2.1.2 menunjukkan detail dari sebuah proses dan thread serta relasi
antara keduanya menggunakan class diagram. Pada desain ini, digunakan stereotype
dari UML untuk mendefenisikan proses dan thread yang dinamakan <<process>> dan
<<thread>>. Stereotype tersebut mendefenisikan class dari proses dan thread yang
sedang aktif yang dinamakan class process dan thread. Class process memiliki
multiple anggota dari class thread dan dijelaskan sebagai relasi 1..n pada diagram
(Saxena dan Shrivastava, 2009).
Universitas Sumatera Utara
11
2.1.4.2 Representasi UML dari Execution Core
Gambar 2.1.3 : Stereotype dari execution core
Gambar 2.1.4 : Class diagram dari sebuah core
Gambar 2.1.5 : Anggota tunggal dan multiple dari core
Pemodelan
UML
untuk
menggambarkan
core
eksekusi
yang
ditunjukkan
menggunakan UML. Gambar 2.1.3 menunjukkan stereotype <<Execution_core>>,
gambar 2.1.4 menunjukkan class diagram dari core yang ditunjukkan, dan gambar
2.1.5 menunjukkan anggota tunggal dan multiple dari core (Saxena dan Shrivastava,
2009).
Universitas Sumatera Utara
12
2.2
Kriptografi
Untuk membuktikan pengaruh mutltithreading didalam meningkatkan kecepatan
proses, maka penulis menerapkan teknik multithreading tersebut pada proses
kriptografi dengan algoritma affine cipher. Kriptografi adalah suatu ilmu yang
mempelajari bagaimana cara menjaga agar data atau pesan tetap aman saat
dikirimkan, dari pengirim ke penerima tanpa mengalami gangguan dari pihak ketiga
(Stalling, 1998). Tujuan penerapan kriptografi adalah untuk membuat sesuatu yang
tersembunyi, baik itu berupa text, suara, gambar, dan video. Untuk lebih memperjelas
pengertian kriptografi, penulis mencoba menjabarkan arsitektur umum kriptografi
melalui gambar 2.2.1 dibawah ini.
ALGORITMA
PLAIN TEXT
KEY
TOLONG UANGNYA
DISIMPAN DIBAWAH
KASUR KAMAR SAYA,
JANGAN LUPA KAMAR
DIKUNCI LALU
SIMPANKAN KUNCI ITU
DIBAWAH POT BUNGA
WBMBWN=FJWNWZI=YX
VXRGJW=YXOJPJS=HJV
FQ=HJRJQ=VJZJ+=CJW
NJW=MFGJ=HJRJQ=YX
HFWTX=MJMF=VXRGJW
HJW=HFWTX=XAF=YXO
JPJS=GBA=OFWNJ
CIPHER TEXT
Gambar 2.2.1 : Arsitektur umum kriptografi
Dari arsitektur umum kriptografi diatas terlihat bahwa text pada kotak sebelah kiri
merupakan text mentah (plain text) dan text pada kotak sebelah kanan adalah text
hasil enkripsi atau mekanisme yang dilakukan untuk merubah text mentah menjadi
text tersembunyi (Septiarini dan Hamdani, 2011) yang disebut dengan cipher text.
Sedangkan setelah menjadi cipher text, text tetap bisa kembali diubah menjadi bentuk
plain text-nya, proses ini disebut dengan dekripsi. Enkripsi dan dekripsi dilakukan
melalui sebuah algoritma yang algoritma tersebut memiliki key yang hanya diketahui
oleh pengirim dan penerima.
Didalam penulisan skripsi ini, penulis mencoba melakukan proses kriptografi
dengan algoritma affine cipher.
Universitas Sumatera Utara
13
2.2.1
Affine Cipher
Affine cipher adalah perluasan dari metode Caesar cipher, yang mengalihkan plain
text dengan sebuah nilai dan menambahkannya dengan pergeseran P menghasilkan
cipher text C yang dinyatakan dengan fungsi kongruen
𝐶𝐶 = 𝑚𝑚 𝑃𝑃 + 𝑏𝑏 (𝑚𝑚𝑚𝑚𝑚𝑚 𝑛𝑛)
Yang mana n adalah ukuran alphabet, m adalah bilangan bulat yang harus relatif
prima dengan n (m dan n tidak mempunyai faktor prima bersamaan atau FPB m dan b
= 1) maka jika tidak relatif prima, maka dekripsi tidak bisa dilakukan, dan b adalah
jumlah pergeseran. Untuk melakukan deskripsi, rumus enkripsi diatas harus
dipecahkan untuk memperoleh P. Solusi kekongruenan tersebut hanya ada jika invers
m (mod n), dinyatakan dengan m -1. Jika m
-1
ada maka dekripsi dilakukan dengan
persamaan sebagai berikut
𝑃𝑃 = 𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖(𝑚𝑚) (𝐶𝐶 − 𝑏𝑏)(𝑚𝑚𝑚𝑚𝑚𝑚 𝑛𝑛)
Invers(m) didapat dengan menggunakan persamaan
𝑚𝑚𝑚𝑚 (𝑚𝑚𝑚𝑚𝑚𝑚 𝑛𝑛) ≡ 1 (𝑚𝑚𝑚𝑚𝑚𝑚 𝑛𝑛)
Untuk lebih jelas mengenai proses algoritma Affine Cipher, maka akan dijabarkan
melalui contoh dibawah ini.
P = {A=0, B=1, C=2, …} maka n = 26 (0 S/D 25)
Plaintext = KRIPTO (10 17 8 15 19 14)
m = 7 dan b = 10 (dikarenakan 7 dan 10 adalah relatif prima)
Enkripsi: C ≡ 7P + 10 (mod 26)
p1 = 10  c1 ≡ 7 ⋅ 10 + 10 ≡ 80 ≡ 2 (mod 26)
(huruf ‘C’)
p2 = 17  c2 ≡ 7 ⋅ 17 + 10 ≡ 129 ≡ 25 (mod 26)
(huruf ‘Z’)
p3 = 8
 c3 ≡ 7 ⋅ 8 + 10 ≡ 66 ≡ 14 (mod 26)
(huruf ‘O’)
p4 = 15  c4 ≡ 7 ⋅ 15 + 10 ≡ 115 ≡ 11 (mod 26)
(huruf ‘L’)
p5 = 19  c1 ≡ 7 ⋅ 19 + 10 ≡ 143 ≡ 13 (mod 26)
(huruf ‘N’)
p6 = 14  c1 ≡ 7 ⋅ 14 + 10 ≡ 108 ≡ 4 (mod 26)
(huruf ‘E’)
Universitas Sumatera Utara
14
maka didapat hasil ciphertext yaitu CZOLINE
Kemudian untuk melakukan dekripsi, mula-mula cari invers(m).
7x ≡ 1 (mod 26)
x = 15, karena 7.15 (mod 26) = 1 (mod 26)
maka P = 15 (C – 10) (mod 26)
c1 = 2
 p1 ≡ 15 ⋅ (2 – 10) = –120 ≡ 10 (mod 26) (huruf ‘K’)
c2 = 25  p2 ≡ 15 ⋅ (25 – 10) = 225 ≡ 17 (mod 26) (huruf ‘R’)
c3 = 14  p3 ≡ 15 ⋅ (14 – 10) = 60 ≡ 8 (mod 26)
(huruf ‘I’)
c4 = 11  p4 ≡ 15 ⋅ (11 – 10) = 15 ≡ 15 (mod 26)
(huruf ‘P’)
c5 = 13  p5 ≡ 15 ⋅ (13 – 10) = 45 ≡ 19 (mod 26)
(huruf ‘T’)
c6 = 4
 p6 ≡ 15 ⋅ (4 – 10) = –90 ≡ 14 (mod 26) (huruf ‘O’)
maka didapatlah Plaintext berupa KRIPTO
Dalam kasus tugas akhir ini, n adalah 2.147.483.647 dikarenakan nilai dari
integer adalah antara - 2.147.483.647 hingga 2.147.483.647, karena nilai dibatasi tidak
boleh lebih kecil dari nol, maka rentang yang diterapkan adalah antara 0 hingga
2.147.483.647. Nilai integer diambil karena penulis mencoba menerapkan algoritma
enkripsi tersebut pada gambar dan masing-masing pixel gambar dapat diwakili dengan
nilai integer.
Universitas Sumatera Utara
Download