Monthly Archives: October 2015

Sistem Operasi Pertemuan 4

Session 7 – Threads (1)

Pengertian Threads

Thread adalah sebuah pengontrol aliran program pelaksanaan program dengan menggunakan kendali tunggal.

Apa yang dimiliki oleh Thread ?

  • Status eksekusi thread (running, ready, terminated)
  • Running -> Sebuah thread yang sedang dieksekusi dan didalam control dari CPU.
  • Ready -> Thread yang sudah siap untuk dieksekusi, tetapi masih belum ada kesempatan untukmelakukannya.
  • Terminated -> Status yang dimiliki pada saat proses telah selesai dieksekusi.
  • Simpanan konteks thread (pada saat tidak running)
  • Stack eksekusi
  • Beberapa storage statis untuk menyimpan variabel lokal
  • Hak akses ke memori dan resource yang dimiliki oleh proses
    • Memori dan resource digunakan bersama-sama oleh semua thread dari sebuah proses (share)

Thread memungkinkan beberapa eksekusi berlangsung dalam lingkup proses yang sama.

2 Jenis Thread:

  • Lightweight Process

Merupakan thread yang mempunyai beberapa properti dari sebuah proses.

  • Multithreading

Merupakan kemampuan sistem operasi dalam mengeksekusi banyak thread yang berasal dari sebuah proses

Thread Model :

1

a) 1 proses 1 thread (one to one)     

b) process banyak thread (many to one)

 

2

  1. Kolom pertama berisi beberapa item yang dibagikan oleh semua thread dalam suatu proses.
  2. Kolom kedua berisi beberapa item pribadi ke setiap thread.

 

 

3

Satu proses memiliki banyak thread dan setiap thread mempunyai stacknya masing-masing.

 

4

Apa keuntungan dari penerapan Thread?

  1. Pembentukan suatu thread jauh lebih cepat daripada pembentukan proses baru.
    • Penelitian menunjukkan pembentukan thread 10 kali lebih cepat daripada pembentukan proses.
  2. Terminasi suatu thread jauh lebih cepat daripada terminasi proses.
  3. Perpindahan eksekusi antar thread jauh lebih cepat.
  4. Antar thread dapat berkomunikasi tanpa melibatkan kernel.
    • Sebagai efek dari penggunaan share memori dan file.

Implemetasi Thread

  1. User Space
  • Kernel tidak mengetahui keberadaan thread.
  • Thread management dilakukan oleh aplikasi user level/library.

5

 

 

 

 

 

Keuntungan :

  • Setiap proses mempunyai penjadwalan masing-masing.
  • Performa lebih cepat.
  • Dapat berjalan di berbagai OS.

Kerugian :

  • Membutuhkan pemanggilan non-blocking system.
  • Jika ada 1 threads yang sedang berjalan maka thread yang lain harus menunggu.
  1. Kernel Space

Thread management dilakukan oleh kernel.

6

Keuntungan :

  • Tidak membutuhkan pemanggilan non-blocking system.
  • Thread pada proses yang sama dapat dijalankan pada prosesor yang berbeda.

Kerugian :

  • Membutuhkan biaya yang besar.
  1. Hybrid

7

  • Ada sejumlah kernel level thread yang dipetakan ke sejumlah user level thread.
  • Pembuatan thread, scheduling, sinkronisasi dilakukan di user space.

 

Pop Up Thread

8

Pembuatan thread baru dilakukan pada saat pesan datang.

a) Sebelum pesan datang

b) Sesudah pesan datang

Thread Basics

 9

Thread State

  1. Spawn -> Thead muncul atau dibuat oleh proses/OS.
  2. Block – Thread menunggu sebuah event.
  3. Unblock – Ketika event yang ditunggu oleh thread muncul.
  4. Finish – Thread selesai. Register context dan stack yang digunakan dibebaskan.

Relasi antara Thread dan Process

10

 

Session 8 – Threads (2)

Thread di Linux

GNU/Linux menggunakan POSIX Standard Thread API. Dikenal dengan nama pthread. Program dengan thread harus di-compile dengan option -lpthread.

Contoh : gcc testhread.c -o thread -lpthread

Pembuatan Thread

Setiap thread dalam sebuah program diidentifikasi dengan thread ID.

Type: pthread_t

Fungsi Untuk Membuat Thread

int pthread_create(pthread_t *obj, const pthread_attr_t* attr, void * (*func) (void *), void *arg);

Parameter ke:

1 → Thread ID

2 → Thread attribute (NULL untuk default attribute)

3 → Fungsi yang ingin dijalankan

4 → Parameter untuk fungsi yang dijalankan

  • Thread ID digunakan untuk mengambil ID dari thread yang dibuat
  • Parameter attr digunakan untuk mengatur properti khusus dari thread. Contoh : penjadwalan dan prioritas.
  • Jika attr bernilai NULL, thread akan dibuat dengan penjadwalan dan prioritas default.
  • Func adalah pointer ke function. (function hanya dapat mengambil void * parameter)
  • Arg adalah void * yang mewakili argumen yang diteruskan ke function func ketika thread dieksekusi.
  • Mengembalikan nilai 0 jika sukses.

 

Setting Thread Attributes

Beberapa properti :

  • 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 ukuran stack dan di mana letak memory itu berada.

  • Detach State

Dapat membuat thread terpisah atau tergabung.

  • Schedule Policy & Schedule Parameters.

Jika sistem operasi mendukung maka kita dapat melihat secara garis besar penjadwalan mana yang harus dilakukan dalam proses Light Weight Processes (LWP’s).

  • Ketika thread dibuat dengan objek atribut yang sesuai maka akan memiliki behavior yang telah ditentukan.
  • Untuk mengatur objek atribut harus memanggil function : pthread_attr_init().

Detached Threads

  • Detached threads merupakan thread yang diabaikan oleh thread yang lain.
  • Ketika thread dihentikan, maka secara otomatis dibangun kembali oleh OS.

Terminating Thread

  • pthread_exit()

Merupakan function yang berfungsi untuk mengambil pointer ke data dan dikembalikan saat thread diinisialisasikan.

Kapan Menggunakan Thread?

  • Thread cocok digunakan untuk program yang melakukan task secara bersamaan atau

memiliki sejumlah task yang dapat diselesaikan secara paralel untuk menghasilkan hasil.

  • Saat membuat program menggunakan thread, kita harus mengatur program tersebut agar berbagai task tersebut dapat dijalankan secara bersamaan.

Contoh : Masalah grafis komputer ( ray tracing ), manipulasi matriks.

www.binus.ac.id

www.skyconnectiva.com

Sistem Operasi Pertemuan 3

Session 5 – Multi Processor

Multiprocessor vs Multicore System

Multicore Systems :

  • Sebuah CPU yang terdiri dari lebih dari satu core.
  • Core bekerja sebagai yang terpisah dalam sebuah single chip.
  • Core ini berguna untuk meningkatkan performance tanpa menaikkan clock processor.

Multiprocessor :

  • Memiliki lebih dari 1 CPU.
  • Dapat mengkombinasikan 2 teknologi, yaitu multicore dan multiprocessor.

Perbedaan Multicore dengan Multiprocessor :

  • Multicore lebih hemat energi karena hanya satu CPU yang dialiri listrik.
  • Multicore lebih hemat tempat karena hanya butuh satu CPU, jadi penggunaan tempat lebih hemat.
  • Multiprocessor baik dalam performancenya karena dapat menangani banyak proses sekaligus.

Multiprocessor diklasifikasikan berdasarkan asosiasi CPU dan unit memory :

  • Uniform memory access (UMA)

Sebelumnya disebut tightly coupled multiprocessor

UMA juga disebut symmetrical multiprocessor (SMP)

Contoh: Balance system dan VAX 8800

  • Nonuniform memory access (NUMA)

Contoh : HP AlphaServer and IBMNUMA-Q

  • No-remote-memory-access (NORMA)

Merupakan sistem yang terdistribusi

Contoh : Hypercube system by Intel

UMA vs NUMA

  • Unified Memory Access (UMA)
  • Biasa disebut juga Symmetric MultiProcessors (SMP)
  • Akses memory secara seragam
  • Non-Unified Memory Access (NUMA)
  • Dibuat untuk menangani kelemahan UMA

Persamaan UMA dan NUMA :

  • Memiliki single memory space
  • Pitfall : Perbandingan antara shared memory dan distributed memory

