Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Екі деңгейлі жоспарлау – компьютерлік ғылымдағы термин, процестерді алмастыруды қамтитын процестерді жоспарлауды тиімдірек орындау әдісін сипаттайды. Келесі мәселені қарастырайық: жүйеде барлығы бірдей басымдыққа ие 50 процесс бар. Дегенмен, жүйенің жадында бір уақытта тек 10 процесс сақталады. Сондықтан, әрқашан 40 процесс алмастырылып, қатты дискідегі виртуалды жадқа жазылады. Процесті алмастыру және қайта жадқа көшіруге кеткен уақыт тиісінше 50 мс құрайды. Дәстүрлі Round Robin жоспарлау схемасында, әр контексттік ауысу кезінде процесс жадтан алмастырылуы керек болады (өйткені тек 10 ең соңғы пайдаланылған процесс жадқа қайта көшіріледі). Процестердің арасынан кездейсоқ таңдау жасау ықтималдықты 80% (40/50) дейін төмендетеді. Егер мұндай жағдай туындаса, сөзсіз бір процесс жадтан шығарылуы керек. Алмастыру операциясы қымбатқа түседі және жоспарлаушы қажетсіз алмастыруларға көп уақытын жұмсайды. Екі деңгейлі жоспарлау осы мәселені шешеді. Ол екі түрлі жоспарлаушыны қолданады: төменгі деңгейдегі жоспарлаушы тек жадтағы процестердің арасынан іске қосуға болатын процестерді таңдай алады. Бұл жоспарлаушы Round Robin жоспарлаушысы бола алады. Екінші жоспарлаушы – жоғары деңгейдегі жоспарлаушы, ол жадтан процестерді алмастыру және жадқа қайта көшірумен ғана айналысады. Алмастыру операциясы көп уақыт алатындықтан, ол төменгі деңгейдегі жоспарлаушыға қарағанда әлдеқайда сирек жоспарлау жүргізеді. Осылайша, жоғары деңгейдегі жоспарлаушы ұзақ уақыт бойы жұмыс істеген жадтағы процестерді таңдап, оларды алмастырады. Олардың орнына ұзақ уақыт бойы іске қосылмаған дискідегі процестер көшіріледі. Процестерді қалай таңдау жоғары деңгейдегі жоспарлаушының іске асылуына байланысты. Келісімге келу үшін келесі айнымалыларды ескеру қажет:
Two level scheduling is a computer science term to describe a method to more efficiently perform process scheduling that involves swapped out processes. Consider this problem: A system contains 50 running processes all with equal priority. However, the system's memory can only hold 10 processes in memory simultaneously. Therefore, there will always be 40 processes swapped out written on virtual memory on the hard disk. The time taken to swap out and swap in a process is 50 ms respectively. With straightforward Round robin scheduling, every time a context switch occurs, a process would need to be swapped in (because only the 10 least recently used processes are swapped in). Choosing randomly among the processes would diminish the probability to 80% (40/50). If that occurs, then obviously a process also need to be swapped out. Swapping in and out of is costly, and the scheduler would waste much of its time doing unneeded swaps. That is where two level scheduling enters the picture. It uses two different schedulers, one lower level scheduler which can only select among those processes in memory to run. That scheduler could be a Round robin scheduler. The other scheduler is the higher level scheduler whose only concern is to swap in and swap out processes from memory. It does its scheduling much less often than the lower level scheduler since swapping takes so much time. Thus, the higher level scheduler selects among those processes in memory that have run for a long time and swaps them out. They are replaced with processes on disk that have not run for a long time. Exactly how it selects processes is up to the implementation of the higher level scheduler. A compromise has to be made involving the following variables:
Жауап беру уақыты: Процесс тым ұзақ уақытқа алмастырылмауы керек. Әйтпесе, басқа процесс (немесе пайдаланушы) қажетсіз күтуге мәжбүр болады. Егер бұл айнымалы ескерілмесе, ресурстардың жетіспеушілігі туындауы мүмкін және процесс толыққанды аяқталмай қалуы мүмкін. Процестің көлемі: Үлкен процестер кішірек процестерге қарағанда аз алмастырылуы керек, өйткені оларды алмастыруға көбірек уақыт кетеді. Олар үлкен болғандықтан, жадты олармен бөлісетін процестердің саны азаяды. Басымдық: Процестің басымдығы жоғары болған сайын, ол жадыда ұзақ уақыт қалуы керек, сонда ол тезірек аяқталады.
Response time: A process should not be swapped out for too long. Then some other process (or the user) will have to wait needlessly long. If this variable is not considered resource starvation may occur and a process may not complete at all. Size of the process: Larger processes must be subject to fewer swaps than smaller ones because they take longer time to swap. Because they are larger, fewer processes can share the memory with the process. Priority: The higher the priority of the process, the longer it should stay in memory so that it completes faster.