操作系统八股文|进程和线程,实现,协程定义,和多线程比较

本文深入探讨了进程、线程和协程的区别与实现,重点介绍了协程的原理和优势。进程是资源分配单位,线程是CPU调度单位,而协程更轻量级,能有效避免线程切换带来的开销。在面对大量IO操作时,使用协程可以提高性能并减少内存消耗。然而,协程在调用阻塞IO时可能导致整个线程阻塞,需谨慎处理。此外,协程在计算密集型任务中作用有限。了解协程的工作机制和注意事项,有助于在并发编程中做出更好的选择。
摘要由CSDN通过智能技术生成

进程和线程

**进程是资源分配的最小单位,而线程是CPU调度的最小单位。**多线程之间共享同⼀个进程的地址空间,线程间通信简单,线程创建、销毁和切换简单,速度快,占用内存少,但是线程间会相互影响,
⼀个线程意外终止会导致同⼀个进程的其他线程也终止。而多进程间拥有各自独立的运行地址空间, 进程间不会相互影响,程序可靠性强,但是进程创建、销毁和切换复杂,速度慢,占用内存多,进程间通信复杂。

进程和线程的实现

在内存中都会有⼀个 task_struct 进程描述符与之对应。进程描述符包含了内核管理进程所有有用的信息,包括调度参数、打开文件描述符等等。进程描述符从进程创建开始就⼀直存在于内核堆栈中。Linux 是通过 PID 来区分不同的进程,内核会将所有进程的任务结构组成为⼀个双向链表。PID能够直接被映射称为进程的任务结构所在的地址,从而不需要遍历双向链表直接访问。
从内核来讲,并没有线程的概念,linux 把线程当做进程来实现。内核并没有特殊的调度算法或者定义特别的数据结构来表示线程。线程仅被看做⼀个与其它进程共享某些资源的进程。每个线程都拥有唯⼀属于自己的task_struct,所以在内核中,它看起来像是⼀个普通的进程(只是它和其他⼀些进程共享某些资源)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习记录wanxiaowan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值