Почему начальные адреса в ОП, на которые загружается программа, одинаковы на всех компьютерах?08.04.2018, 16:48. Показов 3344. Ответов 27
Метки нет (Все метки)
Т.е. есть некая программа. Есть адрес в ОП, например 0xE123F456. Скомпилированный исполняемый файл программы на конкретном компьютере начинает загружаться, начиная с этого адреса. На другом компьютере начальный адрес будет тем же самым.
Но, допустим, программ на компьютере очень много. Теоретически, их может быть больше, чем число адресов в ОП. Получается, на всех программ начальных адресов не хватит? А как тогда будут загружаться ДВЕ программы, имеющие один и тот же начальный адрес? Т.е. вторая загрузится лишь после того, как будет выгружена первая программа и будет освобожден начальный адрес загрузки?
0
|
|
| 08.04.2018, 16:48 | |
|
Ответы с готовыми решениями:
27
Почему макрос работает не на всех компьютерах??
Программа работает не на всех компьютерах |
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
||
| 22.04.2018, 18:46 | ||
|
1
|
||
| 04.05.2018, 21:44 [ТС] | |
|
R71MT,
где-то там я видел фразу при возникновении ошибки "процессор бросает исключение". А можно подробнее - что представляет собой исключение? Бросает - это как: возвращает некое значение в какой-либо свой регистр? "Обращение к IDT возможно только на аппаратном уровне при возникновении исключений или аппаратных инт'ов". Т.е. если прерывание является программным или обусловлено ошибкой - значит, номер его обработчика будет содержаться не в IDT, а в какой-то другой таблице прерываний? Про сегмент TSS я так и не понял. В смысле, это - регистр процессора такой? Или сегмент ОП (наряду с сегментами кода, данных, стека)? Еще вопрос по поводу битов: A = Accessed - к странице был доступ; P = Present - страница присутствует в памяти (может быть на диске); G = Global - глобальная страница; D = Dirty - грязная\изменённая страница. Там есть еще биты R, W. Вроде бы, R - это аналог А; W - аналог D? Еще есть бит 4М. Это признак того, что страница имеет объем 4 мегабайта? Добавлено через 13 минут Потом, вот на этом рисунке https://www.cyberforum.ru/atta... 1509598193 есть два спорных. на мой взгляд, момента: 1) Красными стрелками обозначена общая страница. Но, насколько мне известно, общим может быть лишь сегмент (при сегментном распределении памяти), тогда как страницы (при страничном распределении) общими не бывают? Или, все же, бывают, если они используются разными потоками, к примеру? 2) Вы пишете о необходимости запуска дефрагментатора памяти. Но, вроде как, при страничном распределении памяти фрагментация не имеет значения, т.к. система использует первую попавшуюся свободную страницу физической ОП. Хотя, при сегментном распределении, вроде бы, в самом деле, присутствует проблема фрагментации. Т.е. рисунок имеет отношение, все-таки, только к сегментному распределению?
1
|
|
|
Эксперт Hardware
|
||||
| 05.05.2018, 14:45 | ||||
Сообщение было отмечено Htext как решение
РешениеПоскольку исключения перехватываются на этапе декодирования инструкций, они останавливают конвейер. Инструкции, которые уже там находятся помечаются как недействительные, и по мере продвижения, их результаты отбрасываются. Программный счётчик устанавливается на вектор обработчика исключений, а во-внутренние регистры ЦП заносится место и причина исключения. Теперь, эти данные помещаются в ядерный стек, и через дескриптор в IDT, ОС отдаёт управление в 'SEH - System Exception Handler'. Цепочка SEH-обработчиков анализируя стек проверяет исключение на свой-чужой, и если оно не имеет мандата от системы, то последний из обработчиков тупо валит систему в BSOD.
Но это касается только устаревшего варианта обработки прерываний. Архитектура систем в корень изменилась ещё в нулевых годах. Параллельная шина PCI уже отживает свой век, и ей на смену пришла последовательная PCIE. Теперь вместо корневого хаба ставят Root-Complex, к которому подключают свитчи Switch. Устройства PCIe подключаются к свитчам через линки х1/х16, образуя сетку типа звезда - т.е. общей шины устройств уже нет, и им не нужен APIC - они обмениваются сообщениями. Когда устройство PCIe хочет привлечь к себе внимание, оно не генерит прерывание на линию APIC, а осуществляет запись д'ворда в фиксированную область системной памяти по адресу 0xFEE00000 - каждый INT = 4 байта. ЦП расценивает любое обращение в эту облась как запрос на прерывание, и передаёт управление его драйверу - обработкой запроса занимается уже сам дров. Каждое из устройств может генерить не одно, а от 32 до 2048 различных прерываний, в красках расписывая его характер. Такой принцип получил название 'MSI - Message Signaled Int'. Почитай об этом в гугле..
------------------------------------------------ Сейчас архитектура уже не та, что раньше - она мутировала, ..причём настолько, что рассматривать старые системы нет никакой мазы. Это в вузах до сих-пор надругаются над трупами i80286, а в современном мире дела обстоят уже совсем иначе. Архитектура стала многопроцессорной и помимо внешнего I/O APIC, каждый из процессоров имеет свой локальный APIC и если в системе процессор один, локальный можно отключить программно через ногу APICEN: Классическая схема APIC запоминает линию(IRQ) и подаёт процессору сигнал-запроса прерывания INTR. В ответ, большой-Бос подтверждает его сигналом INTA и снимает с APIC номер IRQ. Дальше вектор из IDT и всё по-плану.. В мультипроцессорной-же системе есть некоторые нюансы.. Для передачи запросов введена спец/шина APIC-Bus, по которой запросы поступают на системный IO-APIC. Каждый из проциков имеет свой контроллёр и две входные линии LINT(0-1). На них поступают запросы инт'ов, обслуживаемые только данным ЦП. При работе в однопроцессорной системе LocalAPIC отключается, и выводы LINT(0-1) используются для подачи запросов немаскируемого(NMI) и маскируемого(INTR) прерываний. Немаловажную роль играет здесь и SMI-прерывания 'Sys Management Int'. Чипсет генерит на этой линии запрос в следующих случаях: hard/soft-RESET; исключение #MC (машинный контроль); ловушка при переключении задач; FLUSH#=0 (очистка кэш-памяти), STOPCLK#=0 (сон), SMI#=0 (вход в системный режим), INIT=1 (инициализация ЦП) и прочии.. INTR (Request) - входной сигнал маскируемого прерывания. Если он не замаскирован программно, прерывает работу ЦП и заставляет его подтвердить запрос сигналом INTA, для считывания номера прерывания из APIC. NMI - заставляет ЦП выполнить конкретную процедуру, без считывания вектора из APIC. Немаскируемые прерывания сигнализируют о ситуациях, требующих немедленного внимания ЦП, например отключение питание, сбой в работе памяти и т.п.
2
|
||||
|
Эксперт Hardware
|
|||
| 05.05.2018, 15:27 | |||
|
2
|
|||
| 23.05.2018, 20:57 [ТС] | ||
|
Или TSS - это особый, четвертый вид сегментов? Добавлено через 1 час 22 минуты Судя по ссылке, "Каждая задача может поддерживать до четырех стеков..." - похоже, TSS входит в состав сегмента стека. Добавлено через 2 часа 5 минут Вот, кстати, в подтверждение (сказанного ранее, по поводу 64 разрядов): https://ru.wikipedia.org/wiki/... 1%80%D0%B0 "В 64-разрядном режиме сегментные регистры CS, DS, ES и SS в формировании линейного (непрерывного) адреса не участвуют, поскольку сегментация в этом режиме не поддерживаются. "
0
|
||
|
Эксперт Hardware
|
|||||||||
| 23.05.2018, 22:00 | |||||||||
1
|
|||||||||
| 26.05.2018, 22:35 [ТС] | |
|
0
|
|
| 26.05.2018, 22:35 | |
|
Помогите! Почему у меня не идёт программа на других компьютерах? Программа, которая использует связь с БД, работает не на всех компьютерах. Почему моя программа может не работать на компьютерах других пользователей? Как сделать чтобы готовая программа с базой данных работала на всех компьютерах? Узнать адреса всех запросов, которые слушает Spring Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|