UNIX Weapons School Weekplan: Difference between revisions

 
(20 intermediate revisions by the same user not shown)
Line 14: Line 14:
** lsof, netstat, memstat, etc
** lsof, netstat, memstat, etc
* C/C++ UNIX DEVELOPMENT aka Onward Christian Soldiers
* C/C++ UNIX DEVELOPMENT aka Onward Christian Soldiers
** Highlights of GCC, G++, LLVM, Clang, ICC, and NVCC.
** Highlights of [[GCC]], G++, LLVM, Clang, ICC, and NVCC.
** GNU Make
** [[GNU Make]]
** strace, ltrace, ptrace().
** strace, ltrace, ptrace().
** GDB tricks.
** GDB tricks.
Line 31: Line 31:
** Process-level memory management.
** Process-level memory management.
** The C standard library.
** The C standard library.
** The STL.
** [[X Macros|Xmacros]] / The STL.
** A glimpse of template metaprogramming
** A glimpse of template metaprogramming


Line 40: Line 40:
**The memory hierarchy.
**The memory hierarchy.
** Branch prediction.
** Branch prediction.
** SIMD.
** [[SIMD]].
** Memory fences.
** Memory fences.
** Transactional memory.
** Transactional memory.
Line 54: Line 54:
* ZERO-COPY I/O aka Now We're Getting Somewhere.
* ZERO-COPY I/O aka Now We're Getting Somewhere.
** Mmap and shared memory.
** Mmap and shared memory.
** TLB invalidation and IPIs
** CLONE_VM and a glimpse of threads.  
** CLONE_VM and a glimpse of threads.  
** RDMA. The PCIe bus.
** RDMA. The PCIe bus.
Line 70: Line 71:


* IN THE GRIM FUTURE OF WEEK 3 THERE ARE NO AKAs, ONLY ALGORITHMS
* IN THE GRIM FUTURE OF WEEK 3 THERE ARE NO AKAs, ONLY ALGORITHMS
* Searching small spaces: Constant sorts (sorting networks). Dancing links. Xmacros. Timer wheels.
* Searching small spaces: Constant sorts (sorting networks). Dancing links. Timer wheels.
* Searching large spaces: Trees. PATRICIA tries. Skip lists. Suffix trees. Automata search. Interval trees.
* Searching large spaces: Trees. PATRICIA tries. Skip lists. Suffix trees. Automata search. Interval trees.
* Searching by content: Hashes. Algorithmic complexity attacks. Universal hashes. Cuckoo hashing. Adaptive perfect hashes.
* Searching by content: Hashes. Algorithmic complexity attacks. Universal hashes. Cuckoo hashing. Adaptive perfect hashes.
* Searching huge spaces: VLRU. Enumeration by method of linear congruence and other space-filling parlor tricks.
* Searching huge spaces: [[VLHU]]. Enumeration by method of linear congruence and other space-filling parlor tricks.
* Real-time machine learning: Support vector machines. Non-negative matrix factorization. Hierarchal hashing. Hidden Markov models.
* Real-time machine learning: Support vector machines. Non-negative matrix factorization. Hierarchal hashing. Hidden Markov models.
* Three impossible things before breakfast: Detecting an infinite loop, transforming an infinite list, and computing without executing.
* Three impossible things before breakfast: Detecting an infinite loop, transforming an infinite list, and computing without executing.
Line 87: Line 88:
* libev, libevent, libtorque
* libev, libevent, libtorque


==Week 4: Compilers and their limitations, both theoretical and practical==
==Week 4: [[Compiler Design|Compilers]] and their limitations==


* SSA and Basic Blocks, aka Planet of the Compilers
* SSA and Basic Blocks, aka Planet of the Compilers
Line 96: Line 97:


==Week 5==
==Week 5==
===Allotrion===
===Allotrios===
* Windows aka Unfathomably Wretched Function Naming: I/O Completion Ports. With Fibers come Heaps.
* Windows aka Unfathomably Wretched Function Naming: I/O Completion Ports. With Fibers come Heaps.
Line 119: Line 120:
* Parallelism among tasks
* Parallelism among tasks
* Algorithms simulating parallelism and nondeterminism.
* Algorithms simulating parallelism and nondeterminism.
* POSIX threads. Userspace threading. Coroutines.
* [[Pthreads|POSIX threads]]. Userspace threading. Coroutines.
* Parallel languages and libraries. IPP and TBB.
* Parallel languages and libraries. IPP and TBB.


==Week 7: Effective use of intranets and the Internet==
==Week 7: Effective use of intranets and the Internet==
* Sampling theory of Nyquist
* Sampling theory of Nyquist
* Queueing theory of Kleinrock. The Linux packet queue disciplines
* Queueing theory of Kleinrock. The Linux packet queue disciplines.
* The Internet backbone. Preserving service via anycast networking. Threats to the Internet. PMTUD / MSS black holes.
* The Internet backbone. Preserving service via anycast networking. Threats to the Internet. PMTUD / MSS black holes.
* Bufferbloat. Perils of the end-user network. Hardware design of fast networking devices. The CODEL queue discipline.
* Bufferbloat. Perils of the end-user network. Hardware design of fast networking devices. The CODEL and CAKE queue disciplines.
* IPv6. Algorithms for IPv6. Zeroconf. PXE. Ad-hoc and mesh networking. Algorithms for fragmentation and sequencing. Intranet threats.
* IPv6. Algorithms for IPv6. Zeroconf. PXE. Ad-hoc and mesh networking. Algorithms for fragmentation and sequencing. Intranet threats.
* Packet sockets. Linux's netlink(7).
* [[Packet sockets]]. Linux's netlink(7).
* Local topology discovery
* Local topology discovery


==Week 8: Heterogeneity==
==Week 8: Heterogeneity==
===Hardware===
* TCP offload engines
* TCP offload engines
* SolarFlare's OpenPacket
* SolarFlare's OpenPacket
* Microsoft AMP
* Microsoft AMP
* NVIDIA's CUDA
* NVIDIA's [[CUDA]]
* OpenCL
* OpenCL
===Software===
* System / guest emulation
* Transmeta CMS (Code Morphing Software)
* Popek and Goldberg virtualization requirements / KVM / Xen


==Week 9: The future of systems programming==
==Week 9: The future of systems programming==
Line 144: Line 151:
* COMA, ccNUMA, directories, SCI, SCA
* COMA, ccNUMA, directories, SCI, SCA
* Computational memory
* Computational memory
* Software-defined networking
* MRAM / FeRam / PRAM / SONOS