Как программное обеспечение/Код на самом деле связывается с Аппаратными средствами?

Вы можете проверить это следующим образом:

Main.java:

package test;

import test.sub.B;

public class Main {
   public static void main(String args[]) {
      System.out.println("Creating object");
      final B b = new B();
      System.out.println("instanceof check");
      if (b instanceof B) {
         // Do nothing
      }
   }
}

A.java:

package test;

public class A {
   static {
      System.out.println("Class A loaded");
   }
}

B.java:

[ 112]

Вывод:

Creating object
Class B loaded
instanceof check

Итак, ни импорт, ни объявление (A a;) не загружают класс.

Это соответствует утверждению из википедии: The Java Class Loader [...] dynamically loads Java classes [...]. [...] This loading is typically done "on demand", in that it does not occur until the class is called by the program. [...]

Когда вы изменяете A a; в классе B на A a = new A();, тогда класс A будет загружен.

64
задан ROMANIA_engineer 23 July 2017 в 15:36
поделиться

8 ответов

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

Во-первых, я определил бы программное обеспечение как набор автоматизированных инструкций к аппаратным средствам. Инструкция в этом контексте означает просто два состояния GoOn/GoOff или 1/0 или Высокий/Низкий или Истинный/Ложный или Заряд / NoCharge или Включение питания/Выключение питания.

работа любых современных компьютеров могла быть сказана как цепные реакции инструкции аппаратных средств.

, Почему и Как? Объясненный ниже,

Воображают!, Вы содержащий два провода, подключенные к лампе и, подключаете их к батарее +ve и-ve. Вы знаете то, что происходит теперь. Tantadaan!, Осветите свечения.

Здесь, Аппаратные средства: Провода, лампа и Держатель. Программное обеспечение/Инструкция/Действие: Вы присоединяющий оба из тех проводов к батарее. Заряд: Заряд батареи. Результат: Осветите свечения.

похожим способом при первом включении компьютера, Вы инициировали первую инструкцию/действие (Жлоб) путем нажатия кнопки или включения выключателя питания.

Теперь, поскольку я сказал, что инструкции (Ваш код программного обеспечения/текста, преобразованный в 1/0 инструкции), управляют цепными реакциями в аппаратных средствах, которые приводят Ваш компьютер функционировать, как определено в инструкциях (Драйверы/ОС/Программное обеспечение).

, Если Вы хотите знать далее всесторонний, снизьте комментарий.

1
ответ дан 24 November 2019 в 16:00
поделиться

Ну, на самом деле выключение не является физическим, все цепи в компьютере не отключены полностью, пока вы физически не отключите питание.

Программное обеспечение использует интерфейс APM (Advanced Power Management) в BIOS для управления цепями питания компьютера.

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

5
ответ дан 24 November 2019 в 16:00
поделиться

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

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

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

Так, чтобы выключить машину, центральный процессор набирает номер устройства управления питанием и посылает ему инструкции перейти в соответствующее состояние питания. Аппаратное обеспечение отвечает, и БП перестает подавать первичное питание на материнскую плату.

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

3
ответ дан 24 November 2019 в 16:00
поделиться

Между программами на ПК и реальным миром существует несколько интерфейсов.

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

Существуют более быстрые интерфейсы для передачи больших объемов данных в обход центрального процессора. Это называется DMA (прямой доступ к памяти). Они используются для передачи данных на диск, в сеть, видеоадаптеры и т. Д.

Для порта IO (коды операций IN и OUT) инициатором является программное обеспечение. В случае прерывания IRQ оборудование сначала говорит, чтобы запустить программный ответ.

Все это разрешено делать только драйверам устройств. Если вы попытаетесь сделать это из приложения, ОС мгновенно разобьет его. Приложения подключаются к этому миру через API, представленные драйверами устройств. Многие из API-интерфейсов стандартизированы, поэтому вы можете заменить фактическое устройство, не взаимодействуя по-другому (принтер, диск, клавиатура, мышь, CRROM, переключатель питания ATX в вашем примере).

1
ответ дан 24 November 2019 в 16:00
поделиться

Хотя ответ довольно сложен и требует понимания основ электрических систем и цепей (KVL, KCL), двоичных чисел и булевой логики, мы можем описать процесс на высоком уровне: код (представленный обычными текстовыми словами) компилируется, собирается и в конечном итоге переводится в комбинацию нулей и единиц, которые представляют низкое и высокое напряжение соответственно.

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

Теперь представьте себе гипотетический 1-битный процессор, который способен замкнуть цепь и подать ток на зуммер, издавая звук. Этот 1-битный процессор имеет один вход, который может иметь два значения: 0 и 1.

Этот простой процессор имеет очень простой язык ассемблера: ON и OFF, а у нас есть причудливый язык программирования, который обеспечивает некоторые более красивые абстракции: cpu.turnOn,cpu.turnOff.

Я пишу свою программу cpu.turnOn; компилирую ее, собираю, и она готова к запуску. Когда я запускаю программу на своем процессоре, включается зуммер.

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

Чтобы обеспечить взаимодействие сложных систем, эти системы состоят из слоев абстракций.

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

Программное обеспечение, которое запускает микроконтроллер, называется микропрограммой. Это специализированная операционная система, которая управляет аппаратными функциями и может также включать API. В примере с воображаемым 1-битным процессором программа будет микропрограммой, а cpu.turnOn, cpu.turnOff - API.

Учитывая, что компьютер состоит из множества аппаратных компонентов (графика, хранение, связь, ввод-вывод), компьютеры состоят из множества специализированных микропрограмм. Чтобы сделать что-нибудь полезное с этим оборудованием, необходим еще один уровень абстракции, например, чтобы универсально работать с клавиатурой или чтобы мыши, тачпады и трекболы вели себя одинаково, несмотря на разное взаимодействие. Здесь на помощь приходит операционная система. ОС предоставляет API для управления группами связанных устройств и предоставляет поставщикам оборудования крючки для перевода между командами ОС и командами, понятными микроконтроллеру. В среде Windows это драйвер.

Следующий уровень абстракции над операционными системами и драйверами - это приложения, которые используются пользователями для выполнения реальной работы (или игры в Fortnite). Эти программы пишутся на огромном количестве языков, SDK и наборов инструментов, и именно поэтому существует StackOverflow. Эти языки компилируются в исполняемый код, который загружается ОС, управляется ею и выполняется компьютером.

Складывая все это вместе с командой shutdown, можно сказать, что командный интерпретатор использует API на уровне ОС, который управляет питанием системы. Этот API посылает уведомление остальной части ОС для обработки таких вещей, как изящная очистка буферов памяти, сохранение состояния приложения, завершение каналов связи и отключение питания различных аппаратных систем (или, что более вероятно, переход в режим низкого энергопотребления). Он также использует драйвер питания (ACPI?) для взаимодействия с подсистемой управления питанием компьютера. Эта подсистема получает команду на выключение, которая, в свою очередь, посылает сигнал блоку питания компьютера, чтобы разорвать цепь и больше не подавать питание на большинство компонентов.

43
ответ дан 24 November 2019 в 16:00
поделиться

Сравним физическое и программное решение.

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

Фактически, физическое нажатие кнопки преобразуется в электронный сигнал, чтобы блок питания что-то делал.

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

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

1
ответ дан 24 November 2019 в 16:00
поделиться

На самом деле, ваш простой текст кодов не заставляет компьютер выключаться напрямую. Он вызывает процедуру базовой операционной системы. Операционная система, в свою очередь, вызывает ACPI/APM на вашей основной плате. Это заставит компьютер выключиться.

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

0
ответ дан 24 November 2019 в 16:00
поделиться

Если в случае, если вы ищете, как вообще любое устройство сделано для выполнения своего действия, устройство поставляется с прошивками, хранящимися в ПЗУ / ЧИПе платы управления. Плата управления используется для управления устройством посредством электрических сигналов.

Помимо прошивки у вас будут драйверы / поставщик услуг. Приложение будет использовать этих поставщиков услуг / драйверов для связи или указания устройству выполнить какое-либо действие.

Щелкните здесь , чтобы узнать больше о том, как-прошивки-связываются-с-электронными-устройствами-для-выполнения-своих-операций?

0
ответ дан 24 November 2019 в 16:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: