3…Жалпы алғанда, процесс дегеніміз - компьютердің жедел жадында жұмыс істейтін бағдарлама. Шындығында, бәрі әлдеқайда күрделі. Көп тапсырма жүйесі көптеген бағдарламаларды орындай алады. Әр бағдарлама көптеген процестерді орындай алады (оқыңыз: ішкі бағдарламалар). Сонымен қатар, машинада бір сәтте тек 1 процесс орындалады. Яғни уақыттың бір мезетінде аппараттық ресурстарды (процессор уақыты, жад, енгізу-шығару порты) тек бір ғана процесс қолдана алады. Белгілі бір аппараттық ресурс процеске бөлінген кезекті жоспарлаушы басқарады. Бұл жағдайда бір процестің үзілуі және екінші процестің іске қосылуы (қайта басталуы) кезінде процестің күйі (орындалып жатқан әрекеттер, процестің қай сатысында тоқтатылғандығы) есте сақталып, жад аймағына жазылады. Linux жоспарлаушысы - бұл ядроның көрсетілген функционалдылыққа жауапты бөлігі. Жоспарлаушының міндеттеріне процестердің бір-біріне «кедергі жасамауы» үшін белгілі бір басымдылықтағы жұмыс процестерін қадағалау және бөлу, сондай-ақ бір процестің жад кеңістігі екіншісінің кеңістігімен қиылыспайтындай етіп жад кеңістігін бөлу кіреді.
Linux-тегі барлық жаңа процестер клон (2) және шанышқы (2) жүйелік функцияларын шақыруды қолдана отырып, кейбір қолданыстағы процестерді клондау арқылы пайда болады (формациядан - форкингке дейін). Жаңа (уылдырық шашқан немесе бала) процестің ата-анасымен бірдей ортасы бар, тек процесс идентификаторының нөмірі (PID деп аталатын) әр түрлі болады. Linux-тегі әдеттегі процестің өмірін келесі сызба арқылы көрсетуге болады:
Сіз келесі қадамдарды біртіндеп сипаттай аласыз:
process / bin / bash өзін жүйелік шақырумен клондайды
бұл жаңа PID (процесс идентификаторы) және PPID ата-анасының PID-іне тең клон / bin / bash жасайды
Клон орындалатын файлды көрсететін exec жүйелік шақыруын орындайды және оның кодын орындалатын файлдың кодымен ауыстырады (ата-ана процесі баланың аяқталуын күтеді - күту)
сонымен қатар, егер қандай да бір себептермен бала жұмысын тоқтатса және ата-ана процесі ол туралы сигнал ала алмаса, онда бұл процесс (бала) оккупацияланған ядро құрылымдарын босатпайды және процестің күйі зомбиге айналады. Процесс туралы төменде ...
Жоғарыда айтылғандардан логикалық сұрақ туындауы мүмкін: егер жаңа процесс әрқашан бар процестің көшірмесі болса, онда жүйе процестердің біріншісін қалай қабылдайды?
Жүйедегі бірінші процесс ядро инициалданған кезде басталады. Бұл процесс init деп аталады және PID = 1 болады. Бұл жүйедегі барлық процестердің ата-анасы. Сіз ядроны жүктеу процесі және бастау процесі туралы көбірек біле аласыз.
Linux-те процесс қандай күйде болуы мүмкін?
Кез-келген уақытта іске қосылған әрбір процесс келесі күйлердің бірінде болады (процесс күйі деп те аталады):
Белсенді (R = Running) - процесс орындалу кезегінде, яғни ол осы сәтте жұмыс істейді немесе оған CPU уақытының келесі бөлігін бөлуді күтеді.
«Ұйқы» (S = Ұйқы) - процесс үзілісті күту күйінде болады, яғни ол қандай да бір оқиғаны, сигнал беруді немесе қажетті ресурстардың шығарылуын күтеді.
Үзіліссіз күту күйінде ме (D = Тікелей) - процесс аппараттық құралдан белгілі бір («тікелей») сигнал күтеді және басқа сигналдарға жауап бермейді;
Тоқтатылды (T) - процесс іздеу режимінде (әдетте бұл күй бағдарламаларды жөндеу кезінде пайда болады).
«Zombies» (Z = Zombie) - бұл орындалуы аяқталған, бірақ онымен байланысты ядро құрылымдары қандай да бір себептермен шығарылмаған процесс. Олардың жүйеде пайда болу себептерінің бірі келесі жағдай болуы мүмкін. Әдетте, ата-ана процесі баладан тоқтату туралы сигнал алғаннан кейін процеске қатысты ядро құрылымдарын босатады. Бірақ ата-ана процесі баладан бұрын аяқталатын кездер болады. Ата-анасыз процестер жетім деп аталады. Жетім балаларды шақыру процесі автоматты түрде қабылдайды. Егер ата-ана процесі немесе бастамасы қандай да бір себептермен бала процесінің тоқтатылуы туралы сигнал ала алмаса, онда бала процесі «зомбиге» айналады және Z мәртебесін алады.Зомби процестері процессордың уақытын алмайды (яғни, олардың орындалуы тоқтатылады). , бірақ тиісті ядро құрылымдары шығарылмайды. Былайша айтқанда, бұл «өлі» процестер. Мұндай процестерді өлтіру - жүйелік әкімшінің міндеттерінің бірі. Осы процестердің пайда болуы жүйеде бірдеңе дұрыс еместігін, ал мүмкін ол аппараттық құралдарда дұрыс еместігін көрсететіндігін атап өткім келеді, сондықтан біз memtest және MHDD және тест-тест тапсырамыз. Нұсқа және қисық бағдарлама коды алынып тасталмайды.
Сонымен қатар, Linux-тегі процестер туралы айта отырып, процестердің ерекше түрін ажыратуға болады - жындар. Процестің бұл түрі фондық режимде (Windows-тағы қызметтер сияқты), терминалсыз жұмыс істейді және басқа процестерге арналған тапсырмаларды орындайды. Серверлік жүйелердегі процестердің бұл түрі негізгі болып табылады.Себебі көп жағдайда Linux-тегі демондар бос және кез келген деректердің келуін күтуде, сондықтан олар салыстырмалы түрде сирек қажет, сондықтан оларды үнемі жадта ұстау және жүйелік ресурстарды осыған жұмсау қисынсыз. Демондардың жұмысын ұйымдастыру үшін inetd демоны немесе оның қауіпсіз модификациясы xinetd (eXtended InterNET Daemon немесе кеңейтілген Интернет демоны) ойлап табылды. Inetd (Xinetd) функциясында мыналарды ажыратуға болады:жұмыс істеп тұрған серверлердің (қызметтердің, демондардың) санына шектеу қою
нақты порттардағы байланыстарды бақылау және келіп түскен сұраныстарды өңдеу ACL (қол жетімділікті басқару тізімдері) негізінде қызметтерге қол жетімділікті шектеу
Жүйедегі барлық процестер, ол Linux болсын немесе басқа ОС болсын, бір-бірімен біраз ақпарат алмасады. Осыдан біз сұрақ қоя аламыз, процессаралық алмасу қалай жүреді?
LINUX ОЖ-де бірнеше деңгейге бөлуге болатын процессаралық байланыс құралдары, дәлірек айтсақ, Interprocess Communication (IPC) құралдары бар:жергілікті (процессорға байланған және тек компьютер ішінде болуы мүмкін);
Linux - 90-жылдардың басындағы танымал операциялық жүйе. UNIX үйлесімді ашық бастапқы коды құру мақсатында. Linux құрушысы - Линус Торвальдс. Linux-тің көп бөлігі түпнұсқа болып табылады және жеке меншік құпия кодын қамтымайды.
Linux BSD UNIX, AT&T UNIX, X Windows кітапханасын қолданады. Linux-ті дамытуды Интернет арқылы қосылған әзірлеушілер желісі қолдайды.
Linux диалектілері арасындағы үйлесімділікті қамтамасыз ету үшін Linux таратылымдары стандартталған форматта (RPM) орналасқан.Linux ядросы GNU General Public License шарттарына сәйкес таратылады, оның мәні Linux коды негізінде дамуды коммерциялық мақсатта пайдалану мүмкін емес, ал Linux негізіндегі бағдарламалық жасақтаманы тарату бастапқы кодты қамтуы керек.Linux негізінен серверлік ОЖ ретінде қолданылады. Оны клиенттік ОЖ ретінде пайдалану үлесі өте аз.
Linux - бұл UNIX үйлесімді құралдарының толық жиынтығы бар, толықтай жұмыс істейтін ОЖ. POSIX үйлесімділігін қамтамасыз етеді. Linux API-сі UNIX SVR4-ке сәйкес келеді, бірақ UNIX BSD емес.Linux ядродан, жүйелік кітапханалардан және жүйелік утилиталардан тұрады. Ядро коды артықшылықты режимде орындалады. Жүйелік кітапханалар мен утилиталар қолданушы режимінде жұмыс істейді.
Linux-тағы маңызды жаңалық - бұл динамикалық түрде жүктелген ядро модульдерінің механизмі, бұл ядро модульдерін бөлек құрастыруға, жүктеуге, іске қосуға және түсіруге мүмкіндік береді. Ядролық модуль компоненттері - модульді жүктеуді басқару, драйверлерді тіркеу және қайшылықтарды шешу.
Linux-тегі процестерді басқару үшін әр процесс үшін оның сәйкестігі, қоршаған ортасы мен мәнмәтіні жасалады және қолданылады.Linux-те көп жұмыс режимін қолдау үшін клондық шақыру қолданылады, бұл ата-аналық процестің адрестік кеңістігінде жаңа процесс жасайды.Көптеген операциялық жүйелерден айырмашылығы, Linux-те жоспарлау ядролардың міндеттерін жоспарлауды да қамтиды. Ядродағы синхрондау ядроның бір бөлігінің сыни бөлігін басқа маңызды бөлімдермен үзбеуді талап етеді.
Үзілістерді өңдеу кезінде барлық үзілістер мини-жоспарлағыш көмегімен үзіліс режимі қосылған кезде орындалатын жоғарғы жартыға (рекурсивті үзулер өшірілген қалыпты үзіліс) және төменгі жартыға бөлінеді.Несиелер мен басымдықтар Linux-те процестерді жоспарлау кезінде ескеріледі. ФИФО және айналма жоспарлау сабақтары қолданылады.Linux симметриялық мультипроцессті (SMP) қолдайды.
4…Негізгі терминдер
ELF (Орындалатын және байланыстыратын формат) - бұл файлдың бөлімдер жиынтығы ретінде ұсынылуына негізделген, UNIX және Linux жүйелеріндегі танымал орындалатын кодтық файл форматы.
Ext2FS - бұл кішігірім блок өлшемдері мен көп деңгейлі жанама мәліметтерге негізделген Linux файлдық жүйесі.
Linux proc - бұл енгізу-шығару сұраныстарын жасау кезінде деректерді нақты сақтаудың және есептеудің болмауына негізделген Linux жүйесіндегі файлдық жүйе.
TTY - UNIX және Linux жүйелеріндегі терминалды құрылғыларға арналған дәстүрлі термин.
Құбыр - бұл UNIX пен Linux-тегі процестердің өзара әрекеттесу механизмі, бұл бала процесіне ата-аналық процестен байланыс арнасын мұрагерлікке алуға мүмкіндік береді.
Partner heap (buddy-heap) - бұл жад блоктарын бөлуге және іргелес бос блоктарды біріктіруге негізделген Linux-та физикалық жадыны бөлу әдісі.
Қосылатын аутентификация модульдері (PAM) - Linux-те қолданылатын динамикалық түрде қосылатын пайдаланушының аутентификация модульдер. Қысқаша мазмұны
Linux-тің физикалық жадыны бөлу жүйесі серіктес үйінді механизмін қолданады, ол бос блоктарды бөліп, жақын жадының бос блоктарын біріктіреді.
Linux-тегі виртуалды жады әр процестің парақ кестесіне және жадтың бір-бірімен қабаттаспайтын шектес аймақтардың жиынтығы ретіндегі логикалық көрінісіне негізделген.Жаңа процесс құрылған кезде оның мекен-жайы бос болады және бағдарламалар жүктелген кезде виртуалды жадтың аймақтарымен толтырылады. Шанышқы жүйелік қоңырау ата-аналық процестің барлық мекенжай кеңістігін бала процесіне көшіреді.Беттерді басқару үшін своп және своп механизмі қолданылады.Linux ядросы өзінің қажеттіліктері үшін әр процесс үшін виртуалды жадының бір аймағын, атап айтқанда статикалық жадыны бөлу үшін сақтайды.Linux a.out және ELF файлдарының орындалатын форматтарын қолдайды; статикалық және динамикалық байланыстыру.
Linux виртуалды файлдық жүйені (VFS) іске асырады, ол әртүрлі файлдық жүйелер арасындағы айырмашылықты жасырады. Linux-тің негізгі файл жүйесі Ext2fs болып табылады, ол блоктың кіші өлшемдеріне, блоктық нүктелік кескінге және көп деңгейлі жанамаға негізделген. Басқа файлдық жүйе Linux proc деректерді нақты сақтамайды, бірақ оларды енгізу-шығару бойынша сұраныстар кезінде жасайды.
Linux енгізу-шығару жүйесі беттің кэшін және буферлік кэшті қолданады. Құрылғылар үш классқа бөлінеді - блок, символ және желі. Блоктық құрылғылар үшін блоктық буферлік кэш қолданылады. Таңбалық құрылғылар үшін нақты енгізу-шығару операцияларына қолдау көрсетіледі және мәліметтер блоктарына кездейсоқ қол жетімділікке қолдау көрсетілмейді. Терминал драйверлері арнайы ұйымдастырылған, олар үшін ядро стандартты интерфейсті қолдайды.UNIX-тегідей, Linux сигналдарды қолдана отырып, пайдаланушы процестері үшін оқиғалық сигнализацияны жүзеге асырады. Ядро процестері сигналдарды қолданбайды және жүйенің жоспарлағыш құрылымдарының көмегімен өзара әрекеттеседі. Процестер арасындағы байланыс үшін құбыр (құбыр) және ортақ жадтағы ортақ объектілер қолданылады.Linux желілік жүйесі UNIX-UNIX желілік байланыс протоколдарын да, UNIX-тен тыс OS хаттамаларын да қолдайды. Linux желілік жүйесін енгізу үш деңгейлі абстракциядан тұрады: ұяшық интерфейсі, протокол драйверлері және желілік құрылғылар драйверлері. Интернет протоколдарының жиынтығына қолдау көрсетіледі. Пакеттік маршруттау желінің кез-келген бөлігінде қамтамасыз етілген. Маршруттау хаттамасының жоғарғы деңгейінде UDP, TCP, ICMP протоколдарына қолдау көрсетіледі.
Linux қауіпсіздігі динамикалық қосылатын аутентификация модульдеріне негізделген. Қатынауды басқару, UNIX-тегідей, бірегей пайдаланушы мен топ идентификаторлары мен қауіпсіздік маскаларын қолдану арқылы жүзеге асырылады. Жүзеге асырылған POSIX үйлесімділігі - бірнеше рет босату және процестің интерфейсін алу мүмкіндігі. Сонымен қатар, кез-келген сервер процесіне файлға қол жетімділікті таңдамалы түрде тасымалдау мүмкіндігі жүзеге асырылады.
Linux-ті дамыту және қолдану бағыттары: Linux ядросына негізделген жаңа ОЖ (мысалы, Google Android мобильді құрылғыларына арналған ОЖ) және Linux-ке негізделген оқыту (Alt Linux Linux студенттер үшін ОЖ).
UNIX, кейінірек Linux үшін классикалық спулер lpd болды. Lpd-дің алғашқы нұсқаларынан бастап икемді және конфигурациялауға ыңғайлы нәрсе жасауға бірнеше рет әрекет жасалды. ALT Linux 2.4 классикалық (және, сәйкесінше, қарапайым және жеңіл) lpd-ден басқа, CUPS (Common Unix Printing System) алдыңғы қатарлы қуатты басып шығару жүйесін де қамтиды. Бұл басып шығару жүйесі біртіндеп көбірек жанкүйерлерге ие болып, спулерлер арасында жаңа стандартқа айналды.
Достарыңызбен бөлісу: |