
YY滴 《Linux系列》
文章平均质量分 90
收纳笔者学习Linux从0开始的总结和笔记
YY的秘密代码小屋
一个讨厌学习的CSDN2023博客之星TOP194,阿里云专家博主,华为云云享专家~;B站同名讲解博客,408与计算机知识,欢迎关注
展开
-
【Linux】自动化构建工具-make/Makefile详解(6)
关于make和makefile的详解,包含各种样例帮助大家明白其相关的【特性】【原理】;帮助大家了解依赖关系,依赖方法,【.PHONY】与伪目标的应用等等原创 2023-07-16 19:13:14 · 35921 阅读 · 53 评论 -
【Linux】<共享内存应用>——使用两个伪终端模拟实现<生产者消费者模型>
三.使用两个伪终端模拟实现注意:编译不通过情况(linux版本过低,加上-lrt)1.初始进程0:共享内存对象创建&初始化2.进程1:producer生产者3.进程2:consumer消费者4.进程3:删除进程0创建的共享文件/dev/shm/my_shared_memory原创 2024-11-23 16:37:59 · 891 阅读 · 0 评论 -
【Linux】<共享内存应用>——模拟实现不同进程把hello字符对<共享内存文件对象>的放入和取出操作
一.共享内存相关与相关指令1.共享内存2.共享内存文件所在目录3.查看共享内存文件属性4.查看共享文件内容5.以0覆盖共享文件二.共享内存相关函1.shm_open() 函数用于创建或打开一个命名的共享内存对2.ftruncate() 函数设置共享内存大3.mmap()函数介绍【1】利用mmap()函数向共享内存写入数据【2】利用mmap()函数从共享内存访问&读取数据4.close() 函数用于关闭文件描述符&shm_unlink() 函数用于删除命名的共享内存对象三.模拟实现不同进程把hel原创 2024-11-22 00:09:01 · 2763 阅读 · 3 评论 -
【Linux】利用 <信号量> 实现 <生产者-消费者模型-线程同步 >(思维导图&代码演示&思路解析)
一.什么是生产者消费者模型二.生产者和消费者各只有一人,缓冲区单元只有一个,用P、V原语实现生产者和消费者的同步操作三.生产者和消费者各只有一人,缓冲区单元有n个,用P、V原语实现生产者和消费者的同步操作原创 2024-11-02 18:16:36 · 1262 阅读 · 0 评论 -
【Linux】<信号量>解决<水果放取问题>【小拓展】——(设置整型turn,控制放的先后顺序)
一.<信号量>相关实验回顾1.回顾:使用<信号量>实现<线程互斥>——(解析:用信号量实现两个线程互斥输出1-10数字)2.回顾:巧妙运用< 信号量 >控制 <两个线程>之间<谁先执行>3.回顾:巧妙运用<信号量>实现之间二. 正文回顾:巧妙运用<信号量>解决<水果放取问题>(思维导图&代码演示&思路解析)三.<信号量>解决<水果放取问题>【小拓展】——(设置整型turn,控制放的先后顺序)原创 2024-11-02 17:19:36 · 902 阅读 · 0 评论 -
【Linux】巧妙运用<信号量>解决<水果放取问题>(思维导图&代码演示&思路解析)
一.<信号量>相关实验回顾1.回顾:使用<信号量>实现<线程互斥>——(解析:用信号量实现两个线程互斥输出1-10数字)2.回顾:巧妙运用< 信号量 >控制 <两个线程>之间<谁先执行>3.回顾:巧妙运用<信号量>实现之间二. 巧妙运用<信号量>解决<水果放取问题>(思维导图&代码演示&思路解析)原创 2024-10-31 12:48:50 · 1192 阅读 · 0 评论 -
【Linux】巧妙运用<信号量>控制<n个线程>之间<按指定顺序轮转>(思维导图&代码演示&思路解析)
一.回顾:使用<信号量>实现<线程互斥>——(解析:用信号量实现两个线程互斥输出1-10数字)二.回顾:巧妙运用< 信号量 >控制 <两个线程>之间<谁先执行>三.<信号量>实现之间原创 2024-10-28 19:38:26 · 1793 阅读 · 5 评论 -
【Linux】巧妙运用<信号量>控制两个线程之间的<执行顺序>(思维导图&代码演示&思路解析)
回顾信号量&信号量互斥实验,信号量实现之间谁先执行原创 2024-10-25 17:19:24 · 1179 阅读 · 2 评论 -
【Linux】使用<信号量>实现<线程互斥>(思维导图&代码演示&思路解析)
一.信号量的概念与语法1.信号量基本概念&类型&头文件2.信号量的基本操作【等待(P操作)& 释放(V操作)】3.信号量的基本函数【创建&销毁&(V操作)&(P操作)】二.信号量实现线程互斥(用信号量实现两个线程互斥输出1-10数字)原创 2024-10-25 16:19:26 · 1289 阅读 · 0 评论 -
【Linux】解析【如何改变信号的默认实现动作】:< 默认处理函数 >变成< 自定义函数 >
【1】实现原理:设置信号的【默认处理函数】变成【自定义函数】【2】信号捕捉函数signal语法介绍【3】代码实现:设置信号的【默认处理函数】变成【自定义函数】原创 2024-10-24 21:50:13 · 939 阅读 · 1 评论 -
【Linux】解析在【进程PCB】中是如何实现【信号的处理方式(抵达/未决/阻塞)】
一.基础知识:信号的处理动作< 递达/未决/阻塞 >二.信号处理动作< 抵达/未决/阻塞 >在内核中的表示1.示意图&作用机制介绍&信号集sigeset_t介绍2.演示< 抵达/未决/阻塞 >在三张表中的表示3.设置信号的【默认处理函数】变成【自定义函数】【1】实现原理【2】信号捕捉函数signal语法介绍【3】代码实现:设置信号的【默认处理函数】变成【自定义函数】原创 2024-10-21 11:54:06 · 1258 阅读 · 0 评论 -
【Linux】< 条件变量等待>解决< 线程饥饿问题 >——【多线程同步问题】
一.概念&基本概念二. 为什么一定需要 ?三.使用规范四.饥饿问题展示——"其他线程改变前,一直处于忙等待"1.基于【普通队列】的面临的2.基于【阻塞队列】的解决3.实现【阻塞队列】设计部分(图文详细解读)4.实现【阻塞队列】代码原创 2024-10-18 00:35:27 · 1164 阅读 · 0 评论 -
【Linux】<互斥量>解决<抢票问题>——【多线程竞争问题】
一.抢票问题展示——"票数变成负数"1.问题展示:2.“ticket--”执行的过程是''非原子的'':多个线程会进入该代码段二.互斥&临界区&临界资源三.互斥量(锁)1.互斥量的初始化(动态&静态)2.互斥量的销毁3.互斥量的加锁&解锁四.解决原创 2024-10-17 11:28:25 · 1368 阅读 · 0 评论 -
【Linux】一个简单while循环实现【严格轮转】,从而理解什么是【多线程的忙等待】
一.忙等待介绍二.忙等待代码题解析原创 2024-10-17 00:09:00 · 639 阅读 · 0 评论 -
【Linux】盘点<多线程控制>基本操作&演示:创建&中止&等待&分离
一.POSIX线程库二.线程控制1.pthread_t是什么类型2.创建线程:pthread_create【1】基本语【2】示例演示3.线程终止:pthread_exit&pthread_cancel【1】基本语法【2】示例演示4.线程等待:pthread_join【1】为什么要进行线程等待【2】基本语法【3】示例演示5.线程分离:pthread_detach【1】为什么要进行线程分离&线程joinable状态与分离状态【2】基本语法【3】示例演示原创 2024-10-16 18:09:44 · 1088 阅读 · 0 评论 -
【Linux】了解pthread线程库,清楚并没有线程创建接口,明白Linux并不存在真正意义的线程(附带模型图详解析)
一.Linux不存在真正的线程(没有实体):Linux并没有提供thread_struct结构体(TCB)二.了解线程pthread原生线程库:不会直接提供线程创建的接口1.pthread原生线程库不提供线程创建接口2.从Linux系统模型角度看看我们创建的线程三.线程与进程相关知识点1.线程的官方概念&进程的对比2.线程准确定义&运行本质原创 2024-10-16 16:34:25 · 728 阅读 · 0 评论 -
【Linux】解读信号的本质&相关函数及指令的介绍
一.信号的本质与相关概念1.体现中断的例子:.系统定义的信号列表1.用kill -l命令可以察看系统定义的信号列表2.(ps&kill&raise&abort)进程指令&信号相关函数【总结】【1】ps指令【2】kill&raise函数介绍与演示【3】abort函数介绍与演示三.产生信号的四种方式1.通过终端按键产生信号(Core Dump)2.调用系统函数向进程发信号3.由软件条件产生信号4.硬件异常产生信号原创 2024-10-14 14:31:26 · 870 阅读 · 0 评论 -
【Linux】重定向操作的原理:修改文件描述符fd底层指向 (文件系统角度理解)
※.重定向的原理总结一.文件描述符基础知识二.dup2讲解三.重定向原理演示1.输出重定向——原理图文演示2.输出重定向原理同理原创 2024-10-13 17:39:58 · 1089 阅读 · 3 评论 -
【Linux】解析 [用户/文件(内核)缓冲区 ],总结画图演示【系统调用与库函数的根本区别】
1.用户缓冲区方面:刷新: 把数据从C语言缓冲区写入操作系统我们日常中使用最多的,就是C/C++提供的语言级别的缓冲区而像一些系统调用,例如write()就没有使用C语言的缓冲区2.文件缓冲区方面:而文件缓冲区,属于操作系统层面,存在于FILE结构体中;无论读写都要把数据加载到文件缓冲区中3.内核缓冲区方面文件系统的缓冲区属于内核缓冲区的一种我们在应用层进行数据的读写本质, 是将内核缓冲区中的数据进行来回的拷贝原创 2024-10-13 17:39:42 · 862 阅读 · 0 评论 -
【Linux】理解文件系统与软硬链接,观察inode号理解<“软链接是包含路径的新文件“,“硬链接是关于文件名的机制“>,最终明白<什么是真正删除一个文件>
一.文件信息(文件名+文件元数据)介绍二.文件系统与inode介绍三.【软/硬链接】理解与介绍1.软硬链接基本知识2.软硬链接创建&删除语法3.观察inode编号理解链接中的本质4.一个操作理解-“硬链接是关于文件名的机制”5.一个文件真正被删除——没有原创 2024-10-13 17:39:27 · 1198 阅读 · 0 评论 -
【Linux】解答:为什么创建目录文件,硬链接数是2;创建普通文件时,硬链接数是1?(超详细图文)
一.前情回顾:1.查看文件元数据与inode编号2.硬链接文件不属于真正意义上的文件3.Linux中不允许用户对目录建立硬链接文件二.解析部分:三.理解原理后,试着分析原创 2024-10-13 17:39:10 · 1185 阅读 · 0 评论 -
【Linux】认识Linux内核中进程级别的文件结构体【files_struct】&文件IO模型初步演示
一.区分内核文件结构体file和files_struct&C标准库中文件结构体FILE二.文件描述符fd与进程文件描述符表fd_array1.file_struct结构体介绍2.文件描述符fd与文件描述符表介绍3.文件描述符的分配规则【1】演示:(用到关闭文件描述符的系统调用:close )原创 2024-10-07 19:47:52 · 1226 阅读 · 4 评论 -
【Linux】文件IO系统[ 库函数 ]封装了[ 系统调用 ] +【区分文件结构体FILE和file与files_srtuct表】(读写接口盘点与介绍)
※学习文件IO必须知道的概念一.【库函数】回顾c语言中读写文件的方式2. 区分内核文件结构体file和files_struct&C标准库中文件结构体FILE二.【系统调用接口】系统接口进行文件IO访问【1】系统调用:open接口介绍与使用演示【2】系统调用:read接口介绍与使用演示【3】系统调用:write接口介绍与使用演示原创 2024-10-07 09:16:35 · 1311 阅读 · 0 评论 -
【Linux】手把手教你制作一个简易shell——(进程创建fork进程替换wait与进程等待exec的应用)(自定义shell程序设计)
一.前置知识【1】Shell和Bash简述【2】Bash的输入原理——指针数组二.自定义shell程序设计【1】——大体框架【2】模块【3】模块【4】模块原创 2024-09-23 17:12:00 · 1214 阅读 · 0 评论 -
【Linux】万字解读<进程控制>:创建&中止&等待&替换
一.进程创建1.fork函数1】fork函数与其返回值【2】fork函数中的写时拷贝2.fork函数/进程创建的场景——常规用法二.进程终止1.进程退出的场景2.进程应对不同退出场景的退出方法前置知识:echo $? 查看进程退出码前置知识:错误码VS退出码【1】正常退出————通过退出码判断1.exit函数 与 _exit函数验证是否自动刷新缓冲区2.从main返回——return退出——等同于正常退出的exit【2】异常退出(程序崩溃)——操作系统转换成信号——进程被操作系原创 2024-09-09 16:27:02 · 1302 阅读 · 3 评论 -
利用远程控制软件FinalShell远程连接虚拟机上的Linux系统(Windows)
传送门:VMware Workstation 安装CentOS Linux操作系统原创 2024-05-15 19:22:21 · 607 阅读 · 3 评论 -
VMware Workstation 安装CentOS Linux操作系统
1.我们已经下载好VMware创建新的虚拟机2.选择典型3.安装程序光盘映像文件4.配置用户名密码5.命名虚拟机,并确定位置6.如图所示设置7.等待(时间会有点久)8.输入密码登入账号原创 2024-05-15 19:02:56 · 321 阅读 · 0 评论 -
【Linux】万字通透解读 <进程地址空间&虚拟空间&页表>——原理&知识点详解(14)
一.什么是进程地址空间?1.进程地址空间基本概2.mm_struct 基本概念3.mm_struct/进程地址空间 实现“区域划分”的原理二.什么是页表?1.页表基本概念2.进程是如何和“页表”进行联系?3.每个进程都有页表,页表在“进程切换”如何跟踪三.地址空间&页表的作用机理1.地址空间&页表的基本原理2.【页表实验1】探究为什么一对父子进程,同样虚拟地址,读取数据不同?(OS对页表的调整)3.【页表实验2】为什么可执行程序中有大量代码和数据,加载到内存任意位置都可以,不用考虑顺序位置(页表映射功能)4原创 2024-04-23 23:28:52 · 1499 阅读 · 6 评论 -
【Linux】初学者需要知道的三个环境变量实验
一.环境变量实验1.环境变量PATH实验:让我们写的程序和系统自带指令一样执行2.环境变量HOME实验:用户识别原理 3.环境变量实验:让我们修改的环境变量在每次登陆时都存在(更改配置文件)(重点)原创 2024-03-28 23:18:27 · 925 阅读 · 0 评论 -
【Linux】关于环境变量——你需要知道这些原理&指令
一.环境变量基本概念(博主简练概括)【本地变量vs环境变量】【Linux命令分类&内键命令可读本地变量】二.常见环境变量介三.环境变量的组织方式:环境表(main函数的第三个参数)四.环境变量相关的【基本操作指令】(以PATH举例)1.指令总览2.env:获取环境变量3.environ(全局指针):获取环境变量4.echo $PATH.PATH=xxxxxxxxx (覆盖) / PATH= $PATH:xxxxxxxxx(追加) (操作对象:指定环境变量)6.export(导出到环境变量表中)(重点)原创 2024-03-28 23:23:15 · 1610 阅读 · 8 评论 -
【Linux】一文了解【进程优先级相关知识点】&【PRI / NI值】背后的修正原理(13)
一.进程优先级的一些其他相关概念了解二.进程优先级三.查看系统进程&了解(PRI and NI)1.【nice值修改进程优先级】的具体规则四.更改进程优先级:用top命令更改已存在进程的nice值原创 2024-03-23 18:59:14 · 955 阅读 · 1 评论 -
【Linux】环境变量常见指令操作&基本实验(入门必看!)
一.环境变量基本概念(博主简练概括)【本地变量vs环境变量】【Linux命令分类&内键命令可读本地变量】 二.常见环境变量介绍三.环境变量的组织方式:环境表(main函数的第三个参数) 四.环境变量相关的【基本操作指令】(以PATH举例) 1.指令总览2.env:获取环境变量 3.environ(全局指针):获取环境变量 4.echo $PATH 5.PATH=xxxxxxxxx (覆盖) / PATH= $PATH:xxxxxxxxx(追加) (操作对象:指定环境变量) 6.export(导出到原创 2024-03-23 18:57:25 · 1785 阅读 · 8 评论 -
【Linux】Bash支持各种指令选项的原理:命令行参数
一.认识main函数参数【int argc & char *argv[ ]】二.回顾Bash支持各种指令选项三.(正文)Bash支持各种指令选项的原理(含推导过程)原创 2024-03-21 14:02:34 · 1410 阅读 · 6 评论 -
【Linux】盘点广义层面上【三种最基本的进程状态】
一.进程状态变化の本质原理二.操作系统层面的三种广义进程状态1.运行状态2.阻塞状态3.挂起状态原创 2024-03-20 22:25:34 · 1191 阅读 · 4 评论 -
【Linux】深度解析Linux中的几种进程状态
一.Linux的进程状态1.Linux进程状态在kernel源代码里的定义2.S :浅度睡眠状态1.S状态与S+状态3.D :磁盘休眠状态 / 深度睡眠状态4.T :停止状态(阻塞状态)4.1 t :追踪停止状态5. X :死亡状态6. Z :僵尸状态(Linux特有状态)1)僵尸进程的危害2)孤儿进程的引入原创 2024-03-19 09:02:08 · 1236 阅读 · 5 评论 -
【Linux】用三种广义进程状态 来理解Linux的进程状态(12)
一.进程状态变化の本质原理二.操作系统层面的三种广义进程状态1.运行状态2.阻塞状态3.挂起状态三.Linux的进程状态1.Linux进程状态在kernel源代码里的定义2.S :浅度睡眠状态1.S状态与S+状态3.D :磁盘休眠状态 / 深度睡眠状态4.T :停止状态(阻塞状态)4.1 t :追踪停止状态5. X :死亡状态6. Z :僵尸状态(Linux特有状态)1)僵尸进程的危害2)孤儿进程的引入原创 2024-03-19 09:01:49 · 1283 阅读 · 1 评论 -
【Linux】搭建ubuntu虚拟机逐过程详解(下载&安装&virtualbox ubuntu安装 iso)
一.下载ubuntu镜像源二.下载virtual-box (管理虚拟机的软件)三.virtualbox ubuntu安装iso镜像源四.安装Ubuntu系统五.设置超级用户密码原创 2024-03-14 16:29:19 · 1950 阅读 · 3 评论 -
【Linux系列】fork( )函数原理与应用详解——了解【父子进程及其特性】(代码演示,画图帮助理解,思维导图,精简)(11)
一.前置知识——pid和ppid 1.系统调用接口查看pid,ppid2.为什么ppid父进程id不变?——bash命令行解释器与bash进程 二.fork( )函数原理与应用详解1.fork()函数基本介绍2.fork()返回值有两个:——>变成了两个进程(父子进程)——>实现两个死循环同时跑 3.为什么fork要有两个返回值?4.为什么fork要给子进程返回0,给父进程返回子进程pid5.fork函数究竟在干什么?————>父子进程共享代码段,各自拥有数据段(写时拷贝)父子进程共享原创 2024-02-05 13:13:50 · 1429 阅读 · 2 评论 -
【Linux】解决:为什么重复创建同一个【进程pid会变化,而ppid父进程id不变?】
1.系统调用接口查看pid,ppid 2.为什么ppid父进程id不变?——bash命令行解释器与bash进程原创 2024-02-04 12:43:17 · 958 阅读 · 6 评论 -
【Linux】操作系统管理的算珠——进程の详解(10)
一文全面总结了进程的相关知识点,包含基本概念,PCB,组织与查看进程的方式原创 2023-08-16 00:46:13 · 572 阅读 · 16 评论