
Linux
文章平均质量分 93
2021dragon
越努力越幸运
展开
-
Reactor模式
Reactor反应器模式,也叫做分发者模式或通知者模式,是一种将就绪事件派发给对应服务处理程序的事件设计模式。原创 2022-08-22 19:56:54 · 5400 阅读 · 42 评论 -
IO多路转接 ——— select、poll、epoll
select是系统提供的一个多路转接接口。select函数的函数原型如下:参数说明:参数timeout的取值:返回值说明:select调用失败时,错误码可能被设置为:fd_set结构与sigset_t结构类似,fd_set本质也是一个位图,用位图中对应的位来表示要监视的文件描述符。调用select函数之前就需要用fd_set结构定义出对应的文件描述符集,然后将需要监视的文件描述符添加到文件描述符集当中,这个添加的过程本质就是在进行位操作,但是这个位操作不需要用户自己进行,系统提供了一组专门的接口,用原创 2022-08-16 16:53:38 · 6632 阅读 · 31 评论 -
Linux高级IO
其中,这个钓鱼场景中的各个事物都能与IO当中的相关概念对应起来,比如这里钓鱼的河对应就是内核,这里的每一个人都是进程或线程,鱼竿对应的就是文件描述符或套接字,装鱼的桶对应的就是用户缓冲区。因此张三、李四、王五他们三个人的钓鱼的效率是一样的,他们只是等鱼上钩的方式不同而已,张三是死等,李四是定期检测浮漂,而王五是通过铃铛来判断是否有鱼上钩。需要注意的是,这里问的是他们的钓鱼效率是否是一样的,而不是问他们整体谁做的事最多,如果说整体做事情的量的话,那一定是王五做得最多,李四次之,张三最少。...原创 2022-08-06 16:25:37 · 3549 阅读 · 22 评论 -
Linux线程池
文章目录Linux线程池线程池的概念线程池的优点线程池的应用场景线程池的实现原创 2022-03-10 09:47:21 · 4120 阅读 · 28 评论 -
Linux信号量
POSIX信号量原创 2022-03-02 13:59:29 · 8143 阅读 · 34 评论 -
Linux生产者消费者模型
文章目录生产者消费者模型为何要使用生产者消费者模型生产者消费者模型优点基于BlockingQueue的生产者消费者模型C++queue模拟阻塞队列的生产消费模型POSIX信号量POSIX信号量函数基于环形队列的生产消费模型生产者消费者模型为何要使用生产者消费者模型生产者消费者模型优点基于BlockingQueue的生产者消费者模型C++queue模拟阻塞队列的生产消费模型POSIX信号量POSIX信号量函数基于环形队列的生产消费模型...原创 2022-02-27 17:32:22 · 9881 阅读 · 30 评论 -
Linux线程安全
文章目录Linux线程互斥进程线程间的互斥相关背景概念互斥量mutex互斥量的接口互斥量实现原理探究可重入VS线程安全概念常见的线程不安全的情况常见的线程安全的情况常见的不可重入的情况常见的可重入的情况可重入与线程安全联系可重入与线程安全区别常见锁概念死锁死锁的四个必要条件避免死锁Linux线程同步条件变量同步概念与竞态条件条件变量函数为什么pthread_cond_wait需要互斥量条件变量使用规范Linux线程互斥进程线程间的互斥相关背景概念互斥量mutex互斥量的接口互斥量实现原理探究可重原创 2022-02-18 13:19:09 · 10517 阅读 · 37 评论 -
Linux多线程
文章目录Linux线程概念什么是线程线程的优点线程的缺点线程异常线程用途Linux进程VS线程进程和线程进程的多个线程共享关于进程线程的问题Linux线程控制POSIX线程库创建线程线程终止线程等待分离线程Linux线程互斥进程线程间的互斥相关背景概念互斥量mutex互斥量的接口互斥量实现原理探究可重入VS线程安全概念常见的线程不安全的情况常见的线程安全的情况常见的不可重入的情况常见的可重入的情况可重入与线程安全联系可重入与线程安全区别常见锁概念死锁死锁的四个必要条件避免死锁Linux线程同步条件变量同步概原创 2022-02-12 12:22:22 · 8386 阅读 · 43 评论 -
Linux任务管理与守护进程
文章目录任务管理进程组概念作业概念会话概念相关操作前台进程&后台进程jobs、fg、bgps命令查看指定的选项守护进程任务管理进程组概念每个进程除了有一个进程ID之外,还属于一个进程组,进程组是一个或多个进程的集合。通常,它们与同一作业相关联,可以接收来自同一终端的各种信号。每个进程组有一个唯一的进程组ID。每个进程组都可以有一个组长进程。组长进程的标识是,其进程组ID等于其进程ID。组长进程可以创建一个进程组,创建该组中的进程,然后终止。需要注意的是,只要在某个进程组中有一个进程存在原创 2022-02-07 18:10:04 · 10930 阅读 · 43 评论 -
Linux进程信号
文章目录信号入门生活角度的信号技术应用角度的信号注意信号概念查看系统定义的信号列表信号处理常见方式概览产生信号通过终端按键产生信号通过系统函数向进程发信号由软件条件产生信号由硬件异常产生信号信号捕捉初始模拟野指针异常总结思考一下阻塞信号信号其他相关常见概念在内核中的表示sigset_t信号集操作函数sigprocmasksigpending捕捉信号内核如何实现信号的捕捉sigactionSIGCHLD信号信号入门生活角度的信号技术应用角度的信号注意信号概念查看系统定义的信号列表信号处理常见方式原创 2021-12-23 15:36:31 · 9984 阅读 · 36 评论 -
Linux中的31个普通信号
Linux中31个普通信号各自的含义。信号编号信号名信号含义1SIGHUP如果终端接口检测到一个连接断开,则会将此信号发送给与该终端相关的控制进程,该信号的默认处理动作是终止进程。2SIGINT当用户按组合键(一般采用Ctrl+C)时,终端驱动程序产生此信号并发送至前台进程组中的每一个进程,该信号的默认处理动作是终止进程。3SIGQUIT当用户按组合键(一般采用Ctrl+\)时,终端驱动程序产生此信号并发送至前台进程组中的每一个原创 2021-12-18 14:42:58 · 3592 阅读 · 17 评论 -
Linux进程间通信
文章目录进程间通信介绍进程间通信的概念进程间通信的目的进程间通信的本质进程间通信的分类管道什么是管道匿名管道管道读写规则管道特点命名管道创建一个命名管道命名管道的打开规则用命名管道实现文件拷贝用命名管道实现serve&client通信system V共享内存共享内存示意图共享内存数据结构共享内存函数System V消息队列System V信号量进程互斥进程间通信介绍进程间通信的概念进程间通信简称IPC(Interprocess communication),进程间通信就是在不同进程之间传播或交原创 2021-11-15 22:59:59 · 35804 阅读 · 60 评论 -
Linux动态库和静态库
文章目录动静态库的基本原理认识动静态库动静态库各自的特征静态库的打包与使用打包使用动态库的打包与使用打包使用动静态库的基本原理动静态库的本质是可执行程序的“半成品”。我们都知道,一堆源文件和头文件最终变成一个可执行程序需要经历以下四个步骤:预处理: 完成头文件展开、去注释、宏替换、条件编译等,最终形成xxx.i文件。编译: 完成词法分析、语法分析、语义分析、符号汇总等,检查无误后将代码翻译成汇编指令,最终形成xxx.s文件。汇编: 将汇编指令转换成二进制指令,最终形成xxx.o文件。链接原创 2021-10-30 12:32:18 · 17940 阅读 · 47 评论 -
Linux基础IO
文章目录C语言文件接口回顾系统文件I/O文件描述符fd0&1&2文件描述符的分配规则重定向的原理C语言文件接口回顾C语言中的文件操作函数如下:文件操作函数功能fopen打开文件fclose关闭文件fputc写入一个字符fgetc读取一个字符fputs写入一个字符串fgets读取一个字符串fprintf格式化写入数据fscanf格式化读取数据fwrite向二进制文件写入数据fread从二进制文件原创 2021-10-27 17:21:03 · 14687 阅读 · 29 评论 -
函数和进程之间的相似性(开拓你的视野)
如果我们只学了C语言、C++或是JAVA等高级语言,我们可能只知道函数间可以相互调用,但当你学习了Linux如果你学过C语言,你应该有以下认识:一个C程序由很多函数组成,一个函数可以调用另一个函数,同时传递给它一些参数。被调用的函数执行一定的操作,然后返回一个值。每个函数都有它自己的局部变量。不同函数通过call/return系统进行通信。这种通过参数和返回值,在拥有私有数据的函数间通信的模式是结构化程序设计的基础。Linux鼓励将这种应用于程序之内的模式扩展到程序之间。一个进程可以使用原创 2021-10-05 16:30:46 · 2808 阅读 · 25 评论 -
Linux进程控制(精讲)
文章目录进程创建fork函数初始fork函数返回值写时拷贝fork常规用法fork调用失败的原因进程终止进程退出场景进程常见退出方法_exit函数exit函数return退出进程等待进程等待的必要性进程等待的方法wait方法waitpid方法获取子进程status具体代码实现进程程序替换替换原理替换函数函数解释命名理解做一个简易的shell进程创建fork函数初始fork函数返回值写时拷贝fork常规用法fork调用失败的原因进程终止进程退出场景进程常见退出方法_exit函数exit函原创 2021-10-01 18:44:33 · 26382 阅读 · 54 评论 -
Linux进程概念(精讲)
文章目录基本概念描述进程-PCB组织进程查看进程通过系统调用获取进程的PID和PPID通过系统调用创建进程- fork初始进程状态运行状态-R浅度睡眠状态-S深度睡眠状态-D暂停状态-T僵尸状态-Z死亡状态-X僵尸进程僵尸进程的危害孤儿进程基本概念描述进程-PCB组织进程查看进程通过系统调用获取进程的PID和PPID通过系统调用创建进程- fork初始进程状态运行状态-R浅度睡眠状态-S深度睡眠状态-D暂停状态-T僵尸状态-Z死亡状态-X僵尸进程僵尸进程的危害孤儿进程..原创 2021-09-23 15:06:12 · 11709 阅读 · 72 评论 -
初步认识操作系统(Operator System)
文章目录操作系统的定位设计操作系统的目的操作系统之上之下分别有什么管理的精髓:先描述,再组织操作系统的定位简单来说,操作系统就是一款进行软硬件资源管理的软件。设计操作系统的目的与硬件进行交互,管理所有的软硬件资源。为用户程序(应用程序)提供一个良好的执行环境。操作系统之上之下分别有什么首先,我们肉眼可见的就是计算机实物,也就是计算机底层的硬件。这些硬件看似是一个个罗列出来的,但实际在底层都遵守冯诺依曼的组织形式。而单单只有这些硬件是不够的,还需要有一个软件来对这些硬件进行管理。例如,内原创 2021-09-04 19:48:30 · 4013 阅读 · 23 评论 -
冯 • 诺依曼体系结构
文章目录冯•诺依曼体系结构推导内存提高冯•诺依曼体系结构效率的方法你用QQ和朋友聊天时数据的流动过程与冯•诺依曼体系结构相关的一些知识冯•诺依曼体系结构推导计算机的作用就是为了解决人的问题,而要解决问题,首先需要将数据或是问题输入到计算机当中,所以计算机必须要有输入设备。计算机解决完问题后还需要将计算结果输出显示出来,所以计算机必须要有输出设备。计算机通过输入设备得到数据,数据在计算机当中进行一系列的算术运算和逻辑运算后,通过输出设备进行输出,于是就得到了以下流程图。但是计算机当中只有算术运算功能原创 2021-09-02 16:17:51 · 5041 阅读 · 22 评论 -
Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
文章目录Linux软件包管理器 - yumLinux下安装软件的方式认识yum查找软件包安装软件卸载软件Linux编辑器 - vimLinux编译器 - gcc/g++Linux调试器 - gdbLinux项目自动化构建工具 - make/MakefileLinux第一个小程序 - 进度条gitLinux软件包管理器 - yumLinux下安装软件的方式在Linux下安装软件的方法大概有以下三种:1)下载到程序的源代码,自行进行编译,得到可执行程序。2)获取rpm安装包,通过rpm命令进行安装。(原创 2021-08-05 17:33:07 · 14619 阅读 · 48 评论 -
Shell的运行原理以及Linux当中的权限问题
文章目录Shell的运行原理Linux当中的权限问题Linux权限的概念如何实现用户账号之间的切换如何仅提升当前指令的权限如何将普通用户添加到信用列表Linux权限管理01.文件访问者的分类(人)02.文件类型和访问权限(事物属性)03.文件权限值的表示方法04.文件访问权限的相关设置方法chmod a=x /home/abc.txtchgrp users /abc/f2file指令目录的权限粘滞位关于权限的总结Shell的运行原理我们都知道Windows以图形化界面为交互方式,而Linux以命令行界面原创 2021-07-27 21:21:39 · 4140 阅读 · 30 评论 -
Linux常见指令汇总(入门必备)
文章目录ls指令pwd指令cd指令touch指令mkdir指令rmdir指令rm指令man指令cp指令mv指令cat指令more指令less指令head指令tail指令date指令cal指令find指令zip/unzip指令tar指令bc指令uname指令几个重要的热键关机指令ls指令在Windows当中会自动显示当前目录当中的所有子目录与文件,我们若想在Linux当中查看当前目录当中的所有子目录与文件就需要用到ls指令。语法: ls 选项 目录或文件功能: 对于目录,该命令列出该目录下的所有子目录原创 2021-07-25 22:02:02 · 7401 阅读 · 53 评论