Rabu, 25 Maret 2020

Thread Pada Sistem Operasi Windows


1.      Thread
·         Thread adalah unit terkecil dalam suatu proses yang bisa dijadwalkan oleh sistem operasi.
·         Merupakan sebuah status eksekusi (ready, running, suspend, block, queue, dll)
·         Kadang disebut sebagai proses ringan (lightweight).
·         Unit dasar dari dari sistem utilisasi pada processor (CPU).
·         Dalam 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.

2.      Single-Threading dan Multi-Threading Single
Threading adalah sebuah lightweight process (proses sederhana) yang mempunyai thread tunggal yang berfungsi sebagai pengendali/ controller. Multi-Threading adalah proses dengan thread yang banyak dan mengerjakan lebih dari satu tugas dalam satu waktu.

3.      Keuntungan Multi-Threading
·         Responsive; tanggap: Multi-Threading mengizinkan program untuk berjalan terus walau-pun pada bagian program tersebut di block atau sedang dalam keadaan menjalankan operasi yang lama/ panjang. Sebagai contoh, multithread web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.
·         Pembagian sumber daya: Secara default, thread membagi memori dan sumber daya dari proses.Ketika thread berjalan pada data yang sama, thread tersebut bisa berbagi cache memory.
·         Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses adalah sangat mahal. Alternatifnya, karena thread membagi sumber daya dari proses, ini lebih ekonomis untuk membuat threads.
·         Pemberdayaan arsitektur multiprosesor: Keuntungan dari multi-threading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara paralel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu.
4.       Kerugian Multi-Threading
·         Multiple thread bisa mengganggu satu sama lain saat berbagi hardware resource, misalnya chace memory.
·         Execution time (waktu proses) dari sebuah single-thread tidak dapat diimprove (ditambah), tapi malah bisa diturunkan. Ini terjadi karena penurunan frequensi yang dibutuhkan ketika terjadi pergantian thread yang berjalan.
·         Harus ada dukungan dari hardware ataupun software untuk melakukan multi-Threading.

5.      Model-Model Threading
1)      Kernel-level threading; thread ini dibuat oleh pengguna yang berkorespondensi 1-1 dengan entitas-entitas yang terjadwalkan yang berada di kernel. Ini merupakan implementasi (penerapaan) paling sederhana dari threading.

·         Thread kernel didukung langsung oleh sistem operasi.
·         Pembuatan, penjadwalan, dan manajemen thread dilakukan oleh kernel pada kernel space.
·         Pengaturan thread dilakukan oleh sistem operasi, sehingga pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread.
2)      User-level threading; sebuah pemetaan N-1, yang berarti bahwa semua level aplikasi thread dipetakan ke entitas tunggal yang ada di kernel. Dengan pendekatan ini, switching proses dapat dilakukan dengan sangat cepat.
·         Thread pengguna didukung kernel serta diimplementasikan dengan pustaka (library) thread pada tingkatan pengguna.
·         Pustaka (library) menyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel.
• Semua pembuatan dan penjadwalan thread dilakukan dalam ruang pengguna tanpa campur tangan kernel.

6.      Thread dalam Sistem Operasi
·         Sistem operasi telah mendukung proses multithreading.
·         Setiap sistem operasi memiliki konsep tersendiri dalam pengimplementasiannya.
·         Sistem operasi dapat mendukung thread pada tingkatan kernel maupun tingkatan pengguna

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.


Referensi :

Minggu, 15 Maret 2020

Jenis Algoritma Berdasarkan Penjadwalan


Assalamualaikum! Kali ini saya akan menyampaikan secara umum apa itu algoritma berdasarkan penjadwalan. secara umum ya, untuk secara detail akan saya sampaikan di lain waktu. oke cekidot gan!

Jenis Algoritma Berdasarkan Penjadwalan
Penjadwalan berkaitan dengan permasalahan memutuskan proses mana yang akan dilaksanakan dalam suatu sistem. Proses yang belum mendapat jatah alokasi dari CPU akan mengantri di ready queue. Algoritma penjadwalan berfungsi untuk menentukan proses manakah yang ada di ready queue yang akan dieksekusi oleh CPU.

STRATEGI DASAR PENJADWALAN
Strategi penjadwalan proses secara umum dibedakan menjadi dua kelompok besar, yaitu penjadwalan non-preemptive dan preemptive.
1.          Non-preemptive (run-to-completion)
Pada strategi ini, begitu proses telah berjalan maka sistem operasi maupun proses lain tidak dapat mengmabil alih eksekusi prosesor. Pengalihan hanya dapat terjadi jika proses yang running sudah selesai, baik secara normal maupun abnormal. Strategi ini membahayakan sistem dan proses lain, sebab jika proses yang sedang berjalan mengalami kegagalan, crash ataupun looping tak berhingga maka sistem operasi menjadi tidak berfungsi dan proses lain tidak mendapatkan kesempatan untuk dieksekusi. Strategi penjadwalan non-preemptive umumnya digunakan pada sistem batch atau sekuensial.

2.          Preemptive
Pada strategi ini, sistem operasi dan proses lain dapat mengambil alih eksekusi prosesor tanpa harus menunggu proses yang sedang running menyelesaikan tugasnya. Penjadwalan preemptive merupakan fitur yang penting, terutama pada sistem dimana proses-proses memerlukan tanggapan prosesor secara cepat. Sebagai contoh adalah sistem real-time, dimana jika terjadi interupsi dan tidak segera dilayani maka dapat berakibat fatal. Contoh lain adalah sistem interaktif time-sharing, dimana pengguna sistem mengharapkan tanggapan yang cepat dari sistem. Secara umum, sistem konkuren seperti sistem operasi yang multitasking lebih menghendaki sistem penjadwalan preemptive.

PENJADWALAN PREEMPTIVE
Penjadwalan CPU mungkin akan dijalankan ketika proses dalam keadaan:
·         Berubah dari running ke waiting state.
·         Berubah dari running ke ready state.
·         Berubah dari waiting ke ready state.
·         Dihentikan.
Penjadwalan Preemptive mempunyai arti kemampuan sistem operasi untuk memberhentikan sementara proses yang sedang berjalan untuk memberi ruang kepada proses yang prioritasnya lebih tinggi. Penjadwalan ini bisa saja termasuk penjadwalan proses atau M/K. Penjadwalan Preemptive memungkinkan sistem untuk lebih bisa menjamin bahwa setiap proses mendapat sebuah slice waktu operasi. Dan juga membuat sistem lebih cepat merespon terhadap event dari luar (contohnya seperti ada data yang masuk) yang membutuhkan reaksi cepat dari satu atau beberapa proses. Membuat penjadwalan yang Preemptive mempunyai keuntungan yaitu sistem lebih responsif daripada sistem yang memakai penjadwalan Non Preemptive.
Dalam waktu-waktu tertentu, proses dapat dikelompokkan ke dalam dua kategori: proses yang memiliki Burst M/K yang sangat lama disebut I/O Bound, dan proses yang memiliki Burst CPU yang sangat lama disebutCPU Bound. Terkadang juga suatu sistem mengalami kondisi yang disebut busywait, yaitu saat dimana sistem menunggu request input(seperti disk, keyboard, atau jaringan). Saat busywait tersebut, proses tidak melakukan sesuatu yang produktif, tetapi tetap memakan resource dari CPU. Dengan penjadwalan Preemptive, hal tersebut dapat dihindari.
Dengan kata lain, penjadwalan Preemptive melibatkan mekanisme interupsi yang menyela proses yang sedang berjalan dan memaksa sistem untuk menentukan proses mana yang akan dieksekusi selanjutnya.
Penjadwalan nomor 1 dan 4 bersifat Non Preemptive sedangkan lainnya Preemptive. Penjadwalan yang biasa digunakan sistem operasi dewasa ini biasanya bersifat Preemptive. Bahkan beberapa penjadwalan sistem operasi, contohnya Linux 2.6, mempunyai kemampuan Preemptive terhadap system call-nya ( preemptible kernel). Windows 95, Windows XP, Linux, Unix, AmigaOS, MacOS X, dan Windows NT adalah beberapa contoh sistem operasi yang menerapkan penjadwalan Preemptive.
Lama waktu suatu proses diizinkan untuk dieksekusi dalam penjadwalan Preemptive disebut time slice/quantum. Penjadwalan berjalan setiap satu satuan time slice untuk memilih proses mana yang akan berjalan selanjutnya. Bila time slice terlalu pendek maka penjadwal akan memakan terlalu banyak waktu proses, tetapi bila time slice terlau lama maka memungkinkan proses untuk tidak dapat merespon terhadap event dari luar secepat yang diharapkan.


PENJADWALAN NON PREEMPTIVE
Penjadwalan Non Preemptive ialah salah satu jenis penjadwalan dimana sistem operasi tidak pernah melakukan context switch dari proses yang sedang berjalan ke proses yang lain. Dengan kata lain, proses yang sedang berjalan tidak bisa di- interupt.
Penjadwalan Non Preemptive terjadi ketika proses hanya:
·         Berjalan dari running state sampai waiting state.
·         Dihentikan.
Ini berarti CPU menjaga proses sampai proses itu pindah ke waiting state ataupun dihentikan (proses tidak diganggu). Metode ini digunakan oleh Microsoft Windows 3.1 dan Macintosh. Ini adalah metode yang dapat digunakan untuk platforms hardware tertentu, karena tidak memerlukan perangkat keras khusus (misalnya timer yang digunakan untuk menginterupt pada metode penjadwalan Preemptive).

Dispatcher       
Komponen penjadwalan proses lainnya adalah dispatcher. Dispatcher adalah suatu rutin sistem operasi yang berfungsi untuk melakukan pengalihan eksekusi dari proses yang running ke proses yang terseleksi oleh short-term scheduler. Rutin ini memindahkan isi register prosesor, konteks prosesor, ke PCB proses yang dihentikan, kemudian mengubah statusnya menjadi ready, kemudian menginisiasi isi register prosesor menggunakan konteks prosesor yang tersimpan dalam PCB proses terpilih. Durasi waktu yang diperlukan untuk melakukan pengalihan (switching) disebut dengan dispatch latency.


JENIS-JENIS ALGORITMA PENJADWALAN ADALAH

1.          Nonpreemptive, menggunakan konsep :
a.       FIFO (First In First Out) atau FCFS (First Come First Serve)
b.      SJF (Shortest Job First)
c.       HRN (Highest Ratio Next)
d.      MFQ (Multiple Feedback Queues)

2.          Preemptive, menggunakan konsep :
a.       RR (Round Robin)
b.      SRF (Shortest Remaining First)
c.       PS (Priority Schedulling)
d.      GS (Guaranteed Schedulling)

Klasifikasi lain selain berdasarkan dapat/tidaknya suatu proses diambil secara paksa adalah klasifikasi berdasarkan adanya prioritas di proses-proses, yaitu :
1.          Algoritma penjadwalan tanpa berprioritas.
2.          Algoritma penjadwalan berprioritas, terdiri dari :
a.       Berprioritas static
b.      Berprioritas dinamis

Oke sekian yang dapat saya sampaikan, semoga dapat membantu. Wassalamualaikum.

Terimakasih untuk :

Sabtu, 07 Maret 2020

Struktus Sistem Operasi



Assalamualaikum,
Kali ini saya akan berbagi sudut pandang saya mengenai Struktur Sistem Operasi. Namun, sebelum ke struktur, mari kita mengulang terlebih dahulu mengenai Sistem Operasi.

Apa itu Sistem Operasi? Menurut wikipedia, Sistem Operasi (Operating System) adalah perangkat lunak sistem yang mengatur sumber daya dari perangkat keras dan perangkat lunak, serta sebagai daemon untuk program komputer.

Hm, cukup membingungkan bukan? mari kita tarik garis besarnya. Sistem Operasi adalah sebuah perangkat lunak yang dipasang pada lapisan pertama pada sebuah perangkat keras sebelum dipasangnya para aplikasi-aplikasi penunjang. Contohnya seperti Windows, Linux, atau juga Android. tentu Sistem Operasi menjadi wadah bagi aplikasi-aplikasi tambahan.

Lalu apa itu Struktur Sistem Operasi?? dari segi struktur, Struktur Sistem Operasi terbagi menjadi :

1. System Monolitic (Struktur Sederhana)
System monolitik ini berisikan kumpulan dari berbagai prosedur yang dapat dipanggil oleh persedur lainnya untuk menjalankan sistem. Sehingga antar prosedur dapat saling bekerja sama dalam menjalankan sebuah sistem. Beberapa contoh sistem operasi yang memiliki system monolitic adalah seperti MS DOS dan UNIX. MS DOS lebih berfokus pada menyediakan fungsional yang lebih sedikit dan tidak bisa dibagi dalam beberapa modul.

2. Layered System (Sistem Berlayer)
Sistem operasi memiliki sistem layer. Maksudnya adalah sistem operasi terdiri dari beragam layer mulai dari bahwa hingga atas. Sehingga masing-masing layer memiliki tujuan dan fungsi masing-masing. Lapisan layer paling bawah biasa digunakan sebagai perangkat keras, sedangkan lapiran layer paling atas digunakan sebagai user-interface. Adanya struktur berlayer ini digunakan untuk mengurangi kompleksitas rancangan dari implementasi sistem operasi.

3. Kernel Mikro
Fungsi dari kernel mikro ini adalah untuk mempermudah komunikasi yang terjadi antara program client dengan beragam layanan yang terdapat pda ruang user. Sehingga dengan adanya kernel mikro ini dapat mempermudah dan memperluas sistem operasi, dan mudah ketika akan diubah (transformasi) ke arsitektur yang lebih baru. Selain itu, dengan menggunakan kernel mikro, kode program akan aman karena lebih kecil.

4. Modules
Struktur modular ini dimulai dari kernel yang biasanya memiliki kumpulan komponen inti dan terhubung dengan penambahan layanan secara dinamis dan dalam waktu boot berjalan. Sehingga untuk mengatasi hal tersebut, struktur modular ini dilakukan dengan cara menggunakan pemanggilan modul secara dinamis. Contoh dari sistem operasi yang menggunakan struktur modullar ini adalah Solaris, Linux dan MacOS

5. Virtual Machine
Virtual Machine merupakan jenis struktur yang memiliki sistem time-sharing. Sistem time-sharing ini memiliki fungsi untuk dapat menyediakan kemampuan multi-programming dan perluasan sistem mesin dengan user interface yang lebih mudah digunakan. Sehingga pengguna tidak akan merasa kebingungan dalam menggunakan jenis sistem ini.
Struktur virtual machine terdiri dari 2 jenis yaitu control program dan conventional monitor system. Control program digunakan sebagai pengatur fungsi prosesor, memori dan perangkat input/output.
Sehingga control program akan berhubungan langsung dengan perangkat keras yang akan digunakan. Sedangkan Coventional monitor system digunakan untuk mengatur fungsi dari proses, pengelolaan informasi dan pengelolaan perangkat dari sistem operasi

6. Client-Server
Pada dasarnya sistem operasi terdiri dari beragam proses yang dikategorikan sebagai client dan server. Client merupakan jenis proses permintaan layanan, sedangkan server adalah jenis proses yang memberikan layanan. Sehingga proses akan dimulai dari client yang meminta layanan tertentu, dan server akan memberikan dan mengirim informasi terkait layanan yang diinginkan oleh client

7. Sistem Berorientasi Objek
Sistem operasi berorientasi objek maksudnya adalah pendekatan sistem operasi yang strukturnya menggunakan objek. Sehingga pendekatan ini juga mengadopsi dari teknologi yang berorientasi objek. Struktur sistem operasi berorientasi objek merupakan sistem operasi yang sangat terstruktur, sehingga dapat dengan mudah memisahkan layanan dan implementasinya. Sehingga informasi yang dihasilkan tidak tercampur dan membuat user lebih mudah mengerti. Contoh dari sistem operasi berorientasi objek adalah MS WINDOWS. Namun belum seluruhnya menggunakan sistem berorientasi objek.

Cukup banyak bukan? mungkin saat ini hanya itu yang dapat saya sampaikan mengenai struktur sistem operasi. Nanti di lain hari, akan saya kupas satu persatu :) terimakasih telah berkunjung :)

Referensi




Jumat, 29 Maret 2019

Hubungan DNS (Domain Name System) dan Subnetting

Assalamualaikum.
Halo teman teman, ini adalah postingan pertama saya, dan saya harap ini bisa berguna bagi yang mau belajar seperti apa Hubungan DNS (Domain Name System) dan Subnetting terlebih dahulu.

Sebelumnya, apa sih subnetting itu? menurut pemahaman saya sendiri, subnetting itu adalah pemberian alamat (IP Address) kepada sebuah komputer (sering juga disebut pemberian nama).
Bolehkah komputer tidak dikonfigurasi subnetting? bagi kalian pengguna jasa internet, tentu perlu, namun jika komputer kalian tidak digunakan untuk sharing data maupun mengakses internet, subnetting tidak diperlukan, seperti hanya untuk mengetik, bermain game, dan lainnya.
Mengapa harus ada subnettingSubnetting diperlukan agar setiap komputer memiliki alamat (IP Address) masing-masing, dengan itu kita dapat saling berkunjung (browsing/sharing data) tanpa sebuah alamat, kita tidak akan tau kemana kita akan pergi kan? hehe.

Oke sedikit mendekat ke topik ya, pemberian alamat yang dimaksud disebut IP Address, jadi alamat setiap komputer/perangkat disebut IP Address, IP Address terbagi menjadi 2 jenis, yaitu IPv4 (IP versi 4) dan IPv6 (IP versi 6), dan saat ini dunia jaringan masih menggunakan IPv4, jadi kita bahas IPv4 dulu ya manteman hehe.

IPv4 berbentuk 32bit yang artinya IP tersebut terbentuk dari 32 bilangan biner (1&0), yang terbagi dalam 4 segmen, yang masing-masing segmen berisi 8bit, jadi penulisan IPv4 dalam bilangan biner kurang lebih seperti ini, 11000000.11111100.11110000.11000000, tapi IPv4 biasa ditulis dalam bentuk desimal seperti, 192.240.240.192

oke sampai sini sudah mengerti bentuk IPv4? kita berpindah ke topik DNS yaa.
DNS (Domain Name System), saya singkat DNS saja yaa, DNS adalah IP Address dalam wujud DOMAIN, maksudnya wujud? domain? iya kita tau disini bahwa IP Address berbentuk desimal ataupun biner, domain disini seperti alamat situs web yang biasa kita temui, seperti google.com, facebook.com, dan yang lainnya.
Mengapa perlu ada DNS? DNS berperan sangat penting bagi kalian yang tidak cukup mengingat banyak alamat situs web di dunia, DNS diibaratkan seperti buku kontak yang ada di SmartPhone kita, kita bisa menyimpan nomor 08xxxxxxxxxx dengan nama Edmar, dan saat ingin menghubungi Edmar, kita tinggal mencari nama tesebut di kontak dan mengubunginya. Apa jadinya jika kita tidak memiliki kontak di SmartPhone kita? tentu saja kita harus mengingat nomor Edmar ketika kita ingin menghubunginya. begitupun dalam dunia Internet, fungsi DNS  yaitu menyimpan alamat-alamat situs di internet dalam bentuk DOMAIN.

Jadi, disini contoh situs google.com, google.com merupakan pengaplikasian dari DNS, jadi disini google.com juga memiliki IP Address, tanpa adanya DNS, kita tidak bisa mengakses Google hanya dengan mengetik google.com di penulisan alamat, jika kita ingin mengakses Google, kita harus tau IP Address Google.

Untuk Konfigurasi DNS, bagi kalian pengguna Provider jaringan biasanya DNS telah terkonfigurasi otomatis, seperti Telkomsel, Indosat, dan lainnya. Tapi DNS juga bisa dikonfigurasi secara manual yaa, nanti saya jelaskan.

Rupanya hanya segitu penjelasan  Hubungan DNS (Domain Name System) dan Subnetting yang bisa saya sampaikan, semoga bisa bermanfaat, Sedikit Ilmu Bisa Berguna, apabila ada kekurangan, kesalahan, dan lainnya bisa ditanyakan yaa manteman, sampai jumpa lain waktu dengan pembahasan lain, Wassalamualaikum