<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="https://sozdaiossam.mybb.ru/export.php?type=rss" rel="self" type="application/rss+xml" />
		<title>Создай ос сам</title>
		<link>https://sozdaiossam.mybb.ru/</link>
		<description>Создай ос сам</description>
		<language>ru-ru</language>
		<lastBuildDate>Fri, 17 Mar 2023 14:24:54 +0300</lastBuildDate>
		<generator>MyBB/mybb.ru</generator>
		<item>
			<title>Ремонт компьютеров,ноутбуков по России</title>
			<link>https://sozdaiossam.mybb.ru/viewtopic.php?pid=4#p4</link>
			<description>&lt;p&gt;Компьютеры, ноутбуки - техника современная и не застрахована от поломок. К такому типу техники нужен своевременный и комплексный подход, который могут обеспечить наши компетентные мастера. Самостоятельно починить компьютер сможет 5 человек из 100, а поломки происходят у каждого второго! Мы предоставляем услуги высокого качества по ремонту и исправлению проблем компьютерной техники более чем в 60 городах по РФ. Так же наши филиалы представлены в Республике Беларусь. Заявки обрабатываются нашими сотрудниками и не перепродаются в сторонние компании. Перейти:&amp;#160; &lt;a href=&quot;https://rempc-v-mo.ru/?t=33705&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://rempc-v-mo.ru/?t=33705&lt;/a&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (aydlldkwkh)</author>
			<pubDate>Fri, 17 Mar 2023 14:24:54 +0300</pubDate>
			<guid>https://sozdaiossam.mybb.ru/viewtopic.php?pid=4#p4</guid>
		</item>
		<item>
			<title>Занятие 2</title>
			<link>https://sozdaiossam.mybb.ru/viewtopic.php?pid=3#p3</link>
			<description>&lt;p&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;&lt;span style=&quot;display: block; text-align: center&quot;&gt;Intro&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Здравствуйте! Сегодняшний выпуск - практико-теоретический и наряду с самозапускающейся без помощи ОС программой, мы рассмотрим теоретические вопросы загрузки компьютера, а также перенесемся на полсотни лет назад в прошлое и посмотрим на операционные системы тех лет. Ну а обещанный рассказ об эволюции ОС мы оставим на следующий раз, ок?&lt;/p&gt;
						&lt;p&gt;[предыдущие выпуски рассылки вы всегда можете найти по &lt;a href=&quot;http://www.subscribe.ru/archive/comp.soft.prog.osdev/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;адресу&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;&lt;span style=&quot;display: block; text-align: center&quot;&gt;Выпуск 2&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 10px&quot;&gt;&lt;strong&gt;&lt;span style=&quot;display: block; text-align: center&quot;&gt;Часть первая - практическая&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Сегодня, уважаемые подписчики, я сдержу свое обещание и мы напишем программу, которая сможет самостоятельно загрузиться и выполниться (без помощи операционной системы!). Но все же, даже в начале этой практической части нас ждет немного теории о том, как происходит загрузка после включения питания или нажатия кнопки &amp;quot;reset&amp;quot; (еще раз напомню, что вся информация, которая относится к конкретному процессору, относится к процессорам архитектуры IA-32, если не указано иначе).&lt;/p&gt;
						&lt;p&gt;После начала работы, процессор может выполнить операцию самотестирования, которая называется BIST - built-in self test. А может ее и не выполнять (зависит от того, &amp;quot;попросит&amp;quot; ли этого чипсет). После этого процессор выполняет свою первую инструкцию, которая находится по физическому адресу 0xFFFFFFF0. Да-да, в самой вершине адресного пространства! Именно там находится (точнее должна находится) EPROM (Erasable Programmable Read-Only Memory) [что это такое смотрите внизу страници], в которой записана программа дальнейшей инициализации аппаратного обеспечения компьютера. Программное обеспечение, которое получает управление сразу после загрузки компьютера, называется BIOS (Basic Input/Output System), т.е. Базовая Система Ввода/Вывода.&lt;/p&gt;
						&lt;p&gt;Задача BIOS - распознать аппаратную начинку компьютера, провести над ней серию тестов и (наконец-то!) отыскать и загрузить операционную систему.&lt;/p&gt;
						&lt;p&gt;В зависимости от установок BIOS, конкретный порядок устройств, на которых ищется загрузчик ОС, может меняться, но, в общем случае, этими устройствами могут быть: Floppy-дисковод, жесткие диски, привод CD-ROM/R/RW, сервер сети, и даже некоторые экзотические накопители, вроде жестких дисков, подключаемых к шине USB.&lt;/p&gt;
						&lt;p&gt;Наиболее простой способ загрузки ОС, с точки зрения ее разработчика (то есть нас с вами), - это загрузка с дискеты. Если BIOS находит дискету в дисководе, она считывает ее первый сектор (а это первые 512 байт) в оперативную память по адресу 0x0 : 0x7C00. Более подробно о том, как на самом деле хранятся данные на магнитных дисках (к которым относятся и дискеты), мы поговорим в следующий раз, а сейчас наша задача такова:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160;1. Написать программу объемом 512 байт, которая выполнит вывод текста на экран&lt;br /&gt;&amp;#160; &amp;#160;2. Записать эту программу на дискету&lt;br /&gt;&amp;#160; &amp;#160;3. Вставить дискету в дисковод, нажать &amp;quot;reset&amp;quot; и наслаждаться результатом :)&lt;/p&gt;
						&lt;p&gt;Вот какая программа у меня получилась:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 35em&quot;&gt;&lt;pre&gt;[ORG 0x7C00]

start:

cli
mov ax, cs
mov ds, ax
mov ss, ax
mov sp, start

sti

mov si, msg
call kputs

cli
hlt
jmp short $

kputs:

.loop:
lodsb
test al, al
jz .quit
mov ah, 0x0E
int 0x10
jmp short .loop
.quit:
ret


msg: db &amp;quot;Hello from the world of real programming!&amp;quot;,0x0A,0x0D,0
times 510-($-$$) db 0
db 0xAA, 0x55&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Скомпилировать эту программу можно используя опцию -f bin NASM&#039;а, которая приказывает ему создать чистный бинарный файл, без заголовков и прочих излишеств. То есть запускать NASM нужно так (учитывая что файл имеет название start.asm):&lt;br /&gt;nasm -fbin start.asm -o start.bin&lt;br /&gt;Получившийся файл start.bin должен иметь размер ровно 512 байт. Эти 512 байт как раз и будут тем загрузчиком, размещенным в начальном секторе дискеты, который будет найден и загружен BIOS.&lt;/p&gt;
						&lt;p&gt;Если вы используете для тестирования VMWare Workstation, то этот файл можно прямо прописывать как файл-образ дискеты (если VMWare Workstation обнаруживает образ дискеты объемом менее настоящей дискеты, то обращения к несуществующим данным будут невозможны, но существующая часть дискеты будет отлично работать)&lt;/p&gt;
						&lt;p&gt;Чтобы записать этот загрузчик на настоящую дискету (в целях проверки загрузчика в &amp;quot;боевых&amp;quot; условиях) нужно проделать следующее:&lt;br /&gt;Если вы разрабатываете в UNIX, то используйте команду:&lt;br /&gt;cp start.bin /dev/fd0 (где /dev/fd0 - ваш флопик)&lt;br /&gt;Если же вы используете Windows, то для записи можно использовать программу rawwrite,которая находится на &lt;a href=&quot;http://uranus.it.swin.edu.au/~jn/linux/rawwrite.htm&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://uranus.it.swin.edu.au/~jn/linux/rawwrite.htm&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;В следующем выпуске мы подробно разберем, что именно делает программа-загрузчик, ну а пока попробуйте разобраться в ней самостоятельно!&lt;br /&gt;Часть вторая - теоретическая&lt;br /&gt;Откуда есть пошли операционные системы, и что это вообще такое?&lt;/p&gt;
						&lt;p&gt;Давайте посмотрим с высоты нашего третьего тысячелетия на вычислительные машины пятидесятых годов прошлого века. Громоздкие, занимавшие целые здания, они управлялись множеством кнопочек, рычажков и переключателей, с помощью которых оператор мог загрузить программу с перфокарт (или с каких-нибудь других носителей) и управлять действиями компьютера. Оператор ЭВМ представлял собой как бы &amp;quot;живую&amp;quot; операционную систему; он заботился о следующем:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160;1. Управление ресурсами компьютера (к примеру отработавшую программу необходимо было выгрузить из памяти и т.п.)&lt;br /&gt;&amp;#160; &amp;#160;2. Представлял собой &amp;quot;упрощенный интерфейс&amp;quot; при взаимодействии с компьютером с точки зрения пользователей. Пользователь мог просто сказать оператору: &amp;quot;загрузи-ка мне вот эту перфокарту&amp;quot;, даже не постигая тонкости управления машиной.&lt;/p&gt;
						&lt;p&gt;В сущности, все современные операционные системы выполняют такие же функции, как и наш воображаемый оператор ЭВМ 50-х годов прошлого века. Они точно так же распределяют ресурсы компьютера и предоставляют пользователю (а еще явственнее - программисту) развитые средства взаимодействия с компьютером (например в Windows окно с сообщением можно создать при помощи системной функции MessageBoxA или MessageBoxU, хотя на самом деле процессор (да и все другое аппаратное обеспечение) даже не имеют представления о том, что такое окно. Максимум, что они могут - это выводить разноцветные точки в нужных местах экрана. Но ведь прикладному программисту даже не нужно знать, что происходит под капотом системы!)&lt;/p&gt;
						&lt;p&gt;С этой точки зрения операционную систему можно рассматривать как библиотеку функций, которые программист может использовать в своих программах. Причем эти функции остаются одними и теми же на компьютерах с разным аппаратным обеспечением (в определенных пределах, конечно). Представляете что было бы, если бы программист был вынужден переписывать свою программу из-за того, что на новом компьютере у него стоял жесткий диск большего размера чем на предыдущем?!&lt;/p&gt;
						&lt;p&gt;В общем - операционная система прячет малое за большим, менее важные детали работы с аппаратурой за крупными информационными структурами, увеличивая в сотни, тысячи и десятки тысяч раз эффективность работы программиста и пользователя.&lt;br /&gt;Outro&lt;/p&gt;
						&lt;p&gt;На сегодня все, надеюсь, что вам было интересно. В следующий раз мы продолжим разговор о темах, затронутых в сегодняшнем выпуске.&lt;/p&gt;
						&lt;p&gt;Мой почтовый ящик всегда открыт для вас: -&lt;br /&gt;Также вы можете задавать интересующие вас вопросы в форуме &lt;a href=&quot;http://lowlevel.ru&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;lowlevel.ru&lt;/a&gt;&lt;br /&gt;Всего наилучшего!&lt;br /&gt;Lonesome&lt;br /&gt;Для любопытных&lt;/p&gt;
						&lt;p&gt;EPROM - в принципе являясь ROM (т.е. памятью только для чтения), имеет возможность перезаписи. Данные в ней хранятся в виде электрических зарядов, находящихся в специальных &amp;quot;изолированных&amp;quot; или &amp;quot;плавающих&amp;quot; транзисторных шлюзах. Этот метод хранения достаточно надежен, чтобы удерживать данные в течении как минимум десяти лет. Перепрограммирование такой памяти возможно при помощи использования т.н. туннельного эффекта, при котором новые данные &amp;quot;вставляются&amp;quot; в транзисторные шлюзы. Стереть же память можно облучив ее чип ультрафиолетовым светом. После этой операции шлюзы разряжаются и их можно перепрограммировать. [Free Online Dictionary of Computing]&lt;/p&gt;</description>
			<author>mybb@mybb.ru (Verdgil)</author>
			<pubDate>Thu, 10 Mar 2011 10:12:16 +0300</pubDate>
			<guid>https://sozdaiossam.mybb.ru/viewtopic.php?pid=3#p3</guid>
		</item>
		<item>
			<title>Занятие 1</title>
			<link>https://sozdaiossam.mybb.ru/viewtopic.php?pid=2#p2</link>
			<description>&lt;p&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;&lt;span style=&quot;display: block; text-align: center&quot;&gt;Intro&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Рад приветствовать вас в первом выпуске рассылки, уважаемые подписчики!&lt;/p&gt;
						&lt;p&gt;Вы спросите - зачем еще одна рассылка про разработку ОС? (лично я нашел в каталоге субскрайба две таких). Ответ прост - первая из существующих рассылок не выходит уже полгода, вторая - год. Хотя в них еще не рассказали и десятой части важных и интересных вещей, касающихся нашей темы.&lt;/p&gt;
						&lt;p&gt;Как я и обещал в описании рассылки, практика и теория будут совмещаться и тесно переплетаться. Рассказывать я буду с нуля - но тем не менее буду предполагать, что вы знакомы с такой штукой как ассемблер (в противном случае практическая часть рассылки будет для вас потеряна)&lt;/p&gt;
						&lt;p&gt;Вы всегда можете связаться со мною по email:-. Разработка ОС - не самая легкая тема, поэтому не стесняйсесь задавать любые связанные с ней вопросы.&lt;br /&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;&lt;span style=&quot;display: block; text-align: center&quot;&gt;Выпуск 1 - среда разработки&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Речь в первом выпуске рассылки пойдет о том, как обустроить свой компьютер, и какие программы для этого понадобятся, чтобы сделать процесс разработки ОС не только возможным, но и максимально эффективным и приятным. Поскольку на практических занятиях мы будем рассматривать операционные системы для платформы IA-32 (других процессоров у меня нет :)), то я предполагаю, что установленная на вашем компьютере ОС - либо Windows, либо один из современных клонов UNIX (Linux, *BSD и им подобные).&lt;/p&gt;
						&lt;p&gt;Первое, что нам понадобится - это ассемблер. Я выбрал &lt;a href=&quot;http://www.nasm.us/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;NASM&lt;/a&gt;, который имеет версии как под Windows, так и под UNIX. Он обладает привычным Intel-синтаксисом и перейти на него пользователям TASM или MASM не составит труда.&lt;/p&gt;
						&lt;p&gt;Вторая вещь, отсутствие которой очень сильно осложнит нашу жизнь, - это виртуальная машина (эмулятор процессора). Так как обычно при разработке очень часто приходится тестировать написанный код, то, согласитесь, необходимость записывать каждый раз свежескомпилированную систему на дискету и перезагружать компьютер - это чрезвычайно раздражающий фактор. Эмулятор же не только позволит загружать нашу систему в отдельном окне, не прерывая процесс разработки, но и может использовать виртуальный образ дискеты вместо настоящей. Луший эмулятор по моему мнению - &lt;a href=&quot;http://rutracker.org/forum/viewtopic.php?t=2354830&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;VMWare Workstation&lt;/strong&gt;&lt;/a&gt;&lt;a href=&quot;http://www.vmware.com&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;VMWare Workstation&lt;/strong&gt;&lt;/a&gt;. Программа платная, но пользоваться ею можно сколько угодно - достаточно лишь обращаться каждые 30 дней на сайт разработчика за продлением лицензии. Не слишком большая цена за удобство, как вы считаете? VMWare Workstation имеет версии как под Windows, так и под Linux и пожалуй ее единственный недостаток (помимо платности разумеется) - это то, что весит она около 12 мбайт.&lt;/p&gt;
						&lt;p&gt;Третье - программа &#039;make&#039;. Если вы программируете под UNIX, то наверняка знакомы с этой программой, а вот программисты в Windows частенько про нее забывают. Эта утилита призвана спасти нас от набивания многокилометровых приказаний компилятору и компоновщику (например на моей системе для того чтобы протестировать разрабатываемую ОС, достаточно лишь запустить &#039;make&#039;, а потом нажать кнопку &#039;Power On&#039; в VMWare Workstation - сборка ОС и запись ее в образ дискеты будут произведены автоматически в соответствии с Makefile). Впрочем пока эта программа нам не нужна, а когда мы в лоб столкнемся с необходимостью ее использования, я расскажу о ней поподробнее.&lt;/p&gt;
						&lt;p&gt;Четвертое - шестнадцатеричный редактор/дизассемблер. Основное, что от него требуется - скорость работы, поэтому я выбрал &lt;a href=&quot;http://biew.sourceforge.net/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;BIEW&lt;/a&gt;. У него, как и у всех вышеперечисленных программ, существуют версии и под Windows и под UNIX. Эта программа пригодится нам для быстрой проверки - &amp;quot;чего же этот ассемблер скомпилировал-то?!&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Вот какие инструменты использую я:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160;1. NASM версии 0.98.36&lt;br /&gt;&amp;#160; &amp;#160;2. VMWare Workstation for Linux версии 3.2.0 build-2230&lt;br /&gt;&amp;#160; &amp;#160;3. GNU Make версии 3.79.1&lt;br /&gt;&amp;#160; &amp;#160;4. BIEW версии 5.3.2&lt;/p&gt;
						&lt;p&gt;Вот пожалуй и все программы, которые пригодятся нам на начальном этапе (напоминаю, что каждая их них кроме первой лишь облегчает работу, но никак не является необходимой. Поэтому не отчаивайтесь, если какую-то из них вы не сможете достать). Позже нам понадобятся такие вещи, как компилятор с языка Си (реализовывать сложные компоненты ОС на чистом ассемблере затруднительно, хотя пример MenuetOS показывает, что это все-таки возможно, но чревато потерей быстродействия системы (!) и многочисленными трудноуловимыми багами), компоновщик и некоторые другие.&lt;br /&gt;Outro&lt;/p&gt;
						&lt;p&gt;Теперь, когда у вас под рукой есть все нужные программы, мы сможем непосредственно приступить к написанию чего-нибудь, что сможет запуститься без наличия операционной системы (это очень важный шаг!). Ну а кроме того в следующем выпуске вы наконец-то узнаете, что это за зверь такой - операционная система и об эволюции систем от тех, которые использовали наши деды лет эдак пятьдесят назад, до современных монстров, таких как Windows NT и Linux&lt;/p&gt;</description>
			<author>mybb@mybb.ru (Verdgil)</author>
			<pubDate>Thu, 10 Mar 2011 09:42:31 +0300</pubDate>
			<guid>https://sozdaiossam.mybb.ru/viewtopic.php?pid=2#p2</guid>
		</item>
	</channel>
</rss>
