一、什么是进程?
1.定义
简单来说进程就是运行的程序。
或者:其中运行着一个或者多个线程的地址空间和这些线程所需要的系统资源
2.进程的结构
进程有自己的变量、栈空间、环境空间、程序计数器
但是共享程序代码和系统函数库
二、什么是线程
1.定义
一个程序的多个执行路线叫做线程thread
或者:线程是一个进程内部的一个控制序列
2.线程与进程的区别
一个用fork创建的进程拥有自己独立的变量,PID,时间调度也是独立的。
而线程独立拥有自己的栈,但是与创建者共享全局变量、文件描述符、信号句柄、当前目录状态等。
三、通信的问题
1.进程之间的通信
管道:相关的程序之间传递数据,这些程序由一个共同的祖先进程启动。
命名管道(name pipe) 或者叫FIFO文件:不相关的进程
IPC(Inter-Process Communication)机制:包括
信号量: p操作进入时减一 v操作退出时加一
共享内存
消息队列:类似命名管道,但是独立于发送和接受程序存在
套接字
2.线程之间的通信
信号量semaphore 二进制信号量 与计数信号量
互斥体 mutex