Инструкции, определяющие порядок работы при включении компьютера, хранятся в

Обновлено: 05.07.2024

"Программное обеспечение" — это общая категория кода, работающего на оборудовании. Если аппаратное обеспечение — это пианино, то программное обеспечение — это музыка. Обычный случай — это «программа», такая как 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 для запуска этого кода.

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

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

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

  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

Активность

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

Просмотреть

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

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

Загрузчик¶

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

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

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

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

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

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

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

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

Компьютер представляет собой сложную систему, состоящую из множества различных компонентов. Но в сердце — или, если хотите, в мозгу — компьютера находится единственный компонент, который выполняет фактические вычисления. Это центральный процессор или центральный процессор. В современном настольном компьютере ЦП представляет собой один «чип» размером порядка одного квадратного дюйма. Работа процессора заключается в выполнении программ.

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

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

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

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

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

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

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

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