深入浅出内存管理-虚拟地址和物理地址转换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rikeyone/article/details/84672000 谈起内存管理,首先我们就要搞清楚虚拟地址和物理地址的关系。本文就是简单介绍下这两个基础概念。 物理地址 物理地址指实际存在的物理内存地址,比我有一个2G的内存芯片,那么系统的物理内存就是2G,我要访问该内存中的一个地址,那就需要对应的物理内存。 虚拟地址 虚拟地址,就是就是一种逻辑意义上的地址,而当我们想要访问这个虚拟地址时,是需
分类: 其他 发布时间: 12-16 22:35 阅读次数: 0

深入浅出内存管理--页表的创建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rikeyone/article/details/84778466 页表的创建 Linux在启动过程中,要首先进行内存的初始化,那么就一定要首先创建页表。我们知道每个进程都拥有各自的进程空间,而每个进程空间又分为内核空间和用户空间。 以arm32为例,每个进程有4G的虚拟空间,其中0-3G属于用户地址空间,3G-4G属于内核地址空间,内核地址空间是所有进程共享的,因此内核地址空间的页表也是所有进程
分类: 其他 发布时间: 12-16 22:35 阅读次数: 0

Linux内核抢占的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rikeyone/article/details/84960184 可抢占性,对一个系统的调度延时具有重要意义。2.6 之前,一个进程进入内核态后,别的进程无法抢占,只能等其完成或退出内核态时才能抢占, 这带来严重的延时问题,2.6 开始支持内核态抢占。 禁止内核抢占的情况列出如下: (1)内核执行中断处理例程时不允许内核抢占,中断返回时再执行内核抢占。 (2)当内核执行软中断或tasklet时,
分类: 其他 发布时间: 12-16 22:35 阅读次数: 0

Linux内核中的per-cpu变量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rikeyone/article/details/84960446 per CPU变量 per-CPU变量从字面上即可猜出它大概的含义,这种类型的变量实际上每个CPU都分配了一个该变量的副本。对于per-CPU的访问几乎不需要锁定,因为每个CPU都工作在自己的副本上,另外per CPU变量还可以保存在CPU自己的缓存上,这样就最大的优化访问速度和减少竞争。 静态定义和访问 #define DEFI
分类: 其他 发布时间: 12-16 22:35 阅读次数: 0

深入浅出内存管理--内存管理概述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rikeyone/article/details/84976442 内存管理我的理解是分为两个部分,一个是物理内存的管理,另一个部分是物理内存地址到虚拟地址的转换。 物理内存管理 内核中实现了很多机制和算法来进行物理内存的管理,比如大名鼎鼎的伙伴系统,以及slab分配器等等。我们知道随着Linux系统的运行,内存是不断的趋于碎片化的,内存碎片分为两种类型,一种为外碎片,所谓外碎片就是以页为单位的内
分类: 其他 发布时间: 12-16 22:34 阅读次数: 0

深入浅出内存管理--物理内存框架

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rikeyone/article/details/85002788 NUMA 首先需要介绍一个NUMA的概念,非一致性内存访问模型,在这种系统中,CPU访问不同内存单元的时间可能是不一样的,物理内存被划分为不同的Node节点来进行管理,对于单CPU的系统也可能使用NUMA,因为这些系统的物理内存有可能不一定是整块的,而是中间包含有很大的洞,因此划分出多个Node进行管理。比如系统中存在两个内存芯片
分类: 其他 发布时间: 12-16 22:34 阅读次数: 0

