Асинхрон файлын оролтын гаралт c. Нэр томьёо: Өгөгдлийн оролт гаралтын синхрон ба асинхрон. Жишээ нь: Хүлээх цаг хэмжигч ашиглах

Хэрэглээний программист системийн программууд төхөөрөмжийн бүртгэлтэй хэрхэн ажилладаг талаар бодох шаардлагагүй. Систем нь төхөөрөмжүүдтэй ажиллах доод түвшний нарийн ширийн зүйлийг програмуудаас нуудаг. Гэсэн хэдий ч санал асуулга болон тасалдлаар оролт гаралтыг зохион байгуулах хоорондын ялгаа нь системийн функцүүдийн түвшинд синхрон ба асинхрон оролт гаралтын функцүүдийн хэлбэрээр тусгагдсан байдаг.

Функцийг гүйцэтгэх синхрон I/O оролт гаралтын үйлдлийг эхлүүлж, энэ үйлдлийг дуусгахыг хүлээх хэрэгтэй. Зөвхөн I/O дууссаны дараа функц нь дуудаж буй програм руу хяналтыг буцаана.

Синхрон оролт гаралт нь програмистуудын төхөөрөмжтэй ажиллах хамгийн танил арга юм. Стандарт програмчлалын хэлний оролт/гаралтын горимууд ийм байдлаар ажилладаг.

Функцийг дуудаж байна асинхрон I/O зөвхөн холбогдох үйлдлийг эхлүүлнэ гэсэн үг. Үүний дараа функц нь ажиллагааг дуусгахыг хүлээлгүйгээр дуудаж буй програм руу шууд хяналтыг буцаана.

Жишээлбэл, асинхрон өгөгдөл оруулахыг авч үзье. Хөтөлбөр нь оролт нь дууссан гэдэгт итгэлтэй байх хүртэл өгөгдөлд хандах боломжгүй нь тодорхой байна. Гэхдээ энэ програм одоохондоо зүгээр суухын оронд өөр ажил хийх бүрэн боломжтой.

Эрт орой хэзээ нэгэн цагт програм нь оруулсан өгөгдөлтэй ажиллаж эхлэх ёстой, гэхдээ эхлээд асинхрон ажиллагаа аль хэдийн дууссан эсэхийг шалгаарай. Энэ зорилгоор янз бүрийн үйлдлийн системүүд нь гурван бүлэгт хуваагдаж болох хэрэгслүүдээр хангадаг.

· Үйл ажиллагаа дуусахыг хүлээж байна. Энэ нь "синхрон үйлдлийн хоёр дахь хагас" шиг юм. Програм нь эхлээд үйлдлийг эхлүүлж, дараа нь зарим нэмэлт үйлдлүүдийг гүйцэтгэсэн бөгөөд одоо синхрон оролт/гаралтын адил үйлдлийг дуусгахыг хүлээж байна.

· Үйл ажиллагаа дууссан эсэхийг шалгах. Энэ тохиолдолд програм нь хүлээхгүй бөгөөд зөвхөн асинхрон үйлдлийн статусыг шалгана. Хэрэв оролт/гаралт хараахан дуусаагүй бол програм хэсэг хугацаанд алхах боломжтой болно.

· Дуусгах журмын даалгавар. Энэ тохиолдолд асинхрон үйлдлийг эхлүүлэх үед хэрэглэгчийн програм нь үйл ажиллагаа дууссаны дараа систем дуудах ёстой хэрэглэгчийн процедур эсвэл функцийн хаягийг системд зааж өгдөг. Програм нь өөрөө оролт/гаралтын явцыг сонирхохоо больсон тул систем нь зөв цагт нь утсаар холбогдож үүнийг сануулах болно. заасан функц. Энэ арга нь хамгийн уян хатан арга юм, учир нь хэрэглэгч дуусгах процедурт ямар ч үйлдлийг хийх боломжтой.

Windows програм дээр асинхрон үйлдлийг гүйцэтгэх гурван арга байдаг. UNIX-д асинхрон оролт гаралтын функцууд байдаггүй боловч нэмэлт процессыг ажиллуулснаар ижил асинхрон нөлөөг өөр аргаар хийж болно.

Асинхрон оролт гаралт нь зарим тохиолдолд гүйцэтгэлийг сайжруулж, нэмэлт үйлчилгээ үзүүлдэг функциональ байдал. Ийм зүйлгүйгээр хамгийн энгийн хэлбэрасинхрон оролт, жишээ нь "хүлээлгүйгээр гар оруулах", олон Компьютер тоглоомболон симуляторууд. Үүний зэрэгцээ асинхрон үйлдлүүдийг ашигладаг програмын логик нь синхрон үйлдлүүдтэй харьцуулахад илүү төвөгтэй байдаг.

Дээр дурдсан синхрон/асинхрон үйлдлүүд болон өмнөх догол мөрөнд авч үзсэн оролт/гаралтыг зохион байгуулах аргуудын хооронд ямар холбоо хамааралтай вэ? Энэ асуултад өөрөө хариул.

Олон урсгалыг ашиглан асинхрон оролт

Давхардсан болон өргөтгөсөн I/O нь I/O-г нэг урсгал дотор асинхроноор гүйцэтгэх боломжийг олгодог ч үйлдлийн систем нь энэ функцийг дэмжихийн тулд өөрийн урсгалуудыг үүсгэдэг. Нэг урсгалтай систем дээр асинхрон үйлдлүүдийг гүйцэтгэх хязгаарлагдмал хэлбэрийг дэмжихийн тулд энэ төрлийн аргуудыг нэг хэлбэрээр эсвэл өөр хэлбэрээр ашигладаг.

Гэсэн хэдий ч Windows нь олон урсгалтай холболтыг дэмждэг тул олон бие даасан урсгал дээр синхрон оролт гаралтын үйлдлүүдийг хийснээр ижил үр дүнд хүрэх боломжтой. Эдгээр боломжуудыг өмнө нь олон урсгалтай серверүүд болон grepMT програм ашиглан харуулсан (Бүлэг 7). Нэмж дурдахад, thread нь асинхрон оролт гаралтын үйлдлүүдийг гүйцэтгэх концепцын хувьд нийцтэй бөгөөд магадгүй илүү хялбар арга юм. Програм 14.1 ба 14.2-д ашигласан аргуудын өөр нэг хувилбар нь урсгал бүрд өөрийн файлын тодорхойлогчийг өгөх бөгөөд ингэснээр урсгал бүр дөрөв дэх бичлэг бүрийг синхроноор боловсруулах боломжтой болно.

Threads ашиглах ийм аргыг номонд өгөгдөөгүй, харин вэб сайтад байрлуулсан материалд багтаасан atouMT программд харуулсан болно. atouMT програм нь зөвхөн хэн нэгний хяналтан дор ажиллах чадвартай биш юм Windows хувилбарууд, гэхдээ асинхрон оролт гаралтын хоёр хувилбарын аль алинаас нь илүү хялбар байдаг, учир нь энэ тохиолдолд нөөцийн ашиглалтыг бүртгэх нь тийм ч төвөгтэй биш юм. Thread бүр өөрийн буферийг өөрийн стек дээрээ хадгалж, синхрон унших, хөрвүүлэх, бичих үйлдлүүдийн дарааллаар дамждаг. Үүний зэрэгцээ хөтөлбөрийн гүйцэтгэл нэлээд өндөр түвшинд хэвээр байна.

Анхаарна уу

Вэб сайтад байрлах atouMT.c программ нь нэг файлд нэгэн зэрэг нэвтрэх боломжийг олгох үед таныг хүлээж болох хэд хэдэн болзошгүй бэрхшээлүүдийн талаархи тайлбарыг агуулдаг. Ялангуяа бүх файлын бариулыг DuplicateHandle функцээс илүү CreateHandle функцийг ашиглан үүсгэх ёстой.

Би хувьдаа асинхрон оролт гаралтаас илүү олон урсгалтай файл боловсруулалтыг ашиглахыг илүүд үздэг. Threads программчлахад хялбар бөгөөд ихэнх тохиолдолд илүү сайн гүйцэтгэлийг хангадаг.

Энэхүү ерөнхий дүрэмд хоёр үл хамаарах зүйл бий. Эдгээрийн эхнийх нь, энэ бүлгийн эхэнд үзүүлсэн шиг, зөвхөн нэг онцгой үйлдэл байж болох нөхцөл байдалд хамаатай бөгөөд файлын тодорхойлогчийг синхрончлолын зорилгоор ашиглаж болно. Хоёр дахь, илүү чухал үл хамаарах зүйл нь асинхрон оролт гаралтын портуудын хувьд тохиолддог бөгөөд үүнийг энэ бүлгийн төгсгөлд авч үзэх болно.

Эмхэтгэгч бүтээцгээе номноос! Crenshaw Jack бичсэн

Пролог дахь програмчлал номноос зохиолч Клоксин У.

C# 2005 програмчлалын хэл ба .NET 2.0 платформ номноос. Троэлсен Эндрю бичсэн

Informix мэдээллийн сангийн администраторын гарын авлага номноос. зохиолч Кустов Виктор

Microsoft Visual C++ болон MFC номноос. Windows 95 болон Windows NT-д зориулсан програмчлал зохиолч Фролов Александр Вячеславович

2.2.3.2 Асинхрон оролт гаралт Оролт/гаралтын ажиллагааг хурдасгахын тулд сервер өөрийн Асинхрон оролт/гаралтын (AIO) багц эсвэл хэрэв боломжтой бол цөмийн асинхрон оролт/гаралтын (KAIO) багцыг ашигладаг. Хэрэглэгчийн оролт/гаралтын хүсэлтийг асинхрон байдлаар боловсруулдаг.

Объект хандалтат програмчлалын үндэс номноос Майер Бертран

I/O Та бүхний мэдэж байгаачлан операторууд<< и >> ээлж хийх тоон утгатодорхой тооны битээр зүүн ба баруун. Манай номонд орсон программууд ч мөн эдгээр хэллэгийг ашиглан гарнаас мэдээлэл оруулан дэлгэцэн дээр гаргана.Хэрэв зүүн талд

Системийн програмчлал номноос Windows орчин Харт Жонсон М

Оролт ба гаралт KERNEL номын сангийн хоёр анги нь үндсэн оролт, гаралтын хэрэгслүүдээр хангадаг: FILE ба STD_FILES. FILE төрлийн f объект дээр тодорхойлогдсон үйлдлүүдийн дунд дараахь зүйлс орно: f.make ("нэр") үүсгэх -- f-г нэртэй файлтай холбоно. нэр. f.open_write -- f бичих бол нээх f.нээлттэй_унших -- f-г нээнэ

Ruby дахь програмчлал номноос [Хэлний үзэл суртал, онол, хэрэглээний практик] Фултон Хал

БҮЛЭГ 14 Асинхрон оролт/гаралт ба дуусгах портуудын оролт/гаралтын үйлдлүүд нь бусад төрлийн боловсруулалтаас угаасаа удаан байдаг. Энэ удаашралын шалтгаан нь дараах хүчин зүйлүүд юм: Хайлт хийхэд зарцуулсан хугацаанаас болж саатсан

Хиймэл оюун ухаанд зориулсан Пролог дахь програмчлал номноос зохиолч Братко Иван

10.1.7. Энгийн I/O Та цөмийн модулийн оролт/гаралтын зарим аргуудыг аль хэдийн мэддэг болсон; Бид тэдэн рүү залгагчийг заалгүйгээр залгасан. Үүнд gets, puts функцууд, мөн print, printf, p (сүүлийнх нь бидний ойлгож болохуйц байдлаар хэвлэхийн тулд объектын шалгах аргыг дууддаг) багтана.

Хувийн компьютерт зориулсан C програмчлалын хэл номноос зохиолч Бочков С.О.

Линукс програмчлалын жишээ бүхий номноос зохиолч Роббинс Арнольд

Бүлэг 6 Оролт ба гаралт Энэ бүлэгт бид файл руу өгөгдөл бичих болон файлаас өгөгдлийг уншихад зориулагдсан зарим байгууламжуудыг авч үзэх болно. Ийм хэрэгслийг програмын өгөгдлийн объектуудыг гадаад дүрслэлийн хүссэн хэлбэрийг олж авахын тулд форматлахад ашиглаж болно.

Java програмчлалын үндэс номноос зохиолч Сухов С.А.

Оролт ба гаралт Стандарт С номын сангийн оролт гаралтын функцууд нь файлуудаас өгөгдлийг унших эсвэл оролтын төхөөрөмжөөс (гар гэх мэт) хүлээн авах, файл руу өгөгдөл бичих эсвэл гаргах боломжийг олгодог. янз бүрийн төхөөрөмж(жишээ нь, хэвлэгч рүү).Оролт/гаралтын функцууд

QT 4 номноос: C++ хэл дээрх GUI програмчлал Бланшетт Жасмин

4.4. Оролт ба гаралт Линуксийн бүх I/O үйлдлүүд нь файлын тодорхойлогчоор дамжин хийгддэг. Энэ хэсэгт файлын тодорхойлогчдыг танилцуулж, тэдгээрийг хэрхэн олж авах, чөлөөлөх, тэдгээрийг хэрхэн гүйцэтгэх талаар тайлбарлана.

The Ideal Programmer номноос. Хэрхэн програм хангамж хөгжүүлэлтийн мэргэжилтэн болох вэ зохиолч Мартин Роберт С.

Зохиогчийн номноос

Бүлэг 12: Оролтын гаралтын бараг бүх програм файл унших, бичих эсвэл бусад оролт гаралтын үйлдлүүдийг гүйцэтгэхийг шаарддаг. Qt нь унших, бичих чадвартай "төхөөрөмжүүдийн" хүчирхэг хийсвэр QIODevice-ээр маш сайн I/O дэмжлэг үзүүлдэг.

Зохиогчийн номноос

Оролт ба гаралт Миний үр дүнг зохих “оролт”-оор хангах нь маш чухал гэж би боддог. Бичих програмын код- бүтээлч ажил. Бүтээлч сорилттой тулгарах үед миний бүтээлч байдал ихэвчлэн хамгийн сайн байдаг.

Орох/гаралтын ажиллагааг гүйцэтгэх хүсэлт гаргасан даалгаврыг удирдагч захиалсан ажиллагааг дуусгахыг хүлээж байгаа байдалд байрлуулна. Удирдагч ажил дууссан гэсэн мессежийг дуусгах хэсгээс хүлээн авснаар даалгаврыг бэлэн байдалд оруулан ажлаа үргэлжлүүлнэ. Энэ нөхцөл байдал синхрон оролт / гаралттай тохирч байна. Синхрон оролт гаралт нь ихэнх үйлдлийн системүүдийн стандарт юм. Хэрэглээний гүйцэтгэлийн хурдыг нэмэгдүүлэхийн тулд шаардлагатай үед асинхрон I/O ашиглахыг санал болгосон.

Асинхрон гаралтын хамгийн энгийн хувилбар нь гадаад төхөөрөмж рүү буфер гэж нэрлэгддэг гаралт бөгөөд програмын өгөгдлийг оролт гаралтын төхөөрөмж рүү шууд дамжуулдаггүй, харин системийн тусгай буферт шилжүүлдэг. Энэ тохиолдолд логикийн хувьд програмын гаралтын ажиллагааг нэн даруй дууссан гэж үздэг бөгөөд даалгавар нь төхөөрөмж рүү өгөгдөл дамжуулах бодит үйл явц дуусахыг хүлээхгүй байж магадгүй юм. Үйл явц бодит гаралтСистемийн буферийн өгөгдлийг оролт гаралтын удирдагч зохицуулдаг. Мэдээжийн хэрэг, I/O удирдагчийн заавраар системийн тусгай процесс нь системийн санах ойн хэсгээс буферийг хуваарилах үүрэгтэй. Тиймээс, авч үзсэн тохиолдолд, хэрэв нэгдүгээрт, оролт/гаралтын хүсэлт нь өгөгдлийг буферлэх шаардлагатайг зааж өгсөн бол, хоёрдугаарт, оролт/гаралтын төхөөрөмж ийм асинхрон үйлдлийг зөвшөөрч, үүнийг UCB-д тэмдэглэсэн тохиолдолд гаралт нь асинхрон байх болно. Та мөн асинхрон өгөгдөл оруулах ажлыг зохион байгуулж болно. Гэсэн хэдий ч үүнийг хийхийн тулд төхөөрөмжөөс уншсан өгөгдлийг түр хадгалах санах ойн талбайг хуваарилах, хуваарилагдсан буферийг үйлдлийг захиалсан даалгавартай холбохоос гадна оролт гаралтын хүсэлтийг хуваах шаардлагатай. үйл ажиллагаа нь хоёр хэсэгт хуваагдана (хоёр хүсэлт). Эхний хүсэлт нь синхрон I/O-той адил өгөгдлийг унших үйлдлийг зааж өгдөг. Гэсэн хэдий ч хүсэлтийн төрөл (код) нь өөр бөгөөд хүсэлт нь дор хаяж нэг нэмэлт параметрийг зааж өгдөг - хүсэлтийн хариуд даалгавар хүлээн авдаг системийн объектын нэр (код) бөгөөд хуваарилагдсан буферийг тодорхойлдог. Буферийн нэрийг хүлээн авсны дараа (бид энэ системийн объектыг ердийн байдлаар нэрлэх болно, гэхдээ өөр өөр үйлдлийн системүүд үүнийг тодорхойлохын тулд өөр нэр томъёог ашигладаг, жишээлбэл анги) даалгавар үргэлжлүүлэн ажиллаж байна. Асинхрон өгөгдөл оруулах хүсэлтийн үр дүнд оролт/гаралтын удирдагч даалгаврыг оролт/гаралтын ажиллагааг дуусгахыг хүлээх төлөвт оруулаагүй, харин ажиллаж байгаа буюу гүйцэтгэхэд бэлэн байдал. Хэсэг хугацааны дараа программист тодорхойлсон шаардлагатай кодыг гүйцэтгэсний дараа даалгавар нь I/O ажиллагааг дуусгах хоёр дахь хүсэлтийг гаргадаг. Мэдээжийн хэрэг, өөр кодтой (эсвэл хүсэлтийн нэр) ижил төхөөрөмжтэй хоёр дахь хүсэлтэд даалгавар нь системийн объектын нэрийг (асинхрон өгөгдөл оруулах буфер) зааж өгөх бөгөөд хэрэв өгөгдөл унших ажиллагаа амжилттай бол, нэн даруй системийн буферээс хүлээн авдаг. Хэрэв өгөгдөл нь гадаад төхөөрөмжөөс системийн буфер руу бүрэн шилжиж амжаагүй бол оролт гаралтын удирдагч даалгаврыг оролт/гаралтын ажиллагааг дуусгахыг хүлээх төлөв рүү шилжүүлж, дараа нь бүх зүйл ердийн синхрон өгөгдөл оруулахтай адил болно.

Ихэнхдээ асинхрон оролт гаралтыг ихэнх олон программчлагдсан үйлдлийн системүүдээр хангадаг, ялангуяа үйлдлийн систем нь урсгал механизмыг ашиглан олон үйлдэл хийхийг дэмждэг бол. Гэсэн хэдий ч, хэрэв тодорхой асинхрон оролт/гаралт байхгүй бол та өгөгдлийн гаралтын бие даасан хэлхээг зохион байгуулснаар санаагаа өөрөө хэрэгжүүлж болно.

I/O техник хангамжийг цуглуулга гэж үзэж болно техник хангамжийн процессорууд, тэдгээр нь бие биенээсээ, мөн төв процессортой (процессор) харьцангуй зэрэгцээ ажиллах чадвартай. Ийм "процессорууд" гэж нэрлэгддэг зүйл дээр гадаад үйл явц.Жишээлбэл, гадаад төхөөрөмжийн хувьд (оролт/гаралтын төхөөрөмж) гадаад процесс нь хэвлэх толгойг хөрвүүлэх, цаасыг нэг байрлалд урагшлуулах, бэхний өнгийг өөрчлөх эсвэл зарим тэмдэгтүүдийг хэвлэх үйлдлүүдийн багц байж болно. Оролт/гаралтын техник хангамжийг ашигладаг гадаад процессууд нь бие биетэйгээ болон төв процессор дээр ажилладаг энгийн "програм хангамж" процессуудтай харилцан үйлчилдэг. Гадны үйл явцын гүйцэтгэлийн хурд нь ердийнхөөс (заримдаа том ба түүнээс дээш дарааллаар) мэдэгдэхүйц ялгаатай байх нь чухал баримт юм. дотоод") үйл явц. Тэдний хэвийн ажиллагааг хангахын тулд гадаад болон дотоод процессуудыг синхрончлох ёстой. Дотоод болон гадаад процессуудын хоорондох хурдны хүчтэй үл нийцлийн үр нөлөөг арилгахын тулд дээр дурдсан буфержуулалтыг ашигладаг. Тиймээс бид зэрэгцээ харилцан үйлчлэх үйл явцын системийн тухай ярьж болно (6-р бүлгийг үз).

Буфер нь дотоод (програм хангамж) болон гадаад процессуудтай холбоотой чухал нөөц бөгөөд зэрэгцээ хөгжүүлэлтийн явцад мэдээллийн харилцан үйлчлэлцдэг. Буфер(ууд)-аар дамжуулан өгөгдлийг аль нэг процессоос хаяглах боломжтой гадаад процесс руу илгээдэг (гадаад төхөөрөмж рүү өгөгдөл гаргах ажиллагаа), эсвэл гадны процессоос зарим програм хангамжийн процесс руу (өгөгдөл унших ажиллагаа) шилжүүлдэг. Мэдээллийн харилцан үйлчлэлийн хэрэгсэл болгон буферийг нэвтрүүлэх нь эдгээр системийн буферийг удирдах асуудлыг бий болгож байгаа бөгөөд үүнийг үйлдлийн системийн хяналтын хэсгийн тусламжтайгаар шийддэг. Энэ тохиолдолд хянагч нь системийн санах ойн хэсэгт буферийг хуваарилах, чөлөөлөхөөс гадна буферийг дүүргэх, суллах үйлдлүүдийн төлөвийн дагуу процессуудыг синхрончлох, мөн хэрэв чөлөөтэй байхгүй бол тэдгээрийг хүлээх үүрэгтэй. буфер байгаа бөгөөд оролтын хүсэлт/гаралт нь буфер хийх шаардлагатай. Ихэвчлэн I/O хянагч нь жагсаасан ажлуудыг шийдвэрлэхийн тулд тухайн үйлдлийн системд батлагдсан стандарт синхрончлолын хэрэгслийг ашигладаг. Тиймээс, хэрэв үйлдлийн систем нь харилцан үйлчлэгч програм, даалгавруудыг зэрэгцүүлэн гүйцэтгэх асуудлыг шийдвэрлэх хэрэгслийг боловсруулсан бол дүрмээр бол асинхрон оролт/гаралтыг хэрэгжүүлдэг.

синхрон загвароролт гаралт. Read(2), write(2) системийн дуудлагууд болон тэдгээрийн аналогууд нь өгөгдлийг аль хэдийн уншиж эсвэл бичсэний дараа л хяналтыг буцаана. Энэ нь ихэвчлэн утас хаагдахад хүргэдэг.

Анхаарна уу

Бодит байдал дээр энэ нь тийм ч энгийн зүйл биш юм. read(2) нь төхөөрөмжөөс өгөгдлийг биечлэн уншихыг хүлээх ёстой боловч write(2) нь анхдагчаар бичих залхуу горимд ажилладаг: энэ нь өгөгдлийг системийн буферт шилжүүлсний дараа буцаж ирдэг, гэхдээ ерөнхийдөө өгөгдөл нь төхөөрөмж рүү физик байдлаар шилждэг. Энэ нь ихэвчлэн програмын ажиглагдсан гүйцэтгэлийг мэдэгдэхүйц сайжруулж, бичих(2)-ыг буцаасны дараа өгөгдлийн санах ойг өөр зорилгоор ашиглах боломжийг олгодог. Гэхдээ хойшлогдсон бичлэг нь бас мэдэгдэхүйц сул талуудтай. Хамгийн гол нь та физик үйлдлийн үр дүнг бичих(2)-ын буцах кодоор биш, харин буцаснаас хойш хэсэг хугацааны дараа, ихэвчлэн дараагийн бичих(2) дуудлагын буцах кодоор л мэдэх болно. Зарим програмуудын хувьд - гүйлгээний мониторууд, олон бодит цагийн програмууд гэх мэт - энэ нь хүлээн зөвшөөрөгдөхгүй бөгөөд тэд залхуу бичлэгийг унтраахаас өөр аргагүй болдог. Энэ нь O_SYNC тугаар хийгддэг бөгөөд файлыг нээж өөрчлөх үед тохируулах боломжтой нээлттэй файл fcntl(2) руу залгаж болно.

Хувь хүний ​​бичих синхрончлолыг fsync(2) руу залгаснаар баталгаажуулж болно. Олон төхөөрөмж болон/эсвэл сүлжээний холболттой олон программуудад зориулагдсан синхрон загварэвгүй. Санал асуулгын горимд ажиллах нь үргэлж зөвшөөрөгдөхгүй. Сонголт(3C) болон санал асуулга(2) нь файлын тодорхойлогчийг буферт нь өгөгдөл гарч ирсний дараа л уншихад бэлэн гэж үздэг. Гэхдээ зарим төхөөрөмжүүд нь тэднээс тодорхой хүсэлт гаргасны дараа л өгөгдөл илгээж эхэлдэг.

Мөн зарим программууд, ялангуяа бодит цагийн хэрэглээний хувьд өгөгдөл ирж эхлэх мөчийг яг таг мэдэх нь чухал юм. Ийм программын хувьд сонгох(3C) болон санал асуулга(2)-ыг авч үзэх нь бас хүлээн зөвшөөрөгдөхгүй байж болно ердийн файлуудунших, бичихэд үргэлж бэлэн байдаг. Үнэхээр, Файлын системдискнээс унших бөгөөд энэ нь ихэнхээс хамаагүй хурдан ажилладаг сүлжээний холболтууд, гэхдээ үүнд хандах нь зарим сааталтай холбоотой хэвээр байна. Хэцүү бодит цагийн програмуудын хувьд эдгээр саатал нь хүлээн зөвшөөрөгдөхгүй байж болох ч тодорхой унших хүсэлтгүйгээр Файлын системөгөгдөл өгдөггүй!

Бодит цагийн хатуу програмуудын хувьд I/O асуудлын өөр нэг тал нь чухал байж болох юм. Үнэн хэрэгтээ хатуу RT програмууд нь цөмөөс илүү давуу эрхтэй байдаг тул тэд системийн дуудлагуудыг гүйцэтгэдэг, тэр ч байтугай блоклодоггүй! - хүргэж болно тэргүүлэх урвуу.

Эдгээр асуудлын шийдэл нь удаан хугацааны туршид мэдэгдэж байсан бөгөөд асинхрон оролт/гаралт гэж нэрлэгддэг. Энэ горимд I/O системийн дуудлагууд нь төхөөрөмжийн драйверт хүсэлт гаргасны дараа буюу ихэвчлэн өгөгдлийг системийн буферт хуулахаас өмнө шууд хяналтыг буцаана. Хүсэлт үүсгэх нь оролтыг (IRP, оролт/гаралтын хүсэлтийн пакет, оролт/гаралтын хүсэлтийн пакет) дараалалд оруулахаас бүрдэнэ. Үүнийг хийхийн тулд та дарааллын "сүүл" -ийг хамгаалдаг мутексийг товчхон авах хэрэгтэй бөгөөд ингэснээр тэргүүлэх урвууллын асуудлыг амархан даван туулж чадна. Дуудлага дууссан эсэх, хэрэв дууссан бол яг яаж, өгөгдөл хадгалагдсан санах ойг ашиглах боломжтой эсэхийг мэдэхийн тулд тусгай API-г өгсөн болно (8.1-р зургийг үз).


Цагаан будаа. 8.1.

Асинхрон загвар DEC RT-11, DEC RSX-11, VAX/VMS, OpenVMS зэрэг үйлдлийн системүүдийн үндсэн I/O загвар байсан. Бараг хүн бүр энэ загварыг нэг эсвэл өөр хэлбэрээр дэмждэг. Бодит цагийн үйлдлийн систем. Unix системүүд 1980-аад оны сүүлээс хойш асинхрон оролт гаралтын хэд хэдэн тохирохгүй API ашиглаж ирсэн. 1993 онд ANSI/IEEE нь POSIX 1003.1b-г баталсан бөгөөд энэ нь стандартчилагдсан API-г тайлбарладаг бөгөөд бид энэ хэсэгт сүүлд судлах болно.

Solaris 10-д асинхрон оролт гаралтын функцийг libaio.so номын санд оруулсан болно. Эдгээр функцийг ашигладаг програмуудыг бүтээхийн тулд та -laio шилжүүлэгчийг ашиглах ёстой. Асинхрон оролт/гаралтын хүсэлтийг үүсгэхийн тулд aio_read(3AIO), aio_write(3AIO) болон lio_listio(3AIO) функцуудыг ашигладаг.

aio_read(3AIO) болон aio_write(3AIO) функцууд нь structaiocb *aiocbp гэсэн ганц параметртэй. aiocb бүтцийг файлд тодорхойлсон< aio.h>бөгөөд дараах талбаруудыг агуулна.

  • int aio_fildes - файлын тодорхойлогч
  • off_t aio_offset - бичих эсвэл унших үеэс эхлэн файл дахь офсет
  • дэгдэмхий хүчингүй * aio_buf - өгөгдөл унших эсвэл ямар өгөгдөл бичих шаардлагатай буфер.
  • size_t aio_nbytes - буферийн хэмжээ. Уламжлалт read(2)-ын нэгэн адил aio_read(3AIO) нь хүссэнээс бага өгөгдлийг унших боломжтой боловч хэзээ ч илүү уншихгүй.
  • int aio_reqprio - давуу эрх хүсэх
  • struct sigevent aio_sigevent - хүсэлт дууссаныг мэдэгдэх арга (энэ хэсэгт дараа авч үзнэ)
  • int aio_lio_opcode - aio_read(3AIO) болон aio_write(3AIO)-д ашиглагддаггүй бөгөөд зөвхөн lio_listio функцэд ашиглагддаг.

lio_listio(3AIO) функц нь нэг системийн дуудлагаар олон оролт/гаралтын хүсэлт гаргах боломжийг олгодог. Энэ функц нь дөрвөн параметртэй:

  • int горим - LIO_WAIT (функц нь бүх хүсэлтийг дуусгахыг хүлээдэг) ба LIO_NOWAIT (бүх хүсэлтийг үүсгэсний дараа функц нь хяналтыг шууд буцаана) утгуудыг авч болно.
  • struct aiocb *жагсаалт - хүсэлтийн тайлбар бүхий aiocb бүтцэд чиглэсэн заагч жагсаалт.

    Хүсэлтийг унших эсвэл бичих боломжтой бөгөөд үүнийг aio_lio_opcode талбараар тодорхойлно. Нэг тодорхойлогчийн хүсэлтийг жагсаалтын массивт жагсаасан дарааллаар гүйцэтгэнэ.

  • int nent - жагсаалтын массив дахь оруулгуудын тоо.
  • struct sigevent *sig - бүх хүсэлтүүд дууссаныг мэдэгдэх арга. Хэрэв горим==LIO_WAIT бол энэ параметрийг үл тоомсорлодог.

POSIX AIO номын сан нь синхрон ба асинхрон гэсэн хүсэлтийг биелүүлсэн гэж програмд ​​мэдэгдэх хоёр аргыг өгдөг. Эхлээд синхрон аргыг авч үзье. aio_return(3AIO) функц нь хүсэлтийн төлөвийг буцаана. Хэрэв хүсэлт аль хэдийн дууссан бөгөөд амжилттай дууссан бол уншсан эсвэл бичсэн өгөгдлийн хэмжээг байтаар буцаана. Уламжлалт унших (2) шиг aio_return (3AIO) нь файл дууссан тохиолдолд 0 байтыг буцаана. Хэрэв хүсэлт амжилтгүй болсон эсвэл хараахан дуусаагүй бол -1-г буцаан өгч, errno тохируулна. Хэрэв хүсэлт хараахан дуусаагүй бол алдааны код нь EINPROGRESS байна.

aio_return(3AIO) функц нь хор хөнөөлтэй; Хэрэв дууссан хүсэлтийн дагуу дуудагдсан бол энэ нь хүсэлтийн статусын талаархи мэдээллийг хадгалдаг системийн объектыг устгах болно. Тиймээс aio_return(3AIO) руу нэг хүсэлтээр олон удаа залгах боломжгүй.

aio_error(3AIO) функц нь хүсэлттэй холбоотой алдааны кодыг буцаана. Хэрэв хүсэлт амжилттай дууссан бол 0, алдаа гарвал алдааны код, бүрэн бус хүсэлтийн хувьд - EINPROGRESS буцаана.

aio_suspend(3AIO) функц нь урсгалыг тодорхой асинхрон оролт гаралтын хүсэлтүүдийн аль нэг нь дуусах хүртэл эсвэл тодорхой хугацааны турш блоклодог. Энэ функц нь гурван параметртэй:

  • const struct aiocb *const жагсаалт- асуулгын тодорхойлогчдын заагчийн массив.
  • int nent - жагсаалтын массив дахь элементүүдийн тоо.
  • const struct timespec *цаг хугацаа дуусах- нано секунд хүртэл нарийвчлалтай хугацаа (үнэндээ нарийвчлалтай системийн таймер).

Жагсаалтад жагсаасан үйлдлүүдийн дор хаяж нэг нь дууссан бол функц 0-ийг буцаана. Хэрэв функц бүтэлгүйтвэл -1-ийг буцааж, errno гэж тохируулна. Хэрэв функцийн хугацаа дууссан бол энэ нь мөн -1 ба errno==EINPROGRESS-г буцаана.

Синхрон хүсэлтийн статусыг шалгахтай асинхрон оролт гаралтыг ашиглах жишээг Жишээ 8.3-т үзүүлэв.

Const char req="GET / HTTP/1.0\r\n\r\n"; int main() ( int s; static struct aiocb readrq; static const struct aiocb *readrqv=(&readrq, NULL); /* Нээлттэй залгуур […] */ memset(&readrq, 0, sizeof readrq); readrq.aio_fildes=s ; readrq.aio_buf=buf; readrq.aio_nbytes=buf; if (aio_read(&readrq)) ( /* ... */ ) бичих(s, req, (req)-1); while(1) ( aio_suspend (readrqv , 1, NULL); size=aio_return(&readrq); if (size>0) ( write(1, buf, size); aio_read(&readrq); ) if (size==0) ( break; ) other if ( errno!=EINPROGRESS) ( perror("сокетаас унших"); ) ) ) 8.3. Хүсэлтийн статусыг синхрон шалгах асинхрон оролт. Кодыг богиносгож, залгуурыг нээх, алдаа засах зэргийг хассан.

Үйлдлүүд дууссан тухай програмын асинхрон мэдэгдэл нь дараахь зүйлээс бүрдэнэ дохио үүсгэхүйл ажиллагаа дуусах үед. Үүнийг хийхийн тулд та хүсэлтийн тодорхойлогчийн aio_sigevent талбарт тохирох тохиргоог хийх хэрэгтэй. aio_sigevent талбар нь struct sigevent төрлийн байна. Энэ бүтцийг дараахь байдлаар тодорхойлсон болно бөгөөд дараах талбаруудыг агуулна.

  • int sigev_notify - мэдэгдлийн горим. Хүчинтэй утгууд нь SIGEV_NONE (хүсэлт дуусахад дохиог илгээх хэрэггүй), SIGEV_SIGNAL (хүсэлт дуусахад дохио үүсгэх) болон SIGEV_THREAD (хүсэлт дуусахад заасан функцийг тусдаа хэлхээнд ажиллуулна). Solaris 10 нь мөн энэ бүлгийн хавсралтад авч үзсэн SIGEV_PORT дохиоллын төрлийг дэмждэг.
  • int sigev_signo - SIGEV_SIGNAL ашиглах үед үүсэх дохионы тоо.
  • union sigval sigev_value - дохионы зохицуулагч эсвэл боловсруулах функцэд дамжуулагдах параметр. Асинхрон I/O-д ашиглах үед энэ нь ихэвчлэн хүсэлтийн заагч болдог.

    SIGEV_PORT-г ашиглах үед энэ нь портын дугаар болон нэмэлт өгөгдлийг агуулсан port_event_t заагч бүтэц байх ёстой.

  • хүчингүй (*sigev_notify_function)(нэгдсэн сигвал) SIGEV_THREAD ашиглах үед дуудагдах функц юм.
  • pthread_attr_t *sigev_notify_attributes- түүнийг эхлүүлэх хэлхээний шинж чанарууд
  • SIGEV_THREAD ашиглах үед sigev_notify_function.

Бүх libaio хэрэгжүүлэлтүүд SIGEV_THREAD мэдэгдлийг дэмждэггүй. Зарим Unix систем нь оронд нь стандарт бус SIGEV_CALLBACK дохиог ашигладаг. Энэ лекцийн дараа бид зөвхөн дохионы мэдэгдлийн талаар ярилцах болно.

Зарим программууд SIGIO эсвэл SIGPOLL-ийг дохионы дугаар болгон ашигладаг (Unix SVR4 дээр эдгээр нь ижил дохио юм). SIGUSR1 эсвэл SIGUSR2 нь ихэвчлэн ашиглагддаг; Энэ нь өөр шалтгаанаар ижил төстэй дохио гарахгүй байхыг баталгаажуулдаг тул тохиромжтой.

Бодит цагийн програмууд нь SIGRTMIN-аас SIGRTMAX хүртэлх дохионы дугааруудыг ашигладаг. Зарим хэрэгжүүлэлтүүд энэ зорилгоор SIGAIO эсвэл SIGASYNCIO тусгай дохионы дугаарыг хуваарилдаг боловч Solaris 10-д ийм дохио байдаггүй.

Мэдээжийн хэрэг, дохиогоор мэдэгдсэн асинхрон хүсэлтийг гүйцэтгэхийн өмнө та энэ дохионы зохицуулагчийг суулгах хэрэгтэй. Мэдэгдэл өгөхийн тулд та SA_SIGINFO горимд боловсруулсан дохиог ашиглах ёстой. Сигнал(2) болон sigset(2) системийн дуудлагуудыг ашиглан ийм зохицуулагчийг суулгах боломжгүй тул та sigaction(2) ашиглах ёстой. sigaction ашиглан зохицуулагч суурилуулах

I/O удирдлага.

блок чиглэсэнтөхөөрөмжүүд болон байт чиглэсэн

гол утга

Түлхүүрзарчим нь төхөөрөмжийн бие даасан байдал

· Тасалдалтай харьцах,

· Төхөөрөмжийн драйверууд,

Янз бүрийн шалтгааны улмаас олон төрлийн тасалдал үүсэх нь ойлгомжтой юм шиг байна. Тиймээс тоо нь тасалдалтай холбоотой байдаг - тасалдлын тоо гэж нэрлэгддэг.

Энэ тоо нь тодорхой үйл явдалтай шууд тохирч байна. Систем нь тасалдлыг таних боломжтой бөгөөд тэдгээр нь тохиолдоход тасалдлын дугаарт тохирох процедурыг эхлүүлдэг.

Зарим тасалдлыг (тоон дарааллаар эхний тав) ашиглахаар нөөцөлсөн төв процессортэгээр хуваах оролдлого, халих гэх мэт онцгой үйл явдлын үед (эдгээр нь жинхэнэ дотоод тасалдал J).

Техник хангамжийн тасалдал нь үргэлж ажиллаж байгаа програмуудтай холбоотой асинхрон байдлаар тохиолддог. Үүнээс гадна хэд хэдэн тасалдал нэгэн зэрэг тохиолдож болно!

Аль тасалдлыг эхлээд үйлчилгээнд оруулахыг шийдэхдээ систем төөрөгдөлд орохгүй байхын тулд тусгай тэргүүлэх схем байдаг. Тасалдал бүр өөрийн гэсэн тэргүүлэх чиглэлийг өгдөг. Хэрэв хэд хэдэн тасалдал нэгэн зэрэг тохиолдвол систем нь хамгийн чухал ач холбогдолтойг нь давуу эрх олгож, үлдсэн тасалдлыг боловсруулахыг түр хойшлуулдаг.

Тэргүүлэх системийг Intel 8259 (эсвэл ижил төстэй) хоёр чип дээр хэрэгжүүлдэг. Чип бүр нь тасалдал хянагч бөгөөд найм хүртэлх тэргүүлэх чиглэлд үйлчилдэг. Систем дэх тэргүүлэх түвшний тоог нэмэгдүүлэхийн тулд чипүүдийг нэгтгэж (каскад) хийж болно.

Тэргүүлэх түвшнийг IRQ0 - IRQ15 гэж товчилсон.


24. Оролт гаралтын удирдлага. Синхрон ба асинхрон оролт/гаралт.

OS-ийн үндсэн функцүүдийн нэг нь компьютерийн бүх оролт гаралтын төхөөрөмжийг удирдах явдал юм. Үйлдлийн систем нь төхөөрөмжүүдэд тушаал илгээх, тасалдлыг таслан зогсоох, алдаатай ажиллах ёстой; энэ нь мөн төхөөрөмжүүд болон системийн бусад хэсгүүдийн хоорондох интерфейсийг хангах ёстой. Хөгжүүлэх зорилгоор интерфейс нь бүх төрлийн төхөөрөмжийн хувьд ижил байх ёстой (төхөөрөмжийн бие даасан байдал). IV хяналтын талаар дэлгэрэнгүй мэдээлэл, асуулт 23.

Хамгаалалтын зарчим

UNIX үйлдлийн систем нь анх үүссэн цагаасаа эхлэн олон хэрэглэгчийн үйлдлийн системээр бүтээгдсэнээс хойш файлын систем дэх файлууд руу өөр өөр хэрэглэгчдэд хандах эрх олгох асуудал үргэлж холбоотой байсаар ирсэн. Хандалтын зөвшөөрөл гэдэг нь хандалтыг зөвшөөрөх буюу хориглох системийн үйлдлийг хэлнэ өгсөн хэрэглэгчруу энэ файлхэрэглэгчийн хандалтын эрх болон файлд тохируулсан хандалтын хязгаарлалтаас хамаарна. UNIX OS-д ашигладаг хандалтын зөвшөөрлийн схем нь маш энгийн бөгөөд тохиромжтой бөгөөд нэгэн зэрэг хүчирхэг тул орчин үеийн үйлдлийн системүүдийн де факто стандарт болсон (энэ нь олон түвшний хамгаалалттай систем гэж дүр эсгэдэггүй).

Файлын хамгаалалт

Олон хэрэглэгчийн үйлдлийн системд байдаг заншил ёсоор UNIX нь файлууд болон файлын системийн лавлахуудад хандах хандалтын хяналтын нэгдсэн механизмыг хадгалдаг. Аливаа процесс нь тухайн файлд заасан хандалтын эрх нь тухайн процессын боломжуудтай таарч байгаа тохиолдолд л файлд хандах боломжтой.

UNIX дээр файлуудыг зөвшөөрөлгүй нэвтрэхээс хамгаалах нь гурван баримт дээр суурилдаг. Нэгдүгээрт, файл (эсвэл лавлах) үүсгэх аливаа процесс нь системд өвөрмөц хэрэглэгчийн танигчтай холбоотой байдаг (UID - Хэрэглэгчийн танигч), цаашид шинээр үүсгэсэн файлын эзэмшигчийн танигч гэж тайлбарлаж болно. Хоёрдугаарт, файл руу нэвтрэхийг оролдсон процесс бүр нь одоогийн хэрэглэгч болон бүлгийн танигчтай холбоотой хос танигчтай байдаг. Гуравдугаарт, файл бүр өөрийн тодорхойлогч - i-node-тэй өвөрмөц холбоотой байдаг.

Сүүлийн баримтыг илүү нарийвчлан авч үзэх нь зүйтэй юм. Файлын нэр болон файлууд нь ижил зүйл биш гэдгийг ойлгох нь чухал юм. Ялангуяа нэг файлд олон хатуу холбоосууд байгаа үед олон файлын нэр нь үнэндээ нэг файлыг төлөөлж, ижил i-зангилаатай холбоотой байдаг. Файлын системд ашигладаг аливаа i-зангилаа нь үргэлж нэг бөгөөд зөвхөн нэг файлтай нийцдэг. I-зангилаа нь маш олон янзын мэдээллийг агуулдаг (түүний ихэнх нь stat болон fstat системийн дуудлагаар дамжуулан хэрэглэгчдэд нээлттэй байдаг) бөгөөд эдгээр мэдээллийн дотор файлын системд тухайн процессын файлд хандах эрхийг үнэлэх боломжийг олгодог хэсэг байдаг. өгөгдсөн файлыг шаардлагатай горимд оруулна.

Ерөнхий зарчимСистемийн одоо байгаа бүх хувилбарт хамгаалалт ижил байна: i-зангилааны мэдээлэл нь файлын одоогийн эзэмшигчийн UID болон GID-г агуулдаг (файлыг үүсгэсний дараа түүний одоогийн эзэмшигчийн таниулбаруудыг харгалзах хүчинтэй танигчаар тохируулна. бүтээгчийн үйл явц, гэхдээ дараа нь chown болон chgrp системийн дуудлагаар өөрчилж болно). Нэмж дурдахад, файлын i-зангилаа нь хэрэглэгч буюу түүний эзэмшигч нь файлтай юу хийж чадах, эзэмшигчтэй ижил хэрэглэгчийн бүлэгт хамаарах хэрэглэгчид файлтай юу хийж болох, бусад хүмүүс юу хийж болохыг харуулах масштабыг хадгалдаг. файлтай. хэрэглэгчид. Хэрэгжилтийн талаарх жижиг дэлгэрэнгүй мэдээлэл өөр өөр сонголтуудсистемүүд өөр өөр байдаг.

28. Windows NT дээрх файлуудад хандах хандалтыг удирдах. Хандалтын эрхийн жагсаалт.

Windows NT дахь хандалтын хяналтын систем нь олон төрлийн хандалтын субьект, объект, түүнчлэн хандалтын үйлдлүүдийн нарийн ширийн байдлаас шалтгаалан өндөр уян хатан чанараараа тодорхойлогддог.

Файлын хандалтын хяналт

Windows NT дээрх хуваалцсан нөөцийн хувьд зөвшөөрөгдсөн үйлдлийн багц, эзэмшигчийн танигч, хандалтын хяналтын жагсаалт зэрэг аюулгүй байдлын шинж чанаруудыг агуулсан нийтлэг объектын загварыг ашигладаг.

Windows NT дээрх объектууд нь файлууд, лавлахууд, төхөөрөмжүүд, санах ойн хэсгүүд, процессууд, тэдгээрийг хуваалцах эсвэл хуваалцах үед ямар ч нөөцөд зориулж бүтээгддэг. Windows NT дээрх объектуудын шинж чанарыг хоёр хэсэгт хуваадаг - бүтэц нь объектын төрлөөс хамаардаггүй ерөнхий хэсэг, объектын төрлөөр тодорхойлогддог бие даасан хэсэг.
Бүх объектууд модны бүтцэд хадгалагддаг шаталсан бүтэц, элементүүд нь салбар объектууд (сангууд) ба навч объектууд (файлууд). Файлын системийн объектуудын хувьд энэ харилцааны схем нь лавлах ба файлуудын шатлалын шууд тусгал юм. Бусад төрлийн объектуудын хувьд шаталсан харилцааны диаграм нь өөрийн гэсэн агуулгатай байдаг, жишээлбэл, процессуудын хувьд эцэг эх, хүүхдийн харилцааг, төхөөрөмжүүдийн хувьд энэ нь тодорхой төрлийн төхөөрөмжид гишүүнчлэл, төхөөрөмжийг бусад төхөөрөмжтэй холбохыг тусгадаг. жишээ нь диск бүхий SCSI хянагч.

Ямар ч төрлийн объектын хандалтын эрхийг шалгах нь давуу горимд ажиллаж байгаа Аюулгүй байдлын лавлагаа мониторыг ашиглан төвлөрсөн байдлаар хийгддэг.

Системийн хувьд Windows аюулгүй байдал NT нь олон тооны урьдчилан тодорхойлсон (сууригдсан) хандалтын субьектүүд байдаг - хувь хүн, бүлгүүд хоёулаа байдаг. Тиймээс системд үргэлж Adininistator, System, Guest гэх мэт хэрэглэгчид, түүнчлэн Хэрэглэгчид, Adiniiiistrators, Account Operators, Server Operators, Everyone болон бусад бүлгүүд байдаг. Эдгээр суурилагдсан хэрэглэгчид болон бүлгүүдийн гол утга нь тэд тодорхой эрхээр хангагдсан бөгөөд администраторт хандалтын хяналтын үр дүнтэй системийг бий болгоход хялбар болгодог. Шинэ хэрэглэгч нэмэх үед администратор зөвхөн энэ хэрэглэгчийг аль бүлэг эсвэл бүлэгт оноохыг шийдэх боломжтой. Мэдээжийн хэрэг, администратор шинэ бүлгүүдийг үүсгэхээс гадна өөрийн аюулгүй байдлын бодлогыг хэрэгжүүлэхийн тулд суурилуулсан бүлгүүдэд эрх нэмж оруулах боломжтой боловч ихэнх тохиолдолд суулгасан бүлгүүд хангалттай байдаг.

Windows NT нь эдгээр үйлдэлд оролцож буй субьект болон объектын төрлөөр ялгаатай хандалтын гурван ангиллыг дэмждэг.

□ Зөвшөөрөл нь файл, лавлах, принтер, санах ойн хэсэг гэх мэт ямар ч төрлийн объекттой холбоотой бүх төрлийн субьектэд зориулж тодорхойлж болох үйлдлүүдийн багц юм. Зориулалтын зөвшөөрлүүд нь QC UNIX дахь файл, лавлахуудад хандах эрхтэй тохирч байна. .

□ Эрх (хэрэглэгчийн эрх) - бүлгийн төрлийн субьектүүдэд системийн тодорхой үйлдлүүдийг гүйцэтгэхэд зориулагдсан: системийн цагийг тохируулах, файлуудыг архивлах, компьютерийг унтраах гэх мэт. Эдгээр үйлдлүүд нь тусгай хандалтын объект буюу үйлдлийн системийг бүхэлд нь хамардаг. .

Энэ нь үндсэндээ нэг хэрэглэгчийн бүлгийг нөгөөгөөс нь ялгах нь зөвшөөрөл биш харин эрх юм. Баригдсан бүлгийн зарим эрхийг мөн суулгасан байдаг - тэдгээрийг энэ бүлгээс хасах боломжгүй. Баригдсан бүлгийн бусад эрхийг устгаж болно (эсвэл эрхийн ерөнхий жагсаалтаас нэмж болно).

□ Хэрэглэгчийн чадавхийг бие даасан хэрэглэгчдэд өөрсдийн үйлдлийн орчныг бүрдүүлэхтэй холбоотой үйлдлүүдийг хийх, жишээлбэл, програмын үндсэн цэсийн бүтцийг өөрчлөх, Run цэсийн зүйлийг ашиглах гэх мэтээр тодорхойлдог. анхдагчаар хэрэглэгчдэд боломжтой байдаг), администратор нь хэрэглэгчийг администраторын хамгийн тохиромжтой гэж үзсэн үйлдлийн орчинтой ажиллахыг албадаж, хэрэглэгчийг болзошгүй алдаанаас хамгаалж болно.

Бүлэгт олгогдсон эрх, зөвшөөрлийг гишүүдэд нь автоматаар олгож, админд олон тооны хэрэглэгчдийг нягтлан бодох бүртгэлийн мэдээллийн нэгж болгон авч үзэж, тэдний үйлдлийг багасгах боломжийг олгодог.

Хэрэглэгч системд нэвтрэх үед түүнд хэрэглэгчийн ID болон тухайн хэрэглэгчийн харьяалагддаг бүх бүлгийн ID-г багтаасан хандалтын токен бий болдог. Токен нь дараахь зүйлийг агуулна: өгөгдмөл хандалтын хяналтын жагсаалт (ACL), энэ нь зөвшөөрлөөс бүрдэх ба процессоор үүсгэгдсэн объектуудад хамаарах; системийн үйлдлийг гүйцэтгэх хэрэглэгчийн эрхийн жагсаалт.

Файлууд, урсгалууд, үйл явдлууд, тэр ч байтугай хандалтын токенууд гэх мэт бүх объектыг үүсгэх үед аюулгүй байдлын тодорхойлогчоор хангагдсан байдаг. Аюулгүй байдлын тодорхойлогч нь хандалтын хяналтын жагсаалтыг агуулдаг - ACL.

Файлын тодорхойлогч- процессоор нээсэн файлд үйлдлийн системээс өгсөн сөрөг бус бүхэл тоо.

ACL(Англи) Хандалтын хяналтын жагсаалт- хандалтын хяналтын жагсаалт, англи хэлээр "ekl" гэж дуудагдана) - тодорхой объектод хэн эсвэл юу хандаж болох, энэ субьект нь тухайн объект дээр ямар үйлдлүүдийг хийхийг зөвшөөрсөн эсвэл хориглож байгааг тодорхойлдог.

Хандалтын хяналтын жагсаалт нь сонгомол хандалтын хяналтын системийн үндэс болдог. ( Вики)

Объектын эзэмшигч, ихэвчлэн үүнийг үүсгэсэн хэрэглэгч нь тухайн объект руу хандах хандалтыг сонгох хяналттай байдаг ба тухайн объектын ACL-ийг өөрчлөх, бусдад хандахыг зөвшөөрөх эсвэл урьдчилан сэргийлэх боломжтой. Баригдсан Windows администратор NT нь UNIX супер хэрэглэгчээс ялгаатай нь объект руу хандах зарим зөвшөөрөлгүй байж болно. Энэ функцийг хэрэгжүүлэхийн тулд администратор болон администраторын бүлгийн ID-г энгийн хэрэглэгчийн ID шиг ACL-д оруулж болно. Гэсэн хэдий ч администратор нь объектын эзэн болж, дараа нь эзэмшигчийн хувьд бүх зөвшөөрлийг хүлээн авах боломжтой тул аливаа объекттой ямар ч үйлдэл хийх чадвартай хэвээр байна. Гэсэн хэдий ч администратор нь объектын өмнөх эзэмшигчид өмчлөх эрхийг буцааж өгөх боломжгүй тул хэрэглэгч администратор өөрийн файл эсвэл принтертэй ажилласан эсэхийг үргэлж олж мэдэх боломжтой.

Процесс нь Windows NT дээр объект руу хандах үйлдлийг хүсэх үед удирдлага нь хамгаалалтын дэлгэц рүү үргэлж дамждаг бөгөөд энэ нь нэвтрэх токен дээрх хэрэглэгч болон хэрэглэгчийн бүлгийн танигчийг тухайн объектын ACL элементүүдэд хадгалагдсан танигчтай харьцуулдаг. UNIX-ээс ялгаатай нь Windows NT ACL элементүүд нь хэрэглэгчдэд зөвшөөрөгдсөн болон хориглосон үйлдлүүдийн жагсаалтыг хоёуланг нь агуулж болно.

Windows NT нь шинээр үүсгэсэн объектод ACL оноох дүрмийг тодорхой тодорхойлсон байдаг. Хэрэв дуудлагын код нь объект үүсгэх үед шинээр үүсгэсэн объектод хандах бүх эрхийг тодорхой зааж өгсөн бол хамгаалалтын систем нь энэ ACL-ийг тухайн объектод оноож өгдөг.

Хэрэв дуудлагын код нь тухайн объектыг ACL-ээр хангаагүй бөгөөд тухайн объект нь нэртэй бол зөвшөөрлийн өв залгамжлалын зарчим үйлчилнэ. Хамгаалалтын систем нь шинэ объектын нэр хадгалагдаж буй объектын лавлахын ACL-ийг хардаг. Зарим объектын лавлах ACL оруулгуудыг удамшдаг гэж тэмдэглэж болно. Энэ нь тэдгээрийг энэ санд үүсгэсэн шинэ объектуудад оноож болно гэсэн үг юм.

Процесс нь үүсгэгдэж буй объектын ACL-ийг тодорхой заагаагүй бөгөөд лавлах объектод удамших боломжтой ACL оруулгууд байхгүй тохиолдолд процессын хандалтын токен дээрх анхдагч ACL-ийг ашиглана.


29. Java програмчлалын хэл. Java виртуал машин. Java технологи.

Javaнь Sun Microsystems компанийн бүтээсэн объект хандалтат програмчлалын хэл юм. Java програмууд нь ихэвчлэн тусгай байт кодоор хөрвүүлэгддэг тул компьютерийн архитектураас үл хамааран ямар ч Java виртуал машин (JVM) дээр ажиллах боломжтой. Java програмууд нь гүйцэтгэгддэг байт код руу хөрвүүлэгддэг виртуал машин Java ( JVM) - байт кодыг боловсруулж, зааварчилгааг орчуулагч болгон төхөөрөмжид дамжуулдаг програм боловч текстээс ялгаатай нь байт кодыг илүү хурдан боловсруулдаг.

Програмыг гүйцэтгэх энэ аргын давуу тал нь байт кодоос бүрэн бие даасан байдал юм үйлдлийн системболон техник хангамж нь танд тохирох виртуал машин байгаа дурын төхөөрөмж дээр Java програмуудыг ажиллуулах боломжийг олгоно. Java технологийн өөр нэг чухал онцлог нь аюулгүй байдлын уян хатан систем юм Програмын гүйцэтгэлийг виртуал машин бүрэн хянадаг. Програмын тогтоосон зөвшөөрлөөс хэтэрсэн аливаа үйлдэл (жишээлбэл, өгөгдөлд зөвшөөрөлгүй хандах эсвэл өөр компьютерт холбогдох оролдлого) шууд тасалдал үүсгэдэг.

Ихэнхдээ виртуал машины концепцийн сул тал нь виртуал машинаар байт кодыг гүйцэтгэх нь Java хэл дээр хэрэгжсэн программууд болон алгоритмуудын гүйцэтгэлийг бууруулдаг явдал юм.

Java виртуал машин(товчилсон нэрээр Java VM, JVM) - Java виртуал машин нь Java Runtime Environment (JRE) гэж нэрлэгддэг Java runtime системийн үндсэн хэсэг юм. Java виртуал машин нь Java хөрвүүлэгч (javac)-ийн Java програмын эх кодоос урьдчилан үүсгэсэн Java байт кодыг тайлбарлаж, гүйцэтгэдэг. JVM нь бусад програмчлалын хэл дээр бичигдсэн програмуудыг ажиллуулахад бас ашиглагдаж болно. Жишээлбэл, Ада эх кодыг Java байт код болгон хөрвүүлж, дараа нь JVM ажиллуулж болно.

JVM нь Java платформын гол бүрэлдэхүүн хэсэг юм. Java виртуал машинууд нь олон техник хангамж болон програм хангамжийн платформууд, Java-г завсрын програм болон платформ гэж үзэж болох тул "нэг удаа бич, хаана ч ажиллуул" гэсэн зарчим. Олон платформ дээр нэг байт код ашиглах нь Java-г "нэг удаа эмхэтгэ, хаана ч ажиллуул" гэж тайлбарлах боломжийг олгодог.

Ажиллах цагийн орчин

JVM дээр ажиллахаар төлөвлөж буй программуудыг стандартчилсан зөөврийн хоёртын форматаар эмхэтгэсэн байх ёстой бөгөөд энэ нь ихэвчлэн .class файл хэлбэрээр илэрхийлэгддэг. Програм нь өөр өөр файлд байрлах олон ангиас бүрдэж болно. Том хэмжээний программуудыг байршуулахад хялбар болгохын тулд зарим .class файлуудыг .jar гэж нэрлэгдэх файл (Java Archive-ын товчлол) болгон багцалж болно.

JVM нь Sun microsystems-ийн HotSpot гэх мэт цаг хугацаанд нь (JIT) хөрвүүлэгчийг тайлбарлах эсвэл ашиглах замаар JVM-д зориулж бичсэн зааврыг дуурайлган .class эсвэл .jar файлуудыг гүйцэтгэдэг. Эдгээр өдрүүдэд JIT эмхэтгэлийг ихэнх JVM-д илүү хурдтай болгохын тулд ашигладаг.

Ихэнх виртуал машинуудын нэгэн адил Java Virtual Machine нь микроконтроллер, микропроцессортой төстэй стек баримжаатай архитектуртай.

JRE (Java Runtime Environment)-ийн жишээ болох JVM нь Java программуудыг ажиллуулах үед ажилладаг. Гүйцэтгэж дууссаны дараа энэ жишээг хог цуглуулагч устгана. JIT нь Java Virtual Machine-ийн нэг хэсэг бөгөөд програмуудыг гүйцэтгэх хугацааг хурдасгахад ашигладаг. JIT нь ижил төстэй ажиллагаатай байт кодын хэсгүүдийг нэгэн зэрэг эмхэтгэдэг тул эмхэтгэхэд шаардагдах хугацааг багасгадаг.

j2se (java 2 стандарт хувилбар) - стандарт номын санд дараахь зүйлс орно.

GUI, NET, мэдээллийн сан...


30. .NET платформ. Үндсэн санаа, заалтууд. .NET програмчлалын хэлүүд.

.NET Framework - програм хангамжийн технологи Microsoft-аас ердийн программууд болон вэб програмуудыг бий болгоход зориулагдсан.

Microsoft .NET-ийн гол санаануудын нэг бол өөр хэл дээр бичигдсэн өөр өөр үйлчилгээнүүдийн харилцан уялдаатай байх явдал юм. Жишээлбэл, Microsoft .NET-д зориулсан C++ хэл дээр бичигдсэн үйлчилгээ нь Delphi-д бичигдсэн номын сангаас ангийн аргыг дуудаж болно; C# хэл дээр бичсэн ангиас өвлөн авсан ангийг бичиж болно Visual Basic.NET болон C# хэл дээр бичигдсэн аргаар шидэгдсэн онцгой тохиолдлыг Delphi-д барьж, зохицуулах боломжтой. .NET дэх номын сан (ассемблей) бүр өөрийн хувилбарын талаархи мэдээлэлтэй байдаг бөгөөд энэ нь хооронд гарч болзошгүй зөрчилдөөнийг арилгах боломжийг олгодог өөр өөр хувилбаруудчуулганууд.

Програмыг мөн текст засварлагч дээр боловсруулж, консол хөрвүүлэгч ашиглаж болно.

Java технологийн нэгэн адил .NET хөгжүүлэлтийн орчин нь виртуал машинаар гүйцэтгэх байт код үүсгэдэг. Энэ машины .NET дэх оролтын хэлийг MSIL (Microsoft Intermediate Language), эсвэл CIL (Common Intermediate Language, дараагийн хувилбар) эсвэл зүгээр л IL гэж нэрлэдэг.

Байт код ашиглах нь хөрвүүлсэн төслийн түвшинд (.NET хэлээр: угсралт), зөвхөн эх текстийн түвшинд биш, жишээлбэл, C хэл дээр. CLR ажиллах хугацаанд угсралтыг эхлүүлэхийн өмнө байт кодыг хүрээлэн буй орчинд суурилуулсан JIT хөрвүүлэгчээр хөрвүүлдэг (яг цагт нь, хурдан хугацаанд) эмхэтгэл) зорилтот процессорын машины кодууд руу. Мөн .NET Framework-д нийлүүлсэн NGen.exe хэрэглүүрийг ашиглан уг угсралтыг сонгосон платформын эх код болгон хөрвүүлэх боломжтой.

Орчуулах явцад програмын эх кодыг (SML, C#, Visual Basic, C++ эсвэл .NET дэмждэг бусад програмчлалын хэлээр бичсэн) хөрвүүлэгч нь ассемблер гэж нэрлэгдэх болгон хувиргаж, динамик байдлаар хадгалдаг. холбосон номын сангийн файл (Динамикаар холбогдсон). Номын сан, DLL) эсвэл гүйцэтгэх боломжтой файл(Гүйцэтгэх боломжтой, EXE).

Мэдээжийн хэрэг, хөрвүүлэгч бүрийн хувьд (энэ нь C# хэлний хөрвүүлэгч, csc.exe эсвэл Visual Basic, vbc.exe) ажиллах үеийн орчин нь CTS төрлүүдэд ашигласан төрлүүдийн шаардлагатай зураглалыг хийж, програмын кодыг "код" болгон ашигладаг. хийсвэр машин” .NET - MSIL (Microsoft Intermediate Language).

Эцэст нь програм хангамжийн төсөлсуурилуулах, хуулбарлах, дахин ашиглах зориулалттай бие даасан бүрэлдэхүүн хэсэг болох угсралтын хэлбэрээр үүсдэг. Чуулганыг тодорхойлсон цахим гарын үсэгзохиогч болон өвөрмөц хувилбарын дугаар.

Суурилуулсан програмчлалын хэлүүд (.NET Framework-д багтсан):

C#; J#; VB.NET; JScript .NET; C++/CLI - шинэ хувилбар C++ (Удирдлагатай).


31. OS-ийн функциональ бүрэлдэхүүн хэсгүүд. Файлын удирдлага

Үйлдлийн үйлдлийн системийн бүрэлдэхүүн хэсгүүд:

Бие даасан компьютерийн үйлдлийн системийн функцуудыг ихэвчлэн үйлдлийн системийн удирддаг локал нөөцийн төрлөөр эсвэл бүх нөөцөд хамаарах тодорхой ажлуудын дагуу бүлэглэдэг. Заримдаа ийм бүлгүүдийг дэд систем гэж нэрлэдэг. Нөөцийн удирдлагын хамгийн чухал дэд системүүд нь процесс, санах ой, файл, гадаад төхөөрөмжийн удирдлагын дэд системүүд бөгөөд бүх нөөцөд нийтлэг байдаг дэд системүүд нь дэд системүүд юм. Хэрэглэгчийн интерфэйс, мэдээллийн хамгаалалт, удирдлага.

Файлын удирдлага:

OS-ийн бодит техник хангамжийн нарийн төвөгтэй байдлыг "хамгаалах" чадвар нь үйлдлийн системийн үндсэн дэд системүүдийн нэг болох файлын системд маш тод илэрдэг.

Файлын систем нь нэг талдаа хадгалах зөөвөрлөгчийг, нөгөө талаас файлд хандах API (програмчлалын интерфейс) -ийг холбодог. Хэрэглээний программ файлд хандахдаа тухайн файл дахь мэдээлэл хэрхэн байрлаж байгаа, ямар төрлийн физик зөөвөрлөгч (CD, хатуу диск, соронзон соронзон хальс, флаш санах ойн төхөөрөмж) дээр бичигдсэнийг мэдэхгүй. Програмын мэддэг зүйл бол файлын нэр, түүний хэмжээ, шинж чанарууд юм. Энэ өгөгдлийг файлын системийн драйвераас хүлээн авдаг. Энэ нь файлыг хаана, хэрхэн физик зөөвөрлөгч дээр (жишээлбэл, хатуу диск) бичихийг тодорхойлдог файлын систем юм.

Үйлдлийн системийн үүднээс авч үзвэл бүхэл диск нь 512 байт ба түүнээс дээш хэмжээтэй кластеруудын цуглуулга юм. Файлын системийн драйверууд нь кластеруудыг файл, лавлах болгон зохион байгуулдаг (үнэндээ тэдгээр нь тухайн директор доторх файлуудын жагсаалтыг агуулсан файлууд юм). Эдгээр ижил драйверууд нь одоогоор аль кластерууд ашиглагдаж байгаа, аль нь үнэ төлбөргүй, аль нь алдаатай гэж тэмдэглэгдсэнийг хянаж байдаг.

Гэсэн хэдий ч файлын систем нь физик хадгалах хэрэгсэлтэй шууд холбоотой байх албагүй. Виртуал файлын системүүд, түүнчлэн сүлжээний файлын системүүд байдаг бөгөөд эдгээр нь алсын компьютер дээр байрлах файлд хандах энгийн арга юм.

Хамгийн энгийн тохиолдолд тухайн диск дээрх бүх файлууд нэг директорт хадгалагддаг. Энэхүү нэг түвшний схемийг CP/M болон MS-DOS 1.0-ийн анхны хувилбарт ашигласан. Үүрлэсэн лавлах бүхий шаталсан файлын систем нь эхлээд Multics, дараа нь UNIX дээр гарч ирсэн.

зориулсан каталог өөр өөр хөтчүүд DOS/Windows-ийн адил хэд хэдэн тусдаа мод үүсгэх эсвэл бүх дискний нийтлэг нэг мод болгон нэгтгэж болно. UNIX төстэй системүүдӨө.

Үнэн хэрэгтээ DOS/Windows системүүд, мөн UNIX-тэй төстэй системүүдэд “c:”, “d:” гэх мэт дэд сангуудтай нэг үндсэн лавлах байдаг. Эдгээр сангуудад хатуу дискний хуваалтууд суурилагдсан байдаг. Өөрөөр хэлбэл c:\ нь зөвхөн файлын холбоос юм: ///c:/. Гэсэн хэдий ч UNIX-тэй төстэй файлын системүүдээс ялгаатай нь Windows-д үндсэн директор руу бичих, агуулгыг нь үзэхийг хориглодог.

UNIX-д зөвхөн нэг үндсэн директор байдаг бөгөөд бусад бүх файлууд болон лавлахууд түүний доор байрладаг. Диск дээрх файлууд болон директоруудад хандахын тулд та mount командыг ашиглан дискээ холбох хэрэгтэй. Жишээлбэл, CD дээрх файлуудыг нээхийн тулд та үйлдлийн системд "энэ CD дээрх файлын системийг аваад /mnt/cdrom санд үзүүл" гэж хэлэх хэрэгтэй. CD дээр байгаа бүх файлууд болон лавлахууд нь холбох цэг гэж нэрлэгддэг энэ /mnt/cdrom директорт харагдах болно. Ихэнх UNIX-тэй төстэй системүүд дээр зөөврийн дискүүд(уян диск болон CD), флаш диск болон бусад гадаад санах ойн төхөөрөмжүүдийг /mnt, /mount эсвэл /media директорт суулгасан. Unix болон UNIX-тэй төстэй үйлдлийн системүүд нь үйлдлийн систем ачаалах үед дискийг автоматаар холбох боломжийг олгодог.

Файлд ташуу зураас ашиглахыг анхаарна уу Windows системүүд, UNIX болон UNIX-тэй төстэй үйлдлийн системүүд (Windows дээр “\” урвуу зураас, UNIX болон UNIX-тэй төстэй үйлдлийн системүүдэд энгийн ташуу зураас “/” ашиглагддаг)

Нэмж дурдахад, дээрх систем нь зөвхөн физик төхөөрөмжүүдийн файлын системийг төдийгүй тусдаа лавлах (--bind параметр) эсвэл жишээ нь, холбох боломжийг олгодог гэдгийг тэмдэглэх нь зүйтэй. ISO дүрс(гогцооны сонголт). FUSE гэх мэт нэмэлтүүд нь жишээлбэл, FTP дээрх бүхэл бүтэн лавлах болон маш олон тооны өөр өөр нөөцүүдийг холбох боломжийг олгодог.

Бүр илүү төвөгтэй бүтцийг NTFS болон HFS-д ашигладаг. Эдгээрт файлын системүүдфайл бүр нь шинж чанаруудын багц юм. Шинж чанарууд нь зөвхөн уншихад зориулагдсан уламжлалт систем төдийгүй файлын нэр, хэмжээ, тэр ч байтугай агуулгыг агуулдаг. Тиймээс NTFS болон HFS-ийн хувьд файлд хадгалагдаж байгаа зүйл нь түүний шинж чанаруудын зөвхөн нэг юм.

Энэ логикийн дагуу нэг файл нь агуулгын хэд хэдэн хувилбарыг агуулж болно. Тиймээс нэг баримт бичгийн хэд хэдэн хувилбарыг нэг файлд хадгалахаас гадна нэмэлт өгөгдөл (файлын дүрс, файлтай холбоотой програм) хадгалах боломжтой. Энэ байгууллага нь Macintosh дээрх HFS-ийн хувьд ердийн зүйл юм.


32. OS-ийн функциональ бүрэлдэхүүн хэсгүүд. Үйл явцын удирдлага.

Процессын удирдлага:

Компьютерийн үйл ажиллагаанд шууд нөлөөлдөг үйлдлийн системийн хамгийн чухал хэсэг нь процессыг удирдах дэд систем юм. Процесс (эсвэл өөрөөр хэлбэл даалгавар) нь ажиллаж байгаа програмыг дүрсэлсэн хийсвэрлэл юм. Үйлдлийн системийн хувьд процесс нь ажлын нэгж, системийн нөөцийг ашиглах хүсэлт юм.

Олон үйлдэлт (олон процесс) системд процесс нь гурван үндсэн төлөвийн аль нэгэнд байж болно.

ГҮЙЦЭТГЭЛ - процесс нь шаардлагатай бүх нөөцтэй, процессор шууд гүйцэтгэдэг процессын идэвхтэй төлөв байдал;

ХҮЛЭЭЛТ - үйл явцын идэвхгүй байдал, процесс хаагдсан, өөрийн дотоод шалтгааны улмаас гүйцэтгэх боломжгүй, ямар нэгэн үйл явдал тохиолдохыг хүлээж байна, жишээлбэл, оролт гаралтын үйлдлийг дуусгах, өөр хүнээс мессеж хүлээн авах. үйл явц, эсвэл шаардлагатай зарим нөөцийг гаргах;

READY нь мөн процессын идэвхгүй төлөв боловч энэ тохиолдолд гаднах нөхцөл байдлын улмаас процесс хаагдсан: процесс нь түүнд шаардлагатай бүх нөөцтэй, гүйцэтгэхэд бэлэн, харин процессор өөр процессыг гүйцэтгэх завгүй байна.

үед амьдралын мөчлөгпроцесс бүр нь тухайн үйлдлийн системд хэрэгжсэн процессын хуваарь гаргах алгоритмын дагуу нэг төлөвөөс нөгөөд шилждэг.

CP/M стандарт

Микрокомпьютерийн үйлдлийн системийг бүтээх нь OS SR/M-ээс эхэлсэн. Энэ нь 1974 онд бүтээгдсэн бөгөөд дараа нь 8 битийн олон машин дээр суулгасан. Энэхүү үйлдлийн системийн хүрээнд BASIC, Pascal, C, Fortran, Cobol, Lisp, Ada болон бусад олон текстийн хэлнээс орчуулагчдыг багтаасан ихээхэн хэмжээний програм хангамж бий болсон. Эдгээр нь бичгийн машин ашиглахаас хамаагүй хурдан, илүү хялбар баримт бичгийг бэлтгэх боломжийг танд олгоно.

MSX стандарт

Энэхүү стандарт нь зөвхөн үйлдлийн систем төдийгүй сургуулийн компьютерийн техник хангамжийн шинж чанарыг тодорхойлсон. MSX стандартын дагуу машин байх ёстой RAM 16К-аас доошгүй эзэлхүүнтэй, үндсэн хэлний орчуулагчтай 32К байнгын санах ой, 256x192 пикселийн нягтралтай 16 өнгөт график дэлгэц, гурван сувгийн 8 октавын дууны генератор, зэрэгцээ порт принтер болон гаднаас холбогдсон гадаад хөтөчийг удирдах хянагч холбох зориулалттай .

Ийм машины үйлдлийн систем нь дараах шинж чанаруудтай байх ёстой: шаардлагатай санах ой - 16 К-аас ихгүй, системийн дуудлагын түвшинд CP/M-тэй нийцтэй байх, файлын форматтай DOS-тэй нийцтэй байх. гадаад хөтчүүдуян соронзон диск дээр суурилсан, BASIC, C, Fortran, Lisp хэлний орчуулагчдад зориулсан дэмжлэг.

Pi - систем

Хөгжлийн эхний үе шатанд хувийн компьютерууд USCD p-системийн үйлдлийн системийг үүсгэсэн. Энэхүү системийн үндэс нь P-машин гэж нэрлэгддэг программ байсан - бүх нийтийн таамаглалыг дуурайдаг програм компьютер. P-машин нь P-код хэмээх тусгай зааврыг гүйцэтгэх замаар процессор, санах ой болон гадаад төхөөрөмжүүдийн ажиллагааг дуурайдаг. Програм хангамжийн бүрэлдэхүүн хэсгүүд Pi системийг (хөрвүүлэгчийг оруулаад) P кодоор, хэрэглээний программуудыг P код болгон хөрвүүлдэг. Тиймээс гол өвөрмөц онцлогСистем нь компьютерийн төхөөрөмжийн онцлогоос хамгийн бага хамааралтай байсан. Энэ нь Pi-системийг зөөвөрлөх чадварыг баталгаажуулсан зүйл юм Төрөл бүрийн төрөлмашинууд P-кодын авсаархан байдал, тохиромжтой байдлаар хэрэгжсэн пейжерийн механизм нь жижиг RAM-тай компьютер дээр харьцангуй том програмуудыг ажиллуулах боломжийг олгосон.

I/O удирдлага.

I/O төхөөрөмжүүдийг хоёр төрөлд хуваадаг. блок чиглэсэнтөхөөрөмжүүд болон байт чиглэсэнтөхөөрөмжүүд. Блок чиглэсэн төхөөрөмжүүд нь мэдээллийг тогтмол хэмжээтэй блокуудад хадгалдаг бөгөөд тус бүр өөрийн гэсэн хаягтай байдаг. Хамгийн түгээмэл блок чиглэсэн төхөөрөмж бол диск юм. Байт чиглэсэн төхөөрөмжүүд хаяглах боломжгүй бөгөөд хайлтын үйлдлийг зөвшөөрдөггүй; тэдгээр нь байт дарааллыг үүсгэдэг эсвэл хэрэглэдэг. Жишээ нь терминал, шугамын хэвлэгч, сүлжээний адаптерууд. Цахим бүрэлдэхүүн хэсгийг төхөөрөмжийн хянагч эсвэл адаптер гэж нэрлэдэг. Үйлдлийн систем нь хянагчтай харьцдаг. Хянагч нь энгийн функцуудыг гүйцэтгэдэг, алдааг хянаж, засдаг. Хянагч бүр нь төв процессортой холбогдоход ашигладаг хэд хэдэн регистртэй байдаг. Үйлдлийн систем нь удирдлагын регистрүүдэд команд бичих замаар оролт гаралтыг гүйцэтгэдэг. IBM PC уян диск хянагч нь READ, WRITE, SEEK, FORMAT гэх мэт 15 командыг хүлээн авдаг. Командыг хүлээн авмагц процессор хянагчийг орхиж бусад ажлыг гүйцэтгэдэг. Тушаал дуусмагц хянагч нь процессорын хяналтыг үйлдлийн систем рүү шилжүүлэхийн тулд тасалдлыг өгдөг бөгөөд энэ нь үйлдлийн үр дүнг шалгах ёстой. Процессор нь хянагчийн бүртгэлээс мэдээллийг унших замаар төхөөрөмжийн үр дүн, статусыг авдаг.

гол утга I/O програм хангамжийн зохион байгуулалтЭнэ нь хэд хэдэн түвшинд хуваагдахаас бүрдэх бөгөөд доод түвшин нь төхөөрөмжийн шинж чанарыг дээд хэсгээс хамгаалах боломжийг олгодог. хэрэглэгчдэд ээлтэй интерфэйсхэрэглэгчдэд зориулсан.

Түлхүүрзарчим нь төхөөрөмжийн бие даасан байдал. Програмын төрөл нь уян диск эсвэл уян дискнээс өгөгдлийг уншиж байгаа эсэхээс хамаарах ёсгүй хатуу диск. Оролт гаралтын програм хангамжийн өөр нэг чухал асуудал бол алдаатай ажиллах явдал юм. Ерөнхийдөө алдааг техник хангамжид аль болох ойртуулах хэрэгтэй. Хэрэв хянагч унших алдааг илрүүлсэн бол түүнийг засахыг оролдох ёстой. Хэрэв энэ нь амжилтгүй болвол төхөөрөмжийн драйвер алдааг засах ёстой. Зөвхөн доод түвшин алдааг даван туулж чадахгүй бол энэ нь алдаагаа дээд түвшинд мэдээлдэг.

Өөр нэг гол асуудал бол блоклох (синхрон) болон блоклохгүй (асинхрон) дамжуулалтыг ашиглах явдал юм. Ихэнх физик оролт гаралтын үйлдлүүд асинхрон байдлаар хийгддэг - процессор дамжуулалтыг эхлүүлж, тасалдал үүсэх хүртэл өөр ажил руу шилждэг. Оролт гаралтын үйлдлүүдийг хаах шаардлагатай - READ командын дараа өгөгдөл програмын буферт хүрэх хүртэл програм автоматаар түр зогсдог.

Сүүлийн асуудал бол зарим төхөөрөмжүүдийг хуваалцдаг (диск: олон хэрэглэгчид нэгэн зэрэг диск рүү хандах нь асуудал биш), бусад нь зориулагдсан (хэвлэгч: өөр өөр хэрэглэгчдийн хэвлэсэн мөрүүдийг холих боломжгүй).

Эдгээр асуудлыг шийдвэрлэхийн тулд I/O програм хангамжийг дөрвөн давхаргад хуваахыг зөвлөж байна (Зураг 2.30).

· Тасалдалтай харьцах,

· Төхөөрөмжийн драйверууд,

· Үйлдлийн системийн төхөөрөмжөөс хамааралгүй давхарга,

· Тусгай програм хангамжийн давхарга.

Техник хангамжийн тасалдал ба түүний боловсруулалтын тухай ойлголт.

Асинхрон эсвэл гадаад (техник хангамжийн) тасалдал нь гадаад эх үүсвэрээс ирдэг үйл явдал юм (жишээлбэл, захын төхөөрөмжүүд) мөн дурын үед тохиолдож болно: таймераас ирсэн дохио, сүлжээний картэсвэл дискний хөтөч, гарын товчлуурыг дарж, хулганыг хөдөлгөх; Тэд яаралтай хариу үйлдэл хийх (боловсруулах) шаарддаг.

Компьютерийн бараг бүх оролт/гаралтын системүүд тасалдал ашиглан ажилладаг. Тодруулбал, та товчлууруудыг дарах эсвэл хулганыг дарахад техник хангамж тасалдлыг үүсгэдэг. Үүний хариуд систем нь дарагдсан товчлуурын кодыг унших эсвэл хулганы курсорын координатыг санах болно. Тасалдал нь дискний хянагч, адаптераар үүсгэгддэг дотоод сүлжээ, цуваа портууд, аудио адаптер болон бусад төхөөрөмжүүд.