Кіріспе

Процесс белсенді пайдаланатын ресурстар жиынтығы. Жұмыс жиынтығы – компьютерлік ғылымдағы ұғым, ол белгілі бір уақыт аралығында процесске қажетті жад көлемін анықтайды.

Анықтама

Питер Деннинг (1968) "процестің белгілі бір уақыт мезгілінде пайдаланатын ақпараттар жиынтығын" – процесс осы уақыт аралығында сілтеме жасайтын ақпараттардың жиынтығы деп анықтайды. Әдетте, бұл ақпарат бірліктері жад беттері ретінде қарастырылады. Бұл, процесс болашақта қол жеткізе алатын беттер жиынтығының жуық шамасы (мысалы, келесі уақыт бірліктері ішінде) және, одан да нақтырақ, осы процесс орындалу барысында максималды прогреске жету үшін негізгі жадта қандай беттерді сақтау қажеттігін көрсетеді.

Негізгі себептері

Негізгі жадта қалдырылатын беттерді таңдаудың әсері (қосалқы жадқа шығарылудан өзгеше) маңызды: егер бір процесске тиесілі тым көп беттер негізгі жадта сақталса, онда бір уақытта дайын болатын басқа процестердің саны азаяды. Егер бір процесске тиесілі тым аз беттер негізгі жадта сақталса, онда оның беттік қателер жиілігі күрт артады және жүйеде қазіргі уақытта орындалып жатқан белсенді (тоқтатпаған) процестердің саны нөлге жақындайды. Жұмыс жиынтығы моделі процесс RAM-да тек қана оның қазіргі уақытта пайдаланатын барлық беттері (көбінесе соңғы пайдаланылған беттермен жуықтатылады) RAM-да болса ғана бола алады деп мәлімдейді. Бұл модель «барлығы немесе ештеңе де емес» принципіне негізделген, яғни қажетті беттердің саны артса және RAM-да орын болмаса, процесс жадынан шығарылып, басқа процестерге жадты босату үшін ауыстырылады. Көбінесе, күшті жүктемелі компьютерде кезекте тұрған процестердің саны сонша көп болады, егер барлық процестерге бір жоспарлау уақыт тілігінде жұмыс істеуге рұқсат берілсе, олар RAM-дағы беттер санынан көп беттерге сілтеме жасайды, бұл компьютердің «ұрып-соғуына» (thrash) әкеледі. Кейбір процестерді жадтан ауыстыру арқасында, тіпті уақытша жадтан шығарылған процестер де компьютер оларды бірден орындауға тырысқаннан гөрі әлдеқайда ертерек аяқталады. Процестер сондай-ақ, компьютер бір уақытта бір ғана процесс орындаған кезде аяқталуға тиіс уақыттан әлдеқайда ертерек аяқталады, себебі ол басқа процестерге жеңіл дискте немесе басқа да жаһандық ресурста күтіп тұрған кезде орындалуға және прогреске жетуге мүмкіндік береді. Басқаша айтқанда, жұмыс жиынтығы стратегиясы мүмкіндігінше жоғары көп бағдарламалау деңгейін сақтай отырып, ұрып-соғуды болдырмайды. Осылайша ол CPU-дың пайдалануын және өнімділігін оңтайландырады.

Іске асыру

Жұмыс жинағы моделін іске асырудағы негізгі қиындық – жұмыс жинағын қадағалау. Жұмыс жинағы терезесі – жылжымалы терезе. Әр жадқа сілтеме жасағанда, бір жағынан жаңа сілтеме пайда болады, ал ең ескісі екінші жағынан шығып кетеді. Егер бет жұмыс жинағы терезесінде сілтемеленген болса, ол жұмыс жинағында болады. Соңғы k сілтемеленген беттердің тізімін ұстауға байланысты қосымша шығындарды болдырмау үшін, жұмыс жинағы көбінесе соңғы сілтеме жасалған уақыт t-ны қадағалап, жұмыс жинағын белгілі бір уақыт ішінде сілтемеленген барлық беттер деп есептеу арқылы іске асырылады. Жұмыс жинағы – бет алмастыру алгоритмі емес, бірақ бет алмастыру алгоритмдерін белгілі бір процесс үшін жұмыс жинағында жоқ беттерді ғана алып тастау үшін құруға болады. Мысалы, WSClock деп аталатын сағат алгоритмінің өңделген нұсқасы.

Нұсқалар

Жұмыс жиынтығын кодтық жұмыс жиынтығына және деректер жұмыс жиынтығына бөлуге болады. Бұл айырмашылық код пен деректер жад иерархиясының тиісті деңгейінде бөлек болған кезде маңызды, егер жұмыс жиынтығының бірі иерархияның осы деңгейіне сыймаса, «соққы» құбылысы орын алады. Виртуалды жады бар жүйелерде код пен деректердің өзінен басқа, жұмыс жиынтығының беттерінің жад картасы (виртуалды жадтан физикалық жадқа) жазбалары, процесс тиімді жұмыс істеуі үшін аудармалық қарау буферіне (TLB) кэштелуі керек. Бұл айырмашылықтың себебі – код пен деректер бүтін беттер емес, шағын блоктарда (кэш жолдары) кэштеледі, бірақ мекенжайды іздеу беттік деңгейде жүзеге асырылады. Осылайша, код пен деректер жұмыс жиынтықтары кэшке сыйса да, егер жұмыс жиынтықтары көптеген беттерге бөлінген болса, виртуалды мекенжай жұмыс жиынтығы TLB-ге сыймауы мүмкін, бұл TLB-де «соққы» құбылысына әкеледі. Жұмыс жиынтығының аналогтары басқа шектеулі ресурстар үшін де бар, ең маңыздысы – процестер. Егер процестер жиынтығы бірнеше процесс арасында жиі өзара әрекеттесуді қажет етсе, онда олардың процестік жұмыс жиынтығы болады, ол ілгерілеу үшін бірдей уақытта жоспарлануы керек: Егер процестер бір уақытта жоспарланбаса – мысалы, екі процесс болса, бірақ оларды орындау үшін бір ғана ядро болса – процестер бір уақыт тілімінде бір ғана өзара әрекеттесу жылдамдығымен ғана алға жылжи алады. Басқа ресурстарға файл дескрипторлары немесе желілік сокеттер жатады – мысалы, бір файлды екіншісіне көшіру ең оңайымен екі файл дескрипторы арқылы жасалады: біреуі кіріс үшін, біреуі шығыс үшін, сондықтан «файл дескрипторының жұмыс жиынтығы» екіге тең. Егер тек бір ғана файл дескрипторы болса, көшіруді орындауға болады, бірақ кіріс үшін файл дескрипторын алу, одан оқу (мысалы, буферге), оны босату, содан кейін шығыс үшін файл дескрипторын алу, оған жазу, босату, содан кейін кіріс файл дескрипторын қайта алу және қайталау қажет. Сол сияқты, серверге көптеген сокеттер қажет болуы мүмкін, және егер ол шектеулі болса, сокеттерді қайта-қайта босатып, қайта алу керек болады. Мұндай ресурстар бағдарлама үшін қажет, және егер ол жеткілікті ресурстарды ала алмаса, ол жай ғана сәтсіздікке ұшырайды.