研究方向
文章平均质量分 59
无名氏a
学习,永无止境!
展开
-
并发与多线程的关系与区别
进程:每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程:线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。线程是程序中一个单一的顺序控制流程。多线程对应的是cpu,高并发对应的是访问请求多线程是处理高并发的一种编程方法,即并发需要用多线程实现。多线程:在单个程序中同时运行多个线程完成不同原创 2021-05-16 23:49:07 · 2265 阅读 · 0 评论 -
死锁相关知识学习
闭环是死锁的必要条件所有线程都等待如果图中不包含循环=》没有死锁如果图中包括循环==》如果每个资源类只有一个实例,那么死锁。如果每个资源类有几个实例,那么可能死锁。原创 2020-08-08 21:47:34 · 97 阅读 · 0 评论 -
pin学习笔记
写插桩程序简单概括为两个问题:(1)在何处插入什么方法;(2)在插入点执行的方法(Analysis function)PinTools的插桩粒度可以分为:image(我认为可以理解为输入文件),section(类似于基本块,但PinTools中定义的基本块与平常我们所说的基本块不太一样,不过目前这个不同没有影响到我写程序),routines(函数或方法,function),instruction(语句)示例(以Linux为例)到source/tools/ManualExamples目录下执行make可原创 2020-07-01 22:25:37 · 85 阅读 · 0 评论 -
C语言 pow函数 undefined reference to `pow‘ 已解决
默认使用gcc编译是 gcc encoding1.c -o encoding1 结果报错: /tmp/ccvERwYZ.o: In function `Sum':encoding1.c:(.text+0x62): undefined reference to `pow'collect2: error: ld returned 1 exit status 改成下面的样子就可以成功编译了。 gcc encoding1.c -lm -o encodin...转载 2022-05-03 16:44:30 · 2001 阅读 · 0 评论 -
Ubuntu下Qt创建的窗口菜单栏(menubar)显示在左上角问题解决
解决菜单栏menubar不显示的问题!项目需要创建的窗口程序的菜单栏在没有把窗口最大化的情况下,菜单项出现在左上角,而不是在窗口上方。原因:ubuntu下默认是将菜单项放在左上角的。解决办法:在系统设置里进行外观行为设置,选择窗口的标题栏总是显示运行,验证效果,完毕!...原创 2022-04-15 18:04:37 · 1364 阅读 · 0 评论 -
Pyinstaller库安装步骤及使用方法
Pyinstaller库简介: 简单来说,就是直接将python语言编写的py程序打包为exe可执行文件,对方不需要安装python环境即可直接运行。 不过Pyinstaller库是在cmd环境下给出命令的哦! PyInstaller 库安装步骤 1.一般安装步骤: pip install pyinstaller一般的安装方法是在cmd命令提示符环境下输入: 即可,但是总会有一些意...转载 2022-04-06 13:33:34 · 7400 阅读 · 0 评论 -
pycharm中pip安装出错WARNING:Retrying(Retry(total=4,connect=None,read=None,redirect=None,status=None))解决办法
存在的问题:太让人头大。。。解决办法一:尝试使用国内镜像进行,例如清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/豆瓣(douban) http://pypi.douban.com/simple/阿里云 http://mirrors.aliyun.com/pypi/simple/但是依旧报错,很伤心~~再考虑允许警告,使用以下命令,例如:–trusted host pypi.douban.compip install dark -i ht原创 2022-04-05 01:50:11 · 6771 阅读 · 3 评论 -
如何通俗易懂理解线程的一生
写得太好了忍不住,转载一下。 我是一个线程, 我一出生就被编了个号: 0x3704, 然后被领到一个昏暗的屋子里, 这里我发现了很多和我一模一样的同伴。 我身边的同伴0x6900 待的时间比较长, 他带着沧桑的口气对我说: 我们线程的宿命就是处理包裹。 把包裹处理完以后还得马上回到这里,否则可能永远回不来了。 我一脸懵懂,包裹,什么包裹? ”不要着急,马上你就会明白了, 我们这里是不养闲人的。“ 果然,没多久,屋子的门开...转载 2021-04-22 17:34:28 · 176 阅读 · 0 评论 -
Ubuntu卸载protobuf并安装3.6.0版本的protobuf
1.卸载Ubuntu自带的protobuf;# sudo apt-get remove libprotobuf-dev# which protoc// 运行完“which protoc”会显示一个protoc的路径,如果没有显示则下面这条命令不必执行# rm /usr/local/bin/protoc// 具体路径以“which protoc”显示的为准 到此,低版本的protobuf卸载完成。2.安装特定版本的protobuf,在此以安装protobuf3.6.0为例;前提:确保以下几转载 2021-02-01 15:24:30 · 2383 阅读 · 2 评论 -
Ubuntu 16.04 安装 protobuf 以及测试/使用
buntu 16.04 自带有 protobuf 2.6.1版本,如果安装心版本可以选择覆盖自带的2.6.1版本或两个版本兼容安装,根据需求选择安装方式。1.两个版本protobuf兼容安装Ubuntu 16.04 自带有 protobuf 2.6.1版本,如果想兼容的话按照下面方式安装1.1.1 下载并解压缩打开浏览器,输入地址:https://github.com/google/protobuf/releases/download/v3.4.1/protobuf-cpp-3.4.1.tar.gz转载 2021-02-01 15:21:13 · 558 阅读 · 0 评论 -
intel pin学习
intel pinpin 工具的功能:1. 替换原有程序函数2. 探测程序任意指令,在自己设定的插入位置插入自己的代码并执行3. 记录程序调用,包括syscall(检测改变参数)4. 记录程序线程活动情况5. 监测进程树6. 模拟api调用(这里可以思维宽广点。。。)Pin相当于一个JIT("just in time“)编译器。Pin大体上有三种插装代码模式(指令级,rtn级,bbl级),Pin的三种插入(代码)模式:1.In原创 2020-12-06 11:49:53 · 276 阅读 · 0 评论 -
ubuntu提示:E: 4.4 is not a supported linux release
运行intel Pin 2.14时出现以下错误:“ E:4.4不是受支持的Linux版本”我在Ubuntu 14.04上并运行4.4 Linux内核。解决方法:您可以通过添加“ -injection child”参数来使Pin 2.14在4.4内核上运行。我向bash添加了一个别名,如下所示,因此Pin 2.14现在可以独立运行:别名pin =“ pin -injection child”但是,当我尝试使用simple.cfg运行zsim时,仍然获得以下输出:...原创 2020-08-04 15:57:17 · 380 阅读 · 0 评论 -
parsec使用教程
参考链接:https://www.cnblogs.com/PPWEI/p/9741685.html首先,下载的是PARSEC 3.0 Core和PARSEC 3.0 Native Inputs,前者是核心,但是缺少了很多文件,只有最关键的部分。后者是一个提供输入文件的压缩包。具体使用方法如下:解压PARSEC 3.0 Core进入cd parsec-3.0 输入命令 source env.sh环境配置成功后续使用:安装blackscholes,parsecmgmt -a bu原创 2020-07-29 14:43:22 · 10332 阅读 · 0 评论 -
ThreadSanitizer检测工具-动态数据竞争检测技术
ThreadSanitizer是检测数据争用的工具。它由一个编译器检测模块和一个运行时库组成。Data RaceData Race是指多个线程在没有正确加锁的情况下,同时访问同一块数据,并且至少有一个线程是写操作,对数据的读取和修改产生了竞争,从而导致各种不可预计的问题。Data Race的问题非常难查,Data Race一旦发生,结果是不可预期的,也许直接就Crash了,也许导致执行流程错乱了,也许把内存破坏导致之后某个时刻突然Crash了。例子一:#include <pthread.h&原创 2020-07-29 11:13:12 · 1567 阅读 · 0 评论 -
PARSEC使用与下载
相关网址:安装运行过程中一些有用的网址http://parsec.cs.princeton.edu/index.htmPARSEC官网http://parsec.cs.princeton.edu/parsec3-doc.htmparsec3官网安装步骤https://www.cnblogs.com/PPWEI/p/9741685.html一篇PARSEC使用教程http://wiki.cs.princeton.edu/index.php/PARSEC 借鉴http://www.itkeyw转载 2020-07-29 09:35:45 · 4436 阅读 · 0 评论 -
向量时钟
为什么需要向量时钟Lamport 逻辑时钟算法中每个进程只拥有自己的本地时间,没有其他进程的时间,导致无法描述事件的因果关系。如果每个进程都能够知道其他所有进程的时间,是否就能够得到事件的因果关系了呢?为此,有人提出了向量时钟算法。向量时钟的原理用VC(a)来表示事件a的Vector Clock,有如下性质:VC(a) < VC(b)可以推出事件a causally 发生在事件b之前(也就是事件a发生在事件b之前)。假设有N个进程,每个进程Pi维护一个向量VC,也就是Pi的Vector Clo原创 2020-08-05 16:05:48 · 648 阅读 · 0 评论 -
Intel Pin学习笔记
PinPin 是什么? 在一开始,可以将 Pin 理解为一种 Compiler。但是不同于传统的 compiler,Pin 的输入是可执行文件。Pin 根据我们的需求对可执行文件进行 compile 从而产生了新的可执行文件。为了满足我们的需求,Pin 提供了一系列API。Pintool为了实现我们的需求,需要知道:在原始可执行文件的什么位置插入 代码(检测,instrumentation)插入 什么代码 (分析,analysis)这就是 Pintool。所以Pintool可以理解成在 Pin原创 2020-07-23 08:39:39 · 802 阅读 · 1 评论 -
Pin学习
插桩粒度:原创 2020-07-21 15:17:19 · 61 阅读 · 0 评论 -
软件所在并发漏洞检测方面取得进展
近期,中国科学院软件研究所蔡彦团队提出了并发程序中并发漏洞检测的新方法,该团队首次基于松弛可交换事件来检测并发漏洞。该团队提出的松弛可交换事件克服了传统检测算法的不足,即使目标事件之前存在复杂的同步约束,也可以通过松弛可交换事件来判断是否可以交换。相关成果以Detecting Concurrency Memory Corruption Vulnerabilities 为题,发表于软件工程领域会议27th ACM Joint European Software Engineering Conference a原创 2020-07-18 11:06:52 · 132 阅读 · 0 评论 -
并发程序中数据竞争检测方法研究综述
数据竞争是多线程程序中最为常见也是最为复杂的一种错误。由于并发条件下,信息不同步,产生读写误差,就可能会出现数据竞争。条件:1.一个线程写入一个变量,另一个变量来读这个变量。2.或者读之前,另一个线程写入时,这两个线程没有使用同步关系。3.这两个线程访问同一片共享内存,并且没有明确的先后顺序关系,且至少有一个为写访问时,则会发生数据竞争。Inlel使用原理PIN是intel公司开发的动态二进制插桩框架,可用于创建动态程序检测工具。pin通过它提供的一些API,可以在二级制代码中插入一些探测函数原创 2020-11-30 10:44:02 · 522 阅读 · 0 评论 -
lock-set方法
lock-set方法最早由 Savage等人在 Eraser系统中提出。这种方法的基本思想是提取并记录不同线程所申请的锁的集合,当每个线程访问共享资源时,取不同线程针对该共享资源锁的交集,如果两个线程对该共享资源没有使用同一个锁保护,那么两个线程就可能同时对该共享资源进行操作,认为存在竞态漏洞。...原创 2020-07-12 22:03:22 · 946 阅读 · 0 评论 -
intel pin 工具的使用原理(基本用法)
原理大致是Intel Pin在可执行二进制代码中插入一些探测函数,用于观察、记录、分析宿主代码执行过程中的一些与计算机体系结构相关的特性,如访存指令,寄存器内容,寄存器地址等,通过Pin提供的API可以编写各种分析函数,这样程序运行完以后,统计和分析结果也同时产生,阅读各种pintools 的 .so生成的各类.out 文件,并最终根据.out输出文件,处理这些数据,分析数据处理结果,获取有价值的学术成果和科研结论,并将其应用于整个计算机体系结构的技术革新和进步。pintools,通俗的讲,就是一些p原创 2020-07-27 16:16:54 · 4398 阅读 · 0 评论 -
Linux下undefined reference to ‘pthread_create’问题解决
ubutu编译.c文件时提示undefined reference to ‘pthread_create’问题原因分析:pthread不是linux下默认的库,无法找到phread库中函数的入口地址,于是链接会失败。解决办法:在gcc编译的时候,加上 -lpthread参数即可解决。完毕!...原创 2020-07-09 16:53:57 · 778 阅读 · 0 评论