# Further reading

The SAL module obviously covers a lot of ground. It is very useful to know where to look for information around concepts covered by the module, so the below might be of some value to the interested reader.

## Operating system concepts

### Memory management

* Wilson, Paul R.; Johnstone, Mark S.; Neely, Michael; Boles, David (September 28–29, 1995), [*Dynamic Storage Allocation: A Survey and Critical Review* ](https://www.cs.northwestern.edu/~pdinda/icsclass/doc/dsa.pdf)(PDF), Austin, Texas: Department of Computer Sciences University of Texas
* Kath, Randy (April 3, 1993). ["Managing Heap Memory"](https://msdn.microsoft.com/en-us/library/ms810603.aspx). *Microsoft Developer Network Technology Group*

### Region-based Memory Management

* Wikipedia contributors, ["Region-based memory management"](https://en.wikipedia.org/wiki/Region-based_memory_management), *Wikipedia, The Free Encyclopedia*
* Jeff, Bonwick, *Sun Microsystems*; Jonathan, Adams, *California Institute of Technology* (June 21, 2001). ["Magazines and Vmem: Extending the Slab Allocator to Many CPUs and Arbitrary Resources"](https://www.usenix.org/legacy/publications/library/proceedings/usenix01/full_papers/bonwick/bonwick_html/index.html). Proceedings of the 2001 USENIX Annual: 15–34.

### Inter-Process Communication

* Wikipedia contributors, ["Inter-process communication,"](https://en.wikipedia.org/wiki/Inter-process_communication) *Wikipedia, The Free Encyclopedia*

#### Memory mapped files

* ["File Mapping"](https://msdn.microsoft.com/en-us/library/windows/desktop/aa366556.aspx). *Microsoft Developer Network*.
* ["Memory-Mapped Files"](https://msdn.microsoft.com/en-us/library/dd997372.aspx). *Microsoft Developer Network*.&#x20;
* Kath, Randy (February 9, 1993). ["Managing Memory-Mapped Files"](https://msdn.microsoft.com/en-us/library/ms810613.aspx). *Microsoft Developer Network Technology Group*
* ["MMAP(2) man page"](https://man7.org/linux/man-pages/man2/mmap.2.html). [*Linux man-pages project*](https://www.kernel.org/doc/man-pages/), The Linux Kernel Archives.

### Signal handling

#### The JVM

* ["How the JVM processes signals"](https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.zos.80.doc/user/signals.html). *IBM SDK, Java Technology Edition*, IBM.
* ["Signals used by the JVM"](https://www.ibm.com/support/knowledgecenter/en/SSYKE2_8.0.0/com.ibm.java.zos.80.doc/user/sighand.html). *IBM SDK, Java Technology Edition*, IBM.
* ["POSIX Signal Handling in Java"](https://ringlord.com/dl/Signals-in-Java.pdf). Ringlord Technologies.
* ["Signal Chaining"](https://docs.oracle.com/javase/7/docs/technotes/guides/vm/signal-chaining.html). *Java SE Documentation Tech Notes*, Oracle Technology Network.

#### Windows

* ["Structured Exception Handling"](https://msdn.microsoft.com/en-us/library/windows/desktop/ms680657.aspx). *Windows Dev Centre*, Microsoft.

#### Unix

* Wikipedia contributors, ["Unix signal"](https://en.wikipedia.org/wiki/Unix_signal). *Wikipedia, The Free Encyclopedia*
* ["SIGNAL(7) man page"](https://man7.org/linux/man-pages/man7/signal.7.html). [*Linux man-pages project*](https://www.kernel.org/doc/man-pages/), The Linux Kernel Archives.
* ["SIGNAL-SAFETY(7) man page"](https://man7.org/linux/man-pages/man7/signal-safety.7.html). [*Linux man-pages project*](https://www.kernel.org/doc/man-pages/), The Linux Kernel Archives.
* ["SIGACTION(2) man page"](https://man7.org/linux/man-pages/man2/sigaction.2.html). [*Linux man-pages project*](https://www.kernel.org/doc/man-pages/), The Linux Kernel Archives.
* [SIGNAL(2) man page"](https://man7.org/linux/man-pages/man2/signal.2.html). [*Linux man-pages project*](https://www.kernel.org/doc/man-pages/), The Linux Kernel Archives.
* [SIGPROCMASK(2) man page"](https://man7.org/linux/man-pages/man2/sigprocmask.2.html). [*Linux man-pages project*](https://www.kernel.org/doc/man-pages/), The Linux Kernel Archives.

### Pipes

#### Windows

* ["NULL and empty DACLs"](https://blogs.technet.microsoft.com/askds/2009/06/01/null-and-empty-dacls/). *Ask the Directory Services Team*, Microsoft.

## Smart Pointer

* Wikipedia contribtors, ["Smart pointers"](https://en.wikipedia.org/wiki/Smart_pointer). *Wikipedia, The Free Encyclopedia*
* ["`shared_ptr`"](https://www.cplusplus.com/reference/memory/shared_ptr/). *cplusplus.com*.
* ["`weak_ptr`"](https://www.cplusplus.com/reference/memory/weak_ptr/). *cplusplus.com*.
* [Bartlomiej Filipek](https://www.gitbook.com/book/chrissherlock1/inside-libreoffice/edit), ["Custom deleters for c++ smart pointers"](https://www.bfilipek.com/2016/04/custom-deleters-for-c-smart-pointers.html). *Bartek's coding blog*.

## Double-checked locking

* Wikipedia contributors, ["Double-checked locking"](https://en.wikipedia.org/wiki/Double-checked_locking). *Wikipedia, The Free Encyclopedia*&#x20;
* David Bacon, Joshua Bloch, Jeff Bogda, Cliff Click, Paul Haahr, Doug Lea, Tom May, Jan-Willem Maessen, Jeremy Manson, John D. Mitchell, Kelvin Nilsen, Bill Pugh, Emin Gun Sirer, ["The "Double-Checked Locking is Broken" Declaration"](https://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html), *University of Maryland*.
