ipc что это такое
Управление административными шарами (Admin$, IPC$, C$, D$) в Windows 10
По-умолчанию Windows создает следующие админ шары:
Можно получить список доступных административных шар на удаленном компьютере с помощью команды:
net view \\computername /all
Получить доступ к административным шарам могут только члены локальной группы администраторов компьютера (и группы Backup Operators) при условии, что у вас включен SMB протокол, общий доступ (Turn on file and printer sharing) и доступ по 445 порту TCP не блокируется Windows Defender Firewall.
Как отключить/включить административные шары в Windows 10?
Административные шары Windows удобны для удаленного администрирования компьютера, но несут дополнительные риски безопасности (Как минимум не стоит использовать одинаковый пароль локального администратора на всех компьютерах. Чтобы сделать пароли уникальными, используйте LAPS). Вы можете полностью запретить Windows создавать эти скрытые ресурсы.
Самый простой способ – щелкнуть правой кнопкой мыши по имени административного ресурса в оснастке управления компьютером и выбрать Stop sharing (или использовать команду net share IPC$ /delete ). Однако после перезагрузки Windows она пересоздастся автоматически.
Чтобы запретить Windows публиковать административные шары, нужно открыть редактор реестра regedit.exe, перейти в ветку реестра HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters и добавить Dword параметр с именем AutoShareWks (для десктопных версий Windows) или AutoShareServer (для Windows Server) и значением 0.
Можно создать это параметр реестра вручную, из командной строки reg add или через PowerShell:
reg add HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters /f /v AutoShareWks /t REG_DWORD /d 0
Теперь после перезагрузки административные шары не будут создаваться. При этом перестанут работать утилиты удаленного управления компьютером, в том числе psexec.
Если вы хотите включить админские шары, нужно изменить значение параметра на 1 или удалить его.
Чтобы Windows пересоздала административные шары, достаточно перезапустить службу Server командой:
Разрешаем удаленный доступ к административным шарам Windows 10
При работе с административными шарами Windows на компьютере, который не добавлен в домен Active Directory (состоит в рабочей группе) есть одна важная особенность. Windows 10 блокирует удаленный доступ к дефолтным административным шарам под пользователем, входящим в группу локальных администраторов. Причем под учетной записью встроенного локального администратора (по умолчанию она отключена) такой доступ работает.
Немного подробнее как выглядит проблема. Я пытаюсь с удаленного компьютера обратится к встроенным административным ресурсам компьютера Windows 10, состоящего в рабочей группе (при отключенном файерволе) таким образом:
В окно авторизации ввожу имя и пароль учетной записи, состоящей в группе локальных администраторов Windows 10, на что появляется ошибка доступа (Access is denied). При этом доступ к общим сетевым каталогам и принтерам на Windows 10 работает нормально (компьютер виден в сетевом окружении). Доступ под встроенной учетной записью administrator к административным ресурсам при этом тоже работает. Если же этот компьютер включить в домен Active Directory, то под доменными аккаунтами с правами администратора доступ к админским шарам также не блокируется.
Дело в еще одном аспекте политики безопасности, появившемся в UAC – так называемом Remote UAC (контроль учетных записей для удаленных подключений), который фильтрует токены доступа локальных записей и аккаунтов Microsoft, блокируя удаленный административный доступ под такими учеткам. При доступе под доменным аккаунтом такое ограничение не применяется.
Отключить Remote UAC можно путем создания в системном реестре параметра LocalAccountTokenFilterPolicy
reg add «HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System» /v «LocalAccountTokenFilterPolicy» /t REG_DWORD /d 1 /f
После перезагрузки попробуйте удаленно открыть административный каталог C$ на Windows 10 компьютере. Авторизуйтесь под учетною записью, входящей в группу локальных администраторов. Должно открыться окно проводника с содержимым диска C:\.
Итак, мы разобрались как с помощью параметра LocalAccountTokenFilterPolicy разрешить удаленный доступ к скрытым админ-ресурсам для всех локальных администраторов компьютера Windows. Инструкция применима также к Windows 8.1, 7 и Windows Server.
Знакомство с межпроцессным взаимодействием на Linux
Межпроцессное взаимодействие (Inter-process communication (IPC)) — это набор методов для обмена данными между потоками процессов. Процессы могут быть запущены как на одном и том же компьютере, так и на разных, соединенных сетью. IPC бывают нескольких типов: «сигнал», «сокет», «семафор», «файл», «сообщение»…
Отступление: данная статья является учебной и расчитана на людей, только еще вступающих на путь системного программирования. Ее главный замысел — познакомиться с различными способами взаимодействия между процессами на POSIX-совместимой ОС.
Именованный канал
Для передачи сообщений можно использовать механизмы сокетов, каналов, D-bus и другие технологии. Про сокеты на каждом углу можно почитать, а про D-bus отдельную статью написать. Поэтому я решил остановиться на малоозвученных технологиях отвечающих стандартам POSIX и привести рабочие примеры.
Рассмотрим передачу сообщений по именованным каналам. Схематично передача выглядит так:
Для создания именованных каналов будем использовать функцию, mkfifo():
Примечание: mode используется в сочетании с текущим значением umask следующим образом: (mode &
umask). Результатом этой операции и будет новое значение umask для создаваемого нами файла. По этой причине мы используем 0777 (S_IRWXO | S_IRWXG | S_IRWXU), чтобы не затирать ни один бит текущей маски.
Как только файл создан, любой процесс может открыть этот файл для чтения или записи также, как открывает обычный файл. Однако, для корректного использования файла, необходимо открыть его одновременно двумя процессами/потоками, одним для получение данных (чтение файла), другим на передачу (запись в файл).
Пример
mkfifo.c
Мы открываем файл только для чтения (O_RDONLY). И могли бы использовать O_NONBLOCK модификатор, предназначенный специально для FIFO файлов, чтобы не ждать когда с другой стороны файл откроют для записи. Но в приведенном коде такой способ неудобен.
Компилируем программу, затем запускаем ее:
В соседнем терминальном окне выполняем:
В результате мы увидим следующий вывод от программы:
Разделяемая память
Следующий тип межпроцессного взаимодействия — разделяемая память (shared memory). Схематично изобразим ее как некую именованную область в памяти, к которой обращаются одновременно два процесса:
Для выделения разделяемой памяти будем использовать POSIX функцию shm_open():
Функция возвращает файловый дескриптор, который связан с объектом памяти. Этот дескриптор в дальнейшем можно использовать другими функциями (к примеру, mmap() или mprotect()).
Целостность объекта памяти сохраняется, включая все данные связанные с ним, до тех пор пока объект не отсоединен/удален (shm_unlink()). Это означает, что любой процесс может получить доступ к нашему объекту памяти (если он знает его имя) до тех пор, пока явно в одном из процессов мы не вызовем shm_unlink().
После создания общего объекта памяти, мы задаем размер разделяемой памяти вызовом ftruncate(). На входе у функции файловый дескриптор нашего объекта и необходимый нам размер.
Пример
Следующий код демонстрирует создание, изменение и удаление разделяемой памяти. Так же показывается как после создания разделяемой памяти, программа выходит, но при следующем же запуске мы можем получить к ней доступ, пока не выполнен shm_unlink().
shm_open.c
После создания объекта памяти мы установили нужный нам размер shared memory вызовом ftruncate(). Затем мы получили доступ к разделяемой памяти при помощи mmap(). (Вообще говоря, даже с помощью самого вызова mmap() можно создать разделяемую память. Но отличие вызова shm_open() в том, что память будет оставаться выделенной до момента удаления или перезагрузки компьютера.)
Компилировать код на этот раз нужно с опцией -lrt:
Смотрим что получилось:
Аргумент «create» в нашей программе мы используем как для создания разделенной памяти, так и для изменения ее содержимого.
Зная имя объекта памяти, мы можем менять содержимое разделяемой памяти. Но стоит нам вызвать shm_unlink(), как память перестает быть нам доступна и shm_open() без параметра O_CREATE возвращает ошибку «No such file or directory».
Семафор
Семафор — самый часто употребляемый метод для синхронизации потоков и для контролирования одновременного доступа множеством потоков/процессов к общей памяти (к примеру, глобальной переменной). Взаимодействие между процессами в случае с семафорами заключается в том, что процессы работают с одним и тем же набором данных и корректируют свое поведение в зависимости от этих данных.
Семафор со счетчиком
Смысл семафора со счетчиком в том, чтобы дать доступ к какому-то ресурсу только определенному количеству процессов. Остальные будут ждать в очереди, когда ресурс освободится.
Итак, для реализации семафоров будем использовать POSIX функцию sem_open():
В функцию для создания семафора мы передаем имя семафора, построенное по определенным правилам и управляющие флаги. Таким образом у нас получится именованный семафор.
Имя семафора строится следующим образом: в начале идет символ «/» (косая черта), а следом латинские символы. Символ «косая черта» при этом больше не должен применяться. Длина имени семафора может быть вплоть до 251 знака.
Если нам необходимо создать семафор, то передается управляющий флаг O_CREATE. Чтобы начать использовать уже существующий семафор, то oflag равняется нулю. Если вместе с флагом O_CREATE передать флаг O_EXCL, то функция sem_open() вернет ошибку, в случае если семафор с указанным именем уже существует.
Параметр mode задает права доступа таким же образом, как это объяснено в предыдущих главах. А переменной value инициализируется начальное значение семафора. Оба параметра mode и value игнорируются в случае, когда семафор с указанным именем уже существует, а sem_open() вызван вместе с флагом O_CREATE.
Для быстрого открытия существующего семафора используем конструкцию:
, где указываются только имя семафора и управляющий флаг.
Пример семафора со счетчиком
Рассмотрим пример использования семафора для синхронизации процессов. В нашем примере один процесс увеличивает значение семафора и ждет, когда второй сбросит его, чтобы продолжить дальнейшее выполнение.
sem_open.c
В одной консоли запускаем:
В соседней консоли запускаем:
Бинарный семафор
Вместо бинарного семафора, для которого так же используется функция sem_open, я рассмотрю гораздо чаще употребляемый семафор, называемый «мьютекс» (mutex).
Мьютекс по существу является тем же самым, чем является бинарный семафор (т.е. семафор с двумя состояниями: «занят» и «не занят»). Но термин «mutex» чаще используется чтобы описать схему, которая предохраняет два процесса от одновременного использования общих данных/переменных. В то время как термин «бинарный семафор» чаще употребляется для описания конструкции, которая ограничивает доступ к одному ресурсу. То есть бинарный семафор используют там, где один процесс «занимает» семафор, а другой его «освобождает». В то время как мьютекс освобождается тем же процессом/потоком, который занял его.
Без мьютекса не обойтись в написании, к примеру базы данных, к которой доступ могут иметь множество клиентов.
Для использования мьютекса необходимо вызвать функцию pthread_mutex_init():
Функция инициализирует мьютекс (перемнную mutex) аттрибутом mutexattr. Если mutexattr равен NULL, то мьютекс инициализируется значением по умолчанию. В случае успешного выполнения функции (код возрата 0), мьютекс считается инициализированным и «свободным».
Функция pthread_mutex_lock(), если mutex еще не занят, то занимает его, становится его обладателем и сразу же выходит. Если мьютекс занят, то блокирует дальнейшее выполнение процесса и ждет освобождения мьютекса.
Функция pthread_mutex_trylock() идентична по поведению функции pthread_mutex_lock(), с одним исключением — она не блокирует процесс, если mutex занят, а возвращает EBUSY код.
Фунция pthread_mutex_unlock() освобождает занятый мьютекс.
Пример mutex
mutex.c
Данный пример демонстрирует совместный доступ двух потоков к общей переменной. Один поток (первый поток) в автоматическом режиме постоянно увеличивает переменную counter на единицу, при этом занимая эту переменную на целую секунду. Этот первый поток дает второму доступ к переменной count только на 10 миллисекунд, затем снова занимает ее на секунду. Во втором потоке предлагается ввести новое значение для переменной с терминала.
Если бы мы не использовали технологию «мьютекс», то какое значение было бы в глобальной переменной, при одновременном доступе двух потоков, нам не известно. Так же во время запуска становится очевидна разница между pthread_mutex_lock() и pthread_mutex_trylock().
Компилировать код нужно с дополнительным параметром -lpthread:
Запускаем и меняем значение переменной просто вводя новое значение в терминальном окне:
Вместо заключения
В следующих статьях я хочу рассмотреть технологии d-bus и RPC. Если есть интерес, дайте знать.
Спасибо.
UPD: Обновил 3-ю главу про семафоры. Добавил подглаву про мьютекс.
CPI и IPC, показатели производительности каждого процессора
При измерении производительности процессора обычно используется множество показателей, но наиболее распространенными являются CPI и IPC. Что означают эти сокращения и как они влияют на дизайн новых
Когда мы говорим, что один процессор имеет лучшую производительность, чем другой, что мы имеем в виду? Что ж, процессор выполняет программу с большей скоростью, чем другой, но какие параметры и условия используются для улучшения производительности процессора по сравнению с его преемником?
Маркетинговые отделы, когда речь идет о продаже такой сложной технологии, как CPU / ЦЕНТРАЛЬНЫЙ ПРОЦЕССОР или GPU / ГРАФИЧЕСКИЙ ПРОЦЕССОР придется упростить производительность, поскольку они становятся все более сложными, и именно одним из созданных ими заблуждений стал термин IPC как термин для измерения производительности процессора.
CPI или количество циклов на инструкцию, истинная мера производительности
Например. В этой сравнительной таблице вы можете увидеть эволюцию архитектуры графических процессоров GCN от AMD к RDNA от той же компании, поскольку вы можете видеть, что одна и та же программа шейдера занимает меньше циклов в архитектуре RDNA, поскольку значительная часть ее инструкций имеет более низкий CPI.
IPC или инструкций на цикл
В компьютерной архитектуре , концепция инструкций за цикл относится к количеству инструкций, которые процессор выполняет одновременно, поэтому она в основном ограничена количеством исполнительных блоков в процессоре, но это не единственный ограничивающий фактор. поскольку могут быть инструкции, которые используют общие элементы процессора и вместе дают худшую производительность.
Но у этого термина есть сбивающий с толку вариант, основанный на том, чтобы взять время, которое два процессора требуется для выполнения одной и той же программы, а затем измерить разницу во времени, передать ее тактовым циклам и измерить разницу между ними. В результате получается среднее количество инструкций за цикл, но это не то, что в компьютерной архитектуре обычно называют IPC.
Контрольные показатели рассказывают только часть истории
Вот почему есть тесты, которые больше ориентированы на использование инструкций, чей CPI был улучшен в процессоре, или на предоставление преимущества определенной марке над другими, в то же время производители также отдают предпочтение улучшению CPI. и IPC наиболее часто используемых инструкций для тестов производительности.
Процессор выполняет программу, и важно то, что наиболее часто используемые программы на рынке в конечном итоге получают все большую и большую производительность, поэтому не только инструкции процессоров оптимизированы для повышения производительности в тестах, но также к тому, что в наиболее часто используемых программах и функциях есть разница.
В некоторых случаях создаются новые варианты наборов команд и исполнительных блоков, как это произошло с появлением модулей SIMD в конце 1990-х годов для мультимедийного контента или это происходит с инструкциями по ускорению алгоритмов искусственного интеллекта.
Повышение производительности не всегда должно сопровождаться сокращением количества циклов на инструкцию, оно может проявляться в виде новых исполнительных модулей и даже поддержки сопроцессоров.
Архитектура против архитектуры, когда речь идет о CPI и IPC
Поскольку нам совершенно неизвестны исторические изменения, которые каждый производитель вносил в CPI и IPC инструкций, при измерении программы даже под тем же ISA мы обнаружим несопоставимые результаты, если сравним производительность с производительностью другой программы. Причина? Оба они используют одни и те же инструкции, но время выполнения каждой инструкции разное.
Но если мы говорим о реализациях одного и того же производителя, то мы обнаруживаем, что и ЦП, и ГП развиваются постепенно, от одной итерации к другой сохраняется значительная часть инструкций предыдущей и CPI нескольких выбранных в конструкции процессора. период.
Какая связь между FLOPS и CPI и CPI?
Точно так же, как ошибочно сравнивать разные архитектуры с разными CPI, еще более ошибочно сравнивать разные архитектуры с точки зрения скорости FLOPS.
Ipc что это такое
Full Member
кто нибудь может ясно объяснить, что это за ресурсы такие
за что ответственны, принцып работы (протокол, порты и т.д.)
как к ним осуществяется доступ
ну и вообще
Это административные «шары», доступ только из-под аккаунта администратора.
Добавьте или измените следующие значения:
Операционная система Параметр Тип Значение
Windows 2000 Server AutoShareServer REG_DWORD 0
Windows 2000 Professional AutoShareWks REG_DWORD 0
Однако, этот метод не уберёт sharing с IPC$. Для того что бы полностью избавиться от всех административных шарингов, создайте BAT или CMD файлик следующего содержания, и вставьте его в автозагрузку.
net share c$ /delete
net share d$ /delete
net share e$ /delete
.
.
net share admin$ /delete
net share ipc$ /delete
Ведущий Win2K FAQ на http://www.3Dnews.ru/
Алексей Шашков ака Lehmen»
Цитата:
автозагрузка происходит после старта сервисов и некоторое время шары будет доступны. |
Цитата:
Батник у меня не прокатывал в автозагрузке. создай текстовый файл с расширением REG, внутри впиши эти строки: Windows Registry Editor Version 5.00 Еще можно отрубить «Отложенные задания» и «Принтеры и факсы». Цитата:
Кстати, есть такая программка lansafety. Пригодится тем, кого ломает лазить ручками в реестр: ссылка на нее и еще полезные утилиты (оффсайт) | |
Всего записей: 551 | Зарегистр. 03-03-2003 | Отправлено: 12:42 27-03-2003 | Исправлено: Horror32, 10:34 12-05-2016 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|