Apa yang dimaksud dengan "Windows bukan sistem operasi waktu nyata"?

19

Saya menemukan sebuah aplikasi bernama LatencyMon , yang ternyata melakukan pemantauan latensi.

Saya selalu mengerti bahwa semakin banyak beban yang Anda masukkan pada prosesor, semakin tidak responsif, atau lebih laten, sistem menjadi. Namun, di bagian kedua halaman LatencyMon, kalimat pertama mengatakan, "Windows bukan sistem operasi waktu nyata" (RTOS). Itu membuat saya berpikir. Maksud saya, apakah ini berbeda dari sistem operasi lain seperti Linux, Unix, atau Mac OS X?

Apakah ada sistem operasi "waktu nyata"? Atau itu hanya skema pemasaran untuk membuat Anda membeli produk mereka?

EDIT:

Juga, apakah ada contoh RTOS di luar sana?

Chad Harrison
sumber
4
QNX adalah waktu nyata, misalnya.
new123456

Jawaban:

21

Wikipedia sebenarnya memiliki banyak info mengejutkan di sini.

Sistem operasi waktu nyata (RTOS) adalah sistem operasi (OS) yang dimaksudkan untuk melayani permintaan aplikasi waktu nyata.

Karakteristik utama dari RTOS adalah tingkat konsistensinya mengenai jumlah waktu yang diperlukan untuk menerima dan menyelesaikan tugas aplikasi; variabilitasnya adalah jitter. Sistem operasi real-time yang keras memiliki jitter yang lebih sedikit daripada sistem operasi real-time yang lembut. Tujuan desain utama bukanlah throughput yang tinggi, melainkan jaminan kategori kinerja yang lunak atau keras. RTOS yang biasanya atau secara umum dapat memenuhi tenggat waktu adalah OS waktu nyata yang lunak, tetapi jika dapat memenuhi tenggat waktu secara pasti itu adalah OS waktu nyata yang sulit.

RTOS memiliki algoritme canggih untuk penjadwalan. Fleksibilitas penjadwal memungkinkan pengaturan prioritas proses sistem komputer yang lebih luas, tetapi OS waktu nyata lebih sering didedikasikan untuk serangkaian aplikasi yang sempit. Faktor kunci dalam OS waktu nyata adalah latensi interupsi minimal dan latensi penggantian ulir minimal; OS real-time dihargai lebih untuk seberapa cepat atau seberapa dapat diprediksi dapat merespon daripada jumlah pekerjaan yang dapat dilakukannya dalam periode waktu tertentu.

Ini adalah sesuatu yang sangat sedikit dilakukan oleh sistem operasi, karena untuk banyak beban kerja itu kurang efisien. Tidak satu pun dari sistem operasi konsumen utama sekarang (atau setahu saya pernah) secara real-time. Sayangnya, itu memang berarti bahwa kadang-kadang hal-hal di lingkungan non-real-time harus duduk menunggu hal-hal lain. Ini hanya menjadi masalah ketika sesuatu tidak menghasilkan dalam jumlah waktu yang masuk akal, secara umum.

Saat ini yang paling dikenal, paling banyak digunakan, sistem operasi waktu nyata adalah:

LynxOS
OSE
QNX
RTLinux
VxWorks
Windows CE

Lihat daftar sistem operasi waktu nyata untuk daftar lengkap.

Shinrai
sumber
6
OS waktu nyata biasanya digunakan dalam peran yang sangat berdedikasi seperti sistem kontrol yang sangat tepat di mana keputusan / perhitungan / dll harus diselesaikan dalam kerangka waktu yang sangat tepat.
Lamar B
Apakah ada contoh RTOS? Memperbarui pertanyaan untuk hal ini.
Chad Harrison
Apa @ ta.speot.is katakan - ada beberapa di artikel yang sudah ditautkan. Saya akan mengedit beberapa di.
Shinrai
Saya tidak masuk ke bagian bawah halaman Wiki ... Maaf kalau itu: /
Chad Harrison
19

Sistem operasi Real Time sering digunakan untuk sistem embedded, di mana mereka mungkin bertanggung jawab untuk sesuatu seperti bimbingan atau pemantauan sistem. Hal utama yang perlu diingat tentang sistem waktu nyata (dan apa yang membedakannya dari sistem waktu tidak nyata) adalah bahwa dalam sistem waktu nyata, jika jawaban terlambat, itu salah. Anda dapat dengan mudah melihat bagaimana ini bekerja dengan memikirkan tentang menambahkan serangkaian angka di Excel (di mana jika operasi ditunda, tidak ada dampak nyata) dibandingkan menerapkan rem di mobil (di mana penundaan bisa menjadi bencana besar).

Scott C Wilson
sumber
10

Pada dasarnya, RTOS dapat menjamin dapat melayani IRQ (permintaan interupsi) dalam jangka waktu tertentu (biasanya rendah). Sistem operasi standar tidak memiliki jaminan seperti itu.

Dalam kebanyakan sistem modern, sebagian besar perangkat dapat menghasilkan IRQ. Hal ini menyebabkan CPU untuk berhenti (yaitu terganggu) apa yang dilakukannya dan menjalankan program layanan interupsi. Idenya adalah bahwa program layanan ini melakukan apa pun yang dibutuhkan perangkat, yaitu mengeluarkan data dari perangkat dan ke dalam RAM, memberi tahu perangkat apa yang harus dilakukan selanjutnya, dll.

Pada x86, karena hanya memiliki 1 jalur IRQ pada CPU, ketika menerima interupsi, interupsi lebih lanjut secara otomatis dinonaktifkan (kecuali untuk NMI, RESET, dan SMI) sampai CPU mengakui sumber interupsi dan mengaktifkannya kembali. Jadi driver perangkat yang baik di bawah standar i386 / amd64 Windows akan melakukan pemrosesan minimal dalam keadaan ini, cukup sehingga tidak masalah untuk mengaktifkan kembali interupsi, dan kemudian menunda pemrosesan interupsi secara lengkap sampai nanti (karena sistem secara teknis hanya dapat melayani 1 interupsi per CPU) inti pada suatu waktu). Saya tidak yakin tetapi saya percaya Linux melakukan hal yang sama. Meskipun demikian, tidak ada jaminan yang keras dari waktu bahwa interupsi akan dilayani di bawah.

Untuk sebagian besar perangkat PC, seperti disk, keyboard, NIC, jika ada sedikit keterlambatan perbaikan IRQ mereka, tidak ada hal buruk yang akan terjadi selain dari kehilangan kinerja. Ini bisa menjadi masalah bagi perangkat seperti input audio dan video, di mana perangkat tidak buffer apa pun dan PC benar-benar harus mengikuti arus data yang masuk.

LawrenceC
sumber
Bisakah Anda menjelaskan apa yang Anda maksud dengan "x86 hanya memiliki 1 baris IRQ"? Terakhir kali saya menggunakan komputer 80186 (diakui puluhan tahun yang lalu), saya ingat bahwa 8259 PIC memiliki 8 saluran, dan PC nominal pada saat itu memiliki saluran kedua yang mengalir, dengan total 15 saluran, tidak termasuk NMI?
Glenn Slayden
Anda memerlukan PIC karena x86 hanya memiliki satu jalur IRQ. Tetapi jika x86 interupsi dinonaktifkan maka PIC hanya dapat menunggu sampai CPU mengaktifkannya kembali, dan IIRC tidak hanya itu. IIRC CPU lain seperti 68000 memiliki 3 pin interupsi dan mengharapkan tingkat prioritas kode 0-7 pada CPU itu sendiri. Meskipun sekarang saya benar-benar mempertimbangkannya, mungkin 68000 menonaktifkan semua interupsi setelah menerima IRQ juga - Saya tidak pernah memprogram 68000.
LawrenceC
Ah ya, sekarang saya ingat. Dan IIRC, aspek 'prioritas' dari desain chip 8259 - dengan memungkinkan penanganan IRQ bersarang - seharusnya mendorong OS untuk menonaktifkan interupsi sesedikit mungkin atau tidak sama sekali, tetapi garis interupsi PC ditugaskan secara sembarangan, mengalahkan itu. pendekatan? Either way, pasti memanggil sejumlah besar kode di bawah CLI ... STI tidak pernah niat.
Glenn Slayden