Информация об изменениях

Сообщение Re[30]: Windows захватили инопланетяне? от 16.01.2020 23:51

Изменено 16.01.2020 23:53 Vetal_ca

Re[30]: Windows захватили инопланетяне?
Здравствуйте, blp, Вы писали:

V_>>Сервис + per-user userspace GUI/headless процесс.

blp>Да, тут больше текста, но все равно непонятно. Задача, которую решает юнистек — это много сервисов, каждый из которых per-user-logged-on.
blp>Как ваша адова архитектура с одинм сервисом и потенциально несколькими процессами, в это вписывается? Например, как эти процессы корректно шатдаунить, когда юзер делает log off, чтобы они гарантированно успели деинициализироваться?


Сервис содержит в себе контекст пользователя. При закрытии user space app информируется сервис, далее делается необходимый shutdown на уровне сервиса.

Service (псевдокод):

onLogon(userId)
{
userContext = createContext(userId)
onUserLogon(userContext)
}
onLogoff(userId)
{
userContext = getUserContext(userId)
onUserLogoff(userContext)
}

onShutdown()
{
foreach userId in logonUsers
{
userContext = getUserContext(userId)
onUserLogOff(userContext)
}

// Деинициализация прошла, разрешаем shutdown

signalOsShutdownAllowed()
}



Можно и shutdown/startup зависимости добавить с другими, "singleton-kind" сервисами, не вижу в этом проблемы

User-space процессы шатдаунятся стандартным способом (SIGTERM, WM_CLOSE или что-там, без разницы). Что-то критичное, для чего нужно "попридержать" shutdown (buffers flush etc), выполняется в onUserLogOff(userContext), в контексте сервиса.
Re[30]: Windows захватили инопланетяне?
Здравствуйте, blp, Вы писали:

V_>>Сервис + per-user userspace GUI/headless процесс.

blp>Да, тут больше текста, но все равно непонятно. Задача, которую решает юнистек — это много сервисов, каждый из которых per-user-logged-on.
blp>Как ваша адова архитектура с одинм сервисом и потенциально несколькими процессами, в это вписывается? Например, как эти процессы корректно шатдаунить, когда юзер делает log off, чтобы они гарантированно успели деинициализироваться?


Сервис содержит в себе контекст пользователя. При закрытии user space app информируется сервис, далее делается необходимый shutdown на уровне сервиса.

Service (псевдокод):

onLogon(userId)
{
   userContext = createContext(userId)
   onUserLogon(userContext)
}
onLogoff(userId)
{
   userContext = getUserContext(userId)
   onUserLogoff(userContext)
}

onShutdown()
{
   foreach userId in logonUsers
   {
      userContext = getUserContext(userId)
      onUserLogOff(userContext)
   }

   // Деинициализация прошла, разрешаем shutdown

   signalOsShutdownAllowed()
}



Можно и shutdown/startup зависимости добавить с другими, "singleton-kind" сервисами, не вижу в этом проблемы

User-space процессы шатдаунятся стандартным способом (SIGTERM, WM_CLOSE или что-там, без разницы). Что-то критичное, для чего нужно "попридержать" shutdown (buffers flush etc), выполняется в onUserLogOff(userContext), в контексте сервиса.