提一嘴上下文切換 ,上下文切換是一個過程 ,從任務保存到再加載的過程就是一次上下文切換
線程和進程上下文切換的區別
進程切換需要分兩步
1.切換頁目錄以使用新的地址空間
2.切換內核棧和硬件上下文
對於linux來說,線程和進程的最大區別就在於地址空間。
對於線程切換,第一步是不需要做的,第二步是進程和線程切換都要做的,所以進程對此比線程切換代價大。
調度
進程調度,切換進程上下文,包括分配的內存,數據段,堆棧段等
線程調度,切換線程上下文,主要切換堆棧,以及各寄存器(同個進程里的線程 堆棧不同)
協程,(輕量級線程) 每個協程都自帶一個棧,協程就是一個函數和這個函數運行時數據的棧