Minggu, 08 Desember 2019

Thread & Prosesnya



ALL ABOUT THREAD


       Thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor. User level thread adalah thread yang tampak oleh programmer dan tidak diketahui oleh kernel. User level thread secara tipikal dikelola oleh sebuah library thread di ruang user. Kernel level thread didukung dan dikelola oleh kernel sistem operasi. Secara umum, user level thread lebih cepat dalam pembuatan dan pengelolaan dari pada kernel thread. Ada tiga perbedaan tipe dari model yang berhubungan dengan user dan kernel thread.
  • Model many to one: memetakan beberapa user level thread hanya ke satu buah kernel thread.
  • Model one to one: memetakan setiap user thread ke dalam satu kernel thread. Berakhir.
  • Model many to many: mengizinkan pengembang untuk membuat user thread sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu.



Multithreaded Process





Benefits/manfaat

  •  Kemampuan reaksi
  •  Sumber daya berbagi
  •  Ekonomi
  •  Scalabilas
   Thread bermanfaat untuk Multithreading yang berguna untuk Multiprocessor dan Singleprocessor. Kegunaan untuk system Multiprocessor, adalah :
             a) Sebagai unit pararel atau tingkat granularitas pararelisme.
             b) Peningkatan kinerja disbanding berbasis proses.
 
Kegunaan Multithreading pada singleprocessor, adalah :

             a) Kerja foreground dan background sekaligus di satu aplikasi.
             b) Penanganan asynchronous processing menjadi lebih baik.
             c) Mempercepat eksekusi program.
             d) Pengorganisasian program menjadi lebih baik.


Kegunaan Thread

Multithreading berguna untuk multiprocessor dan singleprocessor.

Kegunaan untuk system multiprocessor adalah :

  • Sebagai unit pararel atau tingkat granularitas pararelisme.
  • Peningkatan kinerja disbanding berbasis proses.

Karakteristik Thread

         Proses merupakan lingkungan eksekusi bagi thread-thread yang dimilikinya. Thread-thread di satu proses memakai bersama sumber daya yang dimiliki proses, yaitu :
  • Ruang alamat.
  • Himpunan berkas yang dibuka.
  • Proses-proses anak.
  • Timer-timer.
  • Snyal-sinyal.
  • Sumber daya-sumber daya lain milik proses.

Implementasi Paket Thread
 
1. Thread level kernel.
   > Keunggulan :
      · Memudahkan koordinasi multithread seperti proses server.
      · Tidak seboros kumpulan proses tradisional.

  > Kelemahan :
     · Operasi manajemen thread sangat lebih boros.
     · Kernel harus menyediakan semua feature.

2. Thread level pemakai.

   > Keunggulan :
      Kinerja luar biasa bagus disbanding thread level kernel.
      · Tidak diperlukan modifikasi kernel.
      · Fleksibelitas tinggi.

   > Kelemahan :
      · Tidak manfaatkan multiprocessor.
      · Untuk aplikasi dengan keterlibatan kernel yang kecil.
      · Mengharuskan nonblocking system call.


Status Thread:

Suatu thread bisa berada pada salah satu dari status berikut:


New :
Thread yang berada di status ini adalah objek dari kelas Thread yang baru dibuat, yaitu saat instansiasi objek dengan statement new. Saat thread berada di status new, belum ada sumber daya yang dialokasikan, sehingga thread belum bisa menjalankan perintah apapun.
Runnable:
Agar thread bisa menjalankan tugasnya, method start() dari kelas Thread harus dipanggil. Ada dua hal yang terjadi saat pemanggilan method start(), yaitu alokasi memori untuk thread yang dibuat dan pemanggilan method run(). Saat method run() dipanggil, status thread berubah menjadi runnable, artinya thread tersebut sudah memenuhi syarat untuk dijalankan oleh JVM. Thread yang sedang berjalan juga berada di status runnable.
Blocked :
Sebuah thread dikatakan berstatus blocked atau terhalang jika terjadi blocking statement, misalnya pemanggilan method sleep()sleep() adalah suatu method yang menerima argumen bertipe integer dalam bentuk milisekon. Argumen tersebut menunjukkan seberapa lama thread akan "tidur". Selain sleep(), dulunya dikenal method suspend(), tetapi sudah disarankan untuk tidak digunakan lagi karena mengakibatkan terjadinya deadlock. Di samping blocking statement, adanya interupsi M/K juga dapat menyebabkan thread menjadi blockedThread akan menjadi runnable kembali jika interval method sleep()-nya sudah berakhir, atau pemanggilan method resume() jika untuk menghalangi thread tadi digunakan method suspend() atau M/K sudah tersedia lagi.
Dead : 
Sebuah thread berada di status dead bila telah keluar dari method run(). Hal ini bisa terjadi karena thread tersebut memang telah menyelesaikan pekerjaannya di method run(), maupun karena adanya pembatalan thread. Status jelas dari sebuah thread tidak dapat diketahui, tetapi method isAlive() mengembalikan nilai boolean untuk mengetahui apakah thread tersebut dead atau tidak.

Jumat, 15 November 2019

All About Magnetic Disk & Raid 5


Haiii.... kembali lagi bersama saya, hari ini gezz kita akan membahas seperti yang ada dijudul yaitu magnetic disk dan juga Raid 5, langsung saja ya guys tanpa panjang lebar kita bahas. Cus......





1. Pengertian Magnetic Disk:

            Magnetic disk adalah DASD pertama yang dibuat oleh industri komputer. Penyimpanan magnetik (bahasa Inggris: Magnetic disk) merupakan piranti penyimpanan sekunder yang paling banyak dijumpai pada sistem komputer modern. Pada saat disk digunakan, motor drive berputar dengan kecepatan yang sangat tinggi. Ada sebuah read-write head yang ditempatkan di atas permukaan piringan tersebut. Permukaan disk terbagi atas beberapa track yang masih terbagi lagi menjadi beberapa sektor. Cakram fixed-head memiliki satu head untuk tiap-tiap track, sedangkan cakram moving-head (atau sering dikenal dengan nama cakram keras ) hanya memiliki satu head yang harus dipindah-pindahkan untuk mengakses dari satu track ke track yang lainnya. Magnetik Disk (Piringan Magnetik) terbuat dari satu atau lebih piringan hitam metal atau plastik dan permukaannya dilapisi lapisan iron-oxide. Perekaman datanya disimpan pada permukaan tersebut dalam bentuk kode binary.

Piringan magnetik yang terbuat dari plastik dan sebuah piringan disebut dengan floppy disk (micro disk dan mini disk), yang terbuat dari metal dan banyak piringan disebut hard disk.Lapiran dasar biasanya berbahan Alumunium-Alumunium Alloy Kaca

Bahan kaca memberikan manfaat antara lain
  • Meningkatkan reliabilitas disk
  • Mengurangi R/W error
  • Kemampuan untuk mendukung kerapatan tinggi
  • Kekakuan yang lebih baik untuk mengurangi dinamisasi disk
  • Kemampuan menahan goncangan dan kerusakan
Beberapa memory yang tergolong pada magnetic disk ini sendiri adalah Flopy Disk, IDE Disk, dan SCSI Disk. Magnetik disk sendiri terbuat dari piringan bundar yang terbuat dari logam atau plastik dimana permukaan dari bahan tersebut mempunyai sifat magnetic sehingga nanti bisa menghasilkan semacam medan magnet yang sangat diperlukan untuk proses baca tulis dari memory tersebut karena saat proses baca/tulis menggunakan kepala baca yang disebut dengan head.


2.Metode Pengalamatan Dalam Magnetic Disk

Metode pengalamatan dalam magnetic disk ada dua yaitu metode silinder dan metode sektor, penjelasannya sebagai berikut :


1.Metode Silinder




Metode silinder merupakan Pengalamatan berdasarkan nomor silinder, nomor permukaan dan nomor record. Semua track dari disk pack membentuk suatu silinder. Jadi bila suatu disk pack dengan 200 track per permukaan, maka mempunyai 200 silinder. Bagian nomor permukaan dari pengalamatan record menunjukkan permukaan silinder record yang disimpan. Jika ada 11 piringan maka nomor permukaannya dari 0 – 19 atau dari 1 – 20. Pengalamatan dari nomor record menunjukkan dimana record terletak pada track yang ditunjukkan dengan nomor silinder dan nomor permukaan.



2.Metode Sektor

   

Metode sektor, Setiap track dari pack dibagi kedalam sektor-sektor. Setiap sektor adalah storage area untuk banyaknya karakter yang tetap. Pengalamatan recordnya berdasarkan nomor sektor, nomor track, nomor permukaan. Nomor sektor yang diberikan oleh disk controller menunjukkan track mana yang akan diakses dan pengalamatan record terletak pada track yang mana. 

   Setiap track pada setiap piringan mempunyai kapasitas penyimpanan yang sama meskipun diameter tracknya berlainan. Keseragaman kapasitas dicapai dengan penyesuaian density yang tepat dari representasi data untuk setiap ukuran track. Keuntungan lain dari pendekatan keseragaman kapasitas adalah file dapat ditempatkan pada disk tanpa merubah lokasi nomor sector (track atau cylinder) pada file.




3.Komponen Pada Magnetic Disk

   Hard disk terdiri atas beberapa komponen penting. Komponen utamanya adalah pelat (platter) yang berfungsi sebagai penyimpan data. Pelat ini adalah suatu cakram padat yang berbentuk bulat datar, kedua sisi permukaannya dilapisi dengan material khusus sehingga memiliki pola-pola magnetis. Pelat ini ditempatkan dalam suatu poros yang disebut spindle. untuk lebih jelasnya lagi penjelasan dari komponen-komponen magnetic disk simak dibawah ini :)


1. Spindle

Hard disk terdiri dari spindle yang menjadi pusat putaran dari keping-keping cakram magnetik penyimpan data. Spindle ini berputar dengan cepat, oleh karena itu harus menggunakan high quality bearing.

Dahulu hard disk menggunakan ball bearing namun kini hard disk sudah menggunakan fluid bearing. Dengan fluid bearing maka gaya friksi dan tingkat kebisingan dapat diminimalisir. Spindle ini yang menentukan putaran hard disk. Semakin cepat putaran rpm hard disk maka semakin cepat transfer datanya.

2. Cakram Magnetik (Magnetic Disk)

Pada cakram magnetik inilah dilakukan penyimpanan data pada hard disk. Cakram magnetik berbentuk plat tipis dengan bentuk seperti CD-R. Dalam hard disk terdapat beberapa cakram magnetik. 

Hard disk yang pertama kali dibuat, terdiri dari 50 piringan cakram magnetik dengan ukuran 0.6 meter dan berputar dengan kecepatan 1.200 rpm. Saat ini kecepatan putaran hard disk sudah mencapai 10.000rpm dengan transfer data mencapai 3.0 Gbps.


3. Read-write Head

Read-write Head adalah pengambil data dari cakram magnetik. Head ini melayang dengan jarak yang tipis dengan cakram magnetik. Dahulu head bersentuhan langsung dengan cakram magnetik sehingga mengakibatkan keausan pada permukaan karena gesekan. Kini antara head dan cakram magnetik sudah diberi jarak sehingga umur hard disk lebih lama.

Read-write head terbuat bahan yang terus mengalami perkembangan, mulai dari Ferrite head, MIG (Metal-In-Gap) head, TF (Thin Film) Head, (Anisotropic) Magnetoresistive (MR/AMR) Heads, GMR (Giant Magnetoresistive) Heads dan sekarang yang digunakan adalah CMR (Colossal Magnetoresistive) Heads.


4. Enclosure

Enclosure adalah lapisan luar pembungkus hard disk. Enclosure berfungsi melindungi semua bagian dalam hard disk agar tidak terkena debu, kelembaban dan hal lain yang dapat mengakibatkan kerusakan data.
 
Dalam enclosure terdapat breath filter yang membuat hard disk tidak kedap udara, hal ini bertujuan untuk membuang panas yang ada didalam hard disk karena proses putaran spindle dan pembacaan Read-write head.

5. Interfacing Module

Interfacing modul berupa seperangkat rangkaian elektronik yang mengendalikan kerja bagian dalam hard disk, memproses data dari head dan menghasilkan data yang siap dibaca oleh proses selanjutnya. Interfacing modul yang dahulu banyak dipakai adalah sistem IDE (Integrated Drive Electronics) dengan sistem ATA yang mempunyai koneksi 40 pin. 



RAID

      RAID (yang kepanjangannya adalah Redundant Array of Independent Disks), adalah sebuah teknologi di dalam penyimpanan data komputer yang digunakan untuk mengimplementasikan fitur toleransi kesalahan pada media penyimpanan komputer (utamanya adalah hard disk) dengan menggunakan cara redundansi (penumpukan) data, baik itu dengan menggunakan perangkat lunak, maupun unit perangkat keras RAID terpisah.
       Dengan RAID, data yang disimpan akan dibagi/direplika ke beberapa hardisk  secara terpisah, guna untuk meningkatkan kehandalan data atau bisa juga untuk meningkatkkan performa I/O hardisk.

       Kehandalan data bisa terpenuhi dengan RAID karena penyimpanan data tidak hanya diletakkan di beberapa disk. Jika ada disk yang rusak, data akan tetap aman, dan hardisk yang rusak dapat diganti dengan segera tanpa mempengaruhi eksistensi data.
Peningkatan performa I/O hardisk bisa terpenuhi karena ketika hardisk melakukan baca/tulis tidak dilakukan sendiri, tetapi dilakukan bersama-sama dengan hardisk lainnya. Istilahnya mereka secara gotong royong melakukan tugas. Sebagai contoh, RAID 0 dengan 2 hardisk, jika kecepatan per disk adalah 7200 rpm, maka dengan RAID 0, kecepatan berlipat ganda, 2 x 7200 rpm = 14400 rpm!
Pada Kesempatan kali ini saya hanya akan membahas tentang Raid 5 saja teman-teman, skuyy disimak ya penjelasannya:

RAID 5
rsz_2raid_5RAID 5 menggunakan metode block-level striping dengan data parity didistribusikan ke semua hardisk. RAID 5 cukup populer karena mampu menghadirkan redundansi data dengan biaya yang tidak terlalu besar.
RAID 5 memiliki toleransi kerusakan disk hanya satu saja, sama seperti RAID 1. Jadi, jika anda menggunakan 3 x 1TB hardisk, maka kapasitas simpan yang bisa digunakan adalah 2 TB saja, karena 1 TB lainnya digunakan untuk toleransi kerusakan.
RAID 5 memiliki performa baca dua kali lipat lebih cepat, tetapi tidak ada peningkatan pada performa tulis. RAID level ini dianjurkan untuk penyimpanan data, file server, atau untuk backup server.
Cukup sekian yaa blog dari saya semoga bermanfaat bagi teman-teman sekalian. Enjoy your day everybody.....

Bilangan 32 bit & 64 bit Floating Point

Bilangan Floating-Point 32-bit (single-precision)

Bilangan floating-point 32-bit tersusun atas (Gambar 0.1↓):
  • 1 bit tanda (S),
  • 8 bit eksponen (E), dan
  • 23 bit untuk mantisa (M)
Figure 0.1 Format bilangan floating-point 32-bit
Bit tanda (S) menyatakan bilangan positif jika S=0 dan negatif jika S=1.
Field eksponen adalah radix 2. Nilai eksponen bisa negatif atau positif untuk menyatakan bilangan yang sangat kecil atau sangat besar. Format eksponen yang digunakan adalah excess-127. Nilai 127 ditambahkan dari nilai eksponen sebenarnya (Exp), yaitu Exp = E − 127Dengan excess-127, nilai E akan selalu positif dengan jangkauan 0 sampai 255.
  • Nilai ekstrem adalah untuk E=0 dan E=255
    • E=0 menyatakan bilangan NOL (jika M = 0) dan subnormal (jika M ≠ 0)
    • E=255 menyatakan bilangan TAK TERHINGGA (jika M = 0) dan NAN/not-a-number (jika M ≠ 0);
  • Nilai normal adalah 1 ≤ E ≤ 254 yang menunjukkan nilai eksponen sebenarnya dari -126 sampai 127
    • Contoh: Emin(1) =  − 126E(50) =  − 77 dan Emax(254) = 127;
Eksponen (E)Mantissa=0Mantissa ≠ 0Persamaan
00, -0subnormal( − 1)S × 0.bit 
signifikan  × 2 − 126
1-254Nilai ternormalisasi( − 1)S × 1.bit 
signifikan × 2E − 127
255bukan bilangan (NAN=not-a-number)
Table 0.1 Nilai eksponen di format floating-point 32-bit
Saat nilai mantisa (M) dinormalisasi, most significant bit (MSB) selalu 1. Namun, bit MSB ini tidak perlu disertakan secara eksplisit di field mantisa (Tabel 0.1↑). Nilai mantisa yang sebenarnya adalah 1.M, sehingga nilai bilangan floating-pointnya menjadi:

Di bilangan subnormal, nilai mantisa sebenarnya adalah 0.M, sehingga bilangan floating-pointnya menjadi:



Dengan mantissa 23 bit ini ditambah 1 bit implisit, total presisi dari representasi floating-point 32-bit ini adalah 24 bit atau sekitar 7 digit desimal (yaitu 24 × log10(2) = 7.225).
Dalam pemrograman, suatu bilangan single-precision ini dideklarasikan dengan tipe data float (bahasa C, C++, Java) dan single (Pascal, VB, MATLAB).
float anumber; // 32-bit single precision number
int main(){
anumber = -1.1245;
...
return 0;
}


Bilangan Floating-Point 64-bit (double-precision)

Bilangan floating-point 64-bit tersusun atas (Gambar 0.6↓):
  • 1 bit tanda (S),
  • 11 bit eksponen (E), dan
  • 52 bit untuk mantisa (M)
Figure 0.6 Format bilangan floating-point 64-bit
Seperti halnya dengan bilangan single-precission, bit tanda (S) menyatakan bilangan positif jika S=0 dan negatif jika S=1. Field eksponen adalah radix 2. Nilai eksponen bisa negatif atau positif untuk menyatakan bilangan yang sangat kecil atau sangat besar. Format eksponen yang digunakan adalah excess-1023. Nilai 1023 ditambahkan dari nilai eksponen sebenarnya (Exp), yaitu Exp = E − 1023Dengan excess-1023, nilai E akan selalu positif dengan jangkauan 0 sampai 2047.
  • Nilai ekstrem adalah untuk E = 0 dan E = 2047
    • E=0 menyatakan bilangan NOL (jika M = 0) dan subnormal (jika M ≠ 0)
    • E=2047 menyatakan bilangan TAK TERHINGGA (jika M = 0) dan NAN/not-a-number (jika M ≠ 0) (Tabel 0.2↓);
  • Nilai normal adalah 1 ≤ E ≤ 2046 yang menunjukkan nilai eksponen sebenarnya dari -1022 sampai 1023
    • Contoh: Emin(1) =  − 1022E(100) =  − 923 dan Emax(2046) = 1023;
Eksponen (E)Mantissa=0Mantissa ≠ 0Persamaan
00, -0subnormal( − 1)S × 0.bit signifikan × 2 − 1022
1-2046Nilai ternormalisasi( − 1)S × 1.bit signifikan × 2E − 1023
2047bukan bilangan (NAN=not-a-number)
Table 0.2 Nilai eksponen di format floating-point 64-bit
Nilai mantisa (M) dinormalisasi, yang berarti most significant bit (MSB) selalu 1. Bit MSB ini tidak perlu disertakan secara eksplisit di field mantisa. Nilai mantisa sebenarnya adalah 1.M, sehingga nilai bilangan floating-pointnya menjadi:




Dengan mantissa 52 bit ini ditambah 1 bit implisit, total presisi dari representasi floating-point 32-bit ini adalah 53 bit atau sekitar 16 digit desimal (yaitu 53 × log10(2) = 15.995).
Dalam pemrograman, suatu bilangan single-precision ini dideklarasikan dengan tipe data double (bahasa C, C++, Java).
double anumber; // 64-bit double precision number
int main(){
anumber = -1.1245;
...
return 0;
}