Анатомия программы в памяти

Автор: admin от 26-08-2015, 22:07, посмотрело: 406

Управление памятью – одна из главных задач ОС. Она критична как для программирования, так и для системного администрирования. Я постараюсь объяснить, как ОС работает с памятью. Концепции будут общего характера, а примеры я возьму из Linux и Windows на 32-bit x86. Сначала я опишу, как программы располагаются в памяти.

Каждый процесс в многозадачной ОС работает в своей «песочнице» в памяти. Это виртуальное адресное пространство, которое в 32-битном режиме представляет собою 4Гб блок адресов. Эти виртуальные адреса ставятся в соответствие (mapping) физической памяти таблицами страниц, которые поддерживает ядро ОС. У каждого процесса есть свой набор таблиц. Но если мы начинаем использовать виртуальную адресацию, приходится использовать её для всех программ, работающих на компьютере – включая и само ядро. Поэтому часть пространства виртуальных адресов необходимо резервировать под ядро.

Анатомия программы в памяти

Это не значит, что ядро использует так много физической памяти – просто у него в распоряжении находится часть адресного пространства, которое можно поставить в соответствие необходимому количеству физической памяти. Пространство памяти для ядра отмечено в таблицах страниц как эксклюзивно используемое привилегированным кодом, поэтому если какая-то программа пытается получить в него доступ, случается page fault. В Linux пространство памяти для ядра присутствует постоянно, и ставит в соответствие одну и ту же часть физической памяти у всех процессов. Код ядра и данные всегда имеют адреса, и готовы обрабатывать прерывания и системные вызовы в любой момент. Для пользовательских программ, напротив, соответствие виртуальных адресов реальной памяти меняется, когда происходит переключение процессов:

Категория: Программирование, Системное администрирование, Windows, Linux

 

Мотивирующая сказка для инди разработчиков игр

Автор: admin от 26-08-2015, 19:46, посмотрело: 249

Моя история начинается, как в «Алисе в стране чудес» – со сна. Мне приснился сон, в котором я играю в новую мобильную игру – необычную, с незаезженной механикой. Сон был яркий и приятный. Проснувшись, я сразу кинулся за карандашом и бумагой, и еще толком не придя в себя, находясь под впечатлением увиденного, стал рисовать.

Категория: Веб-разработка, Game Development, Android

 

Создание тестового DB-контекста в тестах с использованием xUnit

Автор: admin от 26-08-2015, 19:44, посмотрело: 321

В случаях, когда ваше приложение имеет нетривиальную схему данных (люди, продукты, заказы, цены, объемы, состояния, зависящие от кучи параметров и т.д.) бывает проще иметь некоторый дамп данных, воссозданный на тестовом окружении, или взятый с продакшна, и использовать его для тестов. В этом случае, может понадобиться несколько дампов данных, для каждого из случаев, которые автоматические тесты должны уметь накатывать и откатывать на тестовое окружение. В этой статье я попытаюсь показать, как это можно сделать, используя fixtures и collections фреймворка xUnit. Все решение построена на базе xUnit версии 2.0 от 16 марта 2015 года.

Категория: Программирование

 

Высокая готовность облака HP Helion OpenStack

Автор: admin от 26-08-2015, 16:07, посмотрело: 355

При переносе бизнес-критичных приложений в облако необходимо обеспечить их непрерывную работу и защитить их от сбоев на уровне оборудования или программного обеспечить. При использовании классических серверных технологий для высокой доступности используются отказоустойчивые кластеры и резервирование основных компонентов серверов и систем хранения, устраняющее единичные точки отказа. Посмотрим, как высокая доступность реализована в облаке HP Helion OpenStack.

Высокая готовность облака HP Helion OpenStack


Высокая доступность в облачной среде HP Helion OpenStack реализуется по трем направлениям: высокодоступные облачные сервисы, отказоустойчивая инфраструктура облака и поддерживающие облачные технологии нагрузки «арендаторов» (tenant) облака, т.е. сервис-провайдеров, предоставляющие услуги облака конечным пользователям.

Категория: Админитстрирование » Системное администрирование

 

Ещё один способ автоматического вызова unit-тестов на языке Си

Автор: admin от 26-08-2015, 15:23, посмотрело: 360

Ещё один способ автоматического вызова unit-тестов на языке СиНа Хабре уже есть несколько статей о том, как разрабатывать модульные тесты на языке Си. Я не собираюсь критиковать описанные подходы, а лишь предложу ещё один — тот, которым мы пользуемся в проекте Embox. Пару раз мы уже ссылались на него на Хабре.

Кому интересно, прошу подкат! Но предупреждаю: там много портянок из макросов и «линкерской» магии.

Категория: Программирование, Системное администрирование

 

Intel Parallel Studio XE 2016 — бесплатных продуктов стало больше

Автор: admin от 26-08-2015, 14:52, посмотрело: 466

Intel Parallel Studio XE 2016 — бесплатных продуктов стало большеВчера, 25 августа, произошло важное для большого числа программистов событие: компания Intel выпустила новую версию программного комплекса Intel Parallel Studio XE — 2016, включающего в себя компиляторы Intel, библиотеки для повышения производительности, средства анализа и отладки программ, а также библиотеку Intel MPI и MPI инструментарий. Но это еще не вся радость. В новой «студии» к имевшей и ранее бесплатную версию библиотеке Intel® Threading Building Blocks добавилось целых три продукта с community (то есть бесплатной) лицензией: новая библиотека Intel® Data Acceleration Library, о которой мы только что писали, а также два очень полезных компонента: Intel® Math Kernel Library и Intel® Integrated Performance Primitives. Используйте на здоровье, какие-либо ограничения у бесплатных версий отсутствуют.
Community лицензиям для продуктов Intel посвящен отдельный сайт — там вы найдете подробности программы. http://habrahabr.ru/post/265471/#habracut

Категория: Программирование, Веб-разработка

 

EXTREME'альный LACP

Автор: admin от 26-08-2015, 14:44, посмотрело: 700

Дьявол кроется в деталях – я всегда вспоминаю об этом, когда разбираюсь с чем-то новым. Новый софт или новая железка могут быть какими угодно крутыми и технически, и экономически, но обязательно найдётся такая мелочь, которая вроде бы непринципиальна, но крови пьёт безумно много. Вот про несколько таких ненасытных мелочей в сетевом оборудовании Extreme Networks я и хочу рассказать под катом.

EXTREME'альный LACP

Категория: Программирование, Системное администрирование, Сетевые технологии

 

Осенние онлайн-курсы от Computer Science Center и Академического университета

Автор: admin от 26-08-2015, 13:06, посмотрело: 521

Осенние онлайн-курсы от Computer Science Center и Академического университета
Этой осенью СПб АУ РАН и CS центр предлагают несколько новых онлайн-курсов на разные темы: от теории графов до программирования на языке Haskell, и перезапускают некоторые из прочитанных ранее. Год назад состоялся первый запуск онлайн-курсов CS центра. Сначала появились курсы по программированию, а весной их дополнили курсы по математике, подготовленные вместе с Академическим университетом. Все онлайн-курсы разработаны на платформе Stepic.org.



  • Java. Базовый курс (А. А. Владыкин)

  • Алгоритмы: теория и практика. Методы (А. С. Куликов)

  • Введение в архитектуру ЭВМ. Элементы операционных систем (К. В. Кринкин)

  • Введение в математический анализ (А. И. Храбров)

  • Ликбез по дискретной математике (А. В. Омельченко)

  • Основы перечислительной комбинаторики (А. В. Омельченко)

  • Основы теории графов (А. В. Омельченко)

  • Погружение в СУБД (Д. В. Барашев)

  • Программирование на языке C++ (А. В. Смаль)

  • Функциональное программирование на языке Haskell (Д. Н. Москвин)


Часть курсов входит в годовую онлайн-программу по основам программирования.
Подробнее о курсах

Категория: Программирование

 

Big Data — первыи опыт ED IB

Автор: admin от 26-08-2015, 12:56, посмотрело: 361

Всем привет! Сегодня мы хотим рассказать про наше знакомство с Big Data, которое началось в 2012 году, когда рынок ещё не накрыла волна популярности темы больших данных.

Big Data — первыи опыт ED IB


К тому времени у нас уже накопилась экспертиза в области построения хранилищ данных. Мы рассматривали различные пути улучшения стандартных архитектур ХД, поскольку заказчик хотел обрабатывать большие объёмы данных за короткое время и при ограниченном бюджете. Мы понимали, что большие объёмы данных для стандартного хранилища прекрасно обрабатываются на MPP-платформах, но де-факто это дорого. Значит, нам нужна недорогая распределенная система. Ей оказался Hadoop. Он нуждается в минимальных начальных вложениях, а первые результаты можно получить очень быстро. В дальнейшей перспективе – горизонтальное, практически линейное масштабирование, открытая платформа и много интересных дополнительных функций: например, NoSQL, быстрый поиск по данным, подобие SQL-языка доступа к данным.

Категория: Админитстрирование » Системное администрирование

 

Деплой: Nginx, Puma и Mina

Автор: admin от 26-08-2015, 12:13, посмотрело: 404

В этой небольшой статье я бы хотел показать настройку Rails — приложения работающего на Nginx'е с Puma и как это все деплоить с помощью Mina.
Подробности

Категория: Программирование » Веб-разработка

 
Назад Вперед