ФАЙЛДЫ ЕНГІЗУ - ШЫҒАРУ


Slide 1

Файлды енгізу-шығару

Slide 2

Iseek( ) көмегімен орналастыру

Әдетте, енгізу-шығару операциялары файлда сызықтық түрде жүреді және барлық позициялау оқу және жазу операциялары нәтижесінде пайда болатын файл позициясының анық емес жаңартуларына дейін азаяды. Алайда, кейбір қосымшалар деректерге сызықтық емес, еркін қол жеткізу арқылы файл секіреді. Iseek () жүйелік қоңырауы белгілі бір файл дескрипторының файл позициясының берілген мәніне орнатуға арналған. Бұл шақыру файл позициясын жаңартудан басқа ешқандай әрекеттерді орындамайды, атап айтқанда енгізу-шығаруға байланысты әрекеттерді бастамайды.

#include

#include

off_t lseek (int fd, off_t pos, int origin) ;

Iseek () шақыруының әрекеті келесі мәндердің бірі бола алатын, origin шығу аргументіне байланысты.

Slide 3

SEEK_CUR - fd дескрипторының ағымдағы файлдық орны оның ағымдағы мәніне және pos позициясына орнатылады. Соңғысы теріс, оң немесе нөлге тең болуы мүмкін. Егер pos нөлге тең болса, онда файл позициясының ағымдағы мәні қайтарылады.

SEEK_END - fd дескрипторының ағымдағы позициясы теріс, оң немесе нөлге тең болатын ағымдағы файл ұзындығына және pos-қа орнатылған. Егер pos нөлге тең болса, онда ығысу файлдың соңына орнатылады.

SEEK_SET - fd дескрипторының ағымдық орны позицияға орнатылған. Егер pos нөлге тең болса, онда ығысу файлдың басына орнатылады.

Егер сәтті болса, бұл шақыру жаңа файл позициясына қайтарады. Қате болса, ол -1 қайтарады және errno-ға сәйкес мән береді.

Қазіргі уақытта lseek () көбінесе файлдың басына, файлдың соңына қатысты іздеу үшін немесе файл дескрипторының ағымдағы орнын анықтау үшін қолданылады.

Slide 4

Файлдарды қысқарту

Linux-та файл ұзындығын қысқарту үшін екі жүйелік шақыруды қамтамасыз етеді. Екеуі де әр түрлі POSIX стандарттарымен анықталады және талап етіледі. Бұл шақырулар:

#include

#include

int ftruncate (int fd, off_t len) ;

және

#include

#include

int truncate (const char *path, off_t len) ;

Slide 5

Екі жүйелік шақырулар көрсетілген файлды len-де белгіленген ұзындыққа қысқартады. Ftruncate () жүйелік шақыруы жазу үшін ашылуы керек fd файл дескрипторында жұмыс істейді. Truncate () жүйелік шақыруы жолда көрсетілген файл атында жұмыс істейді және бұл файл жазуға болатын болуы керек. Екі қоңырау да сәтті болған кезде 0 мәнін қайтарады. Қате кезінде екі қоңырау -1 қайтарады және errno мәнін тиісті мәнге қояды.

Әдетте, бұл жүйелік қоңыраулар файлды ағымдық ұзындықтан азырақ қысқарту үшін қолданылады. Егер шақыру сәтті болса, файл ұзындығы len болады.

Slide 6

Мультиплексті енгізу-шығару

Мультиплекстелген енгізу-шығару қосымшаларға бірнеше файл дескрипторларын параллель құлыптауға және олардың кез келгені оқуға немесе жазуға дайын болғаннан кейін хабарлама алуға мүмкіндік береді, сондықтан блок-мультиплекс енгізу-шығару қосымшаның нақты өзегі болып шығады.

Linux үш мультиплекстелген енгізу-шығару опцияларының үш түрін ұсынады. Бұл таңдау (select) , сауалнама (poll) және кеңейтілген сауалнама (epoll) арналған интерфейстер. Біз мұнда алғашқы екі шешімді қарастырамыз. Соңғы нұсқа - Linux-ке арналған жетілдірілген опция.

Slide 7

select()

Select () жүйелік шақыруы синхронды мультиплекстелген енгізу-шығаруды енгізу механизмін ұсынады:

#include

int select (int n,

fd_set *readfds,

fd_set *writefds,

fd_set *exceptfds,

struct timeval *timeout) ;

Select () -ке шақыру көрсетілген файл дескрипторлары енгізу-шығаруды орындауға дайын болғанша немесе қосымша кідіріс аралығы аяқталғанша бұғатталады.

Бірінші параметр n - бұл барлық топтардағы файл дескрипторының ең жоғарғы мәні

Slide 8

Жүйелік шақыру poll()

Poll () -бұл System V-де мультиплексті енгізу-шығаруды қамтамасыз ететін шешім. Ол select () - тегі кейбір кемшіліктерді өтейді, дегенмен select () әлі де жиі қолданылады.

#include

int poll (struct pollfd *fds, nfds_t nfds, int timeout) ;

Бит маскаларына негізделген дескрипторлардың үш тобы бар тиімсіз әдісті қолданатын select () шақыруынан айырмашылығы, poll() файл дескрипторлары көрсететін nfds pollfd құрылымдарының бірыңғай массивімен жұмыс істейді.

Мұндай құрылым келесідей анықталады:

#include

struct pollfd {

int fd; /* файлдық дескриптор */

short events; /* бақыланатын оқиғаларды сұрау*/

short revents; /* қайтарылған оқиғалар */

};

Slide 9

poll() мен select() салыстыру

Жүйелік шақырулар poll() және select() шамамен бірдей тапсырманы орындайды, бірақ бірнеше себептерге байланысты poll () select () қарағанда ыңғайлы.

poll () пайдаланушыдан "файл дескрипторының максималды нөмірі плюс бір" мәнін есептеуді және параметр ретінде жіберуді талап етпейді.

poll() үлкен нөмірлері бар файл дескрипторларымен тиімдірек жұмыс істейді. Select() көмегімен 900 мәні бар бір ғана файл дескрипторын қадағалаймыз делік. Бұл жағдайда ядро 900-ге дейін берілген топтардың әрқайсысында әр битті тексеруі керек еді.

Select () - пен жұмыс істеу кезінде файл дескрипторларының топтары мән қайтарылғаннан кейін қайта құрылады, сондықтан әрбір келесі қоңырау оларды қайта іске қосуы керек. Жүйелік қоңырау poll () кірісті (events өрісі) және шығуды (revents өрісі) ажыратады, бұл массивті өзгеріссіз қайта пайдалануға мүмкіндік береді.

Slide 10

Ішкі ядро ұйымдастырылуы

Бұл бөлімде біз Linux ядросының I / O-ны қалай жүзеге асыратынын қарастырамыз. Бұл жағдайда бізді ядроның үш негізгі ішкі жүйесі қызықтырады: виртуалды файлдық жүйе (VFS), страницалық кэш және кейінге қалдырылған жазба. Бұл ішкі жүйелер біртұтас, тиімді және оңтайлы I / O қамтамасыз етеді.

Slide 11

Виртуалды файлдық жүйе

Кейде виртуалды файл қосқышы деп те аталатын виртуалды файлдық жүйе - бұл Linux ядросына файлдық жүйенің функцияларын шақыруға және файлдық жүйенің деректерін білместен, тіпті білуге тырыспай - ақ басқаруға мүмкіндік беретін абстракция механизмі.

VPS қолданудың артықшылықтары көп. Кез-келген файлдық жүйеден, кез-келген медиадан ақпаратты оқу үшін жалғыз жүйелік қоңырау жеткілікті. Жеке утилита кез-келген файлдық жүйеден кез-келген басқа жүйеге ақпаратты көшіре алады. Барлық файлдық жүйелер бірдей тұжырымдамаларды, интерфейстерді және жүйелік қоңырауларды қолдайды. Барлығы жай жұмыс істейді және жақсы жұмыс істейді.,


Ұқсас жұмыстар
Екілік файлдар
СИ ОРТАСЫНДА ФАЙЛДАРМЕН ЖҰМЫС ЖАСАУ
Файлдардың типтері
Мәтіндік құжатты форматтау
Меню жолы Тақырып жолы
Компьютерлік ақпаратты қорғау
Word редакторын тағайындау, іске қосу және онымен жұмыс істеуді аяқтау
Norton Commander
Си тілінде құрылған программаның құрылымы
Экономикалық ақпаратты өңдеу. Компьютердің программалық жабдықтар құрамы туралы мәліметтер
Пәндер



Реферат Курстық жұмыс Диплом Материал Диссертация Практика Презентация Сабақ жоспары Мақал-мәтелдер 1‑10 бет 11‑20 бет 21‑30 бет 31‑60 бет 61+ бет Негізгі Бет саны Қосымша Іздеу Ештеңе табылмады :( Соңғы қаралған жұмыстар Қаралған жұмыстар табылмады Тапсырыс Антиплагиат Қаралған жұмыстар kz