The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Опубликван курс видеолекций 'Современный и эффективный С++', opennews (??), 04-Окт-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


34. "Опубликван курс видеолекций Современный и эффективный С++"  –1 +/
Сообщение от Аноним (34), 04-Окт-19, 21:44 
Вполне себе можно писать системы на плюсах, нужно только специальный рантайм присобачить и кое какие включить/выключить из компилятора. Хотя конечно зачем трусы через голову... (виндовые kernel space процессы на плюсах написаны, даже маленькая часть самого микроядра плюсах)
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

88. "Опубликван курс видеолекций Современный и эффективный С++"  +/
Сообщение от Аноним (87), 05-Окт-19, 13:06 
> виндовые kernel space процессы

Что это?

По-моему, процесс это:
1) адресное пространство (в режиме пользователя, в нём выполняются потоки).
2) объект ядра (для управления вышеупомянутым АП).

> на плюсах написаны, даже маленькая часть
> самого микроядра плюсах)

С какой версии там микроядро?

Ответить | Правка | Наверх | Cообщить модератору

98. "Опубликван курс видеолекций Современный и эффективный С++"  +/
Сообщение от Аноним (34), 05-Окт-19, 18:27 
С NT они его называют hybrid но это по сути просто маркетинговый ход. В винде два мода: кернел и пользовательское пространство. В них выполняются процессы которые называются сервисами и драйверами. Разницы между ними особо нет кроме как формата финарника и у кернел мод процессов есть доступ к HAL и микроядру
Ответить | Правка | Наверх | Cообщить модератору

108. "Опубликван курс видеолекций Современный и эффективный С++"  +/
Сообщение от Аноним (87), 06-Окт-19, 08:38 
> С NT они его называют hybrid но это по сути просто маркетинговый
> ход. В винде два мода: кернел и пользовательское пространство. В них
> выполняются процессы

Поймите одну простую вещь. Если некоторый машинный код в "винде" выполняется, значит имеется Контекст Выполнения. На уровне Win32 API это та самая структура CONTEXT, где сохраняется состояние регистров процессора, и которая возвращается функцией GetThreadContext. При этом нет никакой GetProcessContext.

Вместо этого у процесса есть Working Set -- грубо говоря, набор страниц памяти, в том числе и с отображением образа исполняемого файла. Есть ещё у процесса потоки (треды). При вызова такой высокоуровневой функции, как CreateProcess, сначала создаётся рабочий набор, потом главный тред процесса -- вот он уже "выполняется".

Если мы говорим только об юзермоде, можно сказать "выполняется процесс", имея ввиду всё вышеперечисленное. Как только речь заходит о ядре, подобное заявление является грубой ошибкой.

Код драйвера может выполняться как в контексте треда определённого пользовательского процесса (например, произошел вызов ReadFile и далее по цепочке), таким образом имея доступ к адресному пространству (АП) данного процесса (куда обработчик запроса запишет данные файла). А может выполняться -- в произвольном контексте https://www.osr.com/blog/2014/09/08/arbitrary-thread-context.../
например, когда SATA контрорллер получил данные от накопителя и сгенерировал прерывание. В этом месте нельзя что-то записать в АП пользователя, потому что это наверняка левый процесс.

"Процессом ядра" условно можно назвать несколько рабочих тредов, выполняющих код из ntoskrnl.exe

> которые называются сервисами и драйверами.

В MSDN документировано, что драйвер запускается функцией StartService, соответственно является сервисом (режима ядра, в отличии от работающих в АП процессов svchost.exe; тип службы орпределяется 4-м параметром CreateService).

> Разницы между ними особо
> нет кроме как формата финарника и у кернел мод процессов есть
> доступ к HAL и микроядру

Формат там один -- Portable Executable. Содержимое таблицы импорта, да, различается.

Ответить | Правка | Наверх | Cообщить модератору

124. "Опубликван курс видеолекций Современный и эффективный С++"  +/
Сообщение от Аноним (34), 07-Окт-19, 05:06 
Да а теперь расскажи мне реальную разницу между процессом и потоками со стороны cpu
Ответить | Правка | Наверх | Cообщить модератору

127. "Опубликван курс видеолекций Современный и эффективный С++"  +/
Сообщение от Аноним (87), 07-Окт-19, 06:51 
> Да а теперь расскажи мне реальную разницу между процессом и потоками со
> стороны cpu

Во-первых, ты забыл "пожалуйста".
Во-вторых, сменил предмет с "винды" на "cpu".

У тебя был реальный шанс. Удачи.

Ответить | Правка | Наверх | Cообщить модератору

139. "Опубликван курс видеолекций Современный и эффективный С++"  +/
Сообщение от Аноним (139), 08-Окт-19, 08:36 
кто в лес кто по дрова. Речь про использования плюсов для написания низкоуровневого кода.
Ответить | Правка | Наверх | Cообщить модератору

141. "Опубликван курс видеолекций Современный и эффективный С++"  +/
Сообщение от Аноним (87), 08-Окт-19, 11:04 
> кто в лес кто по дрова. Речь про использования плюсов для написания
> низкоуровневого кода.

Когда кто-то пишет про процессы в ядре винды, это ставит под сомнение доказываемое такой чепухой утверждение. А так то можно даже поддержку C++ исключений на PASSIVE_LEVEL организовать, если найти где список хранить.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру