Kernel
kernel 就是把计算机的硬件资源管理调度起来,例如:内存管理 进程管理 设备管理 网络等。并遵循 OS 规范抽象出接口供给用户使用的程序。这样用户不用关心硬件的配置,通过给定的接口就可以使用这台机器的资源。
File System
计算之前需要先输入数据,计算完成之后要输出数据。数据输入和输出都需要格式的规范以及存取的方式。所以我们还需要一个文件系统解决这两个问题。当然一些小的嵌入式的系统可以没有文件系统(Fs)直接将数据存储在内存中。但是基本的 I/O 接口还是要有的。
Shell
在进行人机交互时,操作系统提供了 shell 程序。shell 程序就是指令输入的通道,mac 上有 iterm , linux 上 有 bash ,windows 上有 CMD ……等等 。我们可以通过 shell 程序 安装软件、操作文件、进行系统设置等等。
操作系统 在为应用程序提供 API 接口。有两个基本的作用:
Threads
一个进程分配好了资源,是通过一个或多个线程利用这些资源干活的。
进程间切换
一个进程的指令和另一个进程的指令是交错执行的。因为同一时刻单核 cpu 只能执行一个程序。但是我们却感觉系统上多个进程是在同时运行的。这就是进程间切换来实现的。这种交错执行的机制称为上下文切换。
并发
线程在并发时会产生竞争,线程之间的通信就变的非常重要。通信有共享内存或者通过通信。分布式系统中共享内存就没办法了。
状态机
计算机的本质就是状态机。 State1 -> State2 。