Форум программистов, компьютерный форум, киберфорум
Низкоуровневое программирование
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
1

Почему начальные адреса в ОП, на которые загружается программа, одинаковы на всех компьютерах?

08.04.2018, 16:48. Показов 2504. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Т.е. есть некая программа. Есть адрес в ОП, например 0xE123F456. Скомпилированный исполняемый файл программы на конкретном компьютере начинает загружаться, начиная с этого адреса. На другом компьютере начальный адрес будет тем же самым.
Но, допустим, программ на компьютере очень много. Теоретически, их может быть больше, чем число адресов в ОП. Получается, на всех программ начальных адресов не хватит? А как тогда будут загружаться ДВЕ программы, имеющие один и тот же начальный адрес? Т.е. вторая загрузится лишь после того, как будет выгружена первая программа и будет освобожден начальный адрес загрузки?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2018, 16:48
Ответы с готовыми решениями:

Почему макрос работает не на всех компьютерах??
Здравствуйте, товарищи программисты!Требуется Ваша помощь, ибо надежды в своих силах уже нет(...

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

Программа работает не на всех компьютерах
Всем привет. Есть такая проблема- написал программу. Суть программы- ждет подключение флешки и...

Помогите! Почему у меня не идёт программа на других компьютерах?

27
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
08.04.2018, 17:34 2
Лучший ответ Сообщение было отмечено Htext как решение

Решение

Цитата Сообщение от Htext Посмотреть сообщение
Получается, на всех программ начальных адресов не хватит?
..памяти хватит хоть на 20 программ, т.к. память у винды - виртуальная.
Физическая ОЗУ делится на фреймы, в которых отображаются виртуальные страницы запущенных программ.
Виртуальный и физический адреса не совпадают, поэтому загруженные по одному-и-тому-же базовом адресу программы, на самом деле находятся в разных областях (фреймах) физической памяти. Когда свободные фреймы в ОЗУ заканчиваются, то редко/используемые из них выгружаются на диск, в т.н. своп-файл (pagefile.sys).

Кстати, большинство EXE-программ загружаются по фиксированному виртуальному адресу, который равен не 0xE123F456 (как ты говоришь), а по адресу 0x00400000. Для библиотек DDL имеется свой адрес 0x10000000. В дизассемблере W32Dasm можно узнать конкретный адрес, в поле 'ImageBase' - база образа в памяти:

Код
Disassembly of File: D:\PETools.exe  --------- *.exe -------+
Code Offset = 00000400, Code Size = 0003B600                |
Data Offset = 00000400, Data Size = 0003B600                |
Number of Objects = 0002 (dec), Imagebase = 00400000h  <----+
-------------------

Disassembly of File: D:\about.dll  ----------- *.dll -------+
Code Offset = 00000400, Code Size = 00000E00                |
Data Offset = 00001200, Data Size = 00000200                |
Number of Objects = 0004 (dec), Imagebase = 10000000h  <----+
5
357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
08.04.2018, 17:59  [ТС] 3
Цитата Сообщение от R71MT Посмотреть сообщение
память у винды - виртуальная
А разве в Linux не делается подобная виртуализация?

Добавлено через 6 минут
Правильно ли я понял, что
Цитата Сообщение от R71MT Посмотреть сообщение
00400000h
-
это начальный адрес, а
Цитата Сообщение от R71MT Посмотреть сообщение
Code Offset = 00000400
и
Цитата Сообщение от R71MT Посмотреть сообщение
Data Offset = 00000400
- смещения от ЭТОГО адреса?
Попутный вопрос - а почему смещения кода и данных совпадают?
0
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
08.04.2018, 21:43 4
Цитата Сообщение от Htext Посмотреть сообщение
А разве в Linux не делается подобная виртуализация?
..виртуальную память включает сама система, она-же (точнее её менеджер памяти) и управляет ей. При переходе из реального режима(RM) в защищённый(PM), становятся доступными 32/64-битные адреса памяти (в реальном режиме адрес 20-битный). Как распрорядиться этой памятью, и как организовать её - дело разработчика оси. Ты можешь сам включить/выключить вирт/память.

ЦП имеет регистры управления(CR0-CR4) и машинные регистры(MSR), с помощью которых и настраивается модель памяти. Почитай про таблицы GDT/LDT/IDT, регистр(CR0) и регистр задачи(TR). Регистр задачи указывает на базу, куда скидывается весь контент текущей задачи, при переключении на другую задачу. ЦП работает только с одной задачей, и что-бы перейти на другую, нужно запомнить состояние текущей значения всех регистров и прочее. В регистре(CR3) хранится адрес каталога виртуальных страниц текущей задачи 'PDT - Page Directory Table'. У каждой задачи свой каталог вирт/страниц.

Это мутная тема, и сходу в ней не разберёшься. Достаточно внятно этот механизм описан в манах Интела IA32/64 vol.3 'Programming Guide'.

Цитата Сообщение от Htext Посмотреть сообщение
Правильно ли я понял, что 00400000h - это начальный адрес, а Code Offset = 00000400 - смещения от ЭТОГО адреса?
..правильно. есть 2-вида адресов VA и RVA - первый 'виртуальный', а второй 'Relative' - относительно виртуального. Обычно, смещения кода и данных не совпадают. В данном случае я привёл неудачный пример хакерской утилиты 'PETools', в которой (видимо) секция-данных открыта на запись (совмещена с секцией кода). От сюда и глюк... Если посмотреть на другие программы, то в них всё будет нормально.

Вот лог дизассемблера HDasm (Hackers Disambler), в которой секция-данных отмечена исполняемым флагом 'CODE'. Здесь-же видны и адреса загрузки секций в память (.data ляжет по вирт/адресу 0х00401400):
Код
 
File: PETools.exe
Size: 435*200
Type: PE
Base Of Code: 00001000, Code Size: 00000000
Base Of Data: 00001000, Data Size: 0006A000
Image Base: 00400000
Entry Point: 0042BC3E

Sections:

   Name   | VirtAddr | VirtSize |  Offset  | PhysSize |  Flags   | Code
----------+----------+----------+----------+----------+----------+------
 .data    | 00401000 | 0003B5E8 | 00000400 | 0003B600 | C0000040 | Yes
 .rsrc    | 0043D000 | 0002E8B8 | 0003BA00 | 0002EA00 | 40000040 |  

* Entry Point (от сюда начинается код):
--------------
0042BC3E: 55                   push  ebp
0042BC3F: 8BEC                 mov   ebp, esp
0042BC41: 6AFF                 push  FFFFFFFF
0042BC43: 68E8874000           push  004087E8
0042BC48: 686CB24200           push  0042B26C
0042BC4D: 64A100000000         mov   eax, fs:[00000000]
0042BC53: 50                   push  eax
0042BC54: 64892500000000       mov   fs:[00000000], esp
0042BC5B: 83EC58               sub   esp, 00000058
0042BC5E: 53                   push  ebx
0042BC5F: 56                   push  esi
0042BC60: 57                   push  edi
0042BC61: 8965E8               mov   [ebp-18], esp
0042BC64: FF154C124000         call  KERNEL32.GetVersion
............
4
357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
09.04.2018, 18:51  [ТС] 5
R71MT, спасибо, ценная информация!
0
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
09.04.2018, 20:41 6
Htext, вот ещё тема, может найдёшь-что полезного...
0
357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
10.04.2018, 16:15  [ТС] 7
R71MT, спрошу здесь, чтобы ту тему не засорять. Вроде бы, 64-разрядные ОС не поддерживают сегментацию?
https://books.google.ru/books?... 8E&f=false

Добавлено через 14 минут
Сегментных регистров, вроде бы, 4, а не 6 (кода, данных, стека, дополнительный).
0
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
10.04.2018, 17:41 8
Вы вот ссылку дали, а до конца информацию там не прочитали.
Сегментная организация памяти используется в 16-ти битном коде DOS, который, ОСи 64-ех битные уже не поддерживают.
Селекторная организация памяти, использует те же сегментные регистры(ну не выбрасывать же их), что и сегментная адресация, ВОТ ТОЛЬКО информация в них хранится УЖЕ другая, Аналогично страничная организация памяти - отличается от селекторной

Цитата Сообщение от Htext Посмотреть сообщение
вроде бы, 4, а не 6

Никто даже не спорит(см. рис), всё, что *S - сегментный регистр.
Изображения
 
0
357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
10.04.2018, 18:33  [ТС] 9
Там написано, что при 64 разрядах сегментация является устаревшей, больше не поддерживается и применяется только в унаследованном режиме (конец стр. 285). И что остатки старых механизмов сегментации... не предлагают реальную сегментацию (начало стр. 286).
Вы говорите о сегментных регистрах (в которых теперь, да, хранится другая информация). А я - о сегментации ОП. Которой в 64-ОС больше нет.

Добавлено через 15 минут
Цитата Сообщение от Constantin Cat Посмотреть сообщение
*S - сегментный регистр
Видимо, вместо одного дополнительного - три, т.е. для кода, стека и данных. Просто я всегда считал, что дополнительный - 1. Так было в 086, по-моему.
0
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
10.04.2018, 18:51 10
Цитата Сообщение от Htext Посмотреть сообщение
Вроде бы, 64-разрядные ОС не поддерживают сегментацию?
..у меня проц на машине 32-битный, поэтому с 64-бит экспериментов не проводил, но как утверждает INTEL в своём мане IA64/32 vol(1) - "сегментация неподдерживается частично". Сегментных регистров по-прежнему шесть:
Код
CS - code;
SS - stack;
DS,ES,FS,GS - data.
IA-32/64 Architectures Volume(1) стр.77

Почему начальные адреса в ОП, на которые загружается программа, одинаковы на всех компьютерах?
Почему начальные адреса в ОП, на которые загружается программа, одинаковы на всех компьютерах?



По-русски это означает, что в х64, базы сегм/регистров [CS,DS,ES,SS] на аппаратном уровне сбрасываются в нуль, хотя FS и GS являются исключениями. В этом и смысл выражения "..неподдерживается частично". При нулевых селекторах, получаем плоскую модель памяти 'FLAT' для кода, данных и стека - логический адрес совпадает с линейным. FS и GS могут использоваться в качестве доп/базовых регистров для указания локальных данных и структур ОС.

Поскольку в PMode [CS,DS,ES,SS] при любых обстоятельствах равны нулю, то 16-битный режим реальных адресов неподдерживается вообще, т.к. требует изменения этих регистров - совместимость только с х32.

Кстати, поэтому и 64-битные отладчики не показывают в своём окне сегм/регистры [CS,DS,ES,SS], а только [FS,GS] будучи уверенными, что в них и так находятся нули (мол, если уж отлаживаешь, то должен об этом знать):

Почему начальные адреса в ОП, на которые загружается программа, одинаковы на всех компьютерах?
1
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
10.04.2018, 19:54 11
Цитата Сообщение от Constantin Cat Посмотреть сообщение
Сегментная организация памяти используется в 16-ти битном коде DOS, который, ОСи 64-ех битные уже не поддерживают.
Цитата Сообщение от Htext Посмотреть сообщение
Вы говорите о сегментных регистрах

где я говорил о регистрах?

Начиная со всех 32-х битных ОСей, режим DOS'а в командной строке ЭМУЛИРОВАЛСЯ. Т.е. сегментация уже была и не сегментацией вовсе.
0
357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
11.04.2018, 22:04  [ТС] 12
Constantin Cat
Цитата Сообщение от Constantin Cat Посмотреть сообщение
Никто даже не спорит(см. рис), всё, что *S - сегментный регистр.
-
вот здесь.

Добавлено через 14 минут
Цитата Сообщение от Constantin Cat Посмотреть сообщение
режим DOS'а в командной строке
Причем тут командная строка, эмуляция. Здесь дело не в сегментации ОП.
По поводу сегментации в 32-х - с Вами Э. Таненбаум не согласен, который в начале стр. 286 (по ссылке) пишет, что в системах Х86-32 до сих пор есть сегменты (конкретно, абзацы 2, 3). Он даже конкретно отмечает, что есть сегмент кода, данных и стека. На рисунке 3.36 описывается структура дескриптора сегмента кода (а сегмент кода - это участок в ОП).
Еще раз: сегментация устарела лишь в 64-х. В 32-х она присутствовала.

Добавлено через 3 минуты
Цитата Сообщение от Constantin Cat Посмотреть сообщение
режим DOS'а в командной строке ЭМУЛИРОВАЛСЯ
Если уж Вы упомянули эмуляцию DOS, так это связано, повторюсь, вовсе не с отсутствием сегментации. А с тем, что в DOS присутствовали (были разрешены) опасные системные вызовы, например, непосредственно к устройствам. Которые MS решила заблокировать. И посему и ввела виртуальную машину DOS, реализовав т.н. "метод трамплина". Могу написать об этом подробнее.

Добавлено через 1 минуту
Если кратко - до речь идет о вынесении программ под DOS в область более высоких адресов, выше 4 МБ.
0
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
12.04.2018, 01:29 13
Цитата Сообщение от Htext Посмотреть сообщение
сегментация устарела лишь в 64-х. В 32-х она присутствовала.
..открою маленький секрет, что буквально все процессоры(64/32) в защищённом режиме используют одинаковую модель памяти. По большей мере связано это с тем, что новая организация/адресация памяти требует новых компиляторов (С++, ассемблер etc). Отсюда следует, что никаких изменений подсистемы памяти даже в отдалённом будущем не планируется, т.к. придётся переписывать все компиляторы.

Сегментация в любом её виде - это абстракция. Попробую объяснить, почему..
Любая ОС адресует память посредством всего 2-х селекторов - один CS; другой DS,ES,SS,GS,FS. Оба селектора имеют базу(0) и лимит(4Gb). В FS загружает селектор сегмента TEB (Thread_Environment_Block', он-же TIB).

Фактически, ОС выделяет всего один сегмент и для кода, и для данных, и для стека. Благодаря этому все переходы внутри программы типа 'NEAR' (близкие.. префиксы не нужны). Хотя селектор(CS) не равен селекторам(DS,ES,SS), дополнение этими префиксами операндов приведёт к чтению одной и той-же ячейки памяти. Вот пример:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
;fasm-code
;---------
format  PE console
include   'win32ax.inc'
.code
start:  nop
        nop
        mov   eax,[cs:array]
        mov   ebx,[ds:array]
        mov   ecx,[es:array]
        mov   edx,[ss:array]
     invoke   ExitProcess,0
.end start
;---------
.data
array  dd  12345678h
Почему начальные адреса в ОП, на которые загружается программа, одинаковы на всех компьютерах?


На рисунке видно, что селекторы в регистрах различные, но на адресацию памяти они не влияют (красным выделены базы, а синим - лимиты, во-всех РОН находится тестовое значение). Регионы кода, стека и данных отличаются лишь атрибутами принадлежащих им страниц: CS=R/Ex, DS=R/W, SS=R/W/Ex. Начиная с Win7, атрибут исполнения(Ex) у регистра(SS) уже отняли, и за исполняемым стеком чутко следит визор. В селекторах сегментных регистров, атрибуты контролируют только хозяина сегмента (юзер или ОС - уровень привелегий), а в дескрипторах - уже контроль на доступ к самим страницам памяти (R,W,Ex).

Чтобы раз и навсегда избавиться от этой путаницы, в 64-бит системах на аппаратном уровне запихали нули во-все селекторы, ведь у 32 они всё-равно были нулевые. При этом, 'защиту от дурака' тоже предусмотрели, и в РМode, блок сегментации в MMU вообще отключили. Достоверно проверить не могу (у меня проц 32-бит), но думаю-что в реальном режиме сегментация у 64-бит всё-таки работает, чтобы обеспечить Reset и POST при включении машины. Хотя в этом году я уже ошибался 4-раза, и может это пятый...
1
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
12.04.2018, 19:56 14
Цитата Сообщение от Htext Посмотреть сообщение
Сегментных регистров, вроде бы, 4, а не 6 (кода, данных, стека, дополнительный).
Цитата Сообщение от Htext Посмотреть сообщение
с Вами Э. Таненбаум не согласен
Он пишет на странице 286, строка 11:
Чтобы получить доступ к сегменту, программа, работающая в системе x86, сначала загружает селектор для этого сегмента в один из шести сегментных регистров машины.
Заметьте шесть, а не четыре, о которых Вы говорили.

Цитата Сообщение от Htext Посмотреть сообщение
с Вами Э. Таненбаум не согласен
Он не согласен даже сам с собой.
То он говорит, что:
Что же касается x86-64, то сегментация считается устаревшей и больше не поддерживается, исключая работу в унаследованном режиме.
А потом:
Так почему же Intel отменила то, что было вариантом весьма неплохой модели памяти MULTICS, поддерживаемой на протяжении почти трех десятилетий? Возможно, основной причиной стало то, что ни UNIX, ни Windows никогда не использовали этот вариант, несмотря на его высокую эффективность, по причине исключения системных вызовов и превращения их в молниеносные вызовы процедур по соответствующим адресам внутри защищенного сегмента операционной системы. Ни один из разработчиков любой UNIX- или Windows-системы не захотел менять свою модель памяти на нечто присущее только x86, так как это нарушило бы переносимость на другие платформы. Поскольку эта возможность оказалась невостребованной со стороны программного обеспечения, компании Intel надоело тратить впустую площадь микросхемы на ее поддержку и из 64-разрядных процессоров она была убрана.
Невостребованна и устарела - это две большие разницы. Раз не пользуетесь, значит не нужно тратить материалы. И говорилось не сегментации, а о модели памяти MULTICS. И это тоже разные вещи.
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
13.04.2018, 08:43 15
Цитата Сообщение от Constantin Cat Посмотреть сообщение
Заметьте шесть, а не четыре, о которых Вы говорили.
Шесть, четыре, да и то правильно и это.
У 8088, 8086, 80186, 80286 их было четыре: CS DS ES SS.
Начиная с 80386 появились еще и FS GS и их стало шесть.

Весь вопрос о чем идет разговор. Если разговор идет про 32-разрядный режим, то сегментных регистров однозначно шесть. Поскольку их стало шесть одновременно с появлением этого режима. А если про x86 вааще, да хоть и про селекторы-шмелекторы, то как бы то ли так, то ли эдак. Потому как у 80286 в их 16-разрядном защищенном уже появились эти шмелекторы, а сегментных регистров было все еще четыре. А до 80286 в сегментном регистре был ни разу не шмелектор, а номер параграфа и никогда ничего другого. Такой вот дрейф понятий, не знаю как это изложено у Танненбаума.
0
357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
13.04.2018, 19:42  [ТС] 16
Цитата Сообщение от Constantin Cat Посмотреть сообщение
И говорилось не сегментации, а о модели памяти MULTICS.
В приведенном Вами абзаце - да (до п.3.7.3, по тексту книги). Но, наш разговор идет не о MULTICS, а о х86: 32-х / 64-х. В самом начале п.3.7.3 идет речь о том, что до появлении 64-х напоминала память MULTICS. А вот дальше как раз и идет речь о х86.
Цитата Сообщение от R71MT Посмотреть сообщение
Сегментация в любом её виде - это абстракция.
Видимо, да. Потому что в ОП нет отдельно выделенных сегментов (кода, данных или стека). Там - только страницы. При преобразовании виртуального адреса (например,такого:
Цитата Сообщение от R71MT Посмотреть сообщение
0x00400000
- в физический осуществляется сегментно-страничное распределение. Вначале, да, виртуальный адрес 0x00400000 преображается, по сути, в некое подобие виртуального же адреса сегмента. Который еще НЕ является адресом физической страницы ОП. А вот в последующем процессе, при преобразовании этого адреса (в рамках страничного преобразования) получается базовый физический адрес со смещением.
Т.е. по сути, получается, что сегменты, в самом деле, имеют виртуальный характер. Так вот, насколько я понимаю, в 64-х убрано сегментное преобразование, осталось только страничное (а в 32-х было сегментно-страничное).
Что же касается компиляторов - ведь они же не работают с физическими адресами ОП. Они формируют виртуальные адреса. А потом уже (вроде, Вы здесь об этом уже говорили) происходит преобразование в физические адреса. НО: какой будет конкретный алгоритм такого преобразования (страничный ли, сегментно-страничный) - это уже зависит от ядра ОС. Но, не от компилятора.
Это как по аналогии с сайтами. Допустим, есть домен site.ru. И есть система DNS (аналог ядра ОС в данном случае). Набрав в браузере адрес site.ru (аналог виртуального адреса), попадаем на этот сайт. Но, это - виртуальный адрес. Тогда как физически этот сайт может находиться в любом месте, даже на другом континенте. Так вот, DNS в данном случае и осуществляет переадресацию запроса браузера именно на тот сервер сети, IP-адресу (аналог физического адреса) которого соответствует указанное доменное имя.
0
357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
21.04.2018, 14:55  [ТС] 17
R71MT, в той теме Память компьютера
Вы упоминаете про 4 кольца защиты. Здесь я не совсем понял. Вроде бы, в Windows/Linux существует лишь ДВА режима: пользовательский и привилегированный (ядерный). Т.е. только 2 кольца? Это вот, скажем, в OpenVMS, да, вроде как, 4 режима (кольца защиты). Или - кольцо защиты - это нечто иное?

Добавлено через 10 минут
И, еще, попутный вопрос: Вы каким источником руководствовались, составляя тот материал (я смотрю, картинки англоязычные, видимо, с какого-то англоязычного ресурса)?
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
21.04.2018, 18:55 18
Windows/Linux просто не используют Ring 1 и Ring 2. То есть архитектурой процессоров предусмотрено 4 кольца: 0 1 2 3, но этими операционками используются из них только два: 0 и 3.
0
Эксперт Hardware
Эксперт Hardware
6103 / 2347 / 390
Регистрация: 29.07.2014
Сообщений: 3,108
Записей в блоге: 4
21.04.2018, 19:31 19
Цитата Сообщение от Htext Посмотреть сообщение
Или кольцо защиты - это нечто иное?
..это одно и тоже.
Традиционно, x86 спосбны обеспечивать 4-кольца защиты (выделяются 2-бита), в порядке: ядро ОС (супервизор), драйвера, библиотеки, юм-приложения. Винда-же использует только два из них, и то не всегда. К примеру, какой-нить Legacy-драйвер вполне может характеризовать себя первым кольцом. Это просто привелегия доступа к данным. Сейчас появился ещё и гипервизор, который имеет приоритет перед супервизором, поэтому теперь сам чёрт не разберёт ихние дела. Но как-правило, это значения 0/core, и 3/user.

Цитата Сообщение от Htext Посмотреть сообщение
каким источником руководствовались
..материал собирал по-крупицам из разных источников,
а картинки - половину рисовал сам, а половину одолжил у манов интела:
Intel® 64 and IA-32 Architectures Software Developer’s Manual
Volume 3 (3A, 3B, 3C & 3D): System Programming Guide
1
357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
21.04.2018, 21:18  [ТС] 20
Цитата Сообщение от R71MT Посмотреть сообщение
материал собирал по-крупицам из разных источников
На самом деле, ОЧЕНЬ ценный материал. Я сколько ни смотрел - ни в одной книге так обстоятельно не изложено. В основном - как-то поверхностно. Или, напротив, излишняя детализация на чем-то без единого, цельного анализа. Спасибо Вам). Я, конечно, пока еще даже 1/5 не осилил.
0
21.04.2018, 21:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.04.2018, 21:18
Помогаю со студенческими работами здесь

Программа, которая использует связь с БД, работает не на всех компьютерах.
Добрый день! У меня, вот, такая незадачка вышла. Написал на VB6 программу, работающую с...

Почему моя программа может не работать на компьютерах других пользователей?
Здравствуйте. Подскажите пожалуйста почему может не работать моя программа на компьютерах? Думал...

Как сделать чтобы готовая программа с базой данных работала на всех компьютерах?
Как сделать чтобы готовая программа с базой данных работала на всех компьютерах? На другом...

Узнать адреса всех запросов, которые слушает Spring
Всем доброго дня. Есть Java Spring на котором разработан REST сервис с кучей методом, все это...

Почему не загружается моя программа
Мне нужна ваша помощь! Я не силен в программировании, поэтому обратился на этот сайт. Помогите,...

Адреса двух разных переменных одинаковы
Добрый день! Пытаюсь вывести в Memo1 адреса переменных: int a=5555; int b=6156;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru