Saturday, 3 June 2017

Praktikum 12: THREAD

LAPORAN ORGANISASI KOMPUTER DAN SISTEM OPERASI
THREAD




Disusun Oleh Kelompok G : 
Dwiky Semuel
NIM: 064001600018

Muhammad Iqbal
NIM: 064001600005

Niko Putra
NIM: 065001600008

Yusuf Alvino Riondi     
NIM: 064001600014





Teknik Informatika
Fakultas Teknologi Industri
Universitas Trisakti
Jakarta – Indonesia
2017

DESKRIPSI
Membuat thread dengan vi editor di Linux

KOMPETENSI DASAR
1. Memahami Thread dalam sistem operasi Linux
2. Memahami fungsi Call-Clone
3. Memahami Interface pthread
4. Memahami Mutex di Linux

TEORI SINGKAT
Thread adalah eksekusi multiple path yang dijalankan secara simultan di dalam memori bersama, sehingga akses ke sumberdaya proses dapat dilakukan bersamaan, seperti deksripsi file dan penanganan sinyal. Multithreading adalah kemampuan sistem operasi untuk mendukung adanya beberapa thread di dalam sebuah proses. Sistem operasi terdahulu seperti MS DOS tidak mengenal konsep multiproses maupun multithread sehingga hanya dapat menjalankan satu proses dan setiap proses adalah sebuah thread.

LAB SETUP
  • Sebuah PC
  • Sistem Operasi Linux (Ubuntu)

FUNGSI DASAR PTHREAD
Kami buat file thrdcreat.c menggunakan vi editor dengan mengetikkan:
$ vi thrdcreat.c

Kemudian kami tekan Esc lalu kami ketikkan :wq untuk menyimpan codingan tersebut
Lalu kami kompilasi thrdcreat.c dengan menggunakan gcc dengan mengetik:
$ gcc thrdcreat.c –o thrdcreat1.c –lpthread


Lalu kami eksekusi dengan mengetik:
$ ./thrdcreat1.c


Task1 dan Task2 melaksanakan tugas dimulai dengan hitungan nol secara bersamaan. Task2 mengerjakan tugas selama 5 hitungan (dimulai dari 0 kemudian 1 hingga 4) jika sudah selesai akan dilanjutkan untuk melaksanakan Task1. Task1 mengerjakan tugas selama 5 hitungan (dimulai dari 0 kemudian 1 hingga 4) sehingga dalam melaksanakan 2 buah tugas dibutuhkan 10 iterasi.


PEMBATALAN PTHREAD
Kemudian kami membuat thrdcancel.c menggunakan vi editor dengan mngetikkan:
$ vi thrdcancel.c

Kemudian kami tekan Esc lalu kami ketikkan :wq untuk menyimpan codingan tersebut.

Lalu kami kompilasi thrdcancel.h dengan menggunakan gcc dengan mengetik:
$ gcc thrdcancel.c –o thrdcancel1.c –lpthread


Lalu kami eksekusi dengan mengetik:
$ ./thrdcancel1.h


Task1 dan Task2 melaksanakan tugas dimulai dengan hitungan nol secara bersamaan. Task2 mengerjakan tugas selama 5 hitungan (dimulai dari 0 kemudian 1 hingga 4) jika sudah selesai akan dilanjutkan untuk melaksanakan Task1. Task1 mengerjakan tugas selama 5 hitungan (dimulai dari 0 kemudian 1 hingga 4) sehingga dalam melaksanakan 2 buah tugas dibutuhkan 10 iterasi.


PEMAKAIAN MUTEX DASAR
Kemudian kami membuat mutex.c menggunakan vi editor dengan mengetikkan:
$ vi mutex.c

Kemudian kami tekan Esc lalu kami ketikkan :wq untuk menyimpan codingan tersebut.

Lalu kami kompilasi mutex.c dengan menggunakan gcc dengan mengetik:
$ gcc mutex.c –o mutex1.c –lpthread


Lalu kami eksekusi dengan mengetik:
$ ./mutex1.c


Indeks thread melakukan increment pada counter sedangkan monitor melakukan pengecekan nilai counter. Waktu akhir adalah NULL + 30 detik, 30 detik merupakan panggilan waktu untuk melakukan ticks, sehingga setiap ticks dilakukan setiap 3 detik. 3 kali 10 iterasi.

Mutex Cepat (Fast Mutex atau Futex/Simple Mutex):
Sebuah mutex sederhana adalah default, yang paling sederhana (dan karena itu paling cepat) pelaksanaan mutex. Memiliki karakteristik:
  • Ini dapat dikunci hanya sekali, tapi ini tidak dicek. Jika suatu thead mencoba untuk mengunci mutex kedua kalinya, itu deadlock. 
  • Ini tidak terdefinisi apa yang terjadi jika thread mencoba untuk membuka mutex yang dikunci oleh thread lain.
Mutex Rekursive:
Sebuah mutex rekursif adalah mutex yang dapat dikunci beberapa kali, dan memelihara counter kunci, jumlah yang sama panggilan unlocking harus digunakan sebelum mutex akan benar-benar dibuka.
Sebuah mutex rekursif tidak harus memeriksa kesalahan, jika thread lain mencoba untuk membuka mutex yang dikunci oleh thread lain, hasilnya tidak terdefinisi.

Mutex error-checking:
Mutex error-checking adalah mutex yang memeriksa untuk kondisi error (yang membuatnya lebih lambat dan lebih kompleks daripada default, mutex sederhana).
Memiliki karakteristik:
  • Ini dapat dikunci hanya sekali dan aturan ini dicentang. Jika suatu thread mencoba untuk mengunci beberapa kali, hal itu akan error (EDEADLK).
  • Ini menjamin bahwa hanya Thread penguncian dapat membukanya, jika thread lain mencoba untuk membukanya, akan mendapat error (EPERM).
EDEADLK (Deadlock Avoided)
Kode keselahan EDEADLK dihasilkan ketika panggilan sinkronisasi terkait digunakan dengan cara yang akan menyebabkan deadlock, dan sistem mampu mendeteksi ini.

EPERM (Operation not permitted)
Kesalahan kode ini dihasilkan pada upaya untuk melakukan operasi yang perlu izin khusus yang tidak memiliki proses pemanggilan.

DAFTAR CEKLIST
NO.
NAMA
CEK
1.
Membuat thread dengan vi editor di Linux
 Check

FORM FEEDBACK
NO.
ELEMEN KOMPETENSI
TINGKAT KETERTARIKAN
TINGKAT KESULITAN
1.
Membuat thread dengan vi editor di Linux.
 Baik
Baik 


KESIMPULAN
Dengan menggunakan Thread dari pada proses kita mendapat beberapa keuntungan antara lain:
  1. membuat thread baru lebih cepat daripada membuat proses baru.
  2. menghentikan thread  lebih cepat daripada menghentikan proses.
  3. waktu untuk penghentian thread lebih cepat dibandingkan pergantian proses.
  4. komunikasi antar thread lebih cepat karena berada dalam satu proses sehingga tidak memerlukan intervensi dari kernel.
Hal ini berguna bagi sistem operasi karna dengan banyak control thread proses dapat melakukan lebih dari satu pekerjaan pada waktu yang sama.

untuk lebih jelasnya bisa lihat video di bawah ini :


No comments: