# 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_.
