TEKNIK MULTITHREADING PADA SISTEM PENJEJAK OBYEK BERGERAK MENGGUNAKAN GPS Sutrisno, SE., M.Kom
Abstract Moving object tracking system is a system to track objects which move physically from one position to another position in a spatial dimension. This paper discusses techniques to handle data of many moving objects, and choose one of appropriate. In this paper an appropriate technique is chosen among number of data handling techniques for moving objects. Multithreading technique is a fine-grained of pseudoparallelism which meets the requirement of a system. The interprocess communication of non-busy waiting message passing can be applied in the system. Keywords: multithreading, interprocess communication, message passing, producerconsumer, multitasking, moving object, spatio-temporal moving object. LPendahuluan Arah kecenderungan pengembangan teknologi informasi salah satunya adalah upaya melakukan sinergi antara teknologi komputer dengan teknologi telekomunikasi. Pengembangan teknologi komputer diantaranya adalah kemampuan komputer melakukan eksekusi program secara konkuren (concurrent) atau lebih dikenal dengan tugas-banyak (multitasking), hingga upaya pemrosesan paralel dengan prosesor-banyak (multiprocessor). Pengembangan teknologi telekomunikasi semakin meningkat ke arah pengolahan sinyal digital. Global Positioning System (GPS) adalah salah satu produk teknologi telekomunikasi berbasis sinyal digital. GPS merupakan piranti bantu untuk mendapatkan informasi lokasi posisi global suatu obyek pada satu saat dalam satuan koordinat derajat lintang (latitude) dan derajat bujur (longitude) dunia. Koordinat tersebut diperoleh berdasarkan pancaran sinyal informasi yang ditransmisikan oleh beberapa satelit. GPS digunakan sebagai alat bantu navigasi pada pelayaran di laut, pesawat udara, rally mobil, dan Iain-Iain. GPS sebagai alat bantu navigasi, memberikan informasi mengenai posisi keberadaan suatu obyek (kapal, pesawat, mobil), dan pada umumnya informasi tersebut lebih banyak digunakan oleh obyek yang bersangkutan. Sesungguhnya informasi posisi keberadaan obyek dapat pula digunakan secara lebih intens yaitu berupa penjejakan (tracking) pergerakan obyek. Penjejakan (tracking) obyek yang bergerak seperti kendaraan pengiriman barang, patroli polisi, aliran air atau banjir dapat dipantau dari jarak jauh. Penjejakan obyek bergerak sangat mungkin dilakukan yaitu dengan menggabungkan kemampuan teknologi telekomunikasi dalam hal ini GPS dengan teknologi komputer. Teknologi telekomunikasi dengan perangkat GPS, modem, dan transceiver dapat memasok informasi posisi keberadaan obyek ke pihak yang berlokasi jauh darinya. Sementara itu, komputer yang dilengkapi dengan perangkat transceiver dan modem, menerima pancaran informasi tersebut, dan data ini lalu disimpan, diolah, serta ' Dosen Tetap Jurusan Teknik Informatika, FIK-UPH Teknik Multithreading ... (Sutrisno)
21
disajikan segera (online real-time) pada layar monitor komputer. Salah satu penerapan sistem komputer dengan kemampuan pengolahan tugas-banyak (multitasking), adalah untuk menangani penjejakan beberapa obyek yang bergerak dan diperlengkapi GPS. Selain itu, kemampuan komputer menyediakan fasilitas tampilan antar-muka pemakai berbasis grafis (Graphical User Interface - GUI) memberikan kemungkinan untuk menampilkan pergerakan obyek secara segera (online real-time) di atas tampilan peta digital. Pembahasan dalam tulisan ini akan mendiskusikan bagaimana teknik penanganan pengolahan beberapa obyek bergerak yang dilengkapi dengan GPS oleh komputer dengan prosesor (CPU) tunggal berupa pengolahan secara tugas-banyak (multitasking).
2Konsep dan Definisi Obyek bergerak (moving objects) adalah suatu obyek fisik yang dapat berpindah lokasi secara geografis (spatial) dan pergerakan tersebut biasanya dihubungkan dengan waktu (temporal). Obyek fisik tersebut mungkin saja berupa kendaraan yang bergerak (misalnya: patroli polisi, pengangkutan barang atau orang), aliran air (tanah atau sungai), atau banjir, atau orang 4 ' 5,8 . Posisi lokasi obyek fisik pada satu saat direpresentasikan dalam data geografis atau koordinat spasial (spatial) 2 dimensi ataupun 3 dimensi. Koordinat spasial 2 dimensi berupa sumbu-x dan sumbu-y, atau dalam bentuk derajat lintang (latitude) dan derajat bujur (longitude). Sedangkan koordinat spasial 3 dimensi adalah sumbu-x, sumbu-y, dan sumbu-z, atau dalam koordinat derajat lintang, derajat bujur, dan ketinggian dari permukaan laut (altitude). Obyek bergerak adalah obyek yang pada satu saat to berada pada posisi p0, dan pada t, akan berpindah ke posisi lain p1: dengan demikian dapat diketahui pergerakan obyek dari waktu ke waktu (temporafl Sistem penjejakan (tracking) obyek bergerak berdasarkan pada konsep tersebut 4 ' '
Komputer yang banyak digunakan di rumah-rumah atau kantor-kantor pada umumnya hanya memiliki sebuah prosesor tunggal (satu CPU). Selain komputer jenis itu ada juga komputer-komputer dengan kategori kelas server yang memiliki dua atau lebih prosesor dikenal sebagai komputer Symmetric Multi Processor (SMP) * 3 , juga komputer prosesor-banyak berupa Asymmetric Multi Processor. Komputer SMP maupun asymmetric termasuk kategori sistem multiprosesor masif, dengan adanya sejumlah prosesor maka pengolahan dapat dibagi-bagi ke sejumlah prosesor yang ada. Pembagian pengolahan ke dalam sejumlah prosesor dan dilakukan secara bersamaan pada waktu yang sama disebut sebagai pengolahan paralel sesungguhnya (true parallelism). Paralelisme semu (pseudoparallelism) dapat dilakukan pada komputer berprosesor tunggal, artinya ada beberapa pengolahan atau proses (program yang sama ataupun berbeda) yang dilayani oleh sebuah prosesor tunggal, tetapi memberikan ilusi seolah-olah sejumlah pengolahan (proses) tersebut dikerjakan oleh prosesor secara bersamaan . Pengolahan atau proses adalah program yang dieksekusi (run) oleh prosesor. Ilusi tersebut dapat terjadi karena prosesor tersebut berpindah dari satu proses ke proses lainnya dalam hitungan milidetik. Dalam satu detik setiap 22 Jurnal llmiah llmu Komputer, Vol. 1 No. 1 Januari 2003: 21-30
proses dilayani beberapa kali oleh prosesor tunggal, dan dalam detik yang sama sejumlah proses tersebut dipastikan terlayani. Teknik saling bergantian {interleaving) adalah cara untuk mencapai paralelisme semu yang dilakukan oleh sebuah prosesor tunggal, jadi yang sesungguhnya terjadi adalah sebuah prosesor hanya melayani satu pengolahan (proses) satu saat, dan pada saat berikutnya melayani proses lainnya, demikian seterusnya. Pengolahan yang menggunakan teknik saling bergantian dikenal sebagai pengolahan konkuren [concurrent processing) 1'3. Pengolahan secara tugas-banyak (multitasking) merupakan satu bentuk pengolahan konkuren yang mana prosesor akan mengalihkan layanannya ke proses lainnya temtama berdasarkan jatah waktu yang diperkenan bagi sebuah proses, selain proses itu lengkap selesai dikerjakan (completion), atau sedang dalam layanan I/O. Multithreading merupakan sebuah bentuk tingkatan (granularity) lebih halus (fine grained) dalam paralelisme semu, dibandingkan dengan pengolahan konkuren (concurrent processing). Pada pengolahan konkuren, paralelisme semu pada tingkatan program yang dieksekusi (proses), artinya beberapa program (sama atau berbeda) dilayani oleh prosesor. Pada multithreading, paralelisme semu pada tingkatan prosedur program (sebuah program disusun atas beberapa prosedur program - routine). Setiap prosedur program yang dikehendaki dilayani secara saling bergantian (interleaving), dan proses ini dinamakan thread. Beberapa thread dapat berupa prosedur program yang sama ataupun prosedur program berbeda V Sebuah program atau prosedur program P tersusun atas barisan (sequence) instruksi i1f i2, i3, i4, ... in- Misalkan, program A, PA dengan barisan instruksi au a2, a3, a4, a5, dan a6, dan program B, PB dengan barisan instruksi b1t b2, b3, b4, dan b5. Barisan eksekusi instruksi secara saling bergantian (interleaving) antara PA dan HB, akan menghasilkan beberapa kemungkinan pola ekseskusi. Kemungkinan pertama, barisan {a1t a2, a3, a4, a5, a6, b1t b2, b3, b4, b5}, kemungkinan kedua, barisan { bi, b2, b3, b4, b5, a1t a2, a3, a4, a5, a 6 l }, kemungkinan ketiga, barisan { a , , a2, b^ a3, b2, b3, b4, a4, b5, a5, a6}, dan masih banyak beberapa kemungkinan kombinasi lainnya. Konteks eksekusi saling bergantian pada keseluruhan bagian program dikenal dengan pengolahan secara konkuren, sedangkan konteks eksekusi saling bergantian pada prosedur-prosedur tertentu dikenal dengan istilah multithreading. Pada pengolahan konkuren maupun multithreading sangat mungkin di antara proses (concurrent) atau di antara thread (prosedur program - routine) terdapat satu atau sejumlah instruksi yang mengakses area memori (data) yang sama. Sebuah thread menulis data ke area memori tersebut dan thread lain mengambil data yang terdapat pada area tersebut. Perlu ada mekanisme penjaminan bahwa pada saat sebuah thread hendak mengambil data terbaru (semestinya), rnemang sudah tersedia data terbaru tersebut. Keadaan dimana satu atau lebih thread mengakses area memori yang sama, artinya mereka melakukan interaksi dinamakan interprocess communication (IPC). Pada pengolahan konkuren, yang berinteraksi adalah proses (dikenal sebagai IPC), sedangkan pada multithreading yang berinteraksi adalah prosedur program (dalam bentuk thread) tetapi istilah IPC tetap digunakan.
Teknik Multithreading ... (Sutrisno)
23
3.Sistem Penjejak Obyek Bergerak Sistem penjejak obyek bergerak menggunakan GPS terdiri dari piranti keras {hardware) dan piranti lunak (software). Piranti keras sistem aplikasi yang terdapat pada obyek bergerak terdiri dari perangkat penerima GPS, multiplexer, modem (khususnya penggunaan dominan pada bagian modulator), dan transceiver, sedangkan piranti keras pada bagian penerima (pemantau) terdiri dari transceiver, modem (penggunaan dominan pada demodulator), dan demultiplexer keseluruhan bagian piranti keras (minus komputer) ini dinamakan GPS module (lihat Gambar 1). Komputer berperan sebagai unit penyimpan, pengolah dan penyaji data pergerakan obyek. Piranti lunak sistem penjejak terdiri dari modul penjejak obyek (tracking objects), modul penyimpan dan pengolah data, dan modul pendistribusi, lihat Gambar 2. Sistem aplikasi penjejak obyek bergerak ini dirancang untuk dapat melakukan penjejakan terhadap lebih dari satu obyek yang bergerak. Obyek-obyek bergerak tersebut bergerak secara independen, artinya tidak mesti bergerak ke arah yang sama atau pada daerah yang sama. Kemampuan memantau obyek-obyek yang bergerak akan sangat dipengaruhi oleh daya pancar (output) dari transceiver yang terdapat pada obyek bergerak maupun pada stasiun kendali (pemantau). Akurasi posisi obyek bergerak sangat dipengaruhi oleh keberadaan dan pergerakan satelit pada waktu saat penarikan data (capture). Hasil penarikan data oleh GPS pada lokasi fisik yang sama bisa jadi akan berbeda pada waktu yang berbeda (GPS memberikan informasi perkiraan besaran beda penyimpangan tersebut). Pembahasan mengenai bagaimana menangani deviasi tersebut bukan menjadi fokus bahasan dalam tulisan kali ini, mungkin akan dibahas pada tulisan berikutnya. Rancangan arsitektur Sistem Penjejak Obyek Bergerak terdiri dari tiga modul utama (lihat Gambar 2) yaitu: Tracking Object Manager, Moving Object Manager, dan Delivery Manager. Modul Tracking Object Manager berhubungan dengan GPS Module, modul ini bertanggung jawab melakukan penarikan atau pengambilan data (capture) dari setiap obyek bergerak yang terdaftar di dalam sistem. Modul Moving Object Manager bertanggung jawab melakukan penyimpanan (menjadikan data persistence) ke dalam basis data dan melakukan pengolahan data berdasarkan apa yang diberikan oleh modul Tracking Object Manager. Modul Delivery Manager menghubungkan antara penyajian (display) dengan Moving Object Manager. Unit penyajian (display) menampilkan pergerakan setiap obyek di atas peta digital beserta informasi relevan lainnya. Modul Delivery Manager bertanggung jawab melakukan delivery data penjejakan baik pada lingkungan sistem tersendiri (standalone) maupun dalam lingkungan jaringan (misalnya: client-server). Pembahasan dalam tulisan ini adalah mengenai salah satu komponen dari modul Tracking Object Manager.
24 Jurnal llmiah llmu Komputer, Vol. 1 No. 1 Januari 2003: 21-30
transceiver
transceiver
^Wdem
k
°mP
eni
Gambar 1. Sistem Penjejak Obyek Bergerak
4.Modul Tracking Object Manager Modul Tracking Object Manager berhubungan dengan GPS module, modul ini bertanggung jawab melakukan penarikan atau pengambilan data (capture) dari setiap obyek bergerak yang terdaftar di dalam sistem. Data mengenai posisi obyek dikirimkan ke modul Moving Object Manager untuk disimpan dan diolah. GPS modules akan mengirimkan data posisi terbaru berdasarkan permintaan dari stasiun penjejak. Diagram interaksi dibawah ini (Gambar 3) menunjukkan mekanisme interaksi antara GPS modules dengan stasiun penjejak. Piranti keras stasiun penjejak (bagian dan GPS module) terdiri dari transceiver, modem (lebih dominan bagian demodulator). Piranti lunak GPS module berupa program antar-muka (interface) untuk jabat-tangan (handshake) melalui port serial. Struktur data yang dikirimkan oleh GPS module beberapa di antaranya: identitas dari setiap GPS, derajat lintang, derajat bujur, ketinggian di atas permukaan laut, kecepatan kendaraan, tanggal dan waktu, dan status. Struktur data tersebut akan diterima oleh prosedur program Collector, selanjutnya ditempatkan ke slot-slot buffer sesuai dengan identitas masing-masing. Buffer terdiri dari beberapa slot sebanyak obyek bergerak yang dijejak (identitas GPS) atau yang terdaftar di dalam sistem. Taker (k,, ..., kn) terdiri dari sejumlah prosedur program yang sama, masing-masing mewakili obyek bergerak yang dipantau atau yang terdaftar di dalam sistem. Taker k, akan mengambil data pada slot-1 pada buffer, demikian pula untuk Taker k2, k3, dan seterusnya.
Teknik Multithreading ... (Sutrisno)
25
GPS module
4
Display
+7*
Tracking Object Manager
Delivery Manager
4
4-t
Moving Object Manager
Map objects database
Moving object > database
o Gambar 2. Arsitektur Sistem Penjejak Obyek Bergerak
GPS modules Collector
Taker buffer
1
7
y
T
Gambar 3. Diagram interaksi penarikan data obyek bergerak
Penarikan atau pengambilan data (capture) dilakukan dan dipicu (triggered) oleh Collector dan bukan dikirimkan secara periodik oleh obyek bergerak (pada GPS module), hal ini dipilih dengan pertimbangan untuk menghindarkan collision. Collector akan melakukan penarikan data secara periodik, misalnya setiap satu detik sekali. Pada saat periode penarikan data, mungkin saja ada satu atau lebih obyek tidak memberikan respon karena obyek sudah berada di luar daya jangkau dari perangkat transceiver, atau kondisi perangkat pengirim obyek tidak aktif atau rusak. Pada keadaan inilah timeout digunakan untuk memutuskan apakah sebuah obyek bergerak dianggap tidak dapat merespon (bila melewati rentang waktu tersebut). Taker k1f k2, dan seterusnya mengambil data yang tersimpan dalam buffer sesuai dengan s!ot-nya, secara bergantian (serial) ataupun secara bersamaan (pseudoparallelism). Ada kemungkinan satu atau lebih Taker (k, atau k2, atau kj lainnya) mengambil data yang belum terbaharui, artinya data tersebut berasal dari pengambilan periode sebelumnya. Keadaan tersebut memerlukan suatu mekanisme 26 Jurnal llmiah llmu Komputer, Vol. 1 No. 1 Januari 2003: 21-30
penanganan penjaminan bahwa yang diperoleh oleh Taker adalah data terbaru, hal tersebut dinamakan sinkronisasi.
5.Sinkronisasi Kasus sinkronisasi yang terjadi pada Modul Tracking Object Manager, adalah interaksi antara Collector dengan Taker melalui buffer. Collector men-suplai data ke buffer, dan Taker mengambil data dari buffer. Satu slot (lokasi) buffer ditentukan bagi satu Taker yang berasosiasi dengan satu obyek bergerak yang dijejak (tracked). Paling sedikit ada dua pilihan penanganan sinkronisasi, pertama adalah diabaikan, dan kedua adalah melakukan sinkronisasi. Pembahasan dalam tulisan ini didasarkan pada pilihan kedua, yaitu melakukan sinkronisasi, oleh karena itu perlu pengkajian lebih lanjut. Penanganan sinkronisasi dapat dilakukan dengan beberapa pilihan cars, yaitu: pertama, sinkronisasi dengan Collector, kedua, Taker berinisiatif melakukan pemeriksaan ke buffer dan bila sudah tersedia dilakukan pengambilan, dan ketiga, Taker dipanggil bilamana sudah ada pembaharuan isi buffer. Cara pertama, pengambilan data yang dilakukan oleh Taker kj dilakukan dengan menyesuaikan periode penarikan data yang dilakukan oleh Collector, namun hal ini tidak menjamin perolehan data terbaru (kejadian timeout). Kedua, cara ini memberikan jaminan atas diperolehnya data terbaru, Taker k, senantiasa memeriksa status slot, bila telah tiba data terbaru maka diambil dan diteruskan ke bagian lainnya. Kerugian cara kedua ini adalah Taker harus terus-menerus memeriksa (looping) polling buffer. Cara ketiga, Taker tidak perlu memeriksa terus-menerus artinya Taker boleh tidur atau tidak aktif tetapi siaga (sleep-standby). Bilamana Collector melakukan penyimpanan data ke slot buffer, maka Collector wajib membangunkan Taker yang tertidur (mengirim wakeup-signal) sesuai dengan slot tersebut, cara ini lebih efisien dibandingkan dengan yang lainnya. Sinkronisai diperlukan jika ads dua atau lebih proses melakukan komunikasi diantara mereka. Ada satu pihak (minimal satu proses) sebagai pengirim (contohnya, menyimpan data ke memori), dan pihak lain (minimal satu proses) sebagai penerims (contohnys, mengsmbil dsta di memori). Penerima bsru bisa mengambil data di memori bilamana pengirim sudsh menyimpsnnys, jadi pada titik tertentu kelanjutan aktifitas penerima tergsntung psds aktifitas yang dilakukan oleh pengirim. Ilustrasi berikut memperjelas apa yang dimaksud dengan sinkronisasi, yaitu aktifitas proses PB sebagai pihak penerims dan proses PA sebagai pihak pengirim (bab 2 mengenai eksekusi secara interleaving). PA dengsn bsrisan instruksi a1f a2, a3, a4, a5l dan a6, dan program B, PB dengan barisan instruksi bi, b2, b3, b4, dan b5. Misalkan, instruksi a4 adalah operasi menyimpan data ke memori (buffer) dan instruksi b2 adalah operasi mengambil data di memori tersebut. Eksekusi PA secara berurutan lebih dahulu secara lengkap hingga selesai (dari instruksi pertama a1 hingga a6), dan berikutnya eksekusi PB sehingga urutan eksekusi instruksinya adalsh {a1f a2, a3, a4, a5, a6, b^ b2, b3, b4, b5}, maka proses PB dapat juga diselesaikan. Bila urutan eksekusinya dibalik yaitu PB lebih dahulu dan kemudian PA yaitu { b^ b2, wait, ...}, maka pada saat eksekusi tiba psds instruksi b2 proses PB tidak dapat melanjutkan ke instruksi berikutnya b3, sebab data belum tersedia di memori. Teknik Multithreading ... (Sutrisno)
27
Dua skenario ilustrasi diatas belum dalam bentuk yang eksekusi instruksi secara interleaving yang menjadi ciri dari pemrosesan konkuren. Urutan eksekusi berikut { a-\, a2, bi, a3, b2, b3, b4, a4, b5, a5, a6} menunjukkan eksekusi secara interleaving, namun proses PB tidak dapat melanjutkan ke instruksi b3 (wait hingga a4 tersedia) karena instruksi a4 belum dilaksanakan. Andaikan eksekusi dua proses tersebut mengabaikan sinkronisasi (b2 dapat juga mengambil data di memori) maka dapat dipastikan data yang diperoleh adalah bukan data terbaru yang valid. Urutan eksekusi berikut yaitu { a,, a2l b^ a3, a4, b2, b3, b4, b5, a5, a6} dimana instruksi b2 dieksekusi setelah instruksi a4, dengan demikian b2 memperoleh data terbaru dan keduanya dapat melanjutkan aktifitas berikutnya. Kesimpulannya adalah sinkronisasi diperlukan untuk menjamin diperolehnya data yang valid. Collector bertugas menyimpan data ke slot dan Taker melakukan pengambilan data dari slot. Skenario ini cocok dengan kasus Producer-Consumer Problem pada interprocess communication ' 2 ' 3 . Kasus Producer-Consumer pada modui Tracking Object Manager adalah ada sebuah Collector yang berperan sebagai Producer dan beberapa Taker yang berperan sebagai Consumer. Collector sebagai Producer mengisikan data ke sejumlah slot buffer berbatas (bounded buffer) lokasi penempatan data sesuai dengan identitas dari obyek bergerak tersebut. Setiap Taker hanya mengakses satu slot buffer yang telah ditentukan dan berasosiasi dengan identitas obyek bergerak yang dijejak (tracked). Collector dan Taker dieksekusi secara konkuren. Taker k,, k2, k3, .... kn adalah asosiasi dari obyek bergerak yang berbeda tetapi memiliki perilaku (behaviour) yang sama. Taker k1t k2, k3 kn adalah Taker yang mandiri (independen) sehingga sangat mungkin dieksekusi secara konkuren. Sinkronisasi komunikasi antara Collector dengan tiap Taker dapat dilakukan secara non-busy waiting (Taker tidak perlu melakukan pemeriksaan buffer terus-menerus) dengan menggunakan wakeupsignal. Ditinjau dari cara berkomunikasi antara Collector dengan Taker, dapat disimpulkan bahwa pola komunikasi tersebut cocok dengan Asynchronous Message Passsing 1' 23 ' Komunikasi asinkron yaitu komunikasi di antara prosedur program atau proses saat melakukan operasi primitif send dan receive tidak mesti dilakukan melalui tahapan inisialisasi dan terminasi sebagaimana pada komunikasi sinkron. Pada komunikasi message passing, primitif send hams menyertakan parameter alamat penerima, dan pada primitif receive disediakan parameter alamat pengirim. Pesan (message) yang disampaikan ditempatkan pada parameter message atau mailbox. Setiap Taker mengakses slot buffer-nya sendiri, dengan demikian tidak saling berkompetisi untuk mendapatkan sumber daya (resource), artinya kondisi saling pacu (race condition) tidak akan terjadi. Tidak adanya kondisi saling pacu memberikan andil terjaminnya eksekusi proses secara pseudoparallelism. Pseudoparalleliism dapat dilakukan pada tingkatan proses (program yang dieksekusi), proses ini dikenal sebagai concurrent processing, atau dapat pula dilakukan pada tingkatan prosedur program (routine), ini dikenal sebagai multithreading.
28 Jurnal llmiah llmu Komputer, Vol. 1 No. 1 Januari 2003: 21-30
6.Multithreading Multithreading merupakan fine-grained pada pengolahan secara konkuren, dan memiliki kelebihan dibandingkan dengan concurrent processing \ Sumber dayasumber daya yang diperlukan oleh sebuah thread dapat memanfaatkan apa yang telah diperoleh thread utama (proses) \ Teknik multithreading dapat diimplementasikan pada pemrosesan paralel murni (true parallelism)1,s. Sebuah proses adalah sebuah program yang dieksekusi. Sebuah proses selama eksekusi berlangsung memerlukan sejumlah sumber daya, diantaranya adalah prosesor, memori untuk menampung instruksi (code), data (fixed data maupun dynamic), stack, register, file yang digunakan (opened file), data global, dan Iain-Iain. Proses tersebut dapat membentuk proses baru (program yang sama atau berbeda) yang dinamakan child process(es), meskipun program tersebut sama namun keduanya menggunakan sumber daya masing-masing dan terpisah (misalnya, area memori yang berbeda). Sebuah program yang dieksekusi dalam lingkungan multithreading, awalnya memiliki sebuah thread utama (dapat juga dinamakan sebagai proses) dan sumber daya yang dipegang seperti halnya pada proses. Thread utama atau proses tersebut dapat membentuk satu atau lebih thread (setiap thread memiliki thread id). Sumber daya yang diperlukan oleh setiap thread akan menggunakan apa yang telah dimiliki oleh thread utama (seperti: data global, dan area memori), kecuali yang khusus baginya (diantaranya program counter, dan register) dan tidak tersedia. Taker memiliki peran dan tanggung jawab mengambil data yang ada di dalam slot. Menilik dari peran tersebut maka Taker dapat dirancang sebagai sebuah prosedur program berupa fungsi (function). Prosedur program tersebut dapat disesuaikan dengan kebutuhan, pada modul Tracking Object Manager yang dirancang untuk dikerjakan oleh CPU secara pseudoparallelism dalam bentuk multithreading. Pustaka fungsi multithreading
berdasarkan standar POSIX menyediakan fungsi untuk membentuk thread baru yaitu pthread_create(), serta fungsi untuk menghapus thread yaitu pthread_exit(). Fungsi pthread_create() memerlukan 4 parameter, yaitu parameter pertama adalah thread id, parameter kedua berupa atribut thread, parameter ketiga adalah nama fungsi yang akan dijadikan thread, dan parameter keempat adalah pointer ke argumen dari fungsi yang dijadikan thread. Sesuai dengan peran dari Taker, maka prosedur program (fungsi) Taker menggunakan satu parameter untuk menampung data yang diambil dari slot buffer. Parameter tersebut berupa grup data yang dihimpun dalam sebuah struct dengan anggotanya antara lain: identitas obyek bergerak yang diasosikan dengan identitas GPS, posisi (derajat bujur, derajat lintang, dan ketinggian terhadap permukaan laut), tanggal dan jam, dan beberapa data lainnya.
7.Kesimpulan Mekanisme penarikan data obyek bergerak dari setiap perangkat GPS module dilakukan secara periodik oleh sebuah Collector. Data hasil penarikan tersebut Teknik Multithreading ... (Sutrisno)
29
disimpan dalam buffer ke slot-slot sesuai dengan identitas dari setiap obyek bergerak yang diwakili oleh identitas perangkat GPS module. Setiap kali dilakukan penyimpanan data ke buffer, maka dibangkitkan wakeup-signal thread Taker yang sesuai. Eksekusi prosedur program (function) diperlakukan sebagai sebuah thread dalam lingkungan multithreading. Setiap thread yang dibentuk dalam keadaan sleep, akan dibangunkan (waking-up) bila telah tersedia data pada slot buffer. Teknik yang paling sesuai dengan kebutuhan untuk menangani data adalah teknik multithreading berupa non-busy waiting message passing.
Daftar Pustaka 1
2
'
'
3
'
4
'
5
6
'
Tanenbaum, Andrew S. Modern Operating Systems. Prentice Hall, Second Edition, 2001. Andrews, Gregory R. Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley, 2000. Avi Silberschatz, Peter Galvin, Greg Gagne. Applied Operating System Concepts. John Wiley & Son, First Edition, 2000. Sutrisno, et.al. Sistem Penjejak Obyek Bergerak Menggunakan GPS: proposal penelitian. Jurusan Teknik Informatika, Universitas Pelita Harapan. Oktober 2002. Saltenis, Simonas. Christian S. Jensen. Indexing on Moving Objects for Location-Based Services. A TIMECENTER Technical Report TR-63, Juty 2001. Katri, Vijay. and Sudha Ram and Richard T. Snodgrass, and Grady O'Brien. Supporting User-defined Granularities and Inderteminacy in Spatiotemporal Conceptual Model. A TIMECENTER Technical Report TR-55, April 2001.
30 Jurnal llmiah llmu Komputer, Vol. 1 No. 1 Januari 2003: 21-30