Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что такое WinAPI? 
:(
    Опции темы
 
Что такое WinAPI?
Произведения искусства [ 12 ]  [28.57%]
Кладезь отстоя [ 24 ]  [57.14%]
Свой вариант (опишу в теме) [ 6 ]  [14.29%]
Всего проголосовавших: 42
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
MAKCim
Дата 18.5.2010, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Alexeis, 
GoldFinch выдвинул тезис
Цитата(GoldFinch @  18.5.2010,  00:25 Найти цитируемый пост)
ни один из них не работает с АПИ ОС напрямую.

это касаемо C++, Java, Python и т. д.
Цитата(MAKCim @  17.5.2010,  23:17 Найти цитируемый пост)
есть еще С++, java, perl, python, Go, haskell, lisp и много много других ;)


я ответил
Цитата(MAKCim @  18.5.2010,  08:52 Найти цитируемый пост)
если уж на то пошло
то и С не юзает напрямую api ;)


компилятор преобразует С код в код, юзающий libc
равно как Java преобразует байт-код в нативный код, который либо юзает api системы через сисколы напрямую
(тогда тезис априорно не верен)
либо через ту же libc, как и С
и в этом случае тезис не верен ;)


Alexeis, 
ты как бы теряешься в сути разговора


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Alexeis
Дата 18.5.2010, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(MAKCim @  18.5.2010,  12:58 Найти цитируемый пост)
компилятор преобразует С код в код, юзающий libc
равно как Java преобразует байт-код в нативный код, который либо юзает api системы через сисколы напрямую
(тогда тезис априорно не верен)
либо через ту же libc, как и С
и в этом случае тезис не верен ;)

  Да где же в приведенном мной куске код использования libc ? Я вижу прямой вызов WinAPI функции. Почему ты определяешь что системные вызовы это только вызовы в режиме ядра? Операционная система не предоставляет другого документированного способа для доступа к ее внутренним ресурсам.

  Я не опровергаю, того что другие языки также могут также компилировать свой код в вызовы WinAPI. Я не вижу где в приведенном коде прослойка рантайма С. Некоторые функции библиотеки С действительно внутри используют вызовы WinAPI, но программист может, их не использовать совсем. Например отключить полностью CRT. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MAKCim
Дата 18.5.2010, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Alexeis @  18.5.2010,  15:04 Найти цитируемый пост)
 Почему ты определяешь что системные вызовы это только вызовы в режиме ядра?

режим ядра - это работа на нулевом кольце привилегий
где я об этом говорил?

api системы - это не врапперы в libc или kernel32.dll
это то, что непосредственно предоставляет ядро ОС
в той же libc тысячи функций, но не все они - api


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
GoldFinch
Дата 18.5.2010, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



MAKCim, часть функций winapi работает только в юзермоде, им не надо syscall\sysenter и т.п.
ядро работает как в ring3, так и в ring0
PM MAIL ICQ   Вверх
MAKCim
Дата 18.5.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



я понял 
у нас разные представления об api


Цитата(GoldFinch @  18.5.2010,  15:46 Найти цитируемый пост)
ядро работает как в ring3, так и в ring0 

что из ядра работает в ring3?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
GoldFinch
Дата 18.5.2010, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



MAKCim, у нас разные представления об ядре.

ring3 и ring0 - это состояния потока. поток постоянно переключается из ring0 в ring3 и наоборот.
ядро не "работает в кернелмоде". часть кода ядра выполняется потоками в ring0. 
причем один и тот же код может работать как в ring3, так и в ring0

Вот что пишет MS в справке к WRK
Цитата

The Windows Research Kernel v1.2 contains the sources for the core of
the Windows (NTOS) kernel and a build environment for a kernel
.......
The NT Hardware Abstraction Layer, file systems, network stacks, and device
drivers are implemented separately from NTOS and loaded into kernel mode
as dynamic libraries.
.......
    rtl\    - kernel run-time support

Например функция RtlRemoteCall - работает в юзермоде, и это часть RTL ядра.
PM MAIL ICQ   Вверх
Alexeis
Дата 18.5.2010, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(MAKCim @  18.5.2010,  14:48 Найти цитируемый пост)
что из ядра работает в ring3? 

  Да я думаю что половина кода, если не больше работает в юзермоде. Но WinAPI это не только само ядро, но и куча вспомогательных сервисов и библиотек, которые, сами не переходят в режим ядра. Думаю что в линуксе некоторые из этих задач выполняют сторонние библиотеки.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MAKCim
Дата 18.5.2010, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



блин, ребята
я всегда понимал и понимаю под ядром непосредственно то, что отлично от любой внешней программы
для linux это все, что в /usr/src/linux
так вот, эта хрень под названием ядро работает только в ring0
а вот уже _пользовательские процессы_ постоянно переключаются ring3 <-> ring0


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
bems
Дата 18.5.2010, 21:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



Цитата(MAKCim @  18.5.2010,  10:06 Найти цитируемый пост)
а первичное отображение api есть сисколы 

О, кстати как раз вот нужно. Не подскажешь системный вызов, соответствующий GetCurrentProcessId?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
MAKCim
Дата 18.5.2010, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



bems, 
getpid()



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
bems
Дата 18.5.2010, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



MAKCim, я вобще-то про винду говорил


--------------------
Обижено школьников: 8
PM MAIL   Вверх
GoldFinch
Дата 18.5.2010, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(bems @  18.5.2010,  22:55 Найти цитируемый пост)
Не подскажешь системный вызов, соответствующий GetCurrentProcessId? 

интереснее выглядит функция ядра GetCurrentProcess (и GetCurrentThread)

хотя с Id тоже ничего

Это сообщение отредактировал(а) GoldFinch - 18.5.2010, 22:22
PM MAIL ICQ   Вверх
bems
Дата 18.5.2010, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



Цитата(GoldFinch @  18.5.2010,  22:19 Найти цитируемый пост)
интереснее выглядит функция ядра GetCurrentProcess (и GetCurrentThread) 
Функция ядра?
Ну возвращают они константы, ничего особенно интересного не вижу.
Так где тут системные вызовы? (за 5 минут мы 4 штуки насчитали где их нет)

Добавлено через 45 секунд
GoldFinch, изивиняюсь. вопрос был к MAKCim


--------------------
Обижено школьников: 8
PM MAIL   Вверх
MAKCim
Дата 18.5.2010, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(bems @  18.5.2010,  21:55 Найти цитируемый пост)
Не подскажешь системный вызов, соответствующий GetCurrentProcessId? 

я должен наизусть все номера знать? ;)


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
GoldFinch
Дата 18.5.2010, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



bems, тех которые работают в юзермоде - полно. Те же GetModuleHandle и прочие, работающие с TEB и PEB.

Добавлено через 2 минуты и 35 секунд
MAKCim, а как отличать функции ядра от не-функций ядра? лазать в сорцы ядра, и смотреть, должна функция работать в ring0 или нет?
PM MAIL ICQ   Вверх
Страницы: (6) Все « Первая ... 2 3 [4] 5 6 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0637 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.