Как стать автором
Обновить

Комментарии 412

Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10, ранее я работал над Windows 10x (WCOS), XBox, Windows Phone и Microsoft Edge.

Вопрос не по сути статьи, но всё же: вы работаете в российском отделении Майкрософт?
Мой вопрос вот в чём: ведётся ли в России в Майкрософт реальная разработка продуктов или же местное отделение занимается только продажами и сопровождением?
Я работаю в Редмонде, США. Я могу ошибаться, но насколько знаю ведётся, но не в таких количествах как в штаб-квартире. Подробности лучше узнать у тех кто там сейчас работает.

Ведётся, например я работаю в Москве и занимаюсь проектом Azure Notification Hubs.

Андрей, а скажите — сколько (примерно) процентов мощности компьютера тратится на бесполезную для пользователя работу (сбор и отправка телеметрии и т.п.).
И насколько возросла эта величина при переходе Windows 7 -> Windows 10?
Такими данными я не располагаю. Телеметрия играет важную роль, потому как по ней мы можем видеть статистику регрессий и ошибок, которые оперативно устраняем. По телеметрии можно сказать какая функциональность более популярна, какая менее и отсюда видеть дальнейшее развитие Windows. Выгода для пользователя от телеметрии отсрочена по времени, потому как в будущих обновлениях он получит более стабильную и быструю ОС.
Новый функционал скорее всего будет иметь ошибки, потому как любому софту нужно пройти проверку временем.
Телеметрия не должна занимать большой объём ресурсов, так что если у вас комп работает медленно, то проблема скорее всего в другом и нужно самостоятельно делать диагностику компьютера, но это уже отдельная тема. Если вы можете воспроизвести проблему, то:
  1. Нажмите WinKey+F
  2. Опишите как воспроизвести проблему, по английски желательно
  3. На 4м шаге (Add More Details) нажмите «Recreate my problem» — и воспроизведите проблему.
  4. Теперь Submit. К нам в систему придёт уведомление вместе с диагностической информацией.
НЛО прилетело и опубликовало эту надпись здесь
потому как в будущих обновлениях он получит более стабильную и быструю ОС.

Заплатив за это своей приватностью и безопасностью.

Так ведь и не получит же. Каждая следующая ОС и медленнее, и нестабильнее.
потому как в будущих обновлениях он получит более стабильную и быструю ОС.

Так ведь и не получит же. Каждая следующая ОС и медленнее, и нестабильнее.


После WinXP была существенная регрессия в WinVista и небольшая регрессия в Win8.0
С тех пор наблюдаю только рост стабильности. По всем WinVista -> Win7 -> Win8.1 -> Win10
По поводу «роста стабильности» — сравните количество жалоб на проблемы после очередного обновления Win10 с количеством жалоб после обновления XP/Win7.

И скорость безусловно падает, но это происходит со всеми версиями без исключения. Те, кто говорит о более высокой скорости новой версии, или сравнивают свежеустановленную с замусоренной, или попутно с обновлением системы обновили и железо, или столкнулись со специфической конфигурацией железа/софта, в которой старая система была сильно неоптимальной.
По поводу «роста стабильности» — сравните количество жалоб на проблемы после очередного обновления Win10 с количеством жалоб после обновления XP/Win7.


Жалоб где? В интернете?
В связи со значительно большим охватом аудитории интеретом в 2002 (WinXP вышла) и в 2015 (год выпуска Win10)?

И скорость безусловно падает, но это происходит со всеми версиями без исключения.


Не всегда.

Еще на довольно старом железе был удивлен более высокой скоростью работы WinXP по сравнению Win95. Хотя на большем количестве железа — было наоборот.

Ну а конкретно сейчас WinVista -> Win7 -> Win10 — скорость однозначно выше.
На том же железе.
В том числе и для свежеустановленного.
Проверено неоднократно.

или столкнулись со специфической конфигурацией железа/софта, в которой старая система была сильно неоптимальной.

Послушайте, этим можно любые домыслы оправдать.
Железо самое обычное, типовое.
И — разное. На разном желез проверено.
Жалобы на XP продолжались до конца первой декады, пока для нее более-менее регулярно выходили обновления.

Каким образом Вы измеряли скорость работы системы? Очень интересно, как можно получить ускорение при объективном увеличении и объема модулей, и количества выполняемых операций, и количества слоев абстракции. А в Win10 добавился еще и гипервизор.

Почему у меня результаты всегда и везде строго обратные?
Почему у меня результаты всегда и везде строго обратные?

Если железо изначально недостаточное — то почему бы и нет.
Я всегда любил хорошее железо.
Что такое «хорошее железо»? Если значимые для производительности функции железа поддерживаются обеими версиями системы, за счет чего более тяжелая и сложная система может работать быстрее?

В Вашем случае, скорее всего, имело место отсутствие полноценной поддержки прежними выпусками системы каких-то аппаратных свойств железа. Такое сравнение очевидно некорректно.
Если значимые для производительности функции железа поддерживаются обеими версиями системы, за счет чего более тяжелая и сложная система может работать быстрее?


За счет оптимизации.
Например, не секрет, что процедура загрузки ОС Windows существенно переработана.
Она переработана в основном в плане зависимостей, чтобы GUI и возможность регистрации пользователя становились доступными раньше. Загрузка и инициализация к этому моменту не завершаются — они продолжаются заметное время после входа в систему. Чудес не бывает. :)
Она переработана в основном в плане зависимостей, чтобы GUI и возможность регистрации пользователя становились доступными раньше. Загрузка и инициализация к этому моменту не завершаются — они продолжаются заметное время после входа в систему. Чудес не бывает. :)


Ну то есть вы и сами заметили где именно произведено улушчение комфорта для нас с вами?
В плане загрузки я «улучшения комфорта» не заметил. Если в ранних версиях нужно было сперва подождать завершения загрузки, а затем сразу же начинать полноценно работать, то в более поздних можно войти в систему сразу же, как только отобразится стартовый экран, но сразу полноценно работать в общем случае невозможно, поскольку продолжающаяся загрузка создает изрядные задержки.
В плане загрузки я «улучшения комфорта» не заметил. Если в ранних версиях нужно было сперва подождать завершения загрузки, а затем сразу же начинать полноценно работать, то в более поздних можно войти в систему сразу же, как только отобразится стартовый экран, но сразу полноценно работать в общем случае невозможно, поскольку продолжающаяся загрузка создает изрядные задержки.


А я вообще не выключаю.
В новых версиях великолепно работает просыпание.

Я тоже не выключаю. Но мы говорили не о своих собственных предпочтениях, а об объективных свойствах систем.
Я тоже не выключаю. Но мы говорили не о своих собственных предпочтениях, а об объективных свойствах систем.


Мы говорим об удобстве для конечного пользователя.
Сделали асинхронную загрузку — молодцы, стало комфортнее. Сделали хороший сон — молодцы, стало комфортнее.

Я совсем не ожидаю, что из Винды выкинут весь старый код и перепишут все с нуля.
Лично я пока говорил исключительно о скорости работы (в данном случае — загрузки). Вы плавно перевели стрелки на удобство для пользователя. Удобнее стало только в том, что непрерывное время ожидания полной готовности системы разбилось на интервалы, между которыми стало возможно что-то делать. Чуда не произошло — общее время загрузки закономерно растет от версии к версии.
НЛО прилетело и опубликовало эту надпись здесь
Но бесит не это, бесит то, что нельзя посмотреть логи(журналы) и выяснить — что стало причиной пробуждения. И никакие мануалы на technet не дают ответа на этот вопрос…
Я не уверен, всегда ли это получается, но я находил причину просыпания из гибернации ноута HP. Виновником было что-то связанное со звуком Realtek. Только не помню в подробностях, но способ нашел путем гугления. И был журнал, в котором видно, что в такое-то время Realtek пробудил ноут.
Очень интересно, как можно получить ускорение при объективном увеличении и объема модулей, и количества выполняемых операций, и количества слоев абстракции. А в Win10 добавился еще и гипервизор.

Так же как и в любом другом ПО — переписав узкие места.
Самое большое торможение, как правило, в довольно небольшом количестве мест кода.
Узкие места, как правило, влияют лишь на отдельные параметры производительности. Какие именно глобальные узкие места были в 2k, XP, 7 или 8, и в каких версиях они были переписаны?
Какие именно глобальные узкие места были в 2k, XP, 7 или 8, и в каких версиях они были переписаны?

Это вопрос к разработчику — он как раз автор статьи, может, знает.

Я наблюдаю только следствия.
И где именно запятую в коде поставили разработчики MS знать не могу.

Узкое место вин10 — проводник. Попробуйте походить по папкам в вин 10 и вин хр. в ХР папки открываются моментально, в 10 есть задержка.
И это место становится всё уже и уже.
То же с поиском. Двадцать лет прошло, а поиск всё ещё работает тупым перебором файлов на диске. Есть какая-то индексация, которая почему-то не работает, или мне ни разу не удалось её нормально запустить.

Узкое место вин10 — проводник. Попробуйте походить по папкам в вин 10 и вин хр.


Я писал только про улучшения по скорости WinVista -> Win7 -> Win8.1 -> Win10.

WinXP заведомо исключил, ибо она существенно попроще по интерфейсу.
НЛО прилетело и опубликовало эту надпись здесь
В Win10 полно узких мест. Например, откройте страницу установленных приложений (Apps and Features) и начните в поле поиска набирать что-нибудь, начинающееся на «w» или «v». По динамике перестройки списка видно, какое чудовищное количество операций при этом выполняется.
Я помню в свойствах VPN соединения нельзя было отключить в 10ке «Default gateway», когда она только вышла и весь трафик шёл через VPN. Какими-то хитрыми правками реестра кажется отключалось, но чинить это вроде бы микрософт не собирался… и объявил это фичей.
Хотя может быть передумал уже

Кажется начиная с Windows 8.0 VPN можно создать с помощью PowerShell. Там можно указать опцию SplitTunneling и трафик будет делиться.

НЛО прилетело и опубликовало эту надпись здесь
Вы действительно не понимаете, что подобные оптимизации дают «органолептически ощутимый» эффект только на многопоточных и высоконагруженных приложениях, или просто больше было не на что сослаться? :)
НЛО прилетело и опубликовало эту надпись здесь
Я эти книги читаю регулярно. А еще я делаю системный софт и драйверы ядра. Это дает мне возможность видеть, что практически все оптимизации касаются глубоко внутренних алгоритмов, без чего высоконагруженные системы не в состоянии эффективно справляться со своими задачами.

Практически во всех остальных системных компонентах (в первую очередь в GUI) используется код от плохого до ужасного (чем выше по уровню — тем хуже). Он там может изящно выглядеть, быть очень объектно- или событийно-ориентированным, но объем и накладные расходы там чудовищны. И никто не будет его оптимизировать, поскольку убедить пользователей почаще менять железо гораздо проще.
НЛО прилетело и опубликовало эту надпись здесь
Когда говорят «система стала работать быстрее», в большинстве случаев имеют в виду именно GUI настольных выпусков. А они, за редким исключением, от версии к версии работают медленнее, и иллюзия ускорения чаще всего возникает благодаря одновременному обновлению железа и/или установке чистой системы взамен набитой мусором.

Тоесть если оставить ядро, а гуй сменить на самопальный, то работать в целом будет лучше, чем на старой системе и быстрее, чем на новой?

Скорее да, чем нет. Хотя и в ядре тормоза тоже добавляются, но не так оголтело, как на верхних уровнях, поскольку для оценки производительности ядерных подсистем есть множество объективных тестов, в которых тормоза сразу же становятся видны.
А в Win10 добавился еще и гипервизор.

Зачем его запускать, если он не нужен?
Внутриядерный гипервизор (Patch Guard, Device Guard и т.п.) не спрашивает, когда ему запускаться. :)
Внутриядерный гипервизор (Patch Guard, Device Guard и т.п.) не спрашивает, когда ему запускаться. :)


Если их код отрабатывает за то время, что меньше пользовательской реакции — то этого вы и не заметите.

А уж тем более при аппаратной поддержке, которая давно имеется.
В любой винде изрядное количество UI, которые и запускаются, и работают на порядки медленнее пользовательской реакции. В том числе достаточно элементарные, тормозящие по тем же причинам, что и пресловутое чтение одного и того же сотню тысяч раз подряд.
Количество пользователей Windows сильно выросло. Сейчас 1.5 миллиарда устройств на разных Windows. Аудитория пользователей становится всё более массовой и специально для массового технически не подготовленного пользователя сделали Windows Light, он же Windows 10x. С ростом пользователей растёт и количество уникальных конфигураций машин и количество жалоб.
По поводу «роста стабильности» — сравните количество жалоб на проблемы после очередного обновления Win10 с количеством жалоб после обновления XP/Win7

Ой, а поделитесь пожалуйста этой статистикой. Никогда ранее не общался с ответственным за это человеком.
А то обычно в интернете только газификация луж в стиле: «вот раньше технари решали все проблемы сами, а сейчас инфантильные меллиниалы выросли и только в твиттер гадят о своих проблемах».
Хотелось бы видеть объективные цифры из багтреккеров.
Увы, объективные цифры мне недоступны. Но сообщений типа «большое количество пользователей Windows столкнулось с проблемами в результате последнего обновления» (и соответствующих обсуждений) стало больше. Именно не отдельных проблем, а достаточно массовых.
Сообщений действительно стало больше. Но я в силу профессиональных обязанностей на протяжении последних 10-15 лет читаю список исправленных и новых проблем под каждым выпускаемым патчем и субъективно не заметил увеличения количества проблем.
Known bugs были под каждым патчем начиная с 2003 винды. Это норма при разработке ПО. Просто это никогда не считалось новостью.
Но сейчас блоггер — это же профессия, и важна частота и громкость написания заголовков, а не погружение в тему (например сравнительный анализ исправленных/известных проблем по сравнению с тем же месяцем прошлого года. Но новости из этого будет высосать совсем сложно, потому что сильных отклонений не будет).
Норма — это известные ошибки, вызывающие локальные, устранимые известными же средствами проблемы у небольшой доли пользователей.

А стало больше сообщений о глобальных ошибках, приводящих к серьезным ограничениям в работе системы, отчего пользователям приходится в срочном порядке делать откат или переустановку. И, если раньше это происходило в основном после согласия пользователя на установку обновления, то теперь пользователь, оставив вечером на столе нормально работающий компьютер, утром может обнаружить вместо него тыкву.

Если MS взял на себя право устанавливать пользователю обновления не только без его явного согласия, но и против его явного несогласия — ему неплохо бы взять на себя заодно и обязанность по устранению всех возникших проблем своими силами. А то ведь выгоду получает прежде всего MS, а проблемы целиком ложатся на пользователей.
Телеметрия должна быть отключаемая. А еще лучше делать отдельные тестовые сборки с телеметрией и удалить ее из обычных.
Действительно, существует же debug версия Windows.
Выгода для пользователя от телеметрии отсрочена по времени, потому как в будущих обновлениях он получит более стабильную и быструю ОС.

Разница между нажатием кнопки «Послать отчёт об ошибке» и «посылаем в фоне всё, до чего можем дотянуться» очевидна, правда? Причем, первый вариант был/есть во всех версиях Windows, а вот второй появился массово только в Windows 10 и его добавили некоторые обновления для 7 и 8.х. Стало быть, вопрос очевиден: зачем оно тут? Вопрос риторический, ибо и так понятно зачем.

И я в курсе за лень/нежелание пользователей сообщать об ошибках. Про это уже была тут статья от другого работника M$. Но ведь у M$ и так достаточно большой штат тестеров. Неужели настали тяжелые времена и нужно сократить расходы на тестеров, задействуя бесплатно обычных пользователей?
НЛО прилетело и опубликовало эту надпись здесь
Быстрый гуглёж на тему сокращения штата тестировщиков в M$ показывает дату от 2015 и далее. Опять же, вышеупомянутая мной статья говорит за второе полугодие 2014. Но это всё речь за внутриштатных сотрудников. А ведь были ещё и внештатные, вроде как. В любом случае:
1. В 2013 всё пучком.
2. Сокращение попадают в аккурат с выходом 10, что как бы намекает.
В мире уже почти 1 млрд Windows 10 машин, все аппаратные и программные конфигурации в тестовой лаборатории воспроизвести невозможно.

Когда в обновлении ОС имеются потенциально опасные изменения, они включаются не сразу, а постепенно. Такие изменения выглядят примерно так:
if (Features::TheNewFeatureEnabled()) {
   // new code
} else {
  // old code
}

Если новый код работал нормально у небольшой фокус-группы, он постепенно распространяется на всё большее число машин. Если всё хорошо, то в следующем обновлении старый код вместе с if-конструкцией удаляется. Так что телеметрия это не только маркетинговые данные, к слову я не знаю всё содержание телеметрии.
Ну или мне можете в личку написать о том как происходит проблема.
Телеметрию, виндовс дефендер и прочий паразитный софт можно отключить через «Пуск->Edit group policy».
Что лучше ставить вместо дефендера?
У меня новый макбук. На нем стоит Windows 10. Пока не застопил телеметрии и дефендеры вентилятор жужал как бешеный. Сейчас тишина и спокойная работа. В моем случае, например, единственный выход который нашел — ничего не ставить.
Ну вообще эти компоненты не должны создавать такую нагрузку, по крайней мере постоянно. Мне вот стрёмно без антивируса пользоваться компом.

Если будете испытывать такую проблему то будем признательны если нажмёте Win+F, заполните описание проблемы и нажмёте кнопочку воспроизвести проблему, а после воспроизведение — submit.
Мне как разработчику антивирус создает больше проблем, чем приносит пользы. Много раз было так, что я тратил кучу времени на поиск непонятной проблемы в работе софта, а оказывалось, что это Антивирус после запуска блокировал DLL, после чего программа тупа висела и ничего не делала, что там делал Антивирус одному ему известно. То же самое с Windows Defender. Свою новую прогу запустил на ноуте жены под Win10: ничего не происходит. Запускаю еще раз, еще раз… ничего не происходит… через 5 минут появилось окно. Оказалось, что какой-то Windows «Defender» в это время отправлял файл программы куда-то на проверку. Программа тупа была в подвешенном состоянии. Таких проблем в последнее время наблюдаю все больше и больше. Про свой Макбук я уже написал. Пока не поотключал все сервисы связанные с безопасностью, вентилятор жужал как пылесос.
А что программа делала если не секрет?
Программа по сути движок Хрома с оберткой под .net (CEF Chromium), в котором загружалась страница с определенного IP адресса и отображалась.
Компиляцию C++ программ в Visual Studio — defender замедляет сильно.
При сборке большого проекта (очень много файлов было), если он был включен — у меня сборка занимала минут 30, без него 10.
i5, Haswell, Ram 32Gb, SSD evo860
Может быть архитектура процессора была не нова, и на более современных эффект его влияния был бы меньше.

после компиляци в делфи, или лазарусе, ехе становится доступным не сразу. Сначала дефендер его отправляет на "диагностику", потом только разрешает запускать.

кстати, когда качаешь большой аддон к танкам от protanki, то комп может зависнуть на очень долго. Файл-то большой, пока Defender весь его проверит, пока отправит сэмпл, а при этом часть винды тупо висит в залипшем состоянии.
Вообще, если такое поведение антивируса (отправлять в облако на проверку) — дефолтное, и никаких подтверждений от пользователя не спрашивается, то это ещё большая дыра в безопасности, чем вся телеметрия вместе взятая…
С Касперским такая же неприятность вышла — когда к ним файл АНБ попал.
Много раз было так, что я тратил кучу времени на поиск непонятной проблемы в работе софта, а оказывалось, что это Антивирус после запуска блокировал DLL, после чего программа тупа висела и ничего не делала, что там делал Антивирус одному ему известно.

А пробовали включать каталоги с программой в исключения?

А пробовали найти где добавляются исключения?
-Все параметры
-Обновление и безопасность
-Безопасность виндовс
-Защита от вирусов и угроз
(в этом месте для чего-то открывается новое окно настроек
-Управление настройками
-крутим глубоко вниз
-добавление или удаление исключений
-добавить исключение.


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

И, да, через время исключения странным образом могут пропасть. Не отследил зависимости, пока продолжаю наблюдение.

ОС Windows единая для всех типов пользователей.
А большинство пользователей — уровней «домохозяйки». От них убрали, и это совершенно правильно, подальше, чтобы те сами себе не навредили.

Для IT-шника не есть проблема поднастроить ОС под себя. Он же специалист?

Некоторое ПО умеет само добавлять исключения в Defender.
Например, ПО семейства JetBrains IDE.

Посему, полагаю, добавку исключений можно реализовать и скриптом. Меню для этого не нужно.

А еще есть Group Policy
По поводу «блокировал DLL» вспомнилось, что в десятках (не помню, сразу или по мере развития) за каким-то чертом отключили сообщение об аварийном завершении приложения. Если что-то вдруг внезапно и тихо закрылось, без логов не поймешь, кто виноват.

А еще бывает, когда приложение падает именно на процедуре закрывания окна/окон — тогда пользователю вообще никак не видно, что оно завершается аварийно, и он долго может считать, что все завершилось корректно, и начнет что-то подозревать лишь после того, как базы успеют побиться безвозвратно.
У меня новый макбук. На нем стоит Windows 10.

Нечестивец, грешник.

Просто я очень люблю Windows, а по долгу службы приходится иногда под Мак программки писать. Вот и приходится брать Макбук, а поверх винду ставить. Пока это единственный рабочий вариант усидеться на двух стульях.
Сторонний фаервол типа Comodo (вообще, можно любой фаервол приложений, т.е. с возможностью блокировки доступа отдельным процессам) и никаких антивирусов, браузер должен защищаться через блокировщики контента, а непроверенный софт можно просто не ставить…
>> Что лучше ставить вместо дефендера?
Чем меньше в системе сомнительного софта, тем безопаснее и стабильнее работает система, так что лучше ничего не ставить вместо дефендера.
Если приходится дело иметь с виндой, то лучше держать ее в виртуалке/облаке и не хранить в ней приватную информацию, пароли, ключи.
НЛО прилетело и опубликовало эту надпись здесь
Действительно, полностью можно отключить?
Подскажите, где можно про это прочитать?
Я использую утилиту DoNotSpy10, но не уверен, что она полностью выключает телеметрию.
Она же просто за вас включает и выключает стандартные настройки Windows. Просто не надо самому лазить по бесчисленным менюшкам. Насколько мне известно, больше она ничего не делает.
НЛО прилетело и опубликовало эту надпись здесь

На моей Windows 10 LTSC программа DoNotSpy не устранила регулярные вылазки системы в сеть. Особенно в играх раздражало, когда на ровном месте пинг взлетает до 300 и ты не понимаешь, что происходит. Пришлось вручную отключать "Службу оптимизации доставки" и еще несколько служб.

А это случайно не нарушение прав?
Одному тут пригрозили уголовным делом за отключение обновлений.
Процитирую, к чему апеллируют по ссылке
6. Обновление Программное обеспечение периодически проверяет наличие системных обновлений и обновлений для приложений, а также скачивает и устанавливает их для вас. Вы можете получать обновления только от Microsoft или через авторизованные источники, и Microsoft может потребоваться обновить вашу систему, чтобы предоставить вам эти обновления. Принимая условия настоящего соглашения, вы даете согласие на получение автоматических обновлений такого типа без каких-либо дополнительных уведомлений.

Это разве не может трактоваться как «Я разрешаю ОС ставить автоматом обновления», при этом явного запрета на отключения нету. Или как это работает?

Ну, вообще нет. Я ведь не получаю обновления ни от кого, кроме как от микрософт. А то, что микрософт меня не требует обновить систему по какой-либо причине, так это ж разве моя вина? Может у моего компа нет интернета, или связь какая-то ограниченная. Не проходят пакеты с приказом обновиться и всё тут.

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

Правильно. Но я не юрист, я говорю с позиции здравого смысла. А с юридической стороны здравый смысл далеко не на первом месте.

Насколько я помню, на других ресурсах этот маразм уже разбирали. Суть в том, что это модератор, который строго говоря к Microsoft отношения не имеет, ни за что не отвечает и озвучивает лишь своё мнение, а не Microsoft'овское. Большинство людей сошлось на том, что даже с юридической точки зрения он озвучил полнеший бред.
То что он отношения к МС не имеет это и так понятно. Этот пост, вроде, даже в сми публиковали, емнип)

Тем не менее, вопрошающий забанен до сих пор.

А вот это уже тупость какая-то.
Телеметрия и подобные вещи отъедают исчезающе малую долю производительности. На порядки больше уходит из-за неоптимальной многослойности взаимодействия верхних уровней кода с нижними. Посмотрите в Process Monitor, сколько одинаковых, повторяющихся запросов к одним и тем же ресурсам делается при самых простейших операциях, начиная с подготовки PE-файла к загрузке в память. В Resource Monitor посмотрите, сколько будет считано с диска и записано на него при запуске, например, Computer Management Console и подобных средств (просто для запуска, не доходя до конкретных операций).
Почему для открытия меню Windows читает один файл сто тысяч раз
Кстати, очень помогло удаление папки \Users\%username%\AppData\Roaming\Microsoft\Windows\Recent и создание вместо неё файла с таким же именем с аттрибутом readonly.

Или, скажем, стандартное приложение «Фотографии», весящее 350 МБ, открывающееся 15 секунд (а мне же просто фотку глянуть!) и по функциональности, как бы помягче, далеко от IrfanView весом в 23 МБ.
Я бы сказал, что не
далеко от IrfanView
, а просто пропась между ними

Из встроенных програм только калькулятор не приходилось заменять. Остальное всё под замену.
Паинт тоже вне конкуренции, но с оговорками. Помню, чем-то давно его заменял, чем не помню, но как простой редактор изображений, довольно хорош. Фотошопы и гимпы сильно тяжелее.

Paint.NET клевый на замену обычному паинту.

Как раз таки нет. С паинт.нет так и не сдружился. Для простых действий он слишком сложен, а для сложных слишком прост. Я сильно обрадовался, когда паинт не стали заменять паинтнетом.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Резистор и конденсатор раньше не относились к полупроводниковым устройствам.
image

В качестве электролита в танталовых конденсаторах используется диоксид марганца. Данный оксид является твёрдотельным полупроводниковым материалом.

Может немного не в тему, но конденсаторы используются в платах RAM для представления нулей и единиц, где конденсатор заряжен = 1 и разряжен = 0. Из их последовательностей и формируются байты.
Действительно, конденсаторы являются частью интегральных микросхем.
Меня сбило изображение отдельной детали.
В электронике принято проводить линию раздела по активным элементам: т.е. полупроводниковые элементы это такие, в которых управление потоками энергии выполняется полупроводниковыми элементами. Конденсаторы и резисторы не входят в группу«активные элементы» независимо от их устройства и к группе «полупроводниковые элементы» не относятся.
К «полупроводниковым приборам» не относятся. А к «элементам полупроводниковых микросхем» — вполне.
Да и сейчас не относятся. Даже если входят в состав интегральной схемы и сделаны из кремния. Для их функционирования не используется специфика полупроводников: либо проводник (с каким-то удельным сопротивлением), либо изолятор (с каким-то током утечки и пробивным напряжением). А вовсе не ширина запрещенной зоны, легирование, pn-переходы и т.п.
Несколько вопросов не по теме, но по Вин 10 с надеждой получить ответ отличный от догадок:

1) Вин 10, два аккаунта пользователей — А (главный с паролем) и Б (без пароля).
1.1) Пользователь аккаунта Б выключает компютер.
Вопрос: как пользователю А включить свой компьютер, чтобы сразу же не попасть в аккаунт Б?

1.2) Пользователь А выключает компьютер.
Пользователь Б включает компьютер и логинится в аккаунт Б.
Вопрос: каким хреном под аккаунтом А запускаются приложения из автостарта, без захода в этот аккаунт?

2) Почему иногда при включении своего компьютера, винда выдает какое-то говно-окно, с полностью не нужной инфой, блокирую доступ к аккаунту, пока я не разберусь с говном в окне? В настройках снят флажок с «Показывать новинки винды».

3) Почему в Вин10 присутствуют баги еще с ХР(как минимум в оболочке)?

4) Что по мнению Майкрософт должно происходить на начальном экране логина при нажатии на кнопку Win на клавиатуре? Открываться шторка чтобы попасть на ввод пароля/пина, нет? )

5) Почему Вин 10 может включить Мой Персональный Компьютер для обновления, но выключить не может? Т.е. компьютер может так проработать без присмотра несколько месяцев…
Сразу отвечу на №3. Баги могут присуствовать по 3м причинам:
  1. О них не знают
  2. Они низкоприоритетные и на них пока не выделяют ресурсы
  3. Это фича ))

Можешь мне написать про эти баги и я обращу на них внимание тех кто занимается ими.
— Например, из последних что вылезли, бывает иногда какое-то окно ведет себя как «Поверх всех окон», хотя в нем такого функционала нету, и клики по другим окнам не активируют их.

— На панели задач иногда «зависает» контекстное меню — весит пока в него не кликнешь.

— Иногда пропадает один из языков раскладки до перезагрузки(эксклюзив Вин10).

P.S. Вообще, уже приловчился жить с ними и всего сразу и не напишу. Да и Вин10 последним временем не плохо себя ведет.
— Иногда пропадает один из языков раскладки до перезагрузки(эксклюзив Вин10).

А иногда появляется лишняя раскладка, какая-нибудь азербайджанская, и это при том, что сам языковой пакет азербайджанского языка в системе не установлен.
Подтверждаю, бывает появляется украинская. Лечится ее добавлением и удалением. Но через некоторое время опять может появится.
Вы, случайно, не в Крыму находитесь?
У меня все время такое было. Исходя из наблюдений, он появляется, если запускаешь програму с этим языковим пакетом. Например GOG на русском при включении добавлял мне отдельную рускую раскладку.
У меня при использовании удалённых рабочих столов периодически добавляется в русская раскладка для английского языка. Хорошо что лечится перезагрузкой.
Например, из последних что вылезли, бывает иногда какое-то окно ведет себя как «Поверх всех окон», хотя в нем такого функционала нету, и клики по другим окнам не активируют их.

Модальное окно?
У меня такое происходило с окном любого приложения(например Хром, Фотошоп и т.п.). По ощущениям что, если в момент открытия приложения/появления окна Х переключиться на какое-то другое, то окно Х появится поверх и не захочет перекрываться другими, пока не переключишься на него и свернешь/развернешь.
Мне кажется это поведение из-за какого-то стороннего приложения.
№2. Это окно с просьбой настроить PIN или распознавание лица? Что показывается в нём?
Это окно с нововведениями в Вин 10.

Странно что это кто-то решил форсировать это окно каждому пользователю, прерывая вход в аккаунт.
Первый раз я подумал что произошло что-то серьезное так как раньше таких окон не было замечено.
Подгорело уже когда уже была снята галка «Показывать нововведния» и когда надо было что-то по-быстрому посмотреть на компе, а Майкрософт решил что мне надо сначала узнать о нововведениях в винде ))
№4 Это как я понимаю больше про юзабилити. Тут лучше отправить предложение либо проголосовать за эту фичу. Сделать это можно через Feedback Hub, открывается через Win+F.
Да, про юзабилити. Удивило, что эксклюзивная кнопка Win не работает на этом экране, хотя я ее там инстинктивно жму.

Фидбек Хаба нету у меня, но надо бы отправить фич-риквест.
Feedback Hub идёт с WIndows, если не удалил его то открывается через Win+F.
Возможно, Feedback Hub доступно не для всех регионов, у меня не вызывается (W10/1903).
Ещё одно предположение — возможно для его корректной работы обязательна онлайн учётная запись (у меня оффлайн).
У меня на 10 Pro нет Feedback Hub. Даже в поиске не ищется. Сам не удалял.
№5. В настройках питания выставлен уход в сон после определённого времени? И для питания от сети и от батареи?
Питание от сети, макс производительность, сон через час.
Но несколько раз замечал компьютер утром включенным в дни обновлений.

Кстати, как определить что включает комп?
Когда-то устанавливал какую-то программу и она делала как-то так что комп после отправки в сон включался обратно автоматически. Но програма давно удалена, задача из планировщика тоже.
Кстати, как определить что включает комп?

powercfg -lastwake

О чем это говорит?


Ноутбук периодически включается сам. И это грустно, когда он в закрытом состоянии. Ещё грустнее станет, если это произойдёт когда он будет в сумке.

Возможно скапитаню, но что у Вас выставлено в Power Options -> Sleep -> Allow wake timers?

Только важные таймеры пробуждения.
Отключил. А как узнать что такого важного пробудило компьютер? В планировщике задача по обновлению стоит с наивысшим приоритетом, в час ночи и в 12 дня с обычным приоритетом адоб GCInvoker.
В них проблема?

По моему 1.2 возникает из за супер новой и супер удобной функции.
Винда, используя ваши учётные данные которые она запомнила, сама запустит под вашей учёткой программы, которые были запущенный в прошлый раз. Неважно что вас рядом может и не быть.
image

А по поводу 1.1 Помню я делал пароль юзеру Б и включал опцию «не требовать пароль при входе» тогда хоть юзер Б и логинился автоматически, но и я в случае чего мог при включении компа зажать кнопку шифт и тогда автовход не срабатывал, нужно было ткнуть мышкой в нужного юзера. Но такое ощущение что в последних сборках десятки эта фича перестала работать.
включал опцию «не требовать пароль при входе»
Эту опцию удалили в последних билдах. Впрочем, удалили из GUI, через реестр всё осталось. Ну и, справедливости ради, это реально небезопасная штука, когда пароль лежит на харде. Как и всякие сторонние утилиты типа EncryptedRunAs (поскольку это «encrypted» вскрывается).
НЛО прилетело и опубликовало эту надпись здесь
А Bitlocker защищает от чтения данных на диске? Он включен когда эта опция доступна?
Bitlocker защищает во время холодного хранения.
Если том смонтирован, то доступен всем.
Нет, не всем.
Прошу развернуть ответ
Есть у нас сервер бухгалтерский, два раздела, один шифрован битлокером, пароля у админов нет, есть только у бухов — там база SQL.
Так вот когда я по RDP захожу на сервер с кредами локального админа — я на раздел попасть не могу из своей сессии — раздел при этом доступен SQL серверу полностью и приложение работает нормально, раздел расшифровывается одним из сотрудников и запускает серверное приложение.
Может это NTFS подсистема?
Действительно, в битлокер можно добавить SID Protector. Но он нужен для только разблокировки тома.
BitLocker только на NTFS и можно поставить и явно видно замочек на диске и спрашивает пароль.
Если даже вы локальный админ, это вовсе не значит, что у вас автоматически есть доступ к любому файлу. Например, MSSQL автоматически переназначает права на файл базы и директорию, где он лежит, оставляя полный доступ только себе.
Зато локальный админ, как правило, имеет возможность переназначить права и получить доступ. По идее, терминальная сессия не должна это как-то ограничивать
Bitlocker в конфигурации по умолчанию (когда ключ хранится в TPM) защищает от сценария «некто загрузился с LiveCD или вытащил диск и подключил к своей машине». Если машиной пользуется один человек, то можно настроить Bitlocker на запрос пароля (тогда-то и появляется соблазн настроить автовход в систему). Но лучше таки оставить битлокеру именно функцию защиты от вышеописанных атак (т.е. он будет расшифровывать накопитель совершенно прозрачно, не запрашивая никаких паролей), а вход в учётную запись защитить паролем, который сохранять в своей голове.
это реально небезопасная штука, когда пароль лежит на харде
И пусть себе лежит, он и так на мониторе написан, на всякий случай. Безопасность обеспечивается групповыми политиками.
Эту опцию удалили в последних билдах

1909, только что проверил, всё на месте, вызывается через control userpasswords2
Инсайдерских билдах, имелось в виду. Которые между 1909 и будущей 2004.

Впрочем, я копнул глубже и выяснилось, что этот чекбокс не пропал с концами а его видимость поставили в зависимость от включённости Windows Hello.
это прискорбно
2) Почему иногда при включении своего компьютера, винда выдает какое-то говно-окно, с полностью не нужной инфой, блокирую доступ к аккаунту, пока я не разберусь с говном в окне?

Без обид, но это классический «подземный стук».
«Дорогие учёные. У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит».

¯\_(ツ)_/¯
ИМХО, суть вопроса не о причинах «подземного стука», а вообще о пользе модалок поверх логин-скрина.
№5 В смысле просто так включить? Не вывод из ждущего режима а просто включение? ПК же не работает?
1.1 Win+R --> netplwiz --> Advanced --> Secure Sign-in
если бы статья была про линукс, то наверно резисторы и конденсаторы стали бы «полупроводниковыми» или даже «проводниковыми».
ps.
они есть и полупроводниковые
ps2.
это для ответа выше

Конденсаторы бывают из металлизированных плёнок или рулонов (стопок) фольги с диэлектриком (пластик, керамика, слюда), резисторы — углеродистыми или металлоксидными. Полупроводниковых среди них — мизерная доля.
А на картинке какой-то глупый дизайнер "электронные компоненты" назвал по своему хотению "semiconductor" (полупроводниковыми).


P.S. по теме статьи — посмотрите, как далеко упрятали смену переключателя языка ввода в "индусском коде" win10 против winXP (3 клика в интуитивно понятных местах Ru-En):


"Изменение сочетания клавиш для изменения языка ввода в Windows 10
С выходом каждой новой версии Windows 10 шаги, необходимые для смены сочетания клавиш немного меняются. В первом разделе инструкции пошагово о смене в последних версиях — Windows 10 1903 May 2019 Update и предыдущих, 1809 и 1803. Шаги для того, чтобы поменять клавиши для изменения языка ввода Windows 10 будут следующими:


В Windows 10 1903 и 1809 откройте Параметры (клавиши Win+I) — Устройства — Ввод. В Windows 10 1803 — Параметры — Время и язык — регион и язык.
Нажмите по пункту Дополнительные параметры клавиатуры ближе к концу страницы настроек. Открыть дополнительные параметры клавиатуры.
В следующем окне нажмите Параметры языковой панели. Открыть параметры языковой панели.
Перейдите на вкладку «Переключение клавиатуры» и нажмите «Сменить сочетание клавиш». Изменение параметров переключения клавиатуры.
Укажите нужное сочетание клавиш для переключения языка ввода и примените настройки."


При этом сам диалог настроек выглядит очень похожим на Windows XP, но запрятан как "смерть Кащея".

Это не только с языком. Попробуйте вручную ввести айпи компьютера. В икспи окно подключения можно было вызвать кликнув на значке соединения в трее.
В вин10 же нужно:
-Пкм на значке,
-выбрать центр управления сетями


  • тыкнуть на нужное подключение, либо зайти дальше в изменение параметров адаптера и тыкнуть там.

Меня давно интересует вопрос, почему с каждой версией винды, настройки уходят куда-то вглубь? Они и так разбросаны где попало, а тут ещё и по разному называются каждый раз.
Панель управления… Почему панель управления всё неудобнее и неудобнее? Создаётся впечатление, что МС планомерно избавляется от неё. Таки вопрос — почему и зачем?
В вин10 в панель управления можно попасть… Не просто туда попасть. Открываем пуск, отстаём огромный список с огромными значками, дальше вспоминаем "панель управления", это служебное, спец возможности, или администрирование? Или может стандартные? Потыкали по всем папочкам, нашли. Вид по категориям, ну совсем не удобен.
За вид со значками менеджеров-программистов, которые это "пропустили в реализацию", стоит как минимум уволить, а как максимум сжечь на костре. Скажите, почему нельзя было сделать нормальную сортировку по имени? А не это убожество с построчной сортировкой.
Если правильно помню, когда-то был возможен вид таблицей, зачем это убрали?
А кто дизайнер меню пуск? Вообще, проводились когда-нибудь опросы, мол, на сколько удобнее стало пользоваться пуском?
Это всё можно исправить сторонними утилитами, м в этом проблема. Винду во все времена после установки приходилось допиливать до нормальной работоспособности.
В 10 многое стало проще, например установка драйверов — это божественно — установил ос, включил интернет, всё, драйвера сами ставятся. Почему нельзя такие улучшения делать в системе в целом?
Очень хотелось бы услышать ответ разработчиков.

В вин10 в панель управления можно попасть… Не просто туда попасть.

<win+r>
control


Благодарю, запомню. Но это немного не то. Бывает так, что клавиатура не доступна (не подключена, далеко, темно), да и привык я мышкой работать.
Так-то можно и все нужные настройки через <win+r> открывать, но это костыли.
Вот, если бы её можно было в пуск впилить, туда, где шестерёнка «параметры», это таки удобнее.

"Панель управления" планомерно выпиливается из системы. На смену приходит "шестеренка". С каждой версией винды там се больше параметров и ИМХО структурированы они лучше чем в панели управления. К тому же есть поиск опций, если не помните в каком она разделе.

Это прекрасно, что панель выпиливаются, а на смену ей грядут "всё настройки в одном месте".
Проблема в том, что шестерёнка работает ну очень криво и медленно и не удобно, а панель всё глубже и неудобнее.
Есть тысячи твикеров для виндовс, в них настройки расположены понятно и удобно. Почему МС не наймет наконец десять тысяч первого сотрудника, которым будет разработчик ui?
В России сотни людей, готовых забесплатно слать багрепорты и тестировать новые фичи, предлагать полезные улучшения, но воз и ныне там. Вместо полезных функций и удобного интерфейса мы имеем то, что имеем.

А если помню где и хочу, чтобы там оставалось?
«Для вашего удобства мы убрали руль, а педали газ и тормоз поменяли местами».

В России сотни людей, готовых забесплатно слать багрепорты и тестировать новые фичи, предлагать полезные улучшения, но воз и ныне там. Вместо полезных функций и удобного интерфейса мы имеем то, что имеем.
Нажмите Win+F. Или у вас тоже не нажимается, как и у меня?
более того — открыв панель управления, вы можете на любом апплете щёлкнуть правой кнопкой мыши и создать на рабочем столе ярлык, который потом можно поместить в любое удобное место

Я могу даже написать программу, в которой будут все нужные мне ярлыки, но это не выход, когда приходится работать на компьютере, где нет программы, ярлыков, юсб и интернета. Зачем усложнять то, что и так работало раньше? Захотели больших изменений, ну сделали так, чтобы было удобнее, люди сами перейдут на новые настройки, а про архаичную панель управления забудут.
А тут новые настройки убоги, часть из них всё равно отправляет на окна приложений панели управления, часть из них запрятана (кстати, только сейчас понял, это наверное для того, чтобы люди научились пользоваться поиском настроек).

Пкм на Пуске, Control Panel.
Давно устарело.
«Давно» это когда? Использую 1809 только потому что не предлагает дальнейшего обновления, там все есть.
У меня сейчас самая старая из десяток — 1803, в ней Control Panel из Start Menu уже выпилена.

У Вас, скорее всего, еще более ранняя версия, впоследствии обновленная до 1809.
Сомневаюсь, что наполнение контекстного меню (не самого start menu) зависит от версии системы, с которой я обновлялся.
Так и я про контекстное (через правую кнопку) меню. И я бы тоже сомневался, если бы в стоящих передо мной четырех версиях (1803, 1809, 1903, 1909) хоть одна имела в этом меню Control Panel.

нет этой кнопки

Параметры — не оно? У знакомого на 1909 открывает старую панель управления.

открывает новомодные параметры. Я помню, когда-то давно там была кнопка панели управления. Только я ставлю альтернативный пуск вместо этого… подобия, так сказать, поэтому контекстное меню недоступно.

«Параметры» — это Settings, та самая шестеренка.

Возможно, где-то есть скрытая настройка, чтобы открывать по этой ссылке старую панель, но в панели десятки нет пунктов Display, Location and Other Sensors, Notification Area Icons, Parental Control, Performance Information and Tools, Personalization.
В вин10 в панель управления можно попасть… Не просто туда попасть. Открываем пуск, отстаём огромный список с огромными значками, дальше вспоминаем «панель управления», это служебное, спец возможности, или администрирование? Или может стандартные? Потыкали по всем папочкам, нашли.

Использую для этого Win+R -> control -> Enter.
P.S. я буду обновлять комменты
весь этот путь проходится гораздо быстрее:
ЛКМ значок языка — настройки языка — «выберите метод ввода...» — «сочетания клавиш...»

меня больше подбешивают не самые короткие пути к более используемым компонентам — «центр управления сетями» и «устройства и принтеры», к которым раньше был доступ в два клика из раскрывающегося меню
хорошо, что пока на них можно делать ярлыки из панели управления и таскать с собой на флэшке

Это всё прекрасно. Допустим, в виндовс семь, можно по правому клику на значок языка сразу попасть в это окно. и это было удобно:



И что мы видим сейчас?
"гениайльные" уй-дизайнеры микрософт показывают нам окно на весь экран, в котором в самом верху стоит смена языка, добавление языка. Я ведь каждый день по несколько раз меняю язык системы и закачиваю новые…
В очередной раз из быстрых настроек того, что нужно, мы лазим по лабиринтам "параметров". И самое главное — где гарантия, что
ЛКМ значок языка — настройки языка — «выберите метод ввода...» — «сочетания клавиш...»
будет находиться там же в следующей версии системы? С тенденцией запихивать самые удобные настройки поглубже, скорее всего путь изменится.

я понимаю ваше возмущение и разделяю его, просто поделился шорткатом

Почему в винде до сих пор нет переключения языка например по capslock?

Я уже не в первый раз про это слышу. Откуда такое требование? Смотрите LowLevelKeyboardHook, чтобы добавить такой функционал.
НЛО прилетело и опубликовало эту надпись здесь
CapsLock — это основная клавиша для взаимодействия с читалкой экрана. Её можно выключить или поменять назначение, в Интернете полно информации как это сделать без написания своей программы.
НЛО прилетело и опубликовало эту надпись здесь
За эту фичу нужно проголосовать, телеметрия не настолько интеллектуальная. Голосовать на Feedback Hub, открывается через Win+F.
А можно где-то узнать, что именно собирается телеметрией и как обрабатывается?
В плане работы клавиатуры, допустим, то, что сотни тысяч пользователей из россии открывают пуск и набирают, допустим «зфште», или «цщкв», потом удаляют введённое, меняют раскладку и заново пишут, но уже на нужном языке. Вот это вот всё отслеживается? есть у нас шанс, что винда когда-нибудь начнёт понимать, что не единой раскладкой живут пользователи и что можно включить возможность в поиске использовать и альтернативную раскладку, как это делается, допустим, в гугле, да и много где ещё?
По поводу переключения клавиатуры. С капсом никогда не заморачивался, а вот переключаться по левому и правому контрл — нашёл для себя очень удобным.
Представьте ситуацию: я подключаюсь к удалённому компьютеру через тимвьювер, на удалённом через рдп подключаюсь к серверу, на сервере в браузере запускаю веб интерфейс esxi и в нём захожу на виртуальную машину. (не спрашивайте зачем это, просто как пример) И от ввода текста мне становится грустно, ибо в лучшем случае символы вводиться не будут, пока на всех машинах не выставить одну и ту же раскладку, а в худшем будет вводиться какая-то фигня из непонятных символов, или один символ на все клавиши. Можно, конечно ставить хуки, писать свой софт, или использовать чужой. Эту проблему я решил с помощью пунто свитчера, но таки очень хотелось бы более гибких настроек по назначению клавиш.
Почему нельзя разрешить пользователю менять раскладку по капсу, или по кнопке Ё? Или на один язык переключаться левым контрл, а на другой — правым.
Win10 1909
Возможность переключения по `(ё) присутствует.
Новомодные настройки — устройства — ввод — дополнительные параметры клавиатуры — сочетания клавиш для языков ввода.
Выбрать пункт «Переключить язык ввода» и по нажатию на «сменить сочетание клавиш» появится искомое.
Потенциально, можно переключаться на конкретные языки по хоткеям, но из-за убогих возможностей по настройке доступны только варианты (модификатор)+([`1-0]), что неудобно. Особенно при привыкании переключения по разным контролам.
Может быть у них дойдут руки до модернизации этой части интерфейса, но будет это нескоро, судя по стабильности сборок 1809 и 1903(на последнюю я несколько раз пытался обновиться с 1803, но обновление всегда зависало по непонятным причинам).

1903 Переключения по Ё нет. Только по ctrl+Ё. Но и оно у меня не заработало, возможно, что-то блокирует.
Но таки хотелось бы по разным контролам переключаться, так как разные клавиши на разный язык — это сильно логичнее и меньше ошибок при наборе.

Ну вот не соглашусь с вами.
Вот как выглядит у меня данный диалог. Win 10 1909 build 18363.535
Проверил, переключение МЕЖДУ раскладками по Ё работает, без разницы на модификаторы.
image
Впрочем, жить без ё не очень интересно, так что я не вижу этот вариант жизнеспособным (а другой человек может увидеть).
Посмотрите, возможно у вас какие-то хуки стоят, что не позволяют переключаться по одному нажатию на клавишу Ё.

А вот переключение на конкретную раскладку, увы, тут все очень плохо.
Теоретически, текущий вариант удобен, если у тебя много (более двух) языков. Но для двух языков — мне удобнее левый и правый контрол для явного переключения на конкретный.
Фактически, это единственная причина установки punto switcher, к которому за годы привык, но пользуюсь лишь одной фичей.

Написал программу, которая переключает язык по левому и правому контрл. Теперь можно будет обойтись без пунтосвитчера.
Спасибо ТСу за толчок в нужном направлении.
Вопрос к реально пользующемуся этой функцией. Переключение по шифту, или другие способы нужно встраивать, или контрл будет достаточно?

вот вам образец для подражания
image
Переключения языка капсом это удобно, особенно на ноутах где в клавишу встроена лампочка, сразу видно какой язык включен.
Реально есть статистика что какая-то ощутимая масса пользователей пользуется этой кнопкой?
Не знаю ни одного человека кто пользовался бы капсом, ну кроме как для написания юмористических комментариев в стиле «СРОЧНОСДЕЛАТЬЕЩЁВЧЕРАБЛДЖ1111»
Раньше пользовался переключением Ctrl+Shift, затем перешел на Alt+Shift (при «слепом» методе печати так удобнее). А сейчас — в связи с переходом на планшет (и иногда из-за этого отсутствием физической клавиатуры) — перешел на переключение языка ввода кнопкой «Ё» (или ` в английской раскладке). Это удобнее для меня, чем нажимать две клавиши на сенсорной клавиатуре (1 клик вместо 2-ух — вполне себе экономия времени:).
З.Ы. Кнопкой капслок пользуюсь, — иногда капчу надо вводить большими буквами или пароли. Но добавить этот вариант переключения языков для большей настраиваемости и удобства Windows для разных людей было бы хорошо.
У alt-Shift есть препоганейшая особенность: половина современного софта по нажатию alt активирует хоткеи меню… как итог быстрое нажатие alt-shift и попытка ввести текст «съедает» первый символ
Не знаю ни одного человека кто пользовался бы капсом
Значит, не знаете людей с ограниченными возможностями. Там на капс много чего завязано.

Впрочем, я сам о таких вещах не задумывался, пока не довелось поучаствовать в разработке приложения, популярного у слабовидящих. Оказалось, что даже банальная недоступность строчки текста в интерфейсе с клавиатуры — уже серьёзно, люди испытывают реальное неудобство, не могут отправить этот текст на озвучку скринридеру.
Согласен, для людей с ограниченными возможностями возможно это нужно, но это ведь можно включать/отключать одним флагом в настройках. Вы думаете о людях с огр. возможностями, а подумайте об обычных людях или они сами о себе будут заботиться и использовать LowLevelKeyboardHook
При переводе приходится, потому что пишешь не как тебе хочется, а как написано в исходном документе. А там может быть и слово через слово капсом, и половина предложения — при быстрой и долгой работе палец отсохнет шифт держать.
А Сtrl+Shift+стрелка — Shift+F3 для каждого слова — это сильно сложнее капслока.
У меня переключение раскладок по CapsLock. А включение\выключение функционала CapsLock по CapsLock+LeftShift.

И почему это было сделано не по умолчанию дцать лет назад…
Вот должно быть наоборот — на кнопке написано — «CapsLock» -делает буквы большими. Хотите своё — по CapsLock+LeftShift — делаете как хотите.

А давайте попросим и CtrlShitEsc не на диспетчер задач, да и Win тож на своё…

А давайте не будем трогать CtrlShiftEsc.

Хотя Task Manager зачастую запускается уже после того, как приложение, для прибивания которого был вызван, дозакроется само.

У меня недавно был забавненький глюк — explorer хитро здох и после логина не отрисовывались значки на рабочем столе.
При запуске диспетчера задач из консоли в безопасном режиме с поддержкой командной строки тот тоже вешался при попытке открыть контекстное меню любого процесса.
Отсюда можно сделать вывод, что диспетчер задач уже не торт, раз уж его можно так легко положить. Систему пришлось переустанавливать(

Она не для всех бесполезна. Я активно ей пользуюсь по назначению, когда пишу код. Про людей с ограниченными возможностями написали выше.
Если не первый раз слышите, значит это востребовано. Это требование происходит от банального удобства. Неужели так трудно это сделать? Миллионы пользователей ежедневно выворачивают пальцы, чтобы переключить язык.
>>> Смотрите LowLevelKeyboardHook, чтобы добавить такой функционал.
Смотрите линукс, там это сделано.
А для себя сделайте клавишу Enter, через Ctrl-Del через LowLevelKeyboardHook, посмотрите откуда требования происходят.
Что там выворачивать? Не отвлекаясь от печатания можно нажатием мизинца по Ctrl+Shift быстро сменить язык.
Не отвлекаясь от печатания можно нажатием мизинца по Ctrl+Shift быстро сменить язык.

А Shift+Caps или Caps прожимать мизинцем ещё удобнее — у меня так переключение настроено, Shift+Caps — русская раскладка, Caps — английская. Очень удобно тем, что не надо знать, какая раскладка стоит сейчас, чтобы включить нужную.
Ну и индикатор Caps у меня светится когда русская раскладка включена, удобно.
Linux, да. Причём это даже настраивается штатно в панели управления, а не в конфигах.

Андрей, раз уж тут коснулись функции переключения раскладки, есть вопрос по системному сообщению WM_INPUTLANGCHANGEREQUEST, в старых версиях windows работало отлично, сейчас не применимо, т.к. множество программ (MS Office к примеру) просто зависает (не всегда) если им отправить данное сообщение. Можете прокомментировать?
Ну от себя скажу: Все сторонние решения имеют свои ограничения, например не переключают раскладку в некоторых диалоговых окнах. В трее висит программа, которая реализует эту мелкую функцию. Сама же функция очень давно есть в линуксах, и ее очень не хватает в windows, при быстром переключении между ОС это сильно напрягает. К тому же, переключение Shift+Alt иногда не срабатывает, если быстро прожать, а caps всегда под мизинцем. Ну а включение Caps через Shift+Caps уже давно реализовано, чем и пользуюсь при необходимости (это ведь всегда можно настроить, не обязательно Caps на переключение раскладки по умолчанию ставить). Для себя решил проблему маленькой программкой в автозагрузке, собранной из скрипта в AHK, но и она не всегда отрабатывает (но чаще, чем другие решения, которые я пробовал) в диалоговых окнах, и судя по вашей статье, не будет, если не будет запущена как служба от имени системы. В хабе предложение создал, если есть возможность поддержите.

Почему только по CapsLock? Почему не требовать от винды какой-нибудь дичи вроде LShift+LCtrl+LAlt+RAlt+RCtrl+RShift+Reset?


Нет такой фичи? Выпустите свой продукт! Если он действительно будет нужен пользователям — вы озолотитесь.

НЛО прилетело и опубликовало эту надпись здесь

Дичью я назвал ту комбинацию, которую сам придумал.
Переключением по RCtrl вполне может быть кому-то (вам, например) удобно. Но это не значит что эта опция обязана появиться в списке доступных. Даже не смотря на то, что часть пользователей была бы рада. Возможно этих пользователей крайне мало.

Требовать можно, в настройках винды давно можно было сделать назначение переключения языка на любую кнопку или вашу любимую комбинацию LShift+LCtrl+LAlt+RAlt+RCtrl+RShift+Reset, только вот что то в микрософте не торопятся это делать уже лет так 20.

Вон, человек выше комментарием, написал что он переключает с помощью RCtrl. Значит есть стороне решение.


А не торопятся, потому что незачем. Будет как с блокнотом. Пока ничего не делали, была группа пользователей, которая ныла что блокнотом не занимаются. А когда внесли изменения в блокнот, то появилась другая группа пользователей, которая начала ныть что есть более важные вещи, а MS блокнотом занимается.


Текущая ситуация позволяет выбрать 2 исторически сложившихся варианта. Все остальное делается сторонним ПО.

Стороннее решение не всегда можно устанавливать на удаленные чужие сервера.

А что там в блокноте улучшили за последние 10 лет? Поддержку юникода? Так это не фича, а неизбежный переход на х64

Я уже не помню. Там была какая-то мелочь от которой мне лично ни тепло, ни холодно. И тем не менее кому-то это не понравилось.

НЛО прилетело и опубликовало эту надпись здесь
Есть пунтосвитчер для Windows, который умеет и по RCtrl и другие варианты. Автозамену я в нем отключил — мне эта фича не нужна.

когда-то одним из аргументов не перехода на линукс у меня был как раз отсутствие пунтосвитчера…

Мощный аргумент. Кто-то заставляет использовать пунтосвитчер? Нет.
Кто-то вас заставляет из нас вернутся не Windows? Тоже нет.
Win+SPACE не подходит?
Статья очень интересная, спасибо. Как и ожидал большинство комментариев на тему «почему винда такая глючная» хотя автор в самом начале написал что работает над ядром, а не вот это вот всё. Ну и потом 330 000 одних только API, что же вы хотите?)
Спасибо

А вы можете написать статью о сообщениях в виндовс? Мне интересно, как происходит слаженная работа всех компонентов интерфейса. Ведь нажатие на кнопку это по сути отправка объекту "кнопка" сообщения sendmessage, верно?
Только сообщение кнопке отправить легко, а что происходит, когда юзер меняет ширину столбца, или показывает/скрывает столбцы, изменяет вид папок проводника. Где про это можно почитать подробнее?

Есть программа InqSoft Window Scanner — она позволяет посылать произвольные сообщения, может вам пригодиться когда будете изучать этот вопрос (если конечно захотитие))

Да, пользовался ей активно. Ещё spycapture, она, похоже уже мертва, как и многое из программ, которыми пользовался давным давно, когда познавал мир виндовс. Делал автоматические установщики, потом на делфи писал перехват клавиатуры, назначение горячих клавиш и отправку сообщений в окна.
Я только недавно осознал, как эти сообщения работают, что те два параметра, в которых я отправлял коды клавиш, могут также содержать указатели и посылать окнам гораздо больше, чем пара байт. Вот это и хочется изучить. Тем более, есть программы/интерфейсы, в которых кнопки отличаются от обычных и не определяются через сканер InqSoft, но как-то они ведь работают.

WM_DATA позволяет отправлять массив байт другому окну.
Об этом будет когда дойдём до того как Windows обрабатывает сообщение от клавиатуры.
НЛО прилетело и опубликовало эту надпись здесь
про клавиатурный ввод — это не очень интересно. Гораздо интереснее было бы узнать про взаимодействие драйверов дисков и файловых систем. Особенно про возможность изменения констант кэширования и буферизации.
Например, винда сильно уменьшает время хранения буферов (на запись) метаданных для Removable Media.
А еще про разницу между Fixed Media и Removable Media. К примеру USB флэшка может быть Removable или Fixed, это всего лишь 1 бит в конфигурации устройства. Хотя USB устройство и так подразумевает возможность извлечения, но винда резко меняет поведение если устройство объявляет себя Removable, при том что USB HDD (Fixed Media) вполне себе нормально живут.
Кстати SATA устройства тоже могут быть извлекаемые (eSATA), но через API далеко не просто докопаться внешнее это устройство или внутреннее. Да, даже версию USB у флэшки выше 2.0 не узнать через стандартный API, она всегда возвращается 2.0.
И почему я могу читать-писать сектора у дисковых устройств своей прогой, но никак не могу подключить свой обработчик файловой системы без подписанного драйвера?
На примере клавиатурного ввода я хочу показать как компьютер работает в целом, чтобы было понимание в том числе и какую роль играют драйвера. Когда-нибудь может доберусь и до файловых систем, но мой материал не будет настолько подробным.

Windows запрещает загружать не подписанные драйвера. Вы пробовали эти команды, они для тестирования, а не для продакшена:
bcdedit -set loadoptions DISABLE_INTEGRITY_CHECKS
bcdedit -set TESTSIGNING ON
да меня больше не драйвера интересует, а возможность временно ускорить дисковые операции например при заливке образа винды и раскатывания драйверов. Слишком много операций сброса дисковых буферов и их ожидания приводят к катастрофически медленной работе дисковой системы. К примеру, простое удаление файла это одна из самых медленных операций файловой системы, которое практически не распараллеливается.
Попробуй-ка быстро удалить тысячи файлов, а вот не получится потому что винда должна сбросить метаданные на диск много раз для КАЖДОГО файла. Хочу гибкости в настройке поведения буферизации через API!
А зачем винда для добавления драйверов требует сперва извлечь все файлы драйверов на диск, а потом их КОПИРУЕТ к себе вместо переноса. А ведь каждый драйвер можно было бы прямо целым CAB файлом подключать и хранить, что резко бы уменьшило количество файлов на диске и соответственно количество дисковых операций.
без подписанного драйвера

Если что — обращайтесь, подпишу бесплатно ;)
(правда, с некоторыми нюансами, которые не позволяют применять это в продакшене, но и отключать у себя на машине проверку подписи больше не придётся, так что, если это что-то самописное для личных нужд, то вполне вариант)

У вас есть сертификат, или вы знаете какую-то тайну?

Скажем так, уязвимость механизма проверки подписей, благодаря чему можно скормить системе невалидную подпись на бинарнике, которая будет признана валидной. Если подписать драйвер — он стартанет без вопросов.

Информация несколько лет гуляет в полупривате, например, таким макаром подписывается некоторый взломанный софт, где защиту разработчик размещает в драйвере. В принципе, уже есть даже однокнопочная утилита, которая лепит такую подпись, просто всё это не вываливается на каждом углу, чтобы не дразнить гусей и не помогать вирмейкерам (привет антивирусу Panda, который несколько лет назад после такого трюка переставал детектить даже хорошо известное ему вирье). Антивирусные продукты могут реагировать нервно по принципу «повреждённая подпись вызывает больше вопросов, чем даже полное отсутствие подписи», поэтому в продакшен не годится.

Хотя, скорее всего, Microsoft знает про это, но не может исправить, потому что (моё предположение) пойдёт лесом обратная совместимость. Интересно было бы, конечно, написать хорошую статью с разбором уязвимости и посмотреть, как вендор начнёт выкручиваться, но скиллов понять, как оно работает, у меня не хватает.
можно скормить системе невалидную подпись на бинарнике, которая будет признана валидной

Или наоборот.
Мне тоже интересно ^_^
если речь все-таки идет про протокол USB у текущего подключения у флэшки, то меня СОВСЕМ не радует необходимость нахождения USB ноды по букве диска.
К тому же USB_DEVICE_SPEED максимум показывает USB 3.0, а как же USB 3.1 Gen2 или USB 3.2 Gen 1x1, 1x2, 2x1, 2x2?
Я пользуюсь STORAGE_ADAPTER_DESCRIPTOR, где есть BusType, BusMajorVersion и BusMinorVersion, который всегда показывает USB 2.0
Использую для этих целей UsbTreeView показывает все данные о шине и устройстве
прога хорошая для своих целей, но мне нужно чтобы Windows сам отдавал нужную инфу через его API, вместо самостоятельной реализации низкоуровневых опросов железа.
Нда. Буквально заставил себя прочитать всю статью, чтоб потом не было комментариев в стиле «не читал, но осуждаю». Впечатление «смешались в кучу кони, люди, мечи, секиры топоры и залпы тысячи орудий слились в протяжный вой» после прочтения только усилилось. Нет, серьезно — складывается ощущение что автор хотел запутать даже тех, кто хоть что-то понимает.

Вообще, адресовать такую статью «студентам технических специальностей» по мне преступление. А после фразы «Материнскую плату можно рассматривать как колонию микроконтроллеров которые общаются между собой через шины и через них циркулируют данные от подключенных устройств к процессору и обратно» захотелось убивать. Завершил разрыв мозга притянутая к уровню радиоэлементов архитектур клиент-сервер и уровень виртуальной машины вместе с Hyper-V.

Корпоративная солидарность не позволяет мне критиковать коллег по цеху (пусть и из лагеря условных союзников), не не могу не напомнит одну цитатку Курта Воннегута.

Если ученый не умеет популярно объяснить восьмилетнему ребенку, чем он занимается, значит, он шарлатан.


Думаю, она относится не только к ученым, но и к любым людям, считающих себя специалистом в какой-либо отрасли. Так вот — ваш текст с трудом понимает 40-летний системщик (и многое в нем считает неправильным по разным причинам), а уж восьмилетнего ребенка или думающего «студента технических специальностей» он просто раздавит.
Согласен с вашей оценкой. Много текста и всё на разные темы. Про клавиатуру ничего не написали. Может быть начнём с WM_CHAR, WM_KEYDOWN, GetKeyboardState, GetAsyncKeyState?
А если уж нарисовали биполярный транзистор, то писать надо про MS-DOS, io.sys.
Хмм… Мне все понятно, многое интересно. Насчет студентов не скажу, вероятно, будет зависеть от специальности.
А можно узнать Ваш социальный статус? Вы студент? Или работаете (в какой отрасли и лучше с направлением)?
Вам непонятно как это всё соотносится друг к другу?
Вы не понимаете почему в этой статье про клавиатуру написано так мало?
Неакадемичность изложения?
Как бы вам сказать… Есть два пути. Один от кнопки на клавиатуре, через контроллер кнопок в ней, через интерфейс в ней же, через контроллер интерфейса на плате, через процессор в режиме ядра в пользовательской прикладной задаче. И только после этого что-то говорить про Windows — специфичные моменты. Или наоборот — от Windows'специфики к кнопке на клавиатуре. Если при этом хочется упомянуть виртуализацию — то пожалуйста. Но не надо ее упоминать везде по делу и без.

И, конечно, нет никакой «колонии микроконтроллеров» на материнской плате. Все же микроконтроллер — это некоторое процеcсорное и программируемое устройство. А на материнской плате есть «колония контроллеров ввода-вывода» — они имеют крайне мало общего с продукцией Microchip, Atmel, ST-Microelectronics и им подобным. Хотя бы потому, что не содержат в подавляющем своем большинстве вычислительного ядра. Если где и есть микроконтроллер, так только непосредственно в самой клавиатуре (особенно Китайцы очень любят ставить контроллеры общего назначения в свои мега-клавиатуры с подсветкой) или мыши.

Неакадемичность можно только приветствовать. Но ведь фактическая точность от академичности текста зависеть не должна. Электронные компоненты имеют свое деление. А вы даже не удосужились на него посмотреть. Резисторы и конденсаторы (которые начиная со школы изучаются как пассивные элементы) приравнять к полупроводникам… Да еще и обосновать это тем, что «в составе микросхем же они есть» — это уже не «неакадемичность».

В итоге получилось то, что получилось. Некоторая статья о клавиатуре и Windows в которой мешанина из крайне спорных фактов. Возможно, те кто совсем не в теме что-то из нее и почерпнут. Только именно это и страшно. Странно изложенные факты, прошедшие в голове неспециалиста собственное осмысление и интерпретацию породят такую кучу кучу сложновыводимых мифов, что даже думать страшно.

И одно дело когда подобная чушь идет от маркетологов и прочих менеджеров, и совсем другое когда от человека, который «работает в Microsoft над ядром ОС Windows 10». Все же фактическая точность обязательно должна быть.

Впрочем, могу и похвалить. Мне понравился ваш подход и попытка объяснить разницу между режимом ядра и режимом пользователя. Вот тут есть камень предкновения для очень многих программистов (включая тех, кто считает себя системщиками). Увы, но боюсь даже это понятно мне, но не «широкой публике». Но подход именно в этой части однозначно правильный.
В Windows 10 применяется виртуализация, даже если явно не включать hyper-v.

Настройки безопасности/изоляции ядра/контроль целостности памяти.

Windows Defender Application Control and virtualization-based protection of code integrity
Любите вы позадираться ). Я считаю что эту тему надо объяснять именно в таком порядке.

Не будучи экспертом в теме радиоэлектроники скажу, что насколько я знаю не только порты ввода-вывода обладают прошиваемыми контроллерами, как минимум чип с UEFI (BIOS) содержит прошивку. Такой большой чип как Южный мост (называйте как хотите, хоть PCH) навряд ли не содержит никакой прошивки. Принципиальные различия между чипами человек разберёт если захочет погружаться в эту тему. Для общего понимания работы машины достаточно и такого объяснения. Между прочим я нигде не утверждал, что конденсатор это полупроводник.

Академический подход к тому что я опишу в нескольких статьях это обособленное изучение предметов в списке ниже в течение 5 лет в надежде что человек сам соберёт их в общую картину:
  • математика
  • физика от азов до электродинамики
  • электротехника
  • электроприборы
  • язык С и алгоритмы
  • операционные системы
  • системное программирование
  • математическая логика
  • теория игр
  • системный анализ
  • другие предметы

для того чтобы 90% выпускников следующие 10 лет писали web-приложения, мобильные приложения, пользовательские программы или делали управленческую карьеру. Это неэффективное распоряжение временем, зато академически точно.

Я примерно знаю как устроен мой автомобиль, хоть и не механик. Мне этого достаточно чтобы понимать что могло в нём поломаться, как решать споры с автосервисом, что имеет смысл докупать. После моих статей люди будут понимать как ПК работает в общем и целом. Страшного тут ничего нету — как только человек начнёт вникать в выбранную область мифы развеятся.

Вам трудно угодить, спасибо за похвалу.
Тогда нужно еще рассказывать про сети.
Ведь некоторые думают что если использовать VPN в месте поближе к сервису, то пинг через него обязательно уменьшится.
Чип с UEFI (BIOS) — это обычная микросхема памяти. Прошивка в ней, конечно, хранится. Но именно храниться. Исполняется она уже не на нем, а на основном процессоре или выделенном процессоре рядом. Подробности тут неоднократно CodeRush рассказывал (за что ему большое спасибо).

Про внутреннее устройство мостов знает только их производитель. Я не производитель — потому не знаю. Но имею все основания предполагать, что никакой даже скрытой от конечного пользователя прошивки там нет. Там железная логика. Впрочем, притянуть за уши, конечно можно. Железная логика такого уровня давно разрабатывается на языках HDL (hardware description languges). Так что если объединять пассивные компоненты и полупроводники (картинку смотрим — там и резисторы с конденсаторами обведены рамочкой Semiconductor Devices), то в принципе можно сказать что и мосты — одна сплошная прошивка. Но по факту любой мост — всего-то окно в памяти (регистры даже на x86/x64 уже дикое legacy и это правильно) и набор каналов прерываний и прямого доступа к памяти.

Ну и про устройство автомобиля. Лук — он многослойный. Один слой как педали нажимать и руль крутить, другой — бензин и омывайку заливать, третьи — предохранители и эксплуатационные жидкости (масло), а дальше системы питания и выхлопа, подвески, дифференциалы, а если надо глубже, то химия, материаловедение… Вы в заголовке очень глубоко замахнулись. Но у меня после прочтения осталось стойкое ощущение, что вы путаете масло ГУР, двигателя и коробки передач. Формально все это масло. Все они моторные. Но обобщать их… Не правильно, что ли.
Нет в мостах никакой железной логики. И прошивки там есть. Работающие на внутреннем CPU. Intel Management Engine

После старта питания. Еще до запуска CPU, работает куча контроллеров. Подготавливающие всё для запуска CPU.
Нет в мостах никакой железной логики.


Ух… Т.е. вы хотите сказать, что в мостах работает программа которая умудряется поставлять данные процессорам, работающим на гигагерцах? Т.е. контроллер внутри моста быстрее самого процессора?

По контроллерам. Хорошо MEI или ее аналог. Принято. Я, к слову, писал о «выделенном процессоре рядом» на котором исполняется часть кода из микросхемы памяти с UEFI BIOS. Один найден и засчитан. А еще? Один на кучу совсем не тянет.

Допустим, в ноутбуках есть мультиконтроллер. Может ли (и должен ли) он работать до старта ЦПУ я не знаю. Но, допустим, может. Два. На геймерских платах местами попадаются контроллеры, отвечающие за подсветку (не могу пруф найти — но вроде даже здесь кто-то с ним ковырялся). Три. Уже куча? Ну ладно. Пусть будет куча и каждый со своей прошивкой.

Нет, конечно можно найти микросхему EEPROM в которой хранятся VID/PID для USB хаба. Наверное, можно сказать что и там работает какая-то прошивка.

Хорошо. Пусть будет так. Пусть будет толпа контроллеров. Почти убедили.
Я прояснил для себя некоторые моменты с контроллерами. Ну а в чём по сути разница между контроллером в котором закодирован программный код и контроллером в котором вся логика работы реализована на аппаратном уровне? Я так понимаю это скорость работы и реализация.
В более старых материнках чипы тоже не полагались на программную реализацию?
А хороший вопрос, когда он задан именно так.

Наверное в том, что контроллеры написанные на языках HDL не имеют как такового вычислительного ядра. Все же именно наличие отдельного блока ALU, и как минимум пары регистров и есть отличительный признак вычислительной системы. Тут же четко прописанный автомат состояний.

Мы же не называем железный ткацкий станок программируемым устройством. По крайней мере до тех пор, пока он не оснащен съемным барабаном с программой, позволяющей менять последовательность петель. Аналогия примерно такая же. Да, когда-то это разрабатывалось на языках HDL, но и «однопрограммный» станок кто-то когда-то проектировал. Наверное как-то так.
Вот материнка из 1981го года, IBM 5150.
Все эти жуки в основном память да логика. Где там микроконтроллеры то?
Как минимум я вижу 8255 (или i8255) — микросхема контроллера программируемого параллельного интерфейа — это именно микроконтроллер.
Плюс ниже него еще контроллер прямого доступа к памяти 8237
Под процессором стоит контроллер Intel 8259 — семейство программируемых контроллеров прерывания
И еще есть Intel 8253 — микросхема программируемого трёхканального таймера и счётчика интервалов — это в общем тоже программируемый контроллер, хотя и не такой мощный как предыдущие.
все-таки я бы различал контроллер и микроконтроллер. В данном случае 8255 это не микроконтроллер, у него нет процессора и программы. Только начиная с PC AT, на материнке появляется отдельный микроконтроллер, который начинает работать еще до CPU.
А контроллером может быть любое достаточно простое управляющее устройство — конечный автомат, к примеру контроллер питания
Милые сердцу раритетные железки. К счастью, в те времена все было сильно проще. Есть процессор, которые по системному сбросу выставляет на шину адрес, а на шине по этому адресу расположена микросхема BIOS (с параллельным интерфейсом), который и начинает выполняться. А вся обвязка в виде контроллеров клавиатуры и иже с ним в виде отдельных железных микросхем подключенный к той же шине. Все просто, красиво и понятно. Не чета современным.
— Контроллерам не надо работать на частоте процессора.
— Super I/O есть не только в ноутбуках.
— Прошивки есть в самом CPU и они обновляются. Потому как x86 Intel внутри содержит RISC процессор.
По этой аналогии во многих чипах не просто железная логика. Там свой CPU с RAM и прошивкой (звук, сеть, sata и т.д. )
Взять скажем сетевую карту. Как без CPU сделать TCP Offload?
И все же, и все же…

В SSD или HDD есть контроллер. И память. И микропрограмма. И нужна она для самых разных функций. При этом, собственно упаковкой данных в интерфейс в нем занимается выделенный аппаратный блок. Слишком не те скорости.

Но контроллер SATA (если он именно контроллер SATA, а не железный RAID) — по сути банальный мультиплексор, хоть и усложненный буфером данных и рядом DMA'шных каналов. И памятью, его рулит отнюдь не микроконтроллер в «классическом» понимании этого слова.

Посмотрите так любимый многими STM32. ARM отдельно, а контроллеры USB (что хоста, что устройства), MMC, TFT LCD — отдельные IP блоки, которые доступны только через окно в памяти. Я не знаю в деталях внутреннее устройство этих блоков, но если верить структурным схемам в документации то нет там никакой отдельной программы. Типичные цифровые автоматы с жесткой логикой работы.

Что до микрокода… Поверьте, тут все не так однозначно (с) Иначе та же Spectre не наделала бы столько шума. Не все и не всегда им можно исправить.
Spectre использует уязвимость, которая заключается в наличии самих блоков процессора (предсказания, кэширования). risc внутри cpu просто потребляет данные из этих блоков.

То что контроллер никак не виден программно, со стороны программиста через код CPU, не означает что это не контроллер со своим ALU.
Согласен. Но это точно также не обозначает автоматически наличия там ALU со своей микропрограммой.

А дальше вопрос ее наличия или отсутствия — скорее вопрос веры. Я, изучавший конструирование цифровых автоматов, склонен считать что ее там нет. Видя регистры управления и зная подаваемые сигналы тактирования я могу представить как именно реализован такой автомат без ALU. Но, вполне естественно, не могу быть в этом уверенным на все 100 процентов.
А как же быть с, например, ASM1061? Вполне себе контроллер. На некоторых материнках он и его сотоварищи используются для расширения имеющихся портов SATA. Или звуковые чипы от тех же Realtek?
По ASM1061 — я все же склонен считать, что там жесткая логика. Хотя, 20МГц кварц в обвязке безусловно на что-то намекает… И намекает сильно больше, чем «optional 64K Bytes SPI flash». Я не разработчик чипа. Потому уверенно сказать не могу.

По звуку. Даже «широко известная в узких кругах» микросхема кодека SGTL5000 по документации содержит в себе DSP, отвечающий за цифровую фильтрацию и работу алгоритмов автоматического регулирования уровня записи (ALC). Возможно, там реально DSP. А может быть и нет. Я такому раскладу не удивлюсь. Что до «крабов» — то я тоже склонен считать, что эффекты типа «стадион» или «ванная комната» это работа драйвера и использование CPU. Впрочем, AWE32 в свое время содержала богатый DSP. Но ведь это уже периферия. К тому же довольно жестко специфичная.
Т.е. вы хотите сказать, что в мостах работает программа которая умудряется поставлять данные процессорам, работающим на гигагерцах? Т.е. контроллер внутри моста быстрее самого процессора?
Частота процессора — гагагерцы, а частота системной шины какая?
И мост же остался только южный, всё действительно высокочастотное давно в процессоре.
Сарказм: включен

Конечно. Системная память в случае северного моста — это очень низкоскоростное устройство. Можно лагать почем зря. Или контроллер интегрированного дисплея (который должен получать фреймбуфер из системной памяти) может быть не просто медленным, а просто супер медленным. Любого контроллера хватит, чтоб эти вещи окучить.

Сарказм: выключен

Надо к Intel на поклон идти. И смотреть документацию на тот же PCH. Возможно и есть там что-то. Но точно не основное. А мосты и раньше были всего-то объединением на одном чипе горки развесных контроллеров и шинных интерфейсов. Не думаю что и сегодня ситуация резко поменялась. По сути там те же «развесные» корневые хабы для PCI/PCIe, контроллеры SATA/USB и все такое.
Так контроллер памяти же в процессоре, как и графика. Или мы о разном?
Контроллер, тот который обсчет делает — да, в процессоре. А сериализаторы, которые DP или HDMI формируют в PCH. Вот и получается, что фреймбуфер 60 раз в секунду должен летать между памятью (и ее контроллером в CPU) и PCH. И это не единственное, что между ними должно обмениваться.
Одно время были популярны карты DVI ADD, в которых стоял формирователь, довольно скромный по размерам чип, практически не греющийся. Встречал вообще программную реализацию — попалась плата от материнки Asrock, на которой из активных элементов было только три транзистора. На других материнках не завелась, в драйверах видео ничего особенного не нашёл, возможно, в BIOS собака порылась.
DVI_ADD
У меня подобное на чипсете Intel G45/G43 работает (до сих пор) под Windows 10, только ещё более круто — Display Port + DVI:) Обеспечивает аппаратно DirectX 10. Очень удачная материнская плата и BIOS от AsRock.
Вероятно работа под Windows 10 даже не заслуга MS — они бы точно не пошевелили пальцем, чтобы продлить жизнь устаревшему железу. Судя по всему, функциональность DVI-ADD карт чисто аппаратная и не требует поддержки со стороны драйверов. Т.е. это просто продолжение встроенного видеоядра, добавленные детали, недостающие на материнской плате. Там, судя по всему, простая быстрая программируемая логика.

Пробовал DVI-ADD на более новом чипсете — не завелось.

AsRock вообще молодцы. Когда начинали, были самым дешёвым во всех смыслах производителем, как сейчас BioStar — экономили на спичках, ставили самые дешёвые компоненты, хотя ещё были дочкой ASUS. И первыми выходили из строя. Потом резко изменили стиль, перестали экономить на компонентах и стали выпускать материнки с нестандартной разводкой и функциональностью. В том числе, по-моему, DVI-ADD впервые появились именно у них.
При этом цена осталась вполне привлекательной на фоне увлёкшихся фантиками ASUS и Gigabyte. Также МП Asrock всегда лучше укомплектованы при меньшей цене, а некоторые решения уникальны.

У меня сложилось впечатление, что в определённый период AsRock получила ощутимую поддержку от кого-то из грандов индустрии, возможно, стала производственным полигоном Intel (HP, Dell). Достаточно взглянуть на ассортимент серверных платформ AsRock, чтобы в этом убедиться. Неоткуда третьеразрядному производителю взять достаточно инженерных ресурсов для разработки и поддержки такого широкого спектра инженерно-ёмкой продукции.
К стыду своему с такими не сталкивался. Но да, речь ровно о том же. Полагаю, что на картинке часть от платы Fujitsu-Siemens D2841-A11. Вот что по нему удалось нарыть.

Данный DVI-D адаптер устанавливается в слот для видеокарт PCI Express x16… Максимальным разрешением, которое поддерживает DVI-D адаптер D2823-A11 является 1920 х 1200 точек с частотой обновления 60 Гц.


В рамках обозначенной темы, важен интерфейс. В данном случае это (если верить нтернету) PCI-e x16. И в варианте с мостом, и в варианте с PCH этот интерфейс уходит непосредственно с CPU. Смеху для можно посчитать пропускную способность 1920х1200х3(RGB888 — 24 бита)х60 — почти 400 мегабайт в секунду.

Я думаю, что вопрос о микроконтроллере, способном ворочать данными с такими скоростями будет неуместен. Конечно и безусловно тут исключительно жесткая логика. Ну, и еще раз — в случае с PCH это не единственные данные, которые гуляют между CPU и PCH.
За всем не уследишь. Но меня до сих пор терзает возможность программного вывода HDMI с PCI Express шины, одно время был актуален вывод на несколько дисплеев.
Валяется плата от материнки AsRock, типа HDMI ADD, на которой из активных элементов присутствует только три буферных транзистора. Конечно возможно, что на этой материнке есть какой-нибудь грязный аппаратный хак типа как на телефонах Motorola аналоговые наушники подключались к разъёму mini-usb или на некоторых ноутбуках через комплектный переходник с vga разъёма выводился компонентный сигнал на телевизор. Но не вижу в этом смысла, проще было поставить на материнку hdmi разъём, а не городить переходной слот.
Сложно так судить. Нужна как минимум фотография.

Включив режим телепата могу предположить, что то, что вы считаете за транзисторы на деле является защитой от статики (ESR), а HDMI'шные дифпары уходят прямо со слота PCI-e. Там же по классике есть и I2C для DDC канала. Возможно, BIOS если считывает правильные данные DDC просто включает на эти пары HDMI сигналы. Почему при таком раскладе просто не поставить слот — не знаю. Видимо были на то свои причины. Но еще раз — это предположение в режиме телепата. Не более того.
Если учесть что автор статьи ведёт речь про W10, то значит MotherBoard надо рассматривать современные.
В абсолютном большинстве ПК по всему миру, в данный момент в MB вставляется только один контроллер — видеокарта.
В ноутбуках вообще всё интегрировано.
Так что между MotherBoard для Intel 80286 и современной, огромная пропасть.
Вы разбираетесь в этой теме гораздо лучше меня, спору нет, но не можете популярно объяснить собеседнику не зарываясь в детали и не отваживая человека от себя.
Да бросьте вы. Все проще. Я и не возьмусь. Это тема не на статью, а на целую книгу. Причем книга эта будет компиляцией из документации, а потому совершенно не интересна. А про не могу объяснить… Могу. В курилке. Или в обеденный перерыв. Заранее предупредив, что часть моментов я сознательно буду сильно упрощать, но если интересно то расскажу в подробностях. Меня, к слову, об этом часто просят. Но формат вольного рассказа у офисной доски мне ближе, чем статья на хабре. До сих пор ни одной написать не смог. Не побороть мне внутреннего перфекциониста.

Я реально рад тому, что статья Ваша пришлась аудитории хабра по вкусу. Впрочем, судя по комментариям, вопросы скорtе не по самой статье, а по работе (в) Microsoft.

Прошу прощения, если по комментариям сложилось впечатление что я на вас наезжаю. Право слово — и в мыслях не было. Все, о чем я хотел попросить — это чуть больше внимания к деталям. Только это и ничего больше.

А где вас можно послушать? Очень интересно.

Приходите к нам работать. Правда у нас зарплаты такие, что разве что опыта набраться да меня послушать. Но это тема другого разговора. Шутка, конечно. Но в каждой шутке только доля шутки — остальное правда.

Питер? Не часто там бываю =(
Но деятельность таки планирую менять. Или даже место работы.

Он самый. Не знаю. Надо бы, конечно, собраться да написать хоть что-то. Но все или мелко, или слишком глобально. Или банально. Не хочется документацию переводить на русский. Тем более что старая присказка из 90-х о том, что документация бывает либо русской либо правильной актуальна и поныне.

А это ничего страшного. Даже банальные, или мелкие для вас вещи, могут быть откровением для кого-то с горящими красными глазами. А в документации на понятном языке, можно давать ссылки на статьи на непонятном, это мотивирует читать правильные и актуальные источники)
Я сам долго и с трудом собираюсь что-то написать, тоже всё кажется обычным, но люди потом читают и даже что-то пишут в ответ, некоторым даже нравится. Но дальше чем развернутый пост вконтактике, или на каком-то форуме раз в год, это редко выходит. Зато через года натыкаться на свои посты и перечитывать достаточно интересно. Так что пишите =)

Ваш комментарий понравился, но резисторы и конденсаторы вполне можно причислить к полупроводникам. Дело в том, что Вы пишите о резисторах и конденсаторах из курса электротехники, а автор говорит о резисторах и конденсаторах из курса интегральной схемотехники, то есть это резисторы и конденсаторы в интегральном исполнении на полупроводниковой подложке. Более подробно можете посмотреть например в пособии Миндеевой Аллы Алексеевны "Микросхемотехника"

Тут есть некоторый тонкий момент. Конечно, отчасти так и есть. Но лишь отчасти.

Если мы спускаемся на уровень компонентов и ключей, то разумно все же пользоваться терминологией именно этого уровня. Более того в разное время были мало того что разные методики формирования полупроводников на кристалле, так еще и пассив не всегда был чисто полупроводниковым. Сейчас не вспомню, но была отличная статья вроде как от Analog Devices и историей микросхемостроения. От сборок до наших дней. Там много было интересного. И про пассив в кристалле, и про MEMS, и про полупроводники. Если вспомню где я ее видел — пристегну ссылку. Довольно давно дело было. Да и здесь, на хабре есть отличные статьи от amartology Они, конечно, не совсем об этом, но разные поколения микросхем в них прекрасно различимы. Всегда приятно его почитать.

На самом деле можно еще ниже. Я удивляю новоиспеченных системщиков рисуя им логические элементы, триггеры, регистры и прочие элементы на электромагнитных реле. Да и тут были статьи про построение компьютера на реле. Потом лампы. Их незаслуженно забыли, но ключи на них крайне простые и интуитивно понятные. Силно проще и понятней тех же транзисторов. Много интересного есть в самых нижних слоях компьютерных систем. Не меньше чем в верхних.
Если интересно, я могу написать о разных видах элементов на кристалле, и активных, и пассивных. Про МЭМСы и оптику придется сначала покопать, а обо всем остальном я и так знаю достаточно хорошо для того, чтобы рассказывать другим людям)

P.S. Спасибо за теплые слова)
Ваши статьи всегда интересно читать. И еще одну я, безусловно, могу только приветствовать.
Ближайшую я уже вычитываю, и она будет во вторник, а вот дальше хочется знать, что интересно аудитории: так будет легче найти темы, чтобы получалось писать более регулярно.
:) это все гугл. Первая ссылка в гугле на semiconductor devices
нормальный пост имхо, как очень сжатая версия учебника — Цифровая схемотехника и архитектура компьютера.
куда копать глубже по каждому уровню направление ясно.

>А можно узнать
основная работа java, для себя stm32, C, rust
Без обид. Статья настолько же похожа на сжатый учебник по цифровой схемотехнике и архитектуре компьютера, насколько книжки по сексуальному воспитанию дошкольников (над которыми смеется сквозь слезы весь интернет) похожа на анатомический атлас. Впрочем, «раз звезды зажигаются — значит это кому-то нужно». Пусть будет.

Про пояснение по работе — спасибо. Однако тема настолько обширна, что накрыть ее одной статьей почти наверняка невозможно. Попытаться можно, но накрыть… Боюсь толковое описание одного только только i8042 (классический контроллер клавиатуры PC) или описание того как именно взаимодействует клавиатура USB (USB device, USB host, HID class и т.д.) с операционной системой займет не меньше, чем вся данная статья. Мне привычнее работать именно с этими слоями. И именно к их описанию у меня вопросы. Я мало что знаю про уровень ядра Windows, а тем паче про прикладной уровень в ней. Потому и стараюсь говорить только о нижнем уровне.

Но ведь и претензии не к сжатости изложения (она-то как раз понятна), а к горке фактических неточностей (которые так и хочется назвать ошибками — оно ближе к истине будет).
НЛО прилетело и опубликовало эту надпись здесь
Ребёнки бывают разные. Существуют математические спецшколы. Один знакомый ребёнок, делая уроки, объяснял бабушке решение. Бабушка, всю жизнь преподававшая вышку в вузе, сказала, что решение неправильно. Мама, заместившая бабушку на кафедре, подмигнула, а когда бабушка ушла сказала, что решение правильное, а бабушка просто с ним не сталкивалась.
НЛО прилетело и опубликовало эту надпись здесь
Я бы посмотрел...


Хм… Старая байка про математиков. Когда он спрашивает у физика «И в чем же математический смысл Вашей физической абстракции»?

На самом деле не путайте «научить восьмилетнего ребенка...» с «объяснить восьмилетнему ребенку...» Научить — безусловно нереально, а вот если не получится объяснить — значит точно что-то не так. И, к слову, названные Вами отрасли вполне объяснимы не только восьмилетнему ребенку, но и даже детсадовцам. Пробуйте. У Вас точно получится.

Понимаю, что не совсем про то, но вспомните как хорошо получалось объяснять сложные вещи простым языком Якову Исидоровичу Перельману. В 8 лет — это второкласник. Который даже таблицу умножения знает.
НЛО прилетело и опубликовало эту надпись здесь
Да ладно. Учу умные машины рисовать и строить картинки как в реальном мире. Видишь вон тот лопух? Для компьютера его форму и изгибы надо описать на языке цифр. А еще о ветре, который это лопух колышет надо тоже как-то объяснить компьютеру. Да так, чтоб результат был прямо как вон там у калитки сейчас.

И что, не похоже на рассказ второкласнику про алебраическую геометрию?
НЛО прилетело и опубликовало эту надпись здесь
Хм… А разве аналитическая геометрия занимается взаимодействием? Она же вроде только описательная (в крайнем случае простейшие перемещения по осям координат)? Далек я от математики… Простите.

Хорошо, допустим не рисовать. Допустим учу компьютер представлять как взаимодействуют тот самый лопух и камень, которым ты в него запустил. Порвется лист или просто погнется.А может его вообще от корня оторвет. Как результат будет зависеть от того камень брошен или бутылка? А если вместо лопуха будет куст розы? Это мы можем что-то взять и проверить. А компьютер вынужден считать. Вот я и учу его правильно считать такие штуки. А еще не только его, но и всех остальных, кто почему-то не может сделать что-то в мире. Вот мы, например, не будем же сажать розу вместо лопуха.

А вообще кто из нас алгебраический геометр? Вы или я? И да, быть при этом немного «лириком» — навык очень полезный.
НЛО прилетело и опубликовало эту надпись здесь
Не знаю. Возможно есть из этого правила исключения. Может по-этому нобелевскую премию по математике и не дают ;-) Но в целом, мне кажется что любой профессионал может обьяснить любому неспециалисту цели своей работы. Методы, пожалуй нет, но цели — точно. А самым образцовым вариантом не специалиста совмещенного с любопытством как раз и являются младшие школьники.

Впрочем, если настаиваете могу согласиться что это наше с Куртом Воннегута частное мнение. Мне сложно судить о том, насколько оно применимо далеко за пределами сферы моих интересов. Хотя, конечно, надеюсь, что применимо.
НЛО прилетело и опубликовало эту надпись здесь
Последнее, к слову, тоже объяснение. Правда желательно чуть более цензурно. И младшими школьниками оно принимается на ура. Отчасти именно этим объясняется популярность шоу типа «Разрушители легенд», «Наука: сделай сам», «Головоломы» и прочие. Так что вполне тянет на объяснение.
Я бы этот пост назвал как-нибудь типа «Крошка веб-разработчик к отцу пришёл...», потому что тут чувствуется явная направленность на программистов, которые страшно далеки от системного программирования.
Ну да, в основном для них — пусть хоть в общих чертах понимают, что к чему в потрохах устроено, а то ведь зачастую клепают на своем уровне так, что плакать хочется. :)
Залейте иллюстрации на хаброхранилище. Потому что вместо КДПВ у Вас голубой квадратик с текстом «bandwidth limit exceeded».
Спасибо, поправил.

Хабра вроде же это автоматически делает.

Замечал, что некоторые статьи из песочницы игнорирует.

Ого, тут открылся укороченный путь до создателей.

Был пост про контекстное меню, которое проводит тысячи запросов к накопителю, — что это за фича?

Ещё где-то было про очистку иконок в трее для завершившихся программ.

Раскраска темной и светлой тем — это какая подсистема делает? Да и в целом последовательность от прикладной программы до «Windowing and Graphic»? Почему при тёмной теме проскакивают «вспышки» заполнения белым пространства для открывающихся окон программ.
Это скорее баг, чем фича )
Всё что видно на экране отрисовывается через DirectX (Windows and Graphics). То что компонует внешний вид окон и элементов управления скорее всего находится в uxthemes.dll.
У меня тоже тёмная тема и только счас обратил внимание на «вспышки». Может и баг, посмотрят.
Вот кстати, нет ли информации о внедрении X-сервера в Windows с связи с внедрением ядра Linux?
Был пост про контекстное меню, которое проводит тысячи запросов к накопителю, — что это за фича?

В комментах к стате в блоге автора поделились ссылкой на ченжлог insider билда 19008.
We’ve done some work to improve the launch speed of the taskbar jump lists.

Но вообще, жаль нет публичного баг-трекера, где можно было бы почитать комментарии разрабочиков Windows о ходе работы над подобными багами. Думаю, многим было бы интересно почитать.
Вот она, причина популярности всяких шоу типа «за стеклом» среди масс — многим интересно посмотреть :)
Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10
Было бы очень любопытно услышать от вас подтверждение или опровержение некоторых мифов связанных с разработкой Windows:
1) Правда ли, что разработка Windows ведётся в закрытой и охраняемой комнате, в которой нет доступа к интернету, и куда запрещено вносить или выносить любые запоминающие устройства?
2) Правда ли, что разработчикам запрещено исправлять баги в коде Windows без санкции высшего руководства? И может ли разработчик самовольно добавить какую-то фичу в Windows, и сказать, мол — глядите что я придумал, или за подобное его ждёт лишь наказание?
3) Правда ли, что разработчикам Windows запрещено в свободное время участвовать в OpenSource проектах, или вести собственные pet-проекты?
4) Некоторые разработчики Windows пишут статьи, или даже книги, в которых рассказывают о внутреннем устройстве Windows. Как они определяют, что можно рассказать, а что нет? Существует какое-то руководство, вроде «Как не выдать коммерческие тайны Microsoft», или просто каждая публикация перед выходом в свет проверяется компетентным сотрудником?
3) Правда ли, что разработчикам Windows запрещено в свободное время участвовать в OpenSource проектах, или вести собственные pet-проекты?

Не думаю, у того же Руссиновича я прямо сейчас вижу на Github форки свободных проектов, в которые (в свои форки) он вносит изменения, а это уже участие (эти изменения апстрим может спокойно взять себе, лицензия позволяет).

В наш открытый проект тоже однажды сотрудник MS прислал пулл-реквест.
1. Над Windows работает больше 10 000 человек, нас если только в ангар усаживать ). У Microsoft больше 200 зданий в Редмонде и окрестностях, в которых работает ~55 000 сотрудников. Доступ к Интернет есть, вносить и выносить можно любые запоминающие устройства.
Некоторые особо секретные компоненты вроде PatchGuard находятся в отдельных репозиториях к которым есть доступ только у ограниченного числа людей и над ними работают в помещениях с ограниченным доступом.
2. Баги фиксятся в порядке приоритета и имеющихся ресурсов, бюрократия в компании небольшая. Можно написать в отдельной ветке свою фичу в качестве эксперимента и потом показать коллегам. Она попадёт в релиз если только:
  • Будет одобрена Program Manager, которые почти все бывшие программисты.
  • Менеджер согласиться выделить ресурсы под реализацию. Менеджеры программисты.
  • Её реализация пройдёт design-review, на котором эксперты в затронутых областях выскажут своё мнение.
  • Она пройдёт code-review, т.е. изменения будут одобрены другими разработчиками. Это обязательное условие для попадания в основную ветку.

Разработка Windows дело медленное и новая фича может занять неделю как минимум и может ввести регрессии, на которые будут жаловаться другие команды, когда это изменение дойдёт до них. Так что такие вещи надо согласовывать и тщательно проверять. В компании раз в год проводятся Хакатоны и каждый месяц есть Day of Learning в которые можно поработать над своими проектами. Интересные проекты с Хакатонов нередко получают поддержку компании и почти сразу уходят в разработку.
3. Microsoft сам активно участвует в OpenSource, не думаю что такой запрет есть.
4. Я думаю они это согласовывают с соответствующим отделом, либо же исходят из имеющихся инструкий о том что есть конфиденциальность. В моём материале ничего конфиденциального нет, всё находится в открытом доступе.
2. да, фичи проходят хоть и маленькую, но «бюрократию», и это правильно.
А Вы слышали жалобы на настройки в панели управления, которые «скачут» по разделам от релиза к релизу? Как так?
Ну это ж не я их двигаю )

А кто? Покажите нам этого, мягко говоря, программиста! =)

Да нет такого. Если в деле замешано боле одного человека — виноватого не найти.
А какая ориентировочно конфигурация компьютеров у программистов?
Вы так здорово всё рассказываете, прямо захотелось Windows 10 поставить и попрограммировать что-то windows специфичное…
(хотя не люблю я WinApi)
Мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до отображения в Notepad.exe.
В контексте этой статьи было бы значительно остросюжетнее выбрать Excel.
Здесь без разницы какое приложение в конечном итоге получает ввод, всё сводится к GetMessage/TranslateMessage. Что происходит внутри Excel после WM_KEYDOWN/UP — отдельный разговор.
Понимаю, когда-то писал собственный драйвер-обработчик клавиатурного ввода. Но тем более интересно рассмотреть данную ситуацию комплексно. Поставщик ОС и офисного приложения один (как, впрочем, и Notepad'а), и кроме него некому разобраться в сложившейся непростой ситуации. Конечно это потребовало бы существенных временных затрат и скорее всего неосуществимо. Хотя автор упомянутой статьи провёл титаническую работу по выявлению её причин и даже разработал патч. По возможности просмотрите, пожалуйста, статью, хотя бы бегло.
Вы, как программист, работающий над ядром ОС и понимающий внутреннюю кухню, могли бы предложить коллегам из другого отдела скорректировать подход к трансляции клавиатурного ввода.
ACPI работает через взаимодействие с bios/efi? Вообще, загруженная и работающая ос взаимодействует как-либо с legacy bios? Если да, можете вкратце описать процесс?

ЗЫ: статья интересная, буду ждать еще.
Таких подробностей мне неизвестно. Если посмотрите на архитектуру Windows в общем виде, я работаю на уровне Executive. Об уровнях ниже у меня примерное представление.
Спасибо. Думаю через пару недель выйдет следующая.
>>ACPI работает через взаимодействие с bios/efi?
Сама постановка вопроса уже вызывает вопросы. Что вы понимаете под «работает», и что означает «взаимодействие»?

Биос передал ОперационнойСистеме сформированное им ACPI (AML) и первое что делает ОС это переключается в режим SCI.
В режиме SCI код биоса «не виден» т.е. не вызываем. Хотя UEFI спецификация теоретически и поддерживает RT драйвера. Но они считаются «опасными» и потому ОС фактически не часто используются.

ОС внимательно AML прочитала и начала/стала ими руководствоваться в способах/методах взаимодействия с текущим HW.
Если ОС «захочется» она может выйти/переключиться из режима SCI в SMI, где снова будет доступен код/функциональность биоса. Что собственно и происходит при засыпании/выключении (S3/S4/S5) ОС, когда некоторым жуткоспецифическим PCIe(и не только) устройствам требуется особые настройки для «засыпания» и которые ОС не умеет «организовывать».

Специфика «legacy» не добавляет ничего особенного на вышеупомянутые процессы.

UPD самому интересны глубины ACPI, и с удовольствием послушал/попытал бы знающих коллег
О, круто, спасибо )
AML сообщение помещается в какую-то область оперативной памяти? После чего создается прерывание (SCI это же режим обработки прерывания), так ОС узнает о сообщении?
снова будет доступен код/функциональность биоса

А как они доступны? Через IO порты? Код биоса грузится в оперативку, на него можно непосредственно передать управление? Что это код приблизительно представляет?
Я бы предложил уточнить, что именно понимается под «кодом BIOS». 16-битный код BIOS реального режима, который использовался ещё во времена MS-DOS через прерывания, современные операционные системы не вызывают и не используют.

Если говорить о UEFI runtime services, то, насколько я смог выяснить, что Windows, что Linux используют только variable service.

Конкретно про ACPI, SCI и SMI очень подробно написано здесь: https:/stackoverflow.com/a/40586456.

Два важных момента:

  1. ACPI — это не исполняемый непосредственно процессором код, а байт-код, для исполнения которого в ядре ОС есть специальная виртуальная машина.
  2. Спецификация ACPI предписывает использовать SCI для «привлечения внимания» ОС устройствами

У вас ссылка битая, и ведёт на сайт https.com (и это ниразу не сайт про HTTPS))

.com добавляет ваш браузер :-)))
в ссылке всего лишь потерян /
stackoverflow.com/a/40586456
Вот давно мучал вопрос и такая возможность спросить! Прошу сильно не пинать. Я не понимаю такую вещь: возьмем исполняемый файл exe после компиляции, например, С-кода. Говорят, получается машинный код, который исполняется процессором. Но фактически программа выполняется через ОС, то есть выполняется как бы некий двоичный код, который понимает ОС, а ОС вызывает уже команды CPU. Получается, что пользователь в машинный кодах может писать и выполнять программы только до загрузки ОС, например, в самом начале включения компа? И бинарные исполняемые файлы это никакие не машинные коды?
Код выполняется на CPU.
У CPU есть инструменты контроля кода для ОС.
Так что ОС не выполняет никакой код. ОС управляет кодом.
Можно написать код который будет работать до загрузки ОС. Но это уже будет не программа для ОС. Это будет фактически ОС.
Скомпилированный exe-файл содержит заголовок, ссылки на загружаемые библиотеки (dll), различные секции, содержащие машинный код, ресурсы программы (текст, иконки, картинки и т.п.) и др. Операционная система при обращении к exe-файлу загружает его в оперативную память и передает управление на точку входа (адрес в одной из секций с кодом), откуда и начинается фактическое выполнение программы. Отвечая на ваш вопрос: скомпилированный файл — это не только машинный код, для начала исполнения этого машинного кода необходимо выполнить ряд подготовительных действий, чем и занимается операционная система.
Это мне понятно. Мне не понятно, что касается машинного кода. Он выполняется минуя ОС или через ОС? Допустим, у нас есть два бинарных файла, один для Linux, другой для Windows. В части машинного кода они будут отличаться или нет? Они же выполняются на одном процессоре, значит, по-идее, он должен быть одинаковый?
Программа взаимодействует с ОС через системные вызовы, например, открыть файл, выделить память и т.д. Эти системные вызовы в разных ОС естественно разные. Остальной код может совпадать, но скорее всего отличается.

Отличаться будут, но скорее из-за разницы компиляторов =) Машинный код для Windows, Linux или любой другой ОС в рамках одной процессорной архитектуры (x64, например) совместим. Проблема скорее в API ОС которые дёргает любая userland-программа — это элементарные вещи вроде открытия файла или даже выделения динамической памяти. Они вот отличаются от ОС к ОС.

Ну и да, как написано в этой же статье, ОС вешает на некоторые "опасные" команды свои прерывания, чтобы не позволить userland программе "залезть куда не следует". Так что да, машинный код выполняется непосредственно на процессоре, но при попытке сделать что-то не то ОС превентивно и насильно его останавливает (потому что повесила прерывания заранее).

Машинный код один и тот же не зависимо от ОС (если мы говорим про x86).
Но сам код в вакууме ничего не может сделать. Надо взаимодействовать с внешним миром.
Ввод данных/Вывод. Это организуется через ОС.
ОС управляет ресурсами ПК. Память, диск, клавиатура, монитор, сеть и т.д.
Windows напрямую не работает с внешними устройствами, это делегируется сторонним компонентам. Для этого есть абстракция. Грубо говоря HAL.dll и драйверы устройств.

Надо исходить из такой мысли.
У нас есть железяка и нам надо решить проблему путем создания ПО.
Для этого надо кроме бизнес логики, еще написать управляющий код в внешними устройствами. Это долго, дорого, один велосипед поставлять с каждой программой.
Поэтому одни люди выпускают ОС, которая занимается управлением всего ПК.
Другие пишут драйверы для конкретных железяк.
А вы пишете программы под ОС. Которые решают бизнес задачу.

Резюмируя.
Машинный код бизнес-логики для Linux и Windows одинаковый. Но машинный код для общения с ОС разный. Потому что API ОС отличаются. Форматы исполняемых файлов различаются.
ОС не выполняет код. ОС сперва загружает с диска в память код, потом передает выполнение кода процессору (через точку входа) и дает коду в вакууме, возможность взаимодействовать с внешним миром.
Большое спасибо, теперь понятно.
Допустим, у нас есть два бинарных файла, один для Linux, другой для Windows.
Код будет одинаковый. Разным будет способ вызова ОС. А вызывать придется часто — user mode это такая песочница, где без помощи ОС можно разве что чисто вычислительные задачи выполнять.
Но фактически программа выполняется через ОС, то
есть выполняется как бы некий двоичный код, который понимает ОС, а ОС
вызывает уже команды CPU.
Все почти так и есть. Только код (точнее его разрешенное в user mode подмножество) может выполняться на CPU сам по себе. Но, например, любое общение с периферийными устройствами (экран, клавиатура, мышь, диски, сеть, все USB устройства и т.д.) требует обращения к особым ячейкам памяти — регистрам. А в user mode это запрещено на аппаратном уровне. Т.е. вы делаете вызовы к ОС в формате который понимает ОС, а уже ОС пишет/читает регистры и делает много чего другого.

Пример действий, требующих вызова ОС:
  • Выделение памяти: да, у вас есть обычно от 4Гб адресного пространства, но это как разреженный массив — реальной памяти там может быть всего мегабайт 10. А попытка обращения за пределы этих 10Мб вызовет исключение — будет вызван код ОС.
  • Чтение/запись файла: нет ни ассемблерных команд, ни доступных вам ячеек в памяти, которые могут вызвать операции чтения или записи. Вы подготавливаете запрос
  • Вывод на экран (текста в консольном приложении, трехмерной графики).
  • Получение сообщений от мыши, клавиатуры, джойстика.
  • Любые операции с потоками (запуск, останов, пауза).
  • Мьютексы, фьютексы, семафоры, критические секции.

Под 32х и 64х-битный режим машинный код будет разным и на одной ОС.

юбое общение с периферийными устройствами (экран, клавиатура, мышь, диски, сеть, все USB устройства и т.д.) требует обращения к особым ячейкам памяти — регистрам


К портам ввода-вывода, а не к регистрам.
Он выполняется минуя ОС или через ОС? Допустим, у нас есть два бинарных файла, один для Linux, другой для Windows. В части машинного кода они будут отличаться или нет?


  1. Всё что программа может сделать сама — делается на процессоре напрямую, минуя ОС. Машинные коды в этой части будут одинаковыми (за исключением разных результатов работы оптимизатора, учитывающего пункт 2)
  2. То, что программа сама сделать не может (вывести на экран, записать на диск, прочитать с клавиатуры) — будет делаться через ОС. Обращение за этим в разных ОС — разное, поэтому машинные коды в этой части будут разными.
Исполняемый файл, будь то exe или elf имеет определённый формат. Помимо кода в этом файле хранятся данные, ресурсы (иконка, свойства файла), какие dll ему нужны, является эта программа 32бит или 64бит, а может это вообще .Net, манифест приложения с указаниями ОС.

Когда вы в explorer.exe, Total Commander кликаете дважды на файл или запускаете его через другое приложение (Visual Studio, CMD) по расширению файла Windows понимает что это программа и начинает инициализацию всех структур данных которые в ядре описывают процесс и его ресурсы, в частности главный поток. Как только все структуры данных для главного потока проинициализированы, Image Loader начинает чтение exe файла, откуда достаётся таблица импорта функций из других dll, размер стека потока, manifest и другие данные. Находится main функция (entrypoint), указатель на неё передаётся параметром в специальную функцию и теперь поток доступен для исполнения на CPU. В какой-то момент планировщик потоков назначает его на исполнение. Из виртуальной памяти процесса выбираются машинные коды (машинные инструкции) в которые была скомпилирована функция main и вся программа для исполнения процессором.

В exe файле упакованы машинные инструкции которые просто отправляются на CPU.
Исполняемые файлы (если речь не идет об интерпретируемом коде) это машинный код, исполняемый код процессора. ОС грузит исполняемый файл в оперативную память, создает для него необходимое окружение, и передает на него управление.
Вы можете написать .exe для Windows в машинных кодах, но придется правильно сформировать заголовок и сегменты (нужные для загрузки файла ОС). Некоторые умельцы это делали на спор из консоли :D
Но фактически программа выполняется через ОС, то есть выполняется как бы некий двоичный код, который понимает ОС, а ОС вызывает уже команды CPU.


Нет.
Фактически выполняет CPU.

Большую часть времени CPU выполняет машинные команды вашей программы напрямую. ОС только определяет для вашей программы некую «песочницу», и настройки этой «песочницы» передает в CPU, после чего они применяются уже аппаратно с минимальным участием ОС.

Управление передается в ОС в частных случаях, например, когда ваша программа обращается к участку виртуальной памяти, что отсутствует физически в оперативной. Тут ОС выполняет подкачку с диска.

Получается, что пользователь в машинный кодах может писать и выполнять программы только до загрузки ОС, например, в самом начале включения компа?

Может (если отключить механизмы защиты загрузки ОС).
Тогда это будет называться операционная система или код загрузки операционной системы, а вовсе не пользовательская программа.

И бинарные исполняемые файлы это никакие не машинные коды?

То, что скомпилированно из С — это это бинарные = исполняемые = машинные для CPU (с нюансами типа специальных заголовков в файле).

То, что скомпилировано из Java — это бинарные != машинные (но это машинные для виртуальной машины Java)
Тогда это будет называться операционная система или код загрузки операционной системы, а вовсе не пользовательская программа.


Необязательно — могут быть программы и чисто утилитарного назначения, которые полагаются только на UEFI runtime services и могут быть запущены из UEFI shell без загрузки какой-либо ОС.
Вот давно мучал вопрос и такая возможность спросить! Прошу сильно не пинать. Я не понимаю такую вещь: возьмем исполняемый файл exe после компиляции, например, С-кода. Говорят, получается машинный код, который исполняется процессором. Но фактически программа выполняется через ОС, то есть выполняется как бы некий двоичный код, который понимает ОС, а ОС вызывает уже команды CPU. Получается, что пользователь в машинный кодах может писать и выполнять программы только до загрузки ОС, например, в самом начале включения компа? И бинарные исполняемые файлы это никакие не машинные коды?
Вот давно мучал вопрос и такая возможность спросить! Прошу сильно не пинать. Я не понимаю такую вещь: возьмем исполняемый файл exe после компиляции, например, С-кода. Говорят, получается машинный код, который исполняется процессором. Но фактически программа выполняется через ОС, то есть выполняется как бы некий двоичный код, который понимает ОС, а ОС вызывает уже команды CPU. Получается, что пользователь в машинный кодах может писать и выполнять программы только до загрузки ОС, например, в самом начале включения компа? И бинарные исполняемые файлы это никакие не машинные коды?
Вот давно мучал вопрос и такая возможность спросить! Прошу сильно не
пинать. Я не понимаю такую вещь: возьмем исполняемый файл exe после
компиляции, например, С-кода. Говорят, получается машинный код, который
исполняется процессором. Но фактически программа выполняется через ОС, то
есть выполняется как бы некий двоичный код, который понимает ОС, а ОС
вызывает уже команды CPU. Получается, что пользователь в машинный кодах
может писать и выполнять программы только до загрузки ОС, например, в самом
начале включения компа? И бинарные исполняемые файлы это никакие не
машинные коды?
Вот давно мучал вопрос и такая возможность спросить! Прошу сильно не
пинать. Я не понимаю такую вещь: возьмем исполняемый файл exe после
компиляции, например, С-кода. Говорят, получается машинный код, который
исполняется процессором. Но фактически программа выполняется через ОС, то
есть выполняется как бы некий двоичный код, который понимает ОС, а ОС
вызывает уже команды CPU. Получается, что пользователь в машинный кодах
может писать и выполнять программы только до загрузки ОС, например, в самом
начале включения компа? И бинарные исполняемые файлы это никакие не
машинные коды?
Возможно вопрос не по теме. Можно ли как-то превратить компьютер под управлением любой Win в «большую Ардюину»? Или как можно «помигать светодиодом» через устройство, воткнутое в PCI? В какую сторону копать?
Что насчёт Windows IoT? Вообще это возможно и через Desktop Windows, посмотрите Windows Drivers Framework.
Можно подключить внешний контроллер. Через кучу интерфейсов usb, pci, pci-ex, lpt, com.
Можно взять готовый SBC с интегрированной arduino. Подобное этой LattePanda
>>устройство, воткнутое в PCI?
Найти «PCI» слот в современных компьютерах не просто, но например PCIе бывает длстаточно часто.
Искать надо в сторону «pcie io expander», например GW16113 IO Mini-PCIe Expansion Card или ему подобное
PCI — довольно сложная шина; использовать её для того, чтобы «помигать светодиодом» — это, как говорится, из пушки по воробьям.

Сейчас проще всего будет взять PCI-Express LPT контроллер (обычно есть в продаже в интернет-магазинах деталей для ЧПУ станков и 3Д принтеров) с опторазвязкой параллельного порта — так риск сжечь что-нибудь в самом компьютере будет минимальным.
Сумбурная статья.
Мне лично всё понятно, а значит бесполезно.
Для студента совсем не понятно. Значит тоже бесполезно.
Почему? Статья «пробегается по верхам», иногда углубляясь в ненужные детали.
А у ОС Windows большие накладные расходы по сравнению с голым железом? Я имею ввиду, что взять, например, игру (чисто гипотетически) на Play Station 1 и эту же игру на этом же железе с OC Windows (понятно, что не встанет), то как изменится быстродействие игры?
PlayStation 1 — это не голое железо, она имеют свою ОС, которая так же имеет накладные расходы. Одна и та же игра на разных платформах это разные программы. Логика программы та же, но детали платформ (Win и PS1) будут разные. Если это вопрос что быстрее Win или PS1, то я не знаю, это зависит от конкретной задачи.
Если вопрос что быстрее — аналоговая или цифровая обработка, то конечно аналоговая.
Скажите, пожалуйста, а вин10 собирает данные о том какие процессы стартовали в какое время и кем? И есть ли какое-то API доступа к этим данным?
Это собирается на нескольких уровнях, для разных целей.
Конкретно телеметрия собирает эти данные. Вроде бы общедоступного API к телеметрии нет.
Другое дело что еще с Windows NT 4, можно собирать такие данные. Но это не телеметрия как в Windows 10.
Я таких подробностей не знаю. Подобные API навряд ли есть, потому что Microsoft values customer privacy (Микрософт уважает приватность данных пользователей). Этому уделяется большое внимание.

Есть в Windows такой системный сервис SuperFetch, который собирает статистику запущенных программ чтобы согласно ней пред-загрузить в оперативку данные и бинарники которые эта конкретная программа использует. Это делается для ускорения её загрузки. Если в этот момент внезапно понадобится оперативка, то SuperFetch её быстро освободит от предзагруженных данных.
НЛО прилетело и опубликовало эту надпись здесь
Андрей, спасибо за статью. Есть ли у Вас какие-либо связи с разработчиками ядерной части звуковой подсистемы (Kernel Streaming)? Уже много лет есть стойкое впечатление, что эта часть стабильно деградирует — в некогда стройной и достаточно эффективной модели с каждой версией Windows создается все больше откровенного хаоса. Очень похоже на лихорадочное навешивание заплаток, без особого понимания того, как это все должно работать. В компании остались люди, которые еще помнят, как это все проектировалось на стыке 90-х и 2000-х?
Пожалуйста. Если я буду знать суть проблемы то смогу найти того кто сейчас этим занимается. В компании много людей которые по 20-25 лет уже работают там.
Например, в Vista добавили хороший протокол RT Audio с кольцевым буфером (KSPROPERTY_RTAUDIO_BUFFER), но при этом напрочь забыли дать клиенту возможность сообщать о том, что он записал в буфер или прочитал из него. В итоге клиент может определить, когда устройство или драйвер не успевают своевременно обрабатывать данные в буфере, а драйвер то же самое в отношении клиента определить не может. В потоке идут щелчки, но и драйвер, и клиент считают, что все в порядке.

В Windows 7 добавили уведомление событиями. Но вместо того, чтобы просто устанавливать режим уведомления, зачем-то продублировали запрос создания буфера (KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION). Теперь драйверу приходится обрабатывать практически идентичные запросы по разным путям. При этом количество точек уведомления зачем-то жестко зафиксировали в количестве двух штук. Точнее, это количество формально передается параметром, но документация даже не предполагает возможности изменения в будущем, поэтому все тупо используют константу-двойку.

В Windows 10 наконец-то сделали для клиента возможность сообщать драйверу, сколько данных записано/прочитано, но зачем-то оформили это практически в отдельный протокол (Packet Streaming).

Многие свойства устройства/драйвера, традиционно передаваемые через Property Requests, что позволяло их динамически менять, теперь все чаще требуют выставлять в Property Store. Звуковая подсистема полноценно опрашивает эти свойства только после первичной установки драйвера, создавая у себя зеркало. При удалении устройства/драйвера это зеркало не очищается, и при повторной установке большинство свойств берется оттуда. Это сильно усложняет создание гибко конфигурируемых звуковых устройств (например, я недавно делал драйвер для звукового процессора, связь с которым идет по сети). Чтобы банально изменить поддерживаемые форматы, драйверу приходится хакерски лезть в зеркало свойств, перезапускать звуковые службы, и даже это не гарантирует успешного результата.
Как отключить выскакивающее на правом краю в середине главного экрана выбор языков переключения? Особенно если нажать и Ctrl-Shift и удерживая Ctrl переключить Shift языки, оставить держать нажатой обе кнопки и отпустить первым Ctrl а уже потом Shift — то это окошко вообще остается висеть на экране пока однократно на Ctrl не нажмешь.
Хотелось бы чтобы этого окна вообще не было.

Один пользователь на работе вынес мозг, что ему это окно мешает.

PS В настройках копался очень долго, перепробовал массу вариантов — окошко не перестает появляться.
Никак! Я столкнулся с этим же поведением и в результате чтения майкрософтовских форумов по этой теме, представитель майкрософта сказал что это зашито в ядро и не отключается. Вот так вот телеметрия помогает!
Топикстартер тоже что-то не отвечает.
Согласовывает с первым отделом MS линию поведения )
Вообще спасибо ТС, нечасты, к сожалению, подобные посты от сотрудников некоторых вендоров.
ТС не смог справиться с таким большим потоком вопросов ) Я не на все из них знаю ответы и сейчас сильно загружен для того чтобы разобраться в них.
Я себе пунтосвитчер поставил для переключения по правому контролу, но того сотрудника это решение не устраивает.
Скажите, а правильно ли я понял из FIGURE 2-1 что оконная подсистема работает в режиме ядра.
Не добавляет ли переключение Kernel <-> User space оверхед по времени?

И ещё, уважаемый Андрей, если вы знаете кого-то из разработки GUI — хочу передать небольшую визуальную багу:
Открываете Visual Studio (2017, 2019) -> Создаёте новый оконный проект из шаблона -> В функции CreateWindow/CreateWindowEx меняете параметры которые отвечают за x- и y-координаты окна на 0, 0 -> Запускаете.
На Window 7, 8 окно, как и ожидалось из описания CreateWindow на сайте Майкрософт, находится в левом верхнем углу экрана. А вот на Windows 10 справа будет зазор в 7 пикселей. Я уже писал о этой проблеме в сообществе Майкрософт
Да, это не критичный визуальный баг, но глаза режет. Проверял на разных ПК с Windows 10 (Pro Insider Preview и просто Pro версия) — результат одинаковый
Ваше окно всё ещё находится в координатах (0,0). То, что вам кажется зазором — это рамка шириной 8 пикселей (Spy++ не даст соврать) в которой 7 пикселей — полупрозрачная тень.

Можно ещё обратить внимание, что максимизированное на основном дисплее окно размещается в отрицательных координатах (-8,-8)

Кстати, это ничем не отличается от поведения в Win7. Просто тогда рамка, обслуживаемая dwm, была «стеклянной» и хорошо заметной.

Так что «не баг, а фича» (ц)
Спасибо за раскрытие этой тайны. Не думал что так просто раскрывается.
Такая-себе фича. Тень же не должна быть частью окна/рамки…
Эх, теперь делать проверку на Win10 в коде…
Кстати, почему (-8, -8), если Y нормально отрабатывает. Там верхний угол — это 0 и окно никуда не уезжает
Всё дальнейшее — только мои предположения, если выходит за пределы простой констатации фактов:

— Дизайнерам захотелось плоский интерфейс с тонкими рамочками вместо толстого стекла из Висты.
— За однопиксельную рамку тяжело схватить мышкой, если надо растянуть окно.
— Тень сделали частично внутри рамки с трёх сторон (кроме верха) — за неё можно схватить мышкой для растягивания.
— Сверху для растягивания можно хватать в пределах верхней полоски заголовка той же ширины (8px). Она непрозрачна, т.е. сверху тени внутри рамки нет.
— При максимизации заголовок окна становится визуально уже.
— У окна есть ещё тень от dwm за пределами рамки. За неё хватать уже нельзя, и её видимость меняется в зависимости от активности окна.

Всё описанное было и в Висте/Win7, только выглядело по-другому.

P.S. Зачем делать проверку на Win10, если можно просто максимизировать окно?
P.S. Зачем делать проверку на Win10, если можно просто максимизировать окно?

Я хочу управлять положением и размерами окна. Т.е. MoweWindow/SetWindowPos. Так вот, в них установка (0, 0) тоже подвержена этому глюку. И чисто с визуальной стороны это выглядит очень очень так себе… А окно не обязательно должно быть максимизировано.
Ожидал увидеть кусок кода на асме типа CD 16 с вызовом прерывания…
Как в старинной книжке про архитектуру IBM PC.
А увидел статью из книжки для детей в 9 классе, первый раз пришедших в кабинет информатики.
Странные статьи для хабра…
Я не хочу сильно погружаться в детали. Для общего понимания механизма прерывания этого достаточно.

подсказать, сколько правильно будет поставить виртуальную память в вин10(просто у меня 4гб оперативки а ее оч мало)узнал про Вирт.память, возможно вы знаете посоветуйте пожалуйста

Правильно будет поставить хотя бы 8 ГБ, а лучше 16. Или постигать дзен с четырьмя.
Причём ещё весной вполне хватало 4 ГБ с отключённым свап-файлом для офисных приложений и нескольких закладок в браузере.
НЛО прилетело и опубликовало эту надпись здесь
Хороший вопрос, кстати. Особенно сейчас, когда в 10 добавили все эти новые графические фичи, win32k is the new win32k.
Но я сильно подозреваю, что это такая масштабная и дорогая задача, что проще заложить риски. С учетом того, что в 10 местами все еще работает код года эдак 93го…
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Обычно это драйвер
Но и кривой ACPI тоже бывает. У меня на ноутбуке Dell G3 часто затыкается звук и Latency Monitor показывает неприличные задержки из-за acpi.sys.
Я бы сказал, что бывают некривые ACPI/acpi.sys, поскольку на большинстве ноутбуков затыки со звуком и прочим реальным временем типичны. Казалось бы, ноутбуки уже давно примелькались на конференциях, концертах и подобных мероприятиях, но разработчики упорно продолжают считать ноутбук устройством для серфинга. В народе прочно устоялось мнение, что на мероприятиях реального времени можно полагаться только на макбуки.
*На макбуки с windows 10 или linux
Насчет линукса не знаю — в основном полагаются на макось. На Windows любой версии полагаться можно только после жесточайшего тюнинга, который зачастую предполагает отказ от USB, WiFi, а то и всей сети в целом.
Мне нужны драйвера для nvidia turing, а Nvidia отказалась их делать и deprecated CUDA для macOS, так что увы(((
отказ от USB, WiFi, а то и всей сети в целом.

Apple делает нормальные драйвера для windows 10, не преувеличивайте, и как я сказал, мне нужна thunderbolt 3 карточка GPU для моих нужд))
Я одного не понял: при чем здесь Ваши нужды? :)
Попробуйте, в качестве эксперимента, если это возможно в UEFI временно запретить все USB контроллеры и оценить задержки снова. Хотя, скорее всего, как минимум один порт не отключаем.
Вы ведь понимали, что делая эдакий «каминг аут» вы просто взорвёте Хабр? Что пойдёт поток вопросов не по теме? Порвётесь ведь на все вопросы отвечать (что думаете про РеактОС? Не заглядывали ли в код или не подсказывали им чего-нибудь? :)
Посмотрим, насколько вас хватит.
Фи, даже я взорвал habr круче чем он)) Но если серьезно, я могу придумать 10-20 проблем с windows 10, которые нужно решить. Ха-ха! Например, realtek драйвера с какого-то перепугу используют одельное приложение, чтобы переключиться с USB2.0 на USB3.0. Вопрос, с фига ли? И понятно, что это портит подключение к сети при загрузке, потому что сервис, который грузит это приложение — грузится и переподключает (sic!) адаптер wifi при загрузке. /facepalm
с фига ли?

Насколько я знаю, USB 3.0 и выше некисло фонит в эфир при работе, и забивает слабые сигналы сетей WLAN.
Поэтому при сканировании USB-адаптерами эфира они переключают USB в режим 2.0, а при подключении к сети — обратно в режим 3.0, если возможно (а если не возможно — продолжает работу в режиме 2.0).

Ага, ага. Вот только драйвер в linux так не делает, он сразу подключает к usb 3.0. И сюрприз, качество сигнала в USB 3.0 лучше, потому что там тогда 900 мА ограничение, а не 500 мА. И чтоб вы понимали, я немножко помог в написание драйвера, так что знаю, о чем говорю, именно я нашел баг с 900 мА… Так, ладно))
Глаза боятся, а руки чешутся…
Я один ожидал прочесть в этой статье нечто про микросхему считывающую нажатие клавиши, формирование прерывания BIOS INT 09H, MS DOS 01H, уровни абстракции и эволюцию этого в ОС от Майкрософт? )
Кроме того что автор сказал где работает.
Он добавил гору комментариев, из-за не академически точно сформулированных высказываний.
Если бы он прослеживал путь от нажатия кнопки на клавиатуре до появления символа в облачном Word который работает в браузере. И написал бы например «хаб» вместо «свитч», или что маршрут на 0.0.0.0 может быть только один. К взрыву комментариев добавились бы сетевеки :)

А можно получить исходники Win10, как это было с Win2k? )))

Я извиняюсь, но статья — чудовищная мешанина кусков совершенно разных тем, перемежающихся очень, скажем так, странными утверждениями вроде «Процессор это компьютер в компьютере, более мощный и продвинутый микроконтроллер которому не нужна прошивка» или «Цифровые схемы работают с данными на уровне нулей и единиц, а аналоговые полагаются на эксплуатирование законов физики» (а цифровые что, на ритуальную магию полагаются?)
Человек, хорошо разбирающийся в аппаратной архитектуре и архитектуре ОС, не найдёт здесь ничего нового, но будет плеваться от половины текста, а неопытный, по-моему, не поймёт ничего. Мне доводилось делать такие вещи, как дизассемблирование компонентов ядра Windows, но фраза «Dll — предоставляет модель расширения функционала программы через плагины, а так же механизм для реализации читалки экрана через ловушки клавиатуры» ставит меня в тупик.

Отвратительно. Черти что и сбоку бантик. Автор перескакивает с уровня ядра на уровень регистров процессора, хотя в ядре ручное управление регистрами — мягко говоря, редкость. Какая-то непонятная вставка про микропроцессоры, в картинке про которую пять раз повторён avr, но ни разу stm. Но это не так страшно, потому что на материнской плате в общем случае нет микропроцессоров общего назначения.


В общем, автор, судя по всему, замахнулся на слишком большой кусок: может быть, он хорошо знает то, что находится внутри системной части винды, но "путь от нажатия кнопки до отображения символа" несколько… шире. К тому же, явное неумение строить связный текст вносит свой вклад в общую сумятицу.

Пусть лучше пишет, чем не пишет. Пользу он уже принёс одним только созданием этой дискуссии.

Я не стал пихать всё в одну статью для удобства чтения и восприятия. В следующей части станет понятно что к чему.
Пользуясь случаем, раз тут так охотно отвечают на вопросы, позвольте спросить, пару раз пробовал ставить Windows 10 взамен 7, но пришлось откатывать из-за неработоспособности любых приложений для управления через жесты мыши (типа Just Gestures, StrokeIt, etc). Точнее часть из них работает, почти нормально, но с какими-то странными глюками, которых нет на 7, из-за чего пользоваться невозможно. Даже не знаю как вкратце описать, проще попробовать, позакрывать окна, посворачивать их, скопировать/вставить через жесты мышкой, то срабатывает, то не срабатывает, то срабатывает, но не в то окно. Just Gestures кстати вообще не работает в Win 10, в отличие от 7, так же не должно быть наверное, чтобы прикладные программы ломались при апгрейде ОС? Это даже не драйвер, не настолько там низкоуровневое взаимодействие. Может какой-то режим совместимости сделать?
Вообщем не суть, может быть кто-то успешно пользуется такими программами в Windows 10 и проблема где-то у меня, а не системная с Windows 10?
НЛО прилетело и опубликовало эту надпись здесь
Вы забыли приставку MAX. К обычным 737 вроде бы претензий не было (или я ошибаюсь?).
К коду 737MAX претензий тоже нет. Fregl просто слышал звон.
Исправил неточности в статье — про микроконтроллеры и картинку с полупроводниками.

Публикации

Истории