OS/SVS (на IBM) и др. Виртуалната памет се реализира в различните архитектури изцяло софтуерно или хардуерно-софтуерно, при което дисков файл се използва като виртуално удължение на реалната памет, което налага преобразуването на виртуалните адреси в изпълнителни (физически) адреси от реалната памет.
При системите с виртуална памет сумата от адресните пространства на изпълняваните едновременно програми надхвърля размера на реалната памет. Адресното пространство на една програма представлява диапазонът от адреси които тя използва. Това пространство се разделя на части от по 4K, наречени страници. Реалната памет също се дели на части (блокове) с такива размери (наречени още странични рамки). На блокове със същия размер (наречени още странични гнезда) се дели и дисковия файл (page-файл), който се използва като виртуално удължение на реалната памет. По време на работа не всички страници от една програма се намират в реалната памет. Операционната система строи таблица на страниците за всяка една от изпълняващите се програми. В таблицата за всяка страница е записано дали се намира в реалната памет, номерът на блока в който се намира и броят на обръщенията към тази страница. Ако се получи обръщение към адрес от страница, която не е в ОП, операционната система реагира с т. нар. стрáнично прекъсване. То се обработва като входно-изходно прекъсване и като резултат от това в паметта се зарежда необходимата страница, а виртуалният адрес се преобразува в изпълнителен адрес. Непрекъснатият обмен на страници между реалната памет и дисковия файл-виртуално удължение на паметта се нарича стрáничен обмен (paging). При „по-слаби” машини интензивният страничен обмен може да доведе до спадане на производителността на системата. Когато зарежда страница в реалната памет, операционната система трябва да намери или осигури свободен блок. За целта се налага “изхвърляне” на някоя от намиращите се страници от паметта. Използва се стратегията LRU (Last Recently Used), като се “изхвърля” най-малко използваната страница, т. е. страницата с най-малко обръщения към нея. При това обаче може да се появи ефекта, наречен “боксуване”, при който непрекъснато се изхвърля и зарежда една и съща страница. За да се избегне този проблем, алгоритъмът LRU се модифицира, като периодично се нулира броячът на обръщенията към страницата. Това, разбира се, е компромис, тъй като се губи информация за интензивните обръщения, но е необходим, защото в противен случай може да бъде изхвърлена една току що заредена страница, която има нулев брояч след зареждане в реалната памет.
Има различни методи за повишаване бързодействието в режим на виртуална памет:
фиксиране на страници в реалната памет – изключване от стрáничния обмен
работа на някои програми в режим V=R (virtual=real)
резервиране на блокове в реалната памет за стрáничен обмен само за дадена програма
Безспорно виртуализацията на паметта е едно от най-добрите софтуерни решения. Тя решава проблемите с недостига, неефективното използване и фрагментацията на паметта, като заедно с мултипрограмините решения води максимално използване на изчислителните ресурси, които предоставя хардуера.
________________________________________
Операционни системи. Управление на устройствата
Всяко периферно (външно) устройство, което е включено в компютърната конфигурация, трябва да бъде разпознато и адекватно управлявано от операционната система (ОС ).
Периферните (наричат се още „външни”) устройства, според това дали се използват за въвеждане или извеждане на информация се делят на:
- входни
- изходни
- входно/изходни
Управлението на устройствата от страна на ОС включва основно следните функции:
проследяване на състоянието на устройството – свободно, заето, блокирано и др.
предоставяне на устройството за използване от дадена изпълняваща се програма (задача, процес)
освобождаване на устройството
За целта по време на работа ОС строи „вътрешни” таблици, в които отразява състоянието и използването на всяко устройство.
Програмите, които се занимават с конкретното управление на устройствата в терминологията на ОС се наричат драйвери. Процесът на свързване на драйвер към операционната система се нарича инсталиране на драйвера, респ. на устройството. Практически драйверът играе ролята на адаптер на устройството и неговите функции към общите функции на операционната система. Дадено устройство може да се управлява и от стандартен за типа на устройството драйвер, който да не отчита неговите нови функции, но пълното им използване („всички екстри”) става само чрез актуален и създаден специално него драйвер.
Част от управлението на стандартните входно/изходни операции (такива като обмен на ниво байт с клавиатурата, четене/запис на флопидисковите устройства и твърдия диск, управление на серийните и паралелни портове, работа със системния часовник и др.) е изнесено извън операционната система и има специална хардуерна поддръжка в т.нар. BIOS (Basic Input Output System или Базисна входно-изходна система). BIOS има решаваща роля при конфигурирането и тестването на компютърната система, както и при първоначално зареждане (IPL, Initial Programm Load) на операционната система. BIOS е записана в постоянната памет на компютъра и по този начин може да се разглежда и като част от хардуера на компютърната система .
В ранните години на персоналните компютри, пък и в по-късните DOS-времена, BIOS предоставяше съвсем удовлетворително управление на наличните тогава входно-изходни устройства. Към това управление се включва и търсенето и зареждането на драйвери от т.нар. разширителни (адаптерни) карти – например за твърдите дискове, видеокартите, някои мрежови карти. С развитието на хардуера и появата на нови устройства - CD/DVD, USB (Universal Serial Bus), нов тип харддискове, звукови карти, принтери, скенери и др., се налага (и е по-удачно) драйверите за тях да бъдат включвани в състава на операционната система (в нейната база от драйвери) и/или последващо инсталирани при включване на устройството.
Като обобщение, може да се каже, че BIOS предоставя фундаментални услуги, необходими за работата на компютъра и в йерархичния модел на компютърната система формира слоя, който е най-близо до хардуера. Наличието на такава BIOS е предпоставка за универсалността на персоналните компютри.
Основните атрибути на едно периферно устройство са:
тип на устройството – според предназначението и работата му в компютърната система - твърд диск, флопи, CD и т.н.
шифър на устройството – според конкретния производител (фирма), модел, специфични характеристики и др.
При инсталиране на драйвер за дадено устройство от операционната система за него се отделят (назначават) системни входно-изходни ресурси като:
входно-изходен адрес (I/O address), на който устройството се свързва към компютърната система
линии за заявка на прекъсвания (IRQ, Interrupt Request Line) – номер, чрез който устройството ще комуникира (ще се „обажда”) с ОС
адрес за директен достъп до паметта на компютъра за някои устройства (DMA, Direct Memory Access)
В „древността” (времето на операционна система DOS) един от конфликтните моменти е бил именно процеса на инсталиране на нови устройства – нямало е достатъчно гъвкавост при назначаване на входно-изходни ресурси – налагало се е припокриването им и доста често се е стигало до невъзможност за едновременно свързване и работа на някои устройства и респ. разширяване на хардуерната конфигурация. Тези проблеми и идеята за разрешаването им са довели до създаването на технологията „Plug and Play” (PnP) – автоматично разпознаване и конфигуриране на нови устройства при тяхното свързване към компютърната система. Тази технология е създадена на големите фирми, разработчици на хардуер и софтуер – производители на периферни устройства, BIOS и операционни системи. В паметта на едно PnP-периферно устройство призводителят записва по точно утвърден формат т.нар. ресурсни данни на устройството. По-нататък една PnP-BIOS би следвало да разпознае такова устройство и да може да прочете тези ресурсни данни, познавайки и използвайки същия формат. Това може да бъде отложено и за по-късен етап – на ниво операционна система. Първата операционна система, в която бе реализирана технологията Plug and Play е Windows 95. При всичките критики за “изсилването” в тази посока и шеги от рода “Plug and Cry...”, това си бе висока класа достижение. Във Windows 98 имаше дообмисляне и изчистване на въпросите, като технологията се наложи като безспорна. Една изцяло Plug and Play компютърна система изисква всички - периферните устройства, BIOS и операционната система да са Plug and Play.
В зависимост от физическите им характеристики и софтуерния подход към тях има различни методи на използване периферните устройства:
поделено (съвместно) използване – по този начин се използват дисковите устройства. Физическите им характеристики дават възможност за директно позициониране на четящо-записващите глави на определена позиция (писта). Пистите са физически характеристики на твърдия диск, върху тях де факто се записва информацията. При форматиране се инициализират на по-малки единици, наречени сектори (стандартно 1 сектор = 512 B). Всички писти (от всички повърхности на плочите на диска), в дадена позиция на четящо-записващите глави формират „въображаем” цилиндър. Цилиндрите, пистите и секторите се използват при физическото адресиране на записите от диска.
монополно използване – това е случая, при които едно устройство се предоставя от операционната система за използване само от една програма.
спулиране – метод на симулиране на бавните операции като бързи - например „бавното печатане” се преобразува в „бързото записване” на печатния изход в дисков файл). Спулирането осигурява независимост на изпълнението и завършването на дадена програма от операциите по разпечатване, които тя е заявила (т.е. тя не изчаква да завърши физически печатането за нея). Фактическото отпечатване може да стане едновременно с изпълнението на друга/и програми (работа в мултипрограмен режим). Спул-подсистемата има собствено управление и включва използването на дисков файл, в който отделните задачи по разпечатването постъпват последователно, могат да бъдат задържани, стартирани и унищожавани. В някой по-стари операционни системи това бе и единствения начин на въвеждане на задания за изпълнение и получаване на изходни резултати, като освен това бе реализирана система за комуникация между спул-устройствата на една система или между спул-системите на различни машини в мрежа. Те бяха снабдени с голям набор от специални команди за организиране и управление на опашки в спул-областта, за задаване на приоритет на обслужване и др. Дори в DOS, макар, че там не се използва пълноценна спул-система като управление, има пренасочване на печатният изход към дисков файл.
виртуализиране на устройствата – използване на повече устройства отколкото реално са включени в конфигурацията на компютърната система. Освен това виртуализацията дава възможност да се използват и устройства, които липсват в реалната конфигурация, като софтуерно е симулиран техния принцип на работа, а иначе като среда се използват други устройства.
Един от най-често срещаните способи на използване на повече дискове, отколкото реално има включени в компютърната конфигурация е разделянето на реалния твърд диск на няколко „логически” дяла, като всеки от тези дялове се разглежда от операционната система като отделен диск. Адресирането на физическите записи става като се преобразува входно-изходния адрес, заявен от дадена входно-изходна операция, спрямо началото на съответния дял върху реалния диск. В крайна сметка остава усещането за използване на повече устройства, отколкото реално са включени към системата.
Друг практически използван дълго време способ за симулиране на повече дискови устройства са т.нар. RAM-устройства (RAMDRIVE) или RAM-дискети. Както говори и името, за среда се използва RAM паметта на компютъра. В определен момент от развитието на компютърните системи този способ играеше важна роля при зареждане от системна дискета с последващо симулиране на дискетно устройство в RAM и разгръщане (разархивиране) на останалата част от операционната система върху това RAM-устройство. Четенето и записването на такова устройство са много по-бързи от тези на реалното дискетно устройство (заради бързодействието на средата), като освен това RAM-дискетите могат да бъдат и „създадени” с по-голям капацитет от реалните. Разбира се с изключването на компютъра се „губи” и информацията от това устройство (пак заради характера на средата, в която се симулират).
Подготовка (инициализиране) на дисковите носители на информация за работа
Преди първоначалното му използване, както и по всяко друго време (разбира се с цената на изтриването на информацията върху него) даден диск (твърд диск, дискета – наричат се още дисков том) трябва да бъде инициализиран или както е по-популярно - форматиран за работа със средствата на операционната система. Ако твърдият диск е разделен на отделни логически дялове, за всеки от тях се изпълнява отделно форматиране. Форматирането се извършва според правилата на избраната файлова система за съответния диск или дял и включва:
анализ на пистите за дефектни области (allocation unit, клъстери) и маркирането на тези области им като неизползваеми.
пистите се „делят” (инициализират) на по-малки единици, наречени сектори (по подразбиране 1 сектор = 512 B). Когато по-късно по време на работа операционната система разпределя дисково пространство за записване на файлове, тя използва логически единици, наречени клъстери (процесът на форматиране ги нарича още allocation unit). Размерът на един клъстер е равен на 1 един сектор (за дискети) или повече сектори за твърдите дискове и зависи от типа на файловата система и големината на диска (вж. лекцията „Управление на информацията).
изграждане на логическата структура на дисковия том. Логическата структура включва следните области:
сектор за начално зареждане (boot – сектор) – съдържа мини-програма за стартиране на същинската процедура за начално зареждане от този диск. Ако дискът е създаден като системен, на него би следвало да са записани системните файлове на ОС, но дори и да не са, дискът има boot – сектор.
таблица, указваща разпределението на дискa – зависи от типа на файловата система – във файловите системи FAT(16) и FAT32 се нарича именно така – File Allocation Table (FAT). В актуалната файлова система NTFS – това Master File Table (MFT) – обща таблица на файловете – вж. темата „Управление на информацията”)
главна директория (главен каталог, папка) – директориите (папките) имат йерархична организация – като израждането ѝ започва именно от тук. Единствено главната директория се създава по време на форматиране на диска (или логическия дисков дял)
област за данни – голямата област, в която се записват данните (файловете, които ги съдържат)
________________________________________
Операционни системи. Управление на информацията
Частта от операционната система , която управлява информацията се нарича файлова система. Основните функции на файловата система са съхраняване (записване) и четене на информация от външните запомнящи устройства (твърд диск, дискетно устройство, CD/DVD, флаш-памет и др.).
Файл – информация, записана на външно запомнящо устройство. Файловете се организират (групират) в логически групи, наречени папки (директории). Папките имат йерархична организация , като единствено главната директория се създава по време на форматиране на диска.
Концепцията „Всичко е файл” дава възможност за унифициран подход към информацията, съхранявана на външните запомнящи устройства. На ниво операционна система се изпълняват операции като създаване на папки, копиране, преместване, изтриване и търсене на файлове и папки. Друг е въпросът, че някои файлове съдържат програмен код, а други - данни за тези програми. Интерпретирането на съдържанието на различните файлове с данни е работа на самите програми, а кодът на програмите се интерпретира след зареждането им в оперативната памет от управляващия модул на процесора – в крайна сметка изпълнимите файлове съдържат процесорни инструкции, за които може да се каже, че се явяват данни за него.
Един файл с данни може да е структуриран на отделни логически единици – логически записи, всеки от които е структуриран от по-малки логически единици, разглеждани като отделни полета. Логиката на една програма за обработка на данни е изградена върху обработката на един логически запис и използването на полетата от неговата структура, като в цикъл се разчита (в общия случай) на еднаквата структура на всички логически записи. Един логически запис съдържа „свързана” информация за един екземпляр от даден обект, а едно поле съдържа една характеристика (атрибут) на обекта.
Организация на файловете:
- последователна организация – записите се разполагат последователно един след друг, като и достъпът до тях е последователен
- индексно-последователна организация и индексна организация – записите се разполагат последователно, но се изграждат допълнителни вътрешни записи, наречени индекси, които се използват за бързо търсене по дадено поле в основния файл
- директна организация – записите се разполагат последователно, но достъпът до тях е директен, благодарение на специално организирани полета, наречени ключове
- библиотечна организация – тези файлове имат специфична вътрешна организация със собствен каталог, в който има указатели с имената на членовете на библиотеката и вътрешния им адрес във файла. Обслужват се от специални програми – библиотекари. При библиотеките се наблюдава ефект, при който размерът на библиотечните файлове нараства, като вътре има свободни, но недостъпни области – след компресиране на библиотечните файлове, те просто намаляват размера си. Използването на библиотеки осигурява компактност при пренос на софтуер и добра организация на системите за програмиране. Според съдържанието си библиотеките биват:
библиотеки на първичните (source) модули
библиотеки на обектовите модули
библиотеки на изпълнимите модули. В съвременните системи се използват т.нар. библиотеки за динамично свързване (Dynamic Link Library, DLL), който съдържат изпълними модули, написани по такъв начин, че да разрешават динамично свързване на едно тяхно копие, заредено в оперативната памет, към няколко, изпълняващи се едновременно програми. Това намалява размера, както на изпълнимите файлове (.exe), така и на използваната оперативна памет в даден момент от многозадачния режим на работа на операционната система.
Стратегии за разполагане и управление на файлове:
1. Разполагане в непрекъсната област – използвала се е в стари ОС (за големи (mainframe) машини. Първоначално за файловете се задава непрекъсната област от диска в определени единици – цилиндри, писти, сектори или блокове, към която при напълване се добавят (свързват), вече на друго място на диска, нови области. Разполагането в непрекъсната област увеличава бързодействието при работа с дискови файлове, но от друга страна дисковото пространство (външната памет) не се използва ефективно, защото след интензивна работа се появява ефект, при който има множество свободни, но несъседни и поради тази причина неизползваеми дискови области
2. Разполагане в несъседни области („разкъсано” разполагане) – използва се в съвременните ОС с цел да се „уплътни” използването на дисковата памет, като в общия случай файловете се разполагат в несъседни области, наречени клъстери. Размерът на клъстера зависи от големината на диска и типа на използваната файлова система. Например за дискети 1 клъстер = 1 сектор (512 B), а за твърдите дискове е повече от един сектор.
В операционните системи на Microsoft - MSDOS, Windows NT, Windows 9x/2000/XP се използват следните файлови системи:
FAT
FAT 32
NTFS
Файлова система FAT (FAT16)
При форматиране на диска се създава таблицата за разпределение на дисковото пространство (File Allocation Table, FAT). FAT съдържа информация за разположението на файловете, за свободното място на диска и дефектните области (клъстери). FAT е разделена (инициализирана) на отделни елементи с дължина по 16 бита, всеки . Всеки елемент съответства по номер на един клъстер от областта за данни – например 5-ти елемент от FAT съответства на 5-ти клъстер. Един елемент може да съдържа число:
стойност 0, която указва, че съответният клъстер е свободен
номер на следващия клъстер от веригата клъстери с данни за даден файл
индикатор за край на веригата (последен клъстер, респ. елемент - край на файл)
индикатор за дефектен (неизползваем) клъстер
Например, ако един файл заема 5-ти, 8-ми и 15-ти клъстер в областта за данни, съответните елементи във FAT-таблицата ще съдържат следното: 5-ти елемент ще съдържа 8 (по този начин ще сочи, че следващият елемент, респ. клъстер е 8-ми, а от своя страна 8-ми елемент ще съдържа (сочи) 15, като последният във веригата 15-ти елемент ще съдържа индикатор за край. Така операционната система може да проследи цялата верига елементи и съответно клъстери с данни за всеки файл.
Използването на по-големи единици от секторите при записването на файлове, а именно клъстери, намалява ефекта, наречен фрагментация на диска. След дълговременна или интензивна работа с диска, новите файлове могат да бъдат записвани в множество несъседни клъстери и това да доведе до голямо намаляване на бързодействието на дисковите операции (вследствие непрекъснатото препозициониране на четящо-записващите глави). От друга страна, големият размер на клъстерите би довел до неефективно използване на дисковото пространство – особено при записването на голям брой, малки по размер файлове – това е така защото за един файл, дори само от 1 байт, се използва цял клъстер (тогава първият и единствен елемент за този файл във FAT-таблицата ще съдържа индикатор за край). Пространството до края на този клъстер остава неизползваемо. Тъй като дължината на елементите на FAT(16) е само 16 бита (2 B), то максималният брой елементи (респ. брой клъстери) при тази файлова система е точно 216 (65536). При тази постоянна величина на броя на възможните клъстери, с нарастването на размера на твърдите дискове е трябвало да се увеличава размерът на клъстера – така в един момент се е достигнало дори до размер 32 К. Правилото си остава – дори еднобайтов файл заема цял клъстер. В даден момент е станало крайно неефективно и дори невъзможно използването на големи дискове с FAT(16).
Пример: при използване на твърд диск с големина 2 GB (2.230 B =231 B) с FAT, то размерът на клъстера се изчислява като B = (25 x 210) = 32 K.
При създаването на файл, за него в съответната директория (каталог, папка) се отделя един управляващ елемент с дължина 32 B. Това е нещо като „визитка” на файла и съдържа името и разширението на файла, атрибути на файл (1 B – чрез комбинация от битовете се указват атрибутите - само за четене, скрит, системен, етикет на том, каталог), час и дата на създаване или последно изменение на файла, номер на първия клъстер от веригата клъстери на файла, размер на файла. В операционна система MSDOS дължината на името на файл е максимално 8 байта, а разширението - 3 байта. Без да е задължително, разширението е изключително важно, защото чрез него файлът се асоциира със съответната програма или показва, че файлът съдържа изпълним код (.exe или .com файлове). В операционна система Windows 95 и по-високите версии се използва система с дълги имена на файлове (LNFS, Long names file system), като максималната дължина на имената на файловете и папките е 255 символа (разширението е 3 символа). За записване на дългото име на даден файл системата създава толкова допълнителни управляващи елементи за него, колкото са необходими, като чрез манипулиране на атрибутния байт на даден елемент се указва наличието на следващ управляващ елемент. За съвместимост със MSDOS се поддържат и къси имена, получени чрез съкращаване до 8 символа на дългите имена.
Файлова система FAT 32
При тази файлова система дължината на елементите във FAT e 32 бита (4 байта) , което означава по-голям брой клъстери с по-малка дължина и по-ефективно
This entry was posted
at 12:13
and is filed under
Компютърни системи и технологии
. You can follow any responses to this entry through the
.