Programming via Operating Systems

About the book

The author of "Programming via OS" is Vahram Martirosyan - the founder of Alan Turing school of Philosophy of Programming. This book is intended to help programmers who already have experience, but think they need detailed, fundamental knowledge.

Programming via Operating Systems will help you to gain new achievements in your career.

While reading the book, you can see the author's experience of 18 years.

Contents

1 The Why

1.1 Preface

1.2 Audience

1.3 How to read the book

2 The Operating System

2.1 Hardware Overview

2.1.1 The Central Processing Unit

2.1.2 The Memory

2.1.3 The Memory Bus

2.1.4 The Orchestration

2.1.5 The Interrupts

2.1.6 The Input and The Output

2.1.7 Conclusion

2.2 The Operating System

2.2.1 The Operating System Definition

2.2.2 The Boot Loading

2.2.3 Professional Programmers

2.2.4 The Architecture

2.2.5 Programming and The Operating System


3 The File System

3.1 Using Files

3.1.1 File Types

3.1.2 File operations

3.1.3 File Attributes

3.2 File System on Disk

3.2.1 File System Layout

3.2.2 i-nodes

3.2.3 Journaling

3.3 File System Design and Implementation

3.3.1 The Virtual File System - VFS

3.3.2 Case Study


4 Processes

4.1 The process as program execution

4.1.1 Loading a program

4.1.2 Program execution

4.2 The process as an OS object

4.2.1 Process creation

4.2.2 The process object

4.2.3 Process execution

4.3 Execution Threads

4.3.1 Thread Definition

4.3.2 Thread Stack

4.3.3 Processes VS Threads

4.4 The Scheduler

4.4.1 Scheduler functional

4.4.2 Scheduler execution

4.5 Synchronization

4.5.1 Race Conditions

4.5.2 The Deadlocks


5 Memory Management

5.1 Memory Overview

5.1.1 CPU Registers

5.1.2 CPU Cache

5.1.3 Random Access Memory

5.1.4 Permanent Storage

5.2 Segmentation

5.2.1 The problem behind memory segments

5.2.2 Memory Segments

5.2.3 Segments in x86

5.2.4 Memory Segments and Programming

5.3 Paging and Virtual Memory

5.3.1 Memory Pages

5.3.2 Page Table

5.3.3 Swapping

5.4 Real Memory Management

5.4.1 Memory management and fork()

5.4.2 Shared Memory

5.4.3 Memory management in daily life


The last part of the book is called "Memory management in daily life". This part of the book tells us what is happening inside the computer, when the programmer is assigning values to their variables.

You may think how the variable and operating systems are related, but the fact is that without the operating system it is impossible to gain access to your variables.