进程和线程

CPU并不知道线程和进程之类的概念

CPU只知道两件事:

1、  从内存中取出指令;

2、  执行指令,然后再从内存中取出下一条指令

寄存器

CPU从哪里取出指令呢?答案是寄存器,可以把寄存器简单地理解为内存,不过存取速度比内存更快。寄存器中存放的是CPU将要执行的下一条指令的地址。寄存器中的地址默认是自动加1,遇到if和else时,这种顺序执行就被打破了。CPU在执行这类指令时会根据计算结果来动态改变PC寄存器中的值,这样CPU就可以正确地跳转到需要执行的指令了。

函数

指令形成的过程:程序代码源文件à编译器编译à可执行文件à磁盘à内存àCPU指令。函数被编译成功之后才会形成CPU执行指令,只需要找到函数被编译后形成的第一条指令,指令就可以按顺序执行下去。第一条指令就是函数的入口,也就是我们程序源代码中常用的main()函数

进程

如果想让CPU执行某个函数,那么只需要把函数对应的第一条机器执行装入PC寄存器就可以了,这样即使没有操作系统也可以让CPU执行程序。但是过程非常复杂:

1、  需要在内存中找到一块大小合适的区域装入程序

2、  需要找到函数入口,设置好寄存器让CPU开始执行程序

机器指令需要加载到内存中执行,因此需要记录下内存的起始地址和长度;同时要找到函数的入口地址并写道PC寄存器中。需要一个结构体类型的数据结构来记录这些信息。该结构体记录的是程序在被加载到内存中的运行状态,叫做进程

线程

所谓进程,无非就是内存中的一段区域,这段区域中保存了CPU执行机器指令以及函数运行时的堆栈信息,要想让进程运行,就把main函数的第一条机器指令地址写入PC寄存器,这样进程就运行起来了。进程的缺点在于只有一个入口函数,也就是main函数,因此进程中的机器指令只能被一个CPU执行。但是既然我们可以把main函数的第一条指令吸入PC寄存器,那么其他函数和main函数本质上来说也没有什么区别。可以把PC寄存器执行main函数,也可以把PC寄存器指向任何一个函数。当把PC寄存器指向非main函数时,线程就诞生了。这样一个进程内可以有多个入口函数,也就是说属于同一个进程中的机器指令可以被多个CPU同时执行。

来源:https://www.icode9.com/content-3-844251.html

(0)

相关推荐

  • 这是什么骚代码,我服了!!!

    神秘代码 今天给大家看个有意思的东西! 不仅有意思,还能学到知识. 话题从两行(准确的说是一行)神奇的代码聊起: // main.c #include <stdio.h> int main ...

  • 线程切换时CPU在干嘛

    计算机系统中有很多程序员习以为常但又十分神秘的存在:函数调用.系统调用.进程切换.线程切换以及中断处理. 函数调用能让程序员提高代码可复用性,系统调用能让程序员向操作系统发起请求,进程线程切换让多任务 ...

  • CPU 指令

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/CPU 指令 作者:融水公子 rsgz 汇编教程 汇编教程 http://www.rsgz.top/post/91.html 我们通过函数来理解一 ...

  • RTOS中的任务是线程、进程、还是协程?

    今天为大家讲解讲解OS中的线程.进程和协程的这几个概念,同时一起看看RTOS中的任务到底属于哪一种. 1.三者整体关系图 很多小伙伴在学习OS的过程中会遇到各种程序形态,比如说进程.线程.协程.管程. ...

  • 《深入理解计算机系统》阅读总结与摘要

    前言 <深入理解计算机系统>值得每位程序员一读,看完之后将会对整个计算机体系有一个直观的认识. 第一章计算机系统漫游 只有ascii字符构成的文件称为文本文件,所有其它文件都称为二进制文件 ...

  • 进程与线程的一个简单解释

    进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 1. 计算机的核心是CPU,它 ...

  • [软技能] 第102天 进程与线程有什么区别?JS的单线程带来哪些好处?

    今日试题: 进程与线程有什么区别?JS的单线程带来哪些好处? 此开源项目四大宗旨:勤思考,多动手,善总结,能坚持 <论语>,曾子曰:"吾日三省吾身"(我每天多次反省自己 ...

  • 深度好文|面试官:进程和线程,我只问这19个问题

    重磅干货,第一时间送达 来源:程序喵大人 下面隆重推出我呕心沥血,耗时半个月完成的精心力作: 0 1 什么是进程? 标准定义:进程是一个具有一定独立功能的程序在一个数据集合上依次动态执行的过程.进程是 ...

  • 总算搞明白了!进程,线程,协程,生成器,迭代器搞的我脑子好乱!

    你是否曾经被迭代器,生成器,进程,线程,协程搞的脑子很乱? 而且剪不断,理还乱: 这不怪你,这是有历史原因.本文试图把东西都给理顺了. 一篇不行,咱们就再来一篇,使劲点赞. 两个问题,三种协程 先来看 ...

  • delphi取得进程与线程的CPU使用率

    就是这个类了,取得进行与线程的CPU使用率,也是从国外技术站上学来的 unit bCPUUsage; interface uses   Windows, SysUtils, MMSystem; con ...

  • 进程和线程基础知识全家桶,30张图一套带走

    OSC开源社区 昨天 以下文章来源于小林coding ,作者小林coding 小林coding时而图解技术,时而拍拍猫片,时而说说杂事 前言 先来看看一则小故事 我们写好的一行行代码,为了让其工作起来 ...

  • 五分钟扫盲:进程与线程基础必知

    全文脉络思维导图如下: 1. 进程与线程的简单解释 进程(Process)和线程(Thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握.以下这个解释出自阮一峰老师的博客(http://ww ...

  • 进程和线程基础知识全家桶,30 张图一套带走

    前言 先来看看一则小故事 我们写好的一行行代码,为了让其工作起来,我们还得把它送进城(进程)里,那既然进了城里,那肯定不能胡作非为了. 城里人有城里人的规矩,城中有个专门管辖你们的城管(操作系统),人 ...

  • 一文读懂什么是进程、线程、协程(建议收藏)

    进程 我们都知道计算机的核心是CPU,它承担了所有的计算任务:而操作系统是计算机的管理者,它负责任务的调度.资源的分配和管理,统领整个计算机硬件:应用程序则是具有某种功能的程序,程序是运行于操作系统之 ...