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