Jumat, 05 Juni 2015

Embedded System

Embedded System
Sebuah kombinasi dari komputer hardware dan software yang didesain untuk menjalankan fungsi tertentu.
Untuk kasus tertentu, embedded sistem merupakan bagian dari sistem atau produk yang besar.
Berikut contoh embedded sistem yang sering digunakan dalam kehidupan sehari hari.



Charcateristics of Embedded System
  • Real-time operation
    Pada kebanyakan embedded sistem, kebenaran dari sebuah ketergantungan kompilasi, di dalam bagian, pada waktu penyampaian. Konstraint didedikasikan oleh eksternal I/O dan permintaan kontrol stabilitas.
  • Reactive operation
    Embedded sistem mungkin mengeksekusi untuk eksternal event. Jika event event tersebut tidak terjadi secara berkala , embedded sistem akan memasukkannya dalam worst case event.
  • Configurability
    Karena varietas yang besar dari embedded sistem, terdapat sebuah variasi yang besar dari sebuah requirment baik kuantitatif maupun kualitatif.
  • I/O device flexibility
    Ada sebuah virtual non device  yang perlu untuk disupport oleh semua versi OS
  • Streamline protection mechanism
    Embedded sistem secara tipikal didesain secara terbatas.
  • Direct use of interupts
    Tujuan umum dari sebuah OS adalah secara tipikal tidak mengizinkan beberapa user untuk menginterupsi secara langsung.
Embedded System Development Approach
  1. Tentukan hardwarenya
  2. Pastikan software kompatibel
  3. Tentukan tugas spesifik
  4. Buat hirarki OOP
  5. Jangan buat hal yang sudah ada
Purpose Built Embedded Operating System
Jumlah yang signifikan dari OS telah didesain dari ground-up untuk embedded aplikasi.

Specialized Embedded Operating System
  • Secara tipikal termasuk:
    • Memiliki sebuah kesempatan
    • Policy skeduling diatur secara real time
    • Berukuran kecil
    • Merespon eksternal interupsi secara cepat
    • Meminimalkan interval selama interupsi dinonaktifkan
    • Menyediakan fix atau ukuran variabel partisi untuk memory management
    • Memaintain real time clock
eCOS (Embedded Configurable Operating System)
Bersifat open source, gratis, real time OS untuk embedded aplikasi.

Configurability
eCOS konfigurasi tool, yang berjalan pada Windows atau Linux, digunakan untuk mengkonfigure sebuah eCOS paket untuk berjalan pada target embedded sistem.

eCOS Component
  • HAL - Hardware Abstraction Layer
    HAL merupakan software yang menampillkan sebuah API yang konsisten ke layer yang lebih atas dan map operasi pada upper layer kedalam spesifik hardware.
  • eCOS Kernel
    Didesain untuk mencapai beberapa tujuan berikut:
    • Interupsi yang rendah
    • Latency yang rendah
    • Memory footprint kecil
eCOS Scheduler
  • Bitmap Scheduler
    Sebuah bitmap skedular mendukung multi level prioritas tetapi hanya satu thread dapat eksis pada setiap priority.
  • Multilevel Queque Scheduler
    • Mendukung sampel priority level 32
    • Mendukung multiple active thread.

Rabu, 03 Juni 2015

Multi Processor

Multicore Computers

Komputer terdiri dari lebih dari satu core di dalam CPU-nya. Core tersebut beroperasi secara terpisah dengan processor yang terdapat di dalam single chip. Mutlicore tersebut berfungsi untuk meninggkatkan performa tanpa meninggkatkan kecepatan clock prosesor.

Mutiprocessor
Multiprocessor dapat diartikan dengan CPU yang memiliki lebih dari satu prosesor di dalamnya. Pada saat ini beberapa mesin telah mengkombinasikan teknologi multicore dan multiprosesor.

Multicore VS Multiprocessor

  • Save Energy
    Multicore komputer memiliki efesiensi energi yang lebih baik daripada multiprocessor CPU. MultiCPU berarti mutli kopi dari intergrasi sirkuit  yang sama yang berada pada papan sirkuit dengan diasosiasikan dengan chip lainnya. Dengan kata lain sirkuit tersebut tidak berulang. Konsilidasi core pada suatu chio mengurangi penggunaan energi
  • Save Space
    Multicore chip menyimpan papan sirkuit dan paket komponen didalam multi prosesor desain. Memiliki CPU tunggal dengan dua core lebih menghemat space daripada dua chip CPU yang terpisah.
  • Performace
    Secara keseluruhan performa multi aplikasi adalah berjalan secara bersamaan. Menghandel multi request lebih baik daripada multicore sistem. Dengan kata lain performa multi prosesor lebih baik dari multi core.
Multiple Processor System
Sistem pada multiprosesor dibagi tiga yaitu : (a) multiproses shared-memory, (b) multicomputer message passing, dan (c) distributed system.
Multiprocessor share-memory, memiliki ciri khas yaitu terdiri dari banya prosesor. 
Multicomputer message passing, memiliki ciri khas yaitu terdiri atas banyak komputer yang memiliki tempat penyimpannya sendiri dan saling berhubungan. 
Distributed system, merupakan sistem yang dirancancang untuk masa depan. Dimana komputer dan tempat penyimpanan menjadi satu kesatuan dan semuanya terhubung melalui internet.

UMA Multiprocessors with Bus-Based Architectures
Multiprocessor memiliki 3 jenis bus base, yaitu (a) without caching, (b) with caching  dan (c)with caching and private memory




Bus without caching,  beberapa CPU saling terhubung dalam bus yang sama dan mempunyai memory tempat penyimpan yang sama sehingga untuk mengaksesnya CPU harus memastikan bahwa tidak ada CPU lain yang sedang mengakses memory.
Bus with caching, di dalam masing masing CPU terdapata cache sehingga trafic untuk mengakse memory tidak terlalu sibuk.
Bus with cache and private memory, dalam hal ini CPU tidak hanya memiliki cache tapi juga memory private memorynya sendiri.

Architecture
Multiprocessor System diklasifikasikan berdasarkan cara bagaimana CPU dan unit memory unit diasosiasikan. 
  • Uniform memory access (UMA)
    Memory diakses secara seragam. Contohnya adalah Halance System dan VAX 880
  • Nonuniform memory access (NUMA)
    Contohnya adalah HP AlphaServer dan IBMNUMA Q
  • No-remote memory access (NORMA)
    Biasanya merupakan sistem distribusi.
SMP Architecture
Biasanya menggunakan sebuah bus atau persilangan bar sebagain jaringan interkoneksi. Hanya satu komunikasi yang bisa dijalankan dalam sekali waktu, komunikasi yang lain akan ditunda. Penggunaan busway akan menjadikan suatu sistem mengalami bottle neck yang bisa dianggap sebagai kelemahan dimana penggunaan cross bar dapat memprediksi kapan delay akan terjadi.

Kernel Structure
Kernel dari sebuah multiprosesor OS  juga disebut dengan SMP kernel. Beberapa CPU dapat mengeksekusi code didalam didalam kernel dan banyak CPU dapat melakukan hal ini secara paralel. Berdasarkan 2 provisi yang fundamental, kernel bersifat reentrant dan CPU mengkoordinasi aktivitas mereka melalui sinkronasi dan interupsi di dalam interprosesor.

NUMA Architecture
Berikut merupakan tampilan dari NUMA Architecture.


NUMA Kernel
CPU yang terdapat pada NUMA sistem memiliki akses memory yang berbeda baik lokal maupun nonlokal memory.

UMA VS NUMA
Persamaan keduanya adalah space memory tunggal dan pitfal (Membandingkan antara share memory dan distribusi memory).
Perbedaan keduanya adalah waktu akses

NUMA Processor
Karakteristik dari NUMA mesin adalah:
  1. Terdapat space alamat tunggal yang terlihat untuk semua CPU
  2. Akses untuk remote memory dilakukan melalui LOAD dan STORE instruksi
  3. Akses untuk remote memory lebih lambat dari pada akses ke lokal memory

Each CPU Has Its Own Operating Systems

Partisi multiprosesor memory diantara empat CPU tetapi membagi kopi tunggal untuk code dari operating sistem. Masing masing sistem memiliki privasi datanya masing masing.

Classification of Parallel System

Paralel Sistem dapat diklasifikasikan menjadi:
  1. SISD
  2. MISD
  3. SIMD
  4. MIMD
Multiprocessor Synchronization
Sinkronisasi yang berarti dapat saling berhubungan dan saling memperbaharui isi date sehingga tidak ada data yang hilang dan menjadi data yang memiliki intergritas. Untuk mengubah sutau data maka diperlukan key jika hanya untuk membaca tidak dibutuhkan key.

Time Sharing
Time sharing berarti menggunakan struktur data utama untuk mengatur jalannya dari multiprosesor.

Space Sharing
Space sharing dapat diartikan dengan ada banyak CPU yang terhubung untuk saling membagikan memory penyimpanan bagi CPU yang membutuhkan tempat penyimpaan.

Gang Scheduling
Ada tiga bagian dalam gang skedul:
  1. Grup dari thread yang berhubungan diskedulkan sebagai sebuah unit.
  2. Semua member dari gang berjalan secara simultan pada time share CPU yang berbeda.
  3. Semua anggota gang memulai dan mengakhiri secara bersamaan.




Minggu, 31 Mei 2015

DMA

DMA (Direct Memory Access) adalah suatu alat pengendali khusus yang disediakan untuk memungkinkan transfer blok data langsung antara perangkat eksternal dan memory utama tanpa adanya interferensi terus menerus dari processor.

Berikut penjelasan mengenai  Alternative DMA Configurasi


  • Single-bus, detached DMAPada single bus, baik I/O maupun DMA terdapat padat satu bus yang sama. Kelebihan dari konfigurasi ini adalah tidak mahal.
  • Single-bus, integrated DMA-I/O
    Pada konfigurasi ini, yang terdapat pada bus hanyalah DMA. I/O ada berada pada DMA itu sendiri. Dengan kata lain DMA bisa memiliki lebih dari satu I/O dan untuk mengakses I/O itu sendiri maka kita harus akses DMA itu sendiri.
  • I/O bus
    Bisa share memory dan prosesornya I/O connect ke I/O bus dahulu baru connect ke DMA

Minggu, 10 Mei 2015

Memory Management

Pembagian memory dibutuhkan untuk mengakomodasi proses yang banyak. Memory perlu dialokasikan secara efektif sebagaimana banyaknya proses yang ada di dalam memory.

MEMORY MANAGEMENT REQUIRMENT

Relocation, disimpan di RAM. Programmer tidak tahu dimana program akan ditempatkan pada memory. Sementara proses dieksekusi, itu mungkin saja disapu dari disk dan dikembalikan ke momory utama pada alamat yang berbeda. Referensi memory harus diterjemahkan dalam kode untuk alamat fisik.


Protection. Proses tidak harus boleh mereferense ke alamat memory pada proses yang lainnya. Tidak mungkin untuk mengecek alamat pasti pada program sejak program dilokasikan ulang.


Sharing. Mengizinkan beberapa proses banyak memory yang sama besar. Lebih baik mengizinkan setiap proses untuk mengakses salinan yang sama dari program daripada memiliki salinan yang sama tapi terpisah secara memory.
Logical Organization. Program ditulis dalam bentuk modul, Modul dapat ditulis dan dikompile secara independen. Pada saat pembagian modul yang dishare adalah fungsi yang terdapat pada modul tersebut.
Physical Organization. Memory yang tersedi  untuk program ditambah datanya yang mungkin saja tidak cukup. Programmer tidak perlu tahu berapa memory yang mungkin akan tersedia.

ADDRESSING

Logical. Menunjuk pada alamat memory dari assignment sekarang. Terjemahannya dibuat untuk menjadi alamat fisik.
Relative.  Alamat yang mengekspresikan lokasi yang relatif untuk beberapa titik yang diketahui.
Physical. Secara umum dikenal sebagai alamat asli.

MULTIPROGRAMMING WITH FIXED PARTITION


Fixed memory partition. Memisahkan tumpukan input pada masing masing partisi.
Multiple input queque. Ketika job baru tiba, itu mungkin saja diletakkan kedalam queque untuk partisi yang paling kecil.
Single input queque. Tidak peduli partisi menjadi bebas, job sangat dekat sisi depan dari queque yang sesuai

MEMORY ALLOCATION ALGORITHM

To speed-up search. Memisahkan tabel untuk proses dan lubang. Daftar lubang diurutkan. Best fit = first fit, next fit = unnescesary.
  • Best - fit algorithm. Memilih salah satu blok yang ukurannya paling sesuai dengan permintaan. 
  • First - fil algorithm. Merupakan algoritma yang tercepat.
Buddy System.
Jika ukuran request 2^(u-1)<s<= 2^u, blok akan dialokasikan.
Berikut merupakan contoh dari buddy sistem.




Dead Lock

Suatu dead lock akan terjadi jika setiap proses yang ada saling menunggu satu sama lain.
Sedikit  pengenalan mengenai dead lock. Gambar di bawah akan mengilustrasikan sedikit tentang gambaran saat  dead lock terjadi.


Kondisi kondisi yang ada pada dead lock
  1. Mutual exclusion
    Hanya satu proses yang dapat berjalan.
  2. Hold and wait
    Proses yang menggunakan satu proses dan sedang menunggu proses lain.
  3. Circular wait
    Masing proses saling menunggu.
  4. No Preemption
    Tidak dapat diinterupsi jika proses telah selesai
Gambar di bawah merupakan ilustrasi dalam mengalokasi resource: (a) Holding resource (b) Request a resource (c) Deadlock


Gambar berikut akan menjelaskan momen ketika dead lock dan ketika dead lock dapat dihindari.


Dead lock

No Dead Lock
Strategi ketika terjadi deadlock adalah:
  1. Abaikan masalahnya
  2. Salah satu ada yang mengalah
  3. Pencegahan dilakukan secara dinamis
  4. Pencegahan berdasarkan kondisi yang ada
Ada dua pendekatan dalam hal deadlock avoidance yaitu:
  • Jangan memulai program yang memungkinkna terjadinya deadlock
  • Jangan menjamin penambahan resource jika berakhir dengan deadlock
Pencegahan deadlock dapat dilakukan dengan beberapa cara yaitu:
  1. Mutual exclusion
  2. Hold and wait
  3. Circular wait
  4. No preemption
Tabel di bawah akan meringkas hal hal tentang pencegahan deadlock.




Jumat, 08 Mei 2015

Concurrency

Concurrency dapat diartikan menjalan banyak proses dalam yang bersamaan. Prosesor yang digunakan dalam proses tersebut dialokasikan oleh CPU.

Beberapa masalah yang kerap ditemukan pada konkurensi terdapat pada:

  • Pembagian sumber yang bersifat global
  • Managemen alokasi dari sumber daya
  • Pencarian kesalahan pada programming
Hal yang sering menjadi perhatian utama:

  1. Menjaga track dari proses yang sedang aktif
  2. Mengalokasikasikan resource 
  3. Menjaga keamanan data dan resource
  4. Menjaga hasil dari proses bersifat independen
Hal  yang sering terjadi antara proses dan resource:
  1. Mutual Exclusion
    Pada saat kritis, hanya satu program yang diizinkan untuk mengakses resource yagn ada.
  2. Deadlock
  3. Starvation
Korporasi yang ada di dalam proses:
  1. By sharing
    Writing harus bersifat mutual exclusion dan critical sesion harus ada untuk menjaga integritas.
  2. By communication
    > Mutual exclusion bukan sebuah pengontrol requirment
    > Setiap proses  menunggu pesan dari proses lainnya
    > Dua proses mengirim pesan ke yang lainnya sementara proses lain menunggu.
Hal-Hal yang berkaitan dengan mutual exclusion:
  1. Hanya satu proses yang diizinkan untuk mengakses resource ketika critical sesi terjadi.
  2. Tidak ada deadlock maupun starvation
  3. Sebuah proses tidak harus ditunda saat kritikal sesi jika tidak ada proses yang sedang berjalan
Hal hal yang dipenuhi dalam mutual exclusion:
  1. menghilangkan interupsi
  2. lock variabel
  3. strict alternation
  4. peterson's solution
  5. tsl instruction
Bagaimana dengan pencegahan interupsi?
Sebuah proses akan berjalan sampai ada yang meminta servis dari OS atau sampai proses itu diinterupsi. Adanya pencegahan interupsi itu memungkin terjadinya mutual exclusion. Prosesor dibatasi dalam hal kemampuan.

Tabel di bawah akan menjelaskan mekanism yang sering dalam konkurensi.



Salah satu masalah klasik yang sering terjadi pada IPC adalah masalah Dining Philosopher's Room.


> Philosopher eat or think> Eating need 2 fork
> Pick one fork at one time
> How to prevent dead lock?




Di dalam konkurensi juga ada dibahas mengenai mutex. Gambar gambar di bawah akan menjelaskan sedikit tentang mutex.

Mutex

Mutex in thread

Hal lain yang akan dibahas kali ini adalah monitor (pengawasan).
Konstruksi dari bahasa pemrogramman mensuport kontrol akses dalam pembagian data. Hal ini dilihat dari compiler yang sinkron secara otomatis dan adanya enforce runtime.
Enkapsulasi juga digunakan saat melakukan pembagian data.
Hanya ada satu proses aktif di dalam sebuah monitor.
Dalam hal mutual exclusion yang terdapat pada monitor, sama seperti sebelumnya hanya ada satu proses yang dapat diproses sekali waktu.

Monitors
MESSAGE PASSING
Komunikasi dilakukan denga menggunakan fungsi send()/receive(). Receiver bisa dikategorikan secara umum.


www.skyconnectiva.com
www.binus.ac.id

Process and Threads

Threads memungkinkan beberapa eksekusi untuk dijalankan dalam ruang lingkup dan waktu yang sama.
Thread memiliki dua karakteristik yang menjadi pembeda yaitu :

  • Lightweight process
    Terjadi karena thread memiliki beberapa propertis dari proses yang sedang berjalan
  • Multithreading
    Memungkinkan banyak thread dalam proses yang sama.
Di dalam multi-threaded, sebuah proses didefenisikan sebagai unit sumber alokasi dan unit pencegahan. Hal hal tersebut diasosiasikan dengan proses:
  • Alamat virtual yang memegang proses image.
  •  Akses yang aman ke prosesor, prosesor lainnya, file, dan sumber input-output.
Berikut merupakan salah satu contoh dari model thread.



Gambar di bawah akan menjelaskan perbedaan antara proses dan thread. 
Pada single-thread, representasi dari proses termasuk proses blok kontrolnya dan space alamat user, sebagaiman user dan kernel menumpuk untuk memanage call/return dari eksekusi dari proses. Sementara proses berjalan, hal itu mengontrol register dari prosesor. 
Pada multi-thread, masih terdapat single proses kontrol blok dan asosiasi alamat user dengan proses, tetapi sekarang ada pemisah untuk stack pada masing masing thread.


Implementasi dari thread itu sendiri memiliki keuntungan dan kerugian. Keuntungan dari penggunaan thread adalah tidak dibutuhkannya non blocking sistem call yang baru. Sedangkan, kerugiannya adalah biaya yang lebih mahal baik untuk membuat maupun menghancurkan thread tersebut. 

Tabel di bawah akan mendeskripsikan relasi yang mungkin terjadi antar thread dan proses.


Keputusan penjadwalan CPU mungkin akan diambil ketika:
  1. Switch dari running menjadi waiting
  2. Switch dari running menjadi ready
  3. Switch dari waiting menjadi ready
  4. Ketika terjadi terminasi
Modul dispatcher memberikan kontrol pada CPU untuk  proses yang telah dipilih dengan menggunakan skedul jangka pendek, hal tersebut termasuk:
> switch konteks
> switch user mode
> melompat ke lokasi tertentu di dalam program user untuk me-restart program tersebut.

Optimalisasi juga memiliki beberapa kriteria yaitu:
> Penggunaan CPU secara optimal
> Maximum throughput
> Minimum waktu pemakaian
> Minimum waktu tunggu
> Minimum waktu respon 
Penjadwalan memiliki beberapa tujuan yaitu:
  • All systems
    >
    Memberikan setiap proses jumlah memory yang sama
    > Menjaga keseimbangan sistem
    > Memastikan semuanya terjamin
  • Batch systems
    >
    Mampu mengerjakan perkerjaan sebanyak mungkin
    > Minimalisasi waktu antara submisi dan terminasi
    > Menjaga CPU tetap bekerja sepanjang waktu
  • Interactive system
    >
    Merespon request dengan cepat
    > Memenuhi ekspektasi user
  • Real-time system
    >
    Menghindari hilangnya data
    > Menghindari menurunnya kualitas
Beberapa algoritma yang bisa digunakan dalam melakukan scheduling:
  1. First Come First Serve

  2. Shortest Job First

  3. Interactive Scheduling Algorithm

Potensi dari performa dari multicore bergantung pada kemampuan untuk mengeksplotasi sumber daya yang ada secara efektif. Berikut rumus yang dapat digunakan untuk mengukur keoptimalan tersebut.


Berdasarkan sudut pandang Valve, opsi granulariti dari threading didefinisikan oleh hal hal berikut:
  • Coarse threading
    Modul individual diassign untuk individual prosesor. Dalam kasus search engine, hal ini dapat diartikan dengan meletakkan render pada satu prosesor, AI dan sebagainya.
  • Fine-grained threading
    Banyak persamaan yang tersebar dalam multiple prosesor. Sebagai contoh, perulangan dapat dipecah menjadi jumlah yang lebih kecil.
  • Hybrid threading
    Hal ini termasuk penggunaan seleksi untuk beberapa sistem dan single thread untuk thread lainnya.
Proses multi-threading memperoleh konkurensi tanpa mengalamai overhead menggunakan multiple proses. Thread di dalam proses yang sama dapat saling bertukar informasi melalui alamat dan memiliki akses untuk membagi sumber dari proses.

Sebuah proses pada linux direpresentasikan oleh task_struct struktur data. task_struct mengandung informasi di dalam beberapa kategori yaitu:
  • State
    State eksekusi dari sebuah proses (ready, executing, ready, suspended, stop, zombie).
  • Scheduling information
    Informasi dibutuhkan oleh linux untuk menjadwalkan proses. Proses bisa jadi bersifat normal, real time dan memiliki prioritas.
  • Identifier
    Setiap proses memiliki pengenal proses yang unik dan juga memiliki user dan kelompok pengenal.
  • Inter-process communication
    Linux mendukung mekanisme IPC yang dapat ditemukan pada UNIX SVR4.
  • Times and timer
    Termasuk waktu proses pembuatan dan jumlah waktu prosesor yang digunakan. Sebuah mungkin diasosiasikan dengan lebih banyak interval waktu. 
  • File system
    Termasuk pointer  ke beberapa file yang dibuka oleh proses sebagaimana pointer menunjuk proses yang berjalan secara bersamaan.
  • Address space
    Mendefinisikan alamat virtual yang menunjuk pada proses saat ini.
  • Processor-specific context
    Register dan tumpukan informasi yang mengkostitusi  konteks dari proses.
  • Running
    Nilai proses ini akan dikorespondenkan dengan dua state.