Linux
文章平均质量分 97
Man9Oo
做想做的事,成为想成为的人 [shawyxy.github.io](网站第一时间更新,正在建设中...)
展开
-
I/O多路复用【Linux/网络】(C++实现select、poll和epoll服务器)
I/O 多路复用(也叫多路转接)是一种解决方案,它可以让一个进程或线程同时监控多个文件描述符(通常是网络套接字),并在其中一个或多个文件描述符准备好进行 I/O 操作时(至少一个),通知应用程序进行相应的读写操作。这样,应用程序可以在等待数据的过程中执行其他任务,而不会被阻塞,从而提高了程序的性能和响应速度。I/O 多路复用的实现方式有多种,比如 select,poll,epoll 等,它们各有优缺点,具体的选择要根据应用场景和需求来决定。原创 2023-10-08 00:31:52 · 648 阅读 · 1 评论 -
高级 I/O【Linux】
下面以“流”(stream)和冯诺依曼体系架构的视角来简单回顾一下什么是 I/O:I/O可以理解为数据在计算机内部和外部之间的流动。在冯诺依曼体系架构中,程序和数据都是以二进制编码的形式存储在存储器中,CPU可以直接访问存储器中的任何位置,也可以通过输入设备和输出设备与外部世界进行数据交换。因此,I/O就是数据在存储器和输入输出设备之间的传输,或者说是数据在CPU和外部世界(即外设)之间的交换。原创 2023-10-07 23:50:57 · 290 阅读 · 0 评论 -
守护进程【Linux】
每个进程组都有一个唯一的进程组ID,它等于该进程组中第一个进程的进程ID(PGID),以标识该进程组。值得注意的是,每一个shell都是不同的会话,在这里单独在一个shell运行进程,另一个用来打印信息,而作业运行的进程在同一个shell中运行才会使作业编号依次增加,也就是说,每一个shell窗口都对应着不同的作业。在这个窗口中创建的进程都是这个shell进程的子进程。这会确保父进程的父进程(即守护进程的祖父进程)在其子进程结束时会退出,保证了守护进程的父进程不再继续运行,而且守护进程不是首进程。原创 2023-06-03 21:11:03 · 1085 阅读 · 0 评论 -
线程池【Linux】
1. 引入2. 应用3. 实现封装线程封装线程池线程函数生产消费逻辑互斥锁条件变量线程函数主线程测试14. 优化5. 日志日志的重要性实现日志级别提取参数stdarg.h 头文件日志文件懒汉实现单例模式什么是懒汉模式什么是单例模式实现原创 2023-04-26 22:47:25 · 973 阅读 · 0 评论 -
信号量【Linux】
1. POSIX信号量1.1 引入1.2 概念1.3 PV原语(原理)1.4 相关接口2. 二进制信号量3. 基于环形队列的生产消费模式3.1 介绍3.2 为什么要使用环形队列3.3 环形队列的作用3.4 实现互斥和同步两个信号量框架生产和消费的逻辑完善环形队列1信号量完善环形队列2测试1原创 2023-04-24 23:58:37 · 563 阅读 · 0 评论 -
生产者消费者模式【Linux】
当Blocking Queue已满时,生产者线程将会被阻塞;当Blocking Queue为空时,消费者线程将会被阻塞。图片来源于:https://math.hws.edu/eck/cs124/javanotes7/c12/producer-consumer.pngBlocking Queue 与普通队列的主要区别在于它具有阻塞功能。当管道中没有数据可读时,从管道中读取数据的操作将会被阻塞,直到有新的数据可用;当管道已满时,向管道中写入数据的操作将会被阻塞,直到管道中有空闲位置可用。原创 2023-04-17 00:50:47 · 1320 阅读 · 0 评论 -
线程同步与互斥【Linux】
本文介绍了同步与异步,互斥与并发,原子性操作,临界资源和临界区,互斥锁,可重入和线程安全,死锁,线程同步,条件变量......原创 2023-04-15 00:21:16 · 1303 阅读 · 2 评论 -
线程概念与控制【Linux】
线程在进程的内部执行,是操作系统调度和执行的基本单位。在 Linux 中线程也被称之为轻量级进程。在 Linux 内核中(注意是Linux),并没有线程的概念,它把所有的线程以统一的方式当做进程实现并管理。因此,Linux 内核中并未给进程单独提供特殊的系统调用,也没有为线程实现特定的内核数据结构,自然也就没有为线程提供单独的调度策略。在 Linux 操作系统中,线程与其他进程共享部分资源。原创 2023-04-07 07:00:00 · 367 阅读 · 0 评论 -
进程信号【Linux】
我们之所以能理解生活中各种各样的信号,是因为我们知道各种的信号背后蕴含的信息,这些各式各样的信号指导着世界运作。不同信号对应着不同动作的执行。在计算机中,信号是一种进程间通讯的有限制的方式。它们用于在进程之间传递信息或通知进程发生了某个事件的机制。例如在Linux中,信号是一种软件中断,它为Linux提供了一种处理异步事件的方法。例如,当终端用户输入Ctrl+C来中断程序时,它会通过信号机制使进程终止。所有信号都有它的来源,但最终都是被操作系统识别、解释并发送给进程的。原创 2023-04-02 19:40:19 · 461 阅读 · 2 评论 -
进程间通信【Linux】
匿名管道在系统中没有实名,它只是进程的一种资源,会随着进程的结束而被系统清除。它的通信范围是存在父子关系的进程。因为管道没有实体,也就是没有管道文件,只能通过 fork 来复制父进程fd文件描述符,来达到通信的目的。所以,刚才说的父子进程看到的同一份资源,就是管道本身。虽然共享内存是最快的进程间通信的方式,但是它也是有缺点的。临界资源:多个进程(执行流)看到的公共资源就是临界资源;临界区:进程中访问临界资源的代码段。原创 2023-03-22 23:24:45 · 1304 阅读 · 1 评论 -
动静态库【Linux】
在实践中,我们一定会使用别人的库(不限于C、C++的库),在实践中,我们会使用成熟、被广泛使用的第三方库,而不会花费很多时间自己造轮子,为了能更好地使用库,就要在学习阶段了解其本质。.i.s.o.o.exe.out库中有main函数吗?下面会告诉你答案:当有多个不同的源文件中的main函数调用这些功能函数时,每次都要重新对这几个函数重复预处理、编译、汇编操作,各自生成.o文件,然后再和调用功能函数的源文件(一般是main函数)生成的.o,最后才生成可执行程序。原创 2023-03-15 23:14:28 · 1250 阅读 · 3 评论 -
基础I/O【Linux】
Linux下一切皆文件,这个文件可以是我们通常认为的文件,也可以是任何硬件。而文件并不仅指文件内容本身,还有它的属性(大小、创建日期等),这些都是数据。由此可见,文件的所有操作,不仅包括对文件内容的操作,而且包含对文件属性的操作。对于储存在磁盘上的文件,我们要访问它,首先要写访问文件的代码,然后编译生成可执行程序,运行它以后才能访问文件。那么,访问文件的直接主体是进程。磁盘是作为硬件存在的,所以只有操作系统才有权限对它读写,作为上层用户,是没有办法直接访问的。所以OS必须要提供相应的软件层的文件类系原创 2022-11-05 14:07:04 · 669 阅读 · 0 评论 -
进程控制【Linux】
fork创建子进程,其目的是让子进程去做父进程之外的事情,而这就需要「进程替换」操作了。新进程的调用还需要exec函数家族的参与,根据调用的程序的路径是否在环境变量中等情况,调用不同的exec函数。最后自己实现一个简单的shell。原创 2022-10-16 10:00:57 · 1326 阅读 · 0 评论 -
进程概念【Linux】
【2.5w字详讲】进程是Linux的第一座大山,而本文是进程的概念部分,理解它相当于爬到半山腰。由于这部分对于C/C++程序员非常重要,几乎是面试必不可少的一部分,足以可见它的重要性。其实学习这部分不仅仅是学习Linux,主要是学习大佬的思想,因为思想都是向通的。这篇文章是有史以来花的时间最久的一篇,因为我花了很多时间查阅资料,阅读书本,希望能帮助到大家,欢迎交流。原创 2022-10-01 18:02:22 · 1242 阅读 · 0 评论 -
介绍冯诺依曼体系、认识系统【Linux】
操作系统理论在计算机科学中,为历史悠久而又活跃的分支;而操作系统的设计与实现则是软件工业的基础与内核。可以说操作系统就是计算机中的哲学,了解OS的基本知识,更接近底层能更好地让我们在软件层面游刃有余。原创 2022-09-26 21:41:19 · 2260 阅读 · 0 评论 -
详讲yum包管理器/Vim编辑器/gdb调试器的基础用法【Linux】
超详细,包教包会~yum包管理器是什么?还觉得Vim编辑器不好用么?gdb调试器甚至比IDE还强大!原创 2022-09-15 23:52:04 · 711 阅读 · 0 评论 -
Linux基本操作【下】
在Linux基础操作(下)中,将会学习查看文本的一系列指令,包括less,more,head,tail……同时还必须掌握Linux中的权限,这将是学习文件系统的基础,也是今后许多指令的利器。原创 2022-08-11 13:26:31 · 499 阅读 · 0 评论 -
Linux基本操作【上】
Linux最大的特点是开源,因此它被广大公司用作后台服务器,所以作为一个程序员,学好Linux几乎是必不可少的。在学习初期,难免因它命令行的枯燥而停滞不前,但是一旦熟能生巧,命令行操作能让我们更加得心应手。同时也对系统底层有更深层次的理解。......原创 2022-08-09 23:54:20 · 359 阅读 · 0 评论