5、CPU的线程与操作系统的线程有何关系?操作系统中的进程
和线程是什么关系?
CPU中的线程和操作系统(OS)中的线程即不同,在调度的时候⼜有些关联。
CPU中的线程,我们叫它们Thread,和OS中的线程的名字⼀样。它来⾃同步多线程(SMT,Simultaneous Multi-threading)的概念。我们现在在Intel的CPU上看到它,实际上这并不是Intel的发明创造。它最早起源于学术圈,在硬件上IBM实现也⽐Intel早。最早Intel使⽤了这种技术时候就叫做SMT,但后⾯改叫做HT (Hyper Threading),可能是这样更清楚(毕竟最多两个thread,⽐IBM怪物要少),更朗朗上⼝吧。
我们现在看到CPU,很多都⽀持HT,经常看到的2C4T的意思就是2核4线程(core,Thread)。1个内核中的thread是对称的和对等的,在软件上没有任何区别,BIOS也只有通过⼀些特殊⼿段才能区分。实际上,2C4T中的4个thread调度起来没有本质区别,它们都有⾃⼰单独的⾝份证号码:APIC ID。调度起来只要知道别⼈的APIC ID,就⽤⾃⼰的Local APIC寄存器发出两个IPI(Inter-Processor Interrupts)就好了,那个被指明的倒霉蛋就莫名其妙的开始被调度去指定的地址执⾏指令了(尽管是实模式)。当然也可以⼴播IPI让所有别的thread都去执⾏指定任务。更多相关内容见:
实际上CPU中Thead有多少,操作系统并不⾃⼰探测,是BIOS通过ACPI报告给OS的,那么BIOS是怎么知道有多少个Thread呢?就是通过⼴播IPI让各个thread⾃⼰来签到的,是不是很简单?
操作系统中的Thread
OS中的Thread有⾃⼰的栈空间,和同⼀进程中的其他线程共享地址空间等等,这些基本知识因为⼴为⼈所知,这⾥就不罗嗦了。
此Thread⾮彼Thread
操作系统中的进程可以很多,进程中的线程就更多了,常常有⼏⼗个上百个。⽽CPU的Thread就那么固定⼏个,是稀缺资源。两者都叫Thread是因为
他们都是调度的基本单位,软件操作系统调度的基本单位是OS的Thread,硬件的调度基本单位是CPU中的Thread。操作系统负责把它产⽣的软Thread调度到CPU中的硬Thread中去。⼀软⼀硬,⼲活不累!
软件中的线程是对硬件中线程进⾏抽象。就⾏操作系统中的簇是对硬盘中扇区进⾏抽象。
操作系统中的进程和线程的区别
进程(有时候也称做任务)
进程是指⼀个程序运⾏的实例,⼀个程序可以多次运⾏产⽣多个进程,进程与进程之间数据空间是互相独⽴的,进程A崩溃了完全不会影响到进程B,所以现在很多浏览器都采⽤多进程的⽅式来实现,打开⼀个⽹页对应fork()⼀个进程来执⾏。
1. 每个进程拥有完全不同的虚拟地址空间,操作系统内核通Address Translation技术映射到物理地址空间(X86处理器体系架构采⽤段表thread技术
+页表进⾏映射,页表有2级和4级之分,32位系统采⽤2级页表,64位系统采⽤4级页表),这让进程有⼀种幻觉即独占整个内存空间。进程是程序在执⾏过程中分配和管理资源的基本单位。进程程序集⾥⾯存放了⼀个程序的⼊⼝点。
⼀个在内存中运⾏的应⽤程序。每个进程都有⾃⼰独⽴的⼀块内存空间,⼀个进程可以有多个线程,⽐如在Windows系统中,⼀个运⾏的xx.exe就是⼀个进程。
线程是CPU调度和分派的基本单位,它可与同属⼀个进程的其他的线程共享进程所拥有的全部资源。
多线程程序只要有⼀个线程死掉,整个进程也死掉了这是为什么?四核即代表着该CPU具有四个“CPU”,⼋线程则意味着每个CPU存有两个逻辑线程,总共有⼋个线程。每个单位时间内,⼀个 CPU
只能处理⼀个线程(操作系统:thread)。
软件中的线程和时分复⽤⽣成的CPU线程、和cpu伪核线程的区别
软件中的线程:是对cpu利⽤时分复⽤技术⽣成的线程的抽象。就像操作系统中的簇是对硬盘中扇区进⾏抽象。
cpu伪核线程: cpu的4核⼋线程,这个线程指的是伪核,就虚拟的8个cpu。    cpu中的利⽤时分复⽤技术⽣成的线程概念是不⼀样的,完全是两码事。
cpu时分复⽤线程:cpu利⽤时分复⽤技术将多个虚拟cpu(⼋线程)进⾏时间切⽚,⽣成不同的线程。
谈谈你对Windows多线程编程的认识
回答思路:
(1)【什么是进程和线程?】进程是系统资源的拥有者;线程是Windows任务调度的最⼩单位。
(2)【进程和线程有什么?】Windows下,进程占有4G的地址空间;线程只占⽤运⾏必须的stack。
(3)【进程和线程的关系?】进程是线程的容器,线程必须在进程中运⾏,每个进程创建时都会有⼀
个主线程被创建。(4)【从数量上⽐较】线程数远⼤于进程数,⼀个进程可以有⼀个或多个线程。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。