Skip to content

adhamkhaled312/STM-Linux-System-Programming

Repository files navigation

Linux System Programming Training with STMicroelectronics

Overview

In this repository, you will find two main folders: intro_training and advanced_training. Each folder contains subfolders for tasks, classwork, and additional materials as necessary.

Folder Structure

  • Intro_Training
    • Tasks: This folder contains tasks assigned for self-study or practice outside of class sessions. Each task includes a README file explaining it.
    • ClassWork: This folder contains the work completed during class sessions.
  • Advanced_Training
    • Tasks: This folder contains tasks assigned for self-study or practice outside of class sessions. Each task includes a README file explaining it.
    • ClassWork: This folder contains the work completed during class sessions.
    • Project: This folder contains the final project and any associated materials (Heap Memory Manager).

Contents

Introductory Training

  1. Linux History: A brief overview of the history and evolution of the Linux operating system.
  2. Command Line Usage and Build Process: Introduction to essential command line utilities and the process of building software in a Linux environment.
  3. Processes Management
    • Process Overview: Understanding the role of processes in a Linux system.
    • System Calls and Command Line Arguments: Exploring system calls used for process management and command line argument handling.
    • Process Creation: Understanding the process creation mechanism and related system calls.
    • Orphan & Zombie Processes: Explaining the concepts of orphan and zombie processes and how they occur.
    • Bash Features: Introduction to bash scripting and its features for process management.
    • Intro to Proc fs: Exploring the /proc filesystem for accessing process information.
    • IO Redirection in the Shell: Understanding input/output redirection and piping in the shell for process communication.
  4. User Management: Managing users and groups in a Linux system, including user creation, modification, and permissions.
  5. Filesystems Management
    • Introduction to HDD: Understanding hard disk drives (HDDs) and their role in data storage.
    • Parsing MBR Partition Tables: Exploring the Master Boot Record (MBR) partition table format and parsing techniques.
    • File System Formatting, Mounting, and Architecture: Understanding different file system formats (e.g., ext4, NTFS) and their architecture. Also covers the process of formatting disks and mounting file systems in Linux.
    • Directories, Files, Links, and Permissions in the File System: Explaining the concepts of directories, files, symbolic links, and permissions in the Linux file system.
    • Implementing "ls": Implementing a simplified version of the ls command to list directory contents.

Advanced Training

  1. Creating Mini Distribution: Steps to create a custom Linux distribution.
  2. Static and Shared Libraries: Understanding and working with static and shared libraries in Linux.
  3. Variadic Functions: Using functions with a variable number of arguments.
  4. Universal I/O Model: Overview of the Universal Input/Output model in Linux.
  5. Processes and Virtual Memory Management: In-depth look at process management and virtual memory in Linux.
  6. Memory Allocation: Techniques and best practices for memory allocation in Linux.
  7. Users and Groups: Advanced topics in managing users and groups.
  8. Time in Linux: Handling time and date functionalities in Linux.
  9. Makefile: Writing and understanding Makefiles for building projects.
  10. SSH: Secure Shell (SSH) usage and configuration.
  11. Git and GitHub: Version control with Git and collaboration using GitHub.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published