计算机必知必会:进程process与线程thread

2023-11-17

进程和线程这对概念的理解也是很难的,至今网络上可查的资料对其的理解出入都挺大,在不同的操作系统中,如linux和windows中,其概念和实现都是有出入的。因此,我在这里结合我自己的理解谈下这两个概念,讲的都是一般性的概念,并且主要是基以WINDOWS的。

一般将进程定义为一个正在运行的程序的实例。我们在任务管理器重所看到的每一项,就可以理解为一个进程,每个进程都有一个地址空间,这个地址空间里有可执行文件的代码和数据,以及线程堆栈等。一个程序至少有一个进程。进程可以创建子进程,创建的子进程可以和父进程一起工作,也可以独立运行。

线程是隶属于进程的,也就是说,线程是不能单独存在的,线程存在于进程中。每个进程至少有一个主线程,进程里的线程就负责执行进程里的代码,这也叫做进程的“惰性”。线程所使用的资源是它所属的进程的资源。线程也有自己的资源,主要组成部分就是一些必要的计数器和线程栈,占用的资源很少。我们可以理解为进程就是个容器,而线程才是真正干活的。线程可以在内核空间实现,也可以在用户空间实现。

这里特别提一下linux,在linux中,每一个进程都必须有一个父进程(如果没有父进程,则把PID=1的根进程作为其父进程)。进程退出了,就成了僵尸进程,等待父进程的退出信号,如果父进程没有给他发信号,得给他找一个父进程,或者等待内核自动销毁。Linux内核只提供了轻量进程的支持,限制了更高效的线程模型的实现,但Linux着重优化了进程的调度开销,使得linux进程切换开销较小。所以linux系统没有真正意义上的线程机制。linux中,Linux线程是通过进程来实现,进程和线程是同一个层次的。(我这里提到的是基于linux 2.6 内核的,在最新的LINUX中,对线程的实现做了优化,但是还是基于进程的。有些linux实现了新的线程机制,但主流还是和我描述的一样)

进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这也是进程和线程的重要区别。

比如,windows中的explorer就是资源管理器进程,我们每打开一个窗口,这个进程就会创建一个线程。有上面的描述,我们可以知道,进程有独立的地址空间,多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。

在第一节中,我提到过,“并发!=多线程“,是的。如Unix操作系统和Windows操作系统支持多用户、多进程的并发执行,而Java这样的语言支持应用程序进程内部的多个执行线程的并发执行。我们知道,php在语法上是没有多线程这个概念的,那java/NET的多线程是怎么实现的。实际上,java只是通过native方法调用操作系统API来创建多线程而已。另外,我们经常说某个网站并发是多少多少,nginx是高并发服务器了。这里的并发和我前面的并发概念是不同的。要想做到高并发,除了多线程等的实现,还需要各种好的IO机制,不然线程再多也没用,资源利用跟不上来。高并发又跟同步、异步等IO复用机制有了牵连。

下面列举一下进程和线程中的一些概念。

  • 进程:创建,销毁,创建子进程(fork),优先级。
  • 线程:创建,挂起,恢复,销毁,切换,协作,睡眠,唤醒,等待,同步,锁,优先级。

从上面的描述,基本可以理清进程和线程的关系了。最后总结下:

  1. linux没有内核上的多线程实现,但是不能说linux没有多线程。WINDOWS有内核的多线程实现。
  2. 进程开销大,线程开销小,但是linux的进程和线程开销差异不明显。
  3. 并行的实现离不开多线程。

再留个悬念,多线程的实现和运行还会涉及到同步异步,原子性等概念。这些概念是相互交叉的,这里先不做深入。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机必知必会:进程process与线程thread 的相关文章

  • 《计算机科学》期刊投稿心得

    今日胃痛难忍 xff0c 无法静心 xff0c 遂分享一下投稿心得 这本期目前是北大核心 xff0c CCF B 上不上 xff0c 下不下的排名 xff0c 感叹一句 xff0c 中文核心太难中了 xff0c 越来越难中的感觉 2020年
  • 一篇文章带你发中文核心期刊《计算机科学》

    中文核心期刊 计算机科学 发论文过程分享 目录 中文核心期刊 计算机科学 发论文过程分享 1 写论文 xff0c 找杂志发表 2 寻找投稿的杂志社 xff0c 修改论文 3 论文审核流程 4 关于怎么联系杂志的编辑部 投稿的大致过程如下 x
  • 进程与线程

    第一章 xff1a 计算机系统漫游 进程 xff1a 进程是操作系统对一个正在运行的程序的一种抽象 xff0c 一个系统可以同时运行多个进程 xff0c 看上去是CPU并发的执行多个程序 xff0c 实际上是通过进程切换来实现的 xff0c
  • 计算机科学中的抽象包括数据抽象和,抽象化 (计算机科学)

    在计算机科学中 xff0c 抽象化 英语 xff1a Abstraction 是将数据与程序 xff0c 以它的语义来呈现出它的外观 xff0c 但是隐藏起它的实现细节 抽象化是用来减少程序的复杂度 xff0c 使得程序员可以专注在处理少数
  • C#进程与线程

    在操作系统中 xff0c 每运行一个程序都会开启一个进程 xff0c 一个进程由多个线程构成 线程是程序执行流中最小的单元 在应用程序中分为单线程程序和多线程程序 单线程程序是指在一个进程空间中只有一个线程在执行 xff1b 多线程程序是指
  • OS——进程与线程

    文章目录 进程与线程进程进程的特点进程的模型进程的创建进程的终止进程的状态进程的切换进程的实现进程的合作 线程为什么有线程 xff1f 线程的使用经典的线程模型POSIX线程用户级线程内核级线程混合实现调度程序激活机制进程与线程的比较 进程
  • 进程与线程

    进程与线程 讲线程之前要了解 xff1a 进程间的通信 xff08 Inter Process Communication IPC xff1a 理论上 xff0c 进程之间是独立的 xff0c 但实际上往往是多个进程之间的互相配合完成复杂的
  • 进程与线程

    对于操作系统来说 xff0c 一个任务就是一个进程 xff08 Process xff09 xff0c 比如打开一个浏览器就是启动一个浏览器进程 xff0c 打开一个记事本就启动了一个记事本进程 xff0c 打开两个记事本就启动了两个记事本
  • 知识图谱技术概述

    1知识图谱定义与架构 1 1知识图谱定义 维基百科上对知识图谱的定义是这样的 知识图谱是谷歌及其提供的服务所使用的知识库 目的是通过从各种来源收集信息以增强其搜索结果的展示 这个定义时侠义的 知识图谱 是结构化的语义知识库 用于以符号形式描
  • 如何修改服务器远程端口

    1 开始 运行 regedit 2 依次展开 HKEY LOCAL MACHINE SYSTEM CURRENTCONTROLSET CONTROL TERMINAL SERVER WDS RDPWD TDS TCP 右边键值中 PortN
  • 历年计算机科学领域中各大顶会的获奖文章 ICCV、AAAI、CVPR...

    Original address https jeffhuang com best paper awards html By Conference AAAI ACL CHI CIKM CVPR FOCS FSE ICCV ICML ICSE
  • 【Java之多线程篇】——吐血整理Java多线程详解(知识点+代码)

    目录 线程基本概念 并行 并发的区别 多线程优点和何时使用多线程 多线程创建的两种方式 继承Thread类 实现Runnable接口 代码 Thread类中的常用方法 线程的生命周期 线程的同步 用线程同步解决线程安全问题的方式 一 同步代
  • windows live writer 离线写blog

    微软发布的软件windows live writer 可以离线写blog 也就是说 你可以在windows live writer这个软件编辑blog 然后点击 发布 见blog发送到指定网页上 前提是需要在windows live wri
  • 算术逻辑单元

    1 什么是算术逻辑单元 1命名 简称ALU Arithmetic Logic Unit 2组成 ALU有2个单元 1个算术单元和1个逻辑单元 Arithmetic Unit和Logic Unit 3作用 计算机中负责运算的组件 处理数字 逻
  • Python解决最长子串问题

    设有两个字符串abaabba和bbbabaa 问它们的最长子串是什么 这个问题的一个应用就是比较两个病毒的基因 从而给出两者的相似度 这里我们用递归方法解决这个难题 输入参数显然是两个字符串s1和s2 递归边界是s1和s2中至少有一个是空字
  • 电子计算机的发展史

    1 电子计算机元器件变化 继电器 真空管 晶体管 2 计算机的出现背景 20世纪人口暴增 科学与工程进步迅速 航天计划成形 以上导致数据的复杂度急剧上升 计算量暴增 对于计算的自动化 高速有迫切的需求 3 电子计算机的发展 1945年 哈佛
  • 计算机科学导论(5):计算机网络

    原文链接 计算机科学导论 5 计算机网络 远行的舟 参考 纪录片 互联网时代 计算机科学导论 TCP IP 入门经典 维基百科 阮一峰老师博客 哈尔滨工业大学阿里巴巴技术联盟互联网笔试面试整理 HTTP 权威指南 1776 年 3 月 瓦特
  • 05_寄存器和RAM

    计算机的组成原理中 存储是必不可少的部分 可以用来存储计算的结果 图片 文字等等 本文将介绍存储是如何实现的 锁存器 首先我们来看一个门电路 当两个输入引脚都为0时 输出引脚也为0 如果A引脚输入1 输出为1 B引脚也会变为1 此时将A引脚
  • 计算机必知必会:进程process与线程thread

    进程和线程这对概念的理解也是很难的 至今网络上可查的资料对其的理解出入都挺大 在不同的操作系统中 如linux和windows中 其概念和实现都是有出入的 因此 我在这里结合我自己的理解谈下这两个概念 讲的都是一般性的概念 并且主要是基以W
  • 2023年计算机科学与信息技术国际会议(ECCSIT 2023)

    会议简介 Brief Introduction 2023年计算机科学与信息技术国际会议 ECCSIT 2023 会议时间 2023年12月15日 17日 召开地点 中国 北海 大会官网 www eccsit org 2023年计算机科学与信

随机推荐

  • 某宝sign逆向(以商品评论采集为例)

    文章目录 1 目标网址 2 携带参数分析 3 sign值逆向 4 以一个商品为例采集商品评论 往期逆向文章推荐 JS逆向之艺恩数据 JS逆向之今日头条 signature JS逆向之网易云音乐 JS逆向之巨量星图sign签名 JS逆向之巨量
  • Android内存如何优化?阿里技术员工整理亲授,建议收藏

    作者 山鱿鱼说 链接 https juejin cn post 7106289745499521054 基础知识 内存概念 VSS Virtual Set Size 虚拟耗用内存 包含共享库占用的内存 RSS Resident Set Si
  • animation中CrossFade的问题

    之前一个项目在教室中有很多带动画的学生模型 运行中在摄像机视野内的模型动画顺利播放 但是视野外的会卡住 或者在sence视图中能看到的会顺利播放 最后把animation的CrossFade播放改为直接play播放 问题解决 具体原因出在哪
  • ESP32(Micro Python) LVGL 传感器数值显示

    本程序用于显示SR04超声波传感器和BMP280气压温度传感器的读数 由于高度数值类型不符合要求 BMP280改为显示气压和温度值 气压值分两部分显示 分别为千帕值 100 避免超出表盘显示范围 和千帕值的两位小数 由于标签不能显示动态数值
  • uniapp请求数据成功页面未渲染问题

    uniapp 的request请求到数据 但是页面没渲染上 pc端能渲染 app确不能渲染出来问题 思路 一般向后台请求数据会把存在缓存里的数据取出来放data里传给后台 此时要先请求缓存数据再请求后台数据 而uni request是异步获
  • ora01720

    今天 根据业务需要 写了一个视图 即A用户需要查询B用户下的c表 已经进行过授权了 命令 grant select on c to B 在创建视图的时候出错 错误信息为 ORACLE ora 01720 授权选项对于 xxxx 不存在 经查
  • OpenWrt 软路由解析公网IPV6域名访问家庭NAS的教程

    OpenWrt软路由放行IPV6公网访问家庭NAS黑群晖设备的教程 威联通 黑群晖设置阿里云动态解析进行外网 IPV6 域名访问家中 NAS 设置OpenWrt软路由 通过ipv6外网访问家中电脑nas等设备系列教程 学长今天啥也没有干 网
  • Lua代码提示和方法跳转

    前言 当在一个大型工程中编写大量的lua脚本时 代码提示和方法跳转等功能很实用 据我所了解的目前除LuaStudio之外 似乎还没有一个很好的编辑器 但今天讲述的是Idea EmmyLua插件 达到很强大的功能 我的使用环境 idea 20
  • shell 用ip获取网络接口

    一 line expr ifconfig grep ip n awk F print 1 1 ifconfig sed n line p awk print 1 二 ifconfig awk ip print a a 1 以上命令中 ip用
  • 挂马方式研究、挂马检测技术研究

    1 挂马定义 所谓的挂马 就是黑客通过各种手段 包括SQL注入 网站敏感文件扫描 服务器漏洞 网站程序0day 等各种方法获得网站管理员账号 然后登陆网站后台 通过数据库 备份 恢复 或者上传漏洞获得一个webshell 利用获得的webs
  • Java Socket聊天室

    Socket聊天室 1 创建登录判断类UserLogin 2 创建登录服务器LoginServer 3 创建聊天服务器ChatServer 4 创建客户端Client 5 创建服务器用于处理聊天的线程类ChatThread 6 创建客户端C
  • ABAP排序

    SORT
  • RK Android G-EC 调试指南

    RK Android G EC 调试指南 在开发和调试 RK Android G EC General Engine Controller 时 有几个关键的步骤和技巧 本文将介绍这些步骤 并提供相关的源代码示例 环境设置 在开始调试之前 确
  • linux内核使用的一些算法和思想(个人总结)

    这里只罗列一些算法 其中有些在我之前的博文中有所涉及 有些没有 后续有时间再详细分析每一个算法 排名不分先后 1 trie算法 linux网络子系统中取代了之前哈希算法的新路由算法 适合有大 超大规模路由项的应用场景 2 CFS compl
  • tomcat参数调优

    参数调优 tomcat有4个调优参数 分为3个方向 配置项 默认 建议 注意 ConnectionTimeout 20s 减少 maxThreads处理连接的最大线程数 200 增加 不是越大越好 acceptCount backlog 等
  • 数据结构:ArrayList类和顺序表

    文章目录 1 前言 2 ArrayList常见的操作 3 模拟实现ArrayList 3 1模拟实现add方法 3 2模拟实现indexOf方法 3 3模拟实现 get 和 set 方法 3 4模拟实现remove方法 3 5模拟实现 si
  • 没有DOI,只有卷期号时的IEEE期刊论文查找方法

    未给出DOI时的IEEE论文查询方法 登录IEEE 选择期刊查询 寻找对应期刊 寻找对应年份 卷 期 页 登录IEEE 首先登录IEEE官网 使用校园网登录才可以直接查看下载论文 链接 IEEE官网 选择期刊查询 寻找对应期刊 寻找对应年份
  • 2023荣耀校招机试 解数独

    题目描述 数独根据9 9盘面上的已知数字 推理出所有乘余空格的的数字并满足每一行 每一列 每一个格子内数字均含1 9 不重复 每一道合格的数独谜题都有且仅有唯一答案 推理方法也以此为基础 任何无解或多解的题目都是不合格的 即所有空格的数据只
  • SpeedTree导入Unity解决方案

    微软的Note笔记 和网页编辑不能很好复制 这里没有图 建议查看另一个链接 https onenote com webapp pages token KxEyAkijcfJZgzOF30PAPkVySHIcjsPyhrE5wkJoK9KTI
  • 计算机必知必会:进程process与线程thread

    进程和线程这对概念的理解也是很难的 至今网络上可查的资料对其的理解出入都挺大 在不同的操作系统中 如linux和windows中 其概念和实现都是有出入的 因此 我在这里结合我自己的理解谈下这两个概念 讲的都是一般性的概念 并且主要是基以W