How-Linux-Works

### Chapter 1.The Big Picture

Abstraction
学习和理解新事物时,通过抽象省略多数细节,帮助有效理解;而在遇到关于细节的问题时,在将抽象剥离开,进入具体细节。

#### 1.1 Levels and Layers
layer or level 是一个根据组件在用户和硬件之间所处的位置来进行切分的分类。

典型的三层模型:用户进程(User Processes), 内核(Linux Kernel), 硬件(Hardware).
User Processes: GUI, Servers, Shell
Linux Kernel: System Calls, Process Management, Memory Management, Device Drivers
HardWare: Processor(CPU), Main Memory(RAM), Disks, Network Ports

内核是一个常驻在内存中并且告诉CPU该做什么的软件。


User Processes以user mode运行在user space,而Kernel以kernel mode运行在kernel space。这个space是内存空间。

Processes通常通过System Calls与Kernel进行交流。


#### 1.3 Process Mangement

每一个process执行一个小的fraction之后,暂停,放弃对CPU的占用,然后另一个process占用CPU,这个行为被称为context switch(上下文切换).

每一个小的时间片段,被称为time slice(时间片).


Kernel runs between process time slices during a context switch.


CPU的MMU(memory management unit)通过virtual memory的方式实现了每个process独立的地址空间,并且通过地址映射(address map)实现虚拟内存与物理内存的映射。

外设(device)通常只能在kernel mode下访问,因此必须由kernel通过Device Drivers的方式来管理。

在Linux中,除了init process外,所有的user processes 都是通过fork()调用创建的。

### 2. Basic Commands and Directory Hierarchy

#### 2.1 The Bourne Shell: /bin/sh

Shell is a program that runs commands

* 通配符

? 匹配一个字符

more or less space向下翻页 b(ctrl b)向上翻页

diff

file

find