Selasa, 27 Oktober 2015

Threads 

• Sebuah negara eksekusi (berjalan, siap, dll)
 • Disimpan konteks thread ketika tidak berjalan
 • Memiliki eksekusi tumpukan
 • Beberapa storage statis per-benang untuk variabel lokal
 • Akses ke memori dan sumber daya dari proses yang
          - Semua thread dari proses berbagi ini


- Threads memungkinkan beberapa eksekusi berlangsung dalam lingkungan proses yang sama
 - Proses 
         Ringan karena benang memiliki beberapa sifat dari proses
 - Multithreading 
         memungkinkan beberapa thread dalam proses yang sama

Thread Model












Manfaat Threads

• Membawa sedikit waktu untuk membuat thread baru dari suatu proses
• Kurang waktu untuk mengakhiri thread dari proses
 • Kurang waktu untuk beralih di antara dua benang dalam proses yang sama
• Sejak benang dalam memori yang sama berbagi proses dan file, mereka dapat berkomunikasi satu        sama lain tanpa melibatkan kernel

Thread Implementasi




Pop Up Thread


Pembuatan thread baru ketika pesan tiba.
(a) Sebelum pesan tiba.
(b) Setelah pesan tiba.


Thread Basics


Thread  State

Block
• Ketika thread perlu menunggu untuk sebuah acara, itu akan memblokir (menyimpan register pengguna, program counter, dan tumpukan pointer).
 • Prosesor mungkin sekarang beralih ke eksekusi benang siap lain yang sama atau proses yang berbeda.

Unblock
• Ketika acara yang thread diblokir terjadi, benang iscmoved ke antrian Siap.

Finish
• Thread akan selesai, konteks register dan tumpukan yang deallocated.



Multi threading example on a uniprocessor



Hubungan antara Threads dan Proses



Threading granularity

*Coarse Threading
      • modul individu, yang disebut sistem, yang ditugaskan untuk prosesor individu.
      • Dalam kasus mesin Sumber, ini berarti menempatkan render pada satu prosesor, AI                             (kecerdasan buatan) yang lain, fisika yang lain, dan seterusnya.
       • setiap modul utama adalah single threaded dan koordinasi kepala sekolah melibatkan                         sinkronisasi semua benang dengan benang waktu.


Posix (Portable Operating System Interface) Threads


Thread Programming


• Poin parameter obj ke struktur pthread_t, digunakan untuk menyimpan id dari benang dibuat panjang dengan rincian 
• Attr parameter poin ke obyek pthread_attr_t yang digunakan untuk mengatur sifat khusus dari benang misalnya Penjadwalan dan prioritas)
• Jika attr adalah NULL, benang akan becreated dengan penjadwalan default dan prioritas properti
• func adalah pointer ke fungsi. (Fungsi hanya dapat mengambil void * parameter) 
• Arg adalah void * yang mewakili thearguments dilewatkan ke fungsi func ketika benang dieksekusi 
• Pada keberhasilan fuction mengembalikan 0






• pthread_self () 
- Untuk obain ID-nya 
• pthread_join ()
 - Untuk bergabung atau bergabung kembali berbagai aliran kontrol 
- Ketika dipanggil, thread panggilan ditunda untl eksekusi thread target termnated 
- Sumber Pers (yaitu mencegah threads zombie)

       Example:

#include <iostream>
#include <pthread.h>
using namespace std;
int main(int argc, char** argv)
{
 pthread_t thread_a, thread_b;
 int N;
 if (argc != 2)
 {
  cout << “Error” << endl;
  return 0;
 }
 N=atoi(argv[1]);
 pthread_create(&thread_a, NULL, task1, &N);
 pthread_create(&thread_b, NULL, task2, &N);
 cout << “Waiting to join” << endl;
 pthread_join(thread_a, NULL);
 pthread_join(thread_b, NULL);
 return 0;
}

       Sample fnction for task

void* task1(void* x)
{
 int* temp = (int*) x;
 for (int count 0; count < *temp;
 count++)
{
 cout << “Thread A” << endl;
 }
cout << “Thread A Complete” << endl;
 return NULL;
 }


Setting thread attributes 

Beberapa sifat:

contention Scope
Digunakan untuk mengatur properti penjadwalan baik di dalam proses atau pada sistem global.

Stack Size & Stack Address
Memungkinkan programmer untuk mengatur seberapa besar tumpukan harus dan di mana dalam memori itu harus.

Detach State
Anda dapat membuat sebuah thread sebagai terpisah atau joinable.

Jadwal Kebijakan & jadwal Parameter.
Jika sistem operasi Anda mendukungnya Anda dapat menguraikan apa penjadwalan yang harus dilakukan dalam proses antara Proses Ringan (LWP ini). Anda bahkan dapat memberikan parameter seperti prioritas.

• Ketika threads dibuat dengan objek atribut yang sesuai mereka akan memiliki perilaku yang ditentukan.
• Untuk mengatur objek atribut kita harus memanggil
pthread_attr_init ().


#include <iostream>
#include <pthread.h>
using namespace std;
int main(int argc, char** argv)
{
 pthread_t thread_a, thread_b;
 pthread_attr_t attr;
 int N;
 if (argc != 2)
 {
  cout << “Error” << endl;
  return 0;
}
 N=atoi(argv[1]);
 pthread_attr_init(&attr);
 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
 pthread_create(&thread_a, &attr, task1, &N);
 pthread_create(&thread_b, NULL, task2, &N);
 cout << “Waiting to join” << endl;
 pthread_join(thread_b, NULL);
 return 0;
}


Detached threads

Sebuah threads terpisah adalah salah satu yang tidak dilayani oleh thread lain Ketika benang dihentikan, maka secara otomatis akan direklamasi oleh sistem operasi


Terminating thread

pthread_exit ()
Fungsi mengambil pointer ke data yang yang dikembalikan ketika benang bergabung


Kapan menggunakan threads ?

• Thread yang paling cocok untuk program yang membutuhkan untuk melakukan hal-hal secara bersamaan OR memiliki sejumlah tugas yang dapat diselesaikan secara paralel untuk menghasilkan hasil.
• Saat menulis program anda menggunakan threads Anda harus mengatur program menjadi tugas diskrit yang dapat dijalankan secara bersamaan.
• Contoh:
- Masalah grafis komputer misalnya Ray tracing
- Manipulasi Matrix


References




Selasa, 06 Oktober 2015

Process vs Program

Program
- Berisi instruksi untuk melakukan tugas

Proses
- Pelaksanaan program

Process characteristic

       Identifier
       State
       Priority
       Program counter
       Memory pointers
       Context data
       I/O status information
       Accounting information

Process Creation

  • Menetapkan identifier proses yang unik
  • Mengalokasikan ruang untuk proses
  • Menginisialisasi proses kontrol blok
  • Mengatur hubungan yang tepat
  • Buat dari memperluas struktur data lainnya
Process termination

  •  penyelesaian yang normal
  •  Batas waktu terlampaui
  •  memori tidak tersedia
  •  pelanggaran Bounds
  •  error perlindungan
  •  kesalahan aritmatika
  •  waktu overrun

Process Table

• Dimana proses terletak
• Atribut yang diperlukan untuk manajemen
Process ID
Process state
Location in memory

Process Location

• Proses termasuk mengatur program yang akan dijalankan
- Lokasi Data untuk variabel lokal dan global
- Setiap konstanta didefinisikan
- Stack
• blok kontrol proses
- Koleksi atribut
• gambar Proses
- Koleksi program, data, stack, dan atribut

Process Control Block

       Process identification
      Identifiers
       Processor State Information
      User-Visible Registers
       Processor State Information
      Control and Status Registers
                Processor State Information
        Stack Pointers

                Process Control Information
        Scheduling and State Information

 Five State Process Model




Cause of Process Suspension



Process Management System Call – fork()

• Menciptakan proses baru (anak)

• Induk dan anak-anak mengeksekusi secara bersamaan
• Setiap proses dapat garpu proses lain sehingga menciptakan hirarki proses
• Sebuah proses dapat memilih untuk menunggu anak untuk mengakhiri

fork()

  • Returns -1 jika tidak berhasil
  • Returns 0 pada anak
  • Returns [angka positif, anak identifier (anak PID) pada induknya


fork() - notes

       The fork() is called once but returns twice !
      Return value in the child is 0
      Return value in the parent is the child's PID
• implementasi saat ini tidak melakukan copy lengkap data orang tua, tumpukan dan tumpukan; teknik yang disebut copy on write (KK) yang digunakan untuk membuat salinan bagian dari memori dimodifikasi oleh salah proses dan wilayah memori bersama dengan orang tua dan anak dilindungi oleh kernel untuk read-only
• fork () sering diikuti dengan exec ()

system()

• Melaksanakan perintah dari dalam program
• Banyak sebagai jika perintah itu telah diketik ke shell
• Membuat sub proses menjalankan standar 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() family system calls

• Memanggil salah satu exec () keluarga akan mengakhiri program yang sedang berjalan dan mulai mengeksekusi yang baru yang ditentukan dalam parameter exec dalam konteks proses yang ada.
• Proses id tidak berubah.

execv()
• Melaksanakan file, mengubah proses panggilan ke proses baru
• Setelah sukses eksekusi, tidak ada kembali ke proses memanggil

fork() and exec()

Other system calls

       exit()
       wait()
       getpid()
       getppid()


References

www.skyconnectiva.com