Selasa, 25 Oktober 2016

THREADS PADA WINDOWS

THREADS Threads dapat dikatakan sebagai suatu atau beberapa kegiatan dalam suatu proses. Threads merupakan unit terkecil dari suatu proses yang dapat dijadwalkan oleh suatu sistem operasi. Suatu thread memiliki : - Thread ID - Program counter - Register set - Stack Suatu threads berbagi memory, code section, data section dan sumber daya sistem operasi dengan threads lainnya yang berada pada proses yang sama. Keuntungan dari adanya threads - Pembuatan thread baru lebih cepat dari pada proses baru, - Penghentian thread lebih singkat daripada penghentian proses, - Switching antara dua thread lebih singkat daripada switching antar proses, - Thread dapat berkomunikasi satu sama lain. User Threads User threads merupakan threads yang berjalan pada user level. Pengaturan dan penjadwalan dari thread ini sepenuhnya dilakukan pada user level tanpa campur tangan dari kernel level. Setiap proses memiliki thread table untuk menyimpan informasi thread yang dimilikinya. User threads secara umum lebih ringan dalam proses pembentukan dan penjadwalan. Akan tetapi tidak dapat berjalan secara multi threading.

Kernel Threads Kernel threads merupakan threads yang dicipatakan dan berjalan pada kernel level. Penjadwalan dan manajemen dilakukan oleh kernel pada kernel level. Kernel threads sering disebut juga proses yang ringan (Lightweight Process/LWP). Kernel threads lebih lambat proses pembentukan dan penjadwalan jika dibandingan dengan user threads. Kernel threads mendukung multithreading dimana beberapa thread dapat dijalankan dalam waktu yang bersamaan.
Terdapat relasi diantara user threads dan kernel threads. Relasi ini secara umum dapat dimodelkan menjadi 3 bentuk yaitu :
1.    Many-to-One
     Many-to-One model memetakan semua user thread ke dalam satu kernel thread. Manajemen pengaturan thread dilakukan pada user level sehingga kinerja lebih cepat. Kekurangannya adalah jika suatu thread melakukan blocking maka thread yang lain tidak dapat berjalan. Hanya satu thread yang dapat dijalankan pada satu waktu.
2.    One-to-One
     Satu user thread memiliki satu kernel thread. Keuntungan dari model ini adalah lebih dari satu thread dapat berjalan secara bersamaan. Jika satu thread melakukan blocking, thread yang lain tetap dapat berjalan. Karena setiap penciptaan user thread harus dibarengi dengan kernel thread maka model ini cenderung lebih lambat dibandingkan dengan many-to-one. Gambar 2 . Kernel Threads
3.    Many-to-Many
Memetakan beberapa user thread ke dalam sejumlah kernel thread, dimana jumlah kernel thread yang dapat digunakan sama atau lebih sedikit dari jumlah user thread. Pada model ini hanya satu thread yang dapat dijadwalkan oleh kernel thread dalam satu waktu.

THREADS PADA WINDOWS
Windows mengunakan Win32 API sebagai API utama dalam hampir semua sistem operasi Microsoft. Selain itu windows mengimplementasi model relasi One-to-One, dimana terdapat satu kernel thread yang berasosiasi dengan masing – masing user thread. Thread pada windows secara umum mempunyai komponen sebagai berikut :
• Thread ID
• Register set
• User stack dan kernel stack
• Private storage area.

Register set, stacks dan private data storage disebut sebagai context dari sebuah thread. Struktur data utama dari sebuah thread :
• ETHREAD (executive thread block)
• KTHREAD (kernel thread block)
• TEB (thread environment block)

Bagian penting dari ETHREAD adalah KTHREAD, Process ID, Thread start address. Blok KTHREAD merupakan pointer yang merujuk pada kernel thread (KTHREAD), Process ID juga merupakan suatu pointer yang menunjuk pada proses utama yang memiliki thread tersebut dan Thread start address adalah alamat dari rutin awal thread.

KTHREAD (kernel thread block)
KTHREAD menyimpan informasi yang dibutuhkan oleh kernel untuk dapat melakukan penjadwalan dan sinkronisasi thread. Pada KTHREAD juga terdapat kernel stack, yang mana akan digunakan ketika thread berjalan pada kernel mode. Juga terdapat pointer yang menunjuk TEB.

TEB (thread environment block)
TEB menyimpan informasi image loader dan beberapa DLLs dari windows. Komponen - komponen ini berjalan pada user mode, maka dibutuhkan suatu struktur data yang dapat dimanipulasi(writable) pada user mode. Oleh karena itu, tidak seperti KTHREAD dan ETHREAD yang berada pada kernel space, TEB berada pada user space.


Proses Pembentukan Thread
Sebelum sebuah thread dibuat, diperlukan stack dan context dimana thread akan dijalankan. Proses pembentukan stack dilakukan dengan pemanggilan fungsi CreateThread. Fungsi ini terdapat dalam Kernel32.dll. Process manager akan mengalokasikan space untuk object dari thread yang baru dan memanggil kernel untuk membuat kernel thread block. Berikut ini langkah – langkah pembentukan thread :
1. Memanggil fungsi CreateThread membuat stack untuk thread pada user-level.
2. Thread's hardware context diinilisasi oleh CreateThread.
3. Fungsi NtCreateThread dipanggil untuk membuat executive thread object.

NtCreateThread memanggil fungsi PspCreateThread dan menjalankan proses – proses berikut :
• Thread count pada program/proses akan dinaikan 1.
• Executive thread block (ETHREAD) dibuat dan diinisialisasi.
• Thread ID dibuat untuk thread yang baru
 • TEB di setup (user- mode)
• Thread start address pada user-mode disimpan dalam ETHREAD
• Fungsi KelnitThread dipanggil untuk membuat KTHREAD block.
KelnitThread mengalokasikan kernel stack dan inisialisasi machinedependent hardware context termasuk didalamnya context, trap, dan exception frames.
• Thread access token di set sesuai dengan proces acces token dan akan dicek apakah program/proces tersebut memiliki hak untuk membuat thread atau tidak. Proses cek ini akan selalu berhasil jika thread yang diciptakan bersifat lokal, dimana thread yang diciptakan masih berada dalam program/proces yang sama. Kemungkinan gagal jika thread yang akan dibuat untuk program/proces yang lain.

4. Thread baru diinformasikan oleh CreateThread kepada Windows subsystem dan subsystem melakukan beberapa proses setup untuk thread yang baru.
5. Thread handle dan thread ID dikembalikan kepada proses/program yang membuat thread tersebut.
6. Thread dijalankan.

KESIMPULAN
Windows dalam mengimplementasikan thread memakai model One-to-One. Sehingga windows mendukung multithreading. Win32 API adalah pustaka thread yang digunakan oleh windows. Struktur data utama dalam thread windows : ETHREAD (executive thread block), KTHREAD (kernel thread block) yang keduanya berada pada kernel-level dan TEB (thread environment block) yang berada pada user-level.

DAFTAR PUSTAKA
Russinovich, M., and Solomon, D. Microsoft Windows, Internals Fourth Edition:
Microsoft Windows Server 2003, Windows XP, and Windows 2000. Microsoft Press, 2005. hal 289 – 322 Silberschatz, A., Galvin, P., Gagne, G. 2004. Operating Systems Concepts with Java. Sixth Edition. John Wiley & Sons. hal 181 - 212

Kamis, 13 Oktober 2016

SmarTech, Antara Pelanggaran Privacy dan Kebutuhan Pengguna

Pada kuartal 2 di tahun 2015, jumlah pengiriman (shipment) Android masih melesat jauh di atasplatform smartphone lain. Gambar di bawah ini merupakan statistik yang dikeluarkan oleh idc.com; suatu lembaga yang membantu organisasi dalam membuat keputusan berdasarkan fakta dan data yang ada.





Diagram histogram dari frekuensi di atas:




Terlihat pada gambar tersebut sebanyak 82% (dari 341,5 juta pemesanan) lebih merupakan pengguna Android. Dari data di atas, dapat disimpulkan bahwa mayoritas penggunasmartphone di dunia adalah pengguna Android.


Android mendominasi pasar sistem operasi ponsel pintar dengan kecanggihan yang ditawarkan. Mungkin diantara pembaca juga pengguna dari sistem operasi ini, bukan?
Sistem operasi ini memiliki banyak ‘kebisaan’ yang semua ‘kebisaan’ itu disemat dalam berbagai macam aplikasi. Di dalamnya terdapat ribuan bahkan jutaan aplikasi yang dapat memenuhi kebutuhan bahkan memanjakan keinginan Anda. Berbagai aplikasi telah digunakan oleh banyak orang. Mulai dari aplikasi ‘coba-coba’ hingga aplikasi yang wajib menjadi kebutuhan pengguna.
Namun, di sisi lain tanpa diketahui oleh pengguna, ternyata tidak sedikit pembuat aplikasi yang merugikan privasi mereka (baca: pengguna). Mengapa dirugikan? Untuk menggunakan aplikasi pada OS ini, pengguna diwajibkan untuk menginstal aplikasi terlebih dahulu. Ketika proses instalasi akan berlangsung, pengguna diminta untuk memberikan izin akses terhadap resourcetertentu yang diminta oleh aplikasi, tanpa menjelaskan mengapa resource tersebut dibutuhkan oleh aplikasi. Banyak pengguna yang tidak sadar/tidak tahu/masa bodoh dengan permintaan ini, sehingga mereka akan mengizinkan untuk menginstal aplikasi. Langkah pemberian ‘izin’ pun cukup beralasan, karena mereka (baca: pengguna) butuh aplikasi tersebut (mungkin untuk hiburan, atau memang untuk kebutuhan sehari-hari).
Dari aturan seperti ini, para pembuat aplikasi dapat saja mensyaratkan pengguna untuk mengizinkan mereka (developer) untuk dapat mengakses resource yang krusial seperti penyimpanan, kontak, perpesanan, serta resource lainnya. Sayangnya, tidak sedikit pengguna yang tidak membaca terms and conditions ini dan langsung menginstal aplikasi yang mereka inginkan. Akibatnya, memang mereka dapat menggunakan aplikasi, namun di pihak developer, pun dapat mengakses data pengguna. Terjadilah simbiosis mutualisme – pengguna dapat menggunakan aplikasi, penyedia aplikasi mendapatkan data pengguna, sama-sama senang. Pengguna senang, developer pun senang 
Selain itu, pada OS ini terdapat aplikasi yang sangat canggih yaitu location history. Aplikasi (dalam hal ini adalah Google), akan mencatat lokasi Anda dengan informasi yang komprehensif. Informasi tersebut seperti seperti posisi, waktu, jarak, dan lain sebagainya. Aplikasi ini sebenarnya sangat membantu bagi pengguna yang ingin mengetahui posisi ia berada dalam beberapa waktu yang lalu, atau mungkin ingin mengetahui posisi kekasih? Atau bahkan bisa melacak ponsel yang hilang. Satu syarat dari aplikasi ini agar dapat berjalan yaitu GPS (Global Positioning System) pengguna harus aktif. Aplikasi ini sebenarnya sudah diketahui oleh banyak orang, namun mungkin karena tidak ada bukti otentik dan belum ada tulisan seperti ini, para pengguna belum sadar akan keamanan privasi mereka.
Lalu dimana letak pelanggaran privacy?
Aplikasi ini akan mengetahui banyak informasi mengenai diri Anda meskipun Anda tidak memberikan informasi tersebut. Misalnya, pada waktu rush hour kantor (waktu pergi dan pulang kantor), orang-orang menggunakan commuter line untuk mencapai tujuan (baik kantor maupun rumah). Karena banyak orang yang menggunakan OS ini, maka fitur ini pun akan mencatat pada waktu tersebut bahwa terdapat sekelompok orang/banyak orang yang berada di suatu titik yang sama kemudian berpindah dengan sangat cepat ke suatu titik tertentu. Aktivitas rutin seperti ini selalu dilakukan pada waktu yang sama sehingga aplikasi akan membuat statistik serta menganalisa bahwa di titik tersebut terdapat suatu kendaraan cepat (commuter-line) yang akan membawa sebanyak x orang (mungkin 1000 atau 2000 orang) pada waktu rush hour.
Dari contoh di atas, dapat dipastikan bahwa aplikasi akan mengetahui aktivitas serta informasi pengguna meskipun pengguna tidak memberikan informasi sedikitpun mengenai data dan aktivitas mereka.

History Location:


Rincian Aktivitas:


Gambar di atas merupakan history location saya beberapa bulan lalu ketika saya berada di suatu tempat. Aplikasi ini akan mencatat setiap aktivitas yang dilakukan. Apakah Anda berjalan ke tempat tujuan menggunakan kendaraan, atau hanya jalan kaki, berapa jauh tujuan Anda, berapa lama Anda mencapai tujuan, semuanya akan tercatat oleh aplikasi. Canggih bukan? Bahkan aplikasi ini mengetahui dimana Anda tinggal. Apakah Anda bisa menebak bagaimana aplikasi ini mengetahui dimana Anda tinggal? Gampang! Aplikasi ini akan membuat statistik waktu yang paling banyak Anda habiskan di malam hari. Apabila data statistik telah terpenuhi, maka sangat mudah bagi aplikasi mengetahui rumah Anda, serta kegiatan Anda sehari-hari.
Hal ini dapat terjadi karena pengguna mengaktifkan GPS pada ponsel mereka. GPS yang diaktifkan akan mengirimkan data lokasi pada periode tertentu pada Google, sehingga Google dapat mencatat dimana Anda berada pada detik:menit:jam:hari:bulan:tahun.
Hingga saat ini masih sangat banyak pengguna yang mengaktifkan GPS mereka (baik untuk tracking lokasi, maupun sebagai penunjuk jalan, dan lain sebagainya). Statistik di bawah ini menunjukkan bahwa banyak pengguna yang menggunakan ponsel mereka sebagai alat bantu dalam navigasi.


Di bawah ini merupakan diagram kurva ogivenya:


Diagram Pie Chart:


Statistik di atas diambil hanya dari pengguna yang berada di US saja. Terlihat bahwa sangat banyak pengguna yang mengaktifkan GPS mereka untuk berbagai macam kebutuhan[2]. Ya, tentu saja saya tidak bisa men-judge para pengguna untuk tidak mengaktifkan GPS. Kebutuhan GPS merupakan hak pengguna yang tentu berbeda dengan kebutuhan pengguna lain, seperti saya.
Jika saya tidak mengaktifkan GPS, apakah lokasi saya masih dapat diketahui? (Mungkin) Tidak.
Asumi saya mengatakan (Mungkin) Tidak adalah karena kita tidak tahu apakah memang hanya satu-satunya tombol GPS yang tidak diaktifkan itu, atau apakah ada ‘tombol’ GPS lain yang pengguna tidak mengetahuinya.
Selain itu, jika Anda tidak mengaktifkan GPS, data-data Anda juga akan dapat diakses. Akses data dapat dilakukan melalui aplikasi yang sudah ada install, seperti aplikasi chatting, atau aplikasi maps/traffic.


Jadi, data Anda akan tetap diakses dan dikirimkan melalui aplikasi yang telah ada install.

Jadi bagaimana solusinya?
Saat ini, kita tidak bisa menghindar dari teknologi yang disuguhkan. Teknologi yang begitu canggih, menggiurkan, serta dapat membantu pekerjaan kita secara signifikan, memang tidak bisa benar-benar lepas dari teknologi yang ada.
Ada dua solusi yang bisa diterapkan.
Pertama adalah membuat aplikasi sendiri. Poin pertama saya rasa sangat sulit untuk diimplementasikan karena di sisi lain kita sebagai pengguna membutuhkan aplikasi tersebut saat ini, tidak ada waktu untuk membuat apalagi harus berkutat dengan code yang njelimet, infrastruktur, biaya perawatan, dan lain sebagainya.