Пользователь
Что нового в C# 6.0?

Microsoft выпустила предварительную версию Visual studio 2015 и .Net 4.6 для разработчиков. В новом C# 6.0 несколько новых возможностей, которые могут облегчить кодинг.
В этой статье рассмотрены новые возможности языка C# 6.0. Скачать новую VS можно по ссылке:
Microsoft Visual Studio Ultimate 2015 Preview
Инициализация свойств со значениями
В C# 6.0 мы можем инициализировать свойства со значениями, написав справа от них их значение. Это поможет избежать ошибки с null и пустыми значениями свойства.
Раньше:
public int Id { get; set; }
public string FirstName { get; set; }Теперь:
public int Id { get; set; } = 1001;
public string FirstName { get; set; } = "Srinivas";От шедулера к планировщику
Сразу просьба к строгим читателям. Если вы не поняли какой-либо термин из применённых — спросите, я подскажу, что я имел в виду. А если вам нравится другое написание или перевод этого термина — укажите его в комментарии. Я применяю те, которые нравятся мне.
Итак, в прошлых статьях описан механизм реализации многозадачности за вычетом планировщика, он же шедулер, он же скедулер,
Как я уже говорил, шедулер — это просто функция, которая отвечает на вопрос: какую нить и на сколько времени поставить на процессор.
Кстати, в SMP системе шедулер ничем не отличается от однопроцессорного. Вообще, чтобы проще понимать структуру взаимодействия сущностей на одном и нескольких процессорах, проще всего представить себе следующую модель: для каждого процессора есть нить «простоя» (которая работает, если вообще больше некому и просто останавливае процессор до прерывания), которая постоянно пытается «отдать» процессор (которым она как бы владеет) другим нитям, выбирая нить с помощью шедулера.
Говоря о шедулере нельзя не сказать о приоритетах.
Приоритет — свойство нити (или процесса) влияющее на конкуренцию этой нити с другими нитями за процессор.
Приоритет обычно описывается парой <класс приоритета, значение приоритета внутри класса>.
Космические туннели и железо на голову или зачем нам космодром «Восточный»

На днях меня попросили проконсультировать инфографику РИА Новости, посвященную первому пуску с космодрома «Восточный». И там будет одно серьезное упрощение из-за ограничений формата материала. На самом деле, космодром «Восточный» нужен нам не из-за того, что большинство гражданских запусков происходит с космодрома «Байконур». Но, чтобы объяснить, зачем он нам нужен, придется рассказать, почему орбиту космического аппарата можно сравнить с туннелем, а также объяснить, что за «железо» падает с неба, и на кого оно падает.
C/C++: как измерять процессорное время

КДПВ
От переводчика:
Большинство моих знакомых для измерения времени в разного вида бенчмарках в С++ используют chrono или, в особо запущенных случаях, ctime. Но для бенчмаркинга гораздо полезнее замерять процессорное время. Недавно я наткнулся на статью о кроссплатформенном замере процессорного времени и решил поделиться ею тут, возможно несколько увеличив качество местных бенчмарков.
P.S. Когда в статье написано "сегодня" или "сейчас", имеется ввиду "на момент выхода статьи", то есть, если я не ошибаюсь, март 2012. Ни я, ни автор не гарантируем, что это до сих пор так.
P.P.S. На момент публикации оригинал недоступен, но хранится в кэше Яндекса
Функции API, позволяющие получить процессорное время, использованное процессом, отличаются в разных операционных системах: Windows, Linux, OSX, BSD, Solaris, а также прочих UNIX-подобных ОС. Эта статья предоставляет кросс-платформенную функцию, получающую процессорное время процесса и объясняет, какие функции поддерживает каждая ОС.
Преемптивность: как отнять процессор
Здесь я расскажу, как кооперативная многозадачность превращается во
Суть этого превращения проста. В машине есть таймер, таймер генерирует прерывания, прерывания приостанавливают код нити и отдают процессор в руки механизма многозадачности. Оный уже вполне кооперативно переключает процессор на новую нить, как и описано в предыдущей статье.
Но, как обычно, есть нюансы. См. код для интела.
Сам «отъём» процессора делается как в рамках обычного хардверного прерывания, обычно — по таймеру, так и в рамках «софтверного» прерывания — которое, собственно, такое же прерывание, но вызванное специальной инструкцией процессора. Такой способ переключения контекста нужен, если мы (например, в рамках примитива синхронизации) явно останавливаем нить и не хотим ждать, пока прилетит таймерное прерывание.
Делаем мультизадачность
В принципе, реализация собственно механизма многозадачности — довольно простая вещь. Сама по себе. Но, во-первых, есть тонкости, и во-вторых, она должна кооперироваться с некоторыми другими подсистемами. Например, та же реализация примитивов синхронизации очень тесно связана с реализацией многозадачности. Есть небанальная связь так же и с подсистемой обслуживания прерываний и эксепшнов. Но об этом позже.
Начнём с того, что есть два довольно мало связанных модуля — собственно подсистема переключения задач (контекстов) и подсистема шедулинга. Вторую мы сегодня обсуждать почти не будем, просто опишем кратко.
Шедулер — это функция, которая отвечает на вопрос «какой нити отдать процессор прямо сейчас». Всё. Простейший шедулер просто перебирает все нити (но, конечно, готовые к исполнению, не остановленные) по кругу (RR алгоритм). Реальный шедулер учитывает приоритеты, поведение нити (интерактивные получают больше, чем вычислительные), аффинити (на каком процессоре нить работала в прошлый раз) и т.п., при этом умеет сочетать несколько классов приоритетов. Типично это класс реального времени (если есть хотя бы одна нить этого класса — работает она), класс разделения времени и класс idle (получает процессор только если два предыдущих класса пустые, то есть в них нет нитей, готовых к исполнению).
На сём пока про шедулер закончим.
Перейдём к собственно подсистеме, которая умеет отнять процессор у одной нити и отдать его другой.
Устройство NVRAM в UEFI-совместимых прошивках, часть третья
Перед вами третья часть моего повествования о форматах NVRAM, используемых UEFI-совместимыми прошивками различных производителей. В первой части я рассказывал об NVRAM вообще и о «стандартном» формате VSS, во второй — об интересных блоках, которые можно найти рядом с NVRAM в этом формате, а в этой речь пойдет о целой россыпи различных форматов, используемых в прошивках на платформе Phoenix SCT: FlashMap, EVSA, Intel uCode, CMDB, SLIC pubkey и SLIC marker.Если вам интересно, что умудрились напридумывать на замену VSS разработчики из Phoenix — добро пожаловать под кат, только предупреждаю сразу, статья получилась достаточно длинной.
Реверс-инжиниринг визуальных новелл
Хочу признаться: я обожаю визуальные новеллы. Кто не в курсе — это такие то ли интерактивные книжки, то ли игры-в-которых-надо-в-основном-читать-текст, то ли радиоспектакли-с-картинками, преимущественно японские. Последние лет 5, наверное, художественную литературу в другом формате толком не вопринимаю: у визуальных новелл по сравнению с бумажными книгами, аудио-книгами и даже сериалами — в разы большее погружение, да и сюжет регулярно куда интереснее.
Tracert vs Traceroute
Стандартный механизм маршрутизации пакетов в интернете — per hop behavior — то есть каждый узел в сети принимает решение куда ему отправить пакет на основе информации, полученной от протоколов динамической маршрутизации и статически указанных администраторами маршрутов.
Маршрут — это интерфейс, в который нам надо послать пакет для достижения какого то узла назначения и адрес следующего маршрутизатора (next-hop):
R1#sh ip rou | i 40.
40.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
O 40.0.0.0/31 [110/3] via 20.0.0.0, 00:01:54, FastEthernet0/0
O 40.1.1.1/32 [110/4] via 20.0.0.0, 00:00:05, FastEthernet0/0
Что такое путь? Путь — это список узлов, через которые прошел (пройдет) пакет:
1 10.0.0.1 16.616 ms 16.270 ms 15.929 ms
2 20.0.0.0 15.678 ms 15.157 ms 15.071 ms
3 30.0.0.1 26.423 ms 26.081 ms 26.744 ms
4 40.0.0.0 48.979 ms 48.674 ms 48.384 ms
5 100.0.0.2 58.707 ms 58.773 ms 58.536 ms
Путь пакета можно посмотреть с помощью утилит tracert в OC Windows и traceroute в GNU/Linux и Unix-подобных системах. (другие команды, типа tracepath мы не рассматриваем).
Многие считают что этих утилит один и тот же принцип работы, но это не так. Давайте разберемся.
На взрыволёте к Юпитеру

Ограниченность химических ракет была ясна ещё до начала регулярных космических пусков. Формула Циолковского прямо говорит, что на привычных нам двигателях можно слетать на Луну (стартуя на ракете тысячи в три тонн начальной массы и вернувшись в кораблике в несколько тонн), с огромным трудом долететь до Марса (с во много раз худшим соотношением начальной/конечной массы), но вот покорить Солнечную систему на химических ракетах нельзя. Поэтому уже в середине двадцатого века стали появляться альтернативные проекты, наиболее ярким из которых стал атомный взрыволёт (импульсная ракета). В этом посте мы поговорим о его конструкции, истории создания, перспективах в 21 веке, а ещё слетаем на нём к Юпитеру в Orbiter'е.
Какой ракетный двигатель самый лучший?

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

Сверхтяжелые ракеты-носители времен лунной гонки прекрасны. «Сатурн-V» выглядит настолько рациональным и инженерно красивым, что можно понять происхождение аргумента сторонников «лунного заговора» — кажется, что такая замечательная ракета должна была бы летать до сегодняшнего дня. Но проблема сверхтяжелых ракет состоит в том, что они непригодны для обычных космических задач, для которых требуется меньшая грузоподъемность. Говоря простым языком, у вас есть грузовик «Урал», на котором вы пару раз в год возите удобрения, кирпичи или доски на дачу. Будете ли вы на нем каждый день ездить на работу в офис? Теоретически это возможно, но очень нерационально — мощный двигатель «ест» десятки литров солярки на сотню километров, не говоря уже о сопутствующих расходах или проблемах с парковкой. С космосом то же самое — «тяжелыми» стали называться ракеты грузоподъемностью двадцать тонн на низкую околоземную орбиту, а «сверхтяжелой» сейчас называют ракету с грузоподъемностью больше 50 тонн на НОО. Но не нужно думать, что изобретательное человечество легко отказалось от мечты получить универсальную ракету, которой можно каждый месяц запускать небольшие спутники, но один-два раза в год отправиться на Луну или дальше.
Как опереться на пустоту?

«Дайте мне точку опоры, и я переверну Землю» — так, по легенде, сказал Архимед, научно объяснив интуитивно понимаемый принцип работы рычага. Но в космическом вакууме опоры нет. А спутникам нужно, чтобы солнечные батареи смотрели на Солнце, антенны — на Землю, камера — на интересный участок Марса, а двигатель для коррекции орбиты — строго в определенную точку пространства. Приходится что-то придумывать, чтобы опереться на пустоту.
Как не заблудиться в космосе?

Римский философ Сенека сказал: «Если человек не знает, куда он плывет, то для него нет попутного ветра». В самом деле, какая нам польза от двигателей, маховиков или соленоидов, если мы не знаем положения аппарата в пространстве? Этот рассказ о приборах, которые позволяют нам не заблудиться в космосе.
Советская орбитальная хитрость

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

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

Сейчас, в двадцать первом веке, есть космические ракеты, для запуска которых используются детали из дерева. Тридцать две березовые палки являются важным элементом системы запуска двигателей. И если страну-производитель таких ракет вы, наверняка, угадали (да, это Россия, а ракеты — семейство «Союз»), то от презрительного отношения к такому инженерному решению я бы вас предостерег — это будет серьезной ошибкой. Почему?
Математика на пальцах: мендосинский двигатель и теорема Ирншоу
Постановка задачи
На днях я увидел на просторах интернета крайне любопытную вещь: мендосинский двигатель. Ротор на подшипниках крайне низкого трения: оригинальный имел стеклянный цилиндр, подвешенный на двух иголках, современные имеют магнитный подвес оси. Двигатель бесколлекторный, на роторе подвешены солнечные батареи, которые выдают напряжение на катушки, намотанные на роторе. Ротор проворачивается в фиксированном магнитном поле статора, солнечная батарея уходит от направленного света, на её место приходит другая. Крайне элегантное решение, которое вполне под силу сделать дома каждому.
Вот на этом видео крайне подробно описан (на русском языке) принцип работы:
Но ещё больше самого двигателя мне показалась любопытной следующая вещь. В описании этого видео Дмитрий Коржевский написал следующую вещь: «Боковую опору заменить магнитом НЕВОЗМОЖНО!!! Не задавайте больше этот вопрос!»
Возвращаем приватность или большой брат следит за мной на стандартных настройках. Часть 2. Блокируем следящие скрипты на сайтах и настраиваем VPN
Сегодня посмотрим (и избавимся) на то, сколько статистики собирают на нас даже без использования сторонних «куки»-файлов и расскажем о пользе и настройке VPN простым языком.
Хочу сказать большое спасибо всем, кто оставлял комментарии в прошлой статье (и оставит в этой) — все ваши дельные советы будут включены в этот или последующий мануалы.

Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность