Форум программистов, компьютерный форум CyberForum.ru

Битовые утечки при записи данных на диск - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Builtin функции http://www.cyberforum.ru/cpp/thread1755256.html
Погружение в сабж. Компилятор gcc. Имеет ли смысл вообще их изучать, какие из них действительно надо знать, ибо полезные? И вообще, как можно относиться к их использованию в коде?
C++ Ищу исходники для игры pinball Всем Доброго времени суток ! Есть-ли у кого нибуть исходники для игры pinball (желательно с комментариями) ? Буду очень благодарен если кто-то скинет ! Добавлено через 33 секунды заранее благодарен ! http://www.cyberforum.ru/cpp/thread1754811.html
C++ Опрос про чувствительность к регистру
Языки программирования бывают чувствительные (думаю, большинство) и нечувствительные к регистру букв. Для кого-то удобны вторые языки, кто-то со строгим подходом считает, что первые - это канон, а нечувствительность к регистру переменных/функций развращает мозг прогера. Хотелось бы услышать мнения пользователей CyberForum-а о том, чем хороша/плоха чувствительность/нечувствительность к регистру...
C++ Как запустить проект, используя компилятор LLVM?
Собрал под виндой LLVM. Все вроде нормально. либы есть,хидеры есть, бинари есть. Надо, думаю,попробовать с llvm'овскими либами что-нибудь собрать. полез в инет,все сделал по инструкции. Но в настройках проекта нет ни нужных либ, ни нужных хидеров... печаль. Структура каталогов такова: D:\llvm-3.4 - сорцы ллвм, D:\llvm-build - уже собраное все. Выставил переменную среды...
C++ Найти всевозможные комбинации паролей и сохранить их в блокнот http://www.cyberforum.ru/cpp/thread1753001.html
Нужна помощь, дело такое, поставил на пароль архив, пароль забыл. Но, помню , что пароль состоял из двух основных паролей ( а их всего от 4 до 6, в зависимости от конечных цифр). Методом грубого перебора постоянно сбиваюсь какие пароли уже вводил и тд. Хочу попробовать перебор по словарю, для этого нужно найти всевозможные комбинации паролей и чтоб они сохранились в блокнот.
C++ Умножить две квадратные матрицы, используя ассемблерные вставки Зравствуйте! Требуется написать программу умножения двух квадратных матриц используя ассемблерные вставки и сравнить с обычным умножением в C++ (то есть: a * b). Я написал такой код: #include <iostream> #include <ctime> void multiply(int *a, int *b, int *c, int n) { _asm { MOV EDI, a MOV ESI, b подробнее

Показать сообщение отдельно
Petrolion
24 / 24 / 7
Регистрация: 02.02.2016
Сообщений: 124
11.06.2016, 16:25  [ТС]     Битовые утечки при записи данных на диск
Evg, спасибо за детальность. Поправки по ходу. Объем физической памяти 16 гиг. Своп вообще отключен. Процесс идет на одном ядре. Правда не зафиксировал его на определенном, но пока не возникает переполняющих потоков, он с него вроде не слазит. Объем массива для обработки 8 гиг. (unsigned long long). Кэши первого и второго уровней раздельны. Третий уровень общий.
Бит меняет значение с непонятно чего. Возможно при вычислении в момент присвоения (потому и еще два блока обнуления и заполнения). Действительно сейчас хочу уменьшить кол-во проверок до 2-х. Добавил по подсказке nonedark2008 получение номера ядра. Пока не отловил ошибку. Думаю добавить освобождение и повторное выделение памяти под массив. Чтобы спровоцировать ошибки без перезапусков.
Так же добавил 4-й блок:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
        c = (unsigned long long)k;
        for (int i = 0; i < n; i++,c++)     //Asc2 tab
            b[i]=c;
        cout << "Table asc2 ready. Read:" << hex;
        flog << "Table asc2 ready. Read:" << hex;
        for (int m = 0; m < 8; m++)
        {
            cout << m;
            flog << m;
            c = k;
            for (int i = 0; i < n; i++,c++)
                if (b[i] != c)
                {
                    cout << endl << "Error at adr(" << (b+i) <<"). Value: " << b[i] << " must be: " << c << " Proc: " << GetCurrentProcessorNumber() << endl;
                    flog << endl << "Error at adr(" << (b+i) <<"). Value: " << b[i] << " must be: " << c << " Proc: " << GetCurrentProcessorNumber() << endl;
                }
            if (_kbhit())
            {
                o = _getch();
                if (o == 27)
                {
                    cout << " Exit ? ";
                    o = _getche();
                    cout << endl;
                    if (o == 'y' || o == 'Y')
                        te = false;
                }
            }
        }
        cout << endl;
        flog << endl;
В нем уже нет вычислений при присвоении. Надеюсь будет результат. Но пока ловлю ошибку.
Много лет назад занимался ассемблером на 80286 и 80386, но теперь вряд ли потяну разобрать полученный бинарник даже с облегчениями типа fprinf или malloc. :-(
Возможно обнаружение ошибки может заключаться не в обнулении или установке 24 бита, а в том что в процессе ошибки мы ее замечаем. Т.е. если ошибочно бит сбрасывается, но в нем и так 0 то мы ее просто не видим. ("Видишь суслика? - Нет. - А он есть!") и наоборот, при ошибочной установке бита если он и так 1 . Т.о. ошибок может быть и больше.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru