1-1_基本概念_内核&shell

讨厌学历史,第一章介绍历史和标准跳过,进入第二章:基本概念

操作系统的核心-内核

  “操作系统”通常包含两种不同的含义。

  1、知完整的软件包,这包括用来管理计算机资源的核心层软件,以及附带的所有标准软件工具,注入命令行解释器、图形用户界面、文件操作工具和文本编辑器等。

  2、在更狭义的范围内,是指管理和分配计算机资源(即CPU、RAM和设备)的核心层软件。

  而内核则通常指第二种含义。一般情况下,会将Linux内核可执行文件命名为/boot/vmlinuz或与之类似的路径名。早期的UNIX实现称其内核为UNIX,在后续实现了虚拟内存机制的UNIX系统中,其内核名称变更为vmunix。对于Linux来说,文件名称中的系统名需要调整,而以“z”替换“linux”末尾的“x”,已在表明内核是经过压缩的可执行文件。

  内核的职责:

  进程调度:Linux数据抢占式多任务操作系统。这组规则控制着哪些进程获得对CPU的使用,以及每个进程能使用多长时间,这两者都由进程调度程序(而非进程本身)决定。

  内存管理:进程与进程之间、进程与内核之间彼此隔离,因此一个进程无法读取或修改内核或其他进程的内存内容;秩序将进程的一部分保持在内存中,这不但降低了每个进程堆内存的需求量,而且还能在RAM中同时加载更多的进程(在任一时刻,CPU都有至少一个进程可以执行,从而使得对CPU资源的利用更加充分。

  提供了文件系统:允许对文件执行创建、或许、更新以及删除等操作。

  创建和终止进程:内核将新程序载入内存,为其提供运行所需的资源。这样一个运行中的程序,我们称之为“进程”。

  对设备的访问:内核既为程序访问设备提供了简化版的标准接口,同事还要仲裁多个进程对每一个设备的访问。

  联网:内核以用户进程的名义收发网络消息(数据包)。该任务包括将网络数据包路由至目标系统。

  提供系统调用应用编程接口(API):进程可医用内核入口点(也成为系统调用)请求内核去执行各种任务。

内核态和用户态

  现代处理器架构一般允许CPU至少在两种不同状态下运行,即:用户态和内核态(有时也称之为监管态supervisor mode)。执行硬件指令可使CPU在两种状态间来回切换。与之对应,可将虚拟内存划分(标记)为用户空间部分或内核空间部分。在用户态下运行时,CPU执行访问被标记为用户空间的内存,师徒访问属于内核空间的内存会引发硬件异常。当在内核态下运行时,二者都可被访问。

  某些操作,仅当处理器内核态运行。比如,执行宕机(halt)指令去关闭系统、访问内存管理软件、以及设备I/O操作的初始化等。实现者们利用这一硬件设计,将操作系统置于内核空间。这确保了用户进程即不能访问内核指令和数据结构,也无法执行不利于系统运行的操作。

shell

  shell翻译为“外壳”、“表面”,在这里,shell是一种具有特殊用途的程序,主要用于读取用户输入的命令,并执行相应的程序以响应命令。有时,人们也称之为命令解释器。

  登录shell(login shell)是指用户刚登录系统时,由系统创建,用以运行shell的进程(对于UNIX系统而言,shell只是一个用户进程)。

  Bourne again shell(bash):这款shell是GNU项目对Bourne shell的重新实现。Bash提供了与C shell和Korn shell所类似的交互式特性。在Linux上,Bourne shell(sh)其实正是bash仿真提供的。

  设计shell的目的不仅仅是用于人机交互,对shell脚本(包含shell命令的文本文件)进行解释也是其中用途之一。为实现这一目的,每款shell都内置有许多通常与编程语言相关的功能,其中包括变量、循环和条件语句、I/O命令以及函数等。

posted on 2017-04-28 15:00  京城妖  阅读(904)  评论(0编辑  收藏  举报

导航