## Semaphore vs Mutex vs AdminDev
### Semaphore
- More of a signal than a lock/unlock
- Integer value accessed through wait() and signal()
- wait() checks if the int is less than or equal to 0, decrements value
- signal() increments the integer value
### Semaphore Over Mutex
- Mutex locks can have busy waiting.
- Semaphore wait() results in busy waiting, but a process can block itself with a wakeup() implementation
- Semaphore can still result in syncing issues
- Critical-Section: Two processes can be in the same section if the wait() and signal() sequence is not monitored
### Semaphores in OS Dev
- Counting semaphore
- Value can range dramatically
- Control access to a given resource consisting of finite instances
- Semaphore is initialized to the given number of resources
- Each process that wants to use a resource performs wait() (lowering the value count)
- signal() is called when a process is finished utilizing a resource (increasing the value count)
- When count == 0, all resources are used
- Processes will block until count becomes greater than 0
- Binary semaphore
- Value can range between 1 and 0
- Similar to mutex locking
- Used in systems lacking mutual exclusion
### Atomics and Atomicity
- An atomic action is a group of related operations that execute without interruption or do not execute at all
- Operations isolated from other operations occurring at the same time
- Observed state is pending or complete, never partially complete.
- The Linux kernel
- A note on Golang
- Package "sync/atomic"
- Low-level primitives for synchronization algorithms
- "Share memory by communicating, don't communicate by sharing memory."
- Emphasis on low-level applications
### Java and C, Sitting in a Red-Black Tree
- My education vs my desires
- C teachings
- What other langs do
- Why this costs
- What I've learned
- Java still in the mix
- Shell and Python
### Why C, Again?
- OS and kernel development
- OS Dev Wiki
- Prereqs
- Userland tools
- Assembly
- All the cool kids do it!
- The language of operating systems
- The language of networking
- The language of web and proxy
### New Format
- Technical Buzzword Jargon Hell
- Stuff like this :D
- CompSci, Unix and Linux, computer programming
- Off topic
- Book reviews (some tech, some not)
- M-m-m-mental and physical health
- Ranting and raving
- NOT Tech News
- Linux kernel stuff
- Unix-like conventions and meetups (BSD, Linux)
- Interesting sites, tips, and tricks
- Long segment, short segment, short segment
- One long episode, two short episodes
- Intro music pending
### Let Me Know!
- [email protected]
- forum.admindev.tech
- iTunes: https://podcasts.apple.com/us/podcast/admindev-labs/id1476478667
- Stitcher: https://www.stitcher.com/podcast/the-rollbak/admindev-labs