spin

IRQL

我的梦境 提交于 2019-12-01 10:26:41
计算机组成原理:中断控制,寄存器,cpu,硬件中断与软件中断。硬件驱动与软驱动 https://blog.csdn.net/vc2014/article/details/45537849 KeAcquireSpinLock 申请自旋锁 linux内核同步 spin_lock 自旋锁 #ifdef WIN32 KeReleaseSpinLock(); #else spin_unlock(); #endif 来源: https://www.cnblogs.com/hshy/p/11681713.html

wordpress外链GO跳转方法

依然范特西╮ 提交于 2019-12-01 04:38:54
创建go.php文件放置根目录即可。 案例演示:https://www.***.com/go.php?url=外链地址 <?php //https://www.gumizhijia.com/ //$t_url=$_GET['url']; //此代码无法支持带请求参数的目的地址,已弃用! $t_url = preg_replace('/^url=(.*)$/i','$1',$_SERVER["QUERY_STRING"]); //这个支持 if(!empty($t_url)) { preg_match('/(http|https):\/\//',$t_url,$matches); if($matches){ $url=$t_url; $title='页面加载中,请稍候...'; } else { preg_match('/\./i',$t_url,$matche); if($matche){ $url='http://'.$t_url; $title='页面加载中,请稍候...'; } else { $url='http://zhangge.net/'; $title='参数错误,正在返回首页...'; } } } else { $title='参数缺失,正在返回首页...'; $url='https://www.gumizhijia.com/'; } ?> <html> <head

linux之spinlock使用

試著忘記壹切 提交于 2019-11-30 01:11:59
一、概述 在kernel中,发生并发访问的发生源主要为一下4种方式 1、中断和异常,中断发生之后,中断处理函数与被中断进程之间有可能会出现资源并发访问 2、软中端以及tasklet,软中断以及任务调度都会打断当前的进程,从而发生资源的并发性访问 3、内核抢占,内核抢占也是会打断当前的进程,从而造成资源的并发性访问 4、smp,多个CPU也会对同一个资源进行并发性的访问。 为了解决资源并发性的访问从而造成意料之外的现象,linux内核提供了几种保护机制。 比如spinlock,atomic,semphorema,mutex和 write read lock以及rcu。 今天我们主要聊一聊spin_lock这个在驱动中使用较为常见的资源保护机制 二、spin_lock介绍 2.1 引入 对引用计数这些如果使用lock机制,就会造成额外的系统开销,但是在驱动中,我们大多数都是资源的拷贝,解析这些需要大量CPU资源的操作,同时也需要保护这部分数据的操作的有效性,spin_lock是一个非常不错的选择。 spin_lock是一个忙等待的工作方式,如果两个进程同时访问资源,但是其中一个进程以及获取到该资源后,就会对资源加上一把自旋锁,另外一个资源只有在死循环等待前一个进程释放该锁之后才可以对资源进行访问,所以:spin_lock是忙等待的工作方式。 2.2、一些小谈 **假设:**在spin

atomic sequences in Promela. Contradictory in documentation

廉价感情. 提交于 2019-11-29 16:49:30
Here, http://spinroot.com/spin/Man/Manual.html , it is written that: In Promela there is also another way to avoid the test and set problem: atomic sequences. By prefixing a sequence of statements enclosed in curly braces with the keyword atomic the user can indicate that the sequence is to be executed as one indivisible unit, non-interleaved with any other processes. It causes a run-time error if any statement, other than the first statement, blocks in an atomic sequence . This is how we can use atomic sequences to protect the concurrent access to the global variable state in the earlier

Linux内核klist链表分析

天涯浪子 提交于 2019-11-29 08:24:10
1、前言 在Linux内核源码中,除了简洁的list链表还有klist链表,它是list链表的线程安全版本,在结构中提供了整个链表的自旋锁,对链表节点查找、插入和删除等操作,都需要先获得这个自旋锁,klist链表节点数据结构klist_node引入了引用计数,只有当节点的的引用计数为0时,才允许该节点从klist链表中移除。 2、klist链表相关结构 内核源码中,klist相关的头文件在include/linux/klist.h,实现的文件在lib/klist.c中,接下来分析一下klist链表头和klist链表节点的定义: 首先是klist链表头的定义,如下: struct klist { spinlock_t k_lock; struct list_head k_list; void (*get)(struct klist_node *); void (*put)(struct klist_node *); } __attribute__ ((aligned (sizeof(void *)))); 成员分析: k_lock:链接节点操作需要的自旋锁; k_list:嵌入的双向链表list; get:函数指针,用于链表内的节点增加引用计数; put:函数指针,用于链表内的节点减少引用计数。 需要注意的是,该结构体是sizeof(void *)字节对齐,假设是4字节对齐的话

Latch free等待事件

做~自己de王妃 提交于 2019-11-28 08:05:55
Latch free等待事件的三个参数:p1-latch的地址;p2-latch编号;p3-请求次数。从oracle10g起,latchfree不再包含所有的latch等待,有些latch等待可能表现为单独的等待事件,这个后面有提到一些这样的等待事件,一般情况下我们还是统称为latch free等待事件。在处理latchfree等待事件时,需要注意以下几点: n Latch只是用来保护sga中的内存结构。对数据库中的对象的保护,使用的lock而不是latch。Oraclesga中有许多latch,用来保护sga中各种内存结构不会因为并发访问而损坏。 n 等待latch的是oracle会话。不同的latch类型会导致会话采取不同的策略。 n 在oracle9i(包括9i)之前,latchfree等待事件包括了所有的latch等待,但从oracle10g起,latch被分成不同的种类,并且某些latch表现为独立的等待事件。 什么是latch Latch是一种锁机制。你应该已经熟悉latch的概念和用法,虽然可能你自己并没有意识到。在日常的工作和交流中,latch都经常出现,比如你锁门时,需要获得一个latch;或者你坐到车里,系上安全带,你就把自己放在一个latch的保护中了。 在oracle中,latch是一种轻量级的锁。一般来说,latch由三种内存元素组成:pid(进程id)

Latch free等待事件

我的梦境 提交于 2019-11-28 08:03:28
原文:oracle waitinterface—a practical guide to performance diagnostics & tuning Richmond shee Kirtikumar deshpande K gopalakrishnan Latch free等待事件的三个参数:p1-latch的地址;p2-latch编号;p3-请求次数。从oracle10g起,latchfree不再包含所有的latch等待,有些latch等待可能表现为单独的等待事件,这个后面有提到一些这样的等待事件,一般情况下我们还是统称为latch free等待事件。在处理latchfree等待事件时,需要注意以下几点: n Latch只是用来保护sga中的内存结构。对数据库中的对象的保护,使用的lock而不是latch。Oraclesga中有许多latch,用来保护sga中各种内存结构不会因为并发访问而损坏。 n 等待latch的是oracle会话。不同的latch类型会导致会话采取不同的策略。 n 在oracle9i(包括9i)之前,latchfree等待事件包括了所有的latch等待,但从oracle10g起,latch被分成不同的种类,并且某些latch表现为独立的等待事件。 什么是latch Latch是一种锁机制。你应该已经熟悉latch的概念和用法,虽然可能你自己并没有意识到

vue+axios 前端实现登录拦截(http拦截)

本小妞迷上赌 提交于 2019-11-27 21:23:49
拦截器 首先我们要明白设置拦截器的目的是什么,当我们需要统一处理http请求和响应时我们通过设置拦截器处理方便很多. 这个项目我引入了element ui框架,所以我是结合element中loading和message组件来处理的.我们可以单独建立一个http的js文件处理axios,再到main.js中引入. /** * http配置 */ // 引入axios以及element ui中的loading和message组件 import axios from 'axios' import { getSession } from '@/utils' import { Spin, Message } from 'iview' axios.prototype.$spin = Spin; // 超时时间 axios.defaults.timeout = 5000 // http请求拦截器 axios.interceptors.request.use(config => { Spin.show() config.headers['authorization'] = getSession('authorization') === null ? "" : getSession('authorization') return config }, error => { Spin.hide()

浅谈消息队列

天大地大妈咪最大 提交于 2019-11-27 02:50:34
1.写在前面 本来一年前的时候还打算以那篇面经为契机,开始自己写博客的习惯,结果后来一拖再拖,虽然evernote里面积攒了不少东西,但是发现想整理成博客真的是太累了,毕设的时候觉得累没整理,刚到公司做mini项目觉得累没整理,后来刚进工作室熟悉环境觉得累没整理,不知不觉就一年没写博客了,囧。 为什么想起来写这样一篇文章呢?其实主要还是两周前有一个知乎问题突然火起来了,传说中的 水货程序员之问 。这篇知乎问题真是一个大宝库,刚一出来,海量平时在知乎上各种高调的大神(棍)和海量低调的真大神都出来冒泡,让我们这些弱菜开了眼界。水货程序员之问是个好问题,问题不是说好在水货程序员这篇文章到底黑的对不对准不准,而是印发的讨论像钓鱼一样钓出了一水儿神棍。 那怎么区别神棍和大神呢?方法很简单,我们一个一个浏览答案,从高票到低票,哪个答案或者跟着的评论里屁代码没有,还说的煞有介事的,一般都是神棍;哪个答案全程干货,各种分析,那就是大神。 举个比较简单的例子,某高票答案「妄议」了下云风,说后者解决问题的路子太野大家学不来,并且推荐了一票路子「不野」的大神(?)。我们不管这些大神(?)之前的知乎回答质量如何,但是我们从这个水货程序员之问里可以发现,这一票路子不野的大神(?)没有一个是来抖干货的,全是来玩SNS的。人家原po说云风的消息队列写的不行,那你们这些大神(?)既然来「妄议」了