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 | * 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: | * 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 | ==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== | ||
=== | ===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 | * 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 | |||