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()一个进程来执行。
fork() 详细讲解:https://blog.csdn.net/u013851082/article/details/76902046
1. 每个进程拥有完全不同的虚拟地址空间,操作系统内核通Address Translation技术映射到物理地址空间(X86处理器体系架构采用段表+页表进行映射,页表有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)【从数量上比较】线程数远大于进程数,一个进程可以有一个或多个线程。
5、CPU 的线程与操作系统的线程有何关系?操作系统中的进程和线程是什么关系?的更多相关文章
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- python中的进程、线程(threading、multiprocessing、Queue、subprocess)
Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...
- windows中的进程和线程
今天咱们就聊聊windows中的进程和线程 2016-09-30 在讨论windows下的进程和线程时,我们先回顾下通用操作系统的进程和线程.之所以称之为通用是因为一贯的本科或者其他教材都是这么说的: ...
- Node.js 中的进程和线程
线程和进程是计算机操作系统的基础概念,在程序员中属于高频词汇,那如何理解呢?Node.js 中的进程和线程又是怎样的呢? 一.进程和线程 1.1.专业性文字定义 进程(Process),进程是计算机中 ...
- Java中的进程和线程
Java中的进程与线程 一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是 ...
- Java中的进程与线程(总结篇)
详细文档: Java中的进程与线程.rar 474KB 1/7/2017 6:21:15 PM 概述: 几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进 ...
- (转)java中的进程与线程
(转自地址http://www.ibm.com/developerworks/cn/java/j-lo-processthread/) Java 进程的建立方法 在 JDK 中,与进程有直接关系的类为 ...
- java中的进程与线程及java对象的内存结构【转】
原文地址:http://rainforc.iteye.com/blog/2039501 1.实现线程的三种方式: 使用内核线程实现 内核线程(Kernel Thread, KLT)就是 ...
- python中的进程和线程
什么是进程(process)? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本 ...
随机推荐
- 一个BPMN流程示例带你认识项目中流程的生命周期
摘要:本文详细说明了在工作流Activiti框架中的BPMN流程定义整个运行的生命周期. 本文分享自华为云社区<本文详细说明了在工作流Activiti框架中的BPMN流程定义整个运行的生命周期& ...
- Hexo博客(Snail主题)搭建回顾概览
Hexo博客(Snail主题)搭建回顾概览 笔者搭建博客地址:https://saltyfishyjk.github.io 目录 Hexo博客(Snail主题)搭建回顾概览 Part 0 前言 写作背 ...
- python 小兵(6)函数进阶
阅读目录 函数参数-动态参数 名称空间 函数的嵌套 gloabal.nonlocal 回到顶部 函数参数-动态参数 之前我们说过传参,如果我们在传参数的时候不很清楚有哪些的时候,或者说给一个函数传了很 ...
- react组件中的类调用construcor、super方法你知道多少?
constructor:在类中作为一个钩子函数,有constructor钩子函数的时候,可以定义state,如果用户不定义state的话,有无constructor钩子函数没啥区别: super:
- AI 智能写情诗、藏头诗
一.AI 智能情诗.藏头诗展示 最近使用PyTorch的LSTM训练一个写情诗(七言)的模型,可以随机生成情诗.也可以生成藏头情诗. 在特殊的日子用AI生成一首这样的诗,是不是很酷!下面分享下AI 智 ...
- Redis 的持久化有哪几种方式?
面试题 redis 的持久化有哪几种方式? 不同的持久化机制都有什么优缺点? 持久化机制具体底层是如何实现的? 面试官心理分析 redis 如果仅仅只是将数据缓存在内存里面,如果 redis 宕机了再 ...
- asp.net core 中的各种路径
1.获取完整网址URL 方法一:先引用"using Microsoft.AspNetCore.Http.Extensions;",然后直接用"Request.GetDis ...
- SSH 密钥登录
一.什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录. 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会 ...
- 自定义CALayer
1.如何自定义Layer. 自定义CALayer的方式创建UIView的方式非常相似. CALayer *layer = [CALayer layer]; layer.fr ...
- Java基础复习(七)
一.基本语法 1. java没有sizeof.goto.const这些关键字,但不能用goto.const作为变量名,虽然可以用sizeof,但为啥非得要用这个呢. 2.十六进制数以0x或0X开头: ...