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

    @res2001
    Developer, ex-admin
    Начинайте портировать приложения с открытым исходным кодом под свою ОС. Начните с bash. Там вылезут какие-то требования к ядру, которые вы не поддержали изначально и, возможно, вы решите их реализовать в ядре.
    Стоит посмотреть интерфейс POSIX для понимания того, какой интерфейс должно предоставлять ядро в userspace.
    Можно придумать свой крутой интерфейс. Но тогда вам придется портировать все приложения с открытым исходным кодом под свою ОС. С поддержкой POSIX часто можно обойтись просто перекомпиляцией.
    Ответ написан
    Комментировать
  • Можно ли одновременно запустить вторую ОС с внешнего диска?

    @res2001
    Developer, ex-admin
    Можно поднять WSL, поставить туда какой-нибудь линукс на выбор, примонтировать внешний диск.
    Графический раб.стол можно пробросить через RDP, настройка WSL для этого легко гуглится.
    В таком варианте по ощущениям работает быстрей, чем виртуалка в виртуальной коробке.
    Ответ написан
    Комментировать
  • Что означает "квант времени" у переключения контекста?

    @res2001
    Developer, ex-admin
    Квант времени - это время в течение которого ОС позволяет работать потоку (процессу) непрерывно. По истечении времени, поток вытесняется другим. Когда настанет очередь опять выполняться этому потоку (процессу) ему снова будет предоставлен 1 квант времени. Так что переживать о том, что не хватит времени - не стоит - время всегда будет дано, пока процесс работает.
    Квант времени в разных ОС разный, обычно это что-то в диапазоне 1-10 мс. В Линуксе квант динамический, вычисляется на основе приоритета процесса - чем выше приоритет процесса, тем больше ядро дает ему работать.

    Не стоит забывать, что процессы часто сами в падают в режим ожидания и тем самым досрочно завершают свой квант времени. Это часто происходит, например, при ожидании завершения операций ввода/вывода или если поток пытается блокировать мьютекс, а он уже занят и т.п.

    может ли теоретически возникнуть ситуация, что из-за нагруженности какой-нибудь процесс будет успевать только регистры восстановить, и ничего полезного не сделает, то есть будет постоянно нулевая работа за этот промежуток времени?

    Из-за высокой нагрузки в системе может оказаться много процессов, имеющих одинаковый приоритет на выполнение и среди них надо будет делить все имеющиеся ядра и время. Естественно, что если таких процессов очень много, то пока после вытеснения очередь опять дойдет до процесса может пройти много времени. Эта ситуация означает нехватку ресурсов. Но, тем не менее, процессы будут выполняться (пока хватает виртуальной памяти).
    Если у процесса низкий приоритет, но в системе есть постоянно работающие процессы с более высоким приоритетом, то есть шанс, что низкоприоритетному процессу никогда не достанется процессор для выполнения.
    Ответ написан
    Комментировать
  • Как создать с нуля ISO файл операционной системы?

    @res2001
    Developer, ex-admin
    Изучите формат файла ISO и напишите свою программу для генерации ISO.
    Ответ написан
    Комментировать
  • Как ответить на эти вопросы по взаимоблокировкам?

    @res2001
    Developer, ex-admin
    Вот курс по параллельному программированию: https://compscicenter.ru/courses/hp-course/2020-sp...
    Рекомендую. По моему, самый толковый из публичных преподаватель по этому направлению в РФ.
    Начните с 1, 2 и 5 лекций, там есть ответы на все вопросы.
    Ответ написан
    Комментировать
  • Какая есть литература по разработке операционной системы?

    @res2001
    Developer, ex-admin
    Видимо для начала надо Таненбаума "Современные операционные системы" прочитать, там познакомитесь с тем как устроены ОС.
    Ответ написан
    1 комментарий
  • Как работает обработка события операционной системой?

    @res2001
    Developer, ex-admin
    В GUI приложении есть event loop, который получает у ОС очередное событие и обрабатывает его.
    Обычно event loop спрятан глубоко в дебрях используемой в приложении GUI библиотеки (например Qt).
    Чтоб разобраться нужно посмотреть как это пишут на низком уровне. Гуглите о написании "оконной процедуры" - это для винды. В никсах все примерно так же.
    Ответ написан
  • Будет ли 32 разрядная ОС потреблять памяти больше если включить режим PAE (ну тоесть работать с 4 гб озу и выше)?

    @res2001
    Developer, ex-admin
    В инете достаточно информации на эту тему:
    https://habr.com/ru/post/202406/
    https://www.ixbt.com/soft/windows-4gb.shtml
    https://www.ixbt.com/soft/windows-4gb-2.shtml

    Вывод такой: работать с ОЗУ >4 Гб могут только некоторые программы, специально для этого написанные.
    В серверных версиях винды многие серверные приложения это делать умеют.
    Наиболее распространенный случай использования в домашних условиях: сделать RAM диск в адресах >4Гб, подобный софт имеется. На диске можно разместить например файл подкачки или использовать его в других приложениях для временного хранения данных.
    Ответ написан
    Комментировать
  • Какую подобрать операционную систему для сетевой архитектуры офиса?

    @res2001
    Developer, ex-admin
    Смотрите на то ПО которое будет крутится как на сервере так и на клиентах. Часто выбора нет совсем (например используемое ПО только под винду).
    На сервере возможна виртуализация, т.к. на 15 компов у вас, возможно, достаточно не плохой сервер. Но это, конечно, зависит от нагрузки, которую будет тянуть сервер. В качестве гипервизора можете выбрать линукс+kvm|xen|.../ESXi/MS Hyper-V. В случае виртуализации лучше не совмещать на хосте роль гипервизора с чем-то еще - чем-то еще пусть занимаются виртуалки.

    Если используемое ПО позволяет выбор ОС, тогда включайте другие критерии отбора: умения работать с ОС как админов так и юзеров (хотя юзера обычно с ОС не работают - они работают с приложениями), цена, и т.п.
    Ответ написан
  • Как отключить буферизацию ввода и эхо-вывод (termios.h, stdin)?

    @res2001
    Developer, ex-admin
    На сколько я понял вам нужно перевести терминал в raw режим.
    Для этого нужно выставить кучу флагов в struct termios и вызвать tcsetattr(().
    Вот как это реализовано в libuv:
    struct termios tmp;
          tmp.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
          tmp.c_oflag |= (ONLCR);
          tmp.c_cflag |= (CS8);
          tmp.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);
          tmp.c_cc[VMIN] = 1;
          tmp.c_cc[VTIME] = 0;
      tcsetattr(fd, TCSADRAIN, &tmp);

    Код выдран из исходников libuv: src/unix/tty.c -> uv_tty_set_mode().
    Ответ написан
    1 комментарий