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



Рад приветствовать вас первым выпуском рассылки.

Меня зовут Валяев Андрей, можно просто Дрон.
Программированием занимаюсь 13 лет, на Ассемблере пишу около 10...
В данный момент работаю в фирме ИнформЗащита системным программистом Unix.

Сразу скажу, что у меня уже сформировался взгляд на то, чем мы собираемся заняться, свои мысли я и буду здесь излагать. Но мои мысли не являются неоспоримыми утверждениями! в чем-то я могу ошибаться, что-то представляю себе не так, как должно быть. По всем вопросам я готов выслушать обоснованную критику. Также рад буду восторженным отзывам и различным вопросам по поводу того, что я напишу ниже. Если кто-то из вас желает поучаствовать в этом, пишите. Отзывы вы можете присылать по адресу mailto:dron@infosec.ru?Subject=AsmOS, желательно с темой "AsmOS".

Выпуски планируется делать еженедельными. Если Вас не устраивает частота выпусков, вы также можете обращаться ко мне. Если вы пропустили какой-либо выпуск, то вы всегда можете найти его в архиве рассылки по адресу http://subscribe.ru/archive/comp.soft.prog.asmos/

От вашей активности будет зависеть содержание дальнейших выпусков рассылки.

В своей работе я буду использовать:

Если вы желаете присоединиться, то лучше также использовать nasm, который можно найти в internet по адресу: http://nasm.2y.net/



Выпуск №1


В этом выпуске вы не увидите исходных текстов готовых программ, это все еще только предстоит написать при вашем активном участии. Поскольку этот выпуск первый, и наш путь только начинается.

И начнем мы наше дело с написания ядра. Ядро, которое мы напишем, будет ориентированно на UNIX-подобные операционные системы. Чтобы нам было проще, мы с самого начала будем стремиться к совместимости с существующими системами.

Задача наша будет состоять в следующем:
Сделать, по возможности, компактное, надежное и быстрое ядро, с максимальным эффектом используя возможности процессора. Писать будем в основном на Ассемблере.


Для начала разберемся, как устроены системы.


Ядро состоит из следующих компонентов:

  1. "Собственно ядро"
  2. Драйвера устройств
  3. Системные вызовы

В зависимости от организации внутренних взаимодействий, ядра подразделяются на "микроядра" (microkernel) и монолитные ядра.
Системы с "микроядром" строятся по модульному принципу, имеют обособленное ядро, и механизм взаимодействия между драйверами устройств и процессами. По такому принципу строятся системы реального времени. Примерно так сделан QNX или HURD.
Монолитное ядро имеет более жесткую внутреннюю структуру. Все установленные драйвера жестко связываются между собой, обычно прямыми вызовами. По таким принципам строятся обыкновенные операционные системы типа Linux, FreeBSD.
Естественно, не все так четко, идеального монолитного или "микроядра" нет, наверное, ни в одной системе, просто системы приближаются к тому или иному типу ядра.

Мне бы очень хотелось, чтобы то, что мы будем делать, больше походило на первый тип ядер.


Немного углублюсь в аппаратные возможности компьютеров.


Один, отдельно взятый, процессор, в один момент времени, может исполнять только одну программу. Но к компьютерам предъявляются более широкие требования. Мало кто, в настоящее время, удовлетворился однозадачной операционной системой (к каким относился DOS, например). В связи с этим разработчики процессоров предусмотрели мультизадачные возможности.
Возможность эта заключается в том, что процессор выполняет какую-то одну программу (их еще называют процессами или задачами). Затем, по истечении некоторого времени (обычно это время меряется микросекундами), операционная система переключает процессор на другую программу. При этом все регистры текущей программы сохраняются. Это необходимо для того, чтобы через некоторое время вновь передать управление этой программе. Программа при этом не замечает каких либо изменений, для нее процесс переключения остается незаметен.

Для того чтобы программа не могла, каким либо образом, нарушить работоспособность системы или других программ, разработчики процессоров предусмотрели механизмы защиты.
Процессор предоставляет 4 "кольца защиты" (уровня привилегий), можно было бы использовать все, но это связано со сложностями взаимодействия программ разного уровня защиты. Поэтому в большинстве существующих систем используют два уровня. 0 - привилегированный уровень (ядро) и 3 - непривилегированный (пользовательские программы).

Всем этим обеспечивается надежное функционирование системы и независимость программ друг от друга.


Теперь немного поподробнее про устройство ядра.


На "Собственно ядро" возлагаются функции менеджера памяти и процессов. Переключение процессов - это основной момент нормального функционирования системы. Драйвера не должны "тормозить", а тем более блокировать работу ядра. Windows - наглядный пример того, что этого нельзя допустить!

Теперь о драйверах. Драйвера - это специальные программы, обеспечивающие работу устройств компьютера. В существующих системах (во FreeBSD это точно есть, про Linux не уверен) предусматриваются механизмы прерывания работы драйверов по истечении какого-то времени. Правда, все зависит от того, как написан драйвер. Можно написать драйвер под FreeBSD или Linux, который полностью блокирует работу системы.
Избежать этого при двухуровневой защите не представляется возможным, поэтому драйвера надо будет тщательно программировать. В нашей работе драйверам мы уделим очень много внимания, поскольку от этого в основном зависит общая производительность системы.

Системные вызовы - это интерфейс между процессами и ядром (читайте-железом). Никаких других методов взаимодействия процессов с устройствами компьютера быть не должно. Системных вызовов достаточно много, на Linux их 190, на FreeBSD их порядка 350, причем большей частью они совпадают, соответствуя стандарту POSIX (стандарт, описывающий системные вызовы в UNIX). Разница заключается в передаче параметров, что легко будет предусмотреть. Естественно, мы не сможем сделать ядро, работающее одновременно на Linux и на FreeBSD, но по отдельности совместимость вполне реализуема.

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

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


Вопросы к подписчикам


Какой бы вы хотели видеть СВОЮ систему?
На какую систему она должна походить?
Сколько места на винчестере занимать?
Сколько памяти требовать для работы?

Ответы на эти вопросы присылайте по адресу: mailto:dron@infosec.ru?Subject=AsmOS


По всем вопросам вы можете обращаться ко мне по адресу: mailto:dron@infosec.ru?Subject=AsmOS.

При поддержке Kalashnikoff.ru


Hosted by uCoz