Λογισμικό Συστήματος (9011)

Ανακοινώσεις

Εργασία 2 & Τελική Προφορική Εξέταση (15/1/2025, 19:00-22:00 στο AISE Lab)
- Τετάρτη, 18 Δεκεμβρίου 2024 - 7:49 μ.μ. -

To 2o Class project ξεκίνησε (στις Εργασίες). Η προθεσμία είναι πριν την τελική προφορική εξέταση τις 15 Ιανουαρίου,19:00-22:00 στο AISE Lab.

Η τελική εξέταση θα αποτελείται από τρεις ενότητες: α) sw development & posix (40%), β) small systems and real-time (20%), και γ) Linux kernel (40%). Τα θέματα που αφορούν την εξέταση αναλύονται παρακάτω.

A) x01-x05 - SW Development & POSIX - 40%
----------------------------------------------
x01:

Οpen source vs free, licenses, patents, copyright, open harware
Debugging tools & gdb basic commands
Elf format (areas) & tools (nm, objdump, hexdump, readelf)
Makefile format & use
Symbol tables
Assembler and tools (GNU as vs nasm, flags)
Linking, static/shared/dynamic library, related tools (ld, ldd, ar)
Versioning systems (svn vs git), basic operations, lock vs merge

x02-03:

Processes (basic operations), copy-on-write
Threads (basic operations)
IPC, Synchronization operations, atomic operations
Hazards (deadlocks, starvation/livelock) & classical problems
Unix signals and signal handlers
Pipes vs message queues
System calls
Tracing tools (strace, ltrace, ftrace, ptrace)

x04:

Sockets, operations, common options & flags
Client/server examples
Concurrent tcp/udp server
Asynchronous & nonblocking operations, poll/select operations

x05:

Memory bandwidth, memory mountain problem
Locality (instruction/data), types, example matrix mult
Vector operations
Prefetching
False Sharing
Performance tools for CPU perf, caching, paging
CPU load & time tools, perf tool, perf events
Basic profiling tools (gprof/oprof, gcov)
valgrind & options (cachegrind, callgrind, lackey, memory leaks)
user-level PAPI tool (parallel performance interface)

C) x06-x07 Small Systems & Real-Time (~20%)
----------------------------------------------
x06:

small systems
local continuation/coroutine implementation, Duff's device
stackless threads, protothreads
user-level threading
stackless threads
protosockets/picosocket
lightweight network stack examples
small database examples


x07:

real-time systems, types
cyclic executives, real-time operating systems, examples
simple RTOS operations (ARTK, FreeRTOS)
scheduling algorithms (RMA, EDF)
hazards, priority inversion, solutions
real-time communication
worst-case computation vs communication
time-sensitive vs time-triggered networks

D) x08 Linux kernel - modules - examples (40%)
----------------------------------------------

x08_1 to 4:

Booting (bootloaders), kernel config, device tree, file system
Linux kernel/module compilation, cross compilation, toolchains
built-in vs loadable kernel modules, parameters
Debug, printk, signals, kprobes, debugfs, procfs, kdb/kgdb
Character devices, basic & advanced operations (ioctl), examples
Sync (mutex, semaphore, spinlock, completion), examples
Process Context, Interrupt Context
Interrupt (IRQ,ISR), top/bottom half functions of device driver
tasklets and work queues vs softirq
Deferred work, wait_event, work queues/sleep, schedule
Timers (jiffies, high resolution), atomic operations
Kernel memory allocation (kmalloc, kvmalloc, kzalloc, slabs)
Communicate to real hw (register_region, ioremap, r/w functions)
basic kthread programming
kernel data structures (mainly, current, on-each-cpu, lists)
net devices, netfilter hooks, firewall, examples
discussion on drivers, e.g., terminal devices (ttys)

Questions regarding Linux kernel will be based on the kernel exercises and corresponding sections from chapters 1 to 11, and 17 from the LDD3 book, as registered in the TXT files in the x08_* lab directories.

The organization of block drivers (DMA-based), especially RAID, PCIe and USB drivers, the development of peripheral channel drivers (UART-Serial, I2C, SPI, SWI), as well as issues related to Linux kernel security, will not be considered.

Για ερωτήσεις είμαι διαθέσιμος via skype (Miltos.Grammatikakis), bbb & email.

Καλή προσπάθεια.

Ο Διδάσκων