Skip to content

Latest commit

 

History

77 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STMicroelectronics Training: System Programming Under Linux

Trainee in System Programming under Linux (Ubuntu) July 2024 – February 2025

Phase 1 (July – September 2024)

  • Linux/Unix History, POSIX and SUSv3
  • ELF File and Build Process
  • System Calls and Processes in Linux
  • Memory Allocation
  • Users and Groups Management
  • Partition Table Parsing and File System
  • GDB and Makefile

Phase 2 (September 2024 – February 2025)

  • Compiling Minimal Linux Distro & Yocto Build System
  • Socket Programming in Unix and Networking
  • Signals: Standard and real-time signals
  • Inter-Process Communication (IPC) and filelocks
  • Multi-Threading & Synchronization
  • Valgrind, Unity C testing and GCOV

Tasks

This project contains a C program split into two files: prime.c and main.c. One file contains a function and a global variable (used in this function), and the second one contains the main function and uses the function defined in the first file.

This C program parses an ELF file and prints its header information similar to the readelf -h command. It reads the ELF header and displays various fields such as type, machine, version, entry point, and more.

This is a basic shell implementation in C with memory optimization designed to execute internal and external commands. It supports several built-in commands and can handle executing external programs.

Two projects focused on managing heap memory in C: a simulation of a Heap Memory Manager (HMM) and a custom HMM Library. These projects demonstrate low-level memory management concepts, including dynamic memory allocation, deallocation, and fragmentation management.

A command-line utility for displaying partition information on disk devices. This tool supports both MBR (Master Boot Record) and GPT (GUID Partition Table) partition schemes and provides detailed information about each partition.

This project is a custom implementation of the ls command. Made with dynamic memory allocation, allowing it to handle directories of any size efficiently. This implementation supports many of the common flags used with the standard ls command and provides formatted output.

A lightweight HTTP server implementation in C that handles basic web requests, serves static files, generates directory listings, and supports CGI script execution.

  • Non-Blocking Wait: Implements a mechanism to wait for signals without blocking the main process, allowing for more responsive applications.

  • Real-Time Logger: A logging system that utilizes real-time signals to log events and messages efficiently.

A multi-process shop simulation implemented in C, demonstrating efficient use of Linux IPC mechanisms. The system consists of three main processes: Shop Process, Customer Process, and Inventory Manager, managing inventory and processing orders.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages