一、进程 线程 概念
本文不做过多解析概念。
名词的指代,以及形容词的描述,本文推荐以下两篇文章。这两篇文章很好的从两个角度解释了进程及线程
1. 线程和进程的区别是什么? - zhonyong的回答 - 知乎 https://www.zhihu.com/question/25532384/answer/81152571
2. 阮一峰 http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html
二、协程
续上进程线程的其他部分知识:
每个进程都会有两个堆栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间
线程是进程中的执行体,有一个执行入口,以及从进程虚拟地址空间中分配的栈:用户栈、内核栈
线程获得CPU时间片后才可以被执行,CPU的寄存器也会切换或指向到这个线程的信息,从线程的执行入口开始执行
协程就是线程创建的内部的执行体(可以创建多个),位于用户栈(用户程序不能操作内核空间,所以也叫用户态线程)也具有标识符,执行栈位置,执行现场,执行入口等,有了这些信息就可以进行切换,保存,恢复等操作
操作系统对于协程是不知且无感的