Linux
文章平均质量分 63
erfenjiao
这个作者很懒,什么都没留下…
展开
-
生产者消费者问题(条件变量)
文章目录生产者消费者问题使用条件变量解决条件变量概念相关函数组成参考生产者消费者问题使用条件变量解决条件变量概念条件变量视是线程可用的另一种同步机制。条件变量给多个线程提供了一个汇合的场所。条件变量与互斥量一起使用时,允许线程以无竞争的方式等待特定的条件发生条件本身是由互斥量保护的。线程在改变条件状态之前必须首先锁住互斥量。其他线程在获得互斥量之前不会察觉到这种改变,因为互斥量必须在锁住以后才能计算条件。相关函数#include <pthread.h>pthread_cond_t原创 2021-07-15 10:33:35 · 479 阅读 · 0 评论 -
哲学家进餐问题(同步)
文章目录1.问题描述2.问题分析1.记录型信号量2.利用记录性信号解决哲学家进餐问题方案一方案二方案三--利用AND信号量机制解决问题参考本文章参考b站视频BV1Xk41q7RK1.问题描述有五个哲学家围在一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五支筷子,他们的生活方式是交替的进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到两支筷子时才能进餐。进餐完毕后,放下筷子继续思考。2.问题分析1.记录型信号量先操作,后判断wait(Semap原创 2021-05-22 16:02:49 · 1016 阅读 · 0 评论 -
进程同步——生产者与消费者问题
文章目录问题描述分析过程用AND信号解决生产者-消费者问题代码实现此文章参考b站视频 BV1Xk4y1q7RK问题描述在同一个进程地址空间内执行两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放一个空缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻挡,直到新的物品被生产出来。分析1.不能向满存2.不能向空取3.同一原创 2021-05-20 20:06:47 · 765 阅读 · 0 评论 -
限流算法之漏桶与令牌桶
什么是限流在业务场景中,我们会遇到有百万甚至更加大的用户请求流量来访问接口,或者在业务对接过程中,业务提供方的访问频率控制,等等我们的业务都需要做限流处理,这个时候如果不做任何保护措施,服务器就会承受很大的处理压力,请求量很高,服务器负载也很高,并且当请求超过服务器承载极限的时候,系统就会崩溃,导致所有人都不能访问。为了应用服务的高可用,一个常用的办法是对大流量的请求(秒杀/抢购)进行限流,拦截掉大部分请求,只允许一部分请求真正进入后端服务器,这样就可以防止大量请求造成系统压力过大导致的系统崩溃,从而保原创 2021-05-06 20:54:38 · 294 阅读 · 0 评论 -
鸟哥第十章自我总结
www原创 2021-04-28 22:50:09 · 104 阅读 · 0 评论 -
信号的响应过程
任何硬件都会发生中断,即使当前任务并没有进行中断,也会有专门的一个模块负责每秒钟发出几千甚至更多中断。例如打印一个 Hello World ,屏幕上看上去好像一闪而过,没有打断,但其实它已经被中断了很多次信号的不可靠:是指信号的行为不可靠,因为执行现场不是我们布置的,而是由内核布置的,所以有可能第一次调用还没有结束的时候,就发生了第二次调用。可重入函数:就是为了解决信号的不可靠第一次调用还没有结束的时候,就发生了第二次调用,但是不会出错,这样的函数叫做 可重入函数。所有的系统调用都是可重入的,一部分原创 2021-04-26 21:59:43 · 533 阅读 · 0 评论 -
wait() waitpid()
本文章主要是man手册翻译及摘录wait()NAME wait, waitpid, waitid - wait for process to change state//等待进程状态发生变化SYNOPSIS #include <sys/types.h> #include <sys/wait.h> pid_t wait(int *wstatus);//参数:进程状态,把从子进程中收尸收回来的状态放到一个变翻译 2021-04-12 20:10:15 · 186 阅读 · 0 评论 -
进程环境
文章目录main函数进程的终止正常终止异常终止命令行参数的分析环境变量库函数跳转C程序的存储空间布局资源的获取与控制main函数int main(int argc ,char** argv)进程的终止正常终止1、从main函数返回return 0;// 给父进程看的2、调用exitexit()//作用:当前进程正常终止3、调用_exit 或_EXIT4、最后一个线程从其启动例程返回5、最后一个线程调用pthread_exit异常终止1、调用了abort2、接到一个信号并原创 2021-04-08 21:57:22 · 130 阅读 · 0 评论 -
系统数据文件和信息
文章目录/etc/passwdgetpwuid()的实现/etc/group/etc/shadow/etc/passwdNAME getpwnam, getpwnam_r, getpwuid, getpwuid_r - get password file entrySYNOPSIS #include <sys/types.h> #include <pwd.h> struct passwd *getpwnam(const原创 2021-04-05 22:15:05 · 276 阅读 · 0 评论 -
标准IO
本博客主要参照了李慧琴老师的Linux课程标准IO概念标准I/O是ANSI C建立的一个标准I/O模型,是一个标准函数包和stdio.h头文件中的定义,不依赖系统内核,所以移植性强。又称为高级磁盘I/O,遵循ANSI C相关标准。只要开发环境中有标准I/O库,标准I/O就可以使用。(Linux 中使用的是glibc,它是标准C库的超集。不仅包含ANSI C中定义的函数,还包括POSIX标准中定义的函数。因此,Linux 下既可以使用标准I/O,也可以使用文件I/O)。标准I/O库处理很多细节,例如缓冲原创 2021-04-02 20:52:49 · 271 阅读 · 0 评论