Указатель на область памяти

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 09.09.2004 (Чт) 1:53

tyomitch писал(а):
Approximator писал(а):
tyomitch писал(а):
BP писал(а):Не думаю что для подсчёта линейного адреса нужен Си. По моему это можно сделать так: Сегмент * Длина Сегмента + Смещение.

Что за бред, о каких вообще сегментах в плоской модели памяти идёт речь?


:) :) :) :) :) :) :) :)

Сегменты есть ВСЕГДА. Иначе не бывает. В "плоской модели" организации памяти ВСЕГДА существует, КАК МИНИМУМ ТРИ СЕГМЕНТА: сегмент данных, сегмент кода, сегмент стека...
На самом же деле, в "плоской модели" огранизации памяти в одной программе бывает более трёх сегментов. Другой вопрос, что АДРЕСНОЕ ПРОСТРАНСТВО плоское. То есть адресация внутри этого адресного пространства сквозная. Однако, друзья мои, и тут бывают различия. Как вы думаете, если адресовать относительно ds и fs регистров в "плоской модели" организации памяти получишь одинаковый результат? Ну-ну... попробуйте на досуге, видимо, сильно удивитесь...

P.S. Когда-то сегментация была связана с ограничениями адресных возможностей процессоров. Сегодня сегментация связана с уровнем организации прав доступа к различным сегментам адресного пространства программы.

Я знал, что кто-нибудь придерётся. Но думал, что BP, а не ты.
Есть два разных понятия - сегменты и сегментные регистры. Когда-то они были связаны, сейчас сегментов нет и поэтому связи между ними нет.

Ты что издеваешься? Или просто у тебя такое чувство юмора? Как нет сегментов?
IA-32 Intel Archtecture Software Developers Manual, Volume 3 писал(а):The simplest memory model for a system is the basic “flat model,” in which the operating system and application programs have access to a continuous, unsegmented address space. To the greatest extent possible, this basic flat model hides the segmentation mechanism of the architecture...
To implement a basic flat memory model with the IA-32 architecture, at least two segment descriptors must be created, one for referencing a code segment and one for referencing a data segment (see Figure 3-2). Both of these segments, however, are mapped to the entire linear
address space: that is, both segment descriptors have the same base address value of 0 and the same segment limit of 4 GBytes.

Я говорил именно про то, что запись F000:0000 не имеет смысла в Win32, потому что номер "сегмента" не задаёт место памяти, а задаёт как раз права.

Да? А что вопрос шёл только о сегментных регистрах? Вопрос не только о сегментных селекторах, но и о линейном адресе. Вот ещё одна цитата оттудаже:
IA-32 Intel Archtecture Software Developers Manual, Volume 3 писал(а):To select the various table entries, the linear address is divided into three sections:
• Page-directory entry—Bits 22 through 31 provide an offset to an entry in the page directory. The selected entry provides the base physical address of a page table.
• Page-table entry—Bits 12 through 21 of the linear address provide an offset to an entry in the selected page table. This entry provides the base physical address of a page in physical memory.
• Page offset—Bits 0 through 11 provides an offset to a physical address in the page.
Memory management software has the option of using one page directory for all programs and tasks, one page directory for each task, or some combination of the two.

Так, что BP был на правильном пути, при составлении своей формулы. Конечно ошибся, но ведь не в том, что нет сегментов, а лишь в способе вычисления физического адреса. Так?


Approximator, про нервную систему червей я скорее всего знаю меньше тебя, но уж про систему адресации - достаточно.

Возможно. Но, ты меня не правильно понял. Я не пытаюсь оббегать форум с линейкой и выяснять у кого длиннее. Если я ошибусь и ты меня поправишь, то сколько бы я ни знал, я буду лишь признателен тебе за замеченную неточность.
Не надо вести себя так некрасиво.

Извини, если обидел. Не со зла, я :) Мир?
С уважением, Approximator.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 09.09.2004 (Чт) 4:25

codemaster писал(а):
Approximator писал(а):Ну, сказано же уже было: Read/WriteProcessMemory помогут полностью вылечить твою проблему.



Одна маленькая ремарка
на NT* платформах WriteProcessMemory на VB6 практически не реализуем.


Ну, это уж полная ерунда. :) Ведь Read/WriteProcessMemory по сути используют функции экспортируемые из ntdll.dll.
С уважением, Approximator.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 09.09.2004 (Чт) 4:35

alibek писал(а):Дык... Права доступа.
Даже под админом не все решаемо, что уж говорить о пользователе.


Права доступа можно получить, как через OpenProcess, так и через другие :) места. Ведь даже работая из приложения можно передать управление на "ядерную функцию" (на самом деле собрать native dll с такими правами - ерунда) и уже оттуда сделать всякие "бяки". Кстати, как по-твоему работают функции Read/WriteProcessMemory? Особливо, когда в качестве указателя на процесс передаётся банальная -1 (:) именно это значение возвращает функция GetCurrentProcess :))? Что именно делается в этом случае в этих функциях? Ведь (!) запись из них можно вести сразу (всё-таки kernel). Проверяют они права. Если же обращаться напрямую к ядерным функциям из ntdll.dll, тогда можно записывать всё, что хочешь, хоть по диагонали...
С уважением, Approximator.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.09.2004 (Чт) 9:08

Approximator, после того, как мне один товарисч подарил одну книжку :) я тебе скажу, что все зависит от того, какой уровень доступа был изначально проставлен. Если грамотно проставить ACL, то до процесса тебе не достучаться.
Некоторые права доступа можно получить "нечестным" способом, потому что у админа есть несколько привелегий, которые позволяют ему использовать эти способы. Если программа запускается под учетной записью пользователя на машине, где безопасность настроена грамотно, ничего ты сделать не сможешь.
Lasciate ogni speranza, voi ch'entrate.

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 09.09.2004 (Чт) 10:54

Approximator писал(а):Права доступа можно получить, как через OpenProcess, так и через другие :) места. Ведь даже работая из приложения можно передать управление на "ядерную функцию" (на самом деле собрать native dll с такими правами - ерунда) и уже оттуда сделать всякие "бяки". Кстати, как по-твоему работают функции Read/WriteProcessMemory? Особливо, когда в качестве указателя на процесс передаётся банальная -1 (:) именно это значение возвращает функция GetCurrentProcess :))? Что именно делается в этом случае в этих функциях? Ведь (!) запись из них можно вести сразу (всё-таки kernel). Проверяют они права. Если же обращаться напрямую к ядерным функциям из ntdll.dll, тогда можно записывать всё, что хочешь, хоть по диагонали...


To:Approximator

Ты хоть малость предсавляеш себе о чем идет речь
(я о памяти чужого процесса )?

Судя по твоему упорству и постам нет.
Почитай книжку по архитектуре NT*
особенно раздел касающийся менеджера mem. RING и пр.

Рекомендую также посмотреть как работает антивирусник
при сканировании памяти - очень поучительный пример.
Кстати на сайтах посвященных Vir scene полно описаний как это обойти *8)

А тебя почитать так и прямо подумаешь:
" Новый продукт от M$ теперь Вы можно читать и писать в mem
любого процесса на Ваш выбор. Секретность и Стабильность по вкусу !"
:lol: :lol:

Aleksej
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 191
Зарегистрирован: 03.06.2003 (Вт) 9:58

Сообщение Aleksej » 09.09.2004 (Чт) 11:39

Так вопрос остался открытий. Можно из VB считать данные из адреса F000:xxxx или линейного адреса &HFxxx? Или эта проблема решаема только на С++ или на асме?

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 09.09.2004 (Чт) 12:48

Если гооврить по твоей теме: работа с SMBIOS
то на NT это в принципе не возможно

В NT общение с устройствами ведется через Driver устройства.

Примеров написания Drv предостаточно на сайте MS
(к сожалению не на VB :wink: :wink: )

