Жадыны басқару. Жадыны бірігіп қолдану.
Бір тапсырмалы жүйелерде негізгі жад екі бөлікке бөлінеді: біреуі 1-бөлім — операциялық жүйе үшін (резиденттік монитор, ядро), ал екіншісі — қазіргі уақытта орындалатын бағдарлама үшін. Көп тапсырмалы жүйелерде жадтың" пайдаланушы " бөлігі бірнеше процестерді орналастыру үшін бөлінуі керек. Бұл бөлу тапсырмасын Операциялық жүйе динамикалық түрде орындайды және жадыны басқару (жад менеджменті) атауымен белгілі.
Әрбір процесс кездейсоқ немесе қасақана басқа процестердің жағымсыз әсерінен қорғалуы керек. Сондықтан басқа процестердің коды оқу немесе жазу үшін берілген процестің жадына рұқсатсыз қол жеткізе алмауы керек. Алайда, қозғалғыштық талабын қанағаттандыру қорғаныс міндетін қиындатады. Бағдарламаның негізгі жадта орналасуын болжау мүмкін болмағандықтан, компиляция кезінде абсолютті мекен-жайларды тексеру мүмкін емес. Сонымен қатар, бағдарламалау тілдерінің көпшілігінде орындау кезінде мекен-жайларды динамикалық есептеу мүмкін (мысалы, мәліметтер құрылымы өрісіндегі массив элементінің немесе көрсеткіштің мекен-жайын есептеу). Сондықтан, бағдарлама жұмыс істеп тұрған кезде, олардың барлығы тек осы процеске бөлінген жадқа ғана көз жеткізу үшін процесс арқылы жасалған барлық жадты тексеру қажет. Бақытымызға орай, кейінірек көріп отырғаныңыздай, қозғалысты қолдау механизмдері қорғаныс пен қолдауды қамтамасыз етеді.
Әдетте, пайдаланушы процесі амалдық жүйенің кез — келген бөлігіне-кодқа да, деректерге де қол жеткізе алмайды. Бір процестің коды мақсатты коды басқа процесте болатын тармақталу пәрменін орындай алмайды. Егер арнайы шаралар қабылданбаса, бір процестің коды басқа процестің деректеріне қол жеткізе алмайды. Процессор мұндай командалардың орындалуын тоқтата алуы керек.
Жадты қорғау талаптары Операциялық жүйе (бағдарламалық жасақтама) деңгейінде емес, процессор (аппараттық құрал) деңгейінде қанағаттандырылуы керек екенін ескеріңіз, өйткені Операциялық жүйе бағдарлама орындайтын барлық жадқа қол жеткізуді болжай алмайды. Мүмкін болса да, ұсынылған қорғаныс бұзушылықтарын іздеудегі әрбір бағдарламаны сканерлеу процессор уақытын пайдалану тұрғысынан тым ысырап болар еді, сондықтан тиісті аппараттық мүмкіндіктер бағдарлама жұмыс істеп тұрған кезде жадқа (деректерге немесе кодқа) қол жеткізуге болатындығын анықтайтын жалғыз әдіс болып табылады.
Бөлісу
Кез-келген қорғаныс механизмі бірнеше процестердің негізгі жадтың бір аймағына қол жеткізу мүмкіндігін қамтамасыз ету үшін жеткілікті икемділікке ие болуы керек. Мысалы, егер бірнеше процестер бірдей машиналық кодты орындайтын болса, онда әр процестің өз кодын жасамай, сол кодтың бірдей көшірмесімен жұмыс істеуіне мүмкіндік беру тиімді болады. Кейбір тапсырмалар бойынша жұмыс істейтін процестер бірдей деректер құрылымдарына бірлесіп қол жеткізуді қажет етуі мүмкін. Жадты басқару жүйесі осылайша жадты қорғауды әлсіретпей, ортақ жад аймақтарына басқарылатын қол жеткізуді қамтамасыз етуі керек. Кейінірек көретініміздей, қозғалысты қолдау механизмдері жадты ортақ пайдалануды қамтамасыз етеді және қолдайды.
Достарыңызбен бөлісу: |