Untuk MCU logam berduri, Dibandingkan dengan kode buatan sendiri dengan latar belakang loop ditambah arsitektur interupsi timer, apa manfaat dari OS non-preemptive? Apa di antara manfaat ini yang cukup menarik bagi sebuah proyek untuk mengadopsi OS non-preemptive, daripada menggunakan kode buatan sendiri dengan arsitektur loop latar belakang?
.
Penjelasan untuk Pertanyaan:
Saya sangat menghargai semua yang telah menjawab pertanyaan saya. Saya merasa jawabannya sudah hampir sampai. Saya menambahkan penjelasan ini ke pertanyaan saya di sini yang menunjukkan pertimbangan saya sendiri dan dapat membantu mempersempit pertanyaan atau membuatnya lebih tepat.
Apa yang saya coba lakukan adalah memahami bagaimana memilih RTOS yang paling tepat untuk proyek secara umum.
Untuk mencapai ini, pemahaman yang lebih baik tentang konsep dasar dan manfaat paling menarik dari berbagai jenis RTOS dan harga yang sesuai akan membantu, karena tidak ada RTOS terbaik untuk semua aplikasi.
Saya membaca buku tentang OS beberapa tahun yang lalu tetapi saya tidak memilikinya lagi. Saya mencari di internet sebelum memposting pertanyaan saya di sini dan menemukan informasi ini sangat membantu: http://www.ustudy.in/node/5456 .
Ada banyak informasi bermanfaat lainnya seperti pengantar di situs RTOS yang berbeda, artikel yang membandingkan penjadwalan pre-emptive dan penjadwalan non-preemptive, dan lain-lain.
Tapi saya tidak menemukan topik yang disebutkan ketika memilih RTOS non-preemptive dan kapan lebih baik hanya menulis kode Anda sendiri menggunakan timer interrupt dan loop latar belakang.
Saya punya jawaban sendiri, tetapi saya tidak cukup puas dengan jawaban itu.
Saya benar-benar ingin mengetahui jawaban atau pandangan dari orang-orang yang lebih berpengalaman, terutama dalam praktik industri.
Pemahaman saya sejauh ini adalah:
tidak masalah menggunakan atau tidak menggunakan OS, jenis kode penjadwalan tertentu selalu diperlukan, bahkan itu dalam bentuk kode seperti:
in the timer interrupt which occurs every 10ms
if(it's 10ms)
{
call function A / execute task A;
}
if(it's 50ms)
{
call function B / execute task B;
}
Manfaat 1:
OS non-preemptive menunjuk cara / gaya pemrograman untuk kode penjadwalan, sehingga insinyur dapat berbagi pandangan yang sama bahkan jika mereka tidak berada dalam proyek yang sama sebelumnya. Kemudian dengan pandangan yang sama tentang tugas konsep, insinyur dapat mengerjakan tugas yang berbeda dan mengujinya, membuat profil mereka secara mandiri sebanyak mungkin.
Tapi berapa banyak yang bisa kita dapatkan dari ini? Jika insinyur bekerja di proyek yang sama, mereka dapat menemukan cara berbagi pandangan yang sama dengan baik tanpa menggunakan OS non-preemptive.
Jika seorang insinyur berasal dari proyek atau perusahaan lain, ia akan mendapatkan keuntungan jika ia mengetahui OS sebelumnya. Tetapi jika dia tidak melakukannya, sekali lagi, sepertinya tidak ada perbedaan besar baginya untuk belajar OS baru atau sepotong kode baru.
Manfaat 2:
Jika kode OS telah diuji dengan baik, sehingga menghemat waktu dari debugging. Ini benar-benar manfaat yang bagus.
Tetapi jika aplikasi hanya memiliki sekitar 5 tugas, saya pikir itu tidak benar-benar berantakan untuk menulis kode Anda sendiri menggunakan penghenti waktu dan loop latar belakang.
OS non-preemptif di sini disebut sebagai OS komersial / bebas / lawas dengan penjadwal non-preemptif.
Ketika saya memposting pertanyaan ini, saya terutama memikirkan OS tertentu seperti:
(1) KISS Kernel (RTOS NonPreemptive Kecil - diklaim oleh situs webnya)
http://www.frontiernet.net/~rhode/kisskern.html
(2) uSmartX (RTOS ringan - diklaim oleh situs webnya)
(3) FreeRTOS (Ini adalah RTOS preemptive, tapi seperti yang saya pahami, ia dapat dikonfigurasikan sebagai RTOS non-preemptive juga)
(4) uC / OS (mirip dengan FreeRTOS)
(5 ) kode OS / scheduler lawas di beberapa perusahaan (biasanya dibuat dan dikelola oleh perusahaan secara internal)
(Tidak dapat menambahkan lebih banyak tautan karena batasan dari akun StackOverflow baru)
Seperti yang saya mengerti, OS non-preemptive adalah kumpulan kode-kode ini:
(1) scheduler menggunakan strategi non-preemptive.
(2) fasilitas untuk komunikasi antar tugas, mutex, sinkronisasi dan kontrol waktu.
(3) manajemen memori.
(4) fasilitas / perpustakaan bermanfaat lainnya seperti Sistem File, tumpukan jaringan, GUI, dll. (FreeRTOS dan uC / OS menyediakan ini, tetapi saya tidak yakin apakah mereka masih berfungsi ketika scheduler dikonfigurasi sebagai non-preemptive)
Beberapa mereka tidak selalu ada di sana. Tetapi scheduler adalah suatu keharusan.