Perbedaan UMA dan NUMA :

  • Dari sisi access time NUMA lebih cepat dibandingkan UMA
  • Jumlah processor antara UMA dan NUMA berbeda
  • UMA simestris, NUMA tidak simetris
  • Implementasi antara bus dan network

Klasifikasi Sistem Paralel :

  • SISD (Single Instruction Single Data)
  • MISD (Multiple Instruction Single Data)
  • SIMD (Single Instruction Multiple Data = DLP)
  • MIMD (Multiple Instruction Multiple Data)

Gang Scheduling

Terdapat 3 bagian dalam Gang Scheduling :

  • Thread yang berhubungan atau sejenis digabungkan sebagai satu unit gang.
  • Semua anggota gang berkerja secara simultan pada timashare CPU yang berbeda.
  • Semua anggota gang memulai dan mengakhiri time slice bersama-sama.

 Embedded System

Embedded system adalah suatu kombinasi dari hardware dan software yang didesain untuk menjalankan suatu fungsi tertentu.

Dari  berbagai kasus, embedded system merupakan bagian dari  sistem atau produk yang lebih besar , seperti dalam kasus sistem anti penguncian rem di mobil.

Contoh dari embedded system adalah microprocessor yang  mengontrol mesin automobile.

Karakteristik dari Embedded system :

  • Real time Operation

Suatu operasi yang pada waktu itu juga akan dilakukan secara langsung.

  • Reactive Operation

Suatu operasi yang akan berjalan jika di picu dengan tindakan lainnya dulu.

  • Configurability

Karena variasi dari embedded system sangat banyak, maka untuk menyesuaikan kebutuhan dapat dikonfigurasi secara kualitatif dan kuantitatif.

  • I/O Device Flexibility

Fleksibilitas antara segala macam alat input dan output.

  • Streamlined Protection Mechanism

Embedded system didesain secara terbatas dengan fungsi yang didefinisikan dengan baik.

  • Direct use of interrupts

Embedded system dapat diinterupsi oleh proses lain yang lebih penting.

Specialized Embedded Operating System :

  • Prosesnya cepat dan ringan.
  • Real time
  • Hanya butuh ukuran yang kecil karena fungsinya spesifik.
  • Respon untuk external interrup cepat.
  • Menyediakan special sequential files.
  • Maintain realtime clock.
  • Meminimize interval selama interval disable.

2 contoh dari embedded system adalah TinyOS dan eCos(embedded configurable operating system).

eCos (Embedded Configurable Operating System)

  • Open source, gratis, real time O/S untuk embedded application.

Komponen eCos :

  • HAL (hardware abstraction layer) adalah sebuah software yg menyediakan API kepada upper layers dan peta / gambaran kepada upper layers terhadap platform hardware.
  • eCos Kernel

eCos kernel dibuat dengan tujuan :

  • Low interupt latency
  • Low task switching latency
  • Small memory footprint
  • Deterministic behavior

eCos Scheduler terdiri atas 2 yaitu :

  • Bitmap scheduler : Membantu level-level prioritas, tapi hanya 1 thread yang dapat diproses dalam waktu yang sama.
  • Multilevel Queue Scheduler
    • Mendukung sampai dengan priority level 32
    • Mengijinkan banyak thread yang terdapat pada level prioritas, terbatas hanya oleh sumber data.

Session 6 – Distributed System

Client Server Computing

  • Lingkungan client/server dihuni oleh berbagai client dan server.
  • Setiap server dalam lingkungan client/server menyediakan 1 set layanan bersama dengan client.
  • Client/server merupakan komputasi terdistribusi.

Middleware

  • Middleware menyediakan lapisan software yang memungkinkan akses seragam yang berbeda.

Service Oriented Architecture :

  • Merupakan arsitektur f client/server.
  • Mengatur fungsi bisnis kedalam struktur modular.
  • Terdiri dari satu set layanan dan satu set aplikasi client yang menggunakan layanan.

SOA Architectural components

Terdiri dari 3 tipe :

  • Service Provider

Sebuah node jaringan yang menyediakan antarmuka layanan untuk aset software yang mengelola satu set tugas tertentu.

  • Service Requestor

Sebuah node jaringan yang menemukan dan memanggil layanan perangkat lunak lain untuk memberikan solusi bisnis.

  • Service Broker

Sebuah jenis service tertentu yang bertindak sebagai registry dan memungkinkan untuk pencarian interface penyedia layanan dan lokasi layanan.

Clustering

  • Yaitu sebuah pendekatan yang digunakan untuk memberikan performa dan ketersediaan yang tinggi.
  • Cluster merupakan sekelompok yang saling berhubungan, seluruh komputer bekerja sama sebagai sumber daya komputasi (bertindak sebagai satu mesin).

Keuntungan Clustering :

  • Absolute Scalability

Memungkinkan membuat cluster yang besar, bahkan dapat melampaui kekuatan mesin yang tercepat sekalipun.

  • Incremental Scalability

Sebuah cluster dikonfigurasi sedemikian rupa untuk menambah sistem baru pada cluster tersebut dengan tahap perlahan.

  • High Availability

Dalam banyak produk, software secara otomatis menangani kesalahan yang ada.

  • Superior Price/Performance

Memungkinkan untuk mengumpulkan cluster dengan daya komputasi yang sama atau lebih besar dari mesin tunggal yang besar, dengan biaya yang jauh lebih rendah.

www.binus.ac.id

www.skyconnectiva.com

Sistem Operasi Pertemuan 2

Session 3 – Process(1)

Process vs Program

Process adalah eksekusi dari sebuah program.

Program adalah terdiri dari banyak instruksi yang bisa melakukan tugas.

Karakteristik dari Proses yaitu :

  • Identifier

Untuk membedakan satu proses dengan proses yang lainnya.

  • State

Untuk menggambarkan keadaan, apakah sedang running/suspended/terminated.

  • Priority

Prioritas terhadap suatu proses.

  • Program Counter

Untuk menyimpan alamat instruksi selanjutnya.

  • Memory Pointers

Untuk menunjuk letak memory dari suatu program.

  • Context Data

Data yang disimpan pada saat execution.

  • I/O Status Information

Perangkat input output yang dimasukkan kedalam proses, daftar file yang digunakan proses dan lainnya.

  • Accounting Information

Untuk mengetahui jumlah waktu suatu komputer digunakan, waktu clock, limit dan jumlah user.

Langkah Pembuatan Suatu Proses :

  • Buat ID yang unik
  • Pastikan ada tempat untuk proses tersebut
  • Mengetahui balasan dan kegunaan dari proses tersebut
  • Mengatur hubungan yang tepat
  • Memperluas data struktur lainnya

Process Termination

  • Normal Completion
  • Time Limit Exceeded
  • Memory Unavailable
  • Bounds Violation
  • Protection Error
  • Arithmetic Error
  • Time Overrun
  • I/O Failure
  • Invalid Instructions
  • Privileged Instruction
  • Data misuse
  • Operating System Intervention
  • Parents Terminates so Child Processes Terminate
  • Parent Request

Process Table

Process table berfungsi  menyimpan informasi mengenai lokasi process, beserta atribut process.

Properti yang dibutuhkan:

  • Process ID
  • Process State
  • Location in memory

Process Location

–   Proses mencakup sekumpulan program yang akan dieksekusi :

  • Lokasi data untuk variabel lokal dan global
  • Setiap konstanta yang didefinisikan
  • Stack

–   Process Control Block

Merupakan sekumpulan atribut yang ada pada table process.

–   Process Image

Sekumpulan program, data, stack dan atribut.

Process Control Block

  • Pengidentifikasian Proses
    • Identifier -> Mengindentifikasi pengguna
  • Informasi State Prosesor
    • User-Visible Registers -> Yaitu referensi dari prosesor untuk mengeksekusi bahasa mesin.
    • Control and Status Registers -> Berbagai register prosesor yang digunakan untuk mengendalikan operasi prosesor. Terdiri dari :
      • Program Counter
      • Condition Codes
      • Status Information
    • Stack Pointers (LIFO)
  • Informasi proses control

 

Five State Process Model

5state

Merupakan kondisi model yang mungkin dialami oleh suatu process.

  1. New ->  Process baru saja di bentuk dan belum memasuki mekanisme antrian eksekusi.
  2. Ready -> Process tinggal menunggu giliran untuk dieksekusi.
  3. Running -> Process sedang dieksekusi.
  4. Blocked -> Process tidak dapat dieksekusi sampai suatu event terjadi, misalnya operasi I/O, dan kontrol atas processor diberikan ke process yang lain.
  5. Terminated/exit  -> Process berakhir.

Reason for Process Switch

  • Clock interrupt
    • Proses yang dieksekusi telah mencapai waktu yang telah ditentukan
  • I/O interrupt
  • Memory fault
    • Alamat memory terdapat di vitual memory sehingga harus dipindahkan ke memory utama
  • Trap
    • Terjadi error
    • Menyebabkan proses ke jalan keluar
  • Supervisor call
    • Seperti file terbuka

Suspended Processes

  • Processor lebih cepat dari I/O sehingga semua process dapat menunggu I/O.
  • Melakukan swap proses ke disk untuk membebaskan lebih banyak memori.
  • State yang di block menjadi suspend ketika di-swap ke disk.
  • 2 State Baru :
  • Blocked, Suspend
  • Ready, Suspend

Modes of Execution

  • User Mode
  • System mode, control mode, or kernel mode

Session 4 – Process (2)

Process Management System ~ Call – fork() 

  • Membuat proses baru (child)
  • Parent dan child dapat dieksekusi secara bersamaan
  • Setiap proses dapat berkesinambungan dengan proses yang lainnya sehingga menciptakan hirarki proses
  • Dalam sebuah proses parent dapat memilih untuk menunggu child atau mengakhiri

Fork()

  • Mengembalikan nilai -1 jika gagal
  • Mengembalikan nilai 0 pada anak
  • Mengembalikan nilai > 1 pada parentnya
  • Ketika fork ( ) dieksekusi , dapat membuat dua salinan identik dari address space
  • Kedua proses dimulai setelah eksekusi
  • Parent dan child dapat berjalan masing-masing

pc1

pc2

Tentang Fork () 

  • Perintah pelaksanaan parent dan child mungkin berbeda pada berbagai platform. Parent dan child berjalan secara independen.
  • Pada Ubuntu Linux urutannya, 1-2-3-4 (child kemudian kembali ke parent)
  • Sedangkan di Solaris, 1-3-4-2 (parent lalu child)
  • Secara umum, kita tidak pernah tahu apakah anak mulai dijalankan sebelum orang tua atau sebaliknya. Hal ini tergantung pada algoritma penjadwalan yang digunakan oleh kernel.
  • fork () dipanggil sekali tetapi return dua kali
  • Return nilai pada child adalah 0
  • Return nilai di induk adalah PID anak
  • Sebuah fork () sering diikuti dengan exec ()

System()

  • Memanggil beberapa program
  • Membuat subprocess yang berjalan dalam standar Bornue shell
  • (/bin/sh) adalah command dari shall tersebut
  • Execution : melihat fitur, pembatasan dan keamanan
  • Shell umumnya terdapat pada GNU/Linux system, atau disebut bash

System() – Contoh

#include <stdlib.h>

int main ( )

{

int return_value ;

return_value = system ( “ls -l /” );

return return_value;

}

Exec()

  • Hanya bisa memanggil 1 program
  • Process ID tidak terganti

Exec () Family System Call

  • Execvp and execlp (with p)

Menerima nama program dan mencari sebuah program dengan nama tersebut di jalur eksekusi yang sedang dilalui; fungsi yang tidak mengandung p harus diberi path lengkap dari program yang akan dieksekusi

  • Execv, execvp, and execve (with v)

Menerima daftar argumen untuk program baru sebagai NULL-terminated array dari pointer ke string

  • Execl, execlp, and execle (with l)

Menerima daftar argumen menggunakan bahasa C.

  • Execve and execle (with e)

Menerima argumen tambahan, sebuah array dari variabel lingkungan.

  • execve and execle (with e)

Execv()

  • Mengeksekusi file, merubahnya dari calling-process menjadi new process
  • Setelah eksekusi berhasil tidak ada return ke calling process

Other System Calls

  • exit()
    • Menghentikan proses secara normal
  • wait()
    • Digunakan oleh parent
    • Menunggu child menyelesaikan eksekusi
  • getpid()
    • Return child
  • getppid()
    • Return parent

www.binus.ac.id

www.skyconnectiva.com