Урок 0 Введение

Начальная страница курса


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

1. Операционные системы

Операционная система это просто очень сложная программа. Её задача организовать работу других программ на компьютере включая распределение времени компьютера, памяти, устройств и других ресурсов. Вы наверное слышали о больших семействах операционных систем: GNU/Linux, Mac OS X и Microsoft Windows. Другим устройствам тоже нужны операционные системы. Например телефон может использовать операционную систему Android, iOS или Windows Phone.[1]

Так как операционная система должна взаимодействовать с устройствами компьютера, она должна иметь специфические сведения об устройствах в данной системе. Чтобы позволить операционной системе работать на различных компьютерах была введена концепция драйвера. Драйверы — это маленькие программы, которые могут быть добавлены и удалены из операционной системы чтобы позволить ей взаимодействовать с определенным устройством. В этом курсе мы не будем рассматривать как создать такие подключаемые драйверы, а вместо этого сфокусируемся на том как создать драйверы специально для Raspberry Pi.

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

2. Коды ассемблера

Этот курс будет написан исключительно на языке ассемблера. Код ассемблера очень близок к тому, что понимает компьютер. В компьютере есть небольшое устройство, которое называется процессором, оно может выполнять простые операции вроде сложения чисел. Есть еще несколько других чипов, которые называются RAM, они служат для хранения чисел. Когда у компьютера есть питание, процессор выполняет последовательность инструкций (которую ему предоставил программист), они заставляют процессор изменять числа в RAM и таким образом взаимодействовать с подключенными устройствами. Код на языке ассемблера — это трансляция этих инструкций в читабельный для человека вид.

Обычно программист пишет программу на языках программирования вроде C++, Java, C#, Basic и т.д., а затем программа компилятор преобразовывает то, что написал программист в коды ассемблера, которые далее преобразовывается в бинарные коды.[2] Бинарные коды это именно то что понимает компьютер, но их практически невозможно читать человеку. Код ассемблера намного лучше, но Вас может разочаровывать как мало доступно команд. Помните, что все что вы напишете в кодах ассемблера это что-то что напрямую понимает процессор, следовательно все команды просты, т.к. физическая электрическая цепь должна выполнить каждую из них.

Как и в случае обычного программирования, существует много различных языков ассемблера, тем не менее в отличии от обычного программирования причина их возникновения в том, что существует огромное количество разных процессоров, каждый из которых спроектирован понимать разный язык. Поэтому программа написанная на ассемблере для одной машины, не будет работать на другой. Для большинства случаев это катастрофа, если каждую программу нужно переписать для каждой системы на которой она будет использоваться, но для операционной системы это не такая уж большая проблема, т.к. она все равно будет переписана из-за различного оборудования. Тем не менее большинство операционных систем написаны на С++ или С, это значит, что они могут быть легко преобразованы практически полностью, кроме участков, которые безусловно должны быть написаны на ассемблере.

Теперь Вы готовы перейти к первому уроку.


[1] Более полный список операционных систем можно найти на Wikipedia.
[2] Я конечно же упрощаю объяснение обычного программирования, в действительности оно сильно зависит от языка и машины. Ради интереса посмотрите https://en.wikipedia.org/wiki/Compiler

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий