1.
Time Services
Clocks dan time services adalah beberapa
fasilitas dasar yang disediakan untuk programmer oleh setiap sistem operasi
real-time . Waktu layanan yang diberikan oleh sistem operasi didasarkan pada software
clock yang disebut systems clock yang dikelola oleh sistem operasi,
dikelola oleh kernel berdasarkan interupsi yang diterima dari hardware clock.
Karena hard real-time systems biasanya memiliki kendala waktu (timing
constraints) dalam kisaran mikro detik, system clock harus memiliki
resolusi untuk mendukung layanan waktu yang diperlukan, sedangkan sangat sulit
bagi perancang real-time operation systems untuk mendukung hal tersebut dengan sangat
baik. Hardware clock secara periodik
menciptakan interrupt (time service interrupts). Sebuah thread
dapat mendapatkan current time readingdari system clock
dengan memanggil system call yang didukung oleh sistem operasi. Semakin
baik resolusi dari clock, semakin
sering kebutuhan untuk time service interrupts dan lebih besar jumlah processor
time yang kernel habiskan dalam merespon interrupt tersebut.
1.1
Clock Interrupt
Processing
Setiap kali jam interupsi terjadi , selain
incrementing software clock, handler routine melakukan kegiatan sebagai
berikut:
1.
Process Timer Events
Sistem operasi real-time menangani baik per-process timer queues atau single system-wide timer queue. Sebuah timer
queu berisi semua timer yang diatur
berdasarkan urutan waktu masa berlakunya (expiration times) berakhir . Setiap
waktu dikaitkan dengan handler routine. Handler routine adalah fungsi yang
harus dipanggil saat timer berakhir . Pada setiap clock interrupt, kernel akan
memeriksa struktur data timer dalam queue timer untuk melihat apakah ada timer
event telah terjadi . Jika ditemukan bahwa timer event telah terjadi , maka
antrian rutin handler yang sesuai dalam ready queue.
2.
Update ready
list
Sejak clock event yang terakhir terjadi,
beberapa tugas mungkin telah tiba atau berubah menjadi siap karena kondisi
tertentu yang membuat task itu menunggu telah dipenuhi. Task dalam queue
diperiksa, tasks yang ditemukan telah berubah dari posisi menunggu menjadi
siap, masuk dalam ready queue. Jika ditemukan sebuah task yang memiliki
prioritas lebih tinggi daripada tugas yang sedang berjalan telah menjadi siap,
maka tugas yang sedang berjalan didahului dan scheduler dipanggil.
3.
Update Execution
Budget
Pada setiap clock interrupt, scheduler
mengurangi time slice (budget) yang tersisa untuk mengeksekusi task. Jika sisa
budget menjadi nol dan task tidak selesai, maka task tersebut didahului,
kemudian scheduler dipanggil untuk memilih tugas lain untuk dijalankan.
1.2
Providing
High Clock Resolution
Terdapat dua kendala utama dalam menyediakan
timer resolusi tinggi . Pertama, overhead yang terkait dengan pemrosesan clock
interrupt menjadi berlebihan . Kedua, jitter yang berkaitan dengan time lookup
system call (clock-gettime()) sering dari urutan beberapa milidetik . Oleh
karena itu, tidak berguna untuk menyediakan clock dengan resolusi yang lebih
baik dari ini. Namun, beberapa aplikasi real-time perlu berurusan dengan timing
constrain dari urutan beberapa nanodetik.
Sebuah cara untuk memberikan clock resolution
cukup baik adalah dengan pemetaan hardware clock ke ruang alamat aplikasi .
Sebuah aplikasi kemudian dapat membaca jam hardware secara langsung ( melalui
proses pembacaan memori normal) tanpa
harus melakukan system call. Tetapi membuat hardware clock terbaca oleh
aplikasi secara signifikan mengurangi portabilitas dari aplikasi.
1.3
Timers
Timer service adalah layanan penting yang
disediakan untuk aplikasi oleh semua sistem operasi real-time. Sistem operasi
real-time biasanya mendukung dua jenis utama timer: timer periodik dan
aperiodik (One Shot) timer.
1.
Periodic Timers
Digunakan terutama untuk pengambilan sampel
event secara berkala atau melakukan beberapa kegiatan secara berkala. Setelah
periodik timer diatur, setiap kali setelah masa berlakunya habis handler
routine yang sesuai dipanggil, kemudian dimasukkan kembali ke dalam timer
queue.
2.
Aperiodic (or One Shot) Timers
Timer ini ditetapkan
untuk berakhir hanya sekali. Contohnya adalah watchdog timer seperti
dibawah ini :
Watchdog timer digunakan
secara ekstensif dalam real-time
programs untuk mendeteksi ketika task melewati tenggat waktu, dan
menginisiasi exception handling procedures pada kejadian tersebut. Sebuah
contoh penggunaan watchdog timer seperti gambar diatas, watchdog timer diatur
pada awal dari sebuah critical function f() tertentu melalui sebuah call
wd_start (t1). wd_start (t1) call mengatur watchdog timer berakhir sesuai
deadline yang ditentukan (t1) dari awal tugas. Jika fungsi f() tidak
menyelesaikan bahkan setelah t1 telah berlalu, maka watchdog timer berakhir,
menunjukkan task deadline telah terlewati dan exception handling procedures
dimulai. Bila task selesai sebelum waktu wathcdog timer selesai (sesuai
deadlinenya) maka watchdog timer di
reset menggunakan wd_tickle()
call.
2.
Features of a
Real-Time Operating System
Hasil identifikasi beberapa fitur penting yang
diperlukan dari sistem operasi real-time , dan terutama mereka yang biasanya
tidak ada dalam sistem operasi tradisional adalah sebagai berikut:
2.1
Clock
and Timer Support
Clock dan timer
services dengan resolusi yang memadai adalah salah satu isu yang paling penting
dalam pemrograman real-time .
Pengembangan aplikasi hard real-time sering memerlukan dukungan layanan timer
dengan resolusi urutan beberapa mikrodetik . Dan bahkan resolusi yang lebih baik mungkin diperlukan
dalam kasus aplikasi khusus tertentu . Clock dan timer adalah bagian penting
dari setiap sistem operasi real-time . Di sisi lain , sistem operasi
tradisional sering tidak menyediakan layanan waktu dengan resolusi yang cukup
tinggi.
2.2
Real-Time
Priority Levels
Sebuah sistem
operasi real-time harus mendukung tingkat prioritas statis . Sebuah tingkat
prioritas yang didukung oleh sistem operasi disebut statis, ketika programmer
memberikan nilai prioritas untuk sebuah task, sistem operasi tidak mengubahnya
sendiri. Tingkat prioritas statis juga disebut real-time priority levels.
semua sistem operasi tradisional dinamis mengubah tingkat prioritas dari task
dari values yang ditetapkan oleh programmer untuk memaksimalkan throughput
sistem . Tingkat prioritas seperti yang diubah oleh sistem operasi dinamis
jelas tidak prioritas statis.
2.3
Fast
Task Preemption
Untuk
keberhasilan operasi dari aplikasi real-time , setiap kali task dengan
prioritas kritikal tinggi tiba , pengerjaan tugas prioritas rendah harus segera
dikerjakan oleh CPU. Durasi waktu dari tugas prioritas yang lebih tinggi
menunggu sebelum diperbolehkan untuk dijalankan secara kuantitatif dinyatakan
sebagai corresponding task preemption time. Sistem operasi real-time
kontemporer memiliki task preemption times dengan hitungan mikro detik saja.
Namun, dalam sistem operasi tradisional , kasus terburuk dari task preemption
times biasanya pada hitungan detik. Tak perlu dikatakan bahwa sistem operasi
real-time harus memiliki kernel preemptive dan harus memiliki waktu tugas
preemption dari urutan dari mikro detik saja.
2.4
Predictable and Fast Interrupt Latency
Interrupt
latency didefinisikan sebagai time delay antara terjadinya interrupt dan
menjalankan ISR yang sesuai (Interrupt Service Routine ) . Dalam sistem operasi
real-time, upper bound pada latency interrupt harus dibatasi dan
diharapkan akan kurang dari mikro detik saja. Cara interrupt latency rendah
dicapai, adalah dengan melakukan sebagian besar kegiatan ISR dalam deferred
procedure call (DPC). Sebuah DPC pada dasarnya adalah sebuah tugas yang
melakukan sebagian besar aktivitas ISR. Sebuah DPC dieksekusi kemudian di nilai
prioritas tertentu, dukungan untuk nested interrupts biasanya diinginkan.
Artinya, sistem operasi real-time tidak hanya sekedar preemptive ketika
menjalankan kernel routines, tetapi harus preemptive selama melayani interupsi
juga.
2.5
Support for Resource Sharing Among Real-Time Tasks
Jika task
real-time diizinkan untuk berbagi sumber daya kritis di antara mereka sendiri
menggunakan teknik Resource Sharing tradisional, maka waktu respon tugas dapat
menjadi tak terbatas yang berujung pada lewatnya deadline. Ini adalah salah
satu alasan kuat mengapa setiap sistem operasi real-time komersial harus
minimal menyediakan basic priority inheritance mechanism.
2.6
Requirements
on Memory Management
Sistem operasi
real-time embedded hampir tidak pernah mendukung virtual memory dan memory protection features.
Hanya aplikasi besar dan kompleks saja yang mempunyainya. Sistem operasi
real-time untuk aplikasi berukuran besar dan menengah diharapkan untuk
memberikan dukungan memori virtual, tidak hanya untuk memenuhi tuntutan memori
tugas yang berat dari aplikasi, tetapi juga memori untuk aplikasi-aplikasi
non-real-time seperti teks editor, software e-mail, dll agar dapat berjalan
pada platform yang sama. Virtual memory mengurangi rata-rata waktu akses
memori, tetapi merendahkan worst-case dari akses memori. Hukuman menggunakan
memori virtual adalah overhead yang terkait dengan menyimpan tabel terjemahan
alamat dan melakukan virtual ke alamat fisik terjemahan. Selain itu, mengambil
halaman dari memori sekunder pada permintaan menimbulkan latency yang signifikan. Oleh karena itu, sistem operasi yang
mendukung memori virtual harus menyediakan aplikasi real-time dengan beberapa
sarana untuk mengontrol paging, seperti penguncian memori. Penguncian memori
mencegah halaman dari yang bertukar dari memori ke hard disk. Dengan tidak
adanya fitur memori penguncian, waktu akses memori tugas real-time bahkan
kritis dapat menunjukkan jitter besar, seperti waktu akses akan sangat
tergantung pada apakah halaman yang dibutuhkan dalam memori fisik atau telah
bertukar keluar .
Perlindungan
memori merupakan masalah penting yang perlu dipertimbangkan dengan cermat.
Kurangnya dukungan untuk perlindungan memori di antara tugas-tugas mengarah ke single address space untuk
tasks. Untuk aplikasi
embedded kecil , overhead beberapa Kilo Bytes memori per proses dapat diterima.
Namun, bila tidak ada perlindungan memori yang disediakan oleh sistem operasi ,
biaya pengembangan dan pengujian program tanpa perlindungan memori menjadi
sangat tinggi ketika kompleksitas meningkat aplikasi . Selain itu, kenaikan
biaya pemeliharaan setiap perubahan dalam satu modul akan memerlukan pengujian
ulang seluruh sistem.
Sistem operasi
real-time embedded biasanya tidak mendukung memori virtual. Juga , perlindungan
memori menjadi sulit untuk mendukung sistem manajemen memori non-virtual. Untuk
alasan ini , dalam banyak embedded system, kernel dan proses pengguna
mengeksekusi di ruang yang sama, yaitu tidak ada proteksi memori. Oleh karena
itu , sistem panggilan dan fungsi panggilan dalam aplikasi tidak dapat
dibedakan. Hal ini membuat aplikasi debugging sulit , karena run away pointer
dapat merusak kode sistem operasi , membuat sistem " freeze ".
2.7
Additional Requirements for Embedded Real-Time
Operating Systems
Beberapa persyaratan tambahan yang biasanya dimiliki embedded
applications biasanya adalah :
1. Constraints atau
batasan dalam hal biaya, ukuran, dan konsumsi daya.
2.
Sistem operasi real-time embedded harus mampu melakukan operasi disk less,
karena sering kali disk yang terlalu besar untuk digunakan, atau meningkatkan
biaya penyebaran. Selanjutnya, sistem operasi tertanam harus meminimalkan
konsumsi daya total sistem.
3.
Sistem operasi embedded biasanya berada di ROM. Untuk aplikasi tertentu
yang membutuhkan respon cepat, mungkin perlu untuk menjalankan sistem operasi
real-time pada RAM . Karena waktu akses RAM adalah lebih rendah dari ROM , maka
ekesekusinya lebih cepat. Untuk aplikasi embedded pada sistem operasi real-time
diharapkan memiliki foot print (penggunaan memori ) yang sekecil mungkin.
3.
Unix as a Real-Time Operating System
UNIX adalah sistem
operasi yang sangat populer, biasa digunakan sebagai komputer mainframe.
Sekarang ini turunan UNIX banyak digunakan untuk komputer dekstop. Keberadaan
UNIX sebagai sistem operasi yang ringan dan kebanyakan bersifat open source
membuat banyak pengembang menggunakan sistem ini untuk dikembangakan lebih
lanjut.
Pada bahasan ini akan
dibahas tentang permasalahan UNIX sebagai Real-Time
Operating System. Sebab ternyata sejak pertama di ciptakan UNIX bukan
merupakan sistem operasi yang Real-Time. Ada 2 permasalahan yang membuat UNIX
bukan sebagai Real-Time Operating System yaitu
karena kernel UNIX bersifat non-preemptive dan juga karena terjadi perubahan
prioritas pada task nya (Dinamic Priority
of Task).
3.1.
Features
of UNIX System
- Clock and Timer
Support
Pada sistem UNIX, clock
dan dukungan timer sangat jauh jika ingin dikatakan sebagai real-time. Sebuah
sistem dikatakan real-time jika memiliki waktu eksekusi kurang dari 1
milidetik, sedangkan waktu eksekusi pada UNIX sebesar 10 milidetik.
- Real-Time Priority
Levels
Pada UNIX terjadi
perubahan level prioritas atau level
prioritasnya bersifat dinamik. Hal tersebut sudah melanggar aturan dari
real-time yang prioritas levelnya harus tetap atau statis.
- Fast Task Preemtive
UNIX memiliki
penjadwalan task yang bersifat non-preemptive. Hal itu berarti sistem di UNIX
tidak menunggu prioritas yang tinggi untuk dieksekusi terlebih dahulu. Namun
jika ada task yang datang akan dieksekusi dahulu walaupun prioritasnya rendah,
kemudian prioritas yang lain menunggu untuk di eksekusi walaupun prioritasnya
tinggi sekalipun.
- Predictable and Fast
Interrupt Latency
Suatu sistem dikatakan
real time jika dapat di prediksi dan memiliki jeda waktu interupsi yang cepat.
Namun pada UNIX waktu interupsi yang sangat lama. Jika pada sistem real-time
dalam hitungan milidetik, pada UNIX bisa sampai detik
- Support For Resource
Sharing among RT Task.
Pada UNIX tidak terjadi
pembagian sumber daya secara bersama-sama. Sumber daya di akses satu persatu.
Jika satu task mengakses sumber daya maka sistem akan mengunci (lock) aksesnya
sehingga akses yang lainya harus
menunggu.
- Requirement on Memory
Management
Managemen memori UNIX
sudah mendukung untuk virtual memori. Jadi jika memori di disk sudah penuh maka
akan membentuk virtual memori untuk menampung.
- Addional Requirement
For Embedded RTOS
1. Time Constrain :
Cost, Size, Power Consumption
Biaya yang diperlukan
UNIX untuk menjalankan aplikasi embedded
cukup besar sebab UNIX bukan sistem operasi
Real-Time. Ukuran file yang dihasilkan UNIX juga besar. Kemudian
komsumsi powernya juga tinggi karena UNIX sejadinya bukan real-time os jadi
pemrosesnya membutuhkan komsumsi daya yang banyak.
3.
Disk Less Operation
UNIX
mampu mengatur penggunaan disk jika ukuran file terlalu besar. Sebab UNIX bisa
membuat virtual memori jika terdapat kelebihan muatan.
4.
Minimize Memory
Requirement.
Sistem
embedded di UNIX menyimpan menyimpan memori di ROM. Untuk proses yang
memerlukan respon cepat juga dikerjakan di ROM, jadi UNIX untuk sistem embedded
belum mampu untuk memenuhi pengurangan kebutuhan memori.
4.1.Other Deficiencies of Unix
Kelemahan (Deficiencies) UNIX disini maksudnya
adalah kekurangan yang ada pada UNIX sehingga tidak bisa menjadi Real-Time Operating System. Kelemahan-kelemahan
itu antara lain :
Tidak
adanya dukungan untuk driver perangkat tambahan : Di
UNIX (Pada bahasan ini kita gunakan UNIX sistem V) driver perangkat berjalan
pada mode kernel. Hal itu berarti akan sangat sulit jika kita ingin menambah
perangkat baru yang membutuhkan driver.
Kurangnya
layanan file Real-Time : Di UNIX, blok file
di alokasikan ketikafile itu di panggil oleh aplikasi. Sebagai konsekuensi
ketika task membaca file, maka mungkin akan terjadi error ketika blok yang
tersedia pada disk sudah penuh. Jadi tidak ada jaminan akan adanya ruang yang
tersedia di disk saat aplikasi membaca file. Kekurangan yang lain adalah bila
ada file yang sama maka alokasi nya tidak diletakan pada lokasi yang berdekatan
di disk.
Dukungan
untuk Time Service tidak memadai : Time Service pada
UNIX tidak memungkin untuk di katakan sebagai Hard Real-Time sebab clock
resolution yang diberikan ke aplikasi adalah 10 milidetik.
5.
Unix-based Real-Time
Operating Systems
Pada
pembahasan sebelumnya kita sudah tahu bahawa UNIX tidak cocok digunakan pada
aplikasi Hard Real-Time , dan di
pembahasan kali ini akan diterangkan solusi untuk menjadikan UNIX sebagai Real-Time Operating System.
5.1. Extensions To The Traditional
UNIX Kernel
Salah satu solusi yang
digunakan untuk menjadikan UNIX cocok di aplikasi Real-Time salah satunya
adalah dengan menambahkan beberapa kemampuan-kemanpuan dari Real-Time seperti
menambahkan dukungan timer Real-Time, Penjadwalan task Real-Time dibangun pada
penjadwalan UNIX dll. Meskipun dengan penambahan kemampuan tersebut tidak mampu
mengatasi masalah utama dari UNIX yaitu non-preemtive
dan dinamic priority of task. Namun setidaknya sudah memenuhi sedikit
kebutuhan dari aplikasi hard real-time.
5.2. Host-Target Approach
Pendekatan ini sangat
populer untuk mendeploy aplikasi
embedded. Dalam pendekatan ini, pembuatan aplikasi dan mengeksekusian aplikasi
berada pada tempat yang berbeda. Jadi untuk membuatan aplikasi Real-Time
dilakukan di host kemudian dari host akan di unduh ke board target. Agar lebih
jelasnya dapat dilihat pada gambar dibawah.
Sistem pada host harus
memiliki lingkungan pengembangan program seperti compiler, editor, library,
cross compires, debuggers, dll. Memori yang digunakan harus memiliki
spesifikasi untuk mendukung virtual memori. Penghubung antara host dan board
target adalah jaringan TCP/IP. Cara implementasi
dari pendekatan ini adalah pertama aplikasi di buat di host kemudian
cross-compiler melakukan menghasilkan kode untuk prosesor target. Setelah itu
modul yang telah dieksekusi di unduh oleh board target. Task di eksekusi di
board target dan eksekusi dikendalikan
di sisi host menggunkan cross-debugger simbolik. Sewaktu program sukss bekerja,
maka akan tersimpan di ROM atau Flash memori dan siap untuk dijalankan
aplikasi. Contoh sistem operasi Real-Time kompersial adalah PSOS, VxWorks dan
VRTX yang nantinya akan dibahas pada bab berikutnya.
5.3. Preemptive Point
Approach
Sudah kita ketahui
bahwa UNIX menerapkan penjadwalan non-preemptive untuk mengeksekusian task.
Maka salah satu cara untuk membuatnya menjadi real-time salah satunya dengan
meningkatkan performa real-time nya di sistem routine. Pada poin ini sistem
akan dijadwalkan secara preemptive membuat sistem menunggu prioritas tertinggi
dari task real-time tanpa adanya kesalahan struktur data kernel.
5.4. Self-Host System
Tidak seperti metode
pendekatan Host-Target, pada sistem Self-Host pembuatan aplikai dan
mengeksekusian dilakukan pada satu lokasi. Oleh karena itu metode ini sulit
melakukan debugging program dan dukungan cross-compiler dan cross-debuger.
Sistem self-host dibangun berdasar pada arsitektur micro-kernel. Menggunakan
arsitektur micro-kernel untuk sistem operasi self-host memiliki beberapa
keuntungan. Di arsitektur mikro-kernel hanya fungsionalitas core seperti
penanganan intterupt dan managemen proses yang diimplementasikan sebagai
routine kernel. Semua fungsionalitas lain seperti managemen memori, managemen
file, managemen perangkat dan sebagainya di implementasikan sebagai modul
add-ons yang beroperasi di mode user. Hasilnya akan membuat sistem operasi
mudah untuk di konfigurasi. Selain itu micro-kernel juga ringan sehingga menjadi
lebih efisien.
Seperti yang dibahas
pada sub bab sebelumnya, bahwa permasalahan utama dari UNIX untuk menjalankan aplikasi real-time adalah
karena penjadwalannya berifat non-preemptive dan pritas tasknya bersifat
dinamik (berubah-ubah). Oleh karena itu pembahasan kali ini kita akan membahas
tentang Non-Preemptive dan jenis-jenis prioritas pada pada task.
Kernel
No-Preemptive : Kernel UNIX bersifat no-preemptive
yang artinya akan menunggu sampai satu proses selesai dieksekusi baru kemudian
mengeksekusi proses lain. Agar membuat sistem menjadi preemptive, lock harus
diletakan ditempat yang tepat. Sitem UNIX preemptive yang sebenarnya mempunyai
2 lock yaitu kernel-level lock dan spin lock. Pada kernel-level lock sistem
menunggu sampai task berikutnya siap. Lock akan tertutup sampai ada proses yang
ready.
Gambar 4. Operasi Spin Lock
Kemudian pada spin
lock, task 2 tidak bisa mengakses resources (sumber) karena tertutup spin lock.
Task 2 akan berputar-putar menunggu sampai task 1 selesai di kerjakan kemudian
di realease oleh sistem
Prioritas-prioritas
Real-Time : Sekarang akan di bahas mengenai permasalahan
prioritas pengalamatan sistem self-host pada UNIX. Prioritas pada UNIX
berubah-ubah sesuai keinginan sistem. Ada tiga prioritas perubahan pada sistem
self-host ini yaitu
1. Idle (Non-Migrating)
Adalah
prioritas terendah, prioritas ini akan di eksekusi bila sudah tidak ada task
yang dijalankan. Prioritasi idle ini bersifat statis dan tidak dilakukan
perhitungan secara periodik
2.
Dinamic
Adalah
prioritas yang melakukan perhitungan secara periodik untuk meningkatkan waktu
respon rata-rata. Pengerjaan prioritas ini dilakukan setelah prioritas
Real-time di jalankan.
3.
Real-Time
Adalah
prioritas tertinggi yang bersifat stati dan tidak ada penghitungan ulang. Task
hard-real time bekerja pada level ini
6.
Windows As A Real-Time Operating System
Sistem operasi Microsoft Windows sangat populer di komputer
desktop . Sistem operasi Windows telah berevolusi selama bertahun-tahun
terakhir dua puluh lima tahun dari naif DOS ( Disk Operating System ) . Microsoft
mengembangkan DOS di awal tahun delapan puluhan . Microsoft terus mengumumkan
versi baru dari DOS hampir setiap tahun dan terus menambahkan fitur baru untuk
DOS dalam versi berturut-turut . DOS berkembang ke sistem operasi Windows ,
utamanya membedakan fitur adalah grafis front-end . Seperti beberapa
versi baru dari Windows terus muncul dengan cara upgrade , maka code Windows
benar-benar ditulis ulang pada tahun 1998 untuk mengembangkan sistem Windows NT
. Karena kode benar-benar ditulis ulang , sistem Windows NT jauh lebih stabil (
tidak crash ) daripada sistem berbasis DOS sebelumnya . Versi terbaru dari
sistem operasi Microsoft adalah keturunan dari Windows NT , sistem berbasis DOS
yang ditolak . Gambar . 31,8 menunjukkan silsilah berbagai sistem operasi dari
Microsoft stabil . Karena stabilitas merupakan syarat utama untuk aplikasi
real-time keras, kita hanya mempertimbangkan Windows NT dan turunannya dalam
penelitian kami dan tidak termasuk garis DOS produk.
Sebuah organisasi
yang memiliki sistem Windows NT mungkin tertarik untuk menggunakannya untuk aplikasi real-time pada rekening
baik penghematan biaya atau kenyamanan. Hal ini terutama berlaku
dalam pengembangan aplikasi prototipe
dan juga ketika
hanya sejumlah penyebaran yang diperlukan. Berikut ini, kami menganalisis secara kritis kesesuaian Windows NT untuk
pengembangan aplikasi real-time. Pertama,
kami menyoroti beberapa fitur dari Windows NT yang
sangat relevan dan berguna untuk pengembang aplikasi real-time.
Dalam ayat berikutnya,
kita menunjukkan beberapa
kekosongan Windows NT bila digunakan dalam
pengembangan aplikasi real-time.
6.1.
Features of Windows NT
Windows NT memiliki beberapa fitur
yang sangat diinginkan untuk aplikasi real-time seperti dukungan untuk
multithreading
, tingkat prioritas real-time , dan timer . Selain itu , resolusi jam yang
cukup baik untuk sebagian besar aplikasi real-time .
Windows NT mendukung 32 tingkat
prioritas ( lihat Gambar . 31,9 ) . Setiap proses milik salah satu kelas
prioritas berikut : menganggur , normal, tinggi , real-time . Secara default ,
kelas prioritas di mana aplikasi berjalan normal . Baik normal dan tinggi
adalah tipe variabel mana prioritas adalah menghitung ulang secara berkala . NT
menggunakan penjadwalan pre - emptive prioritas - driven dan benang prioritas
real-time memiliki awalan dibanding semua benang lainnya termasuk benang kernel
. Proses seperti penggunaan screen saver kelas prioritas idle. NT menurunkan
prioritas tugas ( milik jenis variabel ) jika menggunakan semua waktu terakhir
slice -nya . Ini menimbulkan prioritas tugas jika diblokir untuk I / O dan
tidak bisa menggunakan waktu terakhir slice secara penuh . Namun, perubahan
tugas dari prioritas dasarnya dibatasi untuk ± 2 .
6.2.
Shortcomings of Windows
NT
Terlepas dari dukungan mengesankan
bahwa Windows menyediakan untuk pengembangan program real-time seperti yang
dibahas dalam Bagian 4.5.1, seorang programmer mencoba untuk menggunakan Windows
dalam pengembangan sistem real-time harus mengatasi dengan beberapa masalah. dari jumlah tersebut, dua masalah
utama berikut adalah yang paling merepotkan
.
1 . Interrupt
Pengolahan
Tingkat Prioritas interupsi selalu
lebih tinggi dari thread user-level , termasuk benang
kelas
real-time . Ketika interupsi terjadi , rutin handler menghemat negara mesin dan
membuat sistem mengeksekusi Rutin Interrupt Service ( ISR ) . Hanya pengolahan
kritis dilakukan dalam ISR dan sebagian besar pengolahan dilakukan sebagai
Procedure Call tangguhan ( DPC ) . DPC untuk berbagai interupsi yang antri
dalam antrian DPC secara FIFO . Sementara pemisahan ini ISR dan DPC memiliki
keuntungan dari memberikan respon cepat untuk interupsi lanjut , ia memiliki
kelemahan menjaga semua DPC di prioritas yang sama . Sebuah DPC tidak bisa
mendahului oleh DPC lain tapi oleh interupsi . DPC dijalankan dalam rangka FIFO
pada prioritas yang lebih rendah daripada prioritas interupsi hardware tetapi
lebih tinggi dari prioritas scheduler / operator . Selanjutnya , tidak mungkin
untuk thread user-level untuk mengeksekusi pada prioritas yang lebih tinggi
daripada ISRS atau DPC . Oleh karena itu , bahkan ISRS dan DPC sesuai dengan
tugas prioritas yang sangat rendah dapat mendahului proses real-time . Oleh
karena itu, pemblokiran potensi tugas real-time karena DPC bisa besar .
Misalnya, menyela karena kesalahan halaman dihasilkan oleh tugas-tugas
prioritas rendah akan diproses lebih cepat daripada proses real-time . Juga ,
ISRS dan DPC dihasilkan karena papan kunci dan interaksi mouse akan beroperasi
pada tingkat prioritas yang lebih tinggi dibandingkan dengan tugas-tugas
real-time . Jika ada proses yang melakukan jaringan atau disk I / O , efek
seluruh sistem antrian FIFO dapat menyebabkan waktu respon yang tak terbatas
bagi benang bahkan real-time.
Masalah-masalah
ini telah dihindari dengan sistem operasi Windows CE melalui mekanisme warisan prioritas.
2 . Dukungan
untuk Resource Sharing Protokol :
Kami telah dibahas dalam Bab 3 bahwa
kecuali protokol berbagi sumber daya yang tepat digunakan , tugas saat
mengakses sumber daya bersama mungkin menderita inversi prioritas terbatas
menyebabkan misses batas waktu dan bahkan kegagalan sistem . Windows NT tidak
menyediakan dukungan apapun ( seperti warisan prioritas , dll ) untuk mendukung
tugas-tugas real-time untuk berbagi sumber daya yang penting di antara mereka
sendiri . Ini adalah kelemahan utama dari Windows NT bila digunakan dalam
aplikasi real-time . Karena sebagian besar aplikasi real-time melakukan
melibatkan berbagi sumber daya antara tugas kami uraikan cara yang mungkin di
mana fungsi user-level dapat ditambahkan ke sistem Windows NT . Pendekatan paling sederhana untuk
membiarkan tugas-tugas real-time berbagi sumber daya kritis tanpa inversi prioritas
terbatas adalah sebagai berikut . Segera setelah suatu tugas berhasil mengunci
sumber daya non - preemptable , prioritas dapat dinaikkan menjadi prioritas
tertinggi ( 31 ) . Begitu tugas melepaskan sumber daya yang diperlukan ,
prioritas dipulihkan . Namun, kita tahu bahwa pengaturan ini akan menyebabkan
inversi - warisan besar yang terkait . Kemungkinan lain adalah untuk
melaksanakan prioritas plafon protocol ( PCP ) . Untuk mengimplementasikan
protokol ini , kita perlu membatasi tugas-tugas real-time untuk memiliki bahkan
prioritas (yaitu 16 , 18 , ... , 30 ) . Alasan pembatasan ini adalah bahwa NT
tidak mendukung penjadwalan FIFO antara tugas-tugas prioritas yang sama .
Jika prioritas tertinggi di antara semua tugas yang membutuhkan sumber daya
adalah 2 * n , maka prioritas plafon sumber daya adalah 2 * n +1 . Dalam Unix ,
opsi FIFO antara tugas-tugas prioritas yang sama tersedia , maka mereka semua
tingkat prioritas yang tersedia dapat digunakan .
7.
Windows
vs Unix
Meskipun Windows NT memiliki banyak fitur yang diinginkan dari
sistem real-time operasi, implementasi dari DPC bersama kurangnya dukungan protokol
untuk berbagi sumber daya antara tugas-tugas prioritas yang sama membuatnya
tidak cocok untuk digunakan dalam aplikasi real-time keamanan-kritis. Perbandingan
sejauh mana beberapa fitur dasar yang dibutuhkan untuk pemrograman real-time yang
disediakan oleh Windows NT dan Unix V ditunjukkan pada Tabel 1. With careful
programming, Windows NT mungkin berguna untuk aplikasi yang dapat mentolerir merindukan
tenggat waktu sesekali, dan memiliki batas waktu dari urutan ratusan milidetik dari
mikrodetik. Tentu saja, untuk digunakan dalam aplikasi tersebut, utilisasi
prosesor harus dijaga cukup rendah dan prioritas kontrol inversi harus
disediakan pada tingkat pengguna.
7.1
Clock
and Timer Support
Resolusi
tinggi timer yang diinginkan dalam berbagai macam aplikasi yang berbeda. Sebagai contoh, penggunaan paling umum dari timer seperti
pada Windows adalah dengan aplikasi multimedia yang
menghasilkan suara atau audio yang memerlukan kontrol yang tepat. MIDI adalah contoh sempurna karena MIDI sequencer
harus mempertahankan laju peristiwa MIDI dengan
tingkat akurasi 1 milidetik. Artikel
ini menjelaskan cara timer resolusi
tinggi diimplementasikan dalam NT
dan dokumen NtSetTimerResolution dan NtQuery Timer Resolution, fungsi kernel NT
yang memanipulasi dan informasi tentang
jam sistem kembali. Sayangnya, NtSetTimerResolution dan NtQueryTimerResolution tidak diekspor oleh kernel
NT, sehingga mereka tidak tersedia untuk kernel-mode driver perangkat.Windows NT basis semua dukungan waktu
off dari satu
jam sistem mengganggu, yang secara default berjalan pada granularity 10 milidetik.
Oleh karena itu, ini adalah resolusi timer standar
Windows. Ketika sebuah aplikasi multimedia
menggunakan timeBeginPeriod mutlimedia API, yang
diekspor oleh Windows
NT link dinamis perpustakaan
Winmm.dll, panggilan diarahkan ke Windows NT
fungsi kernel-mode NtSetTimerResolution, yang diekspor oleh asli
Windows NT perpustakaan NTDLL.DLL .
·
MinimumResolution
Resolusi minimum timer. Pada sistem x86 standar ini adalah 0x2625A, yaitu sekitar 10 milidetik
Resolusi minimum timer. Pada sistem x86 standar ini adalah 0x2625A, yaitu sekitar 10 milidetik
·
MaximumResolution
Resolusi waktu maksimum. Pada sistem x86 standar ini adalah 0x2710, yaitu sekitar 1 milidetik.
Resolusi waktu maksimum. Pada sistem x86 standar ini adalah 0x2710, yaitu sekitar 1 milidetik.
·
ActualResolution
Ini adalah resolusi saat jam sistem.
Ini adalah resolusi saat jam sistem.
7.2
Real-Time
Priority Levels
Penjadwalan
prosesor Windows NT mengacu pada proses dimana Windows NT menentukan pekerjaan
(tugas) harus dijalankan pada prosesor komputer pada
saat. Tanpa penjadwalan, prosesor akan memberikan
perhatian kepada pekerjaan berdasarkan ketika mereka tiba dalam antrian, yang biasanya tidak optimal.
Sebagai bagian dari penjadwalan, prosesor memberikan
tingkat prioritas untuk proses yang berbeda berjalan pada mesin.
Ketika dua proses yang meminta layanan pada saat yang sama, prosesor melakukan pekerjaan
untuk satu dengan prioritas yang lebih tinggi.
Ada enam
tingkat prioritas yang bernama:
·
Realtime
·
Tinggi
·
di
atas normal
·
normal
·
Di bawah
normal
·
rendah
Tingkat
ini telah dikaitkan nomor dengan
mereka. Aplikasi mulai dari
tingkat prioritas dasar delapan. Sistem ini secara
dinamis menyesuaikan tingkat
prioritas untuk memberikan semua
aplikasi akses ke prosesor.
Tingkat prioritas 0-15 digunakan oleh aplikasi yang dinamis. Tingkat prioritas 16-31 dicadangkan untuk aplikasi real-time.
7.3
Fast
Task Preemption
Dalam
komputasi , preemption adalah tindakan sementara mengganggu tugas yang
dilakukan oleh sistem komputer , tanpa memerlukan kerjasama , dan dengan maksud
melanjutkan tugas di lain waktu . Perubahan tersebut dikenal sebagai context
switch . Hal ini biasanya dilakukan oleh tugas istimewa atau bagian dari sistem
yang dikenal sebagai scheduler preemptive , yang memiliki kekuatan untuk
mendahului , atau mengganggu , dan kemudian melanjutkan , tugas-tugas lain
dalam sistem .
Dalam
setiap desain sistem yang diberikan , beberapa operasi yang dilakukan oleh
sistem mungkin tidak Preemptible . Hal ini biasanya berlaku untuk kernel fungsi
dan interupsi layanan yang , jika tidak diizinkan untuk berjalan sampai selesai
, akan cenderung menghasilkan kondisi ras mengakibatkan kebuntuan . Pembatasan
scheduler dari preempting tugas sementara mereka memproses fungsi kernel
menyederhanakan desain kernel dengan mengorbankan respon sistem . Perbedaan
antara mode pengguna dan kernel mode , yang menentukan tingkat hak istimewa
dalam sistem , juga dapat digunakan untuk membedakan apakah tugas saat ini
Preemptible .
Sebagian besar sistem modern
memiliki kernel preemptive , yang dirancang untuk mengizinkan tugas yang harus
mendahului bahkan ketika dalam mode kernel . Contoh sistem tersebut Solaris
2.0/SunOS 5.0, [ 1 ] Windows NT , Linux kernel 2.6 dan 3.x , AIX dan beberapa
sistem BSD ( NetBSD , sejak versi 5 ) .
7.4
Predictable
and Fast Interrupt Latency
Perdebatan tentang kesesuaian
Windows NT untuk aplikasi real-time yang sedang berlangsung di komunitas
pemrograman . Sayangnya , data keras mengenai real-time respon NT tidak
tersedia . Dokumentasi menunjukkan bahwa interupsi hardware memiliki hirarki
prioritas tetap . Pengujian empiris pada platform tertentu menunjukkan hal yang
sebaliknya . Sementara NT rata-rata latency interrupt cukup baik ( di urutan
beberapa mikrodetik pada Pentium cepat) , terburuknya latency tidak mudah
diprediksi dan bisa berada di urutan beberapa milidetik , tergantung pada
platform NT ( 80x86 , Alpha , prosesor tunggal , multiprosesor , dan
sebagainya) dan sistem yang driver yang Anda gunakan . Jika perangkat
membutuhkan konsisten , respons yang cepat untuk interupsi , maka latency
panjang , bahkan jika mereka terjadi hanya sesekali, akan menyebabkan
masalah besar.
Untuk membantu menjernihkan
kebingungan interrupt kemampuan penanganan NT , saya mengembangkan DOIRQ ,
sebuah perangkat lunak yang melakukan analisis kotak hitam sistem interupsi NT
dan menerangi masalah dan keterbatasan , serta potensi yang besar . Alat (
tersedia secara elektronik , lihat " Resource Center , " halaman 3 )
dapat digunakan untuk menunjukkan dua bug di single- processor NT , 80x86
Hardware Abstraction Layer ( HAL ) yang , dalam kondisi tertentu , menyebabkan
interupsi ditunda atau ditangani dari order. Hal ini penting karena bug dapat
menyebabkan prioritas tinggi menyela ditunda oleh interupsi prioritas rendah
dan , oleh karena itu , mengurangi kegunaan NT untuk driver yang membutuhkan
cepat , penanganan interupsi deterministik.
7.5
Support
for Resource Sharing Among Real-Time Tasks
Peran
utama dari sistem operasi adalah bahwa pengelolaan sumber daya . Tugasnya
adalah untuk menyajikan satu set layanan yang sesuai dengan aplikasi dan
pengguna mendukung . Secara tradisional , sistem operasi tujuan umum , termasuk
Windows NT , federasi berbagi sumber daya secara adil , dengan tujuan utama
dari pemanfaatan sumber daya yang efisien . Akibatnya algoritma penjadwalan
yang dipilih tidak cocok untuk aplikasi yang memiliki ketat Quality- of -
Service ( QoS ) dan persyaratan manajemen sumber daya , seperti aplikasi media
streaming terus menerus . Beberapa pendekatan untuk pengelolaan sumber daya
yang mampu memenuhi persyaratan ini , termasuk penggunaan penjadwal
deterministik , mapan . Sistem operasi sudah ada yang menyediakan layanan untuk
partisi sumber daya halus dan QoS alokasi berbasis . Namun demikian , muncul
pertanyaan : dapat kita memperkenalkan mekanisme manajemen yang sesuai ke dalam
sistem operasi tujuan umum yang akan memberikan dukungan yang memadai untuk
sebagian besar aplikasi sensitif sumber daya , khususnya multimedia ? Atau ada
masalah yang melekat dalam tujuan umum arsitektur sistem operasi yang menuntut
signifikan re - engineering ? Kami mencoba untuk menjawab pertanyaan ini dengan
mengajukan Protected Virtual Machine ( PVM ) arsitektur . Hal ini
memperkenalkan mekanisme ke Windows NT yang memungkinkan partisi sumber daya
dan perlindungan dari gangguan sumber daya . Fungsi arsitektur PVM adalah dua
kali lipat . Pertama memperkenalkan mekanisme penjadwalan yang diperlukan dan
sumber daya abstraksi atom ke dalam sistem operasi , dan kedua menyediakan
reservasi tingkat yang lebih tinggi dan layanan masuk langsung ke aplikasi .
Sistem yang dihasilkan mampu memberikan kedua layanan - usaha terbaik untuk
aplikasi dengan kebutuhan kurang ketat dan dijamin layanan untuk multimedia dan
pengolahan sumber daya penting lainnya di lingkungan bersama , Dengan
meningkatkan sistem operasi yang ada , aplikasi warisan masih dapat didukung ,
sehingga menghindari rintangan terkemuka di real-time dan multimedia sistem
operasi yang ada .
7.6
Additional
Requirements for Embedded Real-Time Operating Systems
Microsoft ® Windows ® platform dengan
cepat mendapatkan popularitas dengan
tertanam pengembang sistem karena memberikan pembangunan rendah biaya dan memungkinkan perusahaan untuk cepat membawa fungsionalitas meningkat untuk pasar. Selain menjadi kuat, sistem operasi 32-bit yang modern Platform, Windows menyediakan sejumlah keuntungan unik yang tidak ditemukan di lain tertanam sistem operasi:
tertanam pengembang sistem karena memberikan pembangunan rendah biaya dan memungkinkan perusahaan untuk cepat membawa fungsionalitas meningkat untuk pasar. Selain menjadi kuat, sistem operasi 32-bit yang modern Platform, Windows menyediakan sejumlah keuntungan unik yang tidak ditemukan di lain tertanam sistem operasi:
·
Windows terkenal Win32 ® API, dengan berbagai terkait dari alat pengembangan dan basis
pengetahuan, menyediakan dasar yang luas pengembangan bakat, peralatan, dan keahlian.
·
Windows memungkinkan penggunaan jangkauan terluas komponen perangkat
lunak pihak ketiga, dari perangkat driver dan ekstensi sistem database dan aplikasi dari semua jenis.
·
windows juga menawarkan dukungan jaringan komprehensif dan konektivitas
ke
non-tertanam dan sistem informasi perusahaan.
non-tertanam dan sistem informasi perusahaan.
·
Untuk sistem dengan antarmuka operator yang canggih, ada
juga akrab Jendela Graphical User Interface (GUI)
Keuntungan utama
dari sistem operasi Windows dalam aplikasi embedded adalah kemampuan untuk
memanfaatkan komponen software off-the-rak
yang ada,
baik yang
di Windows itu sendiri atau komponen dari berbagai
pengembang pihak ketiga.
Sistem
tertanam desainer yang membuat aplikasi yang memaksimalkan
penggunaan komponen yang ada, dan meminimalkan jumlah komponen software yang harus ditulis, akan mewujudkan biaya pengembangan terendah dan waktu tercepat ke pasar. Persembahan terbaru dari Microsoft untuk meningkatkan fungsi sistem tertanam adalah Windows NT ® Tertanam 4.0. Ini anggota terbaru dari keluarga produk sistem operasi Windows NT secara khusus ditawarkan untuk digunakan dalam produk tertanam dan perangkat. Microsoft Windows NT Tertanam 4.0 adalah cara yang cepat dan ekonomis untuk membangun fungsionalitas yang kaya menjadi embedded system dan aplikasi. Produk ini terdiri dari beberapa daerah untuk membantu pengembang dengan cepat implementasi dan memberikan kemampuan untuk memperluas fungsionalitas dari sistem operasi dasar. Windows NT Tertanam terdiri dari tiga bidang utama.
penggunaan komponen yang ada, dan meminimalkan jumlah komponen software yang harus ditulis, akan mewujudkan biaya pengembangan terendah dan waktu tercepat ke pasar. Persembahan terbaru dari Microsoft untuk meningkatkan fungsi sistem tertanam adalah Windows NT ® Tertanam 4.0. Ini anggota terbaru dari keluarga produk sistem operasi Windows NT secara khusus ditawarkan untuk digunakan dalam produk tertanam dan perangkat. Microsoft Windows NT Tertanam 4.0 adalah cara yang cepat dan ekonomis untuk membangun fungsionalitas yang kaya menjadi embedded system dan aplikasi. Produk ini terdiri dari beberapa daerah untuk membantu pengembang dengan cepat implementasi dan memberikan kemampuan untuk memperluas fungsionalitas dari sistem operasi dasar. Windows NT Tertanam terdiri dari tiga bidang utama.
1.
Windows NT Sumber File
- file ini adalah dasar dari akhirnya tertanam sistem operasi Anda .Mereka
termasuk fitur Windows NT 4.0 termasuk Service Pack 5 . Ini berarti solusi Anda
dapat mencakup semua fungsi kaya Windows NT , seperti dukungan multi- adaptor ,
kemampuan jaringan , Win32 API , dan banyak lagi.
2.
Target Designer -
Target Designer adalah alat pengembangan untuk mengkonfigurasi dan membangun
Windows NT Embedded sistem . Ini adalah alat authoring utama dalam Microsoft
Windows NT Tertanam . Menggunakan Sasaran Designer , Anda dapat membuat sistem
operasi Windows NT , mengintegrasikan komponen kustom dan aplikasi , dan
membangun sistem embedded bootable . Sasaran Designer menampilkan Windows
Konfigurasi NT pada tingkat komponen dalam cara grafis standar . Setiap daerah
fitur sistem operasi dengan mudah diwakili oleh komponen agraphical di Target
Designer . Bila menggunakan Target Designer , Anda dapat menghemat waktu dan
bekerja di lingkungan Windows akrab untuk membuat disesuaikan Windows NT sistem
operasi tertanam.
3.
Komponen
Designer - Komponen Designer digunakan dalam
hubungannya dengan Sasaran Designer
dan memungkinkan Anda untuk membuat
komponen kustom yang dapat ditambahkan ke Target Designer con-figurasi.
Menggunakan Komponen Designer Anda dapat
dengan mudah membuat file definisi
komponen yang meningkatkan lebih lanjut dan mengkustomisasi fungsi resultan sistem
embedded. Dalam file definisi
komponen, Anda dapat menentukan komponen yang ingin Anda termasuk ke dalam Target Designer. Anda juga dapat mengkonfigurasi
kemampuan dan komponen-komponen dengan menggunakan informasi dalam pengembangan sistem Anda, seperti registry setempat atau Database
Sasaran Designer Sistem.
Setelah Anda membuat file definisi
komponen Anda, Anda dapat mengimpor ke Target Designer. Setelah mereka diimpor Anda dapat menambahkan komponen baru untuk konfigurasi
Anda tertanam.
Tidak ada komentar:
Posting Komentar