<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[a3876247995的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/a3876247995</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; a3876247995]]></copyright><item><title><![CDATA[线程的信号量和互斥量]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/128997499</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/128997499</guid><author>a3876247995</author><pubDate>Sun, 12 Feb 2023 17:49:28 +0800</pubDate><description><![CDATA[线程的信号量和进程的类似，维护一个sem_t类型（本质是一个int类型的）的信号量，不同线程通过判断信号量的值，来决定是否进行继续运行，从而控制线程运行的先后顺序。比如信号量初始化成0，线程1调用sem_wait阻塞住，等待线程2调用sem_post将限号量增加之后，线程1被唤醒，从而实现线程1、2执行的顺序。线程1先被创建，但是阻塞在信号量上，线程2后被创建，被运行后将信号量增加，然后线程1识别到信号量大于零，才执行后面的步骤。sem_init用于初始化信号量的初始值和作用范围。互斥量用完了之后要释放。]]></description><category></category></item><item><title><![CDATA[Unix信号处理函数及简单代码示例]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/128788269</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/128788269</guid><author>a3876247995</author><pubDate>Sun, 29 Jan 2023 13:56:32 +0800</pubDate><description><![CDATA[信号集一般和struct sigaction配合使用，比如使用sigaction捕获信号的时候，希望把其他的好几个信号阻塞，等被捕获的信号处理完了之后，再恢复其他信号的处理，就可以使用信号集的处理函数来指定哪些信号被阻塞。signal可以注册信号处理函数，但是一致性比较差，现在推荐使用sigaction。sigfillset所有的信号都加入到信号集当中。sigismember判断一个信号是否在信号集中。sigaddset把某一个信号加入到信号集当中。sigdelset把某一个信号从信号集中删除。]]></description><category></category></item><item><title><![CDATA[unix进程控制及进程环境--自APUE]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/128692734</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/128692734</guid><author>a3876247995</author><pubDate>Sun, 15 Jan 2023 11:11:53 +0800</pubDate><description><![CDATA[僵尸进程一个进程退出后，内核会回收进程的资源，但是会留下一个僵尸进程的数据结构，保留了进程的ID、进程的状态等信息，这些信息被父进程通过wait函数获取后被释放，如果一个子进程退出后，父进程没有wait这些信息，那么这个子进程就变成了僵尸进程。父进程通过wait收集子进程的退出信息子进程退出时，内核会向父进程发送SIGCHILD，父进程处理该信号的时候通过wait获取退出信息让进程被进程1接管，进程1会wait每一个退出的子进程孤儿进程。]]></description><category></category></item><item><title><![CDATA[标准IO库整理--自APUE]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/128535208</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/128535208</guid><author>a3876247995</author><pubDate>Tue, 03 Jan 2023 16:27:25 +0800</pubDate><description><![CDATA[文件IO围绕文件描述符，标准IO围绕流，1）流是标准IO函数的参数，文件描述符是系统调用的参数；2）文件流封装了描述符的功能；3）流包含了读和写的缓冲标准IO提供缓冲，是为了减少read和write的调用次数（系统调用），这里的缓存指的是用户态的缓存，在用户态缓存满了之后才回去掉read或write函数进行磁盘IO，但是其实read和write也不是没有缓存，比如内核处理write的时候也只是把数据丢到输出队列等待磁盘IO，并不能保证立即写到磁盘中。]]></description><category></category></item><item><title><![CDATA[unix下时间相关的函数]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/128519258</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/128519258</guid><author>a3876247995</author><pubDate>Mon, 02 Jan 2023 11:24:39 +0800</pubDate><description><![CDATA[这个函数的作用是获取当前时刻对应的时间戳和时区，时间戳是相对1970年以来的秒+微秒数。time函数返回1970-01-01 00:00:00 +0000时刻以来的秒数。]]></description><category></category></item><item><title><![CDATA[文件IO简述-总结自APUE]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/128511342</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/128511342</guid><author>a3876247995</author><pubDate>Sun, 01 Jan 2023 11:40:03 +0800</pubDate><description><![CDATA[文件系统是什么？用于管理存储设备的系统，存储设备是分块的，通过块号/扇区号访问，文件可以分布在多个不同的扇区中，这种访问方式不适合人为直接访问，所以出现了文件系统，用于将对扇区的访问转化成对目录和文件名的访问。不同文件系统的差异：不同文件系统对扇区的管理策略不同，比如坏块管理、碎片管理根文件系统是一种特殊的文件系统，它特殊在：1）提供了根目录；2）…]]></description><category></category></item><item><title><![CDATA[根文件系统原理简述]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/128269411</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/128269411</guid><author>a3876247995</author><pubDate>Sat, 10 Dec 2022 21:25:32 +0800</pubDate><description><![CDATA[文件系统是什么？用于管理存储设备的系统，存储设备是分块的，通过块号/扇区号访问，文件可以分布在多个不同的扇区中，这种访问方式不适合人为直接访问，所以出现了文件系统，用于将对扇区的访问转化成对目录和文件名的访问。不同文件系统的差异：不同文件系统对扇区的管理策略不同，比如坏块管理、碎片管理根文件系统是一种特殊的文件系统，它特殊在：1）提供了根目录；2）…]]></description><category></category></item><item><title><![CDATA[S5PV210中的SD卡启动详解]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/126809486</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/126809486</guid><author>a3876247995</author><pubDate>Sun, 11 Sep 2022 21:04:15 +0800</pubDate><description><![CDATA[来源：朱有鹏老师的嵌入式课程笔记内存一般指的是RAM（random access memory，随机访问存储器），外存一般指ROM（read only memory，只读存储器），前者可以访问任意字节，掉电后丢失数据，后者以块为单位进行访问（比如已512字节为一个块，如果要读取第80字节数据，需要将整个512字节都读出来），掉电后数据不丢失。磁存储，读写速度慢，可靠性低。广泛使用在桌面电脑，嵌入式设备几乎没有在用Flash存储即闪存计数，是当前存储技术发展的主流，利用电学原理存储1、0，无需磁存储设备的磁头]]></description><category></category></item><item><title><![CDATA[S5PV210中的定时器]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/126789469</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/126789469</guid><author>a3876247995</author><pubDate>Fri, 09 Sep 2022 21:32:11 +0800</pubDate><description><![CDATA[定时器是SoC的一个外设，通过内部计数器的数值×时钟周期，实现定时，一旦到达指定时间，就会触发定时器中断，CPU将执行定时器的中断ISR。计数器的工作依赖时钟系统，时钟源为PSYS域的低频时钟分支APB（65M）分频之后的结果。定时器对于CPU的意义在于，单核CPU在程序间切换依赖定时器的触发。定时器有一个寄存器TCNT，计时开始时，将计数值写入TCNT，每隔时钟周期，由硬件自动完成计数值-1，直到计数值为0，触发定时器中断。]]></description><category></category></item><item><title><![CDATA[组播和广播的知识点梳理]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/125629520</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/125629520</guid><author>a3876247995</author><pubDate>Tue, 05 Jul 2022 22:32:22 +0800</pubDate><description><![CDATA[组播的优点：组播的缺点：任源组播指的是组播的接收方不关注组播的发送方是什么地址，只要发来的，我都接收。接收方对发送方的身份敏感，只有在指定列表中的发送方发出的报文，接收方才接收。现在特定源组播用的比较多广播地址对应的MAC地址固定是全f，组播地址也有其对应的MAC地址，只是这个地址不固定，和组播地址有关系。步骤：由于组播地址范围是224.0.0.0-239.255.255.255，一共有228个地址，MAC地址只取后23位，因此每25=32个组播IP地址，共享一个组播MAC地址步骤：由于IPv6组播地址前1]]></description><category></category></item><item><title><![CDATA[ARP报文头部格式和请求流程]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/125524450</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/125524450</guid><author>a3876247995</author><pubDate>Wed, 29 Jun 2022 16:22:53 +0800</pubDate><description><![CDATA[格式说明：在以太网中发送ARP请求的时候，以太头的源MAC地址为本地MAC，目的MAC地址为全f；ARP中的源MAC为本地MAC，源IP是本机的IP，目的MAC为0，目的IP为请求的IP地址A主机向请求B主机MAC地址时，会先判断A、B是否属同一网段，分别采用不同的方式发送ARP请求。如果AB属于同网段，但是A到B没有直连的路由，那么A也会走跨网段的流程，将数据包发送给网关处理。...]]></description><category></category></item><item><title><![CDATA[nfs配置两台主机之间的文件映射]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/125480322</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/125480322</guid><author>a3876247995</author><pubDate>Mon, 27 Jun 2022 11:09:23 +0800</pubDate><description><![CDATA[假设主机192.168.10.1要访问192.168.10.137的/home目录，配置步骤如下：]]></description><category></category></item><item><title><![CDATA[CPU的异常处理]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/125453521</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/125453521</guid><author>a3876247995</author><pubDate>Fri, 24 Jun 2022 22:58:13 +0800</pubDate><description><![CDATA[什么是异常？正常流程之外的流程都叫做异常，中断是异常的一种。现场保护：中断发生的时候，CPU需要记录当前程序的上下文，然后再去处理异常，以便异常处理完成后，返回到原先的程序当中去。硬中断就是硬件产生的中断，软中断是一条会汇编指令，只要一执行，就会产生软中断。所有CPU都有异常向量表，用于处理异常，是硬件决定的。详细来说，出现异常时，CPU转跳到异常处理表，这个行为是硬件决定的，至于异常向量表里面具体的实现动作，是软件定义的。异常发生的时候，CPU自动把PC寄存器转跳到异常向量处理处理异常。如图所示，异常向量]]></description><category></category></item><item><title><![CDATA[Linux定时任务]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/125376105</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/125376105</guid><author>a3876247995</author><pubDate>Mon, 20 Jun 2022 16:51:54 +0800</pubDate><description><![CDATA[作用：在指定时刻执行一次任务
batch
作用：系统空闲了的时候再执行命令，空闲的含义是CPU的任务负载小于0.8，任务负载通过uptme命令查看。batch就是用at实现的
crontab
作用：
系统定时任务
作用：cron服务自动去读取系统定时任务配置文件，适用一些全局生效的任务crond服务读取的配置文件包括：...]]></description><category></category></item><item><title><![CDATA[shell变量学习笔记]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/125231729</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/125231729</guid><author>a3876247995</author><pubDate>Sat, 11 Jun 2022 10:02:48 +0800</pubDate><description><![CDATA[shell命令行的编辑

shell的变量功能
变量的显示

变量的赋值

环境变量
变量和环境变量不是一个概念，父进程的变量子进程不能使用，父进程的环境变量子进程可以使用。
常见的环境变量




变量名
描述




HOME
用户的根目录


HISTSIZE
历史命令最大数目


MAIL
邮件相关


PATH
可执行文件查找的路径


LANG
语系


RANDOM
0~32767之间的随机数，随机数生成器/dev/random  0~9之间随机数：declare -i  number=$RA]]></description><category></category></item><item><title><![CDATA[分段、分页、页表、快表学习笔记]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/125173406</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/125173406</guid><author>a3876247995</author><pubDate>Tue, 07 Jun 2022 21:07:56 +0800</pubDate><description><![CDATA[为了解决内存碎片问题，通过将进程内存分割成不连续的片段，散布在内存的不同位置。分段认为程序由大小不同的段组成，根据段对程序进行切分，不同的段存放在内存不同位置，比如代码段、data段、堆段、栈段分别保存在内存地某一位置。分页根据进程内存长度（如4K）进行分割，将进程分割成大小相同的多个分页，分布在内存不同的位置。首先linux记录了进程的段表，内容是每一个分段的编号、起始物理地址（段基址）、段限长。然后逻辑地址分成两部分，第一部分是段编号，第二部分是段内位移。地址转换的流程为：首先将内存分成固定大小的若干页]]></description><category></category></item><item><title><![CDATA[操作系统内存管理学习笔记]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/125138137</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/125138137</guid><author>a3876247995</author><pubDate>Sun, 05 Jun 2022 22:45:16 +0800</pubDate><description><![CDATA[计算机所有的设备和CPU通信都需要经过内存，内存管理的目标包括：cache是一种存储速度比内存快，容量比内存小得多的存储收器。利用cache可以解决快速CPU和慢速内存间矛盾，CPU首先从cache中读取数据，cache miss之后再从内存中读取。cache可以分为三级，前两级集成在CPU核内部，三级缓存位于主板上，由多核共享。内存正确的分配和回收从安全隔离角度考虑，禁止进程访问内核内存空间和其他进程内存空间。操作系统一般不干预CPU对内存的访问，因此这一块功能一般由硬件实现，比如基址寄存器和限长寄存器，]]></description><category></category></item><item><title><![CDATA[gdb的简单使用]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/125110247</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/125110247</guid><author>a3876247995</author><pubDate>Fri, 03 Jun 2022 09:55:19 +0800</pubDate><description><![CDATA[程序带调试信息的编译
程序必须以gcc -g的参数进行编译，否则无法使用gdb
给程序输入运行参数
相当于是argv[n]
调试运行中的程序

调试coredump文件

调试多进程
如果是运行中的进程，我们能分别获取到父、子进程的pid，通过attach到不同的pid上，可以分别对父子进程调试...]]></description><category></category></item><item><title><![CDATA[Linux压缩/解压命令梳理]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/125034669</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/125034669</guid><author>a3876247995</author><pubDate>Sun, 29 May 2022 19:00:35 +0800</pubDate><description><![CDATA[文章目录常见的压缩格式gzip,zcat,zmore,zless,zgrepbzip2,bzcat,bzmore,bzless,bzgrepxz,xzcat,xzmore,xzless,xzgreptar
常见的压缩格式
以下扩展名没有实际意义，仅便于识别用了什么压缩程序
*.z compress程序压缩文件
*.zip zip
*.gz gzip
*.bz2 bzip2
*.xz xz
*.tar tar打包
*.tar.gz tar打包并用gzip压缩
*.tar.bz2 tar打包并用bzip2压缩
]]></description><category></category></item><item><title><![CDATA[c语言字符串和数值之间的转换函数]]></title><link>https://blog.youkuaiyun.com/a3876247995/article/details/125023581</link><guid>https://blog.youkuaiyun.com/a3876247995/article/details/125023581</guid><author>a3876247995</author><pubDate>Sat, 28 May 2022 21:32:06 +0800</pubDate><description><![CDATA[文章目录字符串转数值数值转字符串
字符串转数值
#include &lt;stdlib.h&gt;
/* 字符串转int */
int atoi(const char *nptr);
/* 字符串转long */
long atol(const char *nptr);
/* 字符串转longlong */
long long atoll(const char *nptr);
/* atoll的废弃名称 */
long long atoq(const char *nptr);
/* 字符串转浮点数 */
d]]></description><category></category></item></channel></rss>