深入浅出内存管理--内存节点(Node)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rikeyone/article/details/85004722 本文以Linux内核4.9来做介绍。 Node 结构体 内核中的节点是使用一个结构体struct pglist_data来进行管理的,它的组成如下所示,本文只会列出几个关键成员,其余成员待遇到时在做解释: typedef struct pglist_data { struct zone node_zones[MAX_N
分类: 其他 发布时间: 12-16 22:34 阅读次数: 0

深入浅出内存管理--内存管理区(Zone)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rikeyone/article/details/85007552 本文以Linux内核4.9来做介绍。 内存管理区(ZONE)结构体 每个Node节点中的内存又划分为多个ZONE来进行管理,内核中一共定义有如下几种类型的ZONE。 enum zone_type { #ifdef CONFIG_ZONE_DMA /* * ZONE_DMA is used when there a
分类: 其他 发布时间: 12-16 22:34 阅读次数: 0

深入浅出内存管理--页描述符(Page)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rikeyone/article/details/85036702 内核中采用struct page来描述物理内存页,它的主要成员如下(非全部成员): unsigned long flags; 标志位,内核中每个page的状态可以由此标志位来表示,列举几个标志位: PG_locked 页被锁定,比如在磁盘I/O操作中涉及到的页,不能被页框回收算法回收。 PG_reserved 页留给内核代码或者没
分类: 其他 发布时间: 12-16 22:33 阅读次数: 0

路由器WAN口和LAN口的IP地址的区别【转】

(转自:https://blog.csdn.net/u010857476/article/details/39254873) 众所周知,路由器是三层设备,它工作于网络层,根据网络层的"IP协议",每台连接在网络中的设备都需要有一个唯一的身份,即我们所说的IP地址。而我们所用的交换机,它是属于二层设备,工作于数据链路层,通过MAC来寻址,MAC是写在硬件里的固定地址,所以无须你来配置. 两个网络之间的连接需要路由器,举个例子,好多公司都有内部局域网,然后通过局域网连接广域网,所以,广域网和局域网
分类: 其他 发布时间: 12-16 22:33 阅读次数: 0

关于TCP包分段和IP包分片的一些文章

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/biqioso/article/details/84927406 简要分析并搞懂9个tcp基础包------三次握手 + 发送数据并收到确认 + 四次挥手 https://blog.csdn.net/stpeace/article/details/74066944 数据链路层以太网帧格式------理解MTU的定义和最大值(1500字节) https://blog.csdn.net/stpeace
分类: 其他 发布时间: 12-16 22:32 阅读次数: 0

关于各种 网络协议 抓包分析 的一些文章

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/biqioso/article/details/84938234 各协议端口号 https://blog.csdn.net/ypt523/article/details/79636647 TCP/IP/UDP/ICMP/ARP/ethernet 各种协议头部结构体 https://blog.csdn.net/xiexievv/article/details/45225921 协议号和端口号详解 h
分类: 其他 发布时间: 12-16 22:32 阅读次数: 0

Java中HashMap实现1对N

我们都知道在Java中的HashMap默认的是1对1,但其实可以处理一下让他适合1对来存储数据,其实也就是对键值对中得值的数据进行及时的更新.我们实现这一操作作用到了分拣存储; 那么什么是分拣存储呢?你可以这样理解,和快递员分捡快递来类比,快递的目的地有很多,比如有北京上海山东等等,比如一开始我拿到了一个发往山东的包裹,那么快递员就要看看是否已经有一个放发往山东的袋子,如果有就直接放入,如果没有就拿一个袋子来。 分拣存储也就这点东西。 那么来看一个列子,给你一句英文,让你统计这句话中每个单词出
分类: 编程语言 发布时间: 12-16 22:32 阅读次数: 0

求二叉树的最大深度

package leetcode; /*Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. */ public class Maximum_depth_of_binary_tree { public static void mai
分类: 编程语言 发布时间: 12-16 22:31 阅读次数: 0

codeforces715B.Complete The Graph

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41893580/article/details/84551439 Complete The Graph 题意:给一张图,需要将所有0边换成正整数边,使S到T的最短路为L 一开始的想法是,把0变成1边,找出一条最短路,将其长度变成L,其他0边改成inf。 但这是错的,因为这条路径上还有1边,可能有其他小于L的路径经过1边,最短路可能会小 然后Wa了无数发。 设del为L-dis[T],考虑尽
分类: 编程语言 发布时间: 12-16 22:31 阅读次数: 0

MFC 消息映射宏的单纯展开(无解析)

MFC消息映射宏的展开 BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd) ON_WM_PAINT () //WM_PAINT 消息通过MFC的消息映射机制转换为对CMainWindow::OnPaint函数的调用 END_MESSAGE_MAP () 展开后 __pragma(warning(push)) __pragma(warning(disable : 4867)) const struct AFX_MSGMAP* CMainWindow::GetM
分类: 编程语言 发布时间: 12-16 22:31 阅读次数: 0

ResNetV1和ResNetV2

文章目录 ResNet-V1 ResNet-V2 写在前面,最近看论文,看到好多ResNet的结构名词,ResNet-V1,ResNet-V2,ResNet50, ResNet101等等,这里来对ResNet的发展进行一个介绍。 ResNet是近年来CNN结构发展中最为关键的一个结构,后面非常多的insight都是在ResNet基础上进行改进,也有非常多的论文旨在分析残差结构的有效性。 ResNet-V1 论文:Deep residual learning for image recognit
分类: 编程语言 发布时间: 12-16 22:31 阅读次数: 0

作为程序员该如何写好简历,一份优秀的程序员简历又是什么样的?

作为一个技术人员,如果你满足以下条件中的任意两个,你应该去看看更多的机会: 1.钱少了 2.技术空间增长太少 3.没有发展空间 4.心里委屈了 以及 5.老板招你的时候,和你谈理想。现在,老板问你说:理想能赚钱吗? 6.加班太多——都没有时间约会或者女朋友和别人跑了 7.你的女朋友在北京,而你在上海 8.这个技术公司已经没有大牛了 下面是一个前段开发工程师的例子,大家可以观摩观摩: HR 只需要打开这个 PDF 中的 GitHub 链接即可: 这才叫优秀嘛,你说是不是? 好了,写完段子了,让我
分类: 编程语言 发布时间: 12-16 22:30 阅读次数: 0

Linux基础命令之sed用法

sed:流编辑器    1.sed:Stream Editor   行处理工具,流编辑器 对文件内容逐行进行处理调用操作并显示到STDOUT        工作流程:(1)sed默认不编辑原文件,而是逐行操作,复制一份到指定内存(pattern sp
分类: 企业开发 发布时间: 12-16 22:30 阅读次数: 0

Java 中string 类型如何转换成short 类型

String temp = “12”; short sh = Short.parseShort(temp); 最好再try,catch一下。
分类: 编程语言 发布时间: 12-16 22:30 阅读次数: 0