Linux设计目标
Unix被设计成为一种能够同时处理多进程和多用户的交互式系统,Linux继承了Linux的设计目标。
设计Linux的基本方针:
好的程序员追求的系统
- 简单,优雅,
- 一致性 (
最小惊讶原理
)
- 较强的功能性与灵活性
- 意味着系统有较小的一组基本元素,产生多种多样的组合来满足各种应用需要。
Linux的接口
Linux系统层次结构
所有版本的Linux必须提供大量的标准程序,其中一些是POSIX标准指定的,其他的根据Linux的版本而有所不同。它们包括:
- 命令处理器(shell)
- 编译器
- 编辑器
- 文本处理程序
- 文件操作工具等
Linux具有三种不同的接口
- 真正的系统调用接口
- 库函数接口
- 由标准应用程序构成的接口
shell
shell中,后台运行一个程序的语法是在原本命令后加“&”。
shell脚本:包含shell命令的文件。
- 可以包含参数,同时使用if、for、while和case等结构。
- 可以给变量赋值,然后过一段时间再读取这些变量。
linux应用程序
应用程序分类
Linux的命令行用户界面包含大量的标准应用程序。大致分为6类:
- 文件和目录操作命令
- 过滤器
- 程序设计工具,如编辑器和编译器
- 文档处理
- 系统管理
- 其他
过滤器
过滤器有:
- grep、sort、head、tail
- cut和paste(文档剪切与粘贴)
- od:将输入(通常是二进制,也包括八,十和十六进制)转化为ASCII文档。
- pr:打印机格式化输出
- tr:字符大小写转换
编译器和程序设计工具
编译器和程序设计工具:
- gcc
- ar:将库函数收集到存档文件中
- make:维护程序,跟踪哪些头文件依赖于哪些头文件等,然后安排所有需要进行的编译自动进行。
内核结构
Linux内核结构
内核最底层,负责中断处理程序,这是它们与设备交互的主要方式,以及底层的分派机制。分派在中断时发生。
- 底层的代码中止正在运行的进程,将其状态存储在内核进程结构中,然后启动相应的驱动程序。
- 进程分派,在内核完成某些操作并且需要再次启动一个用户进程时,发生。进程分派的代码是汇编代码,并且和进程调度的代码有很大不同。
内核子系统的三个主要部件
- I/O部件
- 包含所有负责与设备交互以及实现联网和存储的I/O功能的内核部件
- 内存管理部件
- 维护虚拟内存到物理内存的映射,维护最近被访问页面的缓存以及实现一个好的页面置换算法。并根据需要把需要的数据和代码页读入内存中。
- 进程管理部件
- 主要是进程的创建和中止。还有CPU调度和信号处理。
内核最顶层,是内核的系统调用接口。所有的调用都来自这里,其导致一个陷阱,将系统从用户态切换到受保护的内核态,继而将控制权交给上述的内核部件之一。
参考资料
现代操作系统