淮安做网站的有多少钱,淘宝seo优化推广,在线图表生成器,wordpress后台管理菜单改名1.什么是操作系统#xff1f;
从严格意义上说#xff0c;可将操作系统定义为一种软件#xff0c;它控制计算机硬件资源#xff0c;提供程序运行环境。我们通常将这种软件称为内核#xff08;kerel)#xff0c;因为它相对较小#xff0c;而且位于环境的核心。
从广义上…1.什么是操作系统
从严格意义上说可将操作系统定义为一种软件它控制计算机硬件资源提供程序运行环境。我们通常将这种软件称为内核kerel)因为它相对较小而且位于环境的核心。
从广义上说操作系统包括了内核和一些其他软件这些软件使得计算机能够发挥作用并使计算机具有自己的特生。这里所说的其他软件包括系统实用程序system utility、应用程序、shell以及公用函数库等。
2.UNIX体系结构
下图显示了UNIX系统的体系结构 内核的接口被称为系统调用system call图1-1中的阴影部分。公用函数库构建在系统调用接口之上应用程序既可使用公用函数库也可使用系统调用。shell是一个特殊的应用程序为运行其他应用程序提供了一个接口。
例如Linux是GNU操作系统使用的内核。一些人将这种操作系统称为GNU/Linux操作系但是更常见的是简单地称其为Linux。虽然这种表达方法在严格意义上讲并不正确但鉴“操作系统”这个词的双重含义这种叫法还是可以理解的这样的叫法更简洁。 系统调用我们之前讲过这个公用函数库我们也讲过那么我们只需要来了解一下内核和shell 3. 什么是内核Kernel
内核是操作系统的核心。内核是操作系统执行的第一道程序被率先加载到内存中开始系统行为。内核始终保持在主内存中直到系统被关闭。内核将用户输入的命令转换成计算机硬件能理解的机器语言。
内核是系统应用软件和硬件的桥梁。内核直接与硬件联系并告之它由应用软件发起的请求。操作系统不能脱离内核工作内核是系统正常运行最重要的程序。 内核的主要职责是进程管理、磁盘管理、任务调度、内存管理等具体如下 文件管理 为了更有效地搜索和使用文件内核使用文件系统(file system)来组织文件并通过文件系统保持对文件数据存储、文件状态、访问设置的监视。 进程管理 在多进程环境下内核决定哪一道进程被CPU优先运行以及分配的运行时间片长度是多少称为进程调度。当进程不再被需要的时候将被内核自动销毁。 内存管理 内核检测内存空间——生成或销毁内存以确保应用程序被正确执行。 内核分为单核(Monolithic Kernel)和微核(Microkernel)两种。
对于单核所有操作系统服务运行在单核的主线程中单核提供了对系统硬件的广泛访问。对于微核其提供的是硬件抽象意味着操作系统必须在系统调用(system calls)和原语(primitives)的帮助下工作。
3.1.操作系统和内核的区别 4.什么是shell
我们把上面那个图拿下来 shell是操作系统的最外层是一个用户跟操作系统之间交互的命令解释器也就是运行在终端中的文本互动程序。
Shell相当于是一个翻译把我们在计算机上的操作或我们的命令翻译为计算机可识别的二进制命令传递给内核以便调用计算机硬件执行相关的操作同时计算机执行完命令后再通过Shell翻译成自然语言呈现在我们面前。 shell独立于内核是链接内核和应用程序的桥梁通俗来讲shell是内核周围的外壳
UNIX中常见的shell 名称路径FreeBSD 8.0Linux 3.2.0Mac OS X 10.6.8Solaris 10Bourne shell/bin/shbash的副本Bourne-again shell/bin/bash可选的C shell/bin/csh链接至tcsh可选的链接至tcshKorn shell/bin/ksh可选的可选的TENEX Cshell/bin/tcsh可选的 系统从口令文件中相应用户登录项的最后一个字段中了解到应该为该登录用户执行那 个 shell。 4.1.shell的作用 Linux严格意义上说的是一个操作系统我们称之为“核心kernel“ 但我们一般用户不能直接使用kernel。 而是通过kernel的“外壳”程序也就是所谓的shell来与kernel沟通。 如何理解为什么不能直接使用kernel 我们所有的指令最终都要在OS内部运行但是直接使用OS难度非常高我们用户不能直接和操作系统打交道我们只能通过命令行来进行交互和OS沟通的之间的桥梁就是命令行解释器 shell是用户和Linux或者更准确的说是用户和Linux内核之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。 shell 是一个命令语言解释器command-language interpreter。拥有自己内建的 shell 命令集。此外shell也能被系统中其他有效的Linux 实用程序和应用程序utilities and application programs所调用。 不论何时你键入一个命令它都被Linux shell所解释。 一些命令比如打印当前工作目录命令pwd是包含在Linux bash内部的就象DOS的内部命令。其他命令比如拷贝命令cp和移动命令rm是存在于文件系统中某个目录下的单独的程序。
而对用户来说你不知道或者可能不关心一个命令是建立在shell内部还是一个单独的程序。 shell 首先检查命令是否是内部命令不是的话再检查是否是一个应用程序这里的应用程序可以是Linux本身的实用程序比如ls rm然后shell试着在搜索路径($PATH)里寻找这些应用程序。搜索路径是一个能找到可执行程序的目录列表。如果你键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件将会显示一条错误信息。而如果命令被成功的找到的话shell的内部命令或应用程序将被分解为系统调用并传给Linux内核。 总的来说就是下面这个意思 指令——命令行解释器——os 命令行解释器存在的意义 进行命令行解释保护OS对于用户的非法请求直接拦截 4.2.shell的历史 自V7以来由Steve Bourne 在贝尔实验室开发的Bourne shell得到了广泛应用几乎每一个 现有的UNIX系统都提供Bourne shell其控制流结构类似于Algol68。
C shell 是由 Bill Joy 在伯克利开发的所有 BSD版本都提供这种shell。另外ATT的System V/386 R3.2和 System V R4SVR4也提供Cshell。C shell 是在第6版shell 而非 Bourme shell 的基础上构造的其控制流类似于C语言它支持Bourne shell 没有的一些特色功能例如作业控制、历史机制以及命令行编辑等。
Korn shell 是Bourne shell的后继者它首先在SVR4中提供。Korn shell是由贝尔实验室的David Korn开发的在大多数UNIX系统上运行但在SVR4之前通常它需要另行购买所以没有其他两种shell流行。它与Bourne shell向上兼容并具有使Cshell广泛得到应用的一些特色功能包括作业控制以及命令行编辑等。
Bourne-again shell 是GNU shell所有Linux 系统都提供这种shell。它的设计遵循 POSIX标准同时也保留了与Bourne shell 的兼容性。它支持C shell 和 Korn shell 两者的特色功能。
TENEX C shell 是C shell的加强版本。它从TENEX操作系统1972年BBN公司开发借 鉴了很多特色例如命令完备。TENEXC shell在Cshell基础上增加了很多特性常被用来替换Cshell。
POSIX 1003.2标准对shell进行了标准化。这项规范基于Korn shell和Bourne shell的特性。 不同的Linux系统使用不同的默认shell。 一些Linux默认使用Bourmne-again shell。另外一些使用BSD的对Boumne shell的替代品dash(Debian Almquist shell最早由Kenneth Almquist开发并在后来移植入Linux )。FreeBSD的默认用户shell 衍生于 Almquist shell。Mac OSX的默认 shell是Boume-again shell。 Solaries 继承了BSD和System V两者它提供了上图中所示的所有shell。在因特网上可以找到shell的自由移植版软件。 4.3.什么是shell脚本 shell脚本是shell命令组成的文件。
换一种说法shell脚本是利用shell的功能所写的一个程序这个程序使用纯文本文件将一些shell语法和指令写在里面让使用者很容易的就能够一个操作执行多个命令。
4.4.bash
最开始在Unix系统中流行的是sh而bash作为sh的改进版本提供了更加丰富的功能。
而bash的全名是Bourne Again Shell。
bashGNU Bourne-Again Shell是最常用的一种shell是当前大多数Linux发行版的默认Shell。
Bourne Again shell (bash), 正如它的名字所暗示的是 Bourne shell 的扩展。bash 与 Bourne shell 完全向后兼容并且在 Bourne shell 的基础上增加和增强了很多特性。bash 也包含了很多 C 和 Korn shell 里的优点。bash 有很灵活和强大的编程接口同时又有很友好的用户界面。 为什么要用 bash 来代替 sh 呢 Bourne shell 最大的缺点在于它处理用户的输入方面。在 Bourne shell 里键入命令会很麻烦尤其当你键入很多相似的命令时。而 bash 准备了几种特性使命令的输入变得更容易。