Linux操作系统
文章平均质量分 93
Linux
凌桓丶
现腾讯边缘存储研发工程师,前字节跳动流式计算研发工程师、CSDN博客专家。
展开
-
CPU Cache 一致性:Cache 结构、同步方式、Cache 一致性、总线嗅探、MESI 协议
随着时间的推移,CPU 和内存的访问性能相差越来越大,为了弥补 CPU 与内存两者之间的性能差异,就在 CPU 内部引入了 CPU Cache,也称高速缓存。CPU Cache 通常分为大小不等的三级缓存,分别是 L1 Cache、L2 Cache 和 L3 Cache。它们之间的层级关系如下图:介绍完了 CPU Cache 的层级关系后,再来聊聊它的构成。CPU Cache 其实是由多个 组成的,而 其实就是 CPU 从内存读取数据的基本单位,由 (标志)和 (数据块)组成。当我们把数据写入 Cach原创 2022-06-09 14:00:00 · 2469 阅读 · 1 评论 -
新时代内存分配器:TCMalloc
TCMalloc 全称 Thread-Caching Malloc,即线程缓存的 `malloc`,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(`malloc`、`free`,`new`,`new[]` 等)。原创 2022-05-26 16:26:03 · 1658 阅读 · 1 评论 -
Linux常见的一些性能监控命令
文章目录全局监控topCPU监控uptime内存监控freevmstat磁盘监控dfiostat网络监控netstat进程监控pslsof在我们使用Linux进行开发、运维时,难免会出现一些问题,而要解决这些问题我们就需要获取到系统当前的一些运行信息,来帮助我们快速锁定问题的原由,下面就介绍几个Linux常用的性能监控的命令。全局监控toptop用于按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果。这条命令显示了CPU的使用率、内存使用率、交换内存使用大小、高速缓存使原创 2021-08-01 00:03:00 · 3745 阅读 · 3 评论 -
Linux glibc内存管理:用户态内存分配器——ptmalloc实现原理
文章目录设计假设ArenaChunkBins内存分配、释放流程C++ STL : SGI-STL空间配置器源码剖析Linux 内存管理 | 物理内存管理:物理内存、内存碎片、伙伴系统、slab分配器Linux 内存管理 | 虚拟内存管理:虚拟内存空间、虚拟内存分配在之前的几篇博客中,我曾经介绍过STL空间配置器、BuddySystem、Slab分配器等内存管理机制,也曾经简单的提及过linux用户态内存分配的策略,这一次就来深入讲一讲在用户态进行内存分配时,到底做了什么。设计假设ptmall原创 2021-03-29 21:09:16 · 1739 阅读 · 2 评论 -
Linux 内存管理 | 地址映射:分段、分页、段页
文章目录分页分段段页Linux内存管理分页分段段页Linux内存管理原创 2020-12-16 21:57:51 · 3850 阅读 · 1 评论 -
Linux 内存管理 | 虚拟内存管理:虚拟内存空间、虚拟内存分配
文章目录虚拟内存空间空户空间内核空间用户空间内存分配malloc内核空间内存分配kmallocvmalloc虚拟内存空间空户空间内核空间用户空间内存分配malloc内核空间内存分配kmallocvmalloc原创 2020-12-15 21:03:41 · 4301 阅读 · 4 评论 -
Linux 内存管理 | 物理内存管理:物理内存、内存碎片、伙伴系统、slab分配器
物理内存、内存碎片、伙伴系统、slab分配器原创 2020-11-29 16:11:15 · 2351 阅读 · 2 评论 -
哲学家进餐问题的三种解决方法(C++11)
文章目录哲学家进餐问题方法一:当两边的叉子都可用时才拿方法二:限制就餐的哲学家数量方法三:奇数先左后右,偶数先右后左哲学家进餐问题方法一:当两边的叉子都可用时才拿方法二:限制就餐的哲学家数量方法三:奇数先左后右,偶数先右后左...原创 2020-10-24 13:45:07 · 10291 阅读 · 0 评论 -
Linux下守护进程(daemon)的实现
Linux下守护进程(daemon)的实现原创 2020-10-05 14:33:03 · 1088 阅读 · 0 评论 -
操作系统:生产者消费者模型的两种实现(C++)
文章目录生产者消费者模型什么是生产者消费者模型生产者消费者模型的321原则生产者消费者模型的优点生产者消费者模型的实现方法基于循环队列,信号量实现基于阻塞队列,互斥锁、条件变量实现生产者消费者模型什么是生产者消费者模型生产者消费者模型是针对在任务处理中既要产生数据,又要处理数据这一情景而设计出来的一种解决方案。如果生产者生产资源很快,消费者处理资源的速度很慢,则生产者就必须等待消费者处理完数据才能继续生产,反之同理,这样的话生产者与消费者之间的耦合度较高(依赖关系),导致总体效率较低。于是通过引入原创 2020-05-15 21:44:08 · 4323 阅读 · 3 评论 -
操作系统 :银行家算法的实现(C++)
文章目录银行家算法实验原理银行家算法中的数据结构银行家算法安全性算法完整代码测试测试代码测试数据测试结果银行家算法银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。(破坏了环路等待条件)实验原理银行家算法中的数据结构1)可利用资源向量Available是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果Available[j]=K,则原创 2020-05-31 16:52:01 · 2537 阅读 · 3 评论 -
操作系统 : 按优先数调度算法实现处理器调度(C++)
文章目录实验原理算法流程数据结构PSA算法思路完整代码测试测试代码测试数据测试结果实验原理(1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为:其中,进程名——作为进程的标识,假设五个进程的进程名分别为P1,P2,P3,P4,P5。指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。要求运行时间——假设进程需要运行的单位时间数。优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。状态原创 2020-05-29 17:43:06 · 9367 阅读 · 2 评论 -
C++实现一个简易的线程池
C++实现一个简易的线程池原创 2020-05-18 16:41:26 · 2061 阅读 · 2 评论 -
Linux 多线程(二)线程安全:线程安全、互斥与互斥锁、死锁、同步与条件变量
线程安全互斥同步死锁线程控制 线程安全所谓线程安全,其实就是当多个线程对临界资源进行争抢访问的时,不会造成数据二义或者逻辑混乱的情况(通常情况下对全局变量和静态变量进行操作时在会出现)常见的线程安全的情况:每个线程对全局变量或者静态变量只有读取的权限,而没有写入的权限,一般来说这些线程是安全的类或者接口对于线程来说都是原子操作多个线程之间的切换不会导致该接口的执行结果...原创 2020-05-08 17:01:33 · 898 阅读 · 0 评论 -
Linux 多线程(一)线程概念:线程概念、线程与进程、线程间的独有与共享、多线程与多进程、线程控制
线程概念线程与进程线程间的独有与共享多线程与多进程 线程概念什么是线程线程是进程中的一条执行流,执行程序中的某部分代码。linux下没有具体实现的线程,只有库函数用pcb来实现的线程,所以可以认为,每个pcb就是一个线程,所以进程中都至少有一个线程,这些PCB共用进程中的同一个页表和虚拟地址空间,比传统的进程更加轻量化,所以这些线程在linux下也被称为轻量级进程。PCB也就...原创 2020-05-04 18:02:41 · 916 阅读 · 0 评论 -
C语言实现miniShell
Shell就是命令行的解释器,因为在Linux下,是没有图形界面的,我们需要通过命令行输入我们的命令,然后Shell将命令解析后反馈给Linux内核,内核运算处理后再讲结果通过Shell解析给用户。我们输入的ls其实就是字符串,shell通过解析这个字符串,通过程序替换的方法将字符串ls替换为系统函数ls,完成操作,所以我们需要做的有一下几步。获取输入的命令解析输入的命令创建子进程,通...原创 2020-04-22 18:02:11 · 1776 阅读 · 3 评论 -
Linux 进程信号:信号的概念、生命周期、产生流程、阻塞
信号的概念信号的生命周期信号的阻塞 信号的概念信号信号是一个软中断。操作系统通过信号通知某个进程发生了某件事件,然后中断这个进程当前操作,让它优先去处理这个事件。我们在linux下常用的kill命令就是通过向进程发送一个信号来使进程中断,我们可以通过kill -l来查看信号的种类信号的种类可以看到32和33号信号是不存在的,并且1-31是有具体名称的,而34号及之后的都是...原创 2020-04-15 17:19:22 · 919 阅读 · 0 评论 -
Linux 进程间通信:管道、共享内存、消息队列、信号量
进程间通信管道共享内存消息队列信号量 进程间通信https://blog.csdn.net/qq_35423154/article/details/105294963在之前的一篇博客中讲过,# <h1 id="2"> 管道</h1># <h1 id="3"> 共享内存</h1># <h1 id="4">...原创 2020-04-13 16:56:10 · 2666 阅读 · 1 评论 -
Linux 基础I/O :文件描述符,重定向,文件系统,软链接和硬链接,动态库和静态库
文件描述符重定向文件系统软链接和硬链接动态库和静态库 文件描述符上面两个接口分别是c语言的fread接口和linux的read接口,当我们在使用的时,可能会有疑问,为什么linux的io接口能只通过一个整型的fd来操控文件和io?这个fd又是什么?文件描述符fd大家应该听说过,linux下一切皆文件task_struct也就是pcb在Linux下的实现,然后其中的*f...原创 2020-04-08 14:10:44 · 1197 阅读 · 0 评论 -
Linux 进程控制 :进程创建,进程终止,进程等待,程序替换
进程创建 进程终止 进程等待 程序替换 进程创建fork函数创建一个子进程,父子进程代码共享,数据独有#include <unistd.h>pid_t fork(void);返回值:自进程中返回0,父进程返回子进程id.出错返回1。当调用fork函数时,通过使用写时拷贝技术来拷贝父进程的信息。写时拷贝技术:子进程通过复制父进程的pcb,使得复制进程指向...原创 2020-04-06 16:24:12 · 604 阅读 · 0 评论 -
Linux 进程(二) 进程地址空间
上一节我们提到过父子进程的一个概念:父子进程代码共享,数据各自开辟空间。因为子进程从父进程的PCB中拷贝了数据,所以它的代码、数据以及运行的位置,都与父进程一模一样。但是为什么这个代码是无法修改的?为什么又需要再各自开辟空间呢?Linux是如何实现权限控制以及空间映射的呢?我们用这段代码进行试验#include<stdio.h>#include<unistd.h>...原创 2020-04-03 17:09:26 · 719 阅读 · 0 评论 -
Linux 进程(一) 进程概念和进程状态(僵尸进程、孤儿进程、守护进程)
进程的概念进程状态 进程的概念程序:一系列有序的指令集合(就是我们写的代码)进程:进程就是程序的一次执行,是系统进行资源分配和调度的独立单位。程序是一个没有生命的实体,只有操作系统执行它时,它才能成为一个活动的实体,也就是进程。同时,操作系统通过进程控制块(PCB),来对程序进行调度使用操作系统如何控制和调度程序按照冯诺依曼体系结构,所有的数据想要被CPU进行处理,第一步就......原创 2020-04-01 18:00:51 · 1071 阅读 · 4 评论 -
LInux 环境变量
环境变量简介环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数。常见的环境变量PATH:指定命令的搜索路径HOME:用户的主工作目录,即用户登陆时的默认路径SHELL:当前shell,通常是/bin/bash查看环境变量的方法echo功能:查看指定环境变量的内容语法:echo [变量名]env功能:显示所有环境变量语法:env并且不同用户的HOME...原创 2020-03-23 17:38:38 · 518 阅读 · 0 评论 -
Linux项目自动化构建工具 make/Makefile
在我们日常写代码中,一个工程的源文件不计其数, 按照类型、功能、模块等分别放在若干个目录中,这时候我们就可以利用makefile来指定哪些文件先编译,哪些后编译,以及更复杂的操作。我们只需要在makefile里指定所有的操作,在用make这个操作,即可让整个工程自动编译。makefile的内容就是我们对于这个文件之间相互关系的描述,而make就是解释这些描述的工具,两者搭配使用就可以完成项目的自...原创 2020-03-11 18:11:54 · 490 阅读 · 0 评论 -
Linux 权限管理: 权限的概念、权限管理、文件访问权限的设置、 粘滞位
Linux下的基本指令 目录: lspwdcdtouchmkdirrmdir rm 权限的概念Linux下用户有两种:超级用户(root)、普通用户。超级用户:具有最高权限,可以在系统中做任何事情,不受约束。普通用户:操作受到限制,只能做有限的事情。我们可以使用这样su命令,来切换用户的权限su语法: su [用户名]功能: 切换用户区分当前用户权限的方法...原创 2020-03-09 18:37:39 · 1170 阅读 · 0 评论 -
Linux下的基本指令
Linux下的基本指令 目录: lspwdcdtouchmkdirrmdir rmmancp mvcat morelesshead tailcal findgrep zip/unziptarshutdown 常用热键 ls语法:ls [选项][目录或文件]功能:目标为目录时列出该目录下的所有子目录与文件。目标为文件时则列出文件名和其他信息。...原创 2020-03-06 17:58:31 · 593 阅读 · 0 评论