种地 发表于 2022-8-13 00:11:58

上交os lec8 同步原语

8.1 临界区问题


[*]os提供同步原语,防止共享资源的竞争错误
[*]解决临界区问题三个要求,互斥访问,优先等待,空闲让进https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220624231736168-1084430206.png
8.2 互斥锁的软件实现与硬件实现


[*]皮特森算法https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625075829194-1375033978.png
[*]关中断只能够解决单个CPU核上的临界区问题,但是多核不行https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625080341878-1047443719.png
[*]互斥锁还可以实现同步互斥访问https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625082740971-71874304.pnghttps://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625085539789-354192965.pngintel通过锁总线实现原子的CAShttps://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625085702616-220752439.png对于任意地址的修改都要经过总线,通过锁总线来实现原子操作
[*]arm使用LL/SC实现原子操作https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625090132390-1087910214.pnghttps://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625090610467-654761130.png
[*]FAA获取并增加也可是一种硬件实现锁的方式
[*]自旋锁https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625091631793-1952261523.pnghttps://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625091711232-2098400376.png
[*]排号锁https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625091900225-1879396224.png用FAA实现排号锁https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625091944053-733024123.pnghttps://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625092026690-1680217675.png
[*]排号锁和spinlock都是mutex的
8.3 读写锁


[*]https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625092351550-176514558.png读写锁https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625092400007-1771475649.pnghttps://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625093804845-1291033311.png
[*]读写锁的偏向性https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625093822337-1668368662.png也就是读者优先还是写者优先
[*]读者优先https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625094017726-1403055992.png
8.4 Read Copy Updat e

<ul>如何提高读者的效率,使用RCUhttps://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625095050092-507468487.png读者要么看到旧的值,要么看到新的值https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625095141782-748537810.png硬件的原子操作最多只能128bit
https://img2022.cnblogs.com/blog/1743182/202206/1743182-20220625095612865-241208408.png由于硬件的原子操作最多只能128bit,那么可以通过修改指针的操作来修改一块内存区域,现在不用加
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 上交os lec8 同步原语