Для зберігання одного біта інформації на жорсткому диску требуется близько 100 тис. атомів. 8 березня вчені з IBM Research представили результати свого дослідження, в якому показали, що можна зберегти таку ж кількість інформації все в одному атомі. Поширення цієї технології дозволить записати музичний каталог Apple 26 мільйонів пісень на запам'ятовуючий пристрій розміром з невелику монету.


Читати далі →

Вітаю всіх. У сьогоднішній статті мова піде про те, як можна реалізувати власний високорівневий API в керованому коді для роботи з пристроями друку, від встановлення нового монітора друку в системі і до отримання обробленого драйвером пристрою друку документа з порту принтера.

Як і в минулий раз, стаття буде корисна для ознайомлення розробникам молодшого та середнього ланки. В процесі вивчення матеріалу, Ви дізнаєтеся як можна звертатися до низькорівневим DLL WinAPI в C# з допомогою P/Invoke, як встановити, налаштувати і видалити з системи монітори друку, драйвер принтера, сам пристрій друку, відкрити і зв'язати порт для перенаправлення вхідних даних з пристрою друку на монітор, познайомитеся з ключовими моментами застосування маршалирования. Так само ми на практичному прикладі розберемося, як за допомогою нашого API можна зручно маніпулювати пристроями друку в системі, дізнаємося, як можна перехопити оброблені дані після друку принтера і, наприклад, відправити їх на сервер.

Читати далі →

Про ранги і віртуалізацію в RAM

<img src=«habrastorage.org/files/f75/a72/646/f75a72646e1049718c46f8394609ded8.jpg» alt=«image» alt text"/>
У продовження рубрики "конспект адміна" хотілося б розібратися в нюансах технологій ОЗП сучасного заліза: в регістрової пам'яті, ранги, банках пам'яті та інше. Торкнемося докладніше надійності зберігання даних у пам'яті і тих технологій, які незліченну кількість разів на дню позбавляють адміністраторів від печалей BSOD.
Читати далі →

Швидкочитання. Як запам'ятовувати й розуміти більше, якщо навчився читати у вісім разів швидше



У продовження статті «Швидкочитання. Як читати у вісім разів швидше, якщо тебе переслідують демони».
Сьогодні я розповім трохи про запам'ятовування і розуміння прочитаного. Читаючи зі швидкістю 300 слів за хвилину — зрозуміти і запам'ятати текст не складно, але треба прискоритися до 800 і починаються проблеми.

Для нетерплячих: запам'ятовувати більше можна за допомогою схематичних записів. Подробиці під катом.

Читати далі →

Програмування без інтернету

Кафедра гугления
оригінал xkcd
Топ-3 повсякденних питань програміста:
  • як зробити Х,
  • чому працює так, а не так,
  • як назвати змінну.
З третім питанням все зрозуміло — він може бути вирішений в принципі. З першими двома цікавіше.
Щоб отримати відповіді, програмісти дев'яностих читали исходники і керівництва. Програмісти двотисячних почали активно гуглити. А потім в 2008 з'явився Stack Overflow, і став «зовнішньою пам'яттю» для розробників. Тепер на 95% питань є готова відповідь: перше посилання з гугла на Стек.
Читати далі →

Дослідники створили експлоїт для отримання root-доступу до Android-смартфонам з допомогою вразливості Rowhammer



Міжнародна група дослідників з Австрії, Нідерландів і США, інформаційної безпеки розробила атаку, що дозволяє отримати root-доступ до великої кількості Android-пристроїв, пишет видання Ars Tehnica. Для цього експлуатується техніка Rowhammer, що дозволяє здійснювати маніпуляції з даними, що зберігаються в комірках пам'яті. При цьому, раніше вважалося, що атаки з використанням уразливості Rowhammer мають обмежені перспективи реального застосування — новий експлойт демонструє, що їй піддане набагато більше пристроїв, ніж передбачалося (включаючи і працюють на ARM-чіпах).

Дослідники створили спеціальний додаток-експлойт Drammer, яке не потребує ніяких особливих прав і не використовує ніяких Android-вразливостей. Атака здійснюється з допомогою вразливості апаратного забезпечення — аналогічно описаній техніки Rowhammer він «простукивает» біти пам'яті пристрою, змінюючи важливі дані. Це дозволяє отримувати root-доступ до гаджетам виробництва компаній LG, Motorola, Samsung, OnePlus і, можливо, інших вендорів.
Читати далі →

Скільки місця в купі займають 100 мільйонів рядків в Java?

При роботі з природним мовою і лінгвістичному аналізі текстів нам часто доводиться оперувати величезною кількістю унікальних коротких рядків. Рахунок йде на десятки і сотні мільйонів — саме стільки в мові існує, приміром, осмислених комбінацій з двох слів. Основною платформою для нас є Java і ми не з чуток знаємо про її ненажерливості при роботі з такою великою кількістю дрібних об'єктів.

Щоб оцінити масштаб лиха, ми вирішили провести простий експеримент — створити 100 мільйонів порожніх рядків у Яві і подивитися, скільки доведеться заплатити за них оперативної пам'яті.
Читати далі →

Чому не потрібно звалювати на неточність O-оцінок свої проблеми

А ти врахував константу в Про-великому?
На написання цього поста мене спонукала недавня публікація цієї і ось цього перекладів, в яких автори в інтелігентній формі висловлюють своє невдоволення з приводу того, як O-оцінки обчислювальної складності класичних, здавалося б, алгоритмів вступили в дисонанс з їх практичним досвідом розробки. Основним предметом критики стала модель пам'яті, в рамках якої ці оцінки були отримані — вона, мовляв, не враховує особливості ієрархічної організації за принципом швидкодії, яка має місце бути в сучасних обчислювальних системах. Від чого і виростають всі подальші неприємності. І судячи з спостережуваної реакції вдячних читачів, автори далеко не самотні у своєму обуренні та бажання «наїхати» на класиків з їх Про-великими. Так можливо, дійсно варто відправити на звалище історії викладки дядьків у білих халатах, зроблені ними для лампових тугодумающих і пышащих жаром машин, і дати дорогу молодим амбітним моделям, більш точно відображає анатомію сучасного «заліза»?


Читати далі →

Міф про RAM і O(1)


Міська бібліотека Стокгольму. Фото minotauria.
У цій статті я хочу розповісти про те, що оцінювати час звернення до пам'яті як O(1) — це дуже погана ідея, і замість цього ми повинні використовувати O(√N). Спочатку ми розглянемо практичну сторону питання, потім математичну, на основі теоретичної фізики, а потім розглянемо наслідки і висновки.
Введення
Якщо ви вивчали інформатику та аналіз алгоритмічної складності, то знаєте, що прохід по зв'язного списку це O(N), двійковий пошук це O(log(N)), а пошук елемента в хеш-таблиці це O(1). Що, якщо я скажу вам, що все це неправда? Що, якщо прохід по зв'язного списку насправді O(N√N), а пошук в хеш-таблиці це O(√N)?
Не вірите? Я вас зараз буду переконувати. Я покажу, що доступ до пам'яті це не O(1), а O(√N). Цей результат справедливий і в теорії, і на практиці. Давайте почнемо з практики.
Вимірюємо
Давайте спочатку визначимося з термінами. Нотація «Про» велику застосовна до багатьох речей, від використання пам'яті до запущених інструкцій. В рамках цієї статті ми O(f(N)) означає, що f(N) — це верхня межа (найгірший випадок) час, яке необхідне для отримання доступу до N байтів пам'яті (або, відповідно, N однакових за розміром елементів). Я використовую Big O для аналізу часу, але не операцій, і це важливо. Ми побачимо, що центральний процесор довго чекає повільну пам'ять. Особисто мене не хвилює, що робить процесор поки чекає. Мене хвилює лише час, як довго виконується та або інша задача, тому я обмежуюся визначенням вище.
Читати далі →

Як влаштована пам'ять NetApp FAS: NVRAM, Кеш і Тетріс

У цій статті я хочу розглянути внутрішню будову роботи пам'яті СГД NetApp FAS і як вона вміє збирати тетріс.


System Memory

Пам'ять СГД будь-якого контролера NetApp FAS складається з модулів оперативної пам'яті, які використовуються для кешування читання і запису, і запитані батарейкою, звідси приставка «NV» — Non Volatile MEMory / RAM / LOG. ОЗП ділиться на наступні функціональні частини: NVRAM, буфер MBUF (або системний кеш), про які докладніше.

* Скидання даних на диски відбувається MBUF, події заповнювання NVRAM, а не з самого NVRAM'а.

Читати далі →