Кіріспе
Windows жүйелік процесі
Svchost.exe (Service Host, немесе SvcHost) – Windows NT операциялық жүйелер отбасында бір немесе бірнеше Windows қызметтерін іске қоса алатын жүйелік процесс. Svchost ортақ қызмет процестерін жүзеге асыруда маңызды рөл атқарады, онда бірнеше қызмет ресурстарды үнемдеу үшін бір процесспен бөлісе алады. Көптеген қызметтерді бір процесске біріктіру есептеу ресурстарын сақтайды, және бұл мәселе NT әзірлеушілері үшін ерекше маңызды болды, себебі Windows процестерін құру Unix отбасы сияқты басқа операциялық жүйелерге қарағанда көбірек уақыт алады және көбірек жадты пайдаланады. Дегенмен, егер қызметтердің бірі өңделмеген қатеге себеп болса, бүкіл процесс құлауы мүмкін. Сонымен қатар, пайдаланушылар үшін құрамына кіретін қызметтерді анықтау қиын болуы мүмкін. Әртүрлі хостталған қызметтерде, әсіресе Windows Update-те туындайтын мәселелер пайдаланушылар тарапынан хабарланады және баспасөз беттерінде svchost-пен байланыстырылады. Svchost процесі Windows 2000-де пайда болды, бірақ ортақ қызмет процестерін қолдау Windows NT 3.1 нұсқасынан бері бар.
Windows 10- дағы хост топтамасының қызметіне өзгерістер
Windows 10 1903 нұсқасынан бастап Microsoft қызметтерді хост процестеріне топтастыру әдісін өзгертті. 3,5 ГБ-тан астам жадысы бар клиенттік компьютер жүйелерінде қызметтер енді ортақ хост процестеріне топтастырылмайды. Оның орнына, әрбір қызмет өз процесінде іске қосылады. Бұл қызметтердің жақсырақ оқшаулануына мүмкіндік береді, компьютерлік жүйені қызметтердің істен шығуы мен осалдықтарына қарсы тұруға және қателерді жоюды жеңілдетеді. Дегенмен, бұл жадты біршама арттырады.
Қызмет белгілері
Windows Vista-дан бастап ортақ процестердегі қызметтердің (svchost қоса) ішкі идентификациясы «қызмет тегтері» арқылы жүзеге асырылады. Әрбір жіпке арналған қызмет тегі оның жіп ортасының блогының (TEB) SubProcessTag-інде сақталады. Тег, Windows жіптік пулы API-лері арқылы тікелей емес құрылған жіптерді қоспағанда, негізгі қызметтік жіп кейін іске қосатын барлық жіптерге таратылады. Қызмет тегтерін басқару тәсілдері қазіргі уақытта құжатталмаған API болып табылады, бірақ оны netstat сияқты кейбір Windows құралдары әр қызметке байланысты TCP қосылымдарын көрсету үшін пайдаланады. ScTagQuery сияқты үшінші тараптың кейбір құралдары да осы API-ді пайдаланады. TCP қосылымдары мен UDP порттарының қызмет туралы хабардар тізімін алу үшін команданы пайдалануға болады. svchost инстанциясында жұмыс істейтін қызметпен байланысты басқа да проблемаларды жою үшін, проблеманы тудырады деп күдіктенетін қызмет(тер) әрқайсысы өз svchost инстанциясында жұмыс істейтіндей етіп қайта конфигурациялануы керек. Мысалы, «foo» деп аталатын қызметті өз svchost инстанциясында іске қосу үшін команда қолданылады. Оны бастапқы күйіне қайтару үшін ұқсас команда қолданылады. Мұндай конфигурациялық өзгерістің күшіне енуі үшін қызметті қайта іске қосу қажет. Алайда, бұл жөндеу процесі қатесіз емес; кейбір жағдайларда, heisenbug пайда болуы мүмкін, ол қызмет жеке іске қосылғанда проблеманың жойылуына әкеледі. Қателерді жоюдың күрделі әдісі – оқшауланған қызмет тобын құру. Windows 10-да, 1703 нұсқасынан бастап, svchost Microsoft компаниясымен қайта жобаланып, қол жетімді жүйелік жадқа байланысты процеске бір ғана қызмет орналастырылады. Жүйеде кем дегенде 3,5 ГБ оперативті жад болса, әдепкі параметрлер қызметтердің дербес орналасуына себеп болады.
In order to troubleshoot other kinds of problems with a service running inside an svchost instance, the service(s) suspected to be causing the problem must (all) be reconfigured so that each runs inside its own svchost instance. For example, will reconfigure the service named "foo" to run in its own svchost instance. Changing the back to is done by an analogous command. The service must be restarted for such a configuration change to take effect. This debugging process is not foolproof however; in some cases, a heisenbug may occur, which causes the problem to go away when the service is running separately. A more complex method of troubleshooting is to create an isolated service group. In Windows 10, starting with release 1703, svchost was redesigned by Microsoft to host only one service per process, depending on available system memory. The default setting causes services to be hosted independently if the system has at least 3.5 of RAM.