Udemy
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Development
Web Development Data Science Mobile Development Programming Languages Game Development Database Design & Development Software Testing Software Engineering Development Tools No-Code Development
Business
Entrepreneurship Communications Management Sales Business Strategy Operations Project Management Business Law Business Analytics & Intelligence Human Resources Industry E-Commerce Media Real Estate Other Business
Finance & Accounting
Accounting & Bookkeeping Compliance Cryptocurrency & Blockchain Economics Finance Finance Cert & Exam Prep Financial Modeling & Analysis Investing & Trading Money Management Tools Taxes Other Finance & Accounting
IT & Software
IT Certification Network & Security Hardware Operating Systems Other IT & Software
Office Productivity
Microsoft Apple Google SAP Oracle Other Office Productivity
Personal Development
Personal Transformation Personal Productivity Leadership Career Development Parenting & Relationships Happiness Esoteric Practices Religion & Spirituality Personal Brand Building Creativity Influence Self Esteem & Confidence Stress Management Memory & Study Skills Motivation Other Personal Development
Design
Web Design Graphic Design & Illustration Design Tools User Experience Design Game Design Design Thinking 3D & Animation Fashion Design Architectural Design Interior Design Other Design
Marketing
Digital Marketing Search Engine Optimization Social Media Marketing Branding Marketing Fundamentals Marketing Analytics & Automation Public Relations Advertising Video & Mobile Marketing Content Marketing Growth Hacking Affiliate Marketing Product Marketing Other Marketing
Lifestyle
Arts & Crafts Beauty & Makeup Esoteric Practices Food & Beverage Gaming Home Improvement Pet Care & Training Travel Other Lifestyle
Photography & Video
Digital Photography Photography Portrait Photography Photography Tools Commercial Photography Video Design Other Photography & Video
Health & Fitness
Fitness General Health Sports Nutrition Yoga Mental Health Dieting Self Defense Safety & First Aid Dance Meditation Other Health & Fitness
Music
Instruments Music Production Music Fundamentals Vocal Music Techniques Music Software Other Music
Teaching & Academics
Engineering Humanities Math Science Online Education Social Science Language Teacher Training Test Prep Other Teaching & Academics
AWS Certification Microsoft Certification AWS Certified Solutions Architect - Associate AWS Certified Cloud Practitioner CompTIA A+ Cisco CCNA Amazon AWS CompTIA Security+ AWS Certified Developer - Associate
Photoshop Graphic Design Adobe Illustrator Drawing Digital Painting InDesign Character Design Canva Figure Drawing
Life Coach Training Neuro-Linguistic Programming Mindfulness Personal Development Meditation Personal Transformation Life Purpose Neuroscience Emotional Intelligence
Web Development JavaScript React CSS Angular PHP WordPress Node.Js Python
Google Flutter Android Development iOS Development Swift React Native Dart Programming Language Mobile Development Kotlin SwiftUI
Digital Marketing Google Ads (Adwords) Social Media Marketing Google Ads (AdWords) Certification Marketing Strategy Internet Marketing YouTube Marketing Email Marketing Retargeting
SQL Microsoft Power BI Tableau Business Analysis Business Intelligence MySQL Data Analysis Data Modeling Data Science
Business Fundamentals Entrepreneurship Fundamentals Business Strategy Online Business Business Plan Startup Freelancing Blogging Home Business
Unity Game Development Fundamentals Unreal Engine C# 3D Game Development C++ 2D Game Development Unreal Engine Blueprints Blender
30-Day Money-Back Guarantee
IT & Software Operating Systems System Programming

Linux System Programming Techniques & Concepts

For Developers - Build Linux Programmable Libraries, Makefiles, Memory Management, Compilation & Linking, C Programming
Bestseller
Rating: 4.4 out of 54.4 (336 ratings)
2,927 students
Created by Abhishek CSEPracticals, Shiwani Nigam, Ekta Ekta
Last updated 2/2021
English
English [Auto]
30-Day Money-Back Guarantee

What you'll learn

  • Learn Advance Programming Concepts in C/C++
  • Develop and Integrate C/C++ Libraries
  • Automate Build Process using Makefile
  • Use of Function Pointers as Callbacks
  • Static and Dynamic Libraries and Linking
  • Compilation Process of a GCC Compiler
  • Organize the code into Header and Source files
  • Understanding Memory allocations, Heap Memory Management, Memory Leaks
  • Stack Memory, Stack overflow, Stack Corruption, Stack Registers
  • Paging Concepts and Page Tables
  • Concept of TLVs
Curated for the Udemy for Business collection

Requirements

  • Basic knowledge of Programming in C/C++ is required
  • Zeal and enthusiasm to learn and sharpen the skills
  • Good to have basic OS knowledge but not mandatory

Description

There are already innumerable courses/tutorials on internet/Udemy which teaches almost every aspect of C programming language. All those courses sound same, talk same and deliver more or less same knowledge. How is this course different from others ?


The intention of this course is to make you ready for System programming Technical interviews, interview level - from Beginner to Intermediate. This course is for (future) Developers, not for testers or System Administrators.


I choose to create this course to fill the gap between novice/beginner and intermediate/Advanced Programmers. This course assumes that you are at-least above average in programming (in any programming language, but preferable in C/C++) - know memory allocations, all kinds of loops, function calls, pointers etc.  In this course, I won't teach C/C++ (there are already many courses on it online), but would teach programming techniques and low-level details regarding how C program works behind the scenes - All topics very important from interview point of view. My Target is to grow this course into Linux/C Bible.


Yet, I always feel, you need to outsmart your fellow colleagues in this era of stiff competition, and therefore, I tried this attempt to present you the wisdom and knowledge which is of utmost importance for a programmer. I have seen though students could write good C/C++ programs, yet they lack the clarity on how one should write better organized, Manageable, extensible and programmable codes in the form of libraries. For example, Students too good in competitive programming, yet do not know how to write a simple Makefile, reason being, Academics do not teach and students do not care to learn.

In this course, I will cover the topics related to creating Linux System Libraries (release 1) with Advanced language-agnostic Programming Concepts (release 2) which can be well applied if you happen to become a programmer in other languages tomorrow. 


The Concepts like MultiThreading, Thread-Synchronization, Socket Programming, IPCs etc demands a separate course on each topic altogether. Currently, I have a course on IPC, pls check it out. These topics are out of scope for this course.


The Course shall be delivered into two Releases :


     Release 1 Building and Managing a Library:  This covers basics regarding how one should create and organize his code as a Library.

     Release 2 Memory Management Concepts:  This covers Advance concepts on Linux Memory Management specifically. Please check Table of Contents for more info.


Why you should *NOT* do this course?

1. Please Excuse this course if you are the ultimate beginner in C programming !!

2. There is no point of doing this course if you don't like hitting the keyboard, and lazy enough to watch lecture VDOs only

3. If you want everything cooked and served on your plate.


Course Pre-requisite :

  • Above Beginners Level in C/C++ programming

  • Good to have basic OS knowledge

  • Zeal to excel and Code


No Third Party libraries

Whatever logic you implement, you need to implement it from scratch. Like all my other courses, this course do not suggest taking help of any third party library to get the jobs done. Use of external libraries completely defeats the purpose of the course.


Warning: This course has auto system-generated subtitles which may not be perfect. Please disable subtitles as per your convenience.


Curriculum :

**********************************************

Release 1 Building and Managing a Library

**********************************************

Section 1 : Introduction to Libraries

  • What is Library

  • Relationship between Library and Application

  • Ex : Doubly linked list as a Library

  • Quick Compilation Steps

  • Summary

Section 2 : Header Files

  • Relationship between Source and header files

  • Text Substitution Method

  • Text Substitution Method - Example and Demo

Section 3 : Preprocessing Directives

  • Problem of Duplicate inclusion of Hdr files

  • Pre-processing Directives

  • Solution to Duplicate inclusion of Hdr files

Section 4 : Correct way of Using Structures and Functions

  • Structures - Define and Use thumb Rule

  • Functions - Declare and Use thumb rule

  • The problem of Recursive Dependency

  • A solution to Recursive Dependency

Section 5 : Creation of Static and Dynamic Libraries

  • Resuming with Doubly Linked List Library

  • Quick Creation of Static and Dynamic Libraries

  • Linking with Static Library

  • Linking with Dynamic Library

Section 7: Understanding four stages of Compilation

  • Four stages of C/C++ Compilation

  • How Dynamic Library works ?

  • Dynamic Linking : Linking with Dynamic Library

  • Comparison - Static Vs Dynamic Linking

Section 8 : Building using a Makefile

  • What are Makefiles and why do we need it

  • Functions of Makefile

  • Makefile Dependency tree

  • Steps of Writing a Makefile

  • Assignment on Makefile

Section 9 : Run-time Programmable libraries

  • What are Programmable Libraries?

  • Steps to Program the libraries

  • Registering of the callbacks with Libraries

    • key_match callback

    • comparison_fn callback

  • Delegation of Application-specific operations to Libraries

Section 10 : Writing Iterators using Macros

  • What are Iterative Macros ?

  • Why we need Iterative Macros ?

  • How to Write Iterative Macros - For Trees and Linked Lists

  • Exercises

Section 11 : Glue Based Libraries and Data structures

  • What are the Glue Based Libraries?

  • Introducing Glthreads - A Glued LinkedList

  • Glthreads Vs Traditional Linked List

  • Structure field offset

  • GLThread Operations

  • Code Walk

  • GLThread Benefits 


************************************************

Release 2 Memory Management Concepts

************************************************

Section 12 : Memory Layout of Linux Process

  • Virtual Memory Basics 

  • Memory Layout of Linux Process 

  • Example: Memory Layout of Linux Process 

  • Exercise on size command 

Section 13 : Stack Memory Management

  • Stack Memory Basics and Contents 

  • Stack-Overflow and Prevention 

  • Stack Memory Corruption 

  • Common Cpu Registers

  • Procedure Call Mechanism - Step by Step

  • Purpose of Base Pointer register (ebp) 

  • Procedure Return Mechanism - Step by Step

  • Lab session 

Section 14 : Heap Memory Management

  • Introduction and Goals

  • How Malloc Works

  • Top of Heap Memory region - break pointer

  • Heap Memory Mgmt Sys Calls - brk and sbrk

  • Meta and Data Blocks

  • How free() works

  • Block Splitting

  • Block Merging

  • Memory Illness - Problem of Fragmentation

Section 15 : Concept of Paging

  • Introduction to Paging

  • Byte Addressable Memory

  • 32 bit and 64 bit Machine Architecture

  • Address Bus and Data bus         

  • Physical Vs Virtual Address

  • Physical Memory Frames        

  • Virtual Address Composition

  • Page Table

  • Paging In Action

  • Shared Physical Memory

Section 16 : Multilevel Paging

Section 17 : Demand Paging

Section 18 : Memory Management for Multi-threaded Process



The intention of this course is to make you ready for System programming Technical interviews from beginners to upto 8-9 yrs of experience.


Q. What are the frequently asked questions by interviewers in a technical round when someone writes C/C++/System Programming language on their resume?

Answer : If i am interviewer, what questions i would ask depends on his no of years of experience in C.

1–3 yrs of experience — I would have asked:

  1. Double pointers

  2. design a Macro to return the size of the structure

  3. Two Dimensional Arrays, passing and returning arrays from a fn

  4. Different stages of C program compilation

  5. how fork() works

  6. What are various ways to debug memory corruptions.

  7. various IPCs

  8. Heap and Stack memory-based Question

4–6 yrs of experience - I would have asked:

  1. How memory is allocated by the OS

  2. Internal and external fragmentation, what can be done to avoid it

  3. System calls, strace()

  4. Trade-of of one IPC over other

  5. various ways to communicate with kernel and comparison

  6. Data (De)Serialization in C

  7. RPC in C

  8. callbacks advanced application

  9. typedef Vs #define

  10. Generic programming in C using macros

  11. Thread Synchronization

  12. Heap and Stack memory based Question

7+ yrs of experience - I would have asked

  1. Have you designed any system module to solve any problem

  2. Design thread library 0 what functionalities would you incorporate in and how ?

  3. What are Dos and Dont’s for writing a robust and flexible library

  4. How to write generic code in C

  5. Various ways to implement timers in C, and comparison of approaches

  6. How Interrupts work ?

  7. IPCs and comparison

  8. How would you convert a C code to C++ and vice versa

  9. How to write a tool to detect memory leaks, Or garbage collection

  10. Design your own memory allocation tool. Why would you write your own memory allocation scheme ?

  11. When to go for Multi-process design over Multi-threaded design and vice versa

  12. How ValGrind tool works

  13. In production code, would you favor recursive but simple logic, Or Non recursive but complex logic, and why ?

If you analyze the pattern,

Candidate with 1–3 yrs of experience, I would chose to ask more of a direct and straightforward Questions.

Candidate with 4–6 yrs of experience, I would chose to ask more advanced technical C Question plus some comparison of approaches based Questions

Candidate with 7+ yrs of experience, I would chose to ask more of a design and Analysis based Question.

Note that, since Question pertains to C and System Programming, so i have not mentioned Data structures and Algorithms.

Who this course is for:

  • Students who have basic knowledge of C/C++ programming
  • Warning : Not for Absolute beginners in Programming
  • Who want to take their programming Skills from Beginner to Professional Level
  • Final year students looking to crack the Interview Questions on OS, C programming

Featured review

Eduardo Bomfim Sanseverino
Eduardo Bomfim Sanseverino
9 courses
9 reviews
Rating: 5.0 out of 59 months ago
The course is excellent!!! The instructor brought good examples with amazing pictures to illustrate the lectures. Very good method to teach the students. Very good slides, pictures, stunning diagrams to clarify your understanding. I loved the course and recommend for sure!!!

Course content

21 sections • 138 lectures • 12h 42m total length

  • Preview09:58
  • Join Us
    00:05
  • Setting up Linux Development Environment
    05:42
  • Preview03:27
  • Quick Compilation Steps
    06:09
  • Summary
    02:50

  • What are Header Files and their Purpose ?
    04:22
  • Relationship between Source and Header Files
    07:48
  • Preview03:36
  • Text Substitution Example
    06:23
  • Text Substitution Demonstration
    03:12

  • Problem Of Duplicate Inclusion of Header Files
    06:02
  • What are Pre-processing Directives ?
    06:18
  • Solution to Duplicate Inclusion of Hdr files using Preprocessing Directives
    08:33

  • Structure Definitions and Use
    04:19
  • Function Declaration and Use
    08:53
  • Recursive Dependency
    08:49
  • Solution to Recursive Dependency
    04:32
  • Summary
    01:36

  • Resuming with Doubly Linked List Library
    05:55
  • Preview08:50
  • Linking with Static Library
    08:07
  • Linking with Dynamic Library
    03:32
  • Summary
    00:55

  • 4 Stages of Compilation Process
    06:15
  • Stage 1 of 4 - Preprocessing stage
    04:52
  • Stage 2 of 4 - Compilation Stage
    03:06
  • Stage 3 of 4 - Assembler Stage
    04:32
  • Stage 4 of 4 - Linking Stage
    06:16

  • Introducing Makefile
    05:08
  • Makefile Analogy - Dependency Tree
    05:35
  • Preview05:41
  • Makefile Assignment - part2
    11:15
  • Final Makefile
    08:02

  • Introduction
    04:54
  • Revisiting DLL
    07:06
  • Problem Statement
    02:49
  • Solution - Responsibility Delegation
    10:59
  • Using Programmable DLL Library - Code Walk
    03:28
  • Search Callback Summary
    02:43
  • Comparison Callback
    10:47
  • Comparison Callback Demo
    03:02
  • Summary
    01:42
  • Coding Assignment
    3 questions

  • Preview04:20
  • For loop Semantics
    02:59
  • Iterative Macros For LinkedList
    09:50
  • Iterative Macros for Binary Trees
    04:58
  • Tree Iterators Prerequisites
    03:42
  • Tree Iterators Implementation
    05:09
  • Summary
    01:30
  • Coding Assignment
    3 questions

  • Introduction
    03:35
  • Glthreads Definition
    04:19
  • Difference - Traditional Vs Glue Based DLL
    04:53
  • Structure Field Offset
    07:37
  • Assignment
    2 questions
  • GLNode Insertion
    03:41
  • GLThread Iteration
    03:15
  • GLNode Removal
    01:18
  • Code Walk - Demo
    06:24
  • Traditional List Problems
    05:39
  • GLThread Benefits
    04:54

Instructors

Abhishek CSEPracticals
I build Networks !
Abhishek CSEPracticals
  • 4.4 Instructor Rating
  • 1,679 Reviews
  • 15,110 Students
  • 14 Courses

I have been engaged with coding and software for more than 8 years. I am a Networking developer at MNC. My rich working experience is backed by graduation from IIT Bombay as an MTech specialist. I am restless for more in-depth knowledge, and always working out the ways to integrate what I know in practical ways. I am always happy to train and encourage people on Udemy – the next-gen education platform.

I will help you to strengthen the networking concepts and fundamentals in a very practical way. You’ll complete assignments and work on a project where you’ll use all the theory provided by me. I make sure you build a proper understanding and that you’ll get all the questions explained. Let me take the privilege to guide you and bring useful additions to your resume!

Shiwani Nigam
Digital Marketing Executive
Shiwani Nigam
  • 4.4 Instructor Rating
  • 1,679 Reviews
  • 16,390 Students
  • 14 Courses

Hi, Myself Shivani Nigam, PhD in Marketing. I expertise in researching the consumer behavior in the context of purchasing the products online. I take the responsibility of marketing the online content (Udemy courses) on this platform.

I also ensure the courses are delivered with perfect Audio/Video Quality by technical Instructors, and ensures that students queries and doubts are addressed by technical instructors with priority.

Ekta Ekta
Facilities Manager
Ekta Ekta
  • 4.4 Instructor Rating
  • 1,679 Reviews
  • 15,110 Students
  • 14 Courses

Hi, I am Ekta, a facility Manager for Csepracticals. I am responsible for the maintenance and upkeep of an organization’s infrastructure, ensuring that they meet legal requirements and health and safety standards.

I ensure that the facility is operating as it should on a daily basis by completing daily inspections and conducting proactive and reactive maintenance.

  • Udemy for Business
  • Teach on Udemy
  • Get the app
  • About us
  • Contact us
  • Careers
  • Blog
  • Help and Support
  • Affiliate
  • Terms
  • Privacy policy
  • Cookie settings
  • Sitemap
  • Featured courses
Udemy
© 2021 Udemy, Inc.