База ответов ИНТУИТ

Основы программирования

<<- Назад к вопросам

Какие объекты операционной системыобычно используются для исключенияодновременного доступа к критическим даннымиз разных нитей или процессов?

(Отметьте один правильный вариант ответа.)

Варианты ответа
Семафоры.
Мьютексы. (Верный ответ)
Похожие вопросы
Являются ли локальные переменные функции общимидля разных нитей (threads), работающих параллельнов рамках одного процесса?
Какая структура данных обычно используетсядля передачи заданий драйверу операционной системы?
В операционной системе MS Windowsфайл "tmp.dat" создается в результате выполнения следующегофрагмента программы:
    int a[3]; int i;    FILE *f = fopen("tmp.dat", "wt");    a[0] = 1; a[1] = 10; a[2] = 100;    for (i = 0; i < 3; ++i) {        fprintf(f, "%d\n", a[i]);    }    fclose(f);
Чему равен размер файла "tmp.dat" в байтах?
В операционной системе MS Windowsфайл "tmp.dat" создается в результате выполнения следующегофрагмента программы:
    int a[4]; int i;    FILE *f = fopen("tmp.dat", "wb");    a[0] = 1; a[1] = 2; a[2] = 10; a[3] = 20;    for (i = 0; i < 4; ++i) {        fprintf(f, "%d\n", a[i]);    }    fclose(f);
Чему равен размер файла "tmp.dat" в байтах?
Пусть f(x) — целочисленная функция от целочисленногоаргумента. Определить,содержит ли следующий фрагмент программы ошибку(т.е. действительно ли тело цикла сохраняет инвариант):
// Программа корень функциицел a, b, c;. . .утверждение: a < b  и  f(a) * f(b) <= 0;// Значения функции на концах отрезка [a,b] разных знаковцикл пока b - a > 1| инвариант: f(a) * f(b) <= 0| // Делим отрезок [a, b] пополам| c := (a + b) / 2; // c -- целая часть (a+b)/2| если f(a) * f(c) < 0| | то    b := c;   // выбираем левую половину отрезка| | иначе a := c;   // выбираем правую половину отрезка| конец есликонец циклаутверждение: a == b - 1  и  f(a) * f(b) <= 0;
Следующий фрагмент программы вычисляет сумму четырехпоследних элементов последовательности p:
    вещ последовательность p;    вещ x, y, z, t;    . . .    x := 0.0; y := 0.0; z := 0.0; t := 0.0;    встать в начало последовательности p;    цикл пока есть непрочитанные элементы в посл-ти p    | x := y; y := z; z := t;    | прочесть очередной элемент посл-ти p в (вых: t);    конец цикла    ответ := x + y + z + t;
В нем используются четыре вспомогательные переменныеx, y, z, t. Можно ли упроститьпрограмму, использовав меньшее количество вспомогательныхпеременных? (Последовательность разрешается читать только один раз.)
Следующая программа вычисляет количествовхождений фрагмента "xyz" в последовательностьсимволов:
    последовательность символов p;    цел n;    символ c1, c2, c3;    . . .    n := 0;    // Инициализируем переменные c1, c2, c3 пробелами    c1 = ' '; c2 = ' '; c3 = ' ';    встать в начало последовательности p;    цикл пока есть непрочитанные элементы в посл-ти p    | c1 := c2; c2 := c3;    | прочесть очередной элемент посл-ти p в (вых: c3);    | если c1 == 'x' и c2 == 'y' и c3 == 'z'    | | то n := n + 1;    | конец если    конец цикла    ответ := n;
В ней используются четыре вспомогательные переменныеn, c1, c2, c3. Можно ли упроститьпрограмму, использовав меньшее количество вспомогательныхпеременных? (Последовательность разрешается читать только один раз.)
На вход следующей программе передаетсяпоследовательность целых чисел в диапазоне от 0 до 9,представляющая цифры десятичной записи целого числа n.Программа определяет, делится ли число n на 75(символом процента '%' обозначается операциянахождения остатка от деления первого числа на второе):
    цел последовательность p; // Цифры числа n    цел s, r, d;    . . .    s := 0; r := 0;    встать в начало последовательности p;    цикл пока есть непрочитанные элементы в посл-ти p    | прочесть очередной элемент посл-ти p в (вых: d);    | s := s + d;             // s -- сумма цифр    | r := (r % 10) * 10 + d; // r -- число из 2-х    конец цикла               //      последних цифр    ответ := (          // n делится на 75, когда        s % 3 == 0  и   //     s делится на 3  и        r % 25 == 0     //     r делится на 25    );
В ней используются три вспомогательные переменныеs, r, d. Можно ли упроститьпрограмму, использовав меньшее количество вспомогательныхпеременных? (Последовательность разрешается читать только один раз.)
Укажите, в какие моменты работы программы выполняетсяинвариант цикла.
Обязательно ли при использовании данных типа FILEподключать какие-либо стандартные заголовочные файлы?