В този план, има и други приложения, вижте. Racing.
състояние Race (английски раса състояние.) - грешката на проектиране многонишковите система или приложение, в които работата на системата или приложението зависи от реда, по който се изпълняват части от кода. Името на грешката получена от подобни грешки електронен дизайн схема (вж. Сигнали Racing).
Състезание състояние - грешка (heisenbug) "плаващ", показан на случаен принцип пъти и "Прекъснат", когато се опитате да го намерите.
Вземем примера на кода (в Java). летливи Int х; // Тема 1: докато (спре!)
// поток 2: докато (спре!)
Нека х = 0. Да приемем, че програмата се извършва в следния ред:
ако оператор в поток 2 проверки паритет на х.
Операторът «х ++» в поток 1 х увеличава с единица.
О оператор в потока изходи 2 «х = 1", въпреки че изглежда, променливата проверява за паритет.
начини за решаване на
локално копие
синхронизация
По-сложни, но и по-универсален метод за решаване - синхронизация резба, а именно: Int х;
// Тема 1: докато (спре!)
// поток 2: докато (спре!)
Там се случва преди семантика не се нуждае от дума летлив.
комбиниран метод
Да предположим, че променливите - две (и летлив ключова дума не работи), а вторият поток вместо System.out.println струва по-сложна обработка. В този случай, и двата метода не са задоволителни: първата - така, че една променлива може да се промени, докато другата се копира; второ - защото синхронизирани твърде голям обем на код.
Тези методи могат да се комбинират с копирането на "опасни" променливи синхронизирано блок. От една страна, това ще премахне един лимит инструкция машина, а от друга - ще се отървете от твърде много синхрон.
летливи Int X1, Х2;
// Тема 1: докато (спре!)
// поток 2: докато (спре!)
Очевидните начина да установите и отстраните състоянието на раса не съществува. Най-добрият начин да се отървете от състезанията - правилното проектиране на система за многозадачна работа.
с случай Therac-25
Апаратура лъчетерапия Therac-25 е първият US медицинското изделие, в която въпросите на сигурността са възложени изключително на софтуера. Това устройство работи в три режима:
Е-терапия: електронен прожектор директно облъчва пациента; PC уточнява електронна енергия на от 5 до 25 MeV.
Рентгенова терапия: електронен прожектор облъчва целта на волфрам, и пациентът се облъчва с рентгенови лъчи, преминаващи през конусообразни дифузьор. В този режим, енергията на електрона е постоянна: 25 MeV.
не радиация е в третия режим. На пътя на електрон (в случай на злополука) е стоманен рефлектор и излъчването да бъде симулиран светлина. Този режим се използва за точно донесе снопа на възпалено място.
Тези три режима бяха определени въртящ се диск, в който отвор е Отклоняващите магнити за цел електрон терапия и леща за рентгенова. Поради състояние състезание между програмата за контрол и манипулатор клавиатура понякога това се е случило, че в рентгенов режим терапия с кола е в позиция "E-терапия" и пациентът е пряко облъчва с електронен лъч от 25 MeV, което води до преекспониране. В този случай, терминалите сензорни "нулева доза", така че операторът да повторите процедурата, изостря ситуацията. В резултат на това, при което загинаха най-малко четирима пациенти.
Някои код е взето от Therac-6 и Therac-20. В Therac-6 не са имали рентгенова терапия, както и в Therac-20 са хардуерно базирани мерки за сигурност, които не са разрешени за включване на светлината, когато дискът е в грешна позиция.
Влизане с взлом чрез използване на състояние на състезание
Има една група от грешки (и използват своите атака видове), които позволяват не-привилегирована програма ще повлияе върху други програми чрез възможността за промяна на обществените ресурси (обикновено -. Временни файлове английски / ПТУ раса - състояние състезание във временната папка), в определен времеви прозорец, в който от програмист грешка файл е достъпна за писане от всички или част от потребителите на системата.
Атакуването програма може да унищожи съдържанието на файла, което води до програмата, за да се срине жертва, или подмяна на данни, определени в програмата, за да извърши действие на равнището на техните привилегии.
Именно поради тази причина, че софтуерът с тежки изисквания за сигурност, като например уеб браузър. Той използва случайни числа на криптографски качество, за да назоват временни файлове.
бележки