linux什么时候调度线程
那情形可多了去了。
正常情况下,定时器中断到来的时候,如果当前进程时间片用尽,就要调度; 其他中断到来的时候,要进行调度,陷入内核; 进程主动要求调度的时候(如fork新线程、睡眠等等),要进行调度; 程序运行产生异常,无法继续运行,内核处理完异常恢复运行也要进行调度。还有其它各种情况,我一时也无法总结全,总之,内核“一言不和”就要进行调度……用户级线程是cpu调度的基本>单元/h2>
用户级线程在前面有说过,进程是操作系统中拥有资源的基本单位,进程就是资源+一个或者多个指令序列构成的,而线程则是CPU调度操作的基本单位,每个线程都有一段指令序列。

线程的切换,只需要切换PC(Program Counter)程序计数器的地址便可以实现,因为只切换线程的话,他们属于同一个进程,则他们的映射表是相同的,不需要对资源进行切换;而进程的切换,除了要对PC地址的切换外,还需要将每个进程所
多核cpu是怎么线程调度的
首先,感谢作者的邀请,希望能成为优质回答,如果觉得回答的还行,请关注我,嘻嘻...
计算机cpu与多线程
进程和线程:进程包含线程,一个进程中包含多个线程.线程是cpu调度和分配的基本单位,进程是操作系统进行资源分配(cpu,内存,硬盘io等)的最小单位.
单核cpu:实现多进程依靠于操作系统的进程调度算法,比如时间片轮转算法,比如有3个正在运行的程序(即三个进程),操作系统会让单核cpu轮流来运行这些进程,然后一个进程只运行2ms,这样看起来就像多个进程同时在运行,从而实现多进程.
多线程其实是最大限度的利用cpu资源.一个拥有两个线程的进程的执行时间可能比一个线程的进程执行两遍的时间还长一点,因为线程的切换也需要时间.即采用多线程可能不会提高程序的运行速度,反而会降低速度,但是对于用户来说,可以减少用户的响应时间.
多核cpu:什么是多核cpu?多核cpu是一枚处理器中集成多个完整的计算引擎(内核).
多核cpu和单核cpu对于进程来说都是并发,并不是并行.
但是多核cpu每一个核心都可以独立执行一个线程,所以多核cpu可以真正实现多线程的并行.比如四核可以把线程1234分配给核心1234,如果还有线程567就要等待cpu的调度.线程1234属于并行;如果一会核心1停止执行线程1改为执行线程5,那线程15属于并发.
java多线程
JVM多线程与多核cpu:java中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域main memory,而每个线程又单独的有自己的工作内存,当线程与内存区域进行交互时,数据从主存拷贝到工作内存,进而交由线程处理(操作码+操作数).
由于Java 虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)只会执行一条线程中的指令.所以多核cpu情况下多个线程会在多个核心上调度.
0
打个比喻:
假设1个CPU是一个人,
那么1个人一会喝水,一会又去打字。然后,喝水喝到一半,还没来得及咽下去,就伸手打一个字,还没打完,又停下来,咽口水下去。这就是多线程了。CPU切换速度快,看起来是一起运行的,实际上是不停 的切换。
多个cpu就相当于多个人,并行的话,打个比方,就像多个人一起去搬砖一样。
多线程并不是建立在有多少个CPU的基础上进行工作,多线程主要是通过CPU的时间片技术实现,比如在1S的时间内,在第一个0,1S处理一个线程的
工作,然后会储存好当前线程的工作状态,在下一个0.1S处理另一个线程的工作,每个时间都只能处理一个线程,只不过CPU的切换速度非常的快,
我们察觉不到而已,这其实是一种伪并行,而多核的CPU则是说我们每个核都可以单独的处理一个线程,这样的话处理速度自然就比单核的来说要快了







