一、体系结构以及基本概念

来源:互联网 发布:引物分析软件 编辑:程序博客网 时间:2024/06/01 07:26
1.   关于操作系统:
       a. 定义:
            i.   是一种软件;
            ii.  控制计算机的硬件资源;
            iii. 为应用程序提供运行的环境;
       b. 本质:通过对硬件资源的管理为应用程序提供大量的服务;
       c. 通常的服务包含:打开文件、读文件、启动程序、分配存储空间、获得当前时间等等;

2.   基于上述定义的操作系统的严格定义:

       a. 由于操作系统只负责上述这些功能,而不提供窗口/用户和操作系统直接交互等功能,因此诸如此类功能都需要开发另外的软件来提供;

       b. 基于此原因,操作系统严格来说叫作“内核”,而其他诸如命令行终端/酷炫的操作界面等都只能叫作“内核周边软件”,简称“周边软件”;

3.   Unix操作系统体系结构:
       a. 如图所示:......
       b. 任何程序(软件)都是无法和内核直接进行交互,因此内核开发者必须提供一层系统调用作为内核和外围程序以及用户的交互介质;

       c. 由于公用标准函数库都必须建立在系统调用之上(及这些函数的实现必须通过调用系统函数来完成,比如malloc函数就必须通过系统调用中的内存开辟函数来实现);

       d. shell是一种特殊的应用程序,其内容就是指令的集合,而指令的本质就是一个个应用程序,只不过是通过在命令行中键入命令的方式来执行这些程序,而命名则可以看成这  些程序的名字;          

           注:shell不等于函数,一个shell可以包含多个程序(即多条指令),而每个程序可能包含多个函数;

                  !!!即shell是程序的接口,而函数库是函数的接口,系统调用也是一个函数库!!!

       e. 应用程序位于最外层,同时建立在shell/公用函数库、系统调用之上,是通过调用这三者实现的,这也是我们平时接触到的各种五花八门的应用程序(比如酷狗、CS等),其实是最上层结构,而内核是底层结构;

       f. 内核以外的所有程序都为周边程序,包括系统调用;
       g. 举例:比如所有GNU操作系统使用的内核都是Linux,因此严格来讲这种操作系统应成为GNU/Linux,但通常也简称为Linux;
       h. 通常操作系统的名称应该由两部分组成,前者为Shell名,后者为内核名,比如Ubuntu/Linux等等;

4.   口令文件以及Shell:
       a. Shell是一种命令解释器,用户向shell输入命令然后shell再执行这些命令相对应的程序;
       b. Shell有两类,一类是字符Shell,比如一些老版本的Linux内核操作系统,开机来以后就只有一个终端,不能使用鼠标,因此用户键入的字符都将看作命令来解释;还有一类是图形Shell,因为可以使用鼠标,因此将会把用户对鼠标的点击、移动以及键盘的键入都当作命令来解释,现在基本上都是图形Shell;
       c. Shell命令的输入:
           i.   交互式Shell:通过终端输入Shell命令,比如ls、pwd等;
           ii.  Shell脚本:将Shell命令事先卸载一个文件中,然后在执行某个程序时让它启动该脚本来执行里面的Shell命令;
       d. Unix以及Linux都是多用户的,并且系统会根据不同的用户提供不同的Shell(同一个内核可以对应多个Shell!!!);
       e. 常见的Shell:
            i.   Bourne Shell:所有Unix系统都提供该Shell;
            ii.  C Shell:所有BSD版本都提供该Shell,其语言类似于C语言,最为著名的三个BSD版本为openBSD、freeBSD、netBSD;
            iii. Korn Shell:SVR4中提供;
            iv.  Bourne-again Shell:GNU操作系统提供的Shell,因为GNU的内核都是Linux,因此这也是所有Linux操作系统提供的Shell;
            v.   TENEX C Shell:TENEX系统的Shell;
           注:现在的类Unix操作系统基本上的Shell都提供了,全部都存放在/bin目录中,属性都是脚本文件,颜色为蓝色,比如Ubuntu系统登录来以后所看到的整个图形界面以及终端都是由/bin目录中的/sh脚本提供的,而sh脚本里面就包含了Bourne-again Shell(最为基础的部分,可能只包含非图形界面的终端,而图形界面部分的Shell由Ubuntu公司提供,都一并加在来sh文件中了);
          !!如果你觉得Shell不满足你的要求,你可以在网上下载一些你想要的Shell,然后将其放入/bin目录中同时做一些配置工作就可以用了;
       f.  口令文件:
            i.   该文件包含来系统中各个用户的信息(即登录信息);
            ii.  该文件位于/etc目录中,绝对路径为/etc/passwd,用vi打开;
            iii. 里面存了各个用户的登录信息,以其中一个为例(就拿我的来说):
                 是由七个部分组成的,相互之间用冒号隔开,每个用户的信息各占一行:
                  irx     :                   x       :     1000          :       1000                       :        Lin.P&W                        :      /home/irx          :       /bin/sh
                  用户登录名    登录密码    用户ID的数值    用户所在组的ID的数值    注释(一般为用户的昵称)    用户私有目录的根    用户的Shell的路径
            iv.  其中最后一项决定了该用户将启动什么Shell;