• Насколько эффективна гипотетическая ОС в едином адресном пространстве?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Однако переключения контекста при вытесняющем планировании, а также порождённые ими инвалидации кэша никуда не денутся.

    Но VIPT/PIPT кэш не нужно инвалидировать при переключении контекста, а VIVT, мне кажется, уже давно никто не делает.
    Ответ написан
    Комментировать
  • Где ошибка в скрипте?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    numberOfPackages='apt list --installed | grep $1 | wc -l'

    Неправильные кавычки. Должно быть так:
    numberOfPackages=`apt list --installed | grep $1 | wc -l`

    В этом случае команды выполнятся в строке присваивания numberOfPackages, а в if [ "$numberOfPackages" подставится число. В оригинальном коде внутрь if подставляется следующее:
    if [ "apt list --installed | grep $1 | wc -l" -gt "0" ]
    , что, конечно, не имеет никакого смысла.
    Ответ написан
  • Как убрать кеширование?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Добавить INTERNET_FLAG_RELOAD в dwFlags HttpOpenRequest?
    Ответ написан
    Комментировать
  • Что не так я передаю в TAR?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    tar: Удаляется начальный `/' из имен объектов

    Это просто предупреждение о том, что внутри архива у файлов не будет ведущего /, не смотря на то, что в командной строке он есть. Но если хочется, можно написать так:
    tar -g home/sites/backup/2017/12/full.0.tar.gz \
      -czf home/sites/backup/2017/12/full.28.tar.gz \
      --exclude-from=home/sites/scripts/backup_exclude \
      --ignore-failed-read \
      --listed-incremental home/sites/backup/2017/12/list \
      -C / \
      home/sites/web/project/

    Т.е. перенести опции до пути к архивируемым файлам и добавить -C / чтобы перейти в корневой каталог, от которого путь home/sites/web/project/ будет найден.
    Отсутствие ведущих / перед параметрами -f, --exclude-from и --listed-incremental выглядит подозрительно, и, если что, не влияет на выдачу предупреждения tar: Удаляется начальный `/' из имен объектов
    Ответ написан
    Комментировать
  • В какой библиотеке определяется метка _start?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Нужно назвать библиотеку Си или C#

    Вопрос непонятен. С или С#? Библиотек С вообще много разных, но в конкретной системе установлена обычно одна. На "больших" системах это обычно glibc, в ней _start определён в файле start.S.
    Ответ написан
    Комментировать
  • Как сломать генератор случайных чисел в ядре линукса?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я нашёл файл random.h

    Тебе надо понять, какой именно генератор ты хочешь сломать. Потому что их в ядре несколько.
    Например, быстрые псевдослучайные:
    lib/random32.c: prandom_u32_state, prandom_bytes_state

    Архитектурные аппаратные:
    arch/x86/include/asm/archrandom.h: arch_get_random_* и arch_has_random_*

    Криптографически надёжные (их видно из юзерспейса через /dev/[u]random):
    drivers/char/random.c: _extract_crng, extract_buf и _get_random_bytes

    Тот, что ты нашёл, используется в сетевой подсистеме
    Ответ написан
    2 комментария
  • Возможно ли узнать сигнатуру виртуального метода из рантайма?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    возможно ли на уровне рантайма узнать сколько аргументов было помещено в стек перед вызовом виртуального метода (по виду стека, по виртуальной таблице объекта или другой информации доступной в рантайме)?

    Традиционно в C++ типы параметров функции кодируются компилятором в её имени.
    Ответ написан
    3 комментария
  • Может ли датаграмма разбиваться на пакеты?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    пишут, пакет - это разбитая на фрагменты датаграмма, т.е. когда размер датаграммы превышает допустимый для данной сети. Но как он может превышать впринципе, если тот же TCP начинает выстраивать сегмент уже на основании MTU и MSS? Те. по идее разбиваться на фрагменты нечему будет, потому что и так будет меньше допустимого для данной сети. И он никогда не будет превышать допустимый размер?

    Кроме TCP есть и другие протоколы, например UDP, да и TCP не обязан подгонять MSS под MTU.

    Какой все же правильный размер MTU для ethernet по стандарту? Все пишут, что 1500, но где в каком это стандарте написано?

    ieee 802.3, раздел 3.1.1 Packet format, там картинка и ссылка на 3.2.7 со следующим текстом:
    Ethernet implementations shall support at least one of three maximum MAC Client Data field sizes defined
    as follows:
    a) 1500 decimal—basic frames (see 1.4.102)
    b) 1504 decimal—Q-tagged frames (see 1.4.334)
    c) 1982 decimal—envelope frames (see 1.4.184)


    А как же тогда jumbo-кадры передаются, они типа нарушают стандарт?

    В стандарте 802.3 их нет.

    У меня wireshark показывает TCP длину "Length = 1514", как такое возможно, если на роутере стоит MTU 1500?

    1514 = 14 байт ethernet заголовка (6 -- адрес получателя, 6 -- адрес отправителя, 2 -- ethtype) + 1500 байт нагрузки
    Ответ написан
    4 комментария
  • Вывод char из массива?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    text[t] = word1; // Пытаемся ее сохранить в массив
    выводить будет только последнее значение все i-раз. Никак не могу понять в чем проблема, подскажите пожалуйста

    Так ведь это присваивание не строку сохраняет, а указатель на один и тот же буфер word1, который переписывается новой строкой в каждой итерации первого цикла. Если хочется сохранить строку -- надо копировать. Например так:
    for(t = 0; t < 5; t++){
    
        scanf_s("%s", word1, 32);
        
        // Проводим некоторые операции со строкой //
        
    
        text[t] = strdup(word1); // Пытаемся ее сохранить в массив предварительно попытавшись скопировать
      }
    
      for (t = 0; t < N; t++) {
        printf("\n %d. %s \n", t, text[t]); // Пытаемся вывести
        free(text[t]); // Пытаемся освободить
      }
    Ответ написан
    Комментировать
  • Как прочитать/записать файл в адресном пространстве ядра?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Не подскажете, как открыть файл в адресном пространстве ядра и прочитать/записать сообщения в него

    sys_open, sys_read, sys_write. Поиском по исходникам ядра можно найти примеры использования.
    Ответ написан
    1 комментарий
  • Как в shell переименовать файлы с заменой?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    rename -f 's/\.jpeg\(jpg\)\.optimized$/.jpeg(jpg)/' *.jpeg\(jpg\).optimized
    Ответ написан
    Комментировать
  • Почему не видит перегрузку оператора потока вывода?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    ostream&operator <<(ostream&s,const matrix<T>&n)

    Второй параметр этой функции -- шаблон. Откуда возьмётся его параметр T?
    Ответ написан
    Комментировать
  • Каким образом задать динамический массив символов (строку) если не известен изначальный размер вводимой строки?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    пробовал через указатель, но не вышло.

    Что пробовал, как не вышло?
    Ответ написан
    Комментировать
  • Как создать patch файл GIT?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    git diff commit1 commit2 > patch
    Ответ написан
    Комментировать
  • RSA 576 bit, как дешифровать?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Мне говорит
    RSA operation error
    140624383731344:error:0406506C:rsa routines:RSA_EAY_PRIVATE_DECRYPT:data greater than mod len:rsa_eay.c:518:
    Ответ написан
    Комментировать
  • Как решить ошибку при сборке пакета?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что говорят следующие две команды?
    $ /usr/bin/as
    $ ldd /usr/bin/as

    Что говорят следующие команды?
    $ touch test.c
    $ x86_64-linux-gnu-gcc -v -c test.c
    Ответ написан
  • Что подразумевается под strong knowledge С++?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Но вот что вообще определяет уверенное знания С++. То есть, что именно для этого нужно знать?

    Это очень просто: нужно уметь прочитать любой фрагмент кода на C++ и понять его.
    Открывайте С++ исходники наугад и читайте любую функцию. Если вы в состоянии сделать это много раз подряд с разными проектами -- скорее всего вы уверенно знаете С++.
    Ответ написан
    4 комментария
  • Как скомпилировать СИ проект под armv5 процессор?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    "Проект" и armv5 -- это очень расплывчатая формулировка.

    Для начала нужно понять, что проект ожидает от компилятора. А именно: нужно ли проект собирать под какую-либо ОС, а если нет, то нужна ли ему библиотека С и стартовые файлы. После этого можно будет искать правильный компилятор.
    Так, например, если на устройстве будет Linux, или если проект содержит в себе всё (как, например, U-Boot или ядро Linux) и ему нужен голый компилятор, то можно взять готовый кросс-компилятор. Например на debian это можно сделать командой apt-get install gcc-arm-linux-gnueabi.

    Дальше всё зависит от системы сборки проекта. Надо будет указать ей каким компилятором пользоваться и передать компилятору опцию, заставляющую его генерировать код для ARMv5. Так, например, если там autoconf, конфигурировать его со следующими опциями:
    --host=arm-linux-gnueabi CC='arm-linux-gnueabi-gcc -march=armv5' LD='arm-linux-gnueabi-gcc -march=armv5'

    Если это Linux или U-Boot, передать им в окружении CROSS_COMPILE=arm-linux-gnueabi- и сконфигурировать для armv5 через menuconfig.
    Ответ написан
    Комментировать
  • Как решить git pull при наличии файла, который в удаленном репозитории untracked?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как правильно решать такие ситуации?

    Не держать мусора в рабочем каталоге. Если это не мусор -- добавлять в репозиторий и мёржить.
    Ответ написан
    Комментировать