基本概念 - - Linux系统编程手册

基本概念(Fundamental concepts)

内核 (The Kernel)

操作系统 (operating system) 通常有 2 种 不同含义:

1. 指 完整的软件包 。 这 包括  管理计算机资源的核心软件   和 所有 附带的 标准 软件工具 , 如。。。。

//consisting of   ...   and  .....   翻译为 “  ,这包括 ....   以及/和 ......

2. 狭义地(More narrowly) 指  核心软件,它(that)  管理和分配  计算机资源 (如: CPU, RAM, devices)

Kernel 通常 指 第二种含义。本书中的 operating system 也是 这种含义。

//A of  B   翻译为 “ B的 A"

内核的职责 (Tasks performed by the kernel)

      process scheduling (进程调度)

      Linux 是一个 preemptive multitasking  operating sysytem (抢占式多任务操作系统)。 Preemptive 抢占 意味着 一组管理规则,

 哪些进程能获得cpu 及 能使用多长时间 这些都由 kernel 进程调度来决定 (而不是进程本身)。

   内存管理(Memory management)

   Linux 采用 虚拟内存管理。这个技术有2个主要的优势

   进程被隔离 与另一个进程 ,与内核。所以一个进程不能 读 或修改 另一个进程 的  或 内核的  内存。

   A are   ..ed  . from  B  .  and from .. c   ->  

   只需要进程的一部分被保存在内存中, 这使 降低了 进程对每个内存的 需求量,并且允许(allowing)  RAM 可以同时拥有 更多的进程

   by the standards of a decade or two gage   以 一二十年前的标准来看

  提供了文件系统(Provision of a file system)

 创建 终止 进程 (Creation and termination of  processes)

   内核可以将 一个 新程序 加载到内存 ,并 为它分配资源 (如 CPU ,内存, 访问文件);一旦 一个进程 结束了执行,kernel 会确保它使用的资源被释放,为了之后的程序 可以重新使用。

访问设备(Access to devices)

   计算机外接设备(如 鼠标,键盘,硬盘 等)

网络(Networking)

提供系统调用API (Provision of system call application programming interface(API)

内核态和 用户态 (Kernel mode and User mode)

     现在处理架构 一般都允许 以 至少 两种 模式 去运行 CPU  : 用户模式 和 内核模式(Kernel mode  ,也是supervisor mode)。

     相应地,虚拟内存 也被 标记为 user space  和 kernel space 。当 CPU 运行在user mode , CPU 仅仅可以访问被标记为user space 的内存;尝试去访问 kernel space ,将会导致硬件异常。当CPU运行在kernel mode,CPU 可访问 内存的 user space 和memory space。

当处理器在 kernel mode 下运行,才能执行特定的操作。这样的例子包括: 执行(hat instruction)去 停止系统,访问 内存管理 硬件,初始化 I/O 操作的初始化。这确保了 user proccess 不能访问内核执行 和内核数据结构,也无法执行 操作系统不建议的操作。

系统的 进程视角 vs  系统的 内核视角(Process versus kernel views of the system)

    在许多的日常编程任务中,我们习惯于 以 面向进程(process-oriented) 的方式来编程。然而 转变我们的观点 “以kernel的角度“来考虑 是很有用和必要的。为了凸显两者的差异,我们从 进程的角度 和 内核的角度 来 看看系统。

    从进程角度看:一个运行着的系统通常有许多的进程。对于一个进程来说,许多 事情 异步地发生。一个执行中的进程,它不知道:退出占有cpu是何时,哪一个其它的进程 将会被CPU 调度、并且也不知道以何种顺序被调度,它下次什么时候被调度。信号的传递 和 进程间通信事件的触发 都有内核协调, 对进程而言在任何时候都可能发生。许多事情 的发生对进程来说 都是透明的,进程一无所知。进程不知道它 在 RAM中的位置,更通用的说法是,进程空间的某块特定部分是 驻留在内存中 还是被保存在交换空间李,进程本身不知道。类似地 ,进程也不知道 它访问的文件在硬盘的何处,它只是通过名称来访问。进程操作 处于 隔绝状态,与另一个进程的交流不是直接地。进程不能够创建进程,哪怕自我 结束 也不能。最后,进程不能够 直接地 和外部的 输入输出设备交流。

从内核角度看:内核控制着每一件事。内核决定哪个进程下次将获得CPU的访问权,及何时他将执行,及使用多长时间。内核维护了数据结构,这个数据结构的信息包含了所有运行着的进程 ,这个数据结构 随着进程被创建,更新,结束 而被更新。内核维护者底层数据结构,它使 文件名 转换为 硬盘上实际的存储的位置。内核也维护者这样的数据结构,它维护着 每个进程的虚拟内存 和 计算机物理内存及交换区 的映射关系。内核 会响应 进程的请求,创建进程,终止进程。内核负责  和 输入 、输出设备的通信。

    在本书后续,我们常说 如“ 进程 可以创建另一个进程, 一个进程可以创建管道(pipe),一个进程可以写数据到 文件,一个进程可以通过调用 exit() 来终止。记住,以上,都是内核 来协调 如此这些 动作, 这些描述语句 都是 “一个进程可以请求内核创建另一个进程”,以此类推。

Shell

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章