Ответы пользователя по тегу Операционные системы
  • Организация памяти?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Ответ написан
    Комментировать
  • Возможна ли одновременная запись данных в один файл?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Два пользователя одновременно, с точностью до миллисекунд, сделали одно и то же действие — нажали кнопку отправки данных. Что произойдет — запишутся данные в файл или нет и почему?

    Зависит от того, как организована запись в файл, от ОС и от файловой системы. Например, на уровне стандарта POSIX гарантируется, что в случае, когда запись выполняется единственным системным вызовом write, а файл был открыт в режиме "для добавления", то запись должна выглядеть атомарно. Т.е. данные, записанные успешно завершившимся системным вызовом будут записаны в файл непрерывным участком. Однако, write в праве записать меньше данных, чем было запрошено (о чём он сообщит кодом возврата). Точно так же, для записи несколькими потоками или процессами в один расшаренный файл гарантируется атомарность записи и сдвига текущей позиции файла. Для других случаев (не-POSIX, не одним системным вызовом, не-O_APPEND не через расшаренный файловый дескриптор) таких гарантий нет.
    Для винды -- хз, есть ли там гарантии и какие, лень искать.
    Ответ написан
    Комментировать
  • Есть дамп непонятный. Как его привести в человеческий вид?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как его в человеческий вид переделать ?

    Никита Терновой, как-то так: cat dump | xxd -r > dump.exe
    Ответ написан
    7 комментариев
  • Возможно ли релоцировать данные/стек процесса?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Смотря что имеется в виду под "переместить". До начала выполнения стек можно поместить в любое место. Потому что адресация в стеке всегда выполняется относительно указателя стека/указателя кадра. Во время работы указатель стека можно сдвигать вниз на произвольную глубину. Использованную часть стека перенести во время работы нельзя. Данные в общем случае перенести нельзя. Чтобы было можно, нужно использовать базовый регистр и обращаться по смещениям от него. Например, так работают TLS и FDPIC. С другой стороны, код сгенерированный как PIC/PIE можно перемещать вместе с данными, а если анализировать фиксапы и применять только те из них, которые ссылаются в сегмент данных, данные можно перемещать отдельно от кода.
    Ответ написан
    Комментировать
  • Насколько эффективна гипотетическая ОС в едином адресном пространстве?

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

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как посмотреть на внутренности ОС, посмотреть как это работает?

    Загрузить linux в qemu и походить по нему с помощью gdb. Например так: www.linux-magazine.com/Online/Features/Qemu-and-th...
    Ответ написан
    1 комментарий
  • OSdev, Task State Segment и стеки?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    1. Да, третий том intel 64 and ia32 architecture software developer's manual, раздел 6.12.2 Interrupt Tasks прямо об этом и говорит.
    2. Зависит исключительно от вашей реализации. В линуксе, например, у каждой задачи свой kernel mode stack.
    Ответ написан
    3 комментария