进程和线程

进程

进程包括进程上下文、代码、数据、栈。

Process = process context + code, data, and stack

线程

一个线程包括栈、线程上下文。线程上下文包括寄存器、条件码、栈指针、程序计数器、唯一的一个整数线程ID。

同一个进程的线程共享代码、数据和内核上下文。

Process = thread + code, data, and kernel context

拥有多线程的进程

  • 每个线程拥有自己的逻辑控制流

  • 每个线程共享相同的代码、数据、内核上下文

  • 每个线程有独立的栈。实际上也能从其他线程访问。

  • 每个线程有自己的线程ID

切换线程是一种非常低开销的操作,因为只需要替换线程上下文,这只是一小部分数据。

每次执行fork都是创建了一个完成的继承结构,而线程只是池。可以将线程是为访问相同代码和数据的并发流池,内核负责调度这些流,以某种方式让每个流程在处理器上获得时间。

参考资料

《深入理解计算机系统》视频课23节 并发编程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值