Operating Systems of Mobile Devices (OSMZ)
Instructor : Michal Krumnikl
Writing applications in Java or C# is relatively easy, but there are special cases, where the generated code is not very efficient. The examples of most demanding applications are computationally intensive algorithms or peripheral and network communications. In order to achieve better results, we have to use C/C++ with the possibility to directly access the OS resources. We will introduce the development of applications running directly on operating system and not using any extensions of CLR or Java environments. Students will learn how to use Android native development platform, Linux API. Implementations will be done in C/C++ and Java.
Lectures 2023/2024
Lecture presentations can only be downloaded ONLY from the domain vsb.cz, for access to the TUONET network it is possible to use VPN concentrator VŠB. The content of the lectures and the website is continuously updated and extended.
- Introduction, mobile device OS comparison, basic division of operating systems
- Basic OS architecture, system calls, processes and threads
- Scheduling and power management
- Process management
- freeRTOS and the principle of context switching
- IPC, synchronization
- Memory management, paging, segmentation, Process memory structure in C/C++ (YouTube)
- Java Native Interface (Android NDK)
- File systems (EXT2, JFFS, FAT)
- Linux / Android
- iOS a OSx
- Windows CE and Windows Phone
- Palm OS (deprecated), WebOS
- Mobile malware
Additional Course Videos on Youtube (2020/2021)
Instructions from COVID/online meetings 2021
- Week I. (8.2.-12.2.2021) - Introduction, Operating system concepts and system calls.
- Week II. (15.2.-19.2.2021) - Processes and context switching
- Week III. (22.2.-26.2.2021) - Process schedulers
- Week IV. (1.3.-5.3.2021) - IPC, synchronization
- Week V. (8.3.-12.3.2021) - Memory management, paging
- Week VI. (15.3.-19.3.2021) - File systems
- Week VII. (22.3.-26.3.2021) - Linux, introduction to Android
- Week VIII. (29.3.-2.4.2021) - Android
- Week IX. (5.4.-9.4.2021) - without lectures (Easter holidays)
- Week X. (12.4.-16.4.2021) - iOS and OSx
- Week XI. (19.4.-23.4.2021) - Windows CE and Windows Phone
- Week XII. (26.4.-30.4.2021) - Palm OS (deprecated), WebOS
- Week XIII. (3.5.-7.5.2021) - Multiplatform development
Examination 2023/2024
Lab Assignments 2023/2024
You should submit your codes via Kelvin. After you log into this system, you will find there detailed descriptions of your assignments.
Tutorials for Android NDK
Video - Using the NDK with Android* Studio
JNI Tips
Guides and Code Examples for Older OSs
- Win CE InteropServices
- Win CE InteropServices (C vs C#)
- Windows CE Hello World (VS project)
- Windows CE API
- Symbian OS
- Symbian OS Demos
Interesting Links
Tools
Android :
Android Studio (SDK)
Android NDK
Linux :
Linux kernel archive
BusyBox: The Swiss Army Knife of Embedded Linux
Buildroot: making Embedded Linux easy
KDrive Tiny X Server
X.Org
Qt Project
Windows CE :
.NET Compact Framework MSDN
Windows CE API Reference
bada : (Internet Archive)
bada Developers
bada SDK
Symbian : (Internet Archive)
Symbian Foundation
Carbide.c++
Palm, WebOS : (Internet Archive)
Garnet OS SDK
Emulators / Virtual Machines
VMware, VMPlayer (free)
Open source processor emulator
Bochs IA-32 Emulator Project
Palm OS Emulator
Android Live CD (with first Android)