Overview

Linux Overview

  • 如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。
  • 内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。
  • 为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问的接口:即系统调用
  • Shell: 一个特殊的应用程序,俗称命令行,本质上是一个命令解释器,它下通系统调用,上通各种应用,通常充当着一种“胶水”的角色,来连接各个小功能程序,让不同程序能够以一个清晰的接口协同工作,从而增强各个程序的功能。
    • Shell是可编程的: Shell脚本,Shell语句通常都对系统调用做了一层封装

Linux Kernel Overview

  • 首先,可以看到用户空间跟内核空间是通过SCI交互的,关于SCI在这一节下方会具体介绍到。
  • 图下方详细地给出了内核具体做哪些事~  (下面给出大致介绍,之后会有模块逐个详细介绍~)
    • Process Management: linux内部不区分进程和线程(都是线程)。这部分提供的功能大致有: 这一部分具体参考link
      • 为上层提供API: fork、exec新建线程;kill、exit停止线程;线程之间的通信和同步;
      • 处理活动进程之间共享CPU的需求:CPU调度。
    • Memory Management: 管理内存这个重要资源~ 具体参考link
      • 虚拟内存(内存页):为提高效率。linux要管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。
      • 交换:在内存耗尽时,页面可以移除内存放入磁盘。
    • File Systems: 参考link
    • Device Drivers:
    • Network: 

System Call 

  • 定义:Linux内核中设置了一组用于实现各种系统功能的子程序。
    • 和普通函数调用的区别:系统调用由操作系统核心提供,运行于核心态
  • 工作方式:
    • 背景:用户进程不能访问内核:不能访问内核所占空间也不能调用内核函数。(保护模式)
    • 原理:进程先用适当的值填充寄存器,然后调用一个特殊的指令,这个指令会跳到一个事先定义的内核中的一个位置(用户可读不可写)。 [在Intel CPU中,这个由中断0x80实现]
    • --> 在用户空间通过向内核空间发出system call,产生软中断,从而让程序陷入内核态,执行相应的操作。
  • 安全性与稳定性:内核驻留在受保护的地址空间,用户空间程序无法直接执行内核代码,也无法访问内核数据。

 FYI

  • https://www.ibm.com/developerworks/cn/linux/l-linux-kernel/index.html