Кстати в WMI есть Win32_VoltageProbe и Темperature_probe этого разве не достаточно?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.09.2004 (Чт) 14:14

Approximator, мы с тобой друг друга не поняли.
У слова "сегмент" очень много значений. Я шёл от изначального - "отрезок, обрезок".
В реальном режиме сегмент соответствует именно отрезку памяти.
В huge модели - у сегмента появляются права, но он по-прежнему соответствует отрезку памяти.
В плоской модели сегмент(ы) занимают всю память, и поэтому говорить о них как об отрезках не имеет смысла. Можно назвать весь круг - круговым сегментом с раствором 360°, но это лишено смысла.
В этом понимании - сегментов как отрезков памяти - сегментов в плоской модели действительно нет. Я думаю, ты согласишься, что не может быть сегментов без сегментации, а даже в твоей же цитате сказано: "The simplest memory model for a system is the basic “flat model,” in which the operating system and application programs have access to a continuous, unsegmented address space."
"Сегмент" в Win32 остался только как воплощение прав доступа к памяти; именно в этом смысле я говорил, что сегментов нет.
В реальном режиме адрес F000:0000 укзывает на данные BIOS-а. В защищённом - селектор F000 может указывать куда угодно, а скорее всего его нет вообще. Получить доступ по нему, если и возможно, ни на йоту не приближает Andrej к чтению данных BIOS-а. Согласен?
Я говорил не о том, что адресу F000:0000 BP неправильно сопоставил физический, а о том, что он наводит Andrej на совершенно неправильный путь. Его задача няп - не прочитать данные по адресу F000:0000, а прочитать данные BIOS-а. Согласен?
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.09.2004 (Чт) 17:26

alibek писал(а):Approximator, после того, как мне один товарисч подарил одну книжку :)


alibek, это случаем не та книжка, которую и мне подарил один товарищ? :D
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.09.2004 (Чт) 17:32

GSerg, она самая :)
Lasciate ogni speranza, voi ch'entrate.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 10.09.2004 (Пт) 1:58

alibek писал(а):Approximator, после того, как мне один товарисч подарил одну книжку :) я тебе скажу, что все зависит от того, какой уровень доступа был изначально проставлен. Если грамотно проставить ACL, то до процесса тебе не достучаться.
Некоторые права доступа можно получить "нечестным" способом, потому что у админа есть несколько привелегий, которые позволяют ему использовать эти способы. Если программа запускается под учетной записью пользователя на машине, где безопасность настроена грамотно, ничего ты сделать не сможешь.
Если у пользователя нет возможности запускать свои приложения тогда, да. Но это уже не "правильно настроенная безопасность", а распятие пользователя... Если же пользователь хотя бы может запускать СВОИ приложения, то получить "права доступа" не есть проблема. При обращении к функциям kernel32 мы всегда переходим в другой уровень привелегий. Просто вызываемые функции проверяют права доступа и "если что" отказывают. Права доступа к памяти сами "ядерные функции" "открывают" себе через NtProtectVirtualMemory. Сама функция NtProtectVirtualMemory НИКОГДА НЕ ПРОВЕРЯЕТ КТО ИМЕННО К НЕЙ ОБРАЩАЕТСЯ. Это же относится и к функции NtWriteVirtualMemory. Так, что у тебя сильно преувеличенное мнение о возможностях "настраиваемой безопасности".
С уважением, Approximator.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 10.09.2004 (Пт) 2:07

codemaster писал(а):
Approximator писал(а):Права доступа можно получить, как через OpenProcess, так и через другие :) места. Ведь даже работая из приложения можно передать управление на "ядерную функцию" (на самом деле собрать native dll с такими правами - ерунда) и уже оттуда сделать всякие "бяки". Кстати, как по-твоему работают функции Read/WriteProcessMemory? Особливо, когда в качестве указателя на процесс передаётся банальная -1 (:) именно это значение возвращает функция GetCurrentProcess :))? Что именно делается в этом случае в этих функциях? Ведь (!) запись из них можно вести сразу (всё-таки kernel). Проверяют они права. Если же обращаться напрямую к ядерным функциям из ntdll.dll, тогда можно записывать всё, что хочешь, хоть по диагонали...


To:Approximator

Ты хоть малость предсавляеш себе о чем идет речь
(я о памяти чужого процесса )?

Судя по твоему упорству и постам нет.
Почитай книжку по архитектуре NT*
особенно раздел касающийся менеджера mem. RING и пр.

Рекомендую также посмотреть как работает антивирусник
при сканировании памяти - очень поучительный пример.
Кстати на сайтах посвященных Vir scene полно описаний как это обойти *8)

А тебя почитать так и прямо подумаешь:
" Новый продукт от M$ теперь Вы можно читать и писать в mem
любого процесса на Ваш выбор. Секретность и Стабильность по вкусу !"
:lol: :lol:


Можно. Для этого не обязательно меня читать. Но голову иметь нужно. Ладно, здесь не ликбез для крякеров. Просто я тебе, дАрАгОй, скажу, что пилювал я на операционную систему. Нет такой системы, котроая могла бы, что-то запретить сама по себе (если она ХОТЯ БЫ вообще разрешает в ней работать). Есть процессоры и их способы защиты. Так вот:
Call Gates
Call gates facilitate controlled transfers of program control between different privilege levels. They are typically used only in operating systems or executives that use the privilege-level protection mechanism.
С уважением, Approximator.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 10.09.2004 (Пт) 2:21

tyomitch писал(а):Approximator, мы с тобой друг друга не поняли.
У слова "сегмент" очень много значений.

:)
Я шёл от изначального - "отрезок, обрезок".

И я тоже.
В реальном режиме сегмент соответствует именно отрезку памяти.
В huge модели - у сегмента появляются права, но он по-прежнему соответствует отрезку памяти.
В плоской модели сегмент(ы) занимают всю память, и поэтому говорить о них как об отрезках не имеет смысла. Можно назвать весь круг - круговым сегментом с раствором 360°, но это лишено смысла.
В этом понимании - сегментов как отрезков памяти - сегментов в плоской модели действительно нет. Я думаю, ты согласишься, что не может быть сегментов без сегментации, а даже в твоей же цитате сказано: "The simplest memory model for a system is the basic “flat model,” in which the operating system and application programs have access to a continuous, unsegmented address space."

:) А нафига тогда DT, TSS и проч.? :) Там ведь не только ПРАВА, но и физические адреса для сегментов. Что же иначе такое сегментный селектор?
"Сегмент" в Win32 остался только как воплощение прав доступа к памяти; именно в этом смысле я говорил, что сегментов нет.

См. выше.
В реальном режиме адрес F000:0000 укзывает на данные BIOS-а. В защищённом - селектор F000 может указывать куда угодно, а скорее всего его нет вообще. Получить доступ по нему, если и возможно, ни на йоту не приближает Andrej к чтению данных BIOS-а. Согласен?
Я говорил не о том, что адресу F000:0000 BP неправильно сопоставил физический, а о том, что он наводит Andrej на совершенно неправильный путь. Его задача няп - не прочитать данные по адресу F000:0000, а прочитать данные BIOS-а. Согласен?

Согласен. Видимо форма твоего ответа меня сбила с толку.
С уважением, Approximator.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.09.2004 (Пт) 10:27

Approximator, вообще-то права доступа себе никакая программа/процесс не может (исключая случаи багов в самой ОС). Программа может получить определенную привилегию (например, SE_TCB_PRIVILEGE) только если политиками безопасности эта привилегия разрешена тому аккаунту, в контексте которого выполняется процесс. Если же у аккаунта нет возможности воспользоваться рядом "специальных" привилегий, то соответственно и у процесса никаких возможностей.
Видимо ты на своей машине локальный администратор, а ограничение пользователей поставлено недостаточно жестко. В грамотно сконфигурированной системе возможностей поднять свои привилегии нет.
Lasciate ogni speranza, voi ch'entrate.

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 10.09.2004 (Пт) 11:32

Approximator писал(а):Можно. Для этого не обязательно меня читать. Но голову иметь нужно. Ладно, здесь не ликбез для крякеров. Просто я тебе, дАрАгОй, скажу, что пилювал я на операционную систему. Нет такой системы, котроая могла бы, что-то запретить сама по себе (если она ХОТЯ БЫ вообще разрешает в ней работать). Есть процессоры и их способы защиты. Так вот:
Call Gates
Call gates facilitate controlled transfers of program control between different privilege levels. They are typically used only in operating systems or executives that use the privilege-level protection mechanism.


Самому не смешно?
Давай поступим так: ты этого не писал мы "это" не читали :wink: :wink:

Для повышения занний по NT* попробуй почитать вот эту книгу

http://www.ozon.ru/context/detail/id/116525/#vote

Вообще все книги у Рихтера заслуживают внимание
но эта особенно

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.09.2004 (Пт) 23:22

Approximator, про сегменты vs селекторы: давай скажем, что в Win32 физическая память сегментирована, а виртуальная - нет. Хорошо?
Всё равно любые адреса, по которым можно получить доступ из программы, относятся к виртуальной памяти, а там сегментации нет.
Программисту Win32 можно вообще не знать ничего про сегменты и селекторы, ядро выполняет всю работу само, и предоставляет программисту плоское, несегментированное 4Гб-пространство. В отличие от реального режима, где программист был вынужден иметь дело с сегментацией памяти и собственноручно загружать в сегментные регистры нужные значения.
Предложу ещё одну компромиссную формулировку: "сегменты есть, но их не видно". Договорились? :-)
Изображение

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 11.09.2004 (Сб) 2:09

alibek писал(а):Approximator, вообще-то права доступа себе никакая программа/процесс не может (исключая случаи багов в самой ОС). Программа может получить определенную привилегию (например, SE_TCB_PRIVILEGE) только если политиками безопасности эта привилегия разрешена тому аккаунту, в контексте которого выполняется процесс. Если же у аккаунта нет возможности воспользоваться рядом "специальных" привилегий, то соответственно и у процесса никаких возможностей.
Видимо ты на своей машине локальный администратор, а ограничение пользователей поставлено недостаточно жестко. В грамотно сконфигурированной системе возможностей поднять свои привилегии нет.


Да нет, Alibek, не во мне вообще дело.
Давай всё сначала. Есть четыре уровня привелегий 0-3. Эти привелегии АППАРАТНЫЕ.
Так? - Так.
ОС - не создана богом. И работает она не в божественном эфире. Она создана людьми и работает на конкретном железе. Если железо позволяет реализовать работу с привелегиями, то они и возможны в ОС'ях. Дополнительные ограничения можно установить только на использование кода (функциональных возможностей) ядра ОС'ей.
Однако, процессор непосредственно ни одна ОС'ь не контроллирует. Причём это аксиома вне зависимости от её "архитектуры". Да это должно быть ясно и так. Если самой ОС'и при работе необходимо переходить из кода с одинм уровнем привелегий в другой, то она использует стандартные (аппаратные) средства называемые Call Gates. Запретить твоему коду использовать подобный переход никакая ОС'ь не может, она может лишь запретить использовать собственные "ворота". Конкретные решения могут быть различными. Можно постепенно переходить с одного уровня на другой (используя sysenter)...

P.S. codemaster'у: не адекватен, конкретные контраргументы отсутствуют. Я тебе дал цитату из Intel'овской документации. В томй же главе все возможности расписаны. А в цитате есть такое слово (сейчас выделено)
Call Gates
Call gates facilitate controlled transfers of program control between different privilege levels. They are typically used only in operating systems or executives that use the privilege-level protection mechanism.

Что это такое ты думаешь? Приложения с уровнем привелегий 1-3.
С уважением, Approximator.

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 11.09.2004 (Сб) 2:10

tyomitch писал(а):Договорились? :-)

:) Да вроде бы ещё в прошлый раз.
С уважением, Approximator.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.09.2004 (Сб) 3:30

Кстати, кто-то уже поднимал здесь эту тему, и разбирались, что из 4 уровней привелегий в WinNT используются только два, для совместимости с какими-то левыми процессорами.
Это так, мелочная поправка :-)
Изображение

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 11.09.2004 (Сб) 3:36

tyomitch писал(а):Кстати, кто-то уже поднимал здесь эту тему, и разбирались, что из 4 уровней привелегий в WinNT используются только два, для совместимости с какими-то левыми процессорами.
Это так, мелочная поправка :-)

Было дело, но это не из-за левых процессоров. Это-то как раз из-за "архитектуры". Тему поднимали мы с alibek'ом. (причём именно в контексте чтения из чужого адресного пространства; там же мной было дано решение, рекомендованное для отладки самим MS)
BP её развивал. :) Закончилось крестовым походом BP vs VB :)
С уважением, Approximator.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 11.09.2004 (Сб) 18:57

Программисту Win32 можно вообще не знать ничего про сегменты и селекторы, ядро выполняет всю работу само, и предоставляет программисту плоское, несегментированное 4Гб-пространство.


Причём тут ядро. Это делает процессор, а вовсе не ОС.

Закончилось крестовым походом BP vs VB

Ну вообще то я вскользь упомянул, а тему уже вы сами развили. И тему Вы c alibek'ом вовсе не подымали. Я просто уточнил что в процессорах интел всего 4 уровня привелегий, а потом уже и ты встрял.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.09.2004 (Сб) 19:52

BP писал(а):
Программисту Win32 можно вообще не знать ничего про сегменты и селекторы, ядро выполняет всю работу само, и предоставляет программисту плоское, несегментированное 4Гб-пространство.

Причём тут ядро. Это делает процессор, а вовсе не ОС.

Процессор сам себе селекторные таблицы загружает? Чудеса, да и только!
Изображение

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 11.09.2004 (Сб) 20:26

Докажи что не так.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.09.2004 (Сб) 20:44

BP писал(а):Докажи что не так.
Не собираюсь. Ты первый возразил, ты и доказывай.
Изображение

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 11.09.2004 (Сб) 21:30

Согласен на установленные тобой правила. Кто первый возразил, тот и доказывает.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 08.10.2004 (Пт) 4:27

Approximator,
Нашёл ту статью где говорилось об уровнях привилегий.
Вот она.
http://www.wasm.ru/article.php?article=drvw2k01

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 09.10.2004 (Сб) 2:25

Вот, сегодня в рассылке Калашникова обнаружил:
адрес=сегмент*16+смещение. А умножение на 16 и есть сдвиг сегмента влево на 4 бита! Отсюда смещение - 16 бит, и сегмент добавляет еще 4 бита.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.10.2004 (Сб) 3:51

А на рассылку по архитектуре памяти ZX-SPECTRUM ты часом не подписан? ;-)
Изображение

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 09.10.2004 (Сб) 5:50

В предмете разбираюсь не сильно, но хочу привестм цитату:
WASM.ru писал(а):Компоненты пользовательского режима имеют свои защищенные адресные пространства, потоки этих процессов выполняются в непривилегированном режиме процессора (называемом пользовательским), не могут выполнять привилегированные команды процессора, имеют ограниченный и опосредованный доступ к системным данным, и к системному адресному пространству, не имеют прямого доступа к оборудованию. Правда, в процессе своей работы, потоки этих процессов, вызывая системные сервисы, переходят в режим ядра, но в этом случае полностью теряют контроль над своим выполнением до возвращения обратно в режим пользователя.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.10.2004 (Сб) 14:02

FAKK2, ты это к чему? Ну переходят, и пусть переходят, и что?
Изображение

Пред.След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 57

    TopList