Linux OS in Embedded Systems & Linux Kernel Internals(1/2)
4.2 (46 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,611 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Linux OS in Embedded Systems & Linux Kernel Internals(1/2) to your Wishlist.

Add to Wishlist

Linux OS in Embedded Systems & Linux Kernel Internals(1/2)

Major components of an operating system (from processes to threads), and CPU scheduling, Synchronization and Deadlocks.
4.2 (46 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,611 students enrolled
Created by Andrew Joseph
Last updated 6/2017
English
Current price: $10 Original price: $200 Discount: 95% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 2 hours on-demand video
  • 3 Articles
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • This subject, being it a core of computer science, is divided into two parts(Courses). This is the first course.
  • It will help students to understand Basic concepts and principles of OS and interface and execution systems
  • OS structures
  • Process
  • Threads
  • Scheduling
  • Synchronization
  • Deadlocks
  • You will be able to apply the roles of OS in products and various components and algorithms in OS.
  • Learn the operation of Linux OS which is commonly used in most of the products being it Open source. Please be well acquainted with the objectives of this course and take it seriously.
  • When you complete this course, you will be able to understand the basic terminologies and concepts of OS for software development.
  • It will also let you improve the software quality of the product.
  • For college going students, this course will help in improving grades in college curriculum.
View Curriculum
Requirements
  • A spare working computer with gcc compiler or virtualization software like VMWare Fusion or Virtual Box
Description

What is the course about?
This subject, being it a core of computer science, is divided into two parts(Courses). This is the first course. This course will introduce you to modern operating systems. We will focus on UNIX-based operating systems, though we will also learn about alternative operating systems, including Windows. The course will begin with an overview of the structure of modern operating systems. Over the course of the subsequent units, we will discuss the history of modern computers, analyze in detail each of the major components of an operating system (from processes to threads), and CPU scheduling, Synchronization and Deadlocks. The class will conclude with a discussion of various system-related security issues. This comprehensive course will give you enough understanding on OS from where you can take yourself to higher level of expertise.

Visit eLearningMedium to get discounts on my courses + additional free resources.

Various exercises are required to do by students. Please remember that this is a serious course on Operating systems. I believe that Subject like OS cannot be learned in few hours. It requires continuous practice and learning. Students may have to put a lot of efforts in order to become expert in this core area of computer science and make the best use of this course.

Second course discusses about Operating system components and services, Operating system structures, Memory management, Paging, Memory Management in Intel 80386, Virtual Memory, Demand Paging, Page Fault, Belady’s Anomaly, Stack Replacement Algorithms, Thrashing, File Concept, Directory Structure, File System, Mounting, File Sharing and Protection, Space Allocation Techniques, Disk Structure and Scheduling, Free Space Management

When you complete this course, you will be able to understand the terminologies and concepts of Linux OS in embedded systems and Linux Kernel Internals.

1. Tired of finding good learning resources on Linux OS & Kernel Internals?
2. Do you want to become a expert level System Engineer ?
3. Are you ready to learn the concepts of Operating system components and services, Operating system structures, Process concept, Inter-process communication (IPC) and process synchronization, UNIX/Linux IPC tools and associated system calls, Use of FIFOs in a program, Thread models, Schedulers, Dispatcher, Algorithm evaluation, Process synchronization, The Critical Section Problem, The Bakery Algorithm, Deadlock and Starvation, Deadlock handling, Detections and Recovery ?
4. As a Bonus, get a complimentary consultation about Algorithms, Data Structures, HTML, C and Java Programming languages.
5. So if you’re looking for knowledge, a rewarding adventure, and the advantage a future perspective can offer, I’m excited to tell you more about my step-by-step training program for Linux OS and kernel.

What kind of material is included?
1. This course consists of high quality training content using quality videos with industry oriented hands-on examples.
2. I have tried to include the juice of my 10 years of experience in this course.
3. The focus is on giving real life essential tricks and skills.
4. I suggest students to take this course with pen and paper handy. Note the important points and take part in discussions. I advise students to take the problems after each section.

How long will the course take to complete?
1. This is the first course in the series of two part comprehensive course covering almost all the topics of Operating system.
2. The course is around 2.5 hours in duration. I advise students to cover not more than one lesson/section per day and do not move to the next lesson/section without doing the exercise.

How is the course structured?
1. Lectures, Classroom Discussions at the end of each chapter.
2. A perfect blend of theory and real world examples.

Why take this course?
1. This is the first course in the series of two part comprehensive course covering almost all the topics of Operating system.
2. This course will tends to replace text books on Operating system ie it will be a complete reference of OS.
3. You will learn about Operating system components and services, Operating system structures, Process concept, Inter-process communication (IPC) and process synchronization, UNIX/Linux IPC tools and associated system calls, Use of FIFOs in a program, Thread models, Schedulers, Dispatcher, Algorithm evaluation, Process synchronization, The Critical Section Problem, The Bakery Algorithm, Deadlock and Starvation, Deadlock handling, Detections and Recovery.
4. For the college going students, this course helps in improving grades in college curriculum and increases the chances at the final Campus Interview.

When does the course start and finish?
The course starts now and never ends! It is a completely self-paced online course - you decide when you start and when you finish.

How long do I have access to the course?
How does lifetime access sound? After enrolling, you have unlimited access to this course for as long as you like - across any and all devices you own.

What if I am unhappy with the course?
We would never want you to be unhappy! If you are unsatisfied with your purchase, contact us in the first 30 days and we will give you a full refund.

Join worldwide learners who uses Linux OS and Kernel Internals as part of their curriculum and Job.

Visit eLearningMedium to get discounts on my courses + additional free resources

Who is the target audience?
  • This is a course for professionals and students in occupational group in any organization or academics to help them to understand the basics of operating systems that they should know well.
  • The learning targets of this course are software developers, computer science engineers and students who wish to strengthen their concepts of Operating system specifically Linux.
  • IT professionals with little or no Linux, OS experience.
  • Computer and IT hobbyists
Students Who Viewed This Course Also Viewed
Curriculum For This Course
41 Lectures
02:26:18
+
Orientation
1 Lecture 01:04

Intro and warming up, Course Introduction and contents, Learning structures and preparations. This course studies fundamental design and implementation ideas in the engineering of operating systems. Lectures are based on a study of UNIX and research papers. Topics include Process, Threads, context switches, kernels, interrupts, system calls, interprocess communication, coordination, and the interaction between software and hardware.

Preview 01:04
+
Introduction to Operating System
5 Lectures 22:10

Intro and Learning objectives

Intro and Learning objectives
00:32

The operating system is the most important program that runs on a computer. Every general-purpose computer must have an operating system to run other programs and applications.

Operating System Definition
04:10

An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs. The operating system is a component of the system software in a computer system. Application programs usually require an operating system to function.

Preview 10:45

The design of an operating system architecture traditionally follows the separation of concerns principle. This principle suggests structuring the operating system into relatively independent parts that provide simple individual features, thus keeping the complexity of the design manageable.

Operating System Structure
03:25

>- Computer = HW + OS + Apps + Users
>- OS serves as interface between HW and ( Apps & Users )
>- OS provides services for Apps & Users
>- OS manages resources ( Government model, it doesn't produce anything. )
>- Debates about what is included in the OS - Just the kernel, or everything the vendor ships?

Operating System Operations
03:18
+
Operating System Structure
5 Lectures 20:39

Intro and Learning objectives

Intro and Learning objectives
00:33

A user interface (UI) is the part of an operating system, program or device that the user uses to input and receive data. A text user interface (TUI, see the image to the left below) shows text, and its commands are usually written from the keyboard to the command line. The functions of graphical user interfaces (GUI, right-hand image below) are carried out by clicking and moving buttons, icons and menus with the mouse.

User Interface
02:35

In computing, a system call is how a program requests a service from an operating system's kernel. This may include hardware-related services (for example, accessing a hard disk drive), creation and execution of new processes, and communication with integral kernel services such as process scheduling. System calls provide an essential interface between a process and the operating system.

System Call Handling
09:20

>- Memory management
>- Process management
>- Job scheduling
>- Resource allocation strategies
>- Swap space / virtual memory in physical memory
>- Interrupt handling
>- File system management
>- Protection and security
>- Inter-process communications

Operating System Design and Implementation
04:10

The design of an operating system architecture traditionally follows the separation of concerns principle. This principle suggests structuring the operating system into relatively independent parts that provide simple individual features, thus keeping the complexity of the design manageable.

Operating System Structures
04:01
+
Processes
5 Lectures 17:58

Intro and Learning objectives

Intro and Learning objectives
00:23

In computing, a process is an instance of a computer program that is being executed.

Preview 04:31

Process scheduling is an essential part of a Multiprogramming operating system. Such operating systems allow more than one process to be loaded into the executable memory at a time and loaded process shares the CPU using time multiplexing.

Process Scheduling
03:10

Process management is an integral part of any modern-day operating system (OS). The OS must allocate resources to processes, enable processes to share and exchange information, protect the resources of each process from other processes and enable synchronisation among processes. To meet these requirements, the OS must maintain a data structure for each process, which describes the state and resource ownership of that process, and which enables the OS to exert control over each process.

Process Management
05:16

In computer science, inter-process communication (IPC) is the activity of sharing data across multiple and commonly specialized processes using communication protocols. Typically, applications using IPC are categorized as clients and servers, where the client requests data and the server responds to client requests.

Inter-process Communication
04:38
+
Threads
5 Lectures 12:58

Intro and Learning objectives

Intro and Learning objectives
00:18

In computer science, a thread of execution is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system.

Thread Concept
06:20

A process is an executing instance of an application. A thread is a path of execution within a process. Also, a process can contain multiple threads.

Threads vs. Processes
02:16

The thread function library to implement user-level threads usually runs on top of the system in user mode.On the other hand, kernel-level threads will guarantee multiple processor access but the computing performance is lower than user-level threads due to load on the system.

User Threads vs. Kernel Threads
00:52

In the Linux operating system, LinuxThreads was a partial implementation of POSIX Threads. It has since been superseded by the Native POSIX Thread Library (NPTL).

Linux’s Threads
03:12
+
CPU Scheduling
8 Lectures 22:13

Intro and Learning objectives

Intro and Learning objectives
00:26

>- Almost all programs have some alternating cycle of CPU number crunching and waiting for I/O of some kind. ( Even a simple fetch from memory takes a long time relative to CPU speeds. )
>- In a simple system running a single process, the time spent waiting for I/O is wasted, and those CPU cycles are lost forever.
>- A scheduling system allows one process to use the CPU while another is waiting for I/O, thereby making full use of otherwise lost CPU cycles.

CPU Scheduler
03:43

The challenge is to make the overall system as "efficient" and "fair" as possible, subject to varying and often dynamic conditions, and where "efficient" and "fair" are somewhat subjective terms, often subject to shifting priority policies.

CPU Scheduling Algorithm’s Goals
01:31

Scheduling Technique

FCFS
02:52

Scheduling Technique

SJF
07:11

Scheduling Technique

Priority Scheduling
01:25

Scheduling Technique

Round Robin
03:35

Scheduling Technique

Multilevel Feedback Queue
01:30
+
Synchronization
5 Lectures 17:20

Intro and Learning objectives

Intro and Learning objectives
00:32

The critical section problem refers to the problem of how to ensure that at most one process is executing its critical section at a given time.

Critical Section Problem
04:48

Many systems provide hardware support for critical section code. The critical section problem could be solved easily in a single-processor environment if we could disallow interrupts to occur while a shared variable or resource is being modified.

Synchronization Hardware
01:37

In 1965, Dijkstra proposed a new and very significant technique for managing concurrent processes by using the value of a simple integer variable to synchronize the progress of interacting processes. This integer variable is called semaphore. So it is basically a synchronizing tool and is accessed only through two low standard atomic operations, wait and signal designated by P() and V() respectively.

Semaphore
06:56

In computing, the producer–consumer problem (also known as the bounded-buffer problem) is a classic example of a multi-process synchronization problem. The problem describes two processes, the producer and the consumer, who share a common, fixed-size buffer used as a queue.

Bounded Buffer Problem
03:27
+
Deadlocks
4 Lectures 16:04

Intro and Learning objectives

Intro and Learning objectives
00:25

A deadlock is a situation in which two computer programs sharing the same resource are effectively preventing each other from accessing the resource, resulting in both programs ceasing to function. The earliest computer operating systems ran only one program at a time.

Deadlock Concept
01:43

1.  Mutual exclusion: only one process at a time can use a resource.
2.  Hold and wait: a process holding at least one resource is waiting to acquire additional resources held by other processes.
3.  No preemption: a resource can be released only voluntarily by the process holding it, after that process has Completed its task.
4. Circular wait: there exists a set {P0, P1, …, P0} of waiting processes such that P0 is waiting for a resource that is held by P1, P1 is waiting for a resource that is held by P2, …, Pn–1 is waiting for a resource that is held by Pn, and P0 is waiting for a resource that is held by P0. Deadlock can arise if four conditions hold simultaneously.

Deadlock Characterization
05:47

Deadlock Prevention.
Deadlock Avoidance.
Deadlock Detection.
Ignore the problem.

Methods for Handling Deadlocks
08:09
+
Exercise
2 Lectures 16:44
Exercise 1
08:18

Exercise 2

Exercise 2
08:25
+
Bonus
1 Lecture 00:31

Discount coupon for second part of the course "Linux Operating System Concepts & Linux Kernel Internals(2/2)"

https://www.udemy.com/c-complete-reference/?couponCode=ONLY-10

Preview 00:31
About the Instructor
Andrew Joseph
4.3 Average rating
55 Reviews
1,742 Students
2 Courses
Linux Enthusiast,Software Programmer,Consultant

As an programming enthusiast, I want to share my knowledge and interests here.

My name is Andrew Joseph 

I started learning about programming since high school, dived in "Basic" first, which eventually made me major in Electronics and Communications.

After completing the college, in 2005, I started working in the software and system departments at large corporations. Since then I have grown my Linux skills at various levels. Through the years I've worked in many positions as a Linux and system engineer, a programmer, a debugger and a consultant.

I have been working with C, C++ and Linux since 10 years. Its great to work with different Linux distributions and I find them really powerful. You see most of the supercomputers are based on Linux OS.

I find myself an accomplished software engineer specializing in object-oriented approaches. Extensive background in full life-cycle of software development process including requirements gathering, design, coding, testing, debugging and maintenance. My technical skills include:

C, C++

OS: Unix/Linux, Windows

Android Binder IPC

Few years ago, I forwarded myself for a position of training software engineers in a technical training center in my organization. It was there that I came to know about my passion towards teaching computer science subjects. Today I am one of the top technical trainers of my organization. Now, In addition to traditional classroom training and consulting, I am planning to start releasing video tutorial training for aspiring programmers, engineers or students.

I've been lucky enough to teach many people through my career. Some have gone on to become professional system engineers, some are software engineers or coders, and some are networking people. All have said that my teaching style is effective and approachable, so I've tried to capture that here.

I've plans of making some of the courses about programming, operating systems, kernel, device drivers etc. I give all my heart into creation of courses. I always try to explain everything the easiest possible way. I'm sure that my courses will help you in the adventure.

I offer a range of high quality training content using quality videos backed-up with industry oriented hands-on examples. My main emphasis is to teach technology the way it is used in professional world. The focus is on giving real life skills that are essential in today's environment. My courses on Technology includes everything ranging from Programming, Operating Systems, Linux kernel, Linux device drivers to Android Binder and JavaScript.

It is so great be here and share knowledge with you.

Have fun and learn enough!