Rabu, 25 Oktober 2017

Contoh Thread pada Windows



Contoh Thread pada Windows

Pembahasan kali ini yaitu mengenai thread yang ada pada sistem operasi. Thread yang dibahas adalah thread yang ada pada sistem oprasi Windows. Sebelumnya apasih thread itu? 

Thread ?

Thread merupakan unit terkecil dalam suatu proses yang bisa dijadwalkan oleh sistem operasi dan sebuah unit dasar dari sistem utilisasi pada processor (CPU). Dalam ilmu komputer, thread diartikan sebagai sekumpulan perintah (instruksi) yang dapat dilaksanakan (dieksekusi) secara sejajar dengan thread  lainnya, dengan menggunakan cara time slice (ketika satu CPU melakukan perpindahan antara satu thread  ke thread lainnya atau multiprocess (ketika thread-thread tersebut dilaksanakan oleh CPU yang berbeda dalam satu sistem. Thread sebenarnya mirip dengan proses, tetapi cara berbagi sumber daya antara proses dengan thread sangat berbeda. Thread merupakan sebuah situs eksekusi seperti ready, running, suspend, block, queue,dll. 

Thread kadang disebut sebagai proses ringan (lightweight). Sebuah thread  terdapat : ID Thread, Program Counter, Register, dan Stack. Sebuah thread berbagi code section, data section dan resource sistem operasi dengan thread yang lain yang memiliki proses yang sama. Keuntungan dari adanya thread :
1.      Pembuatan thread baru lebih cepat dari pada proses baru 
2.      Penghentian thread lebih singkat daripada penghentian proses 
3.      Switching  antara dua thread  lebih singkat daripada switching antar proses 
4.      Thread dapart berkomunikasi satu sama lain

User Thread dan Kernel Thread
User Thread merupakan thread 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 thread secara umum lebih ringan dalam proses pembentukan dan penjadwalan. Akan tetapi tidak dapat berjalan secara multi threading.
Kernel thread merupakan thread yang diciptakan dan berjalan pada kernel level. Penjadwalan dan manajemen dilakukan oleh kernel pada kernel level. Kernel thread sering disebut juga proses yang ringan (Lightweight Process/LWP). Kernel thread lebih lambat proses pembentukan dan penjadwalan jika dibandingan dengan user thread. Kernel thread mendukung multithreading dimana beberapa thread dapat dijalankan dalam waktu yang bersamaan.

                             User Thread                                                       Kernel Thread

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.

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.

Thread 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)

ETHREAD (executive thread 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.


                                 Struktur Thread pada Windows XP

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.

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

1.      https://www.google.co.id/amp/s/tintakopi.wordpress.com/2011/10/24/thread-multhiread/amp/ 
2.      https://id.m.wikipedia.org/wiki/Utas_(komputer) 
3.      https://www.google.co.id/url?sa=t&source=web&rct=j&url=https://juliusbata.files.wordpress.com/2011/02/tugasso_juliusbata_309012.pdf&ved=0ahUKEwjy9o-bqI3XAhUSTY8KHb13DKUQFggcMAA&usg=AOvVaw3yV1FR7xp8tOkfYrWXPQ0_

Minggu, 08 Oktober 2017

Oracle VM VirtualBox



Review Aplikasi Virtual Machine “ Oracle VM VirtualBox “


Oracle VM VirtualBox merupakan salah satu aplikasi dari Virtual Machine. Sebelum membahas lebih lanjut mengenai Oracle VM Virtual Machine, sebaiknya kita bahas sedikit tentang apa itu Virtual Machine.

Apa itu Virtual Machine?
Virtual Machine atau Mesin Virtual dalam ilmu komputer adalah implementasi perangkat lunak dari sebuah mesin komputer yang dapat menjalankan program sama seperti layaknya sebuah komputer asli tanpa ada tambahan hardware aslinya. Seperti didefinisikan oleh Gerard J. Popek dan Robert P. Goldberg pada tahun 1974 yang menyatakan bahwa Virtual Machine (VM) merupakan sebuah duplikat yang efisien dan terisolasi dari suatu mesin asli. Jadi, kita bisa mensimulasikan perangkat keras tanpa ada perangkat keras aslinya. 

Apa saja kegunaan dari Virtual Machine?
Yang pertama adalah untuk mencoba sistem operasi, dengan adanya Virtual Machine kamu dapat mencoba sistem operasi seperti Windows atau Linux. Kamu bisa mencoba sistem operasi tersebut tanpa menguninstall sistem operasi yang kamu pakai sekarang, ini mirip dengan dual boot namun lebih fleksibel. Jika sudah tidak dibutuhkan lagi dari Virtual Machine tersebut, maka kita bisa menghapusnya saja. Yang kedua adalah untuk menguji coba software yang belum kita kenal keamanannya apakah itu aman untuk komputer kita atau tidak, kita bisa menginstalnya di Virtual Machine dahulu lalu jika aman kita bisa install software tersebut di komputer utama kita.

Nah, itu sedikit uraian tentang Virtual Machine yang perlu kita ketahui sebelum kita membahas sofwarenya. Software yang akan kita bahas kali ini adalah Oracle VM VirtualBox.

Apa itu Oracle VM VirtualBox?
Oracle VM VirtualBox merupakan perangkat lunak virtualisasi yang dapat digunakan untuk mengeksekusi sistem operasi “tambahan” di dalam sistem operasi “utama”. Maksudnya adalah sofware ini berfungsi untuk menambah sistem operasi yang ada di komputer kita dengan sistem operasi yang lain.
 Contohnya, komputer kita menggunakan sistem operasi Windows dan kita ingin mencoba sistem operasi Linux. Kita tidak perlu mengganti sistem operasi kita dengan Linux, hanya menambahkannya saja dengan software Oracle VM VirtualBox dan jika kita sudah bosan atau tidak memerlukannya lagi, bisa dihapus sistem operasi tersebut.
Sistem operasi yang dapat menjalankannya antara lain Linux, Mac OS X, Windows XP, Windows Vista, Windows 7, Windows 8, Solaris, dan OpenSolaris.

Sejarah Oracle VM VirtualBox

VirtualBox pada awalnya dikembangkan oleh Innotek GmbH dari Weinstadt, Jerman dengan lisensi perangkat lunak berpemilik, membuat satu versi produk yang tersedia tanpa biaya untuk penggunaan pribadi atau untuk evaluasi berdasarkan pada VirtualBox Personal Use and Evaluation License (PUEL). Pada Januari 2007, berdasarkan pada LiSoG, Innotek GmbH merilis VirtualBox Open Source Edition (OSE) sebagai perangkat lunak open-source gratis, yang berada dibawah persyaratan GNU General Publik License (GPL) versi 2.
Pada Februari 2008, Sun Microsystem mengakuisisi Innotek. Lalu Oracle Corporation mengakuisisi Sun pada Januari 2010 dan merekayasa ulang produk tersebut sebagai “Oracle VM VirtualBox”. 

Lingkungan Emisi VirtualBox

Pengguna VirtualBox dapat memuat beberapa OS guest di bawah sistem operasi host tunggal (host OS). Setiap guest dapat dimulai, dijeda dan berhenti secara mandiri di dalam mesin virtualnya sendiri (VM). Pengguna dapat secara independen mengkonfigurasi setiap VM dan menjalankannya di bawah pilihan virtualisasi berbasis perangkat lunak atau virtualisasi bantuan perangkat keras jika perangkat keras utama yang mendasari mendukung ini. OS host dan OS guest, aplikasi dapat berkomunikasi satu sama lain melalui sejumlah mekanisme termasuk clipboard umum dan fasilitas jaringan virtual. VM guest juga bisa langsung berkomunikasi satu sama lain jika dikonfigurasi untuk melakukannya.
-          Software berbasis virtualisasi
Dengan tidak adanya virtualisasi dengan bantuan perangkat keras, VirtualBox menerapkan pendekatan virtualisasi berbasis perangkat lunak standar. Mode ini mendukung OS guest 32-bit yang berjalan pada deringan 0 dan 3 arsitektur cincin Intel.
VirtualBox menggunakan CSAM dan PATM untuk memeriksa dan menambal instruksi yang menyinggung setiap kali terjadi kesalahan. VirtualBox juga berisi recompiler dinamis, berdasarkan QEMU untuk mengkompilasi ulang mode nyata atau kode mode yang dilindungi sama sekali (misalnya kode BIOS, tamu DOS, atau startup sistem operasi)

-          Virtualisasi dibantu hardware
VirtualBox mendukung kedua Intel VT-x dan AMD-V hardware-virtualisasi. Dengan memanfaatkan fasilitas ini, VirtualBox dapat menjalankan setiap VM tamu di ruang alamatnya yang terpisah; OS guest ring ring 0 berjalan pada host pada ring 0 di mode non-root VMX daripada di ring 1.
VirtualBox mendukung beberapa guest (termasuk guest 64-bit, guest SMP dan beberapa OS berpemilik tertentu) hanya di host dengan virtualisasi bantuan perangkat keras.
.
Fungsi dari Virtualbox :
  1. Mencoba sistem operasi yang berbeda dengan operating system utama
Mencoba sistem operasi yang belum pernah kita gunakan dan dapat belajar menggunakan sistem operasi yang lain selain sistem operasi yang dipakai, dan juga tidak akan mengganggu sistem operasi utama.
  1. Mencoba sistem operasi yang baru rilis atau masih dalam tahap uji
Semakin berkembangnya waktu, semakin berkembang pula tekhnologi yang tercipta. Sistem operasi pun mengalami perkembangan menjadi sistem operasi yang lebih mumpuni kinerjanya dari versi yang sebelumnya. Dengan VirtualBox kita bisa test sistem operasi yang baru rilis atau dalam tahap uji, bisa sebagai bahan evaluasi atau bisa kita coba kinerjanya, apakah sistem operasi yang baru dapat berjalan dengan baik sesuai dengan spesifikasinya atau tidak.
  1. Mencoba untuk membuat sebuah simulasi jaringan
Mencoba untuk membuat simulasi jaringan dengan VirtualBox akan lebih mudah, dengan virtualisasinya yang fleksibel dan mudah untuk dipelajari juga.
  1. Mungkin juga untuk mencoba simulasi menguji sebuah security, entah itu OS ataupun website
Manfaat Menggunakan Virtualbox :
  1. Dapat bermanfaat bagi kaum awam untuk belajar menginstall sistem operasi, tanpa perlu mengubah atau mengcopykan data data yang ada di hardisk
  2. Dapat menginstall beberapa sistem operasi secara cuma-cuma tanpa harus mempermanent-kannya ke dalam hardisk
  3. Hemat uang, dalam arti tidak perlu membeli hardware-hardware atau computer baru untuk memakai banyak operating system

Referensi :

Tugas Softskill : Aplikasi Android Pemesanan Warteg

Pemesanan Menu Warteg melalui  Aplikasi Android Pada dasarnya pemesanan warteg pada saat ini hanya bergantung pada sumber daya manusia. S...