堆操作C程序的静态数据竞争分析

日期

2010-11-09

期刊标题

期刊ISSN

卷标题

出版商

摘要

Kaasaegsed arvutiarhitektuurid vóimaldavadüheaegselt läbi viia mitmeid arvutusi(卡萨塞德-阿伏提亚·杜里德)。程序胺Kirjuamine niisuguste süsteemide jaoks onäärmiselt raske,kuna paralleelsel käivitatavate lóimede vaheline koosmöju on ettarvamatu。乌克·埃里蒂·拉斯凯斯蒂·塔巴塔夫·维加·米特梅尔·伊梅利塞斯·苏斯蒂米斯·安德梅约克斯,s.o.olukord,kus mitu lóimeüritavad samaaegseltühele ja samale jagatud mäluasukohale ligi päseda。见vöib kaasa tuua and mete riknemise ja sellega süsteemi kokku jooksmise vöi muu ebakorrektse käitumise。在formaalne meetod上的Staatiline项目mianalüüs,millega saab välja arvutada项目mi köigi vöimalike käitumisteülemhulga,lahenddes teatava和mevoogu kirjeldava vörrandisüsteemi。Käesoleva doktoritöpöpóhiteesiks on väide,et staatilise programminalüüsiga on vöimalik kindleaks teha and mejooksude puudumine reaalsetes keerukates süsteemides,eriti operatisoonisüsteemide tuumoodulites。阿努吕侧的Selliste süsteemide jaoks arendamine raskendatud、sest nii和mestruktuurid kui ka neid kaitsvad lukud luuakse alles programmi täitmise ajal。关于töraames arendatud kolm uudset的Probleemiületamiseks会面:aadressavaldiste vörduste analüüs,dünaamilise mälu region-analüsja süsteemkoodile sobiv málukuju analüs。维护会议就实现mitmelóimeliste C程序mide analüsaatorite raamistikus Goblint ja nende praktilisust on demonstreitud mitmete vabavaraliste rakenduste ja operatisoonisüsteemi Linux tuumamoodulite anal ue siga进行了讨论。
现代计算机体系结构能够同时进行许多计算。为这样的系统编写和测试程序是众所周知的困难,因为并发执行线程之间的交互是不可预测的。共享内存并发系统中一个特别难以捉摸的缺陷是数据竞争,即多个线程可能同时尝试更新同一内存位置。这可能会导致数据损坏,并最终导致系统故障。静态程序分析是一种自动化的形式化方法,它通过求解数据流方程组来计算程序的所有可能的运行时行为。本文认为,静态分析可以用于验证真实系统中是否存在数据竞争,特别是像Linux设备驱动程序这样的操作系统模块。为此类代码开发静态分析的挑战是,数据结构和保护数据的锁都是在运行时创建的。为了解决这个问题,开发了三种新技术:用于表示地址表达式之间的等式的抽象域、基于区域的堆抽象和适用于低级程序的形状域。我们在Goblint分析仪中实现了这些技术,并用它实验验证了以下论点:通过静态分析,可以验证真实系统中的种族自由。

描述

关键词

学位论文集,马泰玛提卡

引用