线程和进程的比较
线程=进程-共享资源
线程的优点:
一个进程中可以同时存在多个线程;
各个线程之间可以并发的执行
各个线程之间可以共享地址空间和文件等资源
线程的缺点:
一个线程崩溃,会导致其所属进程的所有线程崩溃。
进程是资源分配单位,线程的cpu调度单位
进程拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈;
线程同意具有就绪 阻塞 和执行三种基本状态,同样具有状态之间的转换关系
线程能减少并发执行的时间和空间开销:
线程的创建时间比进程短
线程的终止时间比进程短
同一进程内的线程切换时间比进程短
由于同一进程的各线程间共享内存和文件资源,可 直接进行不通过内核的通信
线程的实现
用户线程与内核线程的对应关系
多对一
一对一
多对多
用户线程
在用户空间实现的线程机制,它不依赖于操作系统的内核,由一组用户级的线程库函数来完成线程的管理,包括进程的创建 终止 同步和调度
用户线程缺点:
如果线程发起的系统调用而阻塞,则整个进程在等待
当一个线程开始运行后,除非他主动的交出cpu的使用权,否则他所在的进程当中的其他线程将无法运行
内核线程
是指在操作系统的内核当中实现的一个线程机制,由操作系统的内核来完成线程创建 终止和管理
轻量级进程
它是内核支持的用户线程。一个进程可有一个或多个轻量级进程,每个量级进程由一个单独的内核线程来支持
创建新进程
用fork和exec创建进程的示例
int pid = fork();
if(pid==0){
}
fork()创建一个继承的子进程
复制父进程所有的变量和内存
复制父进程所有的CPU寄存器
fork()的返回值
子进程的fork()返回0
父进程的fork()返回子进程标识符
fork()返回值可方便后续使用,子进程可使用getpid()获取PID

402

被折叠的 条评论
为什么被折叠?



