Minix进程间通信分析

进程间通信(IPC: Inter-Process Communication), 可以直接理解为进程间互相发送消息,进程间互相发送消息的方式有很多,比如消息传递,管道,共享内存等都可以,本文主要分析消息传递方式在Minix内核中是如何工作的。

为什么需要进行进程间通信?宏、微内核系统调用区别?

进程A要给B发送消息,说明进程A有求于进程B,A和B共同协作才能完成一项任务,如何只有A是完成不了的。
举个实际点的例子,在Linux中用户进程是不能直接操作内存的,申请内存要经过系统调用进程内核态来申请,然后把申请的结果返回给用户进程,从刚才描述可以看出来,用户进程执行到申请内存这个操作时,把控制权交给内核,由内核分配内存,返回结果后,控制权返回给用户进程,用户进程继续执行.
比如 void *addr = malloc(10);, 执行到这一句时,就要陷入内核态了,由内核完成工作。

也就是说,只有用户进程是完成不了工作的,它要申请内存,但它没有这个权限,必需要要由内核来完成,上面就相当于用户进程与内核协作完成了工作。

在微内核OS中,上面所说的申请内存的操作只有用户进程同样不能完成,也需要其他模块的协作(比如叫内存管理模块),当用户进程执行到申请内存的操作时,会给内存管理模块发送一个消息,告诉它谁要申请内存,申请多大的内存,然后内存管理程序收到消息,分配内存后,把结果放到消息中,发送回用户进程,用户进程继续执行。

在这里,是由用户进程和内存管理模块协作完成工作的。

从上面宏内核与微内核进行内存申请过程的描述,可以看出它们的区别:
宏内核在上面过程中是没有进行进程间通信的(只有一个用户进程)

在这里插入图片描述

微内核在用户进程与内存管理模块(也是一个进程)间进行了通信才完成的工作。

在这里插入图片描述

本图只是表达,内存管理模块已经不在是在内核中的࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值