cpu寄存器和程序计数器记录了当前运行任务的行数、状态等信息,简单来说就是cpu上下文。
根据任务的不同,cpu的上下文切换分为进程上下文切换、线程上下文切换、中断上下文切换。
在这里先简单介绍下进程和线程的区别:
Linux进程线程都是用结构体 task_struct 来定义的,所以其实Linux里其实没有严格的进程和线程之分,线程也称为轻量级进程,通过pthread_create可以看出线程可以在cpu上单独运行,进程有独立的地址空间,线程没,进程地址空间管理使用struct mm_struct *mm, *active_mm;
task_struct详见include\linux\sched.h.
struct task_struct {
#ifdef CONFIG_THREAD_INFO_IN_TASK
/*
* For reasons of header soup (see current_thread_info()), this
* must be the first element of task_struct.
*/
struct thread_info thread_info;
#endif
/* -1 unrunnable, 0 runnable, >0 stopped: */
volatile long state;
/*