1. Definition

Sistem operasi IoT adalah istilah yang relatif baru dan didefinisikan secara fleksibel. Literatur tentang taksonomi dan pengembangan sistem operasi IoT masih kurang. Sistem operasi IoT adalah perangkat lunak yang menyediakan saluran interaksi antara pengguna dan perangkat IoT dan mengelola semua sumber daya perangkat keras dan perangkat lunak. Mirip dengan sistem operasi biasa seperti Unix dan Windows. Perbedaannya terletak pada arsitektur perangkat keras dan keterbatasan sumber daya dari sistem host. Sistem operasi yang dirancang khusus untuk aplikasi IoT dan dapat berjalan dengan sumber daya minimal yang tersedia di perangkat IoT disebut sistem operasi IoT. Sistem operasi IoT adalah ekstensi dari sistem operasi untuk sistem tertanam. Sistem operasi IoT memastikan konektivitas antara aplikasi IoT dan sistem tertanam. Sistem operasi IoT adalah evolusi dari sistem operasi tertanam, tetapi IoT memiliki batasan dan persyaratan tambahan untuk dipertimbangkan. Sistem operasi yang disematkan telah ditingkatkan atau diperbarui untuk menyertakan fitur khusus IoT. Sistem operasi IoT yang umum adalah TinyOS, Contiki, mbedOS, Ubuntu Core, Yocto, Windows 10 untuk IoT.

  1. 2. Functions of an IoT Operating System

Sebuah sistem teknis membutuhkan sebuah sistem operasi. Hal ini karena sistem operasi adalah interface utama di mana pengguna berinteraksi dengan komputer dan mengelola bagaimana program bekerja di dalam sistem komputer yang menangani proses penting di  belakang layar seperti manajemen sumber  daya perangkat keras, pengiriman interface pengguna, eksekusi program aplikasi, dan pengiriman layanan. Tidak seperti sistem operasi desktop, tujuan umum sistem operasi IoT dirancang untuk bekerja dengan sumber daya terbatas, namun menawarkan alat pengembangan yang cepat, standarisasi, perawatan yang mudah, dukungan  untuk  berbagai  platform  perangkat  keras,  dan  program  aplikasi,

portabilitas, dan Internet global. Fungsi yang dilakukan oleh sistem operasi IoT

adalah sebagai berikut

Provides a Hardware Abstraction Layer (HAL)

HAL dapat didefinisikan sebagai perangkat lunak yang secara langsung bergantung pada perangkat keras yang mendasarinya. Dalam istilah yang lebih kompleks, lapisan abstrak dari perangkat keras (HAL) dapat didefinisikan sebagai pemrograman atau lapisan kode yang memungkinkan komunikasi umum antara perangkat lunak dan komponen perangkat keras dari suatu sistem. Hal ini mengurangi pekerjaan pengembang aplikasi. HAL menjembatani kesenjangan antara perangkat keras dan perangkat lunak. Jika tidak, pengembang harus membuat hardcode driver, kernel, atau API untuk setiap perangkat keras. Abstraksi perangkat keras yang disediakan oleh sistem operasi IoT memberi pengembang akses langsung ke semua perangkat yang dikendalikan oleh sistem operasi (Bluetooth, kamera, output video, audio, sensor, penyimpanan, dll.).

Power Management

Teknik manajemen daya terintegrasi telah diterapkan pada SoC (System One Chips) oleh beberapa produsen mikrokontroler yang dapat masuk ke mode sleep atau standby untuk menghemat daya. Mikrokontroler (MCU) menghentikan komputasi saat dalam keadaan diam. Namun, data saat ini disimpan dan semua fungsi periferal dihentikan. Sistem operasi dapat secara efisien mengelola status tidur ini dan memantau konsumsi daya periferal atau sensor yang terpasang. Perangkat IoT yang beroperasi terus menerus untuk waktu yang sangat lama dapat memanfaatkan teknik hemat daya ini.

Concurrency Management

Perangkat IoT saat ini mendukung pengaturan multi-core atau multi-prosesor. Hal tersebut berarti bahwa komputasi paralel juga merupakan bagian penting dari embedded system. Metode pemrograman paralel tradisional yang digunakan oleh sistem operasi umum mengalami peningkatan dan keterbatasan sumber daya. Oleh karena itu, algoritma yang memprioritaskan persyaratan ini harus diimplementasikan dalam sistem operasi IoT. Konkurensi kurang penting untuk mengontrol periferal atau membaca data dari sensor. Menggunakan eksekusi asinkron yang digerakkan oleh peristiwa atau IO kolektif adalah solusi yang layak.

Namun, ketika menyangkut sistem pemrosesan data dan sinyal, sistem operasi harus mengelola paralelisme proses.

User Interface

OS menyediakan interface antara pengguna dan perangkat. Beberapa distribusi berbasis Linux yang tersedia untuk IoT pada awalnya melakukan booting ke terminal, dan disini kita dapat memanggil GUI. Seperti pada sistem operasi NOOBS untuk Raspberry Pi, GUI dapat dimulai dengan mengetikkan command startx‟ di terminal. Sebagian besar vendor IoT OS menggunakan interface  grafis mengingat banyaknya penggemar atau amatir sebagai pengguna. Operasi input dan output juga dapat didiskusikan di bawah judul ini. Input ke perangkat IoT mungkin melalui interface USB atau pin GPIO. Sebagian besar papan pengembangan IoT menyediakan output video lengkap. Dengan perangkat keras tambahan, board IoT juga dapat mendukung input layar sentuh, contohnya dapat dilihat di sistem POS atau ATM.

Memory Management:

OS pada IoT memiliki tanggung jawab untuk mengelola memori utama pada perangkat yang dihubungkannya. Fungsinya untuk melacak status saat ini di setiap lokasi memori, apakah itu dialokasikan atau gratis. Ini mengukur bagaimana memori dialokasikan atas proses, memutuskan mana yang mendapat memori, kapan mereka menerimanya, dan berapa banyak mereka bebas [18].

2.6 Process Scheduling

Mengenai OS IoT, Penjadwalan proses hanya mengacu pada pengelolaan proses yang saat ini ada di memori sistem. Dalam istilah yang sangat sederhana, ia memutuskan urutan pelaksanaan sesuatu [19]. Penjadwalan memprioritaskan proses, memuatnya ke dalam antrian siap sistem dan kemudian mengirimkannya untuk dieksekusi. Penjadwalan jangka pendek, menengah, dan panjang dapat diimplementasikan oleh sistem operasi [18].

2.7 Shared Libraries

Sistem operasi menyediakan beberapa pustaka utilitas untuk pengembang, yang tersedia untuk semua platform pengembangan dan bahasa pemrograman yang didukung.  Pustaka  yang  terhubung  secara  dinamis  ini  dapat  digunakan  oleh

sejumlah program aplikasi tanpa membuat salinan di memori utama. Banyak memori dapat disimpan dengan cara ini dan sangat cocok untuk lingkungan IoT yang terbatas sumber daya. Pengembang dapat menggunakan perpustakaan bersama ini dan mengurangi biaya komputasi. Fungsionalitas seperti utilitas logging, TCP/IP, kriptografi, sinkronisasi waktu disediakan oleh perpustakaan bersama [19]. Contoh lain adalah perpustakaan SELinux yang menyediakan keamanan dalam sistem Linux [20].

2.8 Hardware Virtualization

Motif utama di balik virtualisasi perangkat IoT adalah untuk perangkat IoT yang berbeda dan fungsi layanan dengan beberapa aplikasi. Virtualisasi memungkinkan sumber daya perangkat keras yang terbatas untuk dibagikan di antara banyak pengguna [19]. Ini memastikan penggunaan sumber daya yang tersedia secara efisien dan membatasi akses ke kelompok pengguna tertentu. Dalam arti yang lebih luas, virtualisasi juga mencakup buruh  pelabuhan  dan kontainer, menciptakan lingkungan aplikasi yang aman yang dapat digunakan melalui cloud atau jaringan lokal [21].

3 Parameters for the Choice of an IoT Operating System

Parameter berikut harus dipertimbangkan sebelum membuat pemilihan sistem operasi IoT

3.1 Reliability and Stability

OS yang diinstal pada perangkat IoT tidak boleh mogok secara tiba-tiba. Perangkat IoT seharusnya berjalan tanpa mati, untuk waktu yang sangat lama. Jika OS mogok atau menunjukkan gangguan, men-debug perangkat lunak sistem setelah penerapan adalah pekerjaan yang sulit untuk dilakukan. OS yang memiliki dukungan dari vendor atau komunitas pengguna aktif harus dipilih.

3.2 Footprint

