![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux相关
文章平均质量分 92
子木呀
这个作者很懒,什么都没留下…
展开
-
详解操作系统中虚拟内存与物理内存的关系
点击链接阅读更多:一文理解虚拟内存、物理内存、内存分配、内存管理 - 知乎目录一、虚拟内存与物理内存1.1 虚拟内存1.2 虚拟内存与物理内存二、C/C++中虚拟内存分配模型2.1 C语言中内存分配模型2.2 C++语言中内存分配模型三、程序占用的内存是虚拟内存还是物理内存3.1 内存管理3.1.1 内存管理概念3.1.2 glibc内存管理器3.1.3 内存管理器面临的困难3.1.4 以堆为例讲解内存的申请与释放3.2 代码占用的内存3.2.原创 2021-09-25 22:39:04 · 6933 阅读 · 0 评论 -
详解进程的虚拟内存,物理内存,共享内存
目录写在前面:一、关于内存的两个概念1.1 虚拟内存1.2 驻留内存二、详解top命令中VIRT、RES和SHR2.1 top命令中ⅥRT、RES和SHR的含义三、进程的smaps文件写在前面:想必在Linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题,你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟.原创 2021-09-25 22:37:25 · 10732 阅读 · 4 评论 -
详解mmap:是什么 为什么 怎么用
目录mmap基础概念mmap内存映射原理mmap和常规文件操作的区别mmap优点总结mmap相关函数mmap使用细节性能总结mmap基础概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空原创 2021-09-25 22:32:15 · 2546 阅读 · 0 评论 -
malloc()背后的实现原理——内存池
目录malloc()和free()的分配算法内存池池化技术相对于栈而言,堆这片内存面临着一个稍微复杂的行为模式:在任意时刻,程序可能发出请求,要么申请一段内存,要么释放一段已经申请过的内存,而且申请的大小从几个字节到几个GB都有可能,我们不能假设程序一次申请多少堆空间,因此,堆的管理显得较为复杂。那么,使用 malloc() 在堆上分配内存到底是如何实现的呢?一种做法是把 malloc() 的内存管理交给系统内核去做,既然内核管理着进程的地址空间,那么如果它提供一个系统调用,可以让原创 2021-09-25 22:29:53 · 1321 阅读 · 0 评论 -
linux中fork函数及子进程父进程执行顺序
目录一、fork入门知识二、fork进阶知识一、fork入门知识一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。我们来看一个例子:...原创 2021-09-25 21:56:01 · 15628 阅读 · 2 评论 -
Linux C++多线程同步的四种方式
原文链接:Linux C++多线程同步的四种方式(非常详细)_Y先森0.0-CSDN博客背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题?通过多线程模拟多窗口售票为例:#include <iostream>#include<pthread.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>using n原创 2021-09-15 15:17:30 · 794 阅读 · 0 评论 -
Ubuntu下使用VSCode的launch.json及tasks.json编写
目录程序调试遇到的问题及解决方式拓展预定义变量#预定义变量示例:tasks用于在launch前执行任务,launch用于读取执行文件。这两者经常组合起来用于需要编译语言的自动编译+自动执行,下面以C++、Rust和Typescript为例。程序工作区包含main.cpp、头文件夹include以及文件夹中的h文件、src文件夹以及文件夹中的cpp文件。.vscode是后面生成的,不用管。在swap.h文件中对类进行了声明,在swap对类进行了定义.原创 2021-08-30 12:24:31 · 2822 阅读 · 0 评论 -
linux系统-软链接与硬链接区别
引言在介绍硬链接和软链接之前,首先介绍下硬盘相关的知识,主要是了解下 inode 。硬盘硬盘设备是由大量的扇区组成的。以 MBR 分区为例。每个扇区的容量为 512 字节。其中第一个扇区最重要。它里面保存着主引导记录与分区表信息。就第一个扇区来讲,主引导记录需要占用 446 字节,分区表为 64 字节,结束符占用 2 字节。其中分区表每记录一个分区信息就需要 16 字节,这样一来,最多就只有4个分区信息可以写到第一扇区中,这4个分区就是4个主分区。第一个扇区最多只能创建出4个分区 ?为了原创 2021-08-29 19:25:06 · 104 阅读 · 0 评论 -
linux系统编程下的open函数使用方法
open函数属于Linux中系统IO,用于“打开”文件,代码打开一个文件意味着获得了这个文件的访问句柄。int fd = open(参数1,参数2,参数3);int fd = open(const char *pathname,int flags,mode_t mode);1.句柄(file descriptor 简称fd)首先每个文件都属于自己的句柄,例如标准输入是0,标准输出是1,标准出错是2。每打开一个文件就会返回句柄来操作这个文件,一般是从3开始,然后4,5,6一直下去。c原创 2021-08-24 20:02:26 · 3705 阅读 · 0 评论