![](https://img-blog.csdnimg.cn/465f68eaf09042e9ad9df5e4544c0ae7.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux从入门到精通
文章平均质量分 94
该专栏会更新Linux相关知识文章。从入门开始,一点一点功能新,一点一点进步。
Ggggggtm
荣获 2023睿抗机器人开发者大赛(RAICOM)全国总决赛编程技能赛竞赛项目三等奖、第19届百度之星程序设计大赛河北省赛区银奖、第十四届蓝桥杯全国软件和信息技术专业人才大赛河北赛区C/C++程序设计大学B组二等奖、2023睿抗机器人开发者大赛(RAICOM)河北赛区编程技能赛竞赛项目二等奖、2023年度第四届全国大学生算法设计与编程挑战赛(春季赛)优秀奖、多次获得校级奖学金。目前正在学习C/C++、Linux操作系统、网络等内容,欢迎一起交流。
展开
-
Linux下的文件系统
文件可以被分为两种:内存文件(打开的文件)、磁盘文件(未被打开的文件)。在Linux操作系统中,内存文件和磁盘文件是两种不同的概念,它们在系统中的作用和存储方式都有所不同。下面将对这两种文件类型进行详细的解释和举例。通俗的理解内存文件:我们通常对文件进行读写时,都是需要先将文件打开,也就是加载到系统的内存中。同时对打开的文件创建对应的数据结构。,内存文件详解可参考文章(原创 2023-11-13 19:30:14 · 590 阅读 · 15 评论 -
【Linux从入门到精通】多线程总结(线程池、线程安全问题和常见锁)详解
本篇文章主要是对线程池进行详解。同时引出了单例模式的线程池,也对线程安全问题进行了解释。其中包含了智能指针、STL容器、饿汉模式的线程安全。也对常见的锁:悲观锁(Pessimistic Locking)、乐观锁(Optimistic Locking)、互斥锁(Mutex Lock)、读写锁(Read-Write Lock)、自旋锁(Spin Lock)和条件变量(Condition Variable)进行了讲解。重点对读写锁进行了讲解。希望本篇文章会对你有所帮助。原创 2023-09-29 13:01:22 · 726 阅读 · 20 评论 -
【Linux从入门到精通】信号量(信号量的原理与相关操作接口)详解
本篇文章重点对信号量的概念,信号量的申请、初始化、释放、销毁等操作进行讲解。同时举例把信号量应用到生产者消费者模型来理解。希望本篇文章会对你有所帮助。信号量(Semaphore)是操作系统中一种用于实现线程间同步与互斥的机制。它本质就是一个计数器,用于控制多个线程对共享资源的访问。信号量可以被视为一个简单的整数变量,并且可以进行原子操作,包括等待(wait)和释放(signal)。原创 2023-09-24 12:24:41 · 577 阅读 · 30 评论 -
生产者消费者问题(互斥锁和条件变量的结合)
本篇文章对生产者消费者(模型)问题进行了详解。其中给出了基于阻塞队列的生产者消费者模型demo代码和对涉及到的条件变量与互斥锁的操作也进行了详细解释。解释了条件变量等待时,为什么还需要一把锁的问题。对生产者消费者(模型)问题进行总结,且解释了生产者消费者(模型)问题效率提升的所在。希望本篇文章会对你有所帮助。原创 2023-09-19 14:34:53 · 756 阅读 · 44 评论 -
【Linux从入门到精通】线程互斥与互斥锁的使用与原理详解
上篇文章我们对线程 | 线程介绍&线程控制介绍后,本篇文章将会对多线程中的线程互斥与互斥锁的概念进行详解。同时结合实际例子解释了可重入与不被重入函数、临界资源与临界区和原子性的概念。希望本篇文章会对你有所帮助。原创 2023-09-16 12:06:53 · 983 阅读 · 21 评论 -
【Linux从入门到精通】线程详解(线程与进程区别)
当了解完线程的控制以后,我们先大概的总结一下线程的优缺点。创建一个新线程的代价要比创建一个新进程小得多。与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多。线程占用的资源要比进程少很多。能充分利用多处理器的可并行数量。在等待慢速I/O操作结束的同时,程序可执行其他的计算任务。计算密集型应用,为了能在多处理器系统上运行,将计算分解到多个线程中实现。I/O密集型应用,为了提高性能,将I/O操作重叠。线程可以同时等待不同的I/O操作。原创 2023-09-15 10:24:24 · 982 阅读 · 33 评论 -
【Linux从入门到精通】信号(信号保存 & 信号的处理)
本篇文章接着信号(初识信号 & 信号的产生)进行讲解。本篇文章重点讲解了信号的保存与信号的处理过程。同时也解释了什么时候进行处理信号。举例详解,通俗易懂,快来围观吧!!!原创 2023-09-13 09:00:00 · 1215 阅读 · 37 评论 -
【Linux从入门到精通】信号(初识信号 & 信号的产生)
本篇文章对信号的概念进行了解释,同时详细解释了信号是怎么产生的。实例+详解。通俗易懂!!!并且知道了写信号的本质就是修该进程控制块内容等等。原创 2023-09-11 12:00:00 · 785 阅读 · 15 评论 -
【Linux从入门到精通】通信 | 共享内存(System V)
本篇文章接着上篇文章通信 | 管道通信(匿名管道 & 命名管道)进行讲解。本篇文章的中点内容是共享内存。结合实际例子进行了详细解释。通俗易懂!!!原创 2023-09-09 09:00:00 · 1830 阅读 · 44 评论 -
【Linux从入门到精通】通信 | 管道通信(匿名管道 & 命名管道)
进程通信是指不同进程之间进行数据交换、消息传递和协作的过程。在操作系统中,每个进程都是独立运行的单位,它们拥有各自的内存空间和执行环境。为了实现进程之间的互动和合作,需要通过进程通信来进行数据共享、状态同步、任务协作等操作。我们知道进程都是独立的,各自有各自的地址空间。而进程通信的本质是让不同的进程能够看到同一块“内存”。而这块内存并不属于任何一个进程,是所有进程共享的。在Linux中,管道是一种用于进程间通信的特殊文件。它可以连接一个进程的输出到另一个进程的输入,实现数据的传输和共享。原创 2023-09-06 20:05:48 · 1445 阅读 · 40 评论 -
【Linux从入门到精通】动静态库的原理与制作详解
动态库和静态库是两种代码库的形式,它们主要用于程序的模块化开发和代码共享。它们具有以下不同之处:静态库(Static Library): 静态库在编译时会被完全链接到可执行文件中,使得可执行文件包含了所有需要的库函数和数据。使用静态库的主要优点是程序的独立性,无需依赖外部库文件即可运行。静态库适用于一些较小的应用,或者需要独立部署的情况。动态库(Dynamic Library): 动态库在程序运行时由操作系统进行加载和链接,而不是在编译时完全链接到可执行文件。原创 2023-08-20 09:38:44 · 1652 阅读 · 44 评论 -
【Linux从入门到精通】文件描述符详解
本篇文章对Linux下的文件描述符进行了详细的解释。同时也举例说明的输出重定向。同时解释的LInux下一切皆为文件。在Linux操作系统中,文件描述符是一种用于访问文件或输入/输出资源的抽象概念,它是为了更有效地管理和操作文件、设备、套接字等资源而引入的。文件描述符的作用和重要性在操作系统和编程中具有深远意义。原创 2023-08-12 09:00:00 · 1958 阅读 · 32 评论 -
【Linux从入门到精通】文件I/O操作(C语言vs系统调用)
本篇文章讲述了一系列的文件操作函数。其实我们学的C语言的文件操作函数,底层都是封装的系统调用的接口。因为我们对文件的写入和读取,不就是对硬盘的写入和读取吗!文件可是放在硬盘上的。语言想要访问硬件设备,必须通过操作系统!!!每套语言都是有自己的文件操作函数,底层都是封装的系统调用的接口。但是操作系统不只是有Linux,还有windows等等。那语言就是封装所有的操作系统的接口呗。只不过是在调用时会有选择判断。这样封装后,语言就有了跨平台性。文件描述符。我们并没有对此进行详解。下篇文章会对此进行讲解。原创 2023-08-10 11:59:49 · 1414 阅读 · 33 评论 -
【Linux从入门到精通】进程的控制(进程替换)
在C++中,exec()系列函数提供了一种在程序中执行外部命令或可执行文件的方法。这些函数包括:execvp()、execv()、execvpe()、execlp()、execl()、execle()和execve()。原型:int execvp(const char *file, char *const argv[]);功能:用于在指定的文件路径中搜索可执行文件,并用指定的参数列表运行该文件。优点:可以直接使用文件名作为参数,而无需提供文件路径。返回值:如果函数执行成功,则不会返回任何值;原创 2023-07-24 23:13:01 · 387 阅读 · 14 评论 -
【Linux从入门到精通】进程的控制(进程退出+进程等待)
子进程的退出状态信息返回给了操作系统中的进程控制块内,为什么wait和waitpid能够拿到子进程的退出状态呢?wait和waitpid是系统调用接口, 就是操作系统內部的函数!!!当然可以拿到了。设置全局变量行吗?答案是不行的。一旦对全局变量修改,就会发生写时拷贝。同时信号也无法处理。由于内容较多,分为两篇文章来整理。本篇文章主要讲述的是进程的退出和进程等待,下篇文章会讲到进程的替换。原创 2023-07-23 16:25:30 · 906 阅读 · 17 评论 -
【Linux从入门到精通】gdb调式技巧大全
本篇文章会对开发工具:gdb调试器的使用进行讲解。希望本篇文章会对你有所帮助。gdb是一个基于命令行的调试器,主要用于Linux和UNIX系统,支持多种编程语言,如C、C++、Java等。相比 Visual Studio 之下,gdb主要通过命令行界面进行操作,需要开发人员熟悉一些特定的命令和参数。原创 2023-07-12 10:53:03 · 1027 阅读 · 35 评论 -
【Linux从入门到精通】进程地址空间(虚拟地址 vs 物理地址)
本篇文章会围绕三个问题(什么是地址空间?地址空间是如何设计的?为什么要有地址空间?)进行展开讲述。其中主要是了解虚拟地址和物理地址的区别。希望本篇文章会对你有所帮助。原创 2023-06-24 19:11:10 · 2055 阅读 · 61 评论 -
【Linux从入门到精通】进程的状态
当我们了解到进程是什么东西后,我们再来看看进程都会有那些状态。在Linux操作系统中,进程的状态包括运行状态(R)、等待(S)、被中断(D)、僵尸 (Z) 状态、停止(T)状态等。进程是现代操作系统中的一个重要概念,是指正在运行或等待操作系统分配资源的程序。在执行过程中,进程会出现不同的状态,这些状态描述了进程的不同状态,包括就绪、运行、阻塞和结束状态。原创 2023-06-01 10:11:08 · 2013 阅读 · 36 评论 -
【Linux从入门到精通】上下文概念详解
本篇文章结合实例对上下文概念进行详解。在理解上下文概念时,同时会引出了进程上下文、中断上下文、上下文数据、时间片等概念详解。我们都会对此进行详细解释,超级容易理解。原创 2023-05-16 17:43:07 · 3785 阅读 · 90 评论 -
【Linux从入门到精通】进程的基本概念
本篇文章会对进程进行深入讲解。同时会讲解PCB(进程控制块)。我们在讲述进程之前,是学习了冯诺依曼体系结构和操作系统管理,是我们理解起来进程更加容易。而不是突然蹦出来一个概念,显得枯燥难理解。本篇文章讲解详细,通俗易懂!原创 2023-05-13 08:48:59 · 1282 阅读 · 46 评论 -
【Linux从入门到精通】了解冯诺依曼体系结构
本片文章会对冯诺依曼体系结构进行详解。同时,我们对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上。其中也详解了存储分级。本片文章同时也会对数据在冯诺依曼结构上的交互进行讲解。超级详细,通俗易懂!原创 2023-05-11 17:32:32 · 1202 阅读 · 38 评论 -
【Linux从入门到精通】C语言模拟实现进度条小程序
在Linux下,我们安装软件时会经常看到进度条,来告知我们安装的进度。我们不妨自己模拟实现一个进度条,看看其中的细节。模拟实现进度条并不困难,但其中的细节我们又不可忽视。本篇文章会对模拟实现进度条进行详解。其中还涉及到了缓冲区和回车、换行的概念和细节解释,超级详细!原创 2023-05-07 13:48:04 · 1400 阅读 · 35 评论 -
【Linux从入门到精通】Linux常用基础指令(中)
本篇文章接上篇文章(【Linux从入门到精通】Linux常用基础指令(上))进行详解。本章的指令(mv、cp、more、less、head、tail指令)相对较为重要,使用频率较高,难度相对上篇文章较难,也较为复杂。希望能对你的理解有所帮助。原创 2023-04-27 20:45:07 · 967 阅读 · 16 评论 -
【Linux从入门到精通】Linux常用基础指令(上)
本篇文章会对Linux下的常用进行详细解释,并附加实例。通俗易懂,超级相机,希望会对你有所帮助。原创 2023-04-26 11:11:25 · 1034 阅读 · 40 评论 -
【Linux从入门到精通】vim的基本使用各种操作详解
vim下的操作多而杂,本篇文章会对vim下常用的多个操作进行详细解释。附加动图解释多个操作,超级详细,希望会对你有所帮助。原创 2023-04-30 15:49:18 · 1160 阅读 · 12 评论 -
【Linux从入门到精通】Linux的简单介绍及环境搭建
Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。同时,对操作系统的概念进行解释。原创 2023-04-21 18:08:00 · 663 阅读 · 35 评论 -
【Linux从入门到精通】Linux中的权限管理(实例+详解)
本篇文章对Linux下的普通用户和超级用户进行了对比详解。同时有添加和删除普通用户的讲解。也详细的解释了普通文件的权限、拥有者、所属组设置方法,和对目录的权限设置方法。根据需求引出粘滞位,对粘滞位进行详细的解释。解释每个要点是都带有实例,超级详细且容易理解!!!原创 2023-04-29 12:12:12 · 1426 阅读 · 35 评论 -
【Linux从入门到精通】Linux常用基础指令(下)
本篇文章接上篇文章(【Linux从入门到精通】Linux常用基础指令(上)、【Linux从入门到精通】Linux常用基础指令(中))进行详解。本章的指令(grep、zip、tar、bc、uname、cal)相对没有那么常用,难度相对适中。同时也讲述了几个热键。希望能对你的理解有所帮助。原创 2023-04-28 19:51:34 · 2182 阅读 · 17 评论