![](https://img-blog.csdnimg.cn/81fe18a6e75045498f429cdeedaec7e7.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux操作系统
文章平均质量分 80
linux学习
micro cc
这个作者很懒,什么都没留下…
展开
-
SystemV 共享内存
通过系统调用,将多个进程地址空间的部分区域映射到同一份物理内存,从而形成共享内存。共享内存具有最大的通信速度和便利性,因为它可以在计算机中以内存传输速度完成通信。然而,共享内存在多进程访问的同步和互斥方面存在问题,需程序员自行保证数据安全。进程运行结束,系统创建的IPC资源并不会释放,它的生命周期由内核决定。可以通过以下命令查看并手动释放:SystemV 共享内存的系统调用:size:系统给共享内存分配的大小实际是(4Kb)的整数倍。shmflg: :存在则获取,不存在则创建一块新的内存区域; :原创 2022-06-06 12:21:52 · 263 阅读 · 0 评论 -
Linux进程间通信(文件方式)
父进程和子进程在通信开始前要先关闭管道的未使用端,以确保从管道中读取的进程可以在写入程序关闭管道时检测到文件的结尾(返回0)。一旦进程完成通信并终止,普通管道就不再存在——只要该缓冲区中的数据不向磁盘刷新,数据就存在于进程的生命周期。管道的生命周期进程的生命周期。Linux中可以使用创建一个匿名管道:运行结果通过修改以上代码父子进程的读写时间,可以得出以下结论:管道是面向字节流的单向通信信道,管道里只要缓冲区没满,就可以一直写入。写端不写入或者写的速度小于读取的速度,读端会阻塞等待实际写入时,原创 2022-06-05 18:12:03 · 604 阅读 · 0 评论 -
Linux动静态库
Windows中的动态库文件以为后缀名、静态库以为后缀;而Linux动态库文件后缀为 、静态库为库的真名:去掉前缀,去掉 \ 后缀,剩下的就是库名。例如,库的真名就是查看可执行程序包含的动态库。动态库系统中默认包含,因为许多shell程序都依赖动态库运行。程序在链接时默认使用动态库。若将源文件以静态()的方式链接,则会产生一个静态的可执行文件;使用静态链接需要安装相依赖的静态库。2. 动静态库的制作和使用2.1 源文件直接使用,不生成库运行结果:2.2 生成静态库2.2.1 静态库原创 2022-06-04 13:31:51 · 742 阅读 · 0 评论 -
Linux的EXT文件系统
Super Block:包含了 整个分区有多少组、使用情况等信息;Group Descriptor: 整个分组的使用情况;Block Bitmap:位图,可以快速查找数据块的使用情况,并为新的节点分配相应的数据块;有数据相应的位为1;inode Bitmap : 位图,可以快速查找inode编号的使用情况,每个bit位代表一个inode编号 ; 每个位是1或0,代表对应的inode是否被占用;inode Table : 存储文件属性相关的结构体数据,包含文件名、权限、inode和数据块的映射关系等Data原创 2022-06-03 20:46:52 · 312 阅读 · 0 评论 -
Linux文件缓冲区
1. 基本理论2. fclose刷新缓冲区3. 再谈输出重定向4. 验证缓冲区原创 2022-06-03 16:24:51 · 487 阅读 · 0 评论 -
Linux中的文件操作
所有输入/输出设备(如网络、磁盘和终端)都表现为文件,所有输入和输出都是通过读取和写入适当的文件来执行的。这种从硬件设备到文件的映射接口称为I/O,它使所有输入和输出都能够以统一的方式执行。应用程序通过请求内核打开相应的文件,内核返回一个非负整数,称为描述符,用于在文件的所有后续操作中标识该文件。操作系统从文件中将数据加载到内存是通过一个batch(n个字节构成),目的是可以以一种统一的方式读写。当读取时,超过了文件中的batch数,则会返回(它并不代表文件的真实结尾,真实的字符数会小于读取的字符;文件末尾原创 2022-06-03 01:46:04 · 236 阅读 · 0 评论 -
Linux进程替换——进程执行其它代码的方式
程序是代码和数据的集合;程序可以作为对象模块存在于磁盘上,也可以作为地址空间中的段存在。进程是正在执行的程序的特定实例;程序总是在某个进程的上下文中运行。进程替换函数在当前进程的上下文中加载并运行新程序。虽然它会覆盖当前进程的地址空间,但不会创建新进程。新程序仍然具有相同的PID,并且它继承了调用进程替换函数时打开的所有文件描述符。进程替换函数有如下几个:其中各个函数的名称可以按包含的字母解剖为:具体例子:下面给个关于的具体的实操:原创 2022-06-01 01:56:52 · 162 阅读 · 0 评论 -
Linux进程
Linux进程1. 进程的几个概念2. fork创建子进程3. 地址空间4. 进程的退出4.1 基本概念4.2 父进程等待子进程退出4.2.1 waitpid4.2.2 退出状态status5. 其他5.1 获取环境变量5.2 孤儿进程1. 进程的几个概念每个进程执行其逻辑流的一部分,然后在其他进程轮流执行时被抢占(暂时挂起)。进程与其他进程轮流执行的过程称为多任务处理。进程执行其流的一部分的每个时间段称为时间片。因此,多任务也被称为时间切片。任何逻辑流在时间上与另一个流重叠的进程都称为并发进程,这原创 2022-05-31 18:09:05 · 123 阅读 · 0 评论 -
Linux入门基本命令
Linux基本操作1. 基本常识1.1 命令行中的快捷键2. 常用命令2.1 查看命令2.2.1 文件函数查看2.2.2 系统进程查看2.2 用户及权限管理2.3 常用操作命令2.4 bash标准输入2.5 bash标准输出3. 其他3.1 环境变量1. 基本常识$:普通用户#:超级用户root~:用户家目录/:系统根目录1.1 命令行中的快捷键Ctrl + a : 定位行首Ctrl + e : 定位行尾Ctrl + f : 光标向前移动Ctrl + b : 定位向后移动Ctrl原创 2022-05-29 17:10:38 · 274 阅读 · 0 评论 -
Posix信号量
Posix信号量信号量s是一个具有非负整数值的全局变量,只有两个特殊的操作,称为P和V:P和V的名字来自荷兰语Proberen(测试)和Verhogen(增量)。P操作等待信号量s变为非零,然后将其递减。V操作增加s。信号量与每个共享资源相关联,记录了共享资源的个数。PV操作保证了线程的同步和互斥,这样多线程进行获取及并发执行的时候可以避免不安全的访问。P (s): while (s <= 0); s–;V (s): s++;为了保证信号量的大小是有限的,并且在条件重新满足后线程可以重复访原创 2022-05-21 17:29:43 · 268 阅读 · 0 评论 -
多线程之同步与互斥
多线程1.线程的基本概念2.线程的互斥和同步2.1 基本概念2.2 互斥的实现2.3 同步的实现补充:生产消费者模型参考资料1.线程的基本概念 多线程可以将计算密集型(实时)和I/O密集型(实际中会等待)应用分配到多个处理器上执行,提高执行效率,但是会增加调度成本。 Linux没有专门的TCB(Thread Control Block),而是复用了进程的PCB;不同的PCB指向同一个地址空间,并将地址空间的数据段和代码段进行划分分配给不同的PCB。 进程是资源分配的基本单位,线程是运算调度的基原创 2022-05-18 13:14:32 · 2069 阅读 · 0 评论 -
Linux信号
Linux信号1.信号的产生2.信号的存储与执行参考资料 使用 kill -l 可查看所有的信号,其中1- 31是普通信号(对于两个以上的相同信号会丢失,因为只有一位位图保存);34 - 64是实时信号(用链表队列形式将实时信号进行保存,可以保存多份)。NumberNameDefault actionCorresponding event1SIGHUPterminate终端线挂起2SIGINTterminate来自键盘的中断(Ctrl + c)3SI原创 2022-05-05 15:46:02 · 1461 阅读 · 0 评论