有人想过为什么minix采用消息机制实现驱动和系统调用吗?
有人说是教学目的。其实我看不然,minix的mm机制决定了它只能使用消息机制来组织TASK,SERVER,KERNEL。
minix的mm只采用了分段技术,没有分页管理,没有交换。
简单的分段技术并不能使用户在用户空间利用陷入来实现系统调用
和驱动,可以说它根本不存在内核空间和用户空间,也没有陷入。
用户进程的内存空间只有文本段、数据段和堆栈段。不象linux的进程空间中
分为用户空间和内核空间。所以为了实现系统调用和驱动,minix只能使用
task进程和server进程的方法,之间利用消息来驱动。每个系统调用,minix
都从用户进程中发送一条消息到实现相应系统调用的task或者server进程中,
让他们完成任务和服务,然后再利用消息返回调用结果。这样的消息机制的好
处是可以使内核相对稳定安全,消息都是经过严格的检查,任何非法的系统
调用都会被消息机制否定。想象一下如果不是利用消息机制而采用直接的
进程间共享(也就是用户可以直接在task、server进程中调用其函数)
正文段,那将是一场灾难。不知道dos的不稳定性是不是这样原因:) 使用消息代替系统调用是微内核系统对宏内核系统的最大改进。
页:
[1]