Perangkat IoT terikat untuk beroperasi dengan sumber daya yang terbatas. OS diharapkan memiliki memori, daya, dan persyaratan pemrosesan yang rendah [12]. Algoritma penjadwalan dan manajemen proses juga harus sesuai dengan paradigma IoT.

3.3 Scalability

Skalabilitas di sini mengacu pada kemampuan untuk memperluas OS untuk beroperasi pada dua jenis perangkat IoT – node dan gateway. Dengan cara ini, arsitek dan administrator sistem hanya perlu berurusan dengan satu OS, yang berjalan di semua jenis perangkat. Skalabilitas juga dapat berarti kemampuan OS untuk meningkatkan  dari waktu ke waktu melalui pembaruan. OS yang dapat memiliki skalabilitas yang baik dapat digunakan dengan mudah.

3.4 Portability

Portabilitas berarti sistem dapat dijalan di berbagai environment yang berbeda tanpa menulis ulang kodenya kembali.Hal ini memberikan fleksibilitas untuk berpindah  di  antara  platform perangkat  keras  IoT  tanpa  perlu  mengubah  OS. Disarankan juga untuk memiliki beberapa standar interface untuk portabilitas aplikasi yang baik, untuk meminimalkan pemeliharaan, serta menyediakan kemampuan untuk terhubung dengan mudah ke perangkat lain di Internet.

3.5 Modularity

Di luar kernel, setiap fungsionalitas dapat dirancang sebagai tambahan pada sistem operasi sehingga versi minimal dari OS dapat dijalankan berdasarkan situasi tertentu. Arsitektur  modular memberikan kemungkinan  untuk mengganti atau menambahkan komponen kernel secara dinamis pada saat dijalankan. Dalam kernel modular, komponen yang menyediakan fungsionalitas serupa akan disimpan dalam file yang disebut modul dan dapat dimuat ketika sistem membutuhkan fungsionalitas itu. Perangkat IoT akan membutuhkan sistem operasi modular yang memisahkan kernel inti dari middleware, protokol, dan aplikasi.

3.6 Hardware agnostic operation

Ada beberapa platform perangkat keras IoT yang tersedia di pasar. Dengan mengingat hal ini, penting bahwa OS mendukung platform perangkat keras yang berbeda – mengarah ke standarisasi dan kemudahan dalam penerapan.

3.7 Network Connectivity & Protocol Support

Internet of Things adalah model perangkat “terhubung”. Dengan kata lain, OS harus mendukung konektivitas dan protokol jaringan yang berbeda, seperti Ethernet, Wi- Fi, BLE, IEEE 802.15.4, TCP/IP, dll. [1]. OS IoT akan memungkinkan pengembang untuk memilih tumpukan protokol khusus yang diperlukan untuk aplikasi, sehingga

menghemat memori pada perangkat dan mengurangi biaya. Ini dapat membantu meningkatkan perangkat yang ada ke opsi konektivitas baru tanpa mengubah code base inti OS itu sendiri.

3.8 Security

Sistem operasi harus menyediakan lapisan keamanan pertama untuk sistem IoT. Hal ini karena perangkat yang terus berkomunikasi melalui Internet rentan terhadap ancaman dan serangan. OS dapat memiliki add-on yang membawa keamanan ke perangkat dengan cara enkripsi, manajemen sertifikasi SSL/TLS, rutinitas otentikasi pengguna, VPN, dan firewall.

3.9 Eco-system and Application Development

Pada  tahap  pengembangan  dan  debugging,  kesesuaian  OS  dapat memberikan dampak yang besar terhadap kecepatan pengembangan dan deliver ke market. Jika OS ramah pengembang, penyebaran aplikasi IoT dapat dilakukan dengan lebih efisien. Selain lingkungan dasar C, penggunaan bahasa pemrograman dan library lain sangat diperlukan, misalnya python, C++ dan STL, tetapi itu sangat tergantung pada toolchain pengembangan yang diadopsi oleh pengembang atau organisasi.

Referensi:

https://id.wikipedia.org/wiki/Lapisan_abstraksi_perangkat_keras

https://machinelearningmastery.com/exploring-the-python-ecosystem/

https://p4tkpertanian.kemdikbud.go.id/mengenal-konsep-dasar-sistem-operasi/

http://snete.unsyiah.ac.id/2015/prosiding/Naskah%2015.pdf

https://ezoteriker.ru/id/internet-veshchei-internet-of-things-iot-internet-veshchei-chto-eto-zachem-i-kak-rabotaet-chto-nas/