моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Потребность в вычислениях широко распространена в истории человечества, и их развитие обычно проходило через процесс развития от общих вычислительных инструментов до механических компьютеров и современных электронных компьютеров.
Потребность человечества в компьютерах заставляет нас постоянно изобретать и совершенствовать компьютеры. Нынешняя эпоха — это эпоха «электронных компьютеров», и тенденция развития такова: быстрее, стабильнее и меньше.
Рекомендуемые книги: «Краткая история компьютеров».
Пункт 1
Современные компьютеры, большинство из которых соответствуютАрхитектура фон Неймана
Джон фон Нейман (28 декабря 1903 — 8 февраля 1957), венгерско-американский математик и ученый-компьютерщик.
Ученый, физик и один из самых выдающихся математиков 20 века. Фон Нейман — доктор математических наук Будапештского университета. Он является одним из самых разносторонних научных умов в области современных компьютеров, теории игр, ядерного оружия и биологического оружия. отец современных компьютеров» и «отец теории игр».
Далее мы шаг за шагом используем процесс создания ЦП. Мы можем использовать этот процесс, чтобы понять принципы работы основных компонентов компьютера, таких как ЦП и память.
Электронный переключатель – механическое реле
С помощью электронных переключателей мы можем реализовать 1-битные (битовые) казалось бы бесполезные логические операции, но, по крайней мере, это работает, не так ли?
Мы узнаем больше о том, как использовать электронные переключатели для объединения действительно полезных логических компонентов.
Суть будущих электронных ламп и транзисторов заключается в выполнении аналогичной работы, но физические принципы более сложны, поэтому мы не будем давать вам подробное объяснение.
Далее мы научимся использовать электронные переключатели для создания некоторых полезных компонентов — схем на вентилях, которые можно реализовать.
АЛУ является основным компонентом для арифметических и логических операций в компьютерах и представляет собой математический мозг компьютера. Далее мы используем логические элементы, построенные выше, чтобы создать собственное АЛУ, изучить и понять его режим работы, чтобы понять. дальнейшее наше понимание современных краеугольных камней компьютерных принципов.
Арифметический блок отвечает за все цифровые операции в компьютере, например за четыре арифметических операции. Конечно, он может делать гораздо больше. Далее я покажу вам, как реализовать 8-битный сумматор (сумматор). Весь процесс и прочие операции я больше не буду объяснять устройство.
На этом этапе мы создали 8-битный сумматор с нуля. Операций арифметического блока, конечно, гораздо больше, чем эти. Продолжая комбинировать логические элементы, арифметический блок может выполнять сложение, вычитание, умножение, деление и даже другие арифметические операции, но для демонстрации достаточно и сумматора. На самом деле сложность изготовления множителей и делителей выше, чем сложений и вычитаний. Если вам интересно, вы можете попробовать узнать больше.
Логические единицы в основном используются для выполнения логических операций. Самыми основными операциями являются операции И, ИЛИ и НЕ, но они не являются просто сравнением однобитовых чисел.
经过我们的努力,通过基本的逻辑门电路,我们⼀步步地做出了⼀个 8 位(bits) ALU,甚至比 Intel 74181 还要强大,Intel 74181 只是⼀个 4 位(bits) ALU(😀)。当然现代的计算机中的 ALU 部件非常强大,复杂度远远超过了我们的想象,32 位 甚至 64 位基本已经普及全球了。但无论如何,再复杂的ALU 也是芯片工程师像我们这样,一层又一层, 一步又一步地将其抽象出来的。ALU 是第⼀次将人类历史上的数学和逻辑学学科有机地结合起来,可以视为人类智慧发展的现代巅峰.
Одного АЛУ недостаточно. Мы не можем предоставить компоненты хранения для АЛУ, поэтому далее мы используем схемы затворов, чтобы кратко объяснить создание хранилища. Обратите внимание, что, хотя это не ясно показано на рисунке, эти требования к хранению должны оставаться включенными. , то есть эти хранилища энергозависимы (летучие)
Мы скрываем некоторые детали реализации посередине, и конечный результат таков: когда установлена строка отключения, вход равен 1, и 1 сохраняется, когда вход равен 0, сохраняется 0, когда строка включения не находится на месте; , запись недействительна.
Мы можем использовать дверные замки для создания необходимых нам регистров и памяти.
Конструкция памяти немного сложнее, но основные принципы те же. Память, построенная таким образом, называется RAM (оперативное запоминающее устройство) и может поддерживать временную сложность O(1) для доступа к данным в любом месте. Это означает, что наша операция доступа к индексу массива равна O(1).
аппаратная поддержка.
Теперь у нас есть АЛУ и хранилище, но этого все равно недостаточно, чтобы наш компьютер работал. Нам нужен компонент, который будет указывать АЛУ на выполнение каких вычислений, и этим компонентом является блок управления (БУ).
Пункт 2
Количество ячеек на рисунке выше можно рассматривать как количество ядер. Как показано на рисунке, это шестнадцатиядерный процессор.
Ранние процессоры имели одно ядро. С развитием времени у нас возникают все более высокие требования к скорости обработки процессора. В настоящее время нам необходимо сделать процессор более интегрированным и содержать больше вычислительных блоков для более быстрого расчета. вычислительная единица должна быть небольшой (процесс производства процессора, например, 5 нм и т. д.). В это время классическая механика становится недействительной и начинает проникать в область квантовой механики. Задача этого процесса становится все больше и больше.
В это время предлагается концепция многоядерности.
Скорость вычислений ЦП описывается частотой, которую можно просто понимать как количество инструкций, которые могут быть выполнены за одну секунду (не строго). Например, указанную выше скорость можно понимать как вычисления ЦП примерно 3,4 миллиарда раз в секунду. .
Частота процессора изменяется динамически в зависимости от рабочей нагрузки. По мере увеличения частоты он потребляет больше энергии и выделяет больше тепла. Чтобы защитить процессор от перегрева, он автоматически снижает частоту.
Пункт 3
Для начала давайте представим необходимые нам инструкции.
Так называемая инструкция, то есть команда, направляющая ЦП на выполнение работы, в основном состоит из кода операции + операнда.
Код операции используется для указания того, какое действие должно быть выполнено, а операнд — это данные, с которыми будет работать эта инструкция, которые могут быть адресом памяти или номером регистра и т. д.
Сама инструкция также представляет собой число, хранящееся в определенной области памяти в двоичном виде.
Программы, которые мы пишем на языках программирования, в конечном итоге должны быть переведены в «двоичные инструкции, выполняемые ЦП». Инструкции — это базовая единица задач, выполняемых ЦП.
Инструкции также являются машинным языком (двоичным), а язык ассемблера и язык ассемблера имеют взаимно однозначное соответствие.
Разные процессоры поддерживают разные инструкции на микроуровне, например инструкции x86 и инструкции Arm, что вызывает проблемы совместимости.
Какие инструкции может выполнять ЦП, можно считать оговоренными при первоначальной разработке ЦП. На рисунке выше перечислены некоторые упрощенные инструкции.
8-битную команду можно разделить на две части.
Первые 4 бита — это код операции (код операции), указывающий, что делает инструкция.
Последние 4 бита являются операндами (аналогично параметрам).
Имя регистра AB в приведенной выше таблице является вымышленным. Имя фактического регистра ЦП имеет форму: eax, ebx, esp, ebp...)
В ЦП есть специальный регистр, «счетчик программ» (он будет автоматически установлен системой после загрузки exe в память), который сохраняет при этом ячейку памяти, из которой инструкция будет выполняться дальше. время по мере выполнения инструкции значение «счетчика программы» также будет соответствующим образом обновляться. По умолчанию это процесс автоматического приращения +1 (выполнение инструкций последовательно, если встречается оператор перехода). as (if, while, for, вызов функции...), ему будет присвоено другое значение.
Выполнение инструкций разделим на три этапа:
1) Выборка инструкций: ЦП считывает содержимое инструкций из памяти в ЦП (существуют специальные регистры для сохранения инструкций чтения).
2) Проанализируйте команду и определите ее функцию, соответствующие функции и операнды.
3) Выполнить инструкции
Выполнение каждой инструкции должно пройти три вышеуказанных этапа, а выполнение задачи требует выполнения нескольких вышеуказанных инструкций. Например, для процесса сложения могут потребоваться три вышеуказанные инструкции, что кажется очень затруднительным, но из-за вычислений ЦП это так. очень быстро (вышеописанные операции можно выполнить более миллиарда раз за одну секунду), и это не занимает у компьютера много времени.
Так называемая программа представляет собой набор инструкций и данных, подлежащих обработке этим набором инструкций. В узком смысле программа обычно предстает перед нами как набор файлов.
Программа = инструкция + данные, которые будут обработаны инструкцией.
Это интересная маленькая история, которая была распространена ранее, но это, конечно, неправда.Но для первых компьютеров программирование действительно требовало
Программируется с помощью 0 и 1 (Σ(っ°Д °;)っ)
На рисунке ниже показан компьютер Altair 8800, один из первых микрокомпьютеров. Пользователю необходимо управлять переключателем и постепенно вводить программу в компьютер.
Если всем пользователям компьютеров придется использовать двоичное программирование, все сойдут с ума. Это слишком высокий порог. Так появились языки программирования.
Чтобы повысить эффективность программирования, впервые была создана концепция языка ассемблера. На самом деле язык ассемблера и машинный язык (то есть инструкции) находятся прямо во взаимно однозначном соответствии. Просто относительно чисел 0 и 1 придуманы некоторые символы, помогающие человеку запомнить и понять их, которые. это то, что мы имеем выше. То, что вы видите, похоже на LOAD_A, LOAD_B и т. д. После того, как программисты завершат программирование, им необходимо использовать ассемблер для перевода языка ассемблера в машинный язык.
Хотя сборка снижает затраты памяти программиста, она по-прежнему требует от программы владения всеми знаниями о компьютерном оборудовании. С ростом числа производителей компьютеров программы, написанные одновременно, часто подходят только для одного типа компьютеров. Этого далеко не достаточно, поэтому родились более продвинутые языки. Языки высокого уровня экранируют детали аппаратного обеспечения и позволяют программистам думать о своем бизнесе на более высоком уровне. Здесь в качестве примера мы возьмем язык C. После того, как программист закончит писать программу, ему необходимо использовать компилятор и компоновщик, чтобы перевести программу на язык ассемблера, а затем использовать ассемблер, чтобы превратить ее в окончательный машинный язык.
С помощью идеи инкапсуляции нам становится все легче и проще изучать программирование. Однако есть свои преимущества и недостатки. Высокая степень абстракции заставляет многих программистов рассматривать компьютер как черный ящик и совершенно не способны понять, как работают их собственные программы. Надеюсь, что никто из нас не станет таким программистом.
Язык Java, который мы используем, немного более продвинут, чем язык C, но в основных абстрактных принципах нет большой разницы, поэтому мы не будем сейчас подробно останавливаться на нем.
Примечание. Оператор на языке высокого уровня часто соответствует множеству инструкций, которые необходимо выполнить.
Пункт 4
Операционная система — собирательное название набора программного обеспечения, управляющего ресурсами компьютера. В настоящее время распространенные операционные системы включают в себя: серию Windows, серию Unix, серию Linux, серию OSX, серию Android, серию iOS, Hongmeng и т. д.
Программы, работающие на разных системах, разные (программы несовместимы из-за разных KPI)
Операционная система выполняет две основные функции:
1) Предотвратить злоупотребление аппаратным обеспечением пространственно-временными приложениями. Предоставьте приложению KPI и позвольте приложению вызывать его для выполнения различных функций.
2) Обеспечить приложения простыми и согласованными механизмами управления сложными и зачастую совершенно разными аппаратными устройствами низкого уровня.
Операционная система в основном выполняет следующие две функции:
1) Управление различными аппаратными устройствами. Компьютеры могут получить доступ ко многим устройствам, таким как сканеры кодов, медицинское оборудование, аппараты B-УЗИ...
2) Обеспечить стабильную операционную среду для программного обеспечения. Современные операционные системы должны запускать множество программ одновременно. Есть надежда, что эти программы не смогут мешать друг другу. Если ошибка возникает в одной программе, это не повлияет на другие программы. .
Когда каждое приложение работает в современной операционной системе, операционная система обеспечивает абстракцию, как если бы в системе работала только эта программа и все аппаратные ресурсы использовались этой программой. Эта иллюзия достигается за счет абстрагирования понятия процесса, возможно, одного из самых важных и успешных понятий в информатике.
Процесс — это абстракция запущенной программы операционной системой. Другими словами, процесс можно рассматривать как работающий процесс программы, в то же время в операционной системе процесс является базовой единицей распределения ресурсов; операционной системой.
Пункт 5
Процессы — это некоторые приложения, которые выполняются на наших компьютерах (Когда речь идет о приложении, есть два состояния. Когда оно не запущено, это exe-файл, лежащий на жестком диске; когда оно запущено, exe-файл). загружается в память, и ЦП выполняет инструкции внутри).
Процесс — это базовая единица распределения ресурсов операционной системой.
Пункт 6
Поскольку в системе много процессов, ими необходимо управлять.
1) Описание выражает различные атрибуты процесса через структуры/классы (основные системы реализуются с помощью C/C++).
2) Организация связывает вышеуказанные многочисленные структуры (описания) через структуру данных, а далее выполняет различные добавления, удаления, изменения и проверки...
Например, операционная система Linux использует структуру под названием «PCB» для описания информации о процессе (PCB означает блок управления процессом). Проще говоря, вышеупомянутые несколько плат объединяются в связанный список для создания процесса (двойного). -щелкните exe, запустив программу) эквивалентно созданию структуры платы. Уничтожение процесса означает удаление платы из списка соединений и освобождение структуры платы. Просмотр списка процессов означает перемещение по списку соединений и последовательное отображение соответствующей информации. .
Печатная плата — это очень сложная структура, содержащая множество атрибутов. Давайте изучим некоторую ключевую информацию ниже.
1. Идентификатор процесса PID
В то же время PID уникален среди нескольких процессов на машине и не будет повторяться. Многие внутренние операции в системе находят соответствующий процесс через PID.
2. Указатель памяти (набор)
Описывает область, где хранятся зависящие от процесса инструкции и данные.
Когда операционная система запускает exe-файл, она считывает инструкции и данные из exe-файла и загружает их в память (адрес памяти).
Со стороны это показывает, что выполнение процесса требует определенных ресурсов памяти.
3. Таблица описания файлов (таблица/массив последовательностей)
Описывает, какие файлы открываются процессом, соответствующие данным на жестком диске.
Когда файл открывается в процессе, элемент добавляется в таблицу последовательности для удобства чтения.
Следующие пункты совместно определяют график процесса, который тесно связан с нашим ежедневным развитием.
Пункт 7
Ключ к планированию процессов операционной системыМультиплексирование с разделением времени
Все текущие операционные системы являются «многозадачными системами», которые могут запускать несколько процессов одновременно. Предыдущие операционные системы назывались «однозадачными системами» и могли запускать только один процесс одновременно.
Понимание мультиплексирования с разделением времени: в определенный момент ЦП запускает процесс 1, работает некоторое время, ЦП запускает процесс 2 и через некоторое время запускает процесс 3... Поскольку скорость вычислений ЦП и скорость переключения очень высоки, это не заметно невооруженным глазом. С человеческой точки зрения это эквивалентно одновременному исполнению, «одновременному исполнению».
Параллельное выполнение: теперь благодаря многоядерным процессорам каждое ядро и между ядрами также может одновременно выполнять разные процессы на микроскопическом уровне.
Параллелизм или параллелизм единообразно планируются ядром операционной системы и не могут быть восприняты программистами/обычными пользователями. Поэтому параллелизм и параллелизм обычно вместе называются «параллелизмом», а соответствующие методы программирования также называются «параллельным программированием».
4. Статус процесса
Состояние готовности: процесс можно запланировать для ЦП для выполнения инструкций в любое время.
Состояние блокировки: процесс не может быть запланирован для выполнения инструкций на ЦП. Причина, по которой он заблокирован, заключается в том, что ему необходимо выполнять некоторые другие операции, такие как операции ввода-вывода (чтение и запись жестких дисков или чтение и запись сетевых карт, например). сканирование ввода). Когда требуется ввод данных пользователем, процесс переходит в состояние блокировки)
Вышеупомянутые два являются двумя основными состояниями процесса. Есть и другие состояния, поэтому я не буду вдаваться в подробности...
5. Приоритет процесса
Приоритет – это буквально порядок процессов.
6. Контекст процесса
Мультиплексирование с разделением времени. После некоторого выполнения процесса он будет передан из ЦП. Через некоторое время он будет запланирован обратно в ЦП. Он продолжит выполнение вместе с результатами последнего выполнения. промежуточные результаты предыдущего выполнения (различные значения в регистре процессора) сохраняются для использования в следующий раз.
7. Учетная информация о процессе
При поддержке приоритетов ресурсы, потребляемые разными процессами, могут становиться все более разными...
Вышеупомянутые атрибуты используются для поддержки одновременного выполнения процесса планирования.
Операционная система распределяет ресурсы памяти с помощью пространственной модели — разные процессы используют разные области памяти, не мешая друг другу.
Как упоминалось выше, процесс — это наименьшая единица выделения ресурсов операционной системой, а это означает, что каждый процесс не может ощущать существование друг друга. Это первоначальное намерение операционной системы абстрагировать концепцию процесса, что и приводит к возникновению. процесс У них есть «изоляция» друг от друга.
Однако современные приложения часто не могут выполнить сложные бизнес-требования посредством процесса независимо. Они всегда требуют взаимодействия процесса и процесса для достижения цели приложения. Таким образом, существует необходимость «обмена информацией» между процессами. Необходимость межпроцессного взаимодействия возникла в исторический момент.
В настоящее время в Java существует только один основной метод межпроцессного взаимодействия — через сеть (сокет).
Сеть представляет собой относительно специальный механизм IPC. Помимо поддержки связи между двумя процессами на одном хосте, она также поддерживает связь между процессами на разных хостах в одной сети.