[{"isEmailConfirmed":true,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":3,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"нет адреса","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.11","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.11","photoPreview120":"images/unophoto.png?v=9.4.11","photoPreview100":"images/unophoto.png?v=9.4.11","photoPreview80":"images/unophoto.png?v=9.4.11","photoPreview40":"images/unophoto.png?v=9.4.11","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-58 мин."},"isBanned":false,"roleString":"Мастер-Эксперт","roleIcon":"fa-user-ninja","socialMedia":[],"aboutText":"","aboutHTML":"","signatureText":"Facta loquuntur.","signatureHTML":"Facta loquuntur.","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":4.979,"absoluteRating":109927,"dynamicRating":1684.827,"dynamicRatingStars":10,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-03-28T21:58:10.2124101+03:00","isValid":true,"isUnconfirmed":false,"isConfirmed":true,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":11,"counters":{"daysAtPortal":6524,"questions":12,"questionsPosts":18345,"questionsAnswers":6663,"questionsPostsEvaluations":2831,"forumPosts":5697},"isRfproUserClass":true,"id":17387,"name":"Гордиенко Андрей Владимирович","email":"","role":10,"registDate":"1000-01-01T00:00:00","lastDate":"2024-03-27T19:01:17","photo":"users/17387/f4979bc95a484b9f43f75cfe66538acd.jpg","lastDateIndicatorClass":"red","lastDateIndicatorText":"давно","photoPreview200":"users/17387/200_f4979bc95a484b9f43f75cfe66538acd.jpg","photoPreview120":"users/17387/120_f4979bc95a484b9f43f75cfe66538acd.jpg","photoPreview100":"users/17387/100_f4979bc95a484b9f43f75cfe66538acd.jpg","photoPreview80":"users/17387/80_f4979bc95a484b9f43f75cfe66538acd.jpg","photoPreview40":"users/17387/40_f4979bc95a484b9f43f75cfe66538acd.jpg","isPhotoExists":true,"isLoggedIn":true,"isNewUser":false,"isExisted":true,"isExpert":true},{"isEmailConfirmed":true,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":3,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"нет адреса","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.11","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.11","photoPreview120":"images/unophoto.png?v=9.4.11","photoPreview100":"images/unophoto.png?v=9.4.11","photoPreview80":"images/unophoto.png?v=9.4.11","photoPreview40":"images/unophoto.png?v=9.4.11","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-58 мин."},"isBanned":false,"roleString":"Мастер-Эксперт","roleIcon":"fa-user-ninja","socialMedia":[],"aboutText":"Я пенсионер. Образование высш, радио-инж. Работал инж-электроником, ведущим средств телевидения, связи, слесарем и инженером КИП, грузчиком, программистом. На моём счету десятки рац-предложений, в тч с большим экономич эффектом.\nЯ люблю компьютеры, ремонтирую их друзьям и соседям. Пишу полезные программки в vbs-файлах, автоматизирующие настройку Win-систем, приложений и работу с ними.","aboutHTML":"Я пенсионер. Образование высш, радио-инж. Работал инж-электроником, ведущим средств телевидения, связи, слесарем и инженером КИП, грузчиком, программистом. На моём счету десятки рац-предложений, в тч с большим экономич эффектом.\u003Cbr\u003EЯ люблю компьютеры, ремонтирую их друзьям и соседям. Пишу полезные программки в vbs-файлах, автоматизирующие настройку Win-систем, приложений и работу с ними.","signatureText":"","signatureHTML":"","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":4.935,"absoluteRating":25753,"dynamicRating":463.439,"dynamicRatingStars":8,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-03-28T21:58:10.2126222+03:00","isValid":true,"isUnconfirmed":false,"isConfirmed":true,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":11,"counters":{"daysAtPortal":5556,"questions":25,"questionsPosts":7459,"questionsAnswers":1225,"questionsPostsEvaluations":788,"forumPosts":399},"isRfproUserClass":true,"id":259041,"name":"Алексеев Владимир Николаевич","email":"","role":10,"registDate":"1000-01-01T00:00:00","lastDate":"2024-01-30T15:24:45","photo":"images/unophoto.png?v=9.4.11","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.11","photoPreview120":"images/unophoto.png?v=9.4.11","photoPreview100":"images/unophoto.png?v=9.4.11","photoPreview80":"images/unophoto.png?v=9.4.11","photoPreview40":"images/unophoto.png?v=9.4.11","isPhotoExists":false,"isLoggedIn":true,"isNewUser":false,"isExisted":true,"isExpert":true},{"isEmailConfirmed":true,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":3,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"нет адреса","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.11","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.11","photoPreview120":"images/unophoto.png?v=9.4.11","photoPreview100":"images/unophoto.png?v=9.4.11","photoPreview80":"images/unophoto.png?v=9.4.11","photoPreview40":"images/unophoto.png?v=9.4.11","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-58 мин."},"isBanned":false,"roleString":"Старший Модератор","roleIcon":"fa-user-tie","socialMedia":[],"aboutText":"634034, г.Томск, ул.Красноармейская 122, кв.173","aboutHTML":"634034, г.Томск, ул.Красноармейская 122, кв.173","signatureText":"","signatureHTML":"","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":4.985,"absoluteRating":21746,"dynamicRating":414.885,"dynamicRatingStars":8,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-03-28T21:58:10.2127607+03:00","isValid":true,"isUnconfirmed":false,"isConfirmed":true,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":13,"counters":{"daysAtPortal":5241,"questions":1,"questionsPosts":1973,"questionsAnswers":1283,"questionsPostsEvaluations":588,"forumPosts":91},"isRfproUserClass":true,"id":312929,"name":"Коцюрбенко Алексей Владимирович","email":"","role":12,"registDate":"1000-01-01T00:00:00","lastDate":"2023-11-05T17:20:40","photo":"images/unophoto.png?v=9.4.11","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.11","photoPreview120":"images/unophoto.png?v=9.4.11","photoPreview100":"images/unophoto.png?v=9.4.11","photoPreview80":"images/unophoto.png?v=9.4.11","photoPreview40":"images/unophoto.png?v=9.4.11","isPhotoExists":false,"isLoggedIn":true,"isNewUser":false,"isExisted":true,"isExpert":true},{"isEmailConfirmed":true,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":3,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"нет адреса","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.11","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.11","photoPreview120":"images/unophoto.png?v=9.4.11","photoPreview100":"images/unophoto.png?v=9.4.11","photoPreview80":"images/unophoto.png?v=9.4.11","photoPreview40":"images/unophoto.png?v=9.4.11","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-58 мин."},"isBanned":false,"roleString":"Советник","roleIcon":"fa-user-ninja","socialMedia":[],"aboutText":"","aboutHTML":"","signatureText":"","signatureHTML":"","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":5,"absoluteRating":9460,"dynamicRating":391.797,"dynamicRatingStars":8,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-03-28T21:58:10.2128565+03:00","isValid":true,"isUnconfirmed":false,"isConfirmed":true,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":10,"counters":{"daysAtPortal":2414,"questions":0,"questionsPosts":472,"questionsAnswers":398,"questionsPostsEvaluations":298,"forumPosts":1},"isRfproUserClass":true,"id":401284,"name":"Михаил Александров","email":"","role":9,"registDate":"1000-01-01T00:00:00","lastDate":"2024-03-27T19:23:59","photo":"users/401284/48171011af39b6bb3a74df8c0fcf97d0.jpg","lastDateIndicatorClass":"red","lastDateIndicatorText":"давно","photoPreview200":"users/401284/200_48171011af39b6bb3a74df8c0fcf97d0.jpg","photoPreview120":"users/401284/120_48171011af39b6bb3a74df8c0fcf97d0.jpg","photoPreview100":"users/401284/100_48171011af39b6bb3a74df8c0fcf97d0.jpg","photoPreview80":"users/401284/80_48171011af39b6bb3a74df8c0fcf97d0.jpg","photoPreview40":"users/401284/40_48171011af39b6bb3a74df8c0fcf97d0.jpg","isPhotoExists":true,"isLoggedIn":true,"isNewUser":false,"isExisted":true,"isExpert":true},{"isEmailConfirmed":true,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":3,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"нет адреса","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.11","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.11","photoPreview120":"images/unophoto.png?v=9.4.11","photoPreview100":"images/unophoto.png?v=9.4.11","photoPreview80":"images/unophoto.png?v=9.4.11","photoPreview40":"images/unophoto.png?v=9.4.11","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-58 мин."},"isBanned":false,"roleString":"Посетитель","roleIcon":"fa-user","socialMedia":[],"aboutText":"","aboutHTML":"","signatureText":"","signatureHTML":"","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":4.987,"absoluteRating":6052,"dynamicRating":224.733,"dynamicRatingStars":7,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-03-28T21:58:10.2129582+03:00","isValid":true,"isUnconfirmed":false,"isConfirmed":true,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":2,"counters":{"daysAtPortal":2693,"questions":0,"questionsPosts":527,"questionsAnswers":250,"questionsPostsEvaluations":155,"forumPosts":0},"isRfproUserClass":true,"id":400669,"name":"epimkin","email":"","role":1,"registDate":"1000-01-01T00:00:00","lastDate":"2024-02-19T23:46:05","photo":"images/unophoto.png?v=9.4.11","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.11","photoPreview120":"images/unophoto.png?v=9.4.11","photoPreview100":"images/unophoto.png?v=9.4.11","photoPreview80":"images/unophoto.png?v=9.4.11","photoPreview40":"images/unophoto.png?v=9.4.11","isPhotoExists":false,"isLoggedIn":true,"isNewUser":false,"isExisted":true,"isExpert":false},{"isEmailConfirmed":true,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":3,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"нет адреса","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.11","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.11","photoPreview120":"images/unophoto.png?v=9.4.11","photoPreview100":"images/unophoto.png?v=9.4.11","photoPreview80":"images/unophoto.png?v=9.4.11","photoPreview40":"images/unophoto.png?v=9.4.11","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-58 мин."},"isBanned":false,"roleString":"Посетитель","roleIcon":"fa-user","socialMedia":[],"aboutText":"","aboutHTML":"","signatureText":"[i]С уважением[/i]\n[i]shvetski[/i]","signatureHTML":"\u003Ci\u003EС уважением\u003C/i\u003E\u003Cbr\u003E\u003Ci\u003Eshvetski\u003C/i\u003E","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":4.963,"absoluteRating":11493,"dynamicRating":202.222,"dynamicRatingStars":7,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-03-28T21:58:10.2130761+03:00","isValid":true,"isUnconfirmed":false,"isConfirmed":true,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":2,"counters":{"daysAtPortal":5683,"questions":35,"questionsPosts":1567,"questionsAnswers":588,"questionsPostsEvaluations":324,"forumPosts":44},"isRfproUserClass":true,"id":226425,"name":"Konstantin","email":"","role":1,"registDate":"1000-01-01T00:00:00","lastDate":"2023-09-16T03:51:40","photo":"images/unophoto.png?v=9.4.11","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.11","photoPreview120":"images/unophoto.png?v=9.4.11","photoPreview100":"images/unophoto.png?v=9.4.11","photoPreview80":"images/unophoto.png?v=9.4.11","photoPreview40":"images/unophoto.png?v=9.4.11","isPhotoExists":false,"isLoggedIn":true,"isNewUser":false,"isExisted":true,"isExpert":false}]
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: 1) Что такое "Поток" и "Процесс" в Windows - это что-то программное или аппаратное - дело в том, что я никак не могу понять: с одной стороны - Windows может управлять потоками - определять приоритет и т.д. - с другой - они как-то "самостоятельно" могут выполняются на разных ядрах и ОС может ими управлять... В связи с вышесказанным возникает вопрос: так "Поток" - это программная фишка или аппаратная или программно-аппаратная, но в любом случае не ясно, какая "часть" тут реализована программно, а другая - аппаратно... К сожалению, я нигде не смог найти информацию по этим вопросам и поэтому обращаюсь к Вам! :) 2) Для чего используется регистр CS в Windows? Большое спасибо!
Процессом обычно называют экземпляр выполняемой программы.
Хотя на первый взгляд кажется, что программа и процесс понятия практически одинаковые, они фундаментально отличаются друг от друга. Программа представляет собой статический набор команд, а процесс это набор ресурсов и данных, использующихся при выполнении программы. Процесс в Windows состоит из следующих компонентов:
- Структура данных, содержащая всю информацию о процессе, в том числе список открытых дескрипторов различных системных ресурсов, уникальный идентификатор процесса, различную статистическую информацию и т.д.;
- Адресное пространство - диапазон адресов виртуальной памяти, которым может пользоваться процесс;
- Исполняемая программа и данные, проецируемые на виртуальное адресное пространство процесса.
Потоки
Процессы инертны. Отвечают же за исполнение кода, содержащегося в адресном пространстве процесса, потоки. Поток (thread) - некая сущность внутри процесса, получающая процессорное время для выполнения. В каждом процессе есть минимум один поток. Этот первичный поток создается системой автоматически при создании процесса. Далее этот поток может породить другие потоки, те в свою очередь новые и т.д. Таким образом, один процесс может владеть несколькими потоками, и тогда они одновременно исполняют код в адресном пространстве процесса. Каждый поток имеет:
- Уникальный идентификатор потока;
- Содержимое набора регистров процессора, отражающих состояние процессора;
- Два стека, один из которых используется потоком при выполнении в режиме ядра, а другой - в пользовательском режиме;
- Закрытую область памяти, называемую локальной памятью потока (thread local storage, TLS) и используемую подсистемами, run-time библиотеками и DLL.
Планирование потоков
Чтобы все потоки работали, операционная система отводит каждому из них определенное процессорное время. Тем самым создается иллюзия одновременного выполнения потоков (разумеется, для многопроцессорных компьютеров возможен истинный параллелизм). В Windows реализована система вытесняющего планирования на основе приоритетов, в которой всегда выполняется поток с наибольшим приоритетом, готовый к выполнению. Выбранный для выполнения поток работает в течение некоторого периода, называемого квантом. Квант определяет, сколько времени будет выполняться поток, пока операционная система не прервет его. По окончании кванта операционная система проверяет, готов ли к выполнению другой поток с таким же (или большим) уровнем приоритета. Если таких потоков не оказалось, текущему потоку выделяется еще один квант. Однако поток может не полностью использовать свой квант. Как только другой поток с более высоким приоритетом готов к выполнению, текущий поток вытесняется, даже если его квант еще не истек.
Квант не измеряется в каких бы то ни было единицах времени, а выражается целым числом. Для каждого потока хранится текущее значение его кванта. Когда потоку выделяется квант процессорного времени, это значит, что его квант устанавливается в начальное значение. Оно зависит от операционной системы.
Процесс Windows по своей сути является контейнером, в котором хранится код команд из исполняемого файла. Он представляет собой объект процесса ядра и Windows использует этот объект процесса и связанные с ним структуры данных для хранения и сопровождения информации об исполняемом коде приложения. Например, процесс имеет виртуальное адресное пространство, в котором хранятся его частные и общие данные и в которое отображаются исполняемый образ и связанные с ним библиотеки DLL. Windows с помощью инструментов диагностики записывает информацию об использовании процессом ресурсов для обеспечения учета и выполнения запросов и регистрирует ссылки процесса на объекты операционной системы в таблице дескриптора процесса. Процессы работают с контекстом безопасности, именуемом маркером, который идентифицирует учетную запись пользователя, группы учетной записи и привилегии, назначенные процессу.
Процесс включает в себя один или более потоков, которые фактически выполняют код в процессе (технически, выполняются не процессы, а потоки) и представлены в системе в виде объектов потоков ядра. Есть несколько причин, почему приложения создают потоки в дополнение к их исходному начальному потоку: 1) процессы, обладающие пользовательским интерфейсом, обычно создают потоки для того, чтобы выполнять свою работу и при этом сохранять отзывчивость основного потока к командам пользователя, связанными с вводом данных и управлением окнами; 2) приложения, которые хотят использовать несколько процессоров для масштабирования производительности или же которые хотят продолжать работать, в то время как потоки останавливают свою работу, ожидая синхронизации операций ввода/вывода, создают потоки, чтобы получить дополнительную выгоду от многопоточной работы.
Здравствуйте, Илья! 2) Windows работает в защищенном режиме процессора, при котором в сегментных регистрах хранятся специальные структуры данных - селекторы. Которые являются идентификатором сегмента. Селектор указывает не на сам сегмент в памяти, а на его дескриптор, в таблице дескрипторов… Каждая 16-битная величина в сегментных регистрах делится на три части, как показано ниже:
Код:
15 3 2 1 0 +--------------------+ | Index | TI | RPL| +--------------------+
Бит TI в этом случае указывает, какая таблица дескрипторов должна использоваться (нуль соответствует глобальной таблице дескрипторов, единица — локальной таблице дескрипторов). Поле Index является номером (индексом) дескриптора в таблице дескрипторов, который должен использоваться при вычислении линейного адреса. Поле RPL является запрошенным уровнем привилегий, используемым для контроля прав доступа программы к сегменту . Частным случаем RPL является текущий уровень привилегий — CPL, чьё значение в любой момент времени находится в сегментном регистре CS. Ну и, наконец, регистр CS должен содержать селектор сегмента кода, иначе произойдет исключение при попытке выполнить команду. Атрибуты сегментов задаются в дескрипторах. Это если вкратце, подробнее можно узнать, почитав про защищенный режим процессора. Информации в Интернете много, полагаю, найдете самостоятельно.
Об авторе:
"Если вы заметили, что вы на стороне большинства, — это верный признак того, что пора меняться." Марк Твен
Неизвестный
16.07.2012, 09:43
общий
это ответ
Здравствуйте, Илья! Процесс и поток - это скорее программные вещи, но их практическая реализация невозможна без поддержки на аппаратном уровне. На аппаратные возможности прежде всего опираются две вещи:
1. Адресное пространство процесса. Потоки внутри процесса работают в виртуальном адресном пространстве, которое никак не пересекается с другими процессами. За счёт этого процессы изолированы друг от друга. Трансляция виртуальных адресов в физические реализовано на аппаратном уровне. Для этого операционная система формирует специальные структуры данных и записывает их адрес в регистры процессора. Процессор по этим данным отображает заданные страницы памяти на виртуальные адреса процесса. Если поток обратится к адресу, который отсутствует в отображении, то процессор сгенерирует исключение и управление получит код операционной системы. Он выдаст пользователю сообщение о фатальном сбое в программе и уничтожит процесс.
2. Планирование потоков. Хотя поток выполняется "самостоятельно", операционная система программирует аппаратный таймер. Когда таймер сработает, то управление опять получит код системы, который решит что делать дальше: оставить на выполнении текущий поток либо запустить другой, более приоритетный. Переключение потоков также происходит при участии аппаратных ресурсов, процессор имеет специальные команды для сохранения и загрузки контекста потока.
Если вы хотите более детально разобраться с этими вопросами, то очень рекомендую книгу Олифер, Олифер. Сетевые операционные системы. http://www.ozon.ru/context/detail/id/3562333
Неизвестный
16.07.2012, 12:17
общий
Огромное спасибо за ответы!!! На самом деле, что-то здесь не сходится... Дело в том, что в регистре CS хранится какая-то информация, которая не доступна для меня (уровень приложения), т.к. любое обращение к этому сегменту влечет за собой ошибку нарушения доступа. Более того, как я понял, в сегментно-страничной системе адресации у нас за "разграничения доступа"(код, данные, стек) отвечают на сами сегментные регистры (не важно, в каком сегментном регистре находится селектор), а параметры страниц. Дело в том, что доступ к командам осуществляется по тому же селектору, что и к данным (это доказано экспериментально), т.к, по моему мнению, в Windows программы хранятся как данные, только у этих страниц, на которых они хранятся, есть атрибут доступа на исполнение... Я прав? Я проводил следующий эксперимент: у меня есть данные по адресу 0x101A34E0 и я попытался обратиться к этим данным не через сегмент, селектор котоорого содержится в регистре DS, а тот селектор, который содержится в регистре CS и тут же получил Access Violation. Вы можете как-нибудь это объяснить? И еще насчет потоков: как же ОС может разграничить потоки по разным процессорам? Мне кажется, что тут есть что-то еще... Ответ на этот вопрос я НИГДЕ не нашел и поэтому скачал тех. документацию Intel, но в ней быстро ответ не найдешь... Собственно, поэтому я говорил, что поток - это что-то "программно-аппаратное", т.е. работает на физическом ядре, но при этом управляется программно... Ответы мне очень понравились, вот только остались дополнительные вопросы! Все спасибо еще раз!!
Неизвестный
16.07.2012, 13:46
общий
Windows использует плоскую модель памяти, поэтому сегменты CS и DS отличаются только параметрами защиты:
Код:
P Si Gr Pr Lo Sel Base Limit Type l ze an es ng Flags ---- -------- -------- ---------- - -- -- -- -- -------- 0023 00000000 ffffffff Data RW Ac 3 Bg Pg P Nl 00000cf3
P Si Gr Pr Lo Sel Base Limit Type l ze an es ng Flags ---- -------- -------- ---------- - -- -- -- -- -------- 001B 00000000 ffffffff Code RE Ac 3 Bg Pg P Nl 00000cfb
То есть CS указывает на Read/Execute сегмент. Возможность чтения необходима для прямого обращения к константам, которые компилятор может размещать прямо в коде.
Неизвестный
16.07.2012, 14:03
общий
Наличие нескольких процессоров никак не меняет дела. Каждый процессор периодически генерирует исключение по аппаратному таймеру. Код планировщика потоков всегда знает на каком процессоре он выполняется в данный момент, и в зависимости от ситуации запускает тот или иной поток на текущем процессоре.
Неизвестный
16.07.2012, 14:13
общий
Большое спасибо! Т.е. получается так, что "сегмент данных, сегмент стека, сегмент кода" - это один и тот же сегмент, только если сегменты данных и стека - это один и тот же сегмент, то сегмент кода - это другой сегмент, который по своим границам такой же, как и данных и кода, но он отличается параметрами защиты (разрешено исполнение). Правильно? А атрибуты страниц - это "дополнительное" разрешение на исполнение, т.е. чтобы код мог исполняться, необходимо, чтобы ссылка была на сегмент CS и страница "разрешала" исполнение. Правильно? Кстати, а откуда Вы взяли эту информацию? :)
Большое спасибо! Кстати, я тут такую интересную вещь наблюдал... Дело в том, что у меня один и тот же поток выполнял цикл и при этом система как-то умудрилась распараллелить его по ядрам... КАК?! Причем, это было только по Вин7, а под ХР такого не было... Можете это как-нибудь объянить?
Неизвестный
16.07.2012, 15:20
общий
Насчёт распараллеливания я думаю вам показалось Скорее всего наблюдался механизм балансировки нагрузки. Чтобы процессор 0 не приставился раньше положенного, система старается равномерно загрузить все процессоры работой. Поэтому когда в системе только один активный поток, то он поочерёдно исполняется на всех процессорах.
Неизвестный
16.07.2012, 15:22
общий
Вы знаете, я тоже так подумал. :) Благодарю за ответ, покачто вопросов нет. :)
Неизвестный
16.07.2012, 15:44
общий
Все-таки возник еще один маленький вопросик: а если я пишу, к примеру, IRQ 4 - то здесь у меня 4 - это и приритет по прерыванию, и вектор прерывания. Верно?
{"canUserNotesAccess":false,"canUserAdminsNotesAccess":false,"canAskQuestion":false,"canEditQuestions":false,"canSeeQuestionsComplains":false,"isSuperAdmin":false,"isAdmin":false,"isModer":false,"canCreateNewUser":false,"canConfirmUser":false,"canEditUserName":false,"canEditUserRole":false,"canEditUserEmail":false,"canEditUserPhone":false,"canEditUserBirthdate":false,"canEditUserCountry":false,"canEditSocialMedia":false,"canDeleteUserPhoto":false,"canDeleteUser":false,"canEditUserAbout":false,"canBanUser":false,"canResetUserPassword":false,"canEditRegistDate":false,"canChangeUserRating":false,"canAccessToAdmin":false,"canAnnouncements":false,"canManageQuestionPosts":false,"canManageForumSections":false,"canManageForumThreads":false,"canManageForumPosts":false,"canCreateForumThreads":false,"canSeeUserEmail":false,"canSeeUserPhone":false,"canSeeIPAddress":false,"canSeeUserRegistDate":false,"canSeeUserSocialMedia":false,"canSeeBirthDate":false,"canSeeUserCountry":false,"canSeeUserSettings":false,"canSeeDeletedPosts":false,"isEmailConfirmed":false,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":0,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.11","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.11","photoPreview120":"images/unophoto.png?v=9.4.11","photoPreview100":"images/unophoto.png?v=9.4.11","photoPreview80":"images/unophoto.png?v=9.4.11","photoPreview40":"images/unophoto.png?v=9.4.11","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-58 мин."},"isBanned":false,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","socialMedia":[],"aboutText":"","aboutHTML":"","signatureText":"","signatureHTML":"","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":0,"absoluteRating":0,"dynamicRating":0,"dynamicRatingStars":0,"timezone":{"id":283,"baseUtcOffset":"03:00:00","displayName":"(UTC\u002B03:00) Москва","linuxid":"Europe/Moscow"},"currentDateTime":"2024-03-29T00:58:10.2137633+03:00","isValid":false,"isUnconfirmed":true,"isConfirmed":false,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":1,"counters":{"daysAtPortal":0,"questions":0,"questionsPosts":0,"questionsAnswers":0,"questionsPostsEvaluations":0,"forumPosts":0},"isRfproUserClass":true,"id":0,"name":"Неизвестный","email":"","role":0,"registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.11","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.11","photoPreview120":"images/unophoto.png?v=9.4.11","photoPreview100":"images/unophoto.png?v=9.4.11","photoPreview80":"images/unophoto.png?v=9.4.11","photoPreview40":"images/unophoto.png?v=9.4.11","isPhotoExists":false,"isLoggedIn":false,"isNewUser":false,"isExisted":false,"isExpert":false}