Сообщения

Показаны сообщения с ярлыком "os"

Организация памяти

Изображение
 Адресное пространство 32-битного процессора состоит из 2^32 ячеек памяти  пронумерованных от 0 и до 2^32-1  Код int = 10; компьютер поймет так: нужно взять какую-то ячейку с номером стопицот и поместить в нее целое число 10.   Архитектура х86 поддерживает стек. Стек это непрерывная область оперативной памяти организованная по принципу стопки тарелок, вы не можете брать тарелки из середины стопки, можете только брать верхнюю и класть тарелку вы тоже можете только на верх стопки.  Стек в памяти растет сверху вниз, это значит что при добавлении значения в него адрес вершины стека уменьшается, а когда вы извлекаете из него, то адрес вершины стека увеличивается. Организация памяти

Устройство стековых и регистровых процессоров

Любая программа выполняется процессором, теми физическими ресурсами, которые он может предоставить. У процессора нет типов данных, типов переменных, нет сложных циклов. Есть только if (условие: если - то) и jmp (от jump - прыжок, перемещение по коду). Язык Си -- это самый простой "ассемблер высокого уровня" - уже есть структурные операторы, абстрактные типы данных, указатели, зачаточные модули и т.п.      Сноска:     Операторы в Си Но есть и проблемы. Указатели, например, ведут к небезопасному коду, нет некоторых желаемых возможностей и т.д. Решением является создание виртуальной машины, виртуального ЦПУ, вместо реального физического ЦПУ. В виртуальном ЦПУ убраны все опасные операции и он лучше переносится на другую среду. Виртуальные машины делятся на стековые и регистровые. Стековая машины работает с данными на верхушке стека. То есть, код получается проще, компилятор писать проще и т.д. Но при этом получается дополнительный уровень косвенно...

Что такое стек и куча

Изображение
 Когда компьютеры были большими, а программы маленькими, память компьютера (все 16Кб) выглядела так: Четверть памяти (4кБ) использовала операционная система для работы с оборудованием, для копирования данных, работы с устройствами ввода-вывода; остальное отводилось под пользовательские задачи. Компьютер был однозадачным - одновременно мог выполнять только одну задачу. Память многозадачного компьютера выглядит так: Часть памяти отводится на задачу А, часть на задачу В. Задачи А и В хранятся в памяти. Но что будет, если программа В вторгнется в пределы памяти программы А, или перезапишет область памяти операционной системы? Как помешать ей это сделать? Ведь задач может быть не две и не три, а несколько. И количество задач в разное время может быть разным. Чтобы компьютер мог одновременно выполнять несколько задач, используется адресное пространство имеющее вид «код-стек-куча» (code-stack-heap) Здесь код - скомпилированный код программы из нулей и единиц, стек (stack)...

Этапы загрузки компьютера

Изображение
Давным-давно загрузка компьютера начиналась с установки и считывания перфоленты. Сейчас перфоленты ушли в прошлое, но проблема осталась. Заключается оно в том, что компьютер может выполнять только программы, находящиеся в оперативной памяти, а операционная система установлена на жестком диске. Решением проблемы является постоянная память ПЗУ или ROM установленная на материнской плате и записанная в ней программа BIOS, которая запускает установку операционной системы. ПЗУ не очищается при перезагрузке компьютера, а программа BIOS в ней записывается только один раз - на заводе изготовителе. Можно и перепрошить (перезаписать) BIOS, но если в процессе перезаписи отключится электричество, включить компьютер уже не удастся. Этапы загрузки компьютера