Страницы

Поиск по вопросам

Показаны сообщения с ярлыком железо. Показать все сообщения
Показаны сообщения с ярлыком железо. Показать все сообщения

суббота, 11 апреля 2020 г.

Синие перемычки на материнской плате, для чего они? [закрыт]

#железо

                            
             
                
                    
                        
                            Закрыт. Этот вопрос не по теме. Ответы на него в данный
момент не принимаются.
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            Хотите улучшить этот вопрос? Переформулируйте вопрос,
чтобы он соответствовал тематике «Stack Overflow на русском».
                        
                        Закрыт 4 года назад.
                    
                
        

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


    


Ответы

Ответ 1



На изображении: Левый - Clear RTC, сбрасывает настройки CMOS (BIOS). Правый - переключает системный блок в режим +5VSB(Standby) в котором питание на шину 5В подаётся даже когда компьютер выключен (для функций Wake-on-Mouse/Keyboard/Lan) В документации к конкретной материнской плате будет расписан функционал каждого положения для джампера.

Ответ 2



Это перемычки (буквальный перевод слова jumper, есть хардварный сленг - "джампер"). Используются для различных настроек, но самый популярный джампер сейчас это, пожалуй, сброс CMOS (требуется если нет возможности войти в BIOS, например при неудачном разгоне процессора). Ранее перемычки были более распространены, но сейчас большинство настроек ушло в BIOS и управляется программно, что несравненно удобнее.

воскресенье, 8 марта 2020 г.

Какое преимущество кластера перед одним сервером?

#база_данных #сервер #железо #кластер #кластеризация


Примерные данные по кластеру:
1 сервер - Балансировщик приложении
2 сервера - Сервер приложении
2 сервера - Сервер БД
1 сервер - Сервер поиска и хранении

Детальной разницы и преимущества не знаю, поэтому хотелось бы узнать у более компететных
участников форума.

Что можно почитать на эту тему? Куда смотреть? 
    


Ответы

Ответ 1



Тема слишком обширная. Много чего можно посоветовать. Но банально. Есть у вас 1 сервер БД, к примеру. Что будет, если он упадёт? Всё плохо. Во-первых, вы данные потеряете (по крайней мере данные с прошлого бекапа). Во-вторых, ваши сервисы остальные работать не смогут без базы. Теперь же, предположим, у вас 3 ноды базы в кластере и настроена репликация (то есть, дублирование данных). Если 1 нода выйдет из строя, то кластер продолжит работу. Если у вас 5 нод, то кластер может выдержать потерю 2 нод. Это, если кратно. Естественно, всё зависит от архитектуру СУБД. Что хорошо для riak, то не очень для mongodb и т.п. Но в целом кластеризация помогает сохранить работоспособность даже при потере каких-то узлов в системе. Плюс, это даёт распределение нагрузки, если хорошо всё связать с loadbalancer'ом. В плане репликации в целом там обычно две модели: master-master. Сложно реализуемый вариант. Обычно при этом попираются принципы ACID. У нас, к примеру, использует RethinkDB, там как раз master-master. Как даунсайд - отсутствие транзакций и т.п. плюшек, которые обычно есть в реляционных базах. В таком варианте все ноды могут писать данные, от этого все проблемы. master-slave. Проще реализовать. Пишет только master и пушит в слейвы. Со слейвов можно только читать. Отсюда простота реализации. Если выходит из строя мастер, то обычно слейвы голосует за то, кто будет новым мастером. Если всё удачно, то слейв становится мастером, а все остальные слейвы переключаются на него. Книги могу посоветовать в большей степени только на английском: Highscalability (: NoSQL Guide от Мартина Фаулера. Best practices по архитектуре в облаке от Amazon. Ещё советую читать статьи про конкретные реализации (по конкретной СУБД). Поможет этот сайт. Как уже сказал, лучше читать статьи про конкретные реализации: всё про репликацию в MaridDB, репликация и кластеризация в Postres. Про Scalability.

среда, 26 февраля 2020 г.

Что такое виртуальный процессор?

#терминология #железо #виртуальная_машина #процессор



Где то утверждают что это по сути и есть ядро (или поток ядра). И например при технологии
Hyper-Threading система определяет физическое ядро как два виртуальных.
Кто то утверждает что виртуальный процессор может эмулироватся программно молл виртуальный
процессор можно сравнить с операционной системой. Поток по отношению к нему выступает
как процесс, подобно тому, как сам виртуальный процессор является процессом с точки
зрения операционной системы.
Еще говорят что при создании виртуальной машины можно для нее выделять виртуальные
процессоры 


ТАК ЧТО ТАКОЕ ВИРТУАЛЬНЫЙ ПРОЦЕССОР
    


Ответы

Ответ 1



Это не термин, а обычное словосочетание. Виртуальный процессор - это нечто, что выглядит как работоспособный процессор, но процессором не является. Точное значение зависит от контекста. Так, когда-то давно никто не слышал про многоядерные процессоры, а когда было нужно - ставили несколько процессоров. И когда многоядерные процессоры появились - то в целях обратной совместимости каждое ядро стало "представляться" операционной системе как отдельный процессор. То есть у вас на материнке стоит один проц - а ОС пишет, что их два. Никакого второго процессора реально не существует, он - виртуальный. Точнее, оба ядра называют виртуальными процессорами, потому что они одинаковые. Существуют эмуляторы процессоров. Например, вы можете скачать эмулятор NES и поиграть на нем в старые игры. Эти игры написаны для процессора Ricoh 2A03, но играть в них вы будете на процессоре семейства Intel. Однако большинство игр подмены не заметят, поскольку эмулятор реализует все нужные инструкции. В этом смысле эмулятор NES содержит в себе виртуальный процессор. Внутри виртуальной машины работает реальная ОС, называемая "гостевой". Эта ОС, точно так же, как и при работе вне виртуальной машины, пытается работать с "железом". Но у виртуальной машины все "железо" - виртуальное (за редкими исключениями): если вы, к примеру, зайдёте в Диспетчер устройств на виртуалке с виндой - вы не увидите ничего похожего на реальные устройства. Процессоры у виртуальной машины - тоже виртуальные.

