Nachos-线程具体实现
进程之间有通信的要求,进程之间的关系表现在同步和互斥两方面,其实互斥可以看作是同步的一种特殊情况。
锁机制,信号量,条件变量
实际上锁在面对互斥问题比较好用,面对复杂的同步问题基本无效;而信号量和条件变量面对同步问题非常好用,类似于读者写者问题,生产者消费者问题,哲学家进餐问题。
正文程序段可以被多个进程共享,数据段和堆栈段一般不会被别的进程获取到信息。
线程和进程的区别是什么呢?线程只有自己的运行线索(PC指针和栈空间)而没有自己单独的地址空间,而进程有单独的地址空间,进程是资源分配的最小单位,而线程是CPU调度的最小单位,进程之间的通信有很多进程通信机制,而线程之间的通信因为同一个进程内的线程公用一个地址空间,所以线程间通信很简单。
同族线程之间的数据共享不需要通过内核来完成了,而进程之间的数据通信是要通过内核完成的。
线程为主体的思想可以用在内核程序中,把每一个系统调用看作来自用户的服务请求,内核派生成一个新的线程去处理这个请求,这就是微内核的思想。