Phu Xuan University Library
Computer Science from the Bottom Up

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
  1. 01: General Unix and Advanced C
  2. 1.01: Everything is a file
  3. 1.02: Implementing abstraction
  4. 1.03: File Descriptors
  5. 02: Binary and Number Representation
  6. 2.01: Binary the basis of computing
  7. 2.02: Types and Number Representation
  8. 03: Computer Architecture
  9. 3.01: The CPU
  10. 3.02: Memory
  11. 3.03: Peripherals and buses
  12. 3.04: Small to big systems
  13. 04: The Operating System
  14. 4.01: The role of the operating system
  15. 4.02: Operating System Organisation
  16. 4.03: System Calls
  17. 4.04: Privileges
  18. 05: The Process
  19. 5.01: What is a process
  20. 5.02: Elements of a process
  21. 5.03: Process Hierarchy
  22. 5.04: Fork and Exec
  23. 5.05: Context Switching
  24. 5.06: Scheduling
  25. 5.07: The Shell
  26. 5.08: Signals
  27. 06: Virtual Memory
  28. 6.01: What Virtual Memory isn't
  29. 6.02: What virtual memory is
  30. 6.03: Pages
  31. 6.04: Physical Memory
  32. 6.05: Pages Frames Page Tables
  33. 6.06: Virtual Addresses
  34. 6.07: Consequences of virtual addresses pages and page tables
  35. 6.08: Hardware Support
  36. 6.09: Linux Specifics
  37. 6.10: Hardware support for virtual memory
  38. 07: The Toolchain
  39. 7.01: Compiled v Interpreted Programs
  40. 7.02: Building an executable
  41. 7.03: Compiling
  42. 7.04: Assembler
  43. 7.05: Linker
  44. 7.06: A practical example
  45. 08: Behind the process
  46. 8.01: Review of executable files
  47. 8.02: Representing executable files
  48. 8.03: ELF
  49. 8.04: ELF Executables
  50. 8.05: Libraries
  51. 8.06: Extending ELF concepts
  52. 8.07: ABIs
  53. 8.08: Starting a process
  54. 09: Dynamic Linking
  55. 9.01: The Dynamic Linker
  56. 9.02: Global Offset Tables
  57. 9.03: Libraries
  58. 9.04: Working with libraries and the linker
  59. 9.05: Code Sharing