您的位置:首页 > 运维架构 > Linux

Linux操作系统学习-入门

2010-01-05 17:58 627 查看
一、操作系统概述

操作系统体系结构 分为模块结构、分层结构、对象结构三种。其中模块结构效率最高,但系统的可理解性、可维护性和可移植性都比较差。

Linux内核基本属于模块结构,而MS-DOS系统内核采用的是层次结构,Windows NT/2000及Solaris则是典型的对象结构。

操作系统内核按照其运行的情况可以分为:宏内核与微内核。前者也称为单内核,Linux系统属于单内核类型。对象结构的系统内核通常是微内核,例如,Windows NT/2000系统就是微内核。

Linux内核基本采用模块结构,单内核模式,这使得系统具有很高的运行效率,但系统的可扩展性及可移植性受到一定的影响。为了解决这个问题,Linux使用了附加模块技术。利用模块技术,可以方便地在内核中添加新的组件或卸载不再需要的内核组件,而且这种装载和卸载可以动态进行。但同时也降低了性能。可以说Linux也是采用了很多微内核的特性。

二、处理机管理
几个概念:作业、进程程序。一次作业可能有一个程序完成,也可能由多个完成,这样这次作业就要提交一个或多个程序。
多个程序、这些程序需要的数据以及必要的作业说明一起构成一个作业。一个进程可能包含几个程序,一个程序可能包含几个进程。

按照对作业的处理方式,可以分为联机、批处理等作业。在Linux分时批处理系统中,也可以根据对作业执行时的响应特征分为前台作业和后台作业。

进程是正在执行的程序,是动态的,程序是静态的。

进程和作业:

作业是用户向计算机系统提交一项工作的基本单位,是用户在一次事务处理或计算过程中要求计算机所做工作的总和。进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是操作系统分配资源和进行调度的基本单位。
作业是描述用户向系统提交工作任务的实体单位,而进程是系统完成工作任务时程序执行的实体单位。从这个角度讲,他们处于不同的层次,作业描述用户和操作系统之间的任务委托关系,而进程描述操作系统内部任务的具体执行过程。一个用户的任务,即作业,由用户提交给系统,必须以进程的形式具体完成。

进程切换现场称为进程上下文(context),包含了一个进程所具有的全部信息,一般包括:进程控制块(Process Control Block,PCB)、有关程序段和相应的数据集,一般来讲,PCB记录着进程的所有资料,是全部或部分常驻内存的,PCB记录着程序段和数据集的地址指针,进程描述信息、进程控制信息、进程相关的资源信息和CPU现场保护结构。

Linux的PCB用task-struct结构体描述(Linux中进程称为task)。其中进程描述信息包括进程号(PID,process identifier、用户和组标识以及描述进程家族关系的连接信息。进程控制信息记录了进程的当前状态、调度信息、记时和时间信息以及进程间通信信息。进程资源信息记录了与该进程有关的存储器的各种地址和资料、文件系统以及打开文件的信息等等处理机(CPU)现场信息一般包括处理机的内部寄存器和堆栈等基本数据。

task-struct是Linux系统的进程控制块(PCB),通过对PCB的操作,系统为进程分配资源并进行调度,最终完成进程的创建和撤销。系统利用PCB中的描述信息来标识一个进程,根据PCB中的调度信息决定该进程是否应该运行。如果这个进程要进入运行,首先根据其中的CPU现场信息来恢复运行现场,然后根据资源信息获取对应的程序段和数据集,接着上次的位置开始执行,同时通过PCB中的通信信息和其他进程协同工作。

进程的几种状态,3个回路,以及状态转换过程(条件)



进程状态之间的转换转换通常由三种不同的方式控制:进程控制原语、系统核心函数(比如调度)、和外部事件发生(比如中断)。原语调用可由内核调用,也可由父进程调用。

进程通信:分两种,低级通信,数据量小,实现同步和互斥,控制运行速度;高级通信,数据量大,主要是交换信息。按照通信地位,进程通信分为主从式、会话式、消息或邮箱机制(不建立连接关系)、共享存储区(适合大量数据)。

Linux的进程通信机制包括信号(低级通信,两个主要的signal SIGSTOP SIGKILL,普通进程只能向具有相同uid和gid的进程或者在同一进程组中的进程发送信号。信号是通过设置task-struct结构中signal域里的某一位来产生的。)、管道(继承自UNIX,是一种特殊的文件类型,通过文件系统实现,适合大规模数据传递)、SYStem V(信号量、消息队列、共享内存)、套接字(socket网络)

线程是为了减少进程切换上下文的系统开销而引入的,进程内部线程共享进程资源,因此线程切换效率高。但是在Linux中,线程和进程没有差别,使用相同的描述方法和调度管理。Linux也支持系统级线程和用户级线程。

三、存储管理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: