
External
Computer Science from the Bottom Up
Computer science is often taught from the "top down"; applications, high level programming, software design and development theory, possibly data structures. Students will probably be exposed to binary, hopefully binary logic, possibly even some low level concepts such as registers, opcodes and the like at a superficial level. This book aims to move in completely the opposite direction, working from operating systems fundamentals through to how those applications are complied and executed.
- Author
- Ian Wienand
- Publisher
- Red Hat
- Source
- LibreTexts
- License
- CC BY-SA
- Language
- EN
- Category
- Information Technology
Contents· 59 sections
- 01: General Unix and Advanced C
- 1.01: Everything is a file
- 1.02: Implementing abstraction
- 1.03: File Descriptors
- 02: Binary and Number Representation
- 2.01: Binary the basis of computing
- 2.02: Types and Number Representation
- 03: Computer Architecture
- 3.01: The CPU
- 3.02: Memory
- 3.03: Peripherals and buses
- 3.04: Small to big systems
- 04: The Operating System
- 4.01: The role of the operating system
- 4.02: Operating System Organisation
- 4.03: System Calls
- 4.04: Privileges
- 05: The Process
- 5.01: What is a process
- 5.02: Elements of a process
- 5.03: Process Hierarchy
- 5.04: Fork and Exec
- 5.05: Context Switching
- 5.06: Scheduling
- 5.07: The Shell
- 5.08: Signals
- 06: Virtual Memory
- 6.01: What Virtual Memory isn't
- 6.02: What virtual memory is
- 6.03: Pages
- 6.04: Physical Memory
- 6.05: Pages Frames Page Tables
- 6.06: Virtual Addresses
- 6.07: Consequences of virtual addresses pages and page tables
- 6.08: Hardware Support
- 6.09: Linux Specifics
- 6.10: Hardware support for virtual memory
- 07: The Toolchain
- 7.01: Compiled v Interpreted Programs
- 7.02: Building an executable
- 7.03: Compiling
- 7.04: Assembler
- 7.05: Linker
- 7.06: A practical example
- 08: Behind the process
- 8.01: Review of executable files
- 8.02: Representing executable files
- 8.03: ELF
- 8.04: ELF Executables
- 8.05: Libraries
- 8.06: Extending ELF concepts
- 8.07: ABIs
- 8.08: Starting a process
- 09: Dynamic Linking
- 9.01: The Dynamic Linker
- 9.02: Global Offset Tables
- 9.03: Libraries
- 9.04: Working with libraries and the linker
- 9.05: Code Sharing