本文主要参考《计算机操作系统(第四版)》(西安电子科技大学出版社)以及清华大学操作系统公开课(向勇、陈渝),整理操作系统的基本概念,供自己复习查阅。 信号量机制 进程控制中最重要的一部分便是协调好进程的并发,控制进程同步,最具体的体现就是处理临界资源。信号量机制便广泛应用在临界资源处理方面。 信号量 ...
分类:
其他好文 时间:
2019-11-17 14:59:48
阅读次数:
80
1 LockSupport 类使用类似信号量的机制,它为每一个线程准备了一个许可,如果许可可用,那么park()方法会立即返回,并且消费这个许可,如果许可不可用,就会阻塞, 而unpark()方法则使得一个许可变为可用。 这一个特点使得:即使unpark(0方法操作发生在park()方法之前,它也可 ...
分类:
编程语言 时间:
2019-11-16 23:05:06
阅读次数:
95
ipcs/ipcrm命令 是linux/uinx上提供关于一些进程间通信方式的信息,包括共享内存,消息队列,信号 多进程间通信常用的技术手段包括共享内存、消息队列、信号量等等,Linux系统下自带的ipcs命令是一个极好的工具,可以帮助我们查看当前系统下以上三项的使用情况,从而利于定位多进程通信中出 ...
分类:
系统相关 时间:
2019-11-16 14:42:18
阅读次数:
116
cpp11里用于并发的工具有主要有thread、mutex、condition_variable,其中condition_variable条件变量wait可以附加条件,是对条件和锁的封装,如果不加条件只用锁就是一元信号量,只有一元的pv操作,而附加了条件后若条件为真则直接后续,非真则等待(阻塞并归还 ...
分类:
编程语言 时间:
2019-11-12 20:02:33
阅读次数:
74
1.缓存雪崩和缓存穿透问题 1.1缓存雪崩 简介:缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。 解决办法: ? 事前:尽量保证整个 redis 集群的高可用性,发现机器宕机尽快补上。选择合适的内存淘汰策略。 ? 事中:本地 ehcache 缓存 ...
分类:
其他好文 时间:
2019-11-06 01:07:20
阅读次数:
116
题目:Foo类的三个方法会并发执行,确保first,second,third的执行顺序 解题思路: 1.信号量 每个 acquire() 方法阻塞,直到有一个许可证可以获得然后拿走一个许可证。每个 release() 方法增加一个许可证,这可能会释放一个阻塞的 acquire() 方法。 ...
分类:
编程语言 时间:
2019-11-01 13:16:00
阅读次数:
140
递归信号量的属性:同一个任务中,可以被获取多次,且需要释放相同次数才能被其他任务获取。 1.递归信号量的创建、获取、释放: xxMux = xSemaphoreCreateRecursiveMutex(); xSemaphoreTakeRecursive(xxMux,osWaitForever); ...
分类:
其他好文 时间:
2019-10-31 13:20:09
阅读次数:
123
线程一、什么是线程?在传统的操作系统当中,每一个进程有一个地址空间,默认就有一个控制线程进程只是用来把资源集中到一起(进程只是一个资源单位,或者说是资源集合),而线程才是cpu上的执行单位多线程:是指在一个进程当中,开启多个线程,多个线程共享该进程的地址空间。二、线程与进程的区别1、同一个进程内的多 ...
分类:
编程语言 时间:
2019-10-30 18:51:13
阅读次数:
95
一 线程间的同步与互斥:信号量、互斥量、实践集 线程互斥是指对于临界区资源访问的排它性,如多个线程对共享内存资源的访问,生产消费型对产品的操作。临界区操作操作方法有: rt_hw_interrupt_disable() / rt_enter_critical()进入临界区, rt_hw_interr ...
分类:
编程语言 时间:
2019-10-30 18:47:17
阅读次数:
182
自旋锁可以再不能休眠的代码中使用,比如中断处理例程;在正确使用的情况下,自旋锁通常可以提供比信号量更高的性能; 一个自旋锁是一个互斥设备,它只能由两个值,锁定和解锁;通常实现为某个整数值中的单个位;希望获得特定锁的代码测试相关位,如果锁可用,则锁定位被设置,而嗲吗继续进入临界区;相反,如果锁被其他人 ...
分类:
系统相关 时间:
2019-10-29 20:05:13
阅读次数:
128