Где находится программа, которая запускается первой при включении компьютера

Обновлено: 05.07.2024

Компьютеры и программное обеспечение идут рука об руку. Компьютеры сильны, потому что они могут делать много вещей, а программы — это то, как мы заставляем компьютеры делать все это.

Видео: что такое программирование?

Компьютерное оборудование

  1. Центральный процессор (ЦП)
  2. Основная память (оперативная память или ОЗУ)
  3. Дополнительные устройства хранения
  4. Устройства ввода
  5. Устройства вывода

ЦП

ЦП — это сердце компьютера. Программа – это последовательность инструкций, хранящихся в оперативной памяти. Когда программа запускается, ЦП получает инструкции и выполняет или следует инструкциям.

Цикл выборки/декодирования/выполнения

  • fetch — получение следующей инструкции из основной памяти.
  • декодировать — определить, какую инструкцию выполнять.
  • выполнить — выполнить инструкцию.

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

Арифметические и логические операции включают сложение, вычитание, умножение, деление и сравнение значений (равенство, меньше, больше).

Операции потока управления используются для определения следующей инструкции. Например, в зависимости от инструкции программа может пропустить или перейти к другой части списка инструкций.

Вы узнаете подробности о том, как ЦП обрабатывают инструкции в CS 271, Компьютерная архитектура и язык ассемблера.

Основная память

Основная память или ОЗУ используется для хранения программы во время ее выполнения и для хранения данных, с которыми работает программа.

Сведения об оперативной памяти

  • ЦП может быстро получить доступ к любому месту в ОЗУ.
  • ОЗУ называется энергозависимой памятью. В отличие от постоянного хранилища, когда компьютер выключается или когда программа завершает выполнение, значения, хранящиеся в ОЗУ, стираются.
  • ОЗУ делится на единицы хранения, называемые байтами. Байт — это последовательность из восьми битов.
  • Бит — это наименьший элемент ОЗУ, в нем хранится двоичная цифра, 0 или 1. Каждая программа и каждое значение данных на вашем компьютере хранится в виде последовательностей нулей и ls.

Дополнительное хранилище

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

Как и в основной памяти, во вторичном хранилище также хранится информация в виде последовательностей нулей и единиц в виде битов и байтов.

Устройства ввода

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

Устройства вывода

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

Видео: аппаратное и программное обеспечение

Программы и языки программирования

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

Алгоритмы

Алгоритм задает конечную последовательность четко определенных операций для решения конкретной проблемы или класса проблем. Шаги алгоритма можно описать разными способами, включая слова (также известные как естественный язык), блок-схемы, псевдокод (описанный ниже) и код языка программирования.

По мере увеличения сложности задач важно разрабатывать алгоритмы, которые будут эффективными (т. е. быстрыми) и правильными в том смысле, что они будут давать указанный результат для любых допустимых входных данных. На курсе CS 325 "Анализ алгоритмов" вы узнаете о методах анализа сложности и доказательства правильности.

Превращение алгоритмов в программы

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

Машинный код, язык ассемблера и компиляторы

ЦП компьютера выполняет инструкции вашей программы. Однако пока вы пишете программу на таком языке, как C++, процессор компьютера может следовать только инструкциям, закодированным как последовательность Os и s.Программный компилятор — это специальная программа, которая преобразует операторы, написанные на языке программирования, в двоичную форму (Os и s>, называемую машинным кодом. Поскольку нам трудно распознать последовательности 0 и 1, существует низкоуровневая (близкая к аппаратной ) язык программирования, называемый языком ассемблера, который использует короткие сокращения и шаблоны для описания того, что должен делать ЦП. Например, оператор ассемблера "MOV AL, 61h;" означает копирование следующего значения (61h, шестнадцатеричное представление 97) в ячейку памяти " АЛ".

Вы узнаете гораздо больше о машинном коде и языке ассемблера в CS 271, Архитектура компьютера и язык ассемблера.

Языки высокого уровня

В этом классе вы изучите C++, язык высокого уровня. Языки высокого уровня — это компьютерные языки, которые скрывают многие низкоуровневые детали компьютерной системы и, как правило, используют более естественные слова и символы по сравнению со словами, такими как «MOV», на языке ассемблера, который является языком низкого уровня.

C++ — один из многих языков высокого уровня. Чтобы увидеть текущую популярность всех компьютерных языков, перейдите в индекс TIOBE.

Исходный код, объектный код и исполняемый код

Исходный код

Когда вы начнете создавать программы в этом классе, вы будете создавать исходный код. Исходный код сохраняется в простом текстовом файле, называемом исходным файлом.

Преобразование исходного кода в исполняемый код

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

Во время преобразования исходного кода в исполняемый файл компилятор C++ создаст объектный код.

Исходный код преобразуется компилятором в так называемый объектный код. Объектный код программы на C++ сохраняется в файлах с суффиксом .o или .obj. На последнем этапе, называемом связыванием, объектные файлы объединяются с любыми библиотечными подпрограммами (подпрограммами, предоставленными языком для использования вами) для создания окончательного исполняемого файла с расширением .exe.

В зависимости от того, как вы компилируете свою программу, вы можете увидеть или не увидеть различные этапы преобразования исходных файлов в исполняемый файл. Например, во многих IDE (интегрированных средах разработки, таких как Visual Studio, Code:: Blocks или XCode) промежуточные шаги выполняются автоматически, поэтому вы можете нажать кнопку «сборка», и исполняемый файл будет создан.

Из чего состоит программа?

Языковые элементы

Большинство языков программирования включают следующие элементы.

Ключевые слова

Ключевые слова – это слова, имеющие особое значение в языке. Их можно использовать только по прямому назначению. Также известны как зарезервированные слова.

Определяемые программистом идентификаторы

Идентификаторы, определяемые программистом, — это слова, которые вы выбираете как программист для определения переменных или процедур программирования.

Операторы

Операторы выполняют операции над одним или несколькими операндами. Операнд — это часть данных. Различные арифметические символы, такие как +, * и /, являются примерами операторов.

Пунктуация

Знаки препинания отмечают начало или конец утверждения или отдельных элементов в списке.

Синтаксис

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

Специфика C++. Вы начнете изучать элементы языка, характерные для C++, в главе 2.

Строки и операторы

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

программа, отображающая номера строк и код в примере программы под названием hello world

На снимке экрана показана программа с ошибкой. Когда программа была скомпилирована, выходные данные (серые окна выше) включали «source.cpp(B)», что указывало на то, что проблема была в строке 8 файла с именем source. цена за тысячу показов

Инструкция — это полная инструкция, которая заставляет компьютер выполнить какое-либо действие. Оператор может занимать более одной строки. Значение оператора станет более понятным, как только вы начнете программировать в главе 2.

Переменные

Инструкция — это полная инструкция, которая заставляет компьютер выполнить какое-либо действие. Оператор может занимать более одной строки. Значение оператора станет более понятным, как только вы начнете программировать в главе 2.

Ввод и вывод

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

Во многих, если не во всех заданиях CS 161, вы будете направлять вывод программы на консоль. Вы не часто видите вывод консоли, если запускаете приложения в Windows или OS X, потому что эти типы прикладных программ используют графические пользовательские интерфейсы (GUI). Однако программирование с графическим интерфейсом добавляет гораздо больше работы по созданию программы, и наша работа в CS 161 состоит в том, чтобы научить вас основам программирования, поэтому мы будем придерживаться консольного вывода.

Пример вывода в консоль

консольный вывод программа, выводящая текст hello world

Активность

Выберите хотя бы одно занятие, которое учащиеся могут активно вовлечь в изучение материала. Чем больше, тем лучше!

Просмотреть

Обобщите содержание раздела. Кроме того, не забудьте связать материал с тем, что будет дальше, чтобы помочь учащимся связать этот материал со следующим материалом.

Компьютер без запущенной программы — это просто кусок электроники. Первое, что должен сделать компьютер при включении, это запустить специальную программу, называемую операционной системой. Задача операционной системы — помогать другим компьютерным программам работать, обрабатывая сложные детали управления аппаратным обеспечением компьютера.

Обзор процесса загрузки


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

Микросхема BIOS указывает ему искать в фиксированном месте, обычно на жестком диске с наименьшим номером (загрузочный диск), специальную программу, называемую загрузчиком (в Linux загрузчик называется Grub или LILO). Загрузчик загружается в память и запускается. Задача загрузчика — запустить настоящую операционную систему.

Функции BIOS

POST (самотестирование при включении) Самотестирование при включении выполняется каждый раз, когда вы включаете компьютер. Звучит сложно, потому что так оно и есть. Ваш компьютер делает так много, когда он включен, и это только часть этого.

Он инициализирует различные аппаратные устройства. Это важный процесс, обеспечивающий бесперебойную работу всех устройств без каких-либо конфликтов. BIOS, следующие за ACPI, создают таблицы, описывающие устройства в компьютере.

Сначала POST проверяет BIOS, а затем тестирует CMOS RAM. Если с этим проблем нет, POST продолжает проверять ЦП, аппаратные устройства, такие как видеокарта, дополнительные устройства хранения, такие как жесткий диск, дисководы гибких дисков, Zip-диск или дисководы CD/DVD. Если обнаружены какие-либо ошибки, то на экране отображается сообщение об ошибке или раздается несколько звуковых сигналов. Эти звуковые сигналы известны как звуковые коды POST.

Главная загрузочная запись

Главная загрузочная запись (MBR) — это небольшая программа, которая запускается при загрузке компьютера для поиска операционной системы (например, Windows XP). Этот сложный процесс (называемый процессом загрузки) начинается с POST (самотестирование при включении питания) и заканчивается, когда Bios ищет MBR на жестком диске, который обычно находится в первом секторе, первой головке, первом цилиндре (цилиндр 0). , головка 0, сектор 1).

