第二章 基本概念

来源:互联网 发布:网络资讯免费资讯 编辑:程序博客网 时间:2024/05/17 06:27

第二章 基本概念

         前面第一章我们主要讨论了Unix的历史,这一章主要是对这本的书的一个整体概括,介绍了Unix/Linux中涉及到的各种基本概念。实际上对于学过系统结构这门课的人,对于这本书所涉及到的概念都会有所了解。这里无非就是帮助大家回忆一下。

         2.1 操作系统核心--内核

       操作系统实际上有两种不同的概念,一种是广义的、一种狭义的。
       广义的操作系统是指:完整的软件包,既包括管理计算机资源的核心层软件也包含各种附带工具。诸如:各种文本编辑器、文件读写工具。
       狭义的操作系统是指:管理和分配计算机资源的核心层软件。
       注意Linux的内核命名vimlinuz, 最后一个字母z表示内核是经过压缩的。
       内核的作用:进程调度、内存管理、文件系统、创建和终止进程、设备访问。同时Linux这种多用户的操作系统还有一个有点,就是多用户操作系统,每个用户可以登录进入系统,独立操作,且与其他用户不相干。每个用户都有自己特有的目录、存储空间,都可以运行自己的程序。而多用户资源分配的问题,则由内核来进行管理。
       现在的操作系统一般允许CPU至少在2种不同的状态下运行。一种是内核态、一种是用户态。与之相对应的把虚拟内存划分为用户区域和内核区域。CPU处在用户态下,只能访问用户区域的内存。处在内核态下,可以访问核心区域和用户区域的内存。

         2.2 Shell

       shell是一种具有特殊用途的程序,主要用于读取用户的输入命令,并执行相应的程序以响应命令。现在的Shell种类繁多,主要有Bourne Shell(sh),C Shell,Korn(csh) Shell,Bourne again shell(bash).在这四种Shell中,各有优缺点,当前用的最广泛的是bash了。

        2.3 用户和组

       Linux的一个特点就是用户和组。虽然Windows系列也有用户和组的概念,但是和Linux的比起来。Linux的应用的比较广泛。
       系统的每个用户都拥有唯一的登录名和与之对应的整数用户ID,系统的/etc/passwd为每个用户都定义了一行记录。这个文件除了用户名和ID外,还有组ID,用户自己的目录名称还有登录的shell。
     处于管理的目的,尤其是为了控制对文件和其他资源的访问,将多个用户分组是非常实用的做法。每个用户组对应这系统组文件/etc/passwd中的一行记录,该记录信息包括:组名、组ID、用户列表。
     超级用户在系统中享有特权。超级用户的账户ID为0,通常为用户id为0.无论文件以何种访问权限限制,超级用户都可以访问系统中的任何文件。系统管理员可以使用超级用户账户来执行各种系统管理任务。

       2.4 目录的层级、目录、链接及文件

      Linux和Window的文件系统不太一样。Linux维护着一套单根目录结构,这一目录层级的根基就是为"/",所有的文件和目录都是根目录的“子孙”。
      在Linux系统中的文件是一个广义的概念,不仅是指那些用来表示普通数据文件还包括设备、管道、套接字、目录以及符号链接。
      目录是一种特殊类型的文件,内容采用表格形式,数据项包括文件名以及对应文件的引用。每个目录至少包含两条目录“.”和".."。前者指向目录自身的链接,后者指向其上级目录--父目录的链接。
      符号连接类似于普通链接,符号链接给文件起了一个别名。在目录列表中,普通连接为文件名+指针的一条记录。符号连接则是经过特殊标记的文件,内容包含了另外一个文件名称。通常我们说符号连接引用或者指向目标文件。通常人们分别使用硬链接和软链接这样的术语指代正常链接和符号链接。

      2.5 文件I/O模型

      Unix/Linux模型最为显著的特征为I/O通用的概念。同一套系统调用所执行的I/O操作,可用于所有的文件,包括设备在内。对于应用程序发出的I/O请求,内核将会将其转化为相应的文件系统操作,或者设备驱动程序,以此来执行针对目标文件或者I/O设备的操作。就本质而言内核只提供一种文件类型:字节流序列,许多应用程序都讲新行符(ASCII码为10)视为文件中一行或者另外一行的开始。Unix系统没有文件结束符的概念,读取文件如果没有数据返回,便认为抵达文件末尾。
     I/O系统调用使用文件描述符--非负整数--来表示打开的文件。通常Shell启动的进程会继承3个已打开的文件描述符:0表示标准输入,1表示标准传输,2表示标准错误输出。

     2.6进程

     进程就是正在运行程序的实例。执行程序时,内核会将程序代码载入虚拟内存,为程序变量分配空间,建立内核记账数据结构。从内核来看进程就是一个个实体,内核必须在它们之间共享各种计算机资源。
     从逻辑上一个进程可以划分为以下几个部分:文本,程序的指令。数据,程序使用的静态变量。堆,程序可以从该区域动态分配额外的内存。栈用于为局部变量和函数调用连接信息分配存储空间。
     进程终止可以使用以下两种方式之一来终止一个进程:其一,进程可以使用_exit()的系统调用,请求推出;其二,向进程传递信号,将其“;杀死”。在调用_exit()的情况下,进程会指明自己的终止状态。若由信号来杀死进程,则会根据导致进程死亡的信号类型来设置进程的终止状态。按照惯例,终止状态0表示进程“功成身退”,非0表示有错误发生。

    2.7 /proc文件系统

      /proc文件系统是一组虚拟的文件系统,以文件系统目录和文件形式,提供了一个指向内核数据接口。这为查看和改变各种系统属性开启了方便之门。此外,还能通过一组/proc/PID形式命名的目录查看系统中运行中的相关信息。
   


             
0 0
原创粉丝点击