Исполнение инструкции
Конвейер состоит из 12 стадий:
- IOFE(1—4) — определение адреса инструкции и её выборка.
- IOFE(4—6) — декодирование.
- IOFE7 — переименование регистров.
- IOFE8 — запись микроопераций в станцию-резервуар.
- O2C1 — передача микроопераций из станции-резервуара к исполнительным блокам.
- O2C2 — исполнение микроопераций (один или несколько тактов).
- IOR(1—2) — завершение инструкции: запись результатов в регистры.
Исполнение инструкции начинается с её выборки и декодирования. Для этого из кэш-памяти инструкций первого уровня по адресу из буфера предсказания переходов выбирается 64 байта (две строки). Из них 16 байт, начиная с адреса из блока вычисления адреса следующей инструкции, выравниваются и передаются в декодер инструкций, преобразующий инструкции x86 в микрооперации. Если инструкции соответствует одна микрооперация, декодирование проводит один из декодеров простых инструкций. Если инструкции соответствует две, три или четыре микрооперации, декодирование проводит декодер сложных инструкций. Если же инструкции соответствует большее число микроопераций, то они формируются планировщиком последовательностей микроопераций.
После декодирования инструкций производится переименование регистров, а микрооперации и данные помещаются в буфер — станцию резервирования, откуда в соответствии с оптимальным порядком исполнения и при условии определённости необходимых для их исполнения операндов направляются на исполнительные блоки (максимум 5 инструкций за такт). Статус исполнения микроопераций и его результаты хранятся в буфере переупорядочивания микроопераций, а так как результаты исполнения одних микроопераций могут служить операндами других, они также помещаются и в станцию резервирования.
По результатам исполнения микроопераций определяется их готовность к отставке (англ. retirement). В случае готовности происходит их отставка в порядке, предусмотренном программой, во время которой осуществляется обновление состояния логических регистров, а также отложенное сохранение результатов в памяти (управление порядком записи данных осуществляет буфер переупорядочивания памяти).
Разница между Unix и Linux
Теперь посмотрим, в чем разница между unix и linux:
Ключевые отличия | Linux | Unix |
Стоимость | Linux распространяется бесплатно, загружается через журналы, книги, веб-сайты и т. Д. Существуют также платные версии для Linux. | Различные разновидности Unix имеют разные цены в зависимости от типа поставщика. |
Развитие | Linux является открытым исходным кодом, и тысячи программистов сотрудничают в сети и вносят свой вклад в его разработку. | Системы Unix имеют разные версии. Эти версии в основном разрабатываются AT&T, а также другими коммерческими поставщиками. |
Пользователь | Каждый. От домашних пользователей до разработчиков и компьютерных энтузиастов. | UNIX может использоваться на интернет-серверах, рабочих станциях и ПК. |
Текстовый интерфейс | BASH — это оболочка Linux по умолчанию. Он предлагает поддержку нескольких интерпретаторов команд. | Первоначально предназначено для работы в Bourne Shell. Однако теперь он совместим со многими другими программами. |
GUI | Linux предоставляет два графических интерфейса, а именно KDE и Gnome. Хотя есть много альтернатив, таких как Mate, LXDE, Xfce и т. Д. | Common Desktop Environment, а также Gnome. |
Вирусы | На сегодняшний день в Linux перечислено около 60-100 вирусов, которые в настоящее время не распространяются. | На сегодняшний день в Unix зарегистрировано от 80 до 120 вирусов. |
Обнаружение угрозы | Обнаружение угроз и решение очень быстрое, потому что Linux в основном управляется сообществом. Итак, если какой-либо пользователь Linux публикует какую-либо угрозу, команда квалифицированных разработчиков начинает работать над устранением этой угрозы. | Пользователям Unix требуется больше времени ожидания, чтобы получить правильный патч для исправления ошибок. |
Архитектура | Первоначально разработан для аппаратных процессоров Intel x86. Он доступен для более чем двадцати различных типов ЦП, в том числе ARM. | Он доступен на машинах PA-RISC и Itanium. |
Применение | ОС Linux может быть установлена на различных типах устройств, таких как мобильные, планшетные компьютеры. | Операционная система UNIX используется для интернет-серверов, рабочих станций и ПК. |
Лучшая особенность | Обновление ядра без перезагрузки | Feta ZFS — файловая система нового поколения DTrace — динамическая трассировка ядра |
Версии | Различные версии Linux: Redhat, Ubuntu, OpenSuse и т. Д. | Различные версии Unix: HP-UX, AIS, BSD и т.д. |
Поддерживаемый тип файла | Файловые системы, поддерживаемые типами файлов, такими как xfs, nfs, cramfsm ext от 1 до 4, ufs, devpts, NTFS. | Файловые системы, поддерживаемые типами файлов: zfs, hfx, GPS, xfs, vxfs. |
Портативность | Linux является портативным и загружается с USB-накопителя. | Unix не переносится |
Исходный код | Источник общедоступен | Исходный код никому не доступен. |
Происхождение Linux
Рассматривая коммерциализацию Unix как дальнейшее размывание свобод, доступных пользователям компьютеров, Ричард Столлман решил создать операционную систему, основанную на свободе. То есть свобода изменять исходный код, распространять модифицированные версии программного обеспечения и использовать программное обеспечение любым способом, который пользователь сочтет нужным.
Операционная система собиралась воспроизвести функциональность Unix без включения какого-либо исходного кода Unix. Он назвал операционную систему GNU и в 1983 году основал проект GNU Project для разработки этой операционной системы. В 1985 году он основал Фонд свободного программного обеспечения для продвижения, финансирования и поддержки проекта GNU.
Все области операционной системы GNU достигли хорошего прогресса — кроме ядра. Разработчики проекта GNU работали над микроядром под названием GNU Hurd, но прогресс был медленным. (Сегодня он все еще находится в разработке и приближается к релизу) Без ядра не было бы операционной системы.
В 1987 году Эндрю С. Танебаум выпустил операционную систему MINIX (mini-Unix) в качестве учебного пособия для студентов, изучающих проектирование операционных систем. MINIX была функциональной Unix-подобной операционной системой, но имела некоторые ограничения, особенно в отношении файловой системы. В конце концов, исходный код должен быть достаточно маленьким, чтобы его можно было адекватно изучить за один университетский семестр. Некоторой функциональностью пришлось пожертвовать.
Чтобы лучше понять внутреннюю работу Intel на своем новом ПК, студент-информатик Линус Торвальдс написал в качестве учебного упражнения простой код переключения задач. В конце концов, этот код стал элементарным прото-ядром, которое стало первым ядром Linux. Торвальдс был знаком с MINIX. Фактически, его первое ядро было разработано для MINIX с использованием компилятора GCC Ричарда Столлмана.
Торвальдс решил создать свою собственную операционную систему, которая преодолела бы ограничения MINIX, предназначенного для обучения. В 1991 году он сделал свое знаменитое объявление в группе MINIX Usenet, в котором попросил комментариев и предложений по его проекту.
Linux на самом деле не клон Unix. Если бы Linux был клоном Unix, это был бы Unix. Это не так, это похоже на Unix. Слово «клон» подразумевает, что некоторая небольшая часть оригинала перешла в новую копию оригинала. Linux был создан заново, чтобы иметь внешний вид Unix и удовлетворять те же потребности. Это не столько клон, сколько репликант.
Но в любом случае Linux был ядром, ищущим операционную систему; GNU была операционной системой, ищущей ядро. Оглядываясь назад, то, что произошло потом, кажется неизбежным. Это также изменило мир.
Что такое дистрибутив Linux
Дистрибутив Linux — это когда разные компании и разработчики берут ядро и добавляют сверху какой-то набор программ: оболочки, компиляторы, драйверы и всё остальное. Это уже становится полноценной операционной системой, и каждая из таких сборок имеет своё название.
Количество дистрибутивов Linux огромно — около 500 более-менее известных и бесчисленное множество разных сборок под разные задачи.
Любой человек, почитав полдня документацию и сформулировав свою задачу, сможет собрать собственный дистрибутив Linux — например под старый компьютер, для обучения, напичканный играми или для веб-разработки.
Процессоры архитектуры P6
Процессор | Ядро | Технология производства | Годы выпуска |
---|---|---|---|
Pentium Pro | P6 | КМОП/БиКМОП, 500—350 нм | — |
Pentium II | Klamath, Deschutes | КМОП, 350—250 нм | — |
Pentium III | Katmai, Coppermine, Tualatin-256 | КМОП, 250—130 нм | 1999— |
Pentium III-S | Tualatin | КМОП, 130 нм | —2002 |
Celeron | Covington, Mendocino, Coppermine-128, Tualatin-256 | КМОП, 250—130 нм | 1998—2002 |
Pentium II Xeon | Drake | КМОП, 250 нм | 1998—1999 |
Pentium III Xeon | Tanner, Cascades, Cascades 2MB | КМОП, 250—180 нм | 1999—2001 |
Pentium Pro (P6) | Pentium II (Deschutes) | Pentium III (Coppermine) | Pentium IIIS (Tualatin) |
---|---|---|---|
Pentium III Mobile | Celeron (Mendocino) | Celeron (Mendocino) | Celeron (Coppermine-128) |
Используются дополнительные способы Inode
То, как работают inode в Linux, делает невозможным наличие конфликтующих номеров inode. Невозможно создать жесткую ссылку на разные файловые системы. Однако вы можете использовать программные ссылки в разных файловых системах. Вы можете удалить исходные файлы и по-прежнему иметь доступ к данным по жесткой ссылке.
Удалив файл, все, что вы сделали, это удалили одно из имен, указывающих на конкретный номер инода. Данные будут оставаться до тех пор, пока вы не удалите все имена, связанные с одним и тем же номером инода. Обновление систем Linux без необходимости перезагрузки системы в значительной степени из-за способа работы inode.
Процесс может одновременно использовать файл библиотеки, другой процесс заменяет этот же файл более новой обновленной версией и создает новый индекс. Запущенный процесс продолжает использовать старый файл. В следующий раз, когда вы будете использовать тот же процесс, он будет использовать новую версию.
Пользователи не взаимодействуют напрямую с inode, но они представляют фундаментальный компонент файловых структур Linux.
История разработки
Корни Linux уходят в два других проекта: Unix и Multics, которые ставили своей целью разработать многопользовательскую операционную систему.
Что такое Unix?
Unix – это собрание кроссплатформенных многопользовательских и многозадачных операционных систем.
Можно сразу сказать, что в данный момент Unix-системы являются одними из самых важных операционных систем. Влияние Unix распространилось и на языки программирования: язык C был разработан во время разработки Unix-систем.
Разработкой Unix занималась корпорация Bell Laboratories – в 1969 году они показали первую систему Unix. Чем дальше, тем большую популярность обретали системы Unix – в 70-х их начали устанавливать на компьютеры в учебных заведениях.
При создании Unix разработчики поставили перед собой три основные задачи:
- Использование минимального количества функций, сохранение простоты.
- Общность: одинаковые методы и механизмы в разных случаях.
- Комбинирование программ для решения задач, а не разработка новых программ с нуля.
Что касается отличительных особенностей Unix, то это:
- Практически постоянное использование командной строки.
- Использование конвейнеров.
- Настройка системы через использование простых (зачастую текстовых) файлов.
Unix имеет свою собственную философию. Программист Дуглас Макилрой, который разработал конвейнер в Linux, определил следующие правила:
Одна из проблем, коснувшаяся Unix, – наличие разных версий и множества программ, которые писали разработчики под свои нужды. Из-за низкой совместимости программы, работающие с одной версией Unix, могли не работать на машинах с другими версиями. В итоге было решено создать общий документ со стандартами, которым должны следовать разработчики.
В 1983 году было объявлено о создании GNU (GNU’s Not UNIX), Unix-подобной операционной системы. Произошло это под влиянием идеи основателя проекта Ричарда Столманна о необходимости создания свободно распространяемой операционной системы и программного обеспечения с открытым исходным кодом.
Ричард Столманн также основал движение свободного программного обеспечения и сформулирован четыре права, которыми должен обладать пользователь: он может запускать программу для любых целей, он может изучать программы и изменять их согласно своим потребностям, он может распространять программу, чтобы помочь другим, и он может публиковать улучшения программы, чтобы помочь сообществу в целом. Все это говорило о том, что исходный код программы должен быть доступен всем.
Именно эта мысль вдохновила Линуса Торвальдса, создателя Linux, начать в 1991 году работу над своей операционной системой. Linux, как и GNU, это Unix-подобная система, то есть система, появившаяся под влиянием Unix.
В дальнейшем именно система GNU/Linux станет той системой, которую сейчас называют просто Linux.
Что такое Multics?
Multics – Multiplexed Information and Computing Service («Мультиплексная информационная и вычислительная служба») – это одна из самых первых операционных систем, в которой была реализована плоская модель хранения данных и четко разделена концепция файлов (сегментов). Создание Multics началось в 1964 году. Над системой работали разработчики компании Bell Laboratories – через несколько лет часть разработчиков начнет работу над созданием Unix.
Multics разрабатывали для того, чтобы, во-первых, дать возможность использовать ресурсы ЭВМ большому количеству пользователей одновременно, во-вторых, дать пользователям возможность совместно использовать данные, в-третьих, обеспечить хорошую скорость работы с данными.
Однако главные вычислительные задачи не были достигнуты при выпуске первой версии системы, и компания Bell Laboratories перевела свой интерес на другой проект, в результате которого на свет появился Unix.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Что значит ядро Linux?
Ядро Linux — это то, что разработал программист Линус Торвальдс, когда хотел получить основные возможности UNIX, но без ограничения на коммерческое использование.
Ядро операционной системы отвечает за её базовые команды и операции, которые она умеет делать:
- управление памятью — выделить место программе, ограничить, очистить;
- управление процессами — запустить, дать ресурсы, убить;
- управление железом — в ядро встроены драйверы для некоторого набора оборудования, чтобы операционка сразу работала на железе;
- обмен информацией между процессами, службами и программами — чтобы программы могли отправлять запросы в интернет, писать данные на диск, читать с диска, запускать друг друга, обращаться к системе и т. д.
Ядро практически не видимо для пользователя, его нельзя «открыть», у него нет видимых для пользователя окон и кнопок. В ядро даже нельзя ввести команду с клавиатуры. Это как рептильный мозг человека: у нас нет к нему осознанного доступа и мы не можем остановить себе сердце силой мысли, но благодаря этому «ядру» у нас бьётся сердце.
Поверх ядра Linux разные программисты сделали свои версии операционных систем: RedHat, Ubuntu, Mint Linux и много-много других. Вот и получается, что ядро в основе — одно, а дистрибутивов Linux — много.
Что такое i686 в Linux/Unix?
Идентификатор i686 в широком смысле относится к ядру, оптимизированному для работы процессора Intel с использованием микроархитектуры P6, обычно ассоциируемой с процессорами Pentium Pro и Pentium M класса с 1995 года и позже. Дистрибутив Linux для i686 поддерживает большинство реализаций, которые ему предшествовали – например, компьютер i686 обычно отлично работает с дистрибутивами на основе i386.
Стандарт i686 работает под управлением 32-разрядной операционной системы. Конкретные дистрибутивные образы для машин i686 оказываются все более редкими после 2004 года.
Микроархитектура Intel
Процессоры Intel потребительского уровня следовали соглашению о присвоении имен * 86, начиная с чипа 8086, выпущенного в 1978 году. Более поздние итерации включали 16-разрядный i286 в 1983 году, 32-разрядный i386 в 1985 году, 32-разрядный i486 в 1989 году. i586 (оригинальный чип Pentium) в 1993 году, i686 (Pentium Pro) в 1995 году и i786 (Pentium 4 или NetBurst) в 2000 году.
С 2003 года процессоры серии x64, поддерживающие 64-битные операционные системы, стали доминировать на потребительском рынке. Имена классов микроархитектуры не эволюционировали после x64; Нынешняя схема именования Intel направлена на создание процессора.
Другие Архитектуры
Помимо i686, вы, вероятно, столкнетесь с несколькими другими индикаторами, специфичными для процессора:
- x86_64 : поддерживает 64-разрядную архитектуру Intel
- amd64 : поддерживает 64-битную архитектуру AMD
- arm64 : поддерживает 64-битные чипы ARM
Когда я должен использовать приложения i686?
Ваш менеджер пакетов определит правильный пакет для вашего ядра. Как правило, вы всегда сможете установить дистрибутивные образы с ядрами, предварительно скомпилированными для архитектуры i386 – вы получите 32-разрядную производительность, но для процессоров Intel она, как правило, всегда Работа. Если вы используете современный компьютер с 64-разрядным процессором Intel, выбор образа x86_64 имеет больше смысла.
Вы найдете прирост стоимости в комплектации i686 (если он доступен!), Если у вас более старый компьютер с процессором Pentium Pro через процессор Pentium 3 или процессор Pentium M. Ядро i686 предлагает некоторые дополнительные функции, встроенные Intel в процессор, которые недоступны базовому ядру i386.
Если вы не можете найти соответствующий дистрибутивный образ, предварительно скомпилированный для стандарта i686, вы всегда можете скомпилировать собственное ядро с нуля.
Популярные дистрибутивы Linux
Дистрибутив Linux – это определение операционной системы, которая использует ядро Linux и которую можно установить на машину пользователя. В дистрибутивах обычно содержатся не только ядро и сама операционная система, но и полезные приложения: редакторы, проигрыватели, инструменты для работы с базами данных и другое программное обеспечение.
То есть, как уже было сказано в начале статьи, дистрибутив Linux – это операционная система, состоящая из ядра Linux и утилит, которые разрабатываются в рамках GNU.
Количество существующих дистрибутивов Linux превышает 600 штук, более 300 из которых постоянно дорабатываются и обновляются.
Ubuntu
Ubuntu– один из самых распространенных дистрибутивов, легко устанавливается и интуитивно понятен в работе. Отлично подходит для персональных компьютеров, ноутбуков и серверов. Разрабатывается и спонсируется компанией Canonical Ltd, но имеет активную поддержку и со стороны свободного сообщества. Самая популярная операционная система для веб-серверов.
Debian
Debian– еще один популярный дистрибутив GNU/Linux, который оказал существенное влияние на развитие всех GNU/Linux-операционных систем в целом. Основные черты Debian: широкие возможности, наличие множества репозиториев, высокое качество версий. Это самый стабильный дистрибутив из всех существующих.
Linux Mint
Linux Mint– дистрибутив, основанный на Ubuntu и Debian. Linux Mint обладает красивым и удобным дизайном и подойдет даже начинающим пользователям. Поэтому его часто устанавливают на домашние компьютеры для того, чтобы иметь простую и удобную систему. Дистрибутив имеет поддержку различных мультимедийных форматов, в том числе включает проприетарные программы (Adobe Flash), поэтому хорошо подходит для работы с мультимедиа.
Manjaro
Manjaro– дистрибутив, основанный на Arch Linux. Благодаря большому количеству предустановленных программ (например, для офисной работы) он достаточно дружественен к новичкам, но в то же время может быть тонко настроен.
Arch
Arch– мощный дистрибутив, базирующийся на принципах простоты, современности, прагматизма, гибкости и идеи, что в центре внимания должен быть пользователь. Однако принцип простоты распространяется не на использование системы, а на ее внутреннюю организацию (принципы KISS и Unix-way). Поэтому Arch рассчитан на опытных пользователей, которые самостоятельно настроят и установят необходимые им утилиты.