Jojoshuajosh Journal

Just another Binusian blog site

SisOp Session 7 & Session 8

without comments

*Session 7

Threads


Thread

  • State eksekusi (running, ready, terminated)
  • Isi thread disimpan ketika tidak berjalan
  • Memiliki tumpukan eksekusi
  • Beberapa penyimpanan per thread static dipakai untuk variabel lokal
  • Akses ke memori dan resource terjadi saat proses
  • Theads mengijinkan beberapa eksekusi terjadi dilingkungan proses yang sama
  • Light weight process :threads punya beberapa sifat dari proses
  • Multi threading : mengijinkan beberaa threads diproses yang sama

Thread Model

sisop 18

sisop 19

* kolom pertama berisi beberapa item yang dibagi oleh semua thread dalam sebuah proses.

* kolom kedua berisi beberapa item private ke setiap thread.

 sisop 20

*setiap proses memiliki stack tersendiri

sisop 21

Benefit of thread

  • Membutuhkan waktu yang sedikit untuk membuat thread baru ketimbang sebuah proses
  • Membutuhkan waktu yang sedikit untuk menterminate sebuah thread dibanding sebuah proses
  • Membutuhkan waktu yang sedikit untuk menukar dua thread diproses yag sama
  • Karena memiliki proses yang sama (memori dan files), thread bisa saling berkomunikasi satu sama lain tanpa menggunakan kernel

        sisop 22

*contoh koding menggunakan thread

Thread Implementation

 

User Space

sisop 23

Advantages

  • Memungkinkan setiap masing – masing proses memiliki scheduling algorithmnya sendiri
  • Performa stabil

Disadvantages

  • Implementasi blocking system calls
  • Tidak ada thread yang bisa berjalan tanpa salah satu thread mengalah dalam pemakaian CPU

Kernel Space

sisop 24

Advantages

  • Tidak membutuhkan sebuah non blocking system calls baru

Disadvantages

  • Butuh biaya besar untuk membuat dan menghancurkan thread

Hybrid

sisop 25

  • Multiplexing thread tingkat user ke thread tingkat kernel

Pop Up Thread

sisop 26

Membuat sebuah thread baru ketika pesan tiba.

  1. Sebelum pesan diterima
  2. Setelah pesan diterima

Threads basic

  • Semua Thread diproses yang sama saling berbagi :

*  Alamat yang sama

* Instruksi proses

* Sebagian besar data

* Open file (descriptor)

* Sinyal dan sinyal handler

* Direktori kerja saat ini

* ID user dan ID grup.

  • Setiap Thread memiliki keunikan :

* ID thread

* Kumpulan register dan stack pointer

* Stack untuk local variabel dan alamat return

* Signal mask

* Prioritas

* Return value

Thread State

 

  1. Spawn

* Biasanya ketika sebuah proses baru dibangkitkan(spawn) maka sebuah thread untuk proses tersebut juga dibangkitkan(spawan).

* Thread dapat memberikan pointer dan argument untuk thread baru hasil spawn.

  1. Block

* Pemblokiran terjadi saat sebuah thread harus menunggu sebuah proses (menyimpan register pengguna, program counter, dan stack pointer).

  1. Unblock

* Saat sebuah proses berada ditahap sedang terjadi pemblokiran thread maka thread tersebut akan diletakkan diantrian.

  1. Finish

* Ketika sebuah thread selesai digunakan maka register context dan stack akan dialokasikan.

Multi threading example on a uniprocessor

sisop 27

Relationship between Threads and Processes

sisop 31

Threading granularity

 

  1. Coarse Threading
  • Modul individu yang dipanggil sistem, yang ditugaskan prosesor individu
  • Dalam source case engine, hal ini berarti meletakkan sebuah rendering ke satu prosesor, AI ke prosesor lain, physics ke prosesor lain dan seterusnya
  • Tiap modul penting adalah thread tunggal dan koordinasinya melibatkan sinkronisasi semua thread dengan timeline thread
  1. Fine-grained threading
  • Banyak perintah yang identic tersebar dibanyal prosesor
  • Contoh : sebuah loop dalam sebuah array bisa dipecah menjadi beberapa bagian loop pararel di thread tersendiri yang bisa dijadwalkan secara pararel.
  1. Hybrid threading
  • Kombinasi Fine-grained threading dengan coarse threading

 

Posix (Portable Operating System Interface) Threads

sisop 32

*Session 8

Thread Programming


 sisop 28

  • Parameter obj menujuk ke structure dari pthread_t, digunakan untuk menyimpan id dari thread yang dibuat beserta detailnya
  • Parameter attr menunjuk ke sebuah objek dari pthread_attr_t yang digunakan untuk mengatur set property khusus (Scheduling dan priority)
  • Jika attr NULL, maka akan dibuat thread dengan scheduling dan property yang bersifat default
  • func adalah penunjuk sebuah fungsi. (fungsi ini hanya bisa memiliki parameter void*)
  • Arg adalah sebuah penunjuk void yang merepresentasikan argument yang sudah diberikan ke fungsi ketika thread dieksekusi
  • Return 0 apabila eksekusi sukses

sisop 29

sisop 30

Thread Function

  • pthread_self()

– Untuk memperoleh ID thread

  • pthread_join()

– Untuk mengabung dan memisahkan flow control yang berbeda

– Ketika thread dipanggil, thread tersebut akan ditunda hingga eksekusi thread tujuan telah selesai

– Melepas resource (untuk mencegah zombie thread).

  • pthread_exit()
  • Fungsi yang mengambil sebuah pointer ke data yang dikembalikan ketika thread bergabung

Setting thread attributes

Contention Scope

  • Digunakan mengatur scheduling property baik diproses atau global sistem.

Stack Size & Stack Address 

  • Memungkingkan programmer untuk mengatur seberapa banyak stack yang ada dan di memori mana stack itu berada

Detach State 

  • Membuat thread secara terpisah atau tergabung

Schedule Policy & Schedule Parameters

  • Jika sistem operasi kita mendukung, maka kita dapat menguraikan scheduling yang dilakukan dalam proses di Light weight process (LWP)

* Untuk mengatur atribut objek kita harus memanggil : pthread_attr_init()

When to use threads

  • Ketika ada sebuah program yang membutuhkan pengerjaan tugas secara bersamaan atau beberapa perintah yang bisa dikerjakan secara pararel untuk memperoleh hasil tugas tersebut

          contoh

– Computer graphigs (ray tracing)

– Manipulasi matrix

Thanks…

www.binusmaya.binus.ac.id

www.skyconnectiva.com

Written by jojoshuajosh

October 27th, 2015 at 8:56 pm

Posted in Uncategorized

Leave a Reply