Tampilkan postingan dengan label Sistem Operasi. Tampilkan semua postingan
Tampilkan postingan dengan label Sistem Operasi. Tampilkan semua postingan

Senin, 02 April 2012

Program Control Block (PCB)

 
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.
Ketika sebuah proses dibuat maka proses tersebut dapat memperoleh sumber-daya seperti waktu CPU, memori, berkas, atau perangkat I/O. Sumber daya ini dapat diperoleh langsung dari sistem operasi, dari proses induk yang membagi-bagikan sumber daya kepada setiap proses turunannnya, atau proses turunan dan proses induk berbagi sumber-daya yang diberikan sistem operasi
Komunikasi antar proses
(Inter Process Communinication / IPC) :
• Beberapa proses biasanya berkomunikasi dengan proses lainnya.
• Contohnya pada shell pipe line : output dari proses pertama harus diberikan kepada proses ke dua dan seterusnya.
• Pada beberapa sistem operasi, proses-proses yang bekerja bersama sering sharing (berbagi) media penyimpanan, dimana suatu proses dapat membaca dan menulis pada shared storage (main memory atau files).
Mekanisme proses untuk komunikasi dan sinkronisasi aksi

Thread

Thread

Kernel Threads

Kernel thread didukung secara langsung oleh sistem operasi: pembentukan thread, penjadualan, dan managemen dilakukan oleh kernel dalam ruang kernel. Karena managemen thread telah dilakukan oleh sistem operasi, kernel thread biasanya lebih lambat untuk membuat dan mengelola daripada pengguna thread. Bagaimana pun, selama kernel mengelola thread, jika suatu thread di block tehadap sistem pemanggilan, kernel dapat menjadualkan thread yang lain dalam aplikasi untuk dieksekusi. Juga, di dalam lingkungan multiprosesor, kernel dapat menjadualkan thread dalam prosesor yang berbeda. Windows NT, Solaris, dan Digital UNIX adalah sistem operasi yang mendukung kernel thread.


Cara Menggunakan Thread di Java


Essential class di java terdiri atas 5 :
- Exeption
- Basic I/O
- Concurrency
- Regular Expressions
- The Platform Environment
yang kita bahas di sini adalah tentang "Concurrency", Concurrency adalah Sebuah sisitem yang dapat menjalankan lebih dari satu
program,
di saat bersamaan.
contoh :
pada waktu menjalankan Mozilla kita dapat membuka lebih dari satu tab, seperti pada saat kita membuka google,
kita juga dapat membuka youtube.
Execution itu ada dua yaitu :
-       proses : yaitu sama seperti aplikasi/ program
- Thread : sesuatu yang mebuat agar kita dapat membuka program lebih dari satu.

nah pada Java ini memungkinkan kita untuk menjalankan 2 program secara bersamaan dengan menggunakan thread terssbut.
Strategi yang dapat kita lakukan untuk membuka 2 program secara bersamaan ada 2 cara yaitu :
- Directly (secara langsung) : dengan cara membuat suatu object thread.
- Indirectly (tidak secara langsung) : dengan cara memanajemen abstrac method thread, dan menjadikan
program/aplikasinya menjadi eksekutor.
berikut ini adalah contoh dalam menggunakan thread dengan strategi (Direct)
1. Menyediakan Runnable
public class HelloRunnable implements Runnable{
public void run(){
System.out.println(“Hello”);
}
           
public static void main(String args[]){
( new Thread(new HelloRunnable ())).start();
                    
                       }
}
2. subclass Thread
public class HelloThread extends Thread{
public void run(){
                   
                          System.out.println(“Hello”);
           
                          }
           
public static void main (String args[]){
(new HelloThread()).start();
          
                         }
}
Anda juga dapat menunda eksekusi dengan sleep.

public class SleepMessage{
public static void main (String args[])throws InteruptedException{
String importantInfo[] = {
};
                     
for (int i=0;i<importantInfo.length;i++){
//menunda 4 detik
Thread.sleep(4000);
}
}


dan cara untuk mengentikannya adalah dengan cara :

protected Boolean is Running=true;
public void run(){
while (is Running){
//do something
}
}
public void cmdStop(){
is Running=false;