Типичная структура выглядит следующим образом:


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

инициализировать

  • 5 –> Полный многопользовательский режим с сетью и X display manager

Приведенный выше дизайн init называется SysV, что произносится как System Five. На данный момент написано несколько других реализаций init. Некоторые из популярных реализаций — это systemd и upstart. Upstart используется в Ubuntu с 2006 года. Более подробную информацию о выскочке можно найти здесь.

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

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное или хотите поделиться дополнительной информацией по теме, обсуждаемой выше.

Загрузка — это последовательность запуска, которая запускает операционную систему компьютера при его включении. Последовательность загрузки — это первоначальный набор операций, которые компьютер выполняет при включении. Каждый компьютер имеет последовательность загрузки. Обычный компьютер не понимает последовательность загрузки, но это важно знать для настройки компьютера и устранения неполадок.

Загрузчик¶

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

Программа, запускающая «цепную реакцию», которая заканчивается загрузкой всей операционной системы, называется загрузчиком (или загрузчиком начальной загрузки). Термин творчески возник из-за того, что ранние дизайнеры представляли себе, что перед тем, как компьютер «запустится», он должен быть «пристегнут». Единственная задача загрузчика — загрузить другое программное обеспечение для запуска операционной системы. Часто используются многоступенчатые загрузчики, в которых несколько небольших программ возрастающей сложности последовательно вызываются одна за другой, пока последняя из них не загрузит операционную систему.

Загрузочные устройства¶

Загрузочное устройство — это устройство, с которого загружается операционная система. Современный BIOS ПК (базовая система ввода-вывода) поддерживает загрузку с различных устройств. К ним относятся локальный жесткий диск, оптический дисковод, дисковод для гибких дисков, сетевая карта и USB-устройство. Как правило, BIOS позволяет пользователю настроить порядок загрузки. Если установлен порядок загрузки:

  1. CD-привод
  2. Жесткий диск
  3. Сеть

тогда BIOS сначала попытается загрузиться с компакт-диска, и если это не удастся, то он попытается загрузиться с жесткого диска, а если это не удастся, то он попытается загрузиться из сети, и если это не удастся тогда он вообще не загрузится.

Последовательность загрузки¶

Существует стандартная последовательность загрузки, которую используют все персональные компьютеры. Сначала ЦП запускает в памяти инструкцию для BIOS. Эта инструкция содержит инструкцию перехода, которая переходит к программе запуска BIOS. Эта программа запускает самотестирование при включении питания (POST), чтобы убедиться, что устройства, на которые будет полагаться компьютер, работают правильно. Затем BIOS выполняет настроенную последовательность загрузки, пока не найдет загрузочное устройство. Как только BIOS находит загрузочное устройство, BIOS загружает загрузочный сектор и передает выполнение в загрузочный сектор. Если загрузочным устройством является жесткий диск, это будет главная загрузочная запись (MBR). Код MBR проверяет таблицу разделов на наличие активного раздела. Если он найден, код MBR загружает загрузочный сектор этого раздела и выполняет его. Загрузочный сектор часто зависит от операционной системы, однако в большинстве операционных систем его основная функция заключается в загрузке и выполнении ядра операционной системы, которое продолжает запуск. Если активного раздела нет или загрузочный сектор активного раздела недействителен, MBR может загрузить вторичный загрузчик, который выберет раздел и загрузит его загрузочный загрузочный сектор, который обычно загружает соответствующее ядро ​​операционной системы.

"Программное обеспечение" — это общая категория кода, работающего на оборудовании. Если аппаратное обеспечение — это пианино, то программное обеспечение — это музыка. Обычный случай — это «программа», такая как Firefox — программное обеспечение, которое вы запускаете на своем компьютере для решения конкретной проблемы. Компьютер может запускать несколько программ одновременно и несет ответственность за разделение их памяти.

ЦП понимает низкоуровневый язык "машинного кода" (также известный как "собственный код"). Язык машинного кода встроен в конструкцию аппаратного обеспечения ЦП; это не то, что можно изменить по желанию. Каждое семейство совместимых ЦП (например, очень популярное семейство Intel x86) имеет свой собственный уникальный машинный код, несовместимый с машинным кодом других семейств ЦП.

Что такое программа/приложение?

  • Что такое программа или приложение?
    - напр. Фаерфокс
  • Firefox состоит из миллионов инструкций машинного кода.
    - Запускается сверху вниз (прямо как Javascript!)
    - Появляется окно Firefox (первые 1000 инструкций)
    - Появляются его меню (следующие 1000)
    - Курсор мигает в ожидании ввода
  • Инструкции, при запуске которых выполняются действия "Firefox".
  • Firefox.exe — это файл в файловой системе размером 80 МБ
    (".exe" - это соглашение Windows для имени файла программы)
  • Файл Firefox.exe в основном состоит из инструкций машинного кода.
  • Каждая инструкция имеет размер, скажем, 4 байта
  • Firefox.exe размером 80 МБ содержит около 20 миллионов машинных инструкций.

Машинный код определяет набор отдельных инструкций. Каждая инструкция машинного кода чрезвычайно примитивна, например, сложение двух чисел или проверка того, равно ли число нулю. При сохранении каждая инструкция занимает всего несколько байтов. Когда мы говорили ранее, что ЦП может выполнять 2 миллиарда операций в секунду, мы имели в виду, что ЦП может выполнять 2 миллиарда строк машинного кода в секунду.

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

Как работает программа?

  • ЦП запускает «цикл выборки/выполнения»
    -выбирает одну инструкцию в последовательности,
    -выполняет (запускает) эту инструкцию, например выполнить сложение
    -выбрать следующую инструкцию и т. д.
  • Запустить программу = запустить ЦП, работающий с его 1-й инструкцией,
    он прогоняет весь машинный код, запускает программу,
    программа будет иметь такие инструкции, как "вернуться к шагу 3", чтобы сохранить ее работает
  • Сверхпростые инструкции машинного кода выполняются со скоростью 2 миллиарда операций в секунду.

ЦП выполняет инструкции, используя цикл «выборка-выполнение»: ЦП получает первую инструкцию в последовательности, выполняет ее (добавляя два числа или что-то еще), затем выбирает следующую инструкцию и выполняет ее и так далее. Некоторые инструкции влияют на порядок, в котором ЦП выполняет последовательность инструкций. Например, инструкция может указать ЦП вернуться к более ранней точке в последовательности инструкций (циклы реализованы таким образом) или пропустить следующую инструкцию, если определенное условие истинно (условия if реализованы таким образом). .

ЦП выполняет серию инструкций машинного языка< бр />

Как начинается программа?

  • Файл Firefox.exe содержит свои инструкции (в файловой системе)
  • Чтобы запустить Firefox.exe:
    -Каждая программа получает свою собственную область ОЗУ.
    - Область ОЗУ содержит код программы и данные, с которыми она манипулирует.
    - Байты инструкций копируются из хранения в ОЗУ
    -ЦП получает указание начать работу с первой инструкции
    -Теперь программа работает!

В файловой системе такой файл, как Firefox.exe, просто содержит байты инструкций машинного кода, из которых состоит программа («.exe» — это соглашение Windows, обозначающее файл как программу). Каждая инструкция машинного кода занимает примерно 4 байта, а вся программа представляет собой просто огромную последовательность инструкций.

Когда пользователь дважды щелкает файл программы, чтобы запустить его, по сути, блок байтов инструкций для программы копируется в ОЗУ, а затем ЦП получает указание начать работу с первой инструкции в этой области ОЗУ.

Что запускает Firefox? «Операционная система»

  • Как запустить Firefox?
  • "Операционная система"
    -e.g. Windows, Linux, Android, iOS
  • Операционная система = управление
  • Набор управляющих программ, которые управляют компьютером.
  • Операционная система запускается при первом включении компьютера
  • Управление запуском/остановкой программ
  • Управление оперативной памятью
  • Управление постоянным хранилищем
  • Компьютеры могут запускать несколько программ одновременно
  • Операционная система отслеживает информацию для каждой программы и распределяет ресурсы (например, ОЗУ) между программами.

"Операционная система" компьютера подобна первой управляющей программе, которая начинает работать при первом включении компьютера ("загрузке"). Операционная система играет невидимую административную и бухгалтерскую роль за кулисами. Когда ноутбук или телефон запускается, операционная система обычно приводит все в порядок, а затем запускает программу «Проводник файлов», которая отображает доступные программы, меню и т. д., которые показывают пользователю, что доступно, позволяя пользователю перемещаться по программам и запускать их.< /p>

Операционная система поддерживает порядок в фоновом режиме, так что несколько программ могут работать одновременно, что называется "многозадачностью". Операционная система выделяет каждой программе собственную область памяти, поэтому каждая программа обращается только к своим собственным ресурсам... пытаясь ограничить возможности ошибочной или вредоносной программы.Хранение программ отдельно иногда называют «песочницей»... опосредование доступа каждой программы, чтобы она работала независимо, не мешая другим программам или системе в целом. Точно так же каждая программа имеет некоторый доступ к экрану через окно, но эта область вывода отделена от вывода других программ.

Вспомните, что файл .exe или что-то еще — это, по сути, просто файл с инструкциями машинного кода. Когда вы дважды щелкаете программу, операционная система «запускает» программу, выполняя вспомогательные действия по выделению области памяти в ОЗУ для программы, загружая первый раздел машинного кода программы в эту память и, наконец, направляя CPU для запуска этого кода.

Читайте также: