标签:两种 expand linu span 更新 情况 inux 驱动器 cos
本文将介绍一系列与Linux系统编程有关的概念。
广义指完整的软件包,这包括用来管理计算机资源的核心层软件,以及附带的所有标准软件工具,诸如命令行解释器、图形用户界面、文件操作工具和文本编辑器等。
狭义指管理和分配计算机资源(即CPU、RAM和设备)的核心层软件。
术语“内核“通常是第二种含义,"操作系统”一般也是这层意思。
内核为管理计算机的有限资源所提供了软件层。
现代处理器架构一般允许CPU至少在两种不同状态下运行,即:用户态和核心态(有时也称之为监管态)
用户态 User mode
CPU只能访问被标记为用户空间的内存,试图访问属于内核空间的内存会引发硬件异常。
内核态 kernel mode
当运行于核心态时,CPU既能访问用户空间内存,也能访问内核空间内存。
只有当处理器在核心态运行时,才能执行某些特定操作,比如宕机(halt)指令去关闭系统,访问内存管理硬件,以及设备I/O操作的初始化等。这确保了用户进程既不能访问内核指令和数据结构,也无法执行不利于系统运行的操作。
在完成诸多日常编程任务时,程序员们习惯于以面向进程(process-oriented)的思维方式来考虑编程问题。然而为了更高视角看问题,有必要转换视角,站在内核的角度上来看问题。
对进程来说,许多事件的发生都无法预期。
内核则是运行系统的中枢所在,对于系统的一切无所不知、无所不能,为系统上所有进程的运行提供便利。
由哪个进程来接掌对CPU的使用,何时“接任“,“任期“多久,都由内核说了算。
在内核维护的数据结构中,包含了与所有正在运行的进程有关的信息。随着进程的创建、状态发生变化或者终结,内核会及时更新这些数据结构。
内核所维护的底层数据结构可将程序使用的文件名转换为磁盘的物理位置。
此外,每个进程的虚拟内存与计算机物理内存及磁盘交换区之间的映射关系,也在内核维护的数据结构之列。
进程间的所有通信都要通过内核提供的通信机制来完成。
响应进程发出的请求,内核会创建新的进程,终结现有进程。
最后,由内核(特别是设备驱动程序)来执行与输入/输出设备之间的所有直接通信,按需与用户进程交互信息。
shell是一种具有特殊用途的程序,主要用于读取用户输入的命令,并执行相应的程序以响应命令。有时,人们也称之为命令解释器。
术语登录shell(login shell)是指用户刚登录系统时,由系统创建,用以运行shell的进程。对UNIX系统而言,shell只是一个用户进程。
纵观UNIX历史,出现过以下几种重要的shell。
标签:两种 expand linu span 更新 情况 inux 驱动器 cos
原文地址:https://www.cnblogs.com/kaide/p/14407999.html