Linux操作系统学习-入门

一、操作系统概述

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

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也支持系统级线程和用户级线程。
 
 三、存储管理
 
 
 
 

你可能感兴趣的:(linux)