操作系统:Linux
文章平均质量分 91
Linux操作系统学习总结!
希言JY
绝知此事要躬行!
展开
-
生产者和消费者模型 | 阻塞队列 | 信号量 | 环形队列
其与普通的队列区别在于,当队列为空时,从队列获取元素的操作将会被阻塞,直到队列中被放入了元素;用来描述资源,当申请信号量时就已经间接的判断临界资源是否就绪,如果申请成功就一定有对应的资源!就好比如,去电影院买票,只有票(信号量)买上了,就一定有对应的位置供你观影使用!同样的线程,成功申请了信号量,那里临界资源一定有线程所能访问的资源。也可以是放蛋糕的人有多个,取蛋糕的人也有多个,对应是多生产多消费!生产者和消费者模型,概括起来其实是一个321原则:3是:三种关系,2是两种角色,1是1个交易场所。原创 2024-04-12 15:55:19 · 814 阅读 · 0 评论 -
线程同步 | 条件变量
条件变量是实现同步的一种机制,既然要保证数据安全那么就要有互斥锁,当线程首先访问到对应的锁资源,如果申请不到,再去对应的条件变量的队列中排队,张三(线程)进入自习室(临界区)自习,并反锁门,其他人(其他线程)也去自习先自习室门口找钥匙(先申请锁),发现有人,就去排队。在纯互斥环境下,线程会产生饥饿问题;每个线程如果申请不到锁,就会进入阻塞,当特定情况下被唤醒(全部唤醒),线程之间是没有一定的顺序的。所以至少看了来条件变量有两个东西,1.按照一定顺序排队的数据结构,2.有对用的通信机制,唤醒队列等待的线程。原创 2024-04-10 12:25:27 · 423 阅读 · 0 评论 -
Linux:线程互斥 | 锁概念 | 锁原理 | 代码实现
多线程竞争共享资源,线程互斥,锁(互斥量)的概念,锁的原理,代码实现!原创 2024-01-20 11:58:08 · 1054 阅读 · 0 评论 -
Linux:线程概念 | 线程操作 | 原生线程库初识
操作系统线程概念,Linux使用原生线程库对线程的操作!原创 2023-12-21 21:49:59 · 953 阅读 · 1 评论 -
探究malloc | sbrk系统调用的简单使用
malloc分配的是虚拟内存,如果分配的虚拟内存没有使用是不会分配物理内存的,这样就可以并不用占用物理内存。如果通过虚拟内存访问,操作系统通过查找页表,发现虚拟内存对应的页没有在物理内存中,就会触发缺页中断,然后操作系统会建立虚拟内存和物理内存之间的映射关系。通过观察也可以知道malloc出来的起始地址和堆分配的起始地址也相差16位f44010-00f44000,这个存放malloc出来的信息控制块,这个信息控制块保存了malloc分配的信息,等free的时候能正确释放。都是用来分配资源的函数,原创 2024-02-27 16:00:11 · 1146 阅读 · 0 评论 -
内存管理 | 进程地址空间
进程地址空间和页表都是由操作系统创建并维护的,也就意味着使用地址空间和页表进行映射都在操作系统的监管之下,如果你是非法的,操作系统就会终止你的进程将虚拟地址映射到真正存储数据的物理地址!原创 2024-02-09 22:49:00 · 1062 阅读 · 0 评论 -
软链接 | 硬链接 | 动态库 | 静态库 | 制作和使用
硬链接指向的是同一个inode,但是 inode 是不可能跨越文件系统的,每个文件系统都有各自的 inode 数据结构和列表,所以。都是删除文件,当引用计数变为0,没有文件名和inode关联,系统认为用户不管了这个文件了会删除。也代表上一级目录,而dir1的引用计数为3可以知道有1个目录。软硬接有独立的inode创建了新文件,而硬链接没有创建真正的文件;,所以访问软链接的时候,实际上相当于访问到了另外一个文件,所以。文件就是代表一个文件名就对应一个inode而目录中的。会有一个引用计数,创建一个目录中。原创 2024-03-21 21:43:43 · 339 阅读 · 0 评论 -
进程间通信 | 匿名管道 | 命名管道 | 共享内存 | 消息队列 | 信号 | Socket | 代码实现
进程间通信的本质,前提是要进程看到同一块"内存",这个"内存"不隶属那个进程,是进程间共享的!原创 2024-03-18 22:49:12 · 860 阅读 · 0 评论 -
进程控制 | 进程终止 | 进程等待 | 进程替换
一般而言,我们创建的父进程长时间不会退出的,比如一个应用程序,是当用户点击退出的时候才会退出,在服务器端,一个服务器启动之后是不会退出的,要是发生内存泄漏就可以大事。其实exit()的底层是调用了_exit(),C语言对 _exit进一定的封装,如果我们使用printf打印函数,但是我们自己并没有主动的去刷新缓冲区,那么使用exit()函数来退出程序,会帮我们把缓冲区的数据刷新。当我们fork创建子进程的时候并不会加载一份新的可执行程序到内存,而是公用一份父进程的代码。b.调用C语言体统的函数exit;原创 2024-03-29 15:53:07 · 747 阅读 · 0 评论 -
进程状态 | 僵尸进程 | 孤儿进程 | 前台后台进程 | 守护进程
僵尸进程的危害:子进程被创建出来,是为了完成父进程交给它的任务,父进程需要读取子进程的返回状态,但是父进程先退出,那么子进程就要一直维护Z状态;Linux操作系统中,当一个用户登录的时候会分配一个会话,一个会话期间可以创建多个进程组,退出登录,会话会销毁;会话中前台进程终止,后台进程可能不会终止,但是会受一定的影响。一个任务可以是一个进程执行也可以是多个进程执行,多个进程组成进程组以第一个进程的进程pid为任务号,一个进程可以自成进程组!将自成进程组自成会话的进程,称为守护进程,他的本质也是孤儿进程;原创 2024-02-07 21:36:32 · 1145 阅读 · 0 评论 -
操作系统理解 | 进程概念 | fork创建子进程
操作系统概念理解,进程的概念,在Linux系统下使用系统调用接口创建进程!原创 2024-02-05 18:19:49 · 1134 阅读 · 0 评论