![](https://img-blog.csdnimg.cn/df743a06b47d427b8484796728281a81.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux系统编程
文章平均质量分 93
Linux系统编程
小陶来咯
默默的努力,等成功了再说。
展开
-
【Linux系统编程三十】线程池实现
【Linux系统编程三十】线程池实现,本篇重点线程池的原理以及代码实现,以及在类内创建线程的细节。原创 2024-01-23 12:46:17 · 745 阅读 · 0 评论 -
【Linux系统编程二十九】基于信号量的环形队列生产消费模型
【Linux系统编程二十九】基于信号量的环形队列生产消费模型,本篇重点,理解使用信号量,在环形队列生产消费模型中,信号量维持的是生产和消费者之间的同步与互斥关系,而加锁维护的是生产者和生产者,消费者和消费者之间的互斥关系。理解这层概念就能真正的理解基于信号量的环形队列生产模型!原创 2024-01-21 21:53:41 · 897 阅读 · 0 评论 -
【Linux系统编程二十八】基于条件变量的阻塞队列(生产消费模型)
【Linux系统编程二十八】基于条件变量的阻塞队列(生产消费模型):重点:条件变量(原理,接口),321原则,真正理解生产消费模型,伪唤醒。原创 2024-01-21 15:16:55 · 865 阅读 · 0 评论 -
【Linux系统编程二十七】:线程的互斥与同步(互斥锁的使用与应用)
【Linux系统编程二十七】:本文主要总结什么是互斥,为什么要互斥,以及互斥如何实现,主要原因是因为多线程并发访问共享资源,会造成数据不一致问题。介绍互斥锁的概念和相关接口使用,锁的应用场景,探讨同步场景下又该如何解决以及死锁问题。原创 2024-01-09 18:18:41 · 904 阅读 · 0 评论 -
【Linux系统编程二十六】:线程控制与线程特性(Linux中线程库/线程创建/线程退出/线程等待)
【Linux系统编程二十六】:本篇总结Linux下线程库中如何控制线程,理解线程控制块都是在线程库中被统一管理起来,线程tid的本质就是TCB在共享区里的起始地址。熟悉掌握线程的创建,退出,等待等操作,了解线程的一些特性:独立栈,局部存储,可分离线程等。原创 2024-01-03 19:38:59 · 962 阅读 · 1 评论 -
【Linux系统编程二十五】:线程概念(Linux中的轻量级进程)
【Linux系统编程二十五】:本篇知识点诸多,建议反复理解。线程是进程的一个执行分支,执行粒度比进程要细,如何理解?进程是系统资源分配的基本实体,而线程是系统的调度单位。如何理解?线程要比进程更轻量化,又该如何理解?页表是如何完成从虚拟地址到物理地址的映射的?什么是轻量级进程?原创 2023-12-29 18:52:24 · 1055 阅读 · 0 评论 -
【Linux系统编程二十四】:(信号3)--信号的捕捉处理与周边细节
【Linux系统编程二十四】:本篇知识点:sigaction如何使用,信号何时被捕捉,用户态和内核态,操作系统的本质,信号捕捉周边细节:可重入函数,volatile以及SIG_CHILD信号原创 2023-12-26 20:49:33 · 884 阅读 · 0 评论 -
【Linux系统编程二十三】:(信号2)--信号的保存
【Linux系统编程二十三】:本文总结信号的保存诸多细节,信号的保存主要依赖三张表,block表,pending表,handler表,这三张表凝聚了信号的核心,介绍了对应的获取或设置系统调用接口sigprocmask() /sigpending() /signal。还介绍了信号的其他相关概念,信号递达,信号未决等等。原创 2023-12-24 16:03:46 · 767 阅读 · 0 评论 -
【Linux系统编程二十二】:(信号1)--信号的产生与发送
【Linux系统编程二十二】:本篇总结信号产生的五大方式,前台进程,硬件中断,以及信号异步及信号的发送等知识点。原创 2023-12-22 14:50:30 · 880 阅读 · 0 评论 -
【Linux系统编程二十一】:(进程通信3)--消息队列/信号量(system v标准的内核数据结构的设计模式)
【Linux系统编程二十】:本篇将总结进程间通信之消息队列和信号量,并介绍system v标准下的内核数据结构是如何设计的,以及互斥,临界的等概念的引出,信号量的本质就是一把计数器,PV操作就是对计数器的加加减减,以上部分为后面的多线程作铺垫,原创 2023-12-12 11:44:34 · 1096 阅读 · 0 评论 -
【Linux系统编程二十】:(进程通信2)--命名管道/共享内存
【Linux系统编程二十】:(进程通信)--本篇总结进程之间的通信:命名管道和共享内存,详细的介绍使用它们之间的系统接口,以及各自的通信特性。原创 2023-11-23 14:45:57 · 138 阅读 · 0 评论 -
【Linux系统编程十九】:(进程通信1)--匿名管道/模拟实现进程池
【Linux系统编程十九】:(进程通信)--匿名管道/模拟实现进程池,进程通信的本质就是让不同的进程看到同一份公共的资源,而父子进程可以做到对同一个文件共同访问,这个文件是属于内存级文件。本篇总结管道具有5大特性和4种情况,以及管道的应用场景:实现一个简易的进程池。原创 2023-11-18 14:37:53 · 151 阅读 · 0 评论 -
【Linux系统编程十八】:(基础IO5)--动静态库共享/动静态加载问题(涉及地址空间)
【Linux系统编程十七】:(基础IO4)--动静态库共享/动静态加载问题(涉及地址空间)本文探讨一个可执行程序如何加载,如何与虚拟地址关联起来的?动态库如何实现多进程共享的?动态库与地址无关码?逻辑地址,虚拟地址,线性地址,物理地址?动态库加载细节等问题原创 2023-11-16 18:48:41 · 176 阅读 · 0 评论 -
【Linux系统编程十七】:(基础IO4)--文件系统(inode与软硬链接)
【Linux系统编程十六】:(基础IO3)--文件系统(inode与软硬链接)总结没有打开的文件在磁盘中是如何存储的,按照什么方式进行存储的呢?理解文件系统的inode与软硬链接,以及应用。原创 2023-11-13 14:55:08 · 96 阅读 · 0 评论 -
【Linux系统编程十六】:(基础IO3)--用户级缓冲区
【Linux系统编程十六】:(基础IO3)--用户级缓冲区,你真正理解缓冲区吗?我们所指的缓冲区是用户级的还是系统级的呢?缓冲的策略有哪些呢?缓冲区在哪里呢?缓冲区的意义又是什么呢?本篇带你理解缓冲区的慨念。原创 2023-11-08 19:04:17 · 340 阅读 · 0 评论 -
【Linux系统编程十五】:(基础IO2)--重定向实现原理 &&“Linux下一切皆文件“
【Linux系统编程十五】:本篇将带你理解重定向的实现原理:本质就是文件描述符数组的内容拷贝,提供输出重定向以及输入重定向案例。第二将探讨Linux下一切皆文件,为什么这么说,以及如何做到让Linux下一切皆文件。原创 2023-11-06 19:58:42 · 178 阅读 · 0 评论 -
【Linux系统编程十四】:(基础IO1)--文件描述符fd(进程与文件的联系)
【基础IO⑧】:当打开一个文件时,是谁打开文件?是进程!进程是如何打开的呢?进程可以打开许多文件,它是如何知道打开的文件在哪呢?进程和文件之间是根据什么关联到一起的呢?本文将为你总结进程与文件之间的联系:文件描述符原创 2023-11-05 17:39:29 · 227 阅读 · 0 评论 -
【Linux系统编程十三】:(进程控制3)--制作简易shell&&理解shell运行原理
【Linux系统编程十三】:本文将从shell的实现层面来阐述shell的运行原理,shell本质就是一个进程,其中用到的知识有进程创建,进程退出,进程等待,进程替换等知识,内建命令与普通命令的区别等。原创 2023-11-03 10:22:16 · 166 阅读 · 0 评论 -
【Linux系统编程十二】:(进程控制2)--进程替换/exec*()系列接口
【Linux系统编程十二】:进程替换/exec*()系列接口。本文总结进程程序替换的原理,以及替换过程中的一些细节,总结出4大特点:独立性,唯一性,不变性,不返回。并详细介绍与使用进程替换的系统调用接口exec*系列。原创 2023-11-02 18:46:50 · 139 阅读 · 0 评论 -
【Linux系统编程十一】:(进程控制1)--进程终止与进程等待
【进程控制①】:进程终止与进程等待。本文总结进程的退出状态是如何被知道的,是从退出码中获取,而父进程又是如何获取子进程的退出码呢?通过进程等待获取,进程等待的系统调用接口有哪些呢?代表什么意义呢?什么是阻塞等待和轮询等待呢?原创 2023-10-30 17:29:16 · 162 阅读 · 0 评论 -
【Linux系统编程十】:(进程概念4)--进程地址空间(虚拟内存与物理内存)
【进程概念④】:进程地址空间(虚拟内存与物理内存)。本文探讨进程的虚拟地址与物理地址之间的关系,得出平时我们认为的"内存"并不是真正的物理内存,而是虚拟内存,那么为什么要存在虚拟内存呢?总结进程地址空间以及页表的存在对进程管理的意义。原创 2023-10-25 17:31:01 · 157 阅读 · 0 评论 -
【Linux系统编程九】:(进程概念3) --进程环境变量/进程切换
深入篇【Linux】学习必备:本文总结有关进程的一些细节问题:进程环境变量与进程切换原创 2023-10-23 16:01:24 · 449 阅读 · 0 评论 -
【Linux系统编程八】:(进程概念2)--从底层探究进程概念/进程创建/进程状态/进程优先级
深入篇【Linux】学习必备:进程理解(从底层代码层面探究进程是什么?进程是如何被创建的?以及进程的各种状态,操作性是如何根据优先级调用进程的呢?本篇带你初步了解进程!原创 2023-08-13 19:32:33 · 229 阅读 · 1 评论 -
【Linux系统编程七】:(进程概念1)--认识冯诺依曼系统+理解操作系统(管理)
深入篇【Linux】学习必备:认识冯诺依曼系统+理解操作系统(''管理'')数操作系统都能够为底层硬件提供抽象的作用,作为中间人进行上层应用软件与下层硬件资源的管理,以及对下层硬件进行接口层面抽象以帮助上层应用软件的调用,理解操作系统,对于一个开发者来说是必不可少的,更重要的是它可以帮助你将软件和硬件串联起来,帮助你真正的理解计算机的运行原理。原创 2023-07-13 09:40:34 · 146 阅读 · 1 评论 -
【Linux系统编程六】:Linux小程序:进度条实现(make/makefile自动构建)
深入篇【Linux】学习必备:Linux小程序:进度条实现(make/makefile自动构建)进度条如何实现?如何做出有逼格的进度条?输出有颜色的进度条?原创 2023-07-07 17:34:05 · 623 阅读 · 1 评论 -
【Linux系统编程五】:谈gcc/g++使用及原理 + 动静态库介绍 + debug与release模式
深入篇【Linux】学习必备:本篇主要谈三个方面,第一方面:gcc/g++是如何完成程序的翻译过程?。第二方面:动静态库介绍。第三方面:debug与release模式。原创 2023-06-20 19:26:50 · 1308 阅读 · 1 评论 -
【Linux系统编程四】:【文本编辑器】vim的基本介绍及使用
深入篇【Linux】学习必备:【文本编辑器】vim的基本介绍及使用,vim的基本操作以及简单的vim配置,快速将vim打造成C++IDE的插件等原创 2023-06-08 20:39:59 · 756 阅读 · 1 评论 -
【Linux系统编程三】:理解(Linux软件包管理器)yum + yum的具体使用 + yum下载的有趣指令
深入篇【Linux】学习必备:理解【Linux软件包管理器】yum + yum的具体使用 + yum下载的有趣指令。yum是干什么吗?如何下载安装软件?理解yum源?本篇带你了解yum。原创 2023-06-04 16:31:36 · 1104 阅读 · 1 评论 -
【Linux系统编程二】:理解文件权限
深入篇【Linux】学习必备:理解文件权限,文件/目录中的读(r)写(w)和可执行(x)都代表着什么意思呢?权限是由什么组成的呢?文件权限又是如何表示的呢?目录权限和起始权限问题是什么?本篇带你理解这些问题!原创 2023-06-01 14:52:25 · 298 阅读 · 1 评论 -
【Linux系统编程一】:Shell命令运行原理 + 基本指令
深入篇【Linux】学习必备:Shell命令运行原理 + 基本指令,新手入门Linux必备知识。学好指令部分才可以为接下来的深入学习打好基础!原创 2023-05-30 19:53:31 · 611 阅读 · 1 评论