
Linux从入门到精通
文章平均质量分 92
本专栏将会介绍Linux操作系统和网络两大模块。具体包含:Linux基础指令及相关常用工具、进程、ext2文件系统、通信(命名管道、匿名管道、共享内存、消息队列、信号量)、信号、线程(轻量级进程)、以及网络OSI7层,并重点介绍http/https、TCP/UDP、ip、MAC以及高级I/O多路转接
小白debug~
上海某中厂实习,cpp转go,欢迎相互交流,秋招一起上岸大厂
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Linux 网络 (五)】Tcp/Udp协议
本篇文章主要介绍TCP/Udp报头相关字段,以及tcp可靠性保证机制:确认应答信号、重发机制、连接管理、窗口控制、流量控制、拥塞控制;以及tcp连接管理(3次握手,4次挥手,及相关状态转变细节)原创 2024-12-23 17:53:11 · 1689 阅读 · 0 评论 -
【Linux 网络 (三)】:https协议加密解密分析 —— 秘钥协商
本篇博客主要介绍加密、解密、常见加密方式(对称加密和非对称加密)、数据摘要 && 数据指纹、数字签名、HTTPS 的⼯作过程探究(加密流程)原创 2024-12-23 17:50:58 · 835 阅读 · 0 评论 -
【Linux网络 (二)】套接字编程
本篇文章将会详细介绍套接字概念,以及TCP/UDP套接字编程接口原创 2024-11-23 11:39:35 · 1245 阅读 · 15 评论 -
【Linux 网络(一)】初识网络,理解TCP/IP五层模型
本篇文章将会介绍网络产生的背景、OSI网络7层、已经网络传递过程中报文解包封装的宏观结构原创 2024-08-27 21:09:31 · 1466 阅读 · 0 评论 -
Linux 操作系统:基于环形队列的生产者消费者模型
环形队列采用数组模拟,用模运算来模拟环状特性。和基于阻塞队列的生产者消费者模型不同的是,环形队列将公共资源分成多份使用,而阻塞队列则是将公共资源当作一个整体使用!!Linux OS:线程封装 | RAII封装锁 | 随机数运算任务封装。原创 2024-08-09 21:40:19 · 1482 阅读 · 21 评论 -
Linux OS:基于阻塞队列的生产者消费者模型
阻塞队列是一种常用于实现生产者消费者模型的数据结构。和普通队列不同的时,队列存在上限,当队列未满时,往队列中插入数据的操作会被阻塞;当队列为空时,从队列中获取数据的操作也会被阻塞!在Linux OS:线程封装 | RAII封装锁 | 随机数运算任务封装中,对锁进行了封装,后续加锁解锁操作都基于此!原创 2024-08-05 14:16:40 · 1372 阅读 · 2 评论 -
Linux:线程概念 | 线程控制
当CPU调度执行该“”进程“时,只会执行原本进程中的一部分代码和数据,执行我们要执行任务的一部分任务,我们将这种比传统“进程”更加轻量化的进程就称为线程!)下,其中一些线程抢占锁的能力是非常强的,导致其他线程长时间无法获得锁资源,导致线程饥饿问题。我们也将这种线程称为轻量级进程!在Linux中,如果操作系统真的支持线程,此时在计算机中必然存在大量的线程,所以OS需要对线程进行管理。如果不关心线程的返回值,join是一种负担,这个时候,我们可以将线程设置为分离状态,告诉系统,当线程退出时,自动释放线程资源!原创 2024-07-28 22:15:00 · 2165 阅读 · 3 评论 -
Linux进程信号的产生、保存、处理
详细介绍信号的产生、保存、处理全流程。包含core dump、可重入函数、volatile关键字、SIGCHLD信息相关知识原创 2024-07-10 05:45:00 · 1867 阅读 · 24 评论 -
Linux通信System V:消息队列 & 信号量
System V版本基于消息队列和信号量的通信方式,以及OS如何管理ipc资源原创 2024-12-21 00:22:15 · 704 阅读 · 1 评论 -
Linux通信:基于System V共享内存方式实现进程间通信
一、基于共享内存通信方式原理二、共享内存优缺点2.1 共享内存优缺点2.2 基于文件通信 vs 共享内存通信三、相关函数调用接口2.1 创建共享内存(shmget)2.1.1 key2.1.2 size2.1.3 shmflg2.1.4 返回值2.2 共享内存段挂接到进程地址空间(shmat)2.3 将共享内存段与当前进程脱离(shmdt)2.4 用于控制共享内存(删除)(shmctl)四、基于System V共享内存实现进程间通信原创 2024-07-12 21:30:00 · 2089 阅读 · 5 评论 -
Linux:进程池制作(匿名管道版本 & 命名管道版本)
创建进程是有时间成本的。当计算机要执行任务时才创建进程,势必会影响执行任务的性能。所以我们可以通过提前创建一批进程,当有任务需要被执行时直接喂给这些进程即可。我们把这些提前创建好的进程称为进程池!!下面我们会通过一个主进程(父进程)通过匿名管道和一批工作进程(子进程)进行通信。父进程通过不断派发任务给子进程,子进程通过读取管道文件中的任务码来执行对应的任务,从而模拟进程池的整个行为!!原创 2024-07-11 21:30:00 · 1502 阅读 · 6 评论 -
Linux进程间通信:匿名管道 &命名管道
管道最早是UNIX中的一种进程通信方式。我们把一个进程到另一个进程的一个数据流称为管道!!管道文件时一个纯内存级文件,不需要想磁盘刷新。进程间通信的本质是不同进程看到同一份资源。该资源一般由操作系统提供!!(比如缓冲区) 进程间通信目的主要有:数据传输:一个进程需要将它的数据发送给另一个进程。资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行(如Debug原创 2024-07-11 21:30:00 · 1393 阅读 · 1 评论 -
Linux文件:动静态库制作 & 动态库链接原理解析
动静态库制作、动态库链接原理解析、链接库报错原理解析原创 2024-12-20 21:31:53 · 1153 阅读 · 0 评论 -
Linux文件:EXT2文件系统工作原理 & 软硬链接
一、磁盘结构、存储策略:磁盘存储结构、磁盘存储策略、磁盘的逻辑存储结构二、如何管理磁盘文件三、如何管理组、每个组保存的数据种类、如何管理数据1、节点表(inode Table)、inode Bitmap、Data blocks、Block Bitmap、Group Descriptor Table、超级块(Super Block)四、目录、文件名和inode映射关系五、挂载:格式化、挂载六、操作系统查找、打开、创建文件过程:查找文件、打开文件、创建文件七、软硬链接原创 2024-07-10 00:22:20 · 1396 阅读 · 8 评论 -
Linux文件:缓冲区、缓冲区刷新机制 | C库模拟实现
我们可以快速向缓冲区中写入数据,然后通过一定的刷新方式。将数据从语言级别的缓冲区中拷贝到内核缓冲区。下面我们调用3个常见的C库函数和一个系统调用,都向显示器文件中进行写入。对于文件的IO等操作,用户可以直接通过系统调用直接向操作系统进行读操作和写操作。缓冲区可以暂存数据,必定存在一定的刷新机制。的原因在于:系统调用在语言之下,数据不是向语言基本的缓冲区中写入;此时数据属于操作系统,不在属于进程!同时由于缓冲区的存在,我们可以积累一定的数据后在统一发生,C所提供的缓冲区是二次加上的,由C本身所提供!原创 2024-05-23 20:46:19 · 1264 阅读 · 8 评论 -
Linux文件:重定向底层实现原理(输入重定向、输出重定向、追加重定向)
在Linux中,操作系统会为每一个文件创建对应的描述结构体对象。该结构体中一定存在3个部分:打开文件的所有属性、文件的操作集、文件缓冲区(内存)。其中由于冯诺依曼体系决定了,无论对文件进行读操作还是写操作,都需要先将数据加载到文件缓存区!我们在应用层进行对数据读写的操作本质上是用户缓冲区和内核数据缓冲区之间的相互拷贝!!!原创 2024-05-15 23:06:49 · 1784 阅读 · 5 评论 -
Linux:文件 | 文件描述符 | Linux下一切皆文件
所有对文件的操作本质上就分为:对内容的修改和对属性的修改。内容是数据,属性也是数据。所以存储文件,必须同时存储文件相关的数据信息和属性信息。默认情况下文件存储在磁盘中,但由于冯诺依曼体系,CPU只能从内存中获取文件信息,对文件进行操作。所以当进程打开文件时,OS需要先将文件信息加载到内存中,在被CPU调度执行对文件进行操作!!一个进程可以打开多个文件,多个进程也可以打开同一个文件。所以当文件被加载到内存时,被打开的文件可能存在多个。操作系统需要对这些文件进行管理。先组织在描述!!原创 2024-05-15 19:21:39 · 1341 阅读 · 0 评论 -
Linux:进程终止和进程替换
一、进程终止1.1 进程退出场景和创建退出方式1.2 exit 和 _exit区别二、进程程序替换2.1 进程替换函数2.2 函数解释及命名解释函数解释命名解释2.3 单进程程序替换(无子进程)2.3.1 带`l`函数进程替换(execl为例)2.3.2 带`p‘函数进程替换(execlp为例)2.3.3 execv、execvp替换函数应用实例2.4 进程替换其他程序,调用运行其他语言程序三、进程替换时环境变量的继承3.1 进程替换时,子进程环境变量由来3.2 为何父子进程间原创 2024-07-07 00:31:00 · 1457 阅读 · 4 评论 -
Linux:进程等待究竟是什么?如何解决子进程僵尸所带来的内存泄漏问题?
一、进程等待的概念二、进程等待存在的意义三、如何进行进程等待3.1 wait()是实现进程等待3.2 waitpid()实现进程等待四、获取子进程status实现机制五、阻塞等待和非阻塞等待5.1 阻塞等待5.2 非阻塞等待(非阻塞 + 轮询方案)六、非阻塞轮询方案示例演示原创 2024-04-06 10:46:45 · 3553 阅读 · 96 评论 -
进程并发究竟是如何进行进程切换的?Linux内核原理解析
实时操作系统(Real Time Operating System,简称RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。此时操作系统会在进程被剥离前,将当前进程的运行相关信息保存到PCB中,然后将该进程的PCB从活跃队列中移除,加载到过期队列。至于新产生的需要被调度的进程,则是直接添加到过期队列中。活跃进程、过期进程。原创 2024-04-06 10:50:22 · 1903 阅读 · 5 评论 -
Linux: 进程地址空间究竟是什么?进程地址空间存在意义何在?
一、内存究竟是什么?分为哪些?二、内存是真实物理空间?三、进程地址空间(虚拟地址)3.1 为何同一个变量地址相同,保存的数据却不同?四、为什么需要地址地址空间和页表的存在?4.1 真实内存无序便有序4.2 进行内存安全检查4.3 进程管理和内存管理藕接五、其他细节问题5.1 操作系统如何获取进程页表相关信息5.2 操作系统如何确定内存中是否分配空间、是否存在内容?原创 2024-03-31 18:14:06 · 3632 阅读 · 70 评论 -
Linux: 命令行参数和环境变量究竟是什么?
一、命令行参数:main函数参数意义、命令行参数概念、命令行参数实例二、环境变量:环境变量概念、 环境变量、PWD、HOME三、获取环境变量的3种方式:getenv()函数、main函数传参、通过第三方变量environ获取四、环境变量如何获取:子进程环境变量获取方式、父进程环境变量获取方式五、本地变量和环境变量六、Linux命令分类和环境变量相关的命令原创 2024-07-05 18:15:18 · 1561 阅读 · 6 评论 -
Linux: 进程优先级
在计算机中,CPU的个数是有限的(大部分都是一个),并且在同一时间内CPU只能调度执行一个进程。CPU的资源严重不足,必然衍生出进程竞争,即进程优先级。PRL表示进程的优先级,数字越小,进程优先级越高,一般情况下PRL默认80。NI表示进程的nice值,用于调整PRL的大小。PRL越小,进程被调度的优先级越高。但操作系统作为一款管理进程(功能之一)的软件,OS在调度进程时,需要较为均衡的让每一个进程都被调度。进程优先级是操作系统用于确定进程执行顺序的一个参数,它反映了进程在CPU资源分配中的先后顺序。原创 2024-03-31 18:16:09 · 831 阅读 · 1 评论 -
Linux: 僵尸进程究竟是什么?有什么危害?
僵尸进程是什么?为什么会产生僵尸进程?有什么危害?原创 2024-03-28 15:51:24 · 868 阅读 · 5 评论 -
进程状态究竟是什么?在Linux操作系统中具体存在哪些进程状态?
;进程状态在操作系统中分为为:新建状态、就绪状态、阻塞状态、挂起状态以及结束状态。但在每一款具体的操作系统中,进程状态多存在差异,并非完全对应.。比如在Linux中分为僵尸进程、孤儿进程、前台进程、后台进程、以及睡眠状态等等原创 2024-03-26 18:12:12 · 1928 阅读 · 32 评论 -
Linux: fork()究竟是如何工作的?为何一个变量能够接受两个返回值?
LInux: fork()究竟是如何工作的?为何一个变量能够接受两个返回值?为何需要创建子进程。fork底层实现机制解析原创 2024-03-30 19:56:04 · 2124 阅读 · 1 评论 -
操作系统究竟是什么?在计算机体系中扮演什么角色?
操作系统是一款进行软硬件资源管理的软件。操作系统通过将软硬件资源管理好(手段),从而给用户提供一个良好(稳定、高效、安全)易用的使用环境(目的)。操作系统是如何管理软硬件资源?在计算机体系中扮演什么角色?如何给操作用户提供一个良好易用的使 用环境?原创 2024-03-25 06:25:43 · 2538 阅读 · 10 评论 -
冯诺依曼体系究竟是什么?
数据必须先传到存储区(即内存中),CPU在通过从存储器中读取数据,并将处理后的结果先返回给存储器,在通过存储器将结果传给输出设备。这样做的意义在于,由于CPU和输入设备、输出设备的运行速度差距还是挺大的,在CPU处理某个任务时,我们可以提前将下一个任务所所需要的数据通过输入设备先加载到存储器中,待CPU处理完当前任务后,可以立即从存储器中获取数据。在计算机启动并打开QQ时,操作系统和QQ两个软件会加载到内存,在QQ中输入“你好”,实际上是输给内存(存储器)。运算器和控制器,即CPU中,通常为。原创 2024-03-28 15:48:54 · 1467 阅读 · 0 评论 -
Linxu自动化构建工具make/Makefile究竟时什么?
在一个大型工程中,源文件不计其数。按照文件类型、功能、模块不同,放在不同的目录下。但哪些文件先编译,哪些文件后编译,哪些文件需冲重新编译,甚至更为复杂的功能操作,如果依靠程序员自身来控制,不仅效率低下,而且极其容易出错!为此,自动化构建工具诞生 —— make/MakefileMakefile(或makefile)是一个脚本文件;而make是一个命令工具,用于解释Makefile中的指令。原创 2024-03-03 23:15:40 · 2306 阅读 · 45 评论 -
Centos7:自动化配置vim | suoders信任列表添加普通用户
vim配置的核心则是将我们需要的配置选项添加保存到该文件文件中即可!vim在启动时,会自动扫描当前家目录下的。注意我们是在普通用户下配置vim,而在接下来的脚本配置中,存在。然后输入root密码即可,然后脚本开始配置了,只需耐心等待即可。文件,该文件是系统中公共的vim配置文件,对所有用户都成立。但由于原生的vim功能不全,我们可以通过安装插件来完善功能。但首次一般不存在该文件,需要手动。文件,让其中的配置选项生成。切换到root账号,然后输入。的隐藏文件,该文件则是自己。指令,强制保存退出即可。原创 2024-02-28 12:15:10 · 1484 阅读 · 7 评论 -
Linux:vim调试工具gdb | 常见命令集
linux发布的程序由debug和release两个版本,但在Linux环境下生成的程序默认为release版本。但一份代码需要被调试,该代码的发布模式必须是debug。所以在在使用g++编译代码时,需要额外增加。回车会接着打印源代码。原创 2024-03-02 07:30:00 · 1123 阅读 · 4 评论 -
Vim 模式切换 | 命令集
vim是一款历史悠久的多模式文本编辑器,在不同模式下有不同的功能。但实际开发过程中,主要有以下5中模式。在末行模式中,我们可以进行文件的保存和退出,文件替换、查找字符串和列出行号等操作。即可进入替换模式,此时新输入的文本将直接替代/覆盖已经存在的内容,直至点击。要进行文字输入,vim必须从命令行模式切换到插入模式。Vim默认模式为命令模式,该模式主要用于。而由视图模式回退命令模式只需无脑。由命令模式切换到视图模式只需。切换到视图模式,然后通过。切换到视图模式,然后通过。数字(n) + dd。原创 2024-02-22 23:20:17 · 4309 阅读 · 13 评论 -
Linux: yum查看、安装、删除软件包
Linxu: yum 搜索查找、安装、删除软件包,及相关操作动画演示。原创 2024-02-22 12:10:29 · 3730 阅读 · 4 评论 -
Linux入门指南:linux权限究竟是什么?和文件有什么关系?
一、Linux权限概念普通用户和超级用户间的切换:二、Linux权限管理2.1 文件访问者的分类(角色)2.2 .文件类型和访问权限(事物属性)2.2.1文件类型2.2.2 基本权限2.3 文件权限值的表示方法2.3.1 字符表示方法2.3.2 8进制数值表示方法三、.文件访问权限的相关设置方法3.1 chmod3.2 chown3.3 chgrp3.4 umask四、file指令五、目录的权限和粘滞位原创 2023-12-10 08:00:00 · 2814 阅读 · 13 评论 -
Linux常用命令笔记大全(建议收藏!!)
ls 指令、pwd命令、cd 指令、touch指令、mkdir指令、rmdir指令 && rm 指令、man指令、cp指令、mv指令、cat 指令、more指令、less指令、head指令、tail指令、时间相关的指令、Cal指令、 find指令、grep指令原创 2023-10-09 23:21:59 · 7343 阅读 · 226 评论 -
天选之子Linux是如何发展起来的?为何对全球IT行业的影响如此之大?
本篇文章首先一图给出了Linux的发展背景。然后依次介绍了UNIX、Linux发展史、以及开源相关内容。最后就是Linux在全球企业中的引用和地位以及发行版本。原创 2023-09-30 13:18:06 · 4969 阅读 · 117 评论