linux 线程切换效率与进程切换效率相差到底有多大?

Author:DriverMonkey

Mail:[email protected]

Phone:13410905075

QQ:196568501

Are Linux threads the same as other implementations?

    No. They are better -- while mostly keeping the same API. As stated above, most multithreaded OSs define a thread separately from processes. Linus Torvalds has defined that a thread is a "context of execution" (COE). This means that only
    one process/thread table and one scheduler is needed. Also the scheduler has been optomized so that the switching time for threads vs. tasks varies little--about 1.7us (threads) and 1.8us (fork) on a 75MHz Pentium.

    Traditionally, a thread was just a CPU (and some other minimal state) state with the process containing the remains (data, stack, I/O, signals). This would lend itself to very fast switching but would cause basic problems (e.g. what do "fork()" or "execve()"
    calls mean when executed by a thread?).

    Consider Linux threads as a superset of this functionality: they still can switch fast and share process parts, but they can also identify what parts get shared and have no problems with execve() calls. There are four flags that
    determine the level of sharing:

时间: 2024-12-16 20:17:04

linux 线程切换效率与进程切换效率相差到底有多大?的相关文章

linux 线程切换效率与进程切换效率相差究竟有多大?

Author:DriverMonkey Mail:[email protected] Phone:13410905075 QQ:196568501 Are Linux threads the same as other implementations? No. They are better -- while mostly keeping the same API. As stated above, most multithreaded OSs define a thread separatel

Linux线程相互排斥量--进程共享属性

多线程中.在相互排斥量和 读写锁的 属性中.都有一个叫 进程共享属性 . 对于相互排斥量,查询和设置这个属性的方法为: pthread_mutexattr_getpshared pthread_mutexattr_setpshared 我一開始不理解什么是 进程共享属性. 看了man中的说明例如以下 The pthread_mutexattr_getpshared() function shall obtain the value of the process-shared attribute

Linux 线程及进程总结

1 Linux 中的进程与线程 对于 Linux 来讲,所有的线程都当作进程来实现,因为没有单独为线程定义特定的调度算法,也没有单独为线程定义特定的数据结构(所有的线程或进程的核心数据结构都是 task_struct). 对于一个进程,相当于是它含有一个线程,就是它自身.对于多线程来说,原本的进程称为主线程,它们在一起组成一个线程组. 进程拥有自己的地址空间,所以每个进程都有自己的页表.而线程却没有,只能和其它线程共享某一个地址空间和同一份页表. 这个区别的 根本原因 是,在进程/线程创建时,因

从整理上理解进程创建、可执行文件的加载和进程执行进程切换,重点理解分析fork、execve和进程切换

一.首先我们来看看进程控制块PCB也就是task_struct,(源码) 选出task_struct中几个关键的参数进行分析 struct task_struct {volatile long state; //进程状态 /* -1 unrunnable, 0 runnable, >0 stopped */ void *stack; //进程内核堆栈 atomic_t usage; unsigned int flags; //进程标识符 /* per process flags, defined

Linux内核源码学习之进程切换细节整理

linux中的进程是个最基本的概念,进程从运行队列到开始运行有两个开始的地方, 一个就是switch_to宏中的标号1:"1:/t",//只要不是新创建的进程,几乎都是从上面的那个标号1开始的,而switch_to宏则是除了内核本身,所有的进程要 想运行都要经过的地方 另 一个就是ret_form_fork 这样看来,虽然linux的进程体系以及进程调度非常复杂,但是总体看来就是一个沙漏状, 对于系统中的每个新进程它首次被执行的过程必然是: sys_fork---->do_for

linux内核:进程切换

进程是现代操作系统的核心概念之一,用于分配系统(CPU,内存)资源的使用. 了解linux进程及进程切换的知识,首先要理解进程与程序的区别,进程是执行流,是动态概念:程序是数据与指令序列的集合,是静态概念.进程作为动态的 执行流,可以用execv系统调用自由选择一个程序(只要有权限)来执行的,理解这一点很重要.在阅读本书的第三章<进程>中,有两个地方比较难于理解 的. 1 switch_to宏的last参数 书中讨论switch_to宏(第110页)时,提到,该宏有3个参数:prev,next

Linux内核设计第八周学习总结 理解进程调度时机跟踪分析进程调度与进程切换的过程

陈巧然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.视频内容 Linux系统的一般执行过程 最一般的情况:正在运行的用户态进程X切换到运行用户态进程Y的过程 1. 正在运行的用户态进程X 2. 发生中断——save cs:eip/esp/eflags(current) to kernel stack, then load cs:eip(entry of a specific IS

Linux进程调度(3):进程切换分析

3.调度函数schedule()分析 当kernel/sched.c:sched_tick()执行完,并且时钟中断返回时,就会调用kernel/sched.c:schedule()完成进程切换.我们也可以显示调用schedule(),例如在前面"Linux进程管理"的介绍中,进程销毁的do_exit()最后就直接调用schedule(),以切换到下一个进程. schedule()是内核和其他部分用于调用进程调度器的入口,选择哪个进程可以运行,何时将其投入运行.schedule通常都和一

Linux内核进程调度的时机和进程切换

陈铁+ 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 对于现代操作系统,多任务是必备的,在linux系统下,进程会不断的被内核调度,从X进程切换为Y进程,以实现用户所见到的多任务状态,下面我们就看一看这样的过程,分析一下内核如何对进程调度,以及进程间如何切换. 内核使用schedule()函数实现进程的调度,而通常的用户进程要无法主动调度这个函数,只能通过中断处理过程(包括时钟中断