Linux
文章平均质量分 86
记录linux的学习笔记
MLGDOU
这个作者很懒,什么都没留下…
展开
-
9.【Linux】(死锁问题||线程同步||条件变量||生产者消费者模型)
死锁是指在一组进程中各个进程均占有不会释放的资源,但因互相申请被其他进程所占用的不会释放的资源而处于一种永久等待的状态。。原创 2024-04-30 13:41:17 · 1397 阅读 · 2 评论 -
10.【Linux】(基于信号量和环形队列的生产者消费者模型实现||单例模式的线程池)
本文将通过posix信号量和一个环形队列一步一步实现生产者消费者模型。原创 2024-03-21 15:17:28 · 985 阅读 · 9 评论 -
8.【Linux】线程
具体参考。原创 2024-03-20 15:24:33 · 466 阅读 · 7 评论 -
7.【Linux】进程间通信2(共享内存||消息队列)
消息队列的本质其实是一个内核提供的链表,内核基于这个链表,实现了一个数据结构向消息队列中写数据,实际上是向这个数据结构中插入一个新结点;从消息队列汇总读数据,实际上是从这个数据结构中删除一个结点消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法消息队列也有管道一样的不足,就是每个数据块的最大长度是有上限的,系统上全体队列的最大总长度也有一个上限。原创 2024-03-17 13:49:28 · 474 阅读 · 3 评论 -
6.【Linux】进程间通信(管道&&命名管道||简易进程池||简易客户端服务端通信)
1.Linux原生支持的管道----匿名和命名管道2.System V-----共享内存、消息队列、信号量3.Posix------多线程、网路通信。原创 2024-03-16 19:40:38 · 663 阅读 · 1 评论 -
5.【Linux】文件系统(缓冲区||磁盘寻址方式||文件管理方式||软硬链接)
O_RDONLY: 只读打开O_WRONLY: 只写打开 O_RDWR : 读,写打开 这三个常量,必须指定一个且只能指定一个O_CREAT : 若文件不存在,则创建它。需要使用mode选项,来指明新文件的访问权限O_APPEND: 追加写。原创 2024-03-13 13:36:48 · 966 阅读 · 3 评论 -
4.【Linux】进程控制(进程终止||进程等待||程序替换)
父进程通过操作系统检测子进程状态,如果退出了就接收到子进程的退出信息。相反,如果options等于WNOHANG,发现没有子进程退出,那么直接返回0不会阻塞等待子进程退出,而是采用非阻塞的轮询检测的方式。(查看进程的退出码) options: WNOHANG: 若pid指定的子进程没有结束,则waitpid()函数返回0,不予以等待。通过特定接口,加载磁盘上的一个全新的程序(代码和数据),加载到调用进程的地址空间中,修改页表和物理地址的映射关系,以达到让子进程执行一个全新程序的目的。原创 2024-02-16 18:49:35 · 937 阅读 · 1 评论 -
2.【Linux】(进程的状态||深入理解fork||底层剖析||task_struct||进程优先级||并行和并发||详解环境变量)
fork通过复制一份当前进程(父进程)来创建一份全新的进程(子进程),父进程创建成功返回子进程的pid,失败返回-1,子进程创建成功返回0,失败返回-1。原创 2024-01-18 15:53:10 · 2042 阅读 · 19 评论 -
1【Linux】入门 (权限的理解||umask||粘滞位||c&&c++程序的翻译过程||解释性语言和编译性语言的区别)
(权限的理解||umask||粘滞位||c&&c++程序的翻译过程||解释性语言和编译性语言的区别)原创 2024-01-15 19:10:07 · 1043 阅读 · 4 评论 -
Linux之CHS寻址和LBA寻址
最重要的第二点是:不想让OS的代码和硬件强耦合,因为如果强耦合,底层换了存储设备由SSD换成HHD,OS的代码就失效了,而如果进行逻辑抽象的话,底层无论更换任何存储设备,在操作系统看来都不过只是一个线性数组结构罢了,适应性很强。显然,由于要求每个磁道的扇区数相等,而外道的周长要大于内道,所以外道的记录密度要远低于内道,不仅造成了硬盘空间的浪费,也限制了硬盘的容量。定位一个扇区,需要先定位在哪一个磁道(柱面),然后定位磁头,也就是定位在盘面的哪一个面上,最后定位在哪一个扇区上。摘自rygttm大佬。原创 2023-11-30 19:29:13 · 586 阅读 · 2 评论 -
3.【Linux】之地址空间
进程创建操作系统为该进程创建pcb(task_struct),并为其分配虚拟地址空间(包括用户空间和内核空间)和页表。然后加载程序的代码和数据到虚拟地址空间中并初始化栈(用于存放函数调用和局部变量),随后操作系统将页表中的条目填充建立映射关系,并为进程分配物理内存页框,将虚拟页映射到物理页上。当新进程被调度执行时,CPU通过MMU将进程的虚拟地址转换为实际的物理地址,进程开始执行。原创 2023-12-17 20:21:15 · 1809 阅读 · 12 评论 -
【Linux】之进程间通信
本文将基于linux系统介绍进程间通信的几种方式,包括匿名管道,命名管道,systemV的共享内存等,全是干货,无废话1.管道是用来进行具有血缘关系的进程进行进程间通信 (常用于父子间通信)2.管道具有通过让进程间协同,提供了访问控制(父子进程会相互协调进行读写操作)3.管道提供的是面向字节流式的通信服务 --- 面向字节流 --- 通过定制协议实现(父进程多次写入,子进程一次性读取)4.管道是基于文件的,文件的生命周期是随进程的,即管道的生命周期也随进程的!(数据通过内存缓冲区传递)原创 2023-12-13 11:44:10 · 291 阅读 · 4 评论