Linux进程理解( 二 )


管理
上面我们谈到了管理一词,这是OS最主要的功能.我们需要好好的理解什么是管理.这里面我举一个例子,在一所高校中存在三种角色.校长,辅导员,学生.校长是管理学校的,他是通过辅导员来管理学生的.这就是管理的意思.
那么这里面我们就有问题了,校长都没有见过我,他管理我?这里我们就要明白了,管理一个人需要和他见面吗?不需要,只要他知道你的数据就可以了.管理的本质就是不要直接面对面管理对象,只要我拿到对象的全部数据就可以了,本质是对数据的管理.
描述 + 组织
管理核心理念是描述+组织,那么这两个究竟是什么?人类认识世界就是通过属性来的,我们抽象出世间的已切,并把他们通过某种方式组织起来.
对于一个校长,他想要了解张三同学的情况,那么这个学校的张三那么多,他可不知道哪个才是自己想要找的,所以我们肯定需要通过特征来排除,要知道Linux是由C语言写的,而C语言可以描述人特征类型当仁不让的就是结构体所以我们用一个结构体来记录学生的特征.这就是描述.
那么我们已经把学生的信息保存好了,如果校长想要看看这个学期绩点最低的几个学生,那么他不能一个一个去查吧,这里面数据结构就体现出作用了,我们通过一个双向链表来组织所有的学生,这样对学生的管理就变成了对链表的增删查改.这就是组识.
OS再理解
我们需要在理解一下操作系统.现在我们已经知道了OS是管理硬件的一种软件,当然它也可以管理软件,这里先按下不表.
我们先来说一个例子,再C/C++中,我们使用和cout,这是标准宝库里面的一些函数,它的作用是打印数据,向哪打印数据?显示器,那么显示器是硬件吗?是的,也就是说程序可以控制硬件吗?这里就不是了,想一想,我们的/cout都是接口,是OS对外提供的,它可不想让你去直接管理硬件,你只要把自己的需求告诉OS,OS帮你管理,程序是没有资格管理硬件的.
OS如何提供服务
OS是通过系统调用的形式对外提供接口的.
我们知道了OS像银行是不相信任何人的,也就是说我们只能使用一些普通的接口,但是在现实生活总会出现一些年纪比较大的爷爷奶奶,他们不会到银行取钱,这时候银行就又出现另外一种人,接待.你把自己的需求,要去多少钱和接待说一下,他帮你去办,最终你拿到钱就可以了.
这里面就出现了几种角色 , 这里的接待就像是图形化界面或者命令行解释器,爷爷奶奶就是现在的编程小白,他们不懂计算机,但会基本使用,知道点击什么就可以做什么功能.平常会自己取钱的人,就像是初级的编程者,会一些语言,知道lib里面函数的调用进而间接的对接口进行使用.现在我们还要再进一个阶段,我们是不是可以直接调用OS的接口,越过lib,当然不是全部越过去.
进程
我们先说一个粗糙的理解,一个运行的程序就是一个进程.我们知道,自己的可执行程序是在硬盘中的,当它运行时被加载到内存中,这时候他还不是一个进程,不能说进入一个学校,就可以说自己是这个学校的学生.当我们用一个结构体描述了这个程序,他们两个相加才可以理解成一个进程.
PCB
首先我想说的,无论哪个系统说用PCB描述一个进程这句话都是对的,而在Linux中,进程还有另外一个描述,.这个就像媒婆和王婆的区别.
等下我们就可以看看Linux里面的结构体的属性,大家可以先看一下,后面会一一解释.
创建一个进程
简略的说,一个运行的程序就是一个进程,我们这里可以给一个死循环,先看一下.
#include#include int main(){while(1){printf("I am a process\n");sleep(1);}return 0;}