进程和线程
进程概念包括2个特点:
- 资源所有权:进程映像是程序、数据、栈和进程控制块中定义的属性的集合,进程拥有对资源的控制、所有权,包括内存、I/O设备、文件等。
- 调度/执行:一个进程沿着可以通过一个或者多个程序的执行路径(轨迹)执行,其执行过程可能与其他进程交替进行。一个进程具有执行状态和被分配的优先级,是一个可被操作系统调度和分批的实体。
多线程环境中,进程被定义成资源分配的单位和一个被保护的单位。
与进程相关联的有:
- 存放进程映像的虚拟地址空间
- 受保护地对处理器、其他进程(用于进程间通信)、文件和I/O资源(设备、通道)的访问。
每个线程有:
- 线程执行状态
- 在未运行时保存线程上下文。
- 执行栈
- 每个线程局部变量的静态存储空间。
- 与进程内其他线程共享的对进程的内存、资源的访问。
Linux进程和线程管理
线程:
用户级线程被映射到内核级进程上。
一个用户级进程的多个用户级线程被映射到共享同1个组ID的多个linux内核级进程上。可以共享文件和内存资源,同一组中的进程调度切换时不需要切换上下文。
linux中通过复制当前进程的属性可创建1个新进程,克隆出来可以共享资源。当两个进程共享相同虚存时,他们可以被当作一个进程中的线程。linux没有进程和线程区别。
内核执行进程切换时,检查当前进程的页目录地址是否和被调度的进程相同,如果相同则共享同一个地址空间,上下文切换仅仅从代码跳转到代码另一处。
进程/任务,task_struct结构
执行状态: