Skip to main content
Skip header

Operating Systems of Mobile Devices

* Exchange students do not have to consider this information when selecting suitable courses for an exchange stay.

Course Unit Code460-4084/01
Number of ECTS Credits Allocated4 ECTS credits
Type of Course Unit *Compulsory
Level of Course Unit *Second Cycle
Year of Study *First Year
Semester when the Course Unit is deliveredSummer Semester
Mode of DeliveryFace-to-face
Language of InstructionCzech
Prerequisites and Co-Requisites
PrerequisitiesCourse Unit CodeCourse Unit Title
460-2025Design of Applications for Mobile Devices II
Name of Lecturer(s)Personal IDName
KRU13Mgr. Ing. Michal Krumnikl, Ph.D.
Summary
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.
Learning Outcomes of the Course Unit
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, Windows CE API, iOS and Linux API.

After successful completion of the course the student should be able to:
- Identify and describe layered model of the operating system.
- Provide characteristics of most popular mobile operating systems.
- Describe inner processes in OS with respect to the process life-cycle.
- Develop applications running on specific operating systems without needs for CLR or additional libraries.
- Modify existing software in order to increase effectiveness of resources allocation.
Course Contents
Lectures:
1. Architecture of operating systems. Mobile operating systems.
2. Process managements, concurrency
3. Interprocess communication, synchronization.
4. freeRTOS and context switching, process schedulers.
5. Memory management, paging, segmentation.
6. File systems (EXT2/3/4, JFFS/YAFFS, FAT).
7. Peripheral communications and interrupt handling, network communication.
8. OS Linux, Android.
9. iOS (iPhone OS)
10. Windows CE/Mobile/Phone.
11. Cross-platform development, libraries and frameworks.
12. Security considerations, cryptography.
13. Reverse engineering, mobile malware.
14. Power management, optimization of energy consumption.

Labs:
1. Android SDK, introduction to sockets.
2. Implementation of HTTP server - Sockets, Threads.
3. Synchronization problems, semaphores.
4. Thread synchronization, messages.
5. Video streaming, Camera API.
6. Round Robin (RR) scheduler implementation.
7. Priority extension of RR.
8. Lottery Scheduling implementation.
9. Accessing FAT file system metadata.
10. Reading FAT file system content.
11. Implementing write operation on FAT file system.
12. Application reverse engineering, content of application bundles.
13. Malware analysis.
14. Code optimization, profilers.
Recommended or Required Reading
Required Reading:
[1] Tannenbaum, Andrew S., BOS, Herbert, Modern Operating Systems (4th Edition), Prentice Hall, 2014, ISBN 978-0133591620
[1] Tannenbaum, Andrew S., BOS, Herbert, Modern Operating Systems (4th Edition), Prentice Hall, 2014, ISBN 978-0133591620

Recommended Reading:
[1] Smith, Neil, Android Studio 4.1 Development Essentials - Java Edition: Developing Android 11 Apps Using Android Studio 4.1, Java and Android Jetpack, Payload Media, 2020, ISBN 1951442253
[2] Levin, Jonathan, MacOS and iOS Internals, Volume II: Kernel Mode, Technologeeks Press; 2nd edition, 2019, ISBN 0991055578
[3] Boling, Douglas, Programming Windows Embedded CE 6.0 Developer Reference, Microsoft Press; 4 edition, 2007, ISBN 978-0735624177
[4] Tannenbaum, Andrew S., Operating Systems: Design and Implementation (Prentice-Hall Software Series)
[5] Yaghmour Karim, Embedded Android: Porting, Extending, and Customizing, O'Reilly Media, 2013, ISBN 978-1449308292
[6] Ratabouil, Sylvain, Android NDK Beginner's Guide, Packt Publishing, 2012, ISBN 978-1849691529
[7] Boling, Douglas, Programming Windows Embedded CE 6.0 Developer Reference, Microsoft Press; 4 edition, 2007, ISBN 978-0735624177
[1] Smith, Neil, Android Studio 4.1 Development Essentials - Java Edition: Developing Android 11 Apps Using Android Studio 4.1, Java and Android Jetpack, Payload Media, 2020, ISBN 1951442253
[2] Levin, Jonathan, MacOS and iOS Internals, Volume II: Kernel Mode, Technologeeks Press; 2nd edition, 2019, ISBN 0991055578
[3] Boling, Douglas, Programming Windows Embedded CE 6.0 Developer Reference, Microsoft Press; 4 edition, 2007, ISBN 978-0735624177
[4] Tannenbaum, Andrew S., Operating Systems: Design and Implementation (Prentice-Hall Software Series)
[5] Yaghmour Karim, Embedded Android: Porting, Extending, and Customizing, O'Reilly Media, 2013, ISBN 978-1449308292
[6] Ratabouil, Sylvain, Android NDK Beginner's Guide, Packt Publishing, 2012, ISBN 978-1849691529
[7] Boling, Douglas, Programming Windows Embedded CE 6.0 Developer Reference, Microsoft Press; 4 edition, 2007, ISBN 978-0735624177
Planned learning activities and teaching methods
Lectures, Tutorials
Assesment methods and criteria
Task TitleTask TypeMaximum Number of Points
(Act. for Subtasks)
Minimum Number of Points for Task Passing
Credit and ExaminationCredit and Examination100 (100)51
        CreditCredit45 23
        ExaminationExamination55 28