[MUSIC] Hello. It is good to see you back. Welcome to the module embedded operating systems. In this module, we'll give an introduction to the operating systems and the Linux kernel. A review of several kernel types, I wield first popular Internet of things embedded operating systems. Let's begin with an example. Every day we use computers and smartphones for daily activities, such as playing games, working, or surfing the internet. Each of these devices uses a particular operating system, such as Mac, iOS, Windows, or some Linux based operating system. The reason for this is that an operating system is absolutely necessary to provide users with high quality service. In complex devices such as smartphones, it is simple to install and run an OS, due to their powerful hardware, such as large memory size, high-frequency microcontroller, and a large storage space. However, have you ever wondered if it's possible to run an OS in a tiny, and resource-constrained, device? The answer to this question is yes. It is completely possible if we use an embedded operating system. During the next videos in this module, we will provide a deeper answer to this question. However, the first question we should answer is what is an operating system? An operating system is a collection of several pieces of software. It works as an intermediate layer between application software and the hardware. The main function of an operating system is to manage resources, and to provide an environment for executing applications. In this course, we will focus on embedded operating systems for the Internet of Things, or IoT. This is due to the large number of embedded devices used for IoT applications nowadays. We can find them in very diverse fields, such as entertainment, healthcare, military, industrial automation, and education. According to an IHS report, it is projected that the number of devices in IoT applications will be approximately 50 billion by 2020. Therefore, it is important for you to become acquainted with IoT embedded operating systems. To give you a clear view of an operating system's functionality, I will describe the most fundamental tasks that an OS performs. Memory management is a complex task that enables efficient memory uses by keeping track of the status of each memory location. In short, it checks how much memory is used by a particular process and how much is left. In most cases, the management system makes the decision on when to allocate memory for a process. One example of memory usage is when calculating an effective address. Which involves fetching from instruction, and using an index object. Another example of memory management is mapping virtual memory to physical memory. In which case, a virtual memory address generated by the CPU is generated into a physical memory address. Processor management refers to the process of deciding when a particular process is granted access to the processor, and for how long the process can use it. In particular, processor management keeps track of the status of both processors and processes. When the processor is available, it is allocated to the process with the highest priority. Finally, the processor management will deallocate processors when they are no longer needed. All devices in a system are managed by an OS via their dot drivers. This is known as input output control. The device management system keeps track of the status of all devices and their drivers. In particular, the system manages queues and book and buffers. For example, in case of a suspended process, this means the process is not currently using the CPU. The device manager instructs the buffer to receive input data from the device, and to stop sending it to the suspended process. When the suspended process becomes active again, which means that the CPU is currently allocated to this process, the device management system instructs the buffer to send data to the active process. Finally, the operating system must handle the organization and tracking of files and directories safe in a computer disk. This is called file management. A file management system allows the user to perform tasks such as creating files and inventories, renaming, copying, moving, and deleting files. The operating system keeps track of where the files are located in the hard drive through the file system. There are many other aspects of an operating system, such as system performance control, job accounting, error detection aids, and coordination between other software and users. Too much to cover here. Let's move on to the Linux kernel, which is a popular kernel used in many systems. Let me give you a brief history to the history of the Linux kernel. The Linux kernel was created by a Finnish student named Linus Torvalds in 1991. The Linux kernel is the most vital part of a Linux-based operating system. Nowadays, the Linux kernel is very popular, and it's used in many general purpose operating systems, as well as in IoT embedded operating systems. The reason for this is its code is open source, and can easily be integrated with software and libraries from third parties. Many researchers and programmers have contributed to develop Linux kernels to offer high quality service to the users. The Linux kernel is extensive, and we cannot cover it in detail in this video. In order to provide a comprehensive understanding of the Linux kernel, we will analyze different types of kernels altogether with their pros and cons in the incoming video. Thank you for watching. [SOUND]