Linux
文章平均质量分 95
三眼五显仙人~
三眼五显仙人,魈,听召,前来守护。
展开
-
【Linux学习笔记】一篇文章彻底搞定“Linux生产者与消费者“!
单例模式是一种"经典的, 常用的, 常考的"设计模式.什么是设计模式IT行业这么火, 涌入的人很多. 俗话说林子大了啥鸟都有. 大佬和菜鸡们两极分化的越来越严重. 为了让菜鸡们不太拖大佬的后腿, 于是大佬们针对一些经典的常见的场景, 给定了一些对应的解决方案, 这个就是设计模式在编写多线程的时候,有一种情况是十分常见的。那就是,有些公共数据修改的机会比较少。相比较改写,它们读的机会反而高的多。通常而言,在读的过程中,往往伴随着查找的操作,中间耗时很长。给这种代码段加锁,会极大地降低我们程序的效率。原创 2024-05-13 18:00:00 · 900 阅读 · 4 评论 -
【Linux学习笔记】一篇文章彻底搞定 “Linux同步与互斥“ !
⭐线程安全描述的是线程并发的问题,可重入描述的是函数的特点。⭐不可重入函数,在多线程访问可能会出现线程安全的问题,但是一个函数可重入,那么不会出现线程问题。原创 2024-05-13 09:35:38 · 902 阅读 · 3 评论 -
【Linux学习笔记】一篇文章彻底搞定 “Linux多线程“ !
在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行,本质是在进程地址空间内运行在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流⭐总结一下就是:线程是进程内的一个执行分支,线程的执行粒度要比进程更细。原创 2024-04-28 21:43:41 · 794 阅读 · 3 评论 -
【Linux学习笔记】一篇文章彻底搞定 “Linux进程信号“ !
每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到,例如其中有定义 #define SIGINT 2 编号34以上的是实时信号,本章只讨论编号34以下的信号,不讨论实时信号。这些信号各自在什么条件下 产生,默认的处理动作是什么,在signal(7)中都有详细说明: man 7 signal。原创 2024-04-28 21:33:21 · 1089 阅读 · 0 评论 -
Linux学习笔记】一篇文章彻底搞定 “Linux进程间通信“ !
当创建子进程的时候,子进程并不会继承父进程的文件系统,只会继承文件描述符表,此时仅仅是子进程的指向父进程的文件系统,此时就是浅拷贝,此时父子进程就做到了不同的进程,看到同一份资源(缓冲区,由操作系统提供的空间),struct file是允许多个进程通过指针指向我的!⭐所以基于文件的,让不同进程看到同一份资源的通信方式,就叫做管道!!!管道是Unix中最古老的进程间通信的形式。我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”⭐。原创 2024-04-27 21:57:10 · 1195 阅读 · 2 评论 -
【深入解析文件系统原理inode,软硬链接,动态静态库区别】
硬链接本质就是在指定的目录下,插入新的文件名和目标文件的映射关系,并让inode的引用计数++软连接本质就是一个独立文件, 软连接内容里面放的目标文件的路径!软连接类似windows下的快捷方式 软连接类似windows下的快捷方式!总结:真正找到磁盘上文件的并不是文件名,而是inode。其实在linux中可以让多个文件名对应于同一个 inode。abc和def的链接状态完全相同,他们被称为指向文件的硬链接。内核记录了这个连接数,inode 263466 的硬链接数为2。原创 2024-04-13 15:28:30 · 1145 阅读 · 0 评论 -
【Linux文件操作的底层原理:文件描述符与缓冲区】
pathname: 要打开或创建的目标文件flags: 打开文件时,可以传入多个参数选项,用下面的一个或者多个常量进行“或”运算,构成flags。参数:O_RDONLY: 只读打开O_WRONLY: 只写打开O_RDWR : 读,写打开这三个常量,必须指定一个且只能指定一个O_CREAT : 若文件不存在,则创建它。需要使用mode选项,来指明新文件的访问权限O_APPEND: 追加写O_TRUNC: 如果文件存在且是可写的,则截断文件为零长度。原创 2024-02-04 19:51:08 · 854 阅读 · 4 评论 -
【打造你自己的Shell:编写定制化命令行体验】
首先我们知道我们的程序,只能执行我们的代码,如果我们创建的子进程想执行其他程序的代码呢?此时就要使用我们的进程程序替换。进程程序替换(Process Program Replacement)是指一个正在运行的进程,通过加载新的程序代码替代原有的程序代码。进程程序替换的优势在于,它允许一个进程在不产生新进程的情况下改变其执行的程序,从而实现动态的程序加载和切换,而这个替换的工作,存在很多的数据变更,而操作系统是软硬件资源的管理者,所以实现替换工作一定会有对应的系统调用接口。原创 2024-01-18 20:07:40 · 1481 阅读 · 38 评论 -
【解锁创意之门:环境变量引领你的编程奇思妙想】
在系统当中查找一个最合适调度的进程的时间复杂度是一个常数,不随着进程增多而导致时间成本增 加,我们称之为进程调度O(1)算法!参考文档所以之前说‘程序的地址空间’是不准确的,准确的应该说成 进程地址空间 ,那该如何理解呢?看图:在多进程编程中,当创建子进程时,操作系统会使用写时复制(Copy-on-Write,COW)技术来优化内存的使用。写时复制是一种延迟内存拷贝的策略,它允许父子进程共享相同的物理内存页,直到其中一个进程尝试修改该页的内容时,才会真正进行拷贝。原创 2024-01-07 18:40:07 · 2003 阅读 · 12 评论 -
【计算机系统基石与Linux进程管理深度解析】
看看Linux内核源代码怎么说为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。一个进程可以有几个状态(在 Linux内核里,进程有时候也叫做任务)。/**/R运行状态(running): 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠 (interruptible sleep))。原创 2023-12-05 22:02:16 · 4071 阅读 · 29 评论 -
【深入解析git和gdb:版本控制与调试利器的终极指南】
git是一个分布式版本控制系统,用于跟踪项目代码的变化。版本控制器(Version Control System,VCS)是一种记录和管理文件或代码变更的系统。它追踪文件的历史变更,允许用户回溯到先前的状态,并支持多人协同开发。GitHub是一个基于Git的代码托管平台,提供了代码仓库的托管服务。开发者可以将他们的项目代码存储在GitHub上,并与团队成员协同工作。GitHub也提供了许多协作和社交功能,如问题跟踪、代码审查、项目管理等,使得团队协作更加便捷。Gitee(码云)是中国。原创 2023-11-28 22:30:52 · 2531 阅读 · 53 评论 -
【命令行魔法:掌握Linux基础工具开发的独门技艺】
这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件.安装完毕之后可以通过拖拽的方式将文件上传过去.关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!可以通过 ping 指令验证。原创 2023-11-15 23:22:39 · 912 阅读 · 58 评论 -
【Linux权限:系统中的数字锁与安全之门】
目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。本章结束啦!下章见,拜拜。原创 2023-11-08 08:06:22 · 4117 阅读 · 69 评论 -
【Linux入门指南:掌握开源操作系统的基础知识】
1.知道当前系统登陆的用户2.查看当前有多少用户在登录当前系统3.查看当前所处的目录4.查看当前/root目录下有哪些文件5.清屏。原创 2023-10-20 13:11:28 · 1072 阅读 · 59 评论