systems-programming

Solid

Systems programming from memory management through networking. Covers memory models (stack vs heap, manual allocation, garbage collection, ownership/borrowing), concurrency (threads, mutexes, channels, async/await, actor model, data races vs race conditions), operating system concepts (processes, virtual memory, page tables, system calls, file descriptors, signals), compilation (lexing, parsing, code generation, linking, static vs dynamic libraries), networking fundamentals (TCP/IP, sockets, HTTP, DNS, TLS), and the hardware-software boundary (caches, cache lines, false sharing, memory-mapped I/O). Use when working with low-level code, diagnosing system-level bugs, understanding performance characteristics, or bridging between high-level languages and machine behavior.

AI & Automation 69 stars 9 forks Updated 1 weeks ago NOASSERTION

Install

View on GitHub

Quality Score: 79/100

Stars 20%
61
Recency 20%
90
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# Systems Programming Systems programming is programming where the machine's physical constraints -- memory, concurrency, I/O bandwidth, latency -- are not abstractions but design parameters. A web application can ignore cache lines; an operating system kernel cannot. This skill catalogs the concepts that distinguish systems programming from application programming, with emphasis on the mental models needed to reason about programs that interact directly with hardware and operating system primitives. **Agent affinity:** hopper (compilers, language implementation, systems), turing (computability, machine models) **Concept IDs:** code-abstraction, code-code-organization, code-debugging-strategies ## Part 1 -- Memory Management ### Stack vs Heap **Stack.** LIFO allocation. Each function call pushes a frame; return pops it. Allocation and deallocation are free (pointer arithmetic). Size is bounded (typically 1-8 MB per thread). Perfect for local variables with known lifetimes. **Heap.** Dynamic allocation. Memory is requested explicitly (malloc/new/Box::new) and freed explicitly or by a garbage collector. Slower than stack (allocator must find free space, manage fragmentation). Necessary for data whose size or lifetime is not known at compile time. **The fundamental tradeoff.** Stack allocation is fast but inflexible (fixed size, LIFO lifetime). Heap allocation is flexible but slow (allocation overhead, fragmentation, potential leaks). ### Manual Memory Management (C) *...

Details

Author
Tibsfox
Repository
Tibsfox/gsd-skill-creator
Created
5 months ago
Last Updated
1 weeks ago
Language
TypeScript
License
NOASSERTION

Similar Skills

Semantically similar based on skill content — not just same category