首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 进程、线程、文件描述符底层原理

说到进程,恐怕面试中最常见问题就是线程和进程关系了,那么先说一下答案:在 Linux 系统中,进程和线程几乎没有区别。...Linux进程其实就是一个数据结构,顺带可以理解文件描述符、重定向、管道命令底层工作原理,最后我们从操作系统角度看看为什么说线程和进程基本没有区别。...为什么说 Linux 中线程和进程基本没有区别呢,因为从 Linux 内核角度来看,并没有把线程和进程区别对待。...当然,必须要说明是,只有 Linux 系统将线程看做共享数据进程,不对其做特殊看待,其他很多操作系统是对线程和进程区别对待,线程有其特有的数据结构,我个人认为不如 Linux 这种设计简洁,增加了系统复杂度...在 Linux 中新建线程和进程效率都是很高,对于新建进程时内存区域拷贝问题,Linux 采用了 copy-on-write 策略优化,也就是并不真正复制父进程内存空间,而是等到需要写操作时才去复制

2.3K30

Linux 进程、线程、文件描述符底层原理

说到进程,恐怕面试中最常见问题就是线程和进程关系了,那么先说一下答案:在 Linux 系统中,进程和线程几乎没有区别。...Linux进程其实就是一个数据结构,顺带可以理解文件描述符、重定向、管道命令底层工作原理,最后我们从操作系统角度看看为什么说线程和进程基本没有区别。...为什么说 Linux 中线程和进程基本没有区别呢,因为从 Linux 内核角度来看,并没有把线程和进程区别对待。...当然,必须要说明是,只有 Linux 系统将线程看做共享数据进程,不对其做特殊看待,其他很多操作系统是对线程和进程区别对待,线程有其特有的数据结构,我个人认为不如 Linux 这种设计简洁,增加了系统复杂度...在 Linux 中新建线程和进程效率都是很高,对于新建进程时内存区域拷贝问题,Linux 采用了 copy-on-write 策略优化,也就是并不真正复制父进程内存空间,而是等到需要写操作时才去复制

1.3K10
您找到你想要的搜索结果了吗?
是的
没有找到

罗玉平: 关于ARM Linux原子操作底层支持

来源:Linux阅码场, 罗玉平原创,欢迎投稿原创文章(要求投稿前未在任何平台发表),稿费500元人民币。...投稿邮箱:21cnbao@gmail.com 作者简介: 罗玉平, IT行业工作近20年,先后从事无线通讯,linux平台和firmware开发多年,目前从事ARMv8-A架构和CPU软件客户支持和培训工作...引子 前文宝华《宋宝华:关于ARM Linux原子操作实现》谈到软件如何使用ARM V7之后LDREX和STREX指令来实现spin lock和atomic 函数,这篇文章接着探讨ARM架构和总线协议如何来支持...fill和line eviction和正常读写操作产生外部行为是一样。...例如, 假如某个SOC不支持外部global exclusivemonitor,软件把MMU disabled情况下,启动SMP Linux,系统是没法启动起来,在spinlock处会挂掉。

3.1K20

threadlocal底层实现_ioc底层实现原理

大家好,又见面了,我是你们朋友全栈君。...ThreadLocal 作用: 提供线程内局部变量,不同线程之间不会相互干扰,这种变量在线程生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递复杂性。...---- 各种引用用途: 强引用:最常用一种引用 软引用:适合做缓存,比如内存中一张图片,当内存不够用时候先把图片移动出去,当内存充足时候再把图片load进来 弱引用:为了解决某些地方内存泄露问题...,当DirectByteBuffer回收后,会通知队列,这时候JVM垃圾回收器就知道去系统内存请理相应系统内存空间 ---- ThreadLocal底层: 每个ThreadLocal对应一个ThreadLocalMap...,如果一个对象只有弱引用时候,那当垃圾回收器遇见他时候它就会被回收。

60620

Mysql专栏 - Linux底层交互和Raid存储架构

Mysql专栏 - Linux底层交互和Raid存储架构 前言 在专栏之前几篇文章中,我们总结了缓冲池,缓存页,redo log,undo log,以及数据页和数据行在底层是如何进行存储,后续介绍了表空间...这一节比较特殊,讲述是和Linux有关交互原理,因为多数mysql都是部署在linux服务器上面,本节会简单介绍一下linux是如何处理mysql请求,以及linux系统会带来哪些问题 概述...为了IO性能,这里需要了解两个重要性能指标:「IOPS」和「响应延迟」。IOPS 指的是存储系统每秒可以执行多少次磁盘读写操作,底层磁盘支持每秒执行1000个随机读写和200个差距是很大。...: mysql和linux交互步骤: 下面是mysql和llinux交互大致流程: VFS层:当mysql发起一次数据页随机读写,一次redo log顺序读写时候,实际上会把io请求交给linux...最终 MySQL可以得到本次IO读写操作结果,最终结构图如下所示: linux底层调度流程 ERROR 1040(HY000): Too many connections问题 下面补充一个比较常见

78820

OC底层探索01-找到底层探索钥匙OC底层探索01-找到底层探索钥匙

作为一位iOS开发者,如何才能开启自己底层探索之路呢?每当点击系统API无法跟进实现只能浅尝辄止时候,有没有想过怎样才能看到底层源码真容,而不是在还没开始就结束了呢?...本文中会提供三种方式来一探底层魅力。 Apple小心思 这句代码应该非常熟悉了吧?可是想知道alloc具体是如何实现对象创建呢?...没有注释,也再无法跟进,显然Apple不想让你看到底层是如何实现?可是这样就放弃了吗?...三种源码探索方式: 使用Xcode提供符号断点方式 使用Xcode提供分步调试方式 通过汇编方式 下面就这三种方式一一说明: 1. 符号断点 第一步: 添加符号断点 ?...分步调试 如果在你增加了对应API符号断点还是无法精确找到源码库名时候,第一种方式就不够用了。 第一步:为自己输入代码增加断点,run后等待断点触发 这一步与之前操作相同。

42420

Linux底层函数库glibc漏洞核查整改指引

一、 漏洞概要 近日,Linux底层函数glibc DNS 客户端解析器被发现存在基于栈缓冲区溢出漏洞。...三、 漏洞影响范围 所有Debian系列、 Red Hat 系列 Linux 发行版中glibc版本大于 2.9 均受该漏洞影响,低于2.9有可能受此漏洞影响。...在linux命令行“输入”glibc库名称(如,libc.so.6),就像命令一样执行。   ...输出结果会显示更多关于glibc库详细信息,包括glibc版本以及使用GNU编译器,也提供了glibc扩展信息。glibc变量位置取决于Linux版本和处理器架构。   ...在基于Debian64位系统上: $ /lib/x86_64-linux-gnu/libc.so.6   在基于Debian32位系统上: $ /lib/i386-linux-gnu/libc.so

1.9K20

Linux底层函数库glibc漏洞核查整改指引

一、 漏洞概要 近日,Linux底层函数glibc DNS 客户端解析器被发现存在基于栈缓冲区溢出漏洞。...三、 漏洞影响范围 所有Debian系列、 Red Hat 系列 Linux 发行版中glibc版本大于 2.9 均受该漏洞影响,低于2.9有可能受此漏洞影响。...在linux命令行“输入”glibc库名称(如,libc.so.6),就像命令一样执行。   ...输出结果会显示更多关于glibc库详细信息,包括glibc版本以及使用GNU编译器,也提供了glibc扩展信息。glibc变量位置取决于Linux版本和处理器架构。   ...在基于Debian64位系统上:   $ /lib/x86_64-linux-gnu/libc.so.6   在基于Debian32位系统上:   $ /lib/i386-linux-gnu/libc.so

1.3K60

Linux 底层原理」理解进程内存布局,掌握程序动态

它们是一部分内核数据在用户空间映射,为了提高应用性能而创建。在《攻克 Linux 系统编程》中,我们再专门详细讨论。...深入理解了这些底层行为细节,就可以顺理成章地理解 fork() 一些行为表现和正确使用规范,无需死记硬背,也可获得一些别人踩过坑后才能获得经验。...03 监控子进程状态 在 Linux 应用中,父进程需要监控其创建所有子进程退出状态,可以通过如下几个系统调用来实现。...本文要重点讨论是:即使父进程在业务逻辑上不关心子进程终止状态,也需要使用 wait 类系统调用底层原因。...对这些底层实现细节充分理解,能帮助读者更好地理解各个系统调用行为表现,并根据具体应用需求选择正确、合适实现方案。

1.8K30

weak底层原理

我们经常会使用weak来解决OC中循环引用问题,因为weak不会使引用计数加1;并且weak修饰指针还会在对象被销毁后自动置空,这有效解决了野指针调用问题。...那么weak 底层原理是怎样呢?我们接下来就来分析一下。 首先随便在一个工程中,写入下面类似的代码,然后在weak那行打断点: ? 运行到断点处,转成汇编分析: ?...在最后,可以通过存储这个弱指针地址找到其指向弱指针,然后将弱指针置空。...3.1 weak_table_t 先来看看weak_table_t底层代码: /** * The global weak references table....到这里位置,我们实际上就已经介绍完了【对一个对象做weak操作时候底层所做事情】: 首先,会有一张SideTable散列表,这个散列表包含了引用计数表、弱引用表等; 然后,散列表里面会有一张全局弱引用表

88432

TCPIP底层队列

自从上次学习了TCP/IP拥塞控制算法后,我越发想要更加深入了解TCP/IP一些底层原理,搜索了很多网络上资料,看到了陶辉大神关于高性能网络编程专栏,收益颇多。...为什么不能阻塞读取网络信息IO线程呢?这里就要从经典网络C10K开始理解,服务器如何支持并发1万请求。C10K根源在于网络IO模型。...Linux 中网络处理都用同步阻塞方式,也就是每个请求都分配一个进程或者线程,那么要支持1万并发,难道就要使用1万个线程处理请求嘛?这1万个线程调度、上下文切换乃至它们占用内存,都会成为瓶颈。...用户调用recv接收阻塞socket上报文,该socketSO_RCVLOWAT值大于第一个报文大小,并且用户分配了足够大长度为len内存。...p-gzmjmmna-dn.html https://blog.csdn.net/russell_tao/article/details/9950615 https://ylgrgyq.github.io/2017/08/01/linux-receive-packet

1.4K51

threadlocal底层实现_什么是底层

ThreadLocal 作用: 提供线程内局部变量,不同线程之间不会相互干扰,这种变量在线程生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递复杂性。...,用来指向对外内存(操作系统管理内存),操作系统管理内存JVM垃圾处理器不能回收,所以当DirectByteBuffer回收后,会在队列中有相应记录,之后JVM会去处理对外内存。...---- 各种引用用途: 强引用:最常用一种引用 软引用:适合做缓存,比如内存中一张图片,当内存不够用时候先把图片移动出去,当内存充足时候再把图片load进来 弱引用:为了解决某些地方内存泄露问题...,当DirectByteBuffer回收后,会通知队列,这时候JVM垃圾回收器就知道去系统内存请理相应系统内存空间 ---- ThreadLocal底层: 每个ThreadLocal对应一个ThreadLocalMap...,如果一个对象只有弱引用时候,那当垃圾回收器遇见他时候它就会被回收。

50240

【图片+代码】:Linux 动态链接过程中【重定位】底层原理

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。 目录 动态链接要解决什么问题?...在上一篇文章中,我们一起学习了Linux系统中 GCC编译器在编译可执行程序时,静态链接过程中是如何进行符号重定位。 为了完整性,我们这篇文章来一起探索一下:动态链接过程中是如何进行符号重定位。...解决这个矛盾方案,就是Linux系统中动态链接器核心工作! 解决矛盾:增加一层间接性 David Wheeler有一句名言:“计算机科学中大多数问题,都可以通过增加一层间接性来解决。”...动态库加载过程 动态链接器加载动态库 当执行main程序时候,操作系统首先把main加载到内存,然后通过.interp段信息来查看该文件依赖哪些动态库: 上图中字符串/lib/ld-linux.so...ld-linux.so.2也是一个动态链接库,在大部分情况下动态链接库已经被加载到内存中了(动态链接库就是为了共享),操作系统此时只需要把动态链接库所在物理内存,映射到 main进程虚拟地址空间中就可以了

1.7K11

鸿蒙开发者必修课:Linux底层IO方式深度剖析 ‍

鸿蒙开发者必修课:Linux底层IO方式深度剖析 ‍ 摘要 在这篇博客中,我们将探讨Linux底层几种IO(输入/输出)方式,为鸿蒙开发者提供一个清晰理解。...关键词:鸿蒙OS、Linux、IO模型、阻塞非阻塞、IO多路复用、性能优化。 引言 对于鸿蒙开发者来说,深入理解Linux底层IO方式不仅有助于优化应用性能,还能在面对复杂场景时更加得心应手。...本文将一一解析Linux IO模型核心机制及其在鸿蒙开发中应用价值。...底层五种IO模型及其在鸿蒙开发中应用。...IO流 网络应用 信号驱动IO 接收IO准备信号 及时响应IO 设备状态变化 异步IO IO操作真正完成返回 长耗时IO操作 大文件/网络通信 总结 了解和掌握Linux底层不同IO模型对于鸿蒙开发者来说是至关重要

7710

hashmap底层实现原理_hashtable底层数据结构

一:HashMap底层实现原理解析 我们常见有数据结构有三种结构:1、数组结构 2、链表结构 3、哈希表结构 下面我们来看看各自数据结构特点: 1、数组结构: 存储区间连续、内存占用严重、空间复杂度大...,从而实现了查询和修改效率高,插入和删除效率也高一种数据结构 常见HashMap就是这样一种数据结构 HashMap中put()和get()实现原理: 1、map.put(k,v)实现原理...(2)然后它底层会调用KhashCode()方法得出hash值。 (3)通过哈希表函数/哈希算法,将hash值转换成数组下标,下标位置上如果没有任何元素,就把Node添加到这个位置上。...如果其中一个节点K和参数K进行equals返回true,那么此时该节点value就是我们要找value了,get方法最终返回这个要找value。 为何随机增删、查询效率都很高原因是?...因为equals方法默认比较是两个对象内存地址 二:HashMap红黑树原理分析 相比 jdk1.7 HashMap 而言,jdk1.8最重要就是引入了红黑树设计,当hash表单一链表长度超过

40820

iOS底层-对象本质

(你代码保存在磁盘上没装入内存之前是个死家伙.只有跑到内存中才变成活).而运行时类型检查就与前面讲编译时类型检查(或者静态类型检查)不一样.不是简单扫描代码.而是在内存中做些操作,做些判断....对象本质 我现在就来测试 : 下面是一个LGPerson对象 因为我们都知道OC底层是C,我们进一步可以编译C++代码(重写) C++编译 通过C++编译 我天啊. 9851行代码吓我一哆嗦,不过没关系....作为一名优秀iOS底层开发人员,谁没见过一万行代码似的!...类型结构体~~~那么我们所说对象预计都是objc_object类型结构体!...NSObject时候只是对isa重写~~~isa也是我们后面后面学习非常重要路线.比如我们编译block也能看到isa,代表这个匿名函数也是对象,也重复符合万物皆对象说法!!!

23020

MySQL 索引底层逻辑

我们都希望查询数据速度能尽可能快,因此数据库系统设计者会从查询算法角度进行优化。...最基本查询算法当然是顺序查找,这种复杂度为 O(n) 算法在数据量很大时显然是糟糕,好在计算机科学发展提供了很多更优秀查找算法,例如二分查找、二叉树查找等。...那么 B-Tree 是满足下列条件数据结构: d 为大于 1 一个正整数,称为 B-Tree 度。 h 为一个正整数,称为 B-Tree 高度。...从抽象角度看,主存是一系列存储单元组成矩阵,每个存储单元存储固定大小数据。...由于磁盘顺序读取效率很高(不需要寻道时间,只需很少旋转时间),因此对于具有局部性程序来说,预读可以提高 I/O 效率。预读长度一般为页 ( page ) 整倍数。

12910

Slice底层自动扩容

go语言圣经中解释: 数组和slice之间有着紧密联系。 一个slice是一个轻量级数据结构,提供了访问数组子序列(或者全部)元素功能,而且slice底层确实引用一个数组对象。...指针指向第一个slice元素对应底层数组元素地址,要注意是slice第一个元素并不一定就是数组第一个元素。...长度对应slice中元素数目;长度不能超过容量 容量一般是从slice开始位置到底层数据结尾位置。内置len和cap函数分别返回slice长度和容量。...make([]T, len, cap) len<=cap 在底层,make创建了一个匿名数组变量,然后返回一个slice slice只引用了底层数组前len个元素,但是容量将包含整个数组。...额外元素是留给未来增长用 从下面这个自定义函数里可以了解扩容机制: func appendInt(x []int, y int) []int { var z []int //+1个元素后新长度

49920

拼多多底层逻辑

我之前文章美团“四大名著”里面提到了王慧文一些底层逻辑,所以我觉得,创始人或是创始团队底层逻辑其实决定了一家公司未来发展规模和天花板,也决定了投资这家公司长期收益。...因为我目前手里买股票主要是:tx,mt,pdd,jd,所以每隔一段时间可能会分析一些这些公司背后我所吸收一些底层逻辑,也就是我为什么准备长期持有这几家公司原因吧,今天先简单聊下pdd吧。...消费者时间变得更碎片化,消费者标签变得更随机。以前本来很有目的性购物,慢慢变成了基于兴趣使然随机性行为。在有限碎片化时间里去逛,引发兴趣而产生交易行为。...这是pdd底层对于效率重视,我见过一些独角兽公司在基建这块不重视,最后导致上面的效率提不上去,所以这种公司天花板还是比较堪忧。 既然数据在后流量时代这么重要,对于流量使用和有效转化就更加重要。...如果可以拿到用户衣食住行全方位数据呢?可以完善底层零售体系,反馈给用户就可以建立新场景,完善用户需求,形成闭环。

1K00
领券