dementiy 24.01.2011 00:44
Тексты dementiy
dementiy 04.01.2011 01:16
Coding — АТД ядра Linux и их использование в своих приложениях. Связные списки.
«Абстрактный тип данных (АТД) — это тип данных, который предоставляет для работы с элементами этого типа определённый набор функций, а также возможность создавать элементы этого типа при помощи специальных функций» - Wikipedia.В данной части мы будем говорить о реализации такого АТД, как cвязный список (уточнение: речь идет о кольцевых двусвязных списках, но для простоты будем говорить просто список/связный список/двусвязный список). Поверхностно рассмотрим общеизвестный подход к реализации списков, подход, который используется в ядре Linux, и как можно использовать эту реализацию в своих приложениях.
dementiy 12.12.2010 22:42
Есть вопрос! — Sysenter/sysexit?
Пару месяцев назад у меня возник вопрос, о котором я благополучно забыл после безрезультатных попыток узнать в чем дело. И вот снова вспомнил и хотел бы его задать, а то так и не узнаю правды.Начиная с процессоров Pentium II была введена поддержка инструкций SYSENTER/SYSEXIT (быстрые системные вызовы). В Linux их поддержка была осуществлена, где-то с ядер 2.5.х. Таким образом, если процессор (по идее все процессоры, начиная с PII) и ядро включают поддержку этих инструкций - их можно использовать (точнее они будут использоваться библиотекой С через vdso, где определяется какой механизм системных вызовов должен использоваться).
dementiy 06.12.2010 02:08
Coding — Файловая система proc
1. В двух словах о procfs
«procfs – виртуальная файловая система, используемая в UNIX-like операционных системах. procfs позволяет получить доступ к информации о системных процессах из ядра, она необходима для выполнения таких команд как ps, w, top...» - Wikipediaprocfs является псевдофайловой системой, которая хранит и собирает информацию о системе и о процессах в частности. Например, информация о процессоре (процессорах) содержится в файле /proc/cpuinfo и получить ее можно с помощью команды cat:
dementiy 03.11.2010 03:05
Coding — Загрузка ядра ОС Linux
Рассмотрим как происходит загрузка ядра (рассматривалось ядро версии 2.6.35 и архитектура x86_32), но работу BIOS и загрузчиков, таких как GRUB или GRUB2, мы рассматривать не будем.Для начала я проиллюстрирую схему организации памяти, приведенную в документации к ядру (linux/Documentation/x86/boot.txt):
dementiy 24.10.2010 23:02
Coding — Curses GDB
На моей памяти раскрашивали: терминал, страницы справочного руководства (man), использовали htop вместо top, но несправедливо была забыта одна программа, о которой хотелось бы напомнить - CGDB:Рис.1. Приветствие CGDB
dementiy 15.09.2010 18:54
Coding — Привет из свободного от libc мира. Часть 2
Буквально вчера наткнулся на статью под названием "Привет из свободного от libc мира. Часть 1". Автором этой статьи была девушка и, наверное, именно этот факт заставил меня посетить ее блог, где я нашел продолжение первой части (и другие интересные посты, о которых скажу в конце), которое и хотел бы представить здесь. Перед тем, как прочитать вторую часть, прочитайте первую, ее перевод есть на хабре. Итак...
dementiy 17.08.2010 02:55
Coding — IBM. Kernel command using Linux system calls
На днях наткнулся на статью Тима Джонса (Tim Jones) под названием "Kernel command using Linux system calls" и поначалу обрадовался, что автор решил вдохнуть в статью новую жизнь (так как первый раз она была опубликована в 2007 году), но тут же пришло разочарование, увидев, что статья не сильно изменила свой облик и все еще шла речь о ядре 2.6.18 и более ранних версиях. Было принято решение о том, чтобы перевести статью (перевод получился крайне поршивый) и изменить ее содержимое, наполнив более актуальной информацией, то есть для ядер с версии 2.6.32 (на более ранних версиях я не проводил тесты) и до версии 2.6.35. Итак, что из этого вышло судить Вам...
dementiy 18.07.2010 00:14
Coding — Ассемблер в Linux. Использование системных вызовов
«Мастер ФУ! А зачем нужны системные вызовы? - Затем же, зачем тебе нужен твой сосудКакой сосуд? - решил уточнить ученик - А вот какой! - крикнул мастер, ударяя ученика палкой»
Системные вызовы это интерфейс для взаимодействия ядра ОС и внешних приложений. В данной заметке мы не будем рассматривать, как устроены системные вызовы, мы рассмотрим только использование некоторых из них (предназначенных для работы с файлами). Итак начнем:
dementiy 10.07.2010 02:13
Coding — Ассемблер в Linux. Часть первая
“Самый лучший способ изучить новый язык – это сразу начать писать на нем программы” - Брайан Керниган, Деннис РитчиВот и мы последуем этому совету и начнем изучние с простой программы, которая ищет максимальный элемент в массиве.