Selasa, 27 Oktober 2015

THREAD

THREAD

            Thread merupakan bagian dari proses, dimana proses sendirir adalah program yang sedang dieksekusi, ada dua jenis proses, pertama heavyweight  dan ada lightweight atau dikenal juga sebagai thread.
Thread adalah unit dasar dari utilisasi CPU. Di dalamnya terdapat ID thread, program counter, register, dan stack. Dan saling berbagi dengan thread lain dalam proses yang sama. Dengan banyak kontrol thread proses dapat melakukan lebih dari satu pekerjaan pada waktu yang sama.

THREAD MODEL







 Kolom pertama berisi beberapa item bersama oleh semua thread dalam proses . Yang kedua berisi beberapa item pribadi ke setiap thread .


 
Setiap thread memiliki stack masing masing







KEUNTUNGAN THREAD

2.      Pembagian sumber daya: Secara default, thread membagi memori dan sumber daya dari proses. Keuntungan dari pembagian kode adalah aplikasi mempunyai perbedaan aktifitas thread dengan alokasi memori yang sama.


3.      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.

4.      Pemberdayaan arsitektur multiprosesor: Keuntungann dari multithreading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara parallel 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.

IMPLEMENTASI THREAD
Implementasi thread terdiri dari 3 jenis:
1.      User
1. Pelaksanaan manajemen thread yang dilakukan oleh user-level thread library. Terdapat dua kelompok besar implementasi thread, yaitu user-level thread dan kernel-level thread. Didalam fasilitas user-level thread yang murni, semua tugas manajemen thread dilakukan oleh aplikasi dan kernel tidak mengetahui keberadaan thread.
2. Tiga kunci thread libraries :
·         POSIX Pthread
·         Win32 thread
·         Java thread
2.      Kernel
1. Suatu proses thread Yyang didukung oleh kernel. Untuk memberitahu kejadian kernel, kernel menciptakan scheduler activatioan baru, memberikan ke pemroses dan melakukan upcall ke ruang pemakai.
2. Contoh :
·         Windows XP/2000
·         Solaris
·         Linux
·          Tru64 UNIX
·         Mac OS X



3.      Hybrid
Merupakan gabungan user dan kernel


Multiplexing user-level threads onto kernel- level threads





HUBUNGAN THREAD DAN PROSES
Thread saling berbagi bagian program, bagian data dan sumber daya sistem operasi dengan thread lain yang mengacu pada proses yang sama. Thread terdiri atas ID thread, program counter, himpunan register, dan stack. Dengan banyak kontrol thread proses dapat melakukan lebih dari satu pekerjaan pada waktu yang sama.






Senin, 05 Oktober 2015

SISTEM OPERASI - PROSES

PROCESS

Proses adalah keadaan ketika sebuah program sedang di eksekusi. Saat komputer berjalan, terdapat banyak proses yang berjalan secara bersamaan. Sebuah proses dibuat melalui system call create-process yang membentuk proses turunan ( child process) yang dilakukan oleh proses induk ( parent process). Proses turunan tersebut juga mampu membuat proses baru sehingga semua proses ini pada akhirnya membentuk pohon proses.

KARAKTERISTIK PROSES
       Identifier: identifier unik yang berguna untuk membedakan proses satu dan yang lainnya.
       State: proses yang sedang mengeksekusi berada di state yang berjalan.
       Priority: tingkat prioritas relative terhadap proses lainya.
       Program counter: alamat dari instruksi berikutnya ada di program yang dieksekusi.
       Memory pointers: termasuk pointer ke program code dan data yang berhubungan dengan proses ini dan semua blok memoriyang dibagi dengan proses lain
       Context data: data yang ada di registry di dalam proses saat eksekusi.
       I/O status information:  outstanding I/O requests, I/O devices (e.g., disk drives)  ditugaskan untuk proses ini, listdari file yang digunakan oleh proses.
       Accounting information: jumlah processor time dan clock time yang digunakan, time limits, account numbers, dan lainya.

TERBENTUKNYA PROSES
·         Menentukan identifier yang unik
·         Mengalokasikan space untuk proses
·         Inisialisasi proses control block
·         Mengatur link yang tepat
·         Membuat perluasan strktur data lainya

YANG DAPAT MENGHENTIKAN PROSES
·         Penghentian yang normal
·         Melampau batas waktu
·         Memori tidak tersedia
·         Bounds violation
·         Protection error (ex: write pada file read only)
·         Arithmetic error
·         Time overrun (proses menunggu terlalu lama)
·         I/O failure
·         Instruksi yang salah (terjadi ketika mengeksekusi data)
·         Privileged instruction
·         Penyalahgunaan data
·         Intervensi os (seperti ketika terjadi deadlock)
·         Parent terhenti sehingga child juga
·         Permintaan parent

PROCESS TABLE
·         Diimana lokasi sebuah proses
·         Atribut yang penting untuk managemenproses:
o   Proses ID
o   Proses State
o   Lokasi di memori

PROCESS LOCATION
·         Proses termasuk program yang akan dieksekusi
o   Lokasi data untuk local dan global variable
o   Konstanta didefinisikan
o   Stack
·         Process control block
o   Kumpulan atribut
·         Process image
o   Kumpulan program, data, stack dan atribut



FIVE STATE PROCESS MODEL 





ALASAN PROSES SWITCH
·         Clock interrupt
o   Proses yang dieksekusi mencapai batas maksimum pada suatu waktu
·         I/O interrupt
·         Kesalahan memori
o   Alamat memori ada di virtual memori jadi harus dibawa ke main memori
·         Trap
o   Terdapat error
o   Menyebabkan proses memasuki state “exit”
·         Supervisor call
o   Seperti file yang terbuka

SUSPENDED PROOCESS
·         Proses lebih cepat daripada I/) sehingga semua proses harus menunggu I/O.
·         Menukar proses ke disk  untuk membebaskan memori
·         Blocked state menjadi suspend state ketika swap ke disk
·         Dua state baru
o   Blocked, suspend
o   Ready, suspend

PENYEBAB PROCESS SUSPENSION




MODE EKSEKUSI
·         User mode
o   Less privileged mode
o   User program biasanya di eksekusi di mode ini
·         System mode, control mode, atau kernel mode
o   More privileged mode
o   Kernel of the operating system

SYSTEM CALL
Layanan langsung sistem operasi ke pemrograman, disebut dengan system call. System call adalah tata cara pemanggilan di program aplikasi untuk memperoleh layanan yang disediakan oleh sistem operasi. Contoh yang paling baik untuk melihat bagaimana system call bekerja untuk manajemen proses adalah Fork.

FORK
 Fork adalah satu satunya cara untuk membuat sebuah proses baru pada sistem Unix. Fork membuat duplikasi yang mirip dengan proses aslinya. Setelah perintah Fork, child akan mengeksekusi kode yang berbeda dengan parentnya.
       Ketika fork()di eksekusi ,ia membuat Salinan  identic dari alamat
       Kedua proses mulai dieksekusi
       Parent dan child berjalan secara  independent





SYSTEM
·         Mengeksekusi  perintah dari dalam program
·         Sebanyak jika perintah itu telah diketik ke shell
·         Membuat subproses menjalankan standard bourne shell
·         (/ bin / sh) dan tangan perintah ke shell bahwa untuk
·         eksekusi; tunduk pada fitur, keterbatasan dan keamanan
·         shell; pada kebanyakan sistem GNU / Linux, menunjuk untuk bash

EXEC
·         Memanggil salah satu exec() akan menghentikan program yang sedang berlangsung dan mulai mengeksekusi yang baru:
o   int execl( const char *path, const char *arg, ...);
o   int execv( const char *path, char *const argv[]);
o    int execle( const char *path, const char *arg , ..., char * const envp[]);
o   int execlp( const char *file, const char *arg, ...);
o   int execvp( const char *file, char *const argv[]);
·         Proses ID tidak berubah

OTHER SYSTEM CALL
·         Exit()
o   Menghntikan proses secara normal
o   Unblock waiting parent
·         Wait()
o   Digunakan oleh parent
o   Ditunggu oleh child untuk menyelesaikan eksekusi
·         Getpid()
o   Mengembalikan identifier calling process
·         Getppid()
o   Mengembalikan identifier parent