Saturday, December 10, 2016

Thread Fundamentals - Advanced .Net Threading

Filled under:


Assalamualaikum wr. wb.

Pada thread blog kali ini saya akan memberikan ulasan (ulasan 1) dari video berdurasi 1:11:46 jam dari alamat ini. Ini merupakan video yang diunggah oleh akun bernama “Learn Forever” dengan judul Advanced Net Threading – Part 1 – Thread Fundamentals. Konten di dalam video tersebut secara original telah dibuat oleh Jeffrey Richter dari Microsoft Virtual Academy dan diproduksi oleh Wintellect Now. Alasan untuk memilih topik ini, karena selain sebagai tugas mata kuliah Sistem Operasi sekaligus sebagai bahan dasar untuk melakukan eksplorasi .Net System Development di kantor tempat saya bekerja. Selain itu, konten dalam video ini mencakup teknologi informasi secara umum, dan mencakup Sistem Operasi secara khusus.


Sejarah keberadaan thread secara umum adalah berasal dari lemahnya eksekusi yang dilakukan sistem operasi terhadap aplikasi-aplikasi yang terdapat didalamnya. Salah satu contohnya adalah terjadinya infinite loop pada proses aplikasi yang dapat menyebabkan mesin berada pada kondisi Freeze. Hal ini sangat tidak User friendly untuk sebuah konsep User Experience pada Sistem Operasi. Kebanyakan orang menganggap bahwa thread akan meningkatkan kinerja dari sistem operasi, namun pada kenyatannya, thread digunakan untuk memvirtualisasikan memori pada komputer sehingga membuat komputer berjalan dengan lebih lambat. Masalah lain muncul kemudian, yaitu 1 CPU hanya dapat menjalankan 1 thread dalam satu waktu, selanjutnya disebut Quantum. Quantum berjalan dengan kecepatan 3milidetik setiap proses. Kemudian Microsoft akhirnya membangun Windows yang mendukung adanya 1+threads per proses. Hal ini akan mendukung Sistem Operasi untuk menjalankan proses yang Infinite loop. Jadi, pengguna dapat membuka task manager untuk melakukan kill terhadap aplikasi yang infinite loop tersebut serta me-release alamat memori yang digunakan oleh aplikasi yang infinite loop tadi dengan tanpa mematikan komputernya. Tujuan utama thread dibuat pada tahap ini adalah untuk alasan ketahanan, keresponsifan dan kereliabelan. Dengan kata lain, thread merupakan teknologi untuk memvirtualisasikan CPU, yang pada dasarnya memiliki sebuah overhead, dalam hal ini adalah waktu eksekusi dan ukuran alokasi memori. Setiap kali thread dipanggil oleh sistem operasi, ia akan membuat sebuah struktur data disebut thread kernel object untuk memenej waktu hidup alokasi memori. Struktur data ini menyimpan informasi tentang waktu pembuatan thread tersebut, penjadwalan, berapa banyak CPU time yang digunakan, posisi apa yang sedang thread kerjakan (create, wait, running atau terminating). thread kernel object terdiri dari context, Thread Local Storage (TLS), dan Graphics Devise Interface. Bagian terpenting di dalam thread adalah Stacks. Satu thread terdiri dari 2 Stacks, yaitu user mode stack dengan kapasitas memori 1MB, dan kernel mode stack dengan kapasitas memori 12KB atau 24KB tergantung besarnya bit sistem operasi yang digunakan. Kemudian hal penting berikutnya dalam thread overhead adalah time overhead yaitu waktu yang digunakan mengalokasi memori dan mendealokasi memori. Time overhead disimpan dalam bentuk DLL.

Kemudian, 2 alasan utama mengapa kita harus menggunakan thread dalam programming adalah 1) untuk mengisolasi suatu kode ke dalam kode yang lain, atau dengan kata lain untuk menciptakan kode yang reliabel dan mudah untuk dibuat, 2) untuk mengeksekusi lebih dari 1 proses dalam sekali waktu secara bersamaan, karena pada saat ini kebanyakan komputer telah mendukung multi-processor.  Benefit yang bisa didapatkan ketika menggunakan thread dalam membuat program adalah 1) menjaga agar CPU tetap sibuk, karena jika 1 CPU dan 1 thread selesai mengeksekusi suatu proses, context switch dapat menjadwalkan proses lain untuk dieksekusi selanjutnya, hal ini akan membuat efisiensi sumber daya yang ada di dalam komputer, misalnya daya baterai, 2) Dalam sekali menjalankan aplikasi, pengguna dapat melakukan eksekusi terhadap lebih dari satu fitur aplikasi, dan 3) Untuk membuat aplikasi yang reliabel, tanpa hangs, dapat ditunda, dan UI yang responsif atau user friendly. Contoh fungsi yang dapat dibuat dengan menggunakan thread adalah 1) file indexing untuk pencarian yang lebih cepat, 2) mengurutkan pengalamatan pada memori fisik untuk mempercepat pengaksesan I/O, 3) Spelling dan Grammar pada saat pengetikan kata di aplikasi pengolah kata.

Tujuan utama dari video ini sebenarnya adalah untuk mengajarkan bagaimana membuat thread dengan menggunakan bahasa pemrograman C#. Namun, penyaji lebih memilih untuk memberikan materi tentang fundamental atau dasar-dasar materi yang harus diketahui tentang threading dengan bahasa yang mudah dipahami dan lengkap terlebih dahulu. Itu berarti penyaji membiarkan pembacanya untuk benar-benar mengerti konsep threading pada C#, tidak hanya sekedar mengikuti apa yang dia buat atau kerjakan. Oleh karena itu saya pribadi sangat setuju dengan cara penyampainnya, walaupun ada bagian yang seharusnya dioptimalkan untuk membuat penggunanya cepat dan mudah memahaminya, yaitu dengan slide presentasi yang unik disertai gambar-gambar pendukung.




Berikut merupakan data pribadi saya yang bisa diakses:

0 comments:

Post a Comment