пятница, 14 февраля 2020 г.

Как изменяется работоспособность компьютерного железа от времени?

#железо


Предположим у меня есть ноутбук от 2008 года, на котором я работал, но который не
разу не подвергался внешнему воздействию типа кофе, удара, прямых солнечных лучей и
так далее. Зато ноутбук использовался для установки многочисленного пиратского софта
и был перегружен программами. 

Я удалил все программы, переустановил ОС и всё вроде работает. Теперь предположим,
что точно такой же ноутбук у меня лежал с 2008 года в кладовке, на котором никто не
работал вообще. Обзовём ноутбук который эксплуатировался как Комп1, а его близнец который
не эксплуатировался Комп2.

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

Вопрос: Пусть мы установим и на Комп1 и на Комп2 много-много одинакового ПО. Они
будут работать одинаково или Комп1 всё же хуже? Вылетают ли биты в микросхеме во время
эксплуатации? (внешние факторы не учитываем, только работа программ). 

Очень интересны графики долговечности, если всё же падает работоспособность и ссылки
на исследования. 
    


Ответы

Ответ 1



Один мой знакомый говорил, что со временем, на уровне железа вылетают биты, отчего производительность компа падает, даже после переустановки ОС и всех программ. Биты не гнутся, не ржавеют, не плесневеют, не стачиваются. Или это такой толстый троллинг? Теперь предположим, что точно такой же ноутбук у меня лежал с 2008 года в кладовке, на котором никто не работал вообще. Конечно, если комп не включался, то у него ресурс не использовался и теоретически он проработает дольше. Ну там, к примеру, у невключавшегося компа матрица может быть поярче. Но в целом, от количества ранее установленных программ производительность компов не изменяется. Ресурс вырабатывается, это да. Например, современные винчестеры рассчитаны на примерно 100000 часов работы. Это примерно 10 лет непрерывной работы. После этого вероятность отказа винчестера резко растет. Но пока комп не отказал (то есть пока у него винчестер не сломался, ОЗУ не сгорело, экран или подсветка экрана не перегорели, источник питания цел и все остальные подсистемы целы), то никакая предыдущая эксплуатация не снижает производительности компа. Достаточно переставить ОС и программы и все как новое. Пусть мы установим и на Комп1 и на Комп2 много-много одинакового ПО. Они будут работать одинаково или Комп1 всё же хуже? Одинаково. Вылетают ли биты в микросхеме во время эксплуатации? (внешние факторы не учитываем, только работа программ). Из-за работы программ производительность компов не падает. Но ресурс работы у компов есть и он связан со старением компонентов. И при эксплуатации во включенном состоянии старение компонентов (в общем случае) происходит быстрее. Старение некоторых частей (более энергетически нагруженных) происходит быстрее, чем старение других частей (менее энергетически нагруженных). Например, относительно быстрее стареют элементы блока питания, так как все энергия идет через них. Но это тоже зависит от компа. Можно сделать дефорсированную схему в которой элементы работают с недогрузкой, и такая схема проработает дольше обычной (но и будет немного дороже). Очень интересны графики долговечности, если всё же падает работоспособность и ссылки на исследования. В общем-то стеклотекстолит, из которого делают платы современной электроники, это пластик. И, как всякий пластик, на воздухе он деградирует со временем (медленно окисляется). Так что через 50 лет электрические параметры стеклотекстолита и вообще любого пластика меняются. А через 100-200 лет любой пластик вообще рассыпается в пыль. Но до этого времени ничего с ним не будет. UPD1: но лучше если вы добавите ссылки на авторитетные истончики (как в википедии), чтобы все могли информацию полученную от вас оперативно проверить. Боюсь, что таких ссылок дать невозможно. Никто так не ставит вопрос: "портятся ли компьютеры от интенсивной пересылки байтов". Просто потому, что от интенсивной пересылки байтов компьютеры не портятся. Компьютеры портятся от физических процессов старения материалов, от высыхания электролитических конденсаторов, от бросков питания в сети в конце концов. Если Вас интересует анализ физических причин надежности вычислительной техники, то это надо гуглить. Думаю, что такие работы есть отдельно по винчестерам, отдельно по материалам плат, отдельно по ЖК матрицам, отдельно по всем другим компонентам компьютера. Но это толстые специализированные работы, не предназначенные для популярного изложения. Скорее всего это внутрифирменные данные соответствующих производителей. Один мой знакомый говорил, что со временем, на уровне железа вылетают биты, отчего производительность компа падает, даже после переустановки ОС и всех программ. Другой мой знакомый говорил, что пятьдесят лет спустя комп работает также хорошо как и после продажи, и первый макинтош можно до сих пор юзать. И не какие биты нигде не вылетают. Основной смысл моего ответа был в том, что первый Ваш знакомый был не прав, а второй был прав в том смысле, что если физически подсистемы компьютера исправны, то компьютер будет работать и через 50 лет так же, как он работал когда был новый. Конечно, тут проскакивала информация что Эппл (к примеру) был пойман на намеренном программном снижении тактовой частоты своих старых телефонов. Если этот факт имеет место, то для неискушенного пользователя это будет выглядеть как "раньше эта игрушка у меня летала, а теперь тормозит, значит со временем биты хуже пересылаются". Но это не старение битов, а намеренный маркетинговый прием с целью стимулировать покупки новых моделей.

Ответ 2



Ответ простой и сложный одновременно, но в кратце разница конечно будет, никакие биты никуда не вылетают, конкретно в ноутбуках чаще всего забиваются пылью системы охлаждения из-за чего процессор включает тротлинг (т.е. искуственно замедляет себя чтобы снизить таким образом тепловыделение) и это выглядит как медленая работа, так-же HDD со временем начинают 'сыпатся' , т.е. там появляются повреждённые секторы которые сам HDD переназначает на имеющеися в запасе, но запас не вечен , к тому-же если сектор будет из запаса то это увеличит время получения данных. У нас есть сервера которые с 2008 года работают почти не выключаясь и никаких особых проблем с ними нету.

воскресенье, 9 февраля 2020 г.

Вопрос об устройстве ОЗУ ЭВМ

#железо #ram


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

Все мы знаем, что ОЗУ состоит из некоторой совокупности регистров, а те, в свою очередь,
представляют собой набор триггеров (простейшее электронное устройство, которое может
принимать одно из двух устойчивых состояний). И тут сразу же возникает вопрос. Поскольку
оперативная память является строго энергозависимой, то при каждом включении компьютера
триггеры будут каждый раз принимать какое-то состояние, которое предусмотрено по умолчанию.
Какое это состояние?

Если переходить от конкретного к абстрактному, то мы можем представить себе любой
триггер в виде обычного двоичного разряда. Каждое из устойчивых состояний мы можем
соотнести с еденицей или нулём. Так вот, какое положение понимают тригерры изначально?
Они все обнуляются? Или же наоборот принимают значение 1? А может быть и вовсе всё
происходит по какому-то псевдослучайному алгоритму? Очень хотелось бы знать! 
    


Ответы

Ответ 1



Иногда делают отдельную линию сброса для всех триггеров. И, немного погодя после включения питания, на эту линию подают сигнал, и все триггеры сбрасываются в ноль. А иногда так не делают, и тогда все ОЗУ действительно заполняется случайными значениями. Для динамического ОЗУ, которое стоит сейчас в персоналках так и есть, то есть аппаратного сброса ОЗУ в ПК не предусмотрено. Но в персоналках после старта процессор программно очищает ОЗУ (чаще всего заполняет нулями). Для отладки ОЗУ иногда заполняется каким-то значением, отличным от нуля, чтобы отличить места, куда прошла запись. Но это уже забота конкретного отладчика. UPD1: В общем, откуда берётся значение по умолчанию? Срабатывает обычное присваивание значения по умолчанию нашей переменной? Или же просто берётся участок памяти с изначально обнулёнными двоичными значениями и этот ноль, который идёт вроде бы "по умолчанию", берётся именно отсюда? Не знаю как в Java, а в языке С/C++ статические переменные могут иметь и ненулевое значение. И в языке С/C++ статические переменные инициализируются либо при загрузке программы путем прописывания инициализирующих значений в специальный раздел программы. Либо (в случае старта программы из ROM) специальная инициализирующая подпрограмма (которая запускается до main) переносит из ROM в RAM инициализирующие значения для статических переменных. К тому же в языке С++ статической переменной может быть объект класса с нетривиальным конструктором, который (например) может захватывать память в куче. И все эти конструкторы запускаются операционной системой до main. И они инициализируют свои области памяти явно ненулевыми значениями. То есть в языке С/C++ не полагаются на изначальное обнуление части памяти, а процессор принудительно инициализирует память при загрузке программы. Кроме того надо понимать, что физическая память в ПК общего назначения используется многократно разными программами. Например, Вы поработали с браузером, а потом запустили транслятор Visual Studio. Так как после работы браузера в RAM лежат какие-то числа, перед запуском Visual Studio RAM надо снова очистить. То есть если даже в начале работы компьютера память была инициализирована нулями, то в процессе работы память надо многократно переинициализировать для работы других программ. UPD2: Правильно ли я понимаю, что во всех современных ЭВМ используется именно DRAM? В персоналках и мобильниках в качестве RAM используется DRAM. В компьютерах для специальных применений в качестве RAM может использоваться и статическая память. Она и быстрее и меньше потребляет мощности. Вплоть до того, что можно парковать компьютер и RAM будет сохранять все значения, питаясь от батарейки. И при включении питания работа начнется не с начальной загрузки, а с места останова. Например, многие системы защит в разных отраслях должны быть готовы к работе практически мгновенно после подачи питания. Тогда там применяют статическую память в качестве RAM. UPD3: К примеру, у нас имеется следующая запись: public static int var = 5; Что именно здесь происходит? Я слышал такое интересное мнение, что сначала полю var должно быть присвоено значение по умолчанию, то бишь 0, а затем уже будет присвоено значение 5, непосредственно как результат операции присваивания. Это происходит по той причине, что ноль присваивается ещё на этапе объявления переменной, а присваивание через инициализатор идёт следующей операцией. А как оно происходит на самом деле? Есть ли какое-то мнение по данному вопросу? Если речь идет о персоналках и конкретно о системе Windows и трансляторе Visual Studio, то там при загрузке программы в память отведенную под var будет положено значение 5. Возможно, что перед загрузкой программы RAM дополнительно обнуляется системой, но для пользователя это недоступно и не имеет значения. Важно только то, что когда управление получает пользовательский main в переменной var лежит значение 5. Чтобы разобраться в этом вопросе советую Вам написать простую программу на языке Си типа: int var = 5; int main(){ return var+1; } После этого оттранслировать эту программу на Вашем любимом трансляторе с ключом, который выводит ассемблерный листинг. И поглядеть, какие секции ассемблера формирует транслятор для статических переменных. UPD4: В то же время, я получил ответ о том, что триггеры в структуре динамической памяти с произвольным доступом не используются. В этом случае возникает вполне резонный вопрос. Где же тогда физически хранится вся информация? Как реализована бинарная концепция на физическом уровне в данном случае? Благодарю! Конденсаторы с динамическим обновлением ведут себя как триггеры. Так что Вы вполне можете считать, что DRAM построена на триггерах. UPD5: @pepsicoca1 Да, но ведь конденсаторы с динамическим обновлением хоть и ведут себя аналогичным с триггерами образом, но это всё равно не одно и то же. Я так понимаю, что триггеры, как таковые, используется непосредственно в SRAM? Я прав? – Lexoid 59 минут назад Физически процессы в "честном" триггере и в конденсаторе с динамическим обновлением, конечно, разные. Но для программиста и DRAM и SRAM выглядят и ведут себя одинаково. Поэтому можно считать, что в DRAM организованы триггеры на конденсаторах, которые периодически перезаписываются незаметно для программиста. В конце концов триггер должен хранить свое значение и изменять его при записи, что с успехом делает конденсатор в DRAM. А как при этом физически организован триггер это совсем не важно. Например, кроме DRAM и SRAM существуют память на ЦМД. Также существует еще и Flash-память. Ячейки там ведут себя как триггеры, хотя физические процессы там кардинально отличаются от физических процессов и в DRAM и в SRAM и между собой.

Ответ 2



Я бы не стал сравнивать DRAM c тригером, там просто транзистор и конденсатор, т.е. при включении вся память содержит только нулевые значения, в разделе WIKI по DRAM это всё хорошо описанно.

Ответ 3



Поскольку оперативная память является строго энергозависимой, то при каждом включении компьютера триггеры будут каждый раз принимать какое-то состояние, которое предусмотрено по умолчанию. Какое это состояние? Поставлен конкретный вопрос о конкретном электронном устройстве. Ответ так же конкретен, хотя он вас и вряд ли устроит - неопределенное. Триггеры - это полупроводниковые устройства. Чтобы определить, какое из двух полупроводниковых устройств работает быстрее другого (чисто физически), необходимо произвести соответствующие замеры. Очевидно, что сделать это не представляется возможным (да и не является нужным), учитывая размеры современных п/п приборов. Быстродействие одного транзистора может отличаться от быстродействия другого всего на доли наносекунд. И именно эти доли и являются определяющим фактором. Разумеется, что внешние условия могут также оказывать влияние, однако если этим фактором пренебречь, а также сократить количество самих транзисторов (чтобы еще сильнее снизить вероятность случайного поведения), то случайность становится вовсе не случайностью, и если вы возьмете 10 триггеров (в виде дискретных элементов), то с наибольшей вероятностью они всегда будут принимать одни и те же состояния при включении (например из транзисторов A и B первым сработает B; из C и D - C, и т.д.), что говорит о чисто физической природе происходящего.

среда, 5 февраля 2020 г.

Какие есть цвета usb-разъёмов и что они означают?

#usb #железо #разъёмы


Для usb распространено окрашивание разъёмов в различные цвета с целью сделать их
легкоразличимыми визуально. Например, разъёмы usb 3 обычно делают синими, а разъёмы,
пригодные только для зарядки, красными или жёлтыми. Есть ли собственные цвета у usb
3.1, 3.2 и 4? В случае кабеля, влияет ли как-то максимально допустимый ток? Для чего
используется сиреневый цвет?
    


Ответы

Ответ 1



В спецификации сказано строго "рекомендуем использовать только синий". Но подробнее о цветах: Белый это USB 1.x Серый это USB 2.x Синий это USB 3 Красный или желтый это USB 3 - это говорит о том, что разъём не будет выключен во время сна или в режиме ожидания. Тут отмечу, что в спецификации на этот счёт ничего не сказано (может специалисты меня поправят). Часто красный используются для повышенного питания, но на практике я не встречал. По факту порт должен быть всегда синий. Других цветов в спецификации я не встречал. USB 3.1, 3.2 тоже синий, красный или жёлтый. USB 4 - точной спецификации нет Из спецификации: PDF спецификации, страница 5-14. Ссылка.

Ответ 2



Насколько я знаю, обычно: Чёрный - USB 1 (позже USB 2); Белый - USB 2; Синий - USB 3; Красный - интерфейс повышенного напряжения, передаваемые ток свыше 500 мА; Жёлтый - интерфейс, который передает ток даже при выключенном компьютере (предполагает использование для зарядки различного оборудования, независимо от состоянии компьютера). Здесь ключевое слово "обычно", т.к. на самом деле многое зависит от производителя и модели мат.платы. Видел модели, где все порты красного цвета, но не потому, что они для зарядки. Просто так захотелось дизайнеру.

При движении объектов на экране видны пятна

#железо #монитор


Видеокарта: GTX1080 от Inno3D. Монитор: Asus MG28UQ.

При движении любого объекта на экране начинают появляться чёрные пятна и движутся
внутри него. 

В целом, я без понятия как это объяснить, но есть фото. (Эта штука меня раздражает,
в играх особенно). 

Пробовал обновлять драйвера. 
Пробовал менять провода с DP на HDMI.



Красные овалы - там где появляются пятна при скроллинге вверх-вниз.

P.S. Еще любой текст оставляет за собой тени при скроллинге страниц.
    


Ответы

Ответ 1



На мониторе был включен trace free, в нем была проблема. EDIT: Как настроить параметр trace free на мониторе Asus MG28UQ? Включите монитор. Включите меню настройки монитора нажав красный джойстик на правой стороне монитора (сзади корпуса), при этом на монитор должен идти поток HDMI/DP (в данном мониторе иных разъемов под видео-поток не имеется). Фото: С помощью того же джойстика перейдите к отделу image(Управление джойстиком вверх-вниз). (простите за фото с телефона, принтскрин не захватывает меню). Свайпните джойстиком вправо, что бы перейти в настройку параметров меню image, далее надо выбрать параметр trace free, перейдите к этому пункту с помощью джойстика (Управление джойстиком вверх-вниз) и заново свайпните вправо. Управлением джойстиком вверх-вниз можно отрегулировать параметр trace free. У меня лично он стоял выше 60, что вызывало артефакты, можете протестировать оптимальное для вашего пк значение этого параметра если хотите использовать такую фичу как trace free (я просто выставил этот параметр на ноль и все артефакты пропали). PROFIT. Что такое trace free и сколько ставить? - http://virtmachine.ru/trace-free-asus-chto-eto-skolko-stavit.html

пятница, 24 января 2020 г.

Получить статус chassis intrusion из-под windows

#windows #безопасность #железо #wmi


Возможно ли получить статус chassis intrusion из-под windows? Dell делает это с помощью
WMI, они создают свой namespace и как-то записывают туда значение, а сами предоставляют
скрипты для выборки из этих namespace. Я пробовал смотреть в Win32_SystemEnclosure,
замыкая и размыкая chassis intrusion, но ничего не менялось.
    


Ответы

Ответ 1



Попробовал поиграться с классом WMI Win32_SystemEnclosure. Так вот, при закрытом корпусе (у меня теперь есть датчик на новом корпусе :) ) запрос wmiServices.InstancesOf Win32_SystemEnclosure выдаёт (привожу только относящиеся к делу инстансы): SecurityBreach=3 BreachDescription = NULL SecurityStatus = 3 Если же открываю корпус, то, в зависимости от того, далеко ли крышка от датчика: SecurityBreach=4 или 5 BreachDescription = "Alert" или "Intrusion" SecurityStatus =1 Так что вот вам и ответ. У меня не Dell. Мать Asus, производитель корпуса, подозреваю, не при чём.

четверг, 23 января 2020 г.

Как вызвать провал конвейера?

#железо #процессор


Как вызывать провал конвейера на современном процессоре?
Было несколько идей, но я не уверен в них:


В условный оператор if запихать кучу условий (например, if(A&0&B&C.....), где A,B,C
- какие-то операции). Предполагал, что в процессор произойдет загрузка всех операций,
но после второй будет произведен сброс конвейера. Тем самым будет простой размером
примерно с количество ступеней конвейера.
С помощью расширения GCC __builtin_expect направить процессор на ложную ветку if-else.
Предполагал, что в процессор будет произведена загрузка операций, которые не будут
выполнены. Конвейер будет сброшен.


Собственно, сабж.
    


Ответы

Ответ 1



Вариант 2 подходит. Ошибка предсказания перехода, вероятно, единственный верный шаг. Все остальные современные компиляторы скорее всего оптимизируют

среда, 22 января 2020 г.

скажите, как можно узнать дату установки драйвера флешки на компьютер

#windows #драйвер #железо #реестр


когда купленная флешка была вставлена в комьютер(гнездо)
началось установка её драйвера на комьютер.

скажите, как можно узнать дату установки драйвера флешки на компьютер
дата\время\год 
    


Ответы

Ответ 1



Дополню. Если необходимая информация о дате отсутствует в файлах, перечисленных Сергеем. То можно выгрузить информацию о создании ветви реестра, связанной с драйвером устройства. Средствами regedit: экспортировать нужную ветвь в txt-файл. В файле будет указано время модификации параметров. Ну и, конечно же, есть отличная бесплатная утилита USBDeview, с помощью которой можно ещё и автоматизировать процесс сбора информации.

Ответ 2



Если это Windows Vista или более поздние, то информацию найдете в C:\Windows\INF\setupapi.dev.log Для Windows XP можно в папке C:\Windows\INF поискать .inf файл установленного драйвера, затем проверить время создания .pnf файла с тем же именем.

воскресенье, 12 января 2020 г.

Как c помощью c++ можно узнать серийный номер жесткого диска?

#cpp #linux #железо #hdd


Как узнать серийный номер жесткого диска в ОС Линукс?
Да и вообще, как на с++ работать с аппаратным обеспечением компьютера?
    


Ответы

Ответ 1



Как узнать серийный номер жесткого диска в ОС Линукс? В зависимости от того, какой у вас дистрибутив и что в нем есть. Можно использовать разные сторонние утилиты GNU: hdparm -I /dev/sd? | grep 'Serial\ Number' lsblk --nodeps -o name,serial udevadm info --query=all --name=/dev/sda | grep ID_SERIAL ls -al /dev/disk/by-id/ Да и вообще, как на с++ работать с аппаратным обеспечением компьютера? ioctl()

вторник, 31 декабря 2019 г.

Подклчить колонки к двум источникам

#аудио #железо


Хочу подключить колонки к двум источникам звука одновременно. Будут они воспроизводить
одновременно оба источника или будет некий способ переключения между ними (типа выключателя)
не важно.

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

Также пришло в голову использовать адаптер для объединения наушников и микрофона
- типа того, что на фото. Что будет, если оба его конца воткнуть в источники звука,
а в него воткнуть колонки? Или нужно что-то другое?


    


Ответы

Ответ 1



Если просто "спаять" ничего хорошего не выйдет. Выход оконечного усилителя заточен под периферию определённого реактивного сопротивления(Выход на колонки обычно 4 Ω, на наушники порядка 16 Ω/32 Ω/300 Ω). Рассогласование выходного сопротивления с сопротивлением нагрузки резко ухудшает качество усиления, потому что выходные каскады усилителей меняют режим работы(вплоть до выхода из строя!). В вашем случае, нужно ещё учитывать взаимное влияние источников звука. Вам нужно таки определиться, что вам нужно: Микшер источников звука Переключатель источников звука: С переключателем всё намного проще - в каждый момент времени работает только одна нагрузка. Его даже можно включать в обратном направлении :)

Ответ 2



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

среда, 18 декабря 2019 г.

Как считать S.M.A.R.T параметры с USB-HDD диска?

#c_sharp #железо #hdd


Как считать S.M.A.R.T параметры с USB-HDD диска?
Желательно с примерами кода.
Читал, что программы по типу CrystalDiskInfo содержат информацию по каждому арибуту
SMART для каждого производителя и что нет единой методики считывания этих параметров.
    


Ответы

Ответ 1



Из всего путного, что я нашел - только эта статья (на английском) с примером кода: http://www.know24.net/blog/C+WMI+HDD+SMART+Information.aspx Пример кода рабочий. Удачи.

Ответ 2



Попробуйте поискать в открытых исходниках. Вот например что-то похожее: https://github.com/arhimondr/SMARTMonitoring/blob/master/src/atasmart.c

понедельник, 16 декабря 2019 г.

Как определить, подключёно ли что-либо в разъём jack на звуковой карте?

#железо #linux


Как определить, заняты ли разъёмы на звуковой карте или нет?

Сам момент подключения/отключения отлавливается через acpi_listener без проблем,
и на это событие можно повесить скрипт, который отключает звук в колонках при подключении
наушников во фронтальный разъём, а вот как проверить текущее состояние — не могу понять.
    


Ответы

Ответ 1



согласно вот этому ответу, информацию можно почерпнуть из файлов /proc/asound/card*/codec#*. пример из этого ответа: наушники подключены: $ cat /proc/asound/card0/codec#0 [...] Node 0x0d [Pin Complex] wcaps 0x400181: Stereo Control: name="Speaker Phantom Jack", index=0, device=0 Pincap 0x00000014: OUT Detect Pin Default 0x90170110: [Fixed] Speaker at Int N/A Conn = Analog, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x00: [...] наушники отключены (сравните строки про Pin-ctls): $ cat /proc/asound/card0/codec#0 [...] Node 0x0d [Pin Complex] wcaps 0x400181: Stereo Control: name="Speaker Phantom Jack", index=0, device=0 Pincap 0x00000014: OUT Detect Pin Default 0x90170110: [Fixed] Speaker at Int N/A Conn = Analog, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x40: OUT [...]

суббота, 7 декабря 2019 г.

Автоматизация огорода [закрыт]

#java #delphi #usb #железо #микроконтроллеры


        
             
                
                    
                        
                            Closed. This question needs to be more focused. It is
not currently accepting answers.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Want to improve this question? Update the question so
it focuses on one problem only by editing this post.
                        
                        Closed 4 года назад.
                                                                                
           
                
        
Доброго время суток.
Подскажите, пожалуйста, планирую сделать автоматизированное управление (как бы смешно
не звучала огорода) т.к живу очень далеко а ездить каждые выходные что то не хочется. т.е 

датчик влажности почвы 
датчик влажности 
автоматический полив не по таймеру, а по влажности почвы.

Подскажите какую плату можно использовать? и контроллеры?
Планируется управление по wifi (или чем то еще но только без проводов)
Программировать планирую на delphi или Java, C# только изучаю.
Желательно детали недорогие если можно посоветовать.
У кого какие предложения?
Я никогда ранее не работал с микроконтроллерами и т.д. Извините за некомпетентность.    


Ответы

Ответ 1



Культивацией плантации собираетесь заниматься?) Датчики влажности, температуры и прочей электроники можно найти на китайский барахолках, типа http://dx.com За контроллер берите arduino mega, ибо его разъемов должно хватить почти на всё.

Ответ 2



Omron! Есть такая фирма, правда дороговато, но программирование их микроконтроллеров, похоже на построение электрических сетей(в их специальной программе есс-но, CX-Programmer вроде или CX-One)

Ответ 3



Если управление поливом будет автоматическое, то Atmel+Датчик влажности+исполнительное устройство включения полива. Если управление будет on-line, то добавляется огородный ПК с GPRS модемом, программа сбора показаний датчиков на огороде с отправкой данных оператору, программа управления на удаленном ПК, связь между ними можно организовать по технологии socket. Чтоб управление было стойкое к метеоусловиям передачу данных между ПК и контроллером на огороде лучше организовать по bluetooth (bluegiga, HC-07 ...). В общем это комплексный проект. И нужно изучить все его составляющие.

Ответ 4



Самый имхо простой способ - прикупить нужные сенсоры к Android телефону, написать на Java прожку для телефона через специальное API и вуаля.

воскресенье, 1 декабря 2019 г.

Как объединить мощность нескольких компьютеров под управлением одной Linux системы?

#linux #сеть #администрирование #железо #ос


В офисе валяется куча ненужных, рабочих системных блоков. Вот я и решил объединить
их в единую вычислительную сеть,  а по сути в обычный компьютер управляемый единой
ОС, но представляющий собой 3+ системных блока. 

Итог: Мне нужно что бы 5+ коробок работала как одна, при этом я не хочу управлять
каждым серваком отдельно, моя цель единая машина состоящая физически из нескольких
под управлением одной системы. Что она будет делать? Да что угодно, хоть пусть будет
web сервером с ip в интернете или просто рабочей станцией Ubuntu или fedora
    


Ответы

Ответ 1



обычно решения строятся от задачи, а не от платформы что конкретно вы хотите делать? из личного опыта -- анализ логов на биллинге, и ретарификация: делал ручным шардингом на уровне приложения (скрипты на Python), на пачке списанных десктопов, аккаунте на конторском IBM eServer, и паре десктопов под windows. если у вас межсоединения на древнем 100mbit ethernet, а не как минимум 1G (не говоря уж о спецжелезе типа Infiniband) -- дешевле будет пойти в магазин, купить самую поганую материнку и набить ее памятью под завязку, съэкономите на дорогом быстром 1G свитче и энергопотреблении ваш вариант конфигурации может быть эффективен только в одном случае: все параллельные потоки полностью независиммы, и каждый блок задачи польностью влазит в ОЗУ и ресурсы одного узла, неплохо решаются вычислительные задачи с полным отсутствием зависимостей в архитектуре "одна нода - один расчетный блок" с другой стороны, в качестве кластерной рабочей станции подобная утилизация вполне интересная и имеет право на жизнь, и может оказаться выигрышным вариантом: на рабочей станции активно не более 2-3 тяжелых задач, остальные ресурсы тратятся на хранение гигабайтных вкладок в браузере, текстовые редакторы и редкие пробежки утилит по файловой системе https://en.wikipedia.org/wiki/Single_system_image https://en.wikipedia.org/wiki/Distributed_operating_system https://en.wikipedia.org/wiki/Multikernel Linux реализаций похоже нет: https://en.wikipedia.org/wiki/OpenMosix (R.I.P 2008, kernel 2.4) так что решение задачи в оригинальной постановке сводится по факту к освоению системного программирования в полном объеме: написать аналог ядра Linux обеспечивающий весь необходимый функционал DOS, адаптировать базовые библиотеки в т.ч. из поставки копиляторов GNU (libc, libatomic, gomp,...) и пересобрать всю систему до состояния, когда сможет работать весь компплект ПО который вы используете возможно более простым решением может оказаться написание слоя виртуализации: переписать только слой всех системных библиотек, который использует ваше прикладное ПО, с реализацией функционала distributed POSIX поверх обычных дистрибутивов, поставленных на каждый узел, или гипервизоров (желаю много весеслья с исходниками Xen и libgcc/libstdc++ 8-) с практической точки зрения: ищите задачи с минимальным объемом обмена данными между потоками, и пишите свое ПО: смотрите в сторону готовых распределенных платформ для веб/микросервисов, требующие для работы минимальных ресурсов перетаскивайте бизнес-процессы в вашей конторе на веб-технологии, чтобы можно было раздать хилое железо юзерам в качестве терминалов/запускалок браузеров к сожалению, насколько знаю бесплатных реализаций распределенного Smalltalk не существует, а то бы в первую очередь посоветовал его -- как вариант, искать библиотеки для программирования на распределенном обмене сообщениями между объектами для mainstream языков

Ответ 2



В таком виде - в котором вы спрашиваете: решения будут неэффективными. Системы из множества компьютеров(серверов) делаются отдельно, под каждую задачу свои, мало того программы - для работы которых и создаётся такая система - тоже пишутся именно под определённые системы серверов. Называются они "высоконагруженные системы", и их создание/использование - это очень дорогой процесс, который называется "масштабирование". Крупнейшие примеры таких систем - социальные сети: например работу VK обеспечивает 10к машин, но сравнимых по мощности с домашним компьютером(как утверждают владельцы). Да и сам StackOverflow конечно работает не на одном сервере. Если вам действительно интересно масштабирование: то стоит на крутом уровне освоить системное администрирование, docker, а также почитать лирику на тему хайлода https://ruhighload.com/scale

Ответ 3



Ответ сводится к тому, что Вам необходимо создать кластер компьютеров под управлением какой-либо Linux-like OS. Вот несколько готовых решений: [useless link: has been removed]. Кластер в домашних условиях. Для справки: Вики (Кластер). Описывать весь процесс в ответе особого смысла нет. Думаю, мой ответ вам полезен.

Ответ 4



Скорее всего энергоэффективность (и, возможно, надежность) такой системы будет слишком низка. Задача кластерных систем - достичь такой вычислительной мощности и отказоустойчивости, которой сложно (или невозможно) достичь средствами одного современного сервера. А для утилизации старого железа лучше применить другие способы ;)

понедельник, 27 мая 2019 г.

Какое преимущество кластера перед одним сервером?

Примерные данные по кластеру: 1 сервер - Балансировщик приложении 2 сервера - Сервер приложении 2 сервера - Сервер БД 1 сервер - Сервер поиска и хранении
Детальной разницы и преимущества не знаю, поэтому хотелось бы узнать у более компететных участников форума.
Что можно почитать на эту тему? Куда смотреть?


Ответ

Тема слишком обширная. Много чего можно посоветовать. Но банально.
Есть у вас 1 сервер БД, к примеру. Что будет, если он упадёт? Всё плохо. Во-первых, вы данные потеряете (по крайней мере данные с прошлого бекапа). Во-вторых, ваши сервисы остальные работать не смогут без базы.
Теперь же, предположим, у вас 3 ноды базы в кластере и настроена репликация (то есть, дублирование данных). Если 1 нода выйдет из строя, то кластер продолжит работу. Если у вас 5 нод, то кластер может выдержать потерю 2 нод.
Это, если кратно. Естественно, всё зависит от архитектуру СУБД. Что хорошо для riak, то не очень для mongodb и т.п. Но в целом кластеризация помогает сохранить работоспособность даже при потере каких-то узлов в системе.
Плюс, это даёт распределение нагрузки, если хорошо всё связать с loadbalancer'ом.
В плане репликации в целом там обычно две модели:
master-master. Сложно реализуемый вариант. Обычно при этом попираются принципы ACID. У нас, к примеру, использует RethinkDB, там как раз master-master. Как даунсайд - отсутствие транзакций и т.п. плюшек, которые обычно есть в реляционных базах. В таком варианте все ноды могут писать данные, от этого все проблемы. master-slave. Проще реализовать. Пишет только master и пушит в слейвы. Со слейвов можно только читать. Отсюда простота реализации. Если выходит из строя мастер, то обычно слейвы голосует за то, кто будет новым мастером. Если всё удачно, то слейв становится мастером, а все остальные слейвы переключаются на него.
Книги могу посоветовать в большей степени только на английском:
Highscalability (: NoSQL Guide от Мартина Фаулера. Best practices по архитектуре в облаке от Amazon Ещё советую читать статьи про конкретные реализации (по конкретной СУБД). Поможет этот сайт. Как уже сказал, лучше читать статьи про конкретные реализации: всё про репликацию в MaridDB, репликация и кластеризация в Postres Про Scalability

суббота, 20 апреля 2019 г.

Подклчить колонки к двум источникам

Хочу подключить колонки к двум источникам звука одновременно. Будут они воспроизводить одновременно оба источника или будет некий способ переключения между ними (типа выключателя) не важно.
Нагуглил, что самый простой (варварский) метод - просто спаять провода. Но паять ничего не собираюсь. Можно ли найти подходящее готовое устройство? Т. е. либо просто что-то типа разветвителя, но наоборот, либо оно же, но с переключателем. Никаких дополнительных наворотов не надо. Кстати, как такая штука называется?
Также пришло в голову использовать адаптер для объединения наушников и микрофона - типа того, что на фото. Что будет, если оба его конца воткнуть в источники звука, а в него воткнуть колонки? Или нужно что-то другое?


Ответ

Если просто "спаять" ничего хорошего не выйдет. Выход оконечного усилителя заточен под периферию определённого реактивного сопротивления(Выход на колонки обычно 4 Ω, на наушники порядка 16 Ω/32 Ω/300 Ω).
Рассогласование выходного сопротивления с сопротивлением нагрузки резко ухудшает качество усиления, потому что выходные каскады усилителей меняют режим работы(вплоть до выхода из строя!). В вашем случае, нужно ещё учитывать взаимное влияние источников звука.
Вам нужно таки определиться, что вам нужно:
Микшер источников звука Переключатель источников звука:
С переключателем всё намного проще - в каждый момент времени работает только одна нагрузка. Его даже можно включать в обратном направлении :)

суббота, 27 октября 2018 г.

Как определить, подключёно ли что-либо в разъём jack на звуковой карте?

Как определить, заняты ли разъёмы на звуковой карте или нет?
Сам момент подключения/отключения отлавливается через acpi_listener без проблем, и на это событие можно повесить скрипт, который отключает звук в колонках при подключении наушников во фронтальный разъём, а вот как проверить текущее состояние — не могу понять.


Ответ

согласно вот этому ответу, информацию можно почерпнуть из файлов /proc/asound/card*/codec#*
пример из этого ответа:
наушники подключены:
$ cat /proc/asound/card0/codec#0 [...] Node 0x0d [Pin Complex] wcaps 0x400181: Stereo Control: name="Speaker Phantom Jack", index=0, device=0 Pincap 0x00000014: OUT Detect Pin Default 0x90170110: [Fixed] Speaker at Int N/A Conn = Analog, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x00: [...]
наушники отключены (сравните строки про Pin-ctls):
$ cat /proc/asound/card0/codec#0 [...] Node 0x0d [Pin Complex] wcaps 0x400181: Stereo Control: name="Speaker Phantom Jack", index=0, device=0 Pincap 0x00000014: OUT Detect Pin Default 0x90170110: [Fixed] Speaker at Int N/A Conn = Analog, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x40: OUT [...]