(.. покажи всичко ..) (.. свий&скрий всичко ..) .. to the bottom ..
За компютритѣ полиномиално
►► .0. Преамбюл: общ раздѣл (.. покажи го преамбюлът ..) (.. разгъна̨то ..)
- Сега съм пенсионер.
- Всѣ̋ка от тѣзи бесѣди е независима от другитѣ и може да се чете отдѣлно.
▼▼ .0. Преамбюл: общ раздѣл (.. скрий го преамбюлът ..) (.. свий го ..) (.. разгъни го ..)
- ►► Прѣдговор на преамбюлът (.. покажи го прѣдговорът на преамбюлът ..)
-
▼▼
Прѣдговор на преамбюлът
(.. скрий го прѣдговорът на преамбюлът ..)
- Прѣз 2018 се пенсионирах, слѣд като придобих изискващитѣ се стаж и възраст за това.
- Пенсионирах се слѣд 40 години работа като компютърен програмист и софту̌ерен инженер.
- В сѫщност бѣ̋х много добър кодировчик.
- Много добрѣ съм се разбирал с компютритѣ.
- Влизал съм им под тенекиитѣ - при битоветѣ.
- Защото тѣ само от битове разбират.
- В тази публикация ще се помѫча̨ да събера̨ спомени от далечното мина̨ло.
- На дърти години човѣк се вдѣтинѣ̋ва.
- Натам съм се запѫтил и аз.
- Това тука ме връща към младежкитѣ ми години.
- Като взема̨т да ме налѣ̋гат и дѣтски спомени, ще стане крайно врѣме да спра̨ да пиша̨.
- Но ако по спомени захвана̨ нѣ̋коя тема, ще прослѣдя̨ и слѣдващото ӥ развитие.
- Тоест, това нѣ̋ма да сѫ само младежки спомени.
- А за занимавка и за гимнастика на умът, не искам да спирам да пиша̨ софту̌ер.
- Упражнявам се на JavaScript.
- Така че ще има много софту̌ер втъка̀н в тази публикация.
- There will be much software behind.
- .. скрий го прѣдговорът на преамбюлът .. (.. скрий го преамбюлът ..) (.. свий го ..) (.. разгъни го ..)
- ►► Всѣ̋ка бесѣда е независима от остана̨литѣ (.. покажи ..)
-
▼▼
Всѣ̋ка бесѣда е независима от остана̨литѣ
(.. скрий ..)
- Всѣ̋ка бесѣда е от този сборник с бесѣди е независима от остана̨литѣ
- и може да се чете отдѣлно.
- Всѣ̋ка една е прѣдизвикана от нѣ̋какъв мой далечен спомен.
- Обикновено се прослѣдява и развитието на проблемът прѣз слѣдващитѣ години.
- Всѣ̋ка от бесѣдитѣ е свързана по нѣ̋какъв начин с компютритѣ.
- Все пак в детайли не съм навлизал.
- От читателитѣ не се изискват знания в областта на компютритѣ или софту̌ерът.
- В нѣ̋кои от бесѣдитѣ е втъка̀н софту̌ер.
- Той демонстрира нѣщо.
- Написан е на JavaScript.
- Може да се тества.
- .. скрий я̨ независимостта на бесѣдитѣ .. (.. скрий го преамбюлът ..) (.. свий го ..) (.. разгъни го ..)
- ◄► Засега не всички планирани бесѣди сѫ завършени.
- Но всички планирани бесѣди си имат вече заглавия и се появяват в таблицата на съдържанието.
- ◄► (.. скрий го преамбюлът ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
►► .0. О, мина̨ло бързозабравимо: 5-тѣ дупки на перфолентата (.. покажи я̨ първата бесѣда ..) (.. разгъна̨то ..) .. към началото ..
- По споменитѣ ми от 9-ти клас.
- Срѣдно образование съм завършил с квалификация "изчислител-кодировчик".
- Кодирането на музиката - музикалнитѣ ноти - се учѣше едно врѣме в 3-то отдѣление.
- А много по-важното кодиране за компютритѣ май само експерти го зная̨т. ::2021-11-05 13:10::
▼▼ .0. О, мина̨ло бързозабравимо: 5-тѣ дупки на перфолентата (.. скрий я̨ първата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
::2021-11-05 13:10::- ►► Прѣдговор, който трѣ̋бва да се прочете първо (.. покажи го прѣдговорът на първата бесѣда ..)
-
▼▼ Прѣдговор, който трѣ̋бва да се прочете първо
(.. скрий го прѣдговорът на първата бесѣда ..)
- Мина̨лото бива мина̨ло незапомнено и мина̨ло бързозабравимо.
- Прогресът на човѣшкото общество се дължи само на напрѣдъкът на технологиитѣ.
- Революциитѣ не мога̨т да водя̨т до прогрес.
- Революциитѣ мога̨т да причиня̨т регрес в обществото, ако се прѣвърна̨т в спирачка на технологичното развитие.
- А иначе революциитѣ сѫ най-обикновени актове на насилие, каквито човѣчеството познава открай врѣме:
- братоубийства, грабежи, войни, масови убийства.
- До напрѣдък тѣ на водя̨т.
- Пенсионирал съм се слѣд 40 години стаж в компютърната индустрия - като компютърен програмист и софту̌ерен инженер.
- И този текст тука е посветен на далечната история на компютърната индустрия,
- далечната - отпрѣди аз да влѣ̋за̨ професионално в индустрията.
- Иска ми се да материализирам споменитѣ си:
- какво съм учил в девети клас в търновската гимназия прѣз 1969.
- Да, в девети клас учѣхме за машинното кодиране на Минск-2.
- Нѣ̋какви общи познания сѫ ни били прѣподавани в десети клас - схеми, алгоритми, кодировки, нотации.
- А в единадесети клас учихме езикът за програмиране от високо ниво Алгол-60.
- В дипломата ми за срѣдно образование има и нѣ̋каква професионална квалификация: изчислител-кодировчик.
- Нашата паралелка 'Д' завършвахме като изчислители-кодировчици.
- Други паралелки завършваха̨ като автомонтıори, електротехници, ..
- Най завиђахме на шофıоритѣ от 'Г'-паралелка - завършваха̨ гимназия с шофıорска книжка.
- Прѣз животът си никога не съм програмирал на Минск-2, нито за Минск-22 или Минск-32.
- Нито пък съм виђал компилатор от Алгол-60.
- Но програми на Алгол-60 съм писал.
- Вѣроятно единственитѣ входно-изходни устройства на "дрѣвнитѣ" компютри Минск-2 сѫ били вход и изход на петпѫтечкова перфолента, заимствана от телеграфът.
- Затова в двата раздѣла тука давам общи свѣдения за:
- Но да караме наред.
- Идеитѣ на Charles Babbage и Ada Lovelace от 19-ти вѣк сѫ изпрѣварващи - врѣмето на компютърната техника още не било дошло.
- Но доста технологични постижения от 19-ти вѣк и от първитѣ десетилѣтия на 20-ти вѣк сѫ допринесли за развитието на компютърнитѣ технологии:
- жакардовитѣ станове
- телеграфът
- холеритовата техника на IBM
- автоматичнитѣ телефонни централи
- и разбира се,
- радиотехниката.
- Напримѣр:
- Елементната база на съврѣменнитѣ компютри е тръгна̨ла от радиотехниката.
- Обаче първия̌т програмируем компютър на Konrad Zuse (1941) е бил построен с елементи на телефонията, на автоматичнитѣ телефонни централи.
- Първо прочетѣте за 7-битовата срѣда̀, 7-битовата срѣда̀, 7-битовата среда̀, 7-битовата среда̀, 7-bitovata sredà, 7-bitovata sredà, за 7-битовата бариера и за прѣодоляването ѝ в началото на 21-ви вѣк.
- Тука ще стане дума за петбитовата кодировка, стандартизирана за петпѫтечковитѣ перфоленти, използвани в телеграфията, но и в "дрѣвнитѣ" компютри Минск-2.
- .. скрий го прѣдговорът на първата бесѣда .. (.. скрий го мина̨лото незапомнено ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Кодировката на петпѫтечковитѣ перфоленти (.. покажи я̨ ..) (.. разгъна̨то ..) .. към началото ..
-
▼▼ Кодировката на петпѫтечковитѣ перфоленти
(.. скрий я̨ ..)
(.. свий я̨ ..)
(.. разгъни я̨ ..)
- ►► Телеграфът (.. покажи ..)
-
▼▼ Телеграфът
(.. скрий го ..)
- В тесен смисъл телеграфията прѣдставлява дистанционно прѣдаване на електрически импулси.
- Важни сѫ съпѫтстващитѣ устройства.
- [A] Перфоратор с клавиатура
- Устройство с клавиатура, приличащо на пишеща машина, което вмѣсто да отпечатва буквитѣ, цифритѣ, точкитѣ и запетайкитѣ на хартия във вид, удобен за човѣк, дупчи кодоветѣ им на перфолента.
- [B] Пишеща машина без клавиатура
- Чете от перфолента кодоветѣ на букви, цифри, точки и запетайки, и ги отпечатва във вид, удобен за човѣк.
- [C] Четец на перфолента
- Чете кодове от перфолента и ги праща по телеграфна линия до отдалечено мѣ̋сто или пък ги подава на компютър - той да прави каквото иска с тѣ̋х.
- [D] Перфоратор без клавиатура
- Дупчи на перфолента или импулситѣ, получени по телеграфна линия от отдалечено мѣ̋сто, или кодоветѣ, получени от компютър.
- В самата телеграфия чрѣз устройство A телеграмата се отпечатва на перфолента,
която се подава на устройство C, за да бѫда̨т пратени кодоветѣ до дестинацията,
къдѣто устройство D дупчи полученитѣ сигнали на перфолента,
която се подава на устройство B, за да бѫде текстът отпечатан на хартия.
Така получената телеграма се врѫчва на получателя̌т. - Тази услуга, която пощитѣ прѣдоставяха̨, е от 19-ти вѣк.
- В началото на 21-ви вѣк телеграфията излѣзе от употрѣба, защото услугата "електронна поща" на интернет и услугата SMS на GSM-комуникациитѣ я̨ замѣстиха̨.
- Българскитѣ пощи спрѣ̋ха̨ да пращат телеграми прѣз 2005.
- Послѣдната телеграма в свѣтът е била пратена на 2013-07-14.
- Устройствата, обслужващи телеграфията, сѫ били използвани при първитѣ компютри, включително и при Минск-2, за които ще стане дума.
- Забѣлѣжка_1: Вѣроятно винѫги е имало хора, способни да чета̨т кодирани перфоленти и да записват на рѫка или да диктуват полученитѣ телеграми.
- Забѣлѣжка_2: Разбира се, телеграфията от послѣднитѣ десетилѣтия е използвала по-съврѣменни електронни устройства с памет.
- (.. скрий го телеграфът ..) (.. скрий я̨ кодировката на петпѫтечковитѣ перфоленти ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Кодировката (.. покажи ..)
-
▼▼ Кодировката
(.. скрий я̨ ..)
Подредба на таблицата:
- Двата реда с десетични числа прѣдставят перфориранитѣ кодове в двѣ нотации: с младшия̌т бит отгоре (BigEndian) и с младшия̌т бит отдолу (LittleEndian).
- Таблицата може да се покаже с три подредби на колонитѣ:
- според горнитѣ битовѣ - тѣ сѫ най-значими: BigEndian
- според долнитѣ битовѣ - тѣ сѫ най-значими: LittleEndian
- според клавиатурата: QWERTY
- Има два регистъра:
- основен регистър - регистър на буквитѣ
- алтернативен регистър - регистър на формитѣ - цифри, скоби, запетаи, ..
- Има и два режима:
- латиница
- кирилица
- Само в странитѣ с писменост на кирилица сѫществува режим кирилица.
- Повечето страни се задоволяват само с режим латиница.
- Четиритѣ реда в таблицата сѫ както слѣдва:
- основен регистър - режим латиница
- алтернативен регистър - режим латиница
- основен регистър - режим кирилица
- алтернативен регистър - режим кирилица
- Контролнитѣ знаци NUL, LF, SP, CR, ESC, DEL се кодират еднакво в двата регистъра и двата режима.
- От основен към алтернативен регистър се прѣминава със ESC.
- А обратно от алтернативен към основен регистър се прѣминава със DEL.
- Макар кодировката да е 5-битова, двата регистъра - основен и алтернативен - позволяват 52 знака, освѣн 6-тѣ контролни знака.
- Ако сѫществува режим кирилица, то слѣд NUL се влиза в този режим, а слѣд DEL се прѣминава в режим латиница - основен регистър.
- NUL означава непродупчена перфолента.
- Ако режим кирилица не сѫществува, NUL не може да се срѣща вѫтрѣ в съобщение.
- Иначе, ако режим кирилица сѫществува, то това е началния̌т режим. Повечето телеграми не налагат прѣвключване към режим латиница, но ако се наложи, това става с DEL.
- (.. скрий я̨ петбитовата кодировката ..) (.. скрий го подраздѣлът ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Перфоленти с повече от пет пѫтечки (.. покажи ..)
-
▼▼ Перфоленти с повече от пет пѫтечки
(.. скрий ..)
- Петпѫтечковата перфолента с кодировката, показана по-горѣ, опрѣдѣля петбитовата бариера.
Компютритѣ Минск-2, за които ще стане дума по-долу, сѫ били установени на тази бариера.
Аз не съм работил с компютри на петбитовата бариера, нито с петпѫтечкови перфоленти. - Когато аз започна̨х работа, перфолентитѣ, използвани от индустрията, бѣ̋ха̨ осемпѫтечкови, а компютритѣ бѣ̋ха̨ установени на седембитовата бариера, в 7-битова срѣда̀.
- Едно врѣме - в първитѣ мои години в индустрията -
перфолентитѣ се използваха̨, за да се заређат тестови програми, или - рѣ̋дко - при начално заређане (boot).
- [Q]Въпрос: А сега как се заређат тестови програми на полу-умрѣ̋л харду̌ер?
- [A]Отговор: Сега цѣлия̌т чип се изхвърля и се замѣня с нов.
- Едно врѣме любимата дрѣха на човѣк в течение на годинитѣ се сдобивала с кръпки.
- Сега човѣк си изхвърля скѫсаната дрѣха, колкото и да му е любима, и си купува нова.
- Това е технологичен прогрес.
- Новото производство е достатъчно евтино и не си струва старото да се ремонтира.
- Сега има реална възможност хартията да се изхвърли от информационнитѣ технологии.
- Пластика, имплантирани чипове - какво му трѣ̋бва на човѣк ..
- Даже любовни писма на хартия вече нѣ̋ма.
- Лично аз имам богат опит с перфокарти, а не толкова с перфоленти.
- Но перфокартитѣ сѫ извън обхватът на този разказ.
- (.. скрий ги 8-пѫтечковитѣ перфоленти ..) (.. скрий я̨ кодировката на петпѫтечковитѣ перфоленти ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- Петпѫтечковата перфолента с кодировката, показана по-горѣ, опрѣдѣля петбитовата бариера.
- ◄► (.. скрий я̨ кодировката на петпѫтечковитѣ перфоленти ..) (.. свий я̨ ..) (.. разгъни я̨ ..) (.. скрий го мина̨лото незапомнено ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Компютритѣ Минск-2 - в далечното мина̨ло на съвѣтската индустрия (.. покажи ..) (.. разгъна̨то ..) .. към началото ..
-
▼▼ Компютритѣ Минск-2 - в далечното мина̨ло на съвѣтската индустрия
(.. скрий ..)
(.. свий ..)
(.. разгъни ..)
- ►► И какво все пак е стана̨ло с компютритѣ Минск-2 (.. покажи ..)
-
▼▼ И какво все пак е стана̨ло с компютритѣ Минск-2
(.. скрий ..)
- Прѣз сѫщата година, когато в девети клас съм учил кодирането на Минск-2, заводът в град Минск бил спрѣ̋л производството на тѣзи компютри.
- Слѣдващитѣ модели Минск-22 и Минск-32 донѣ̋къдѣ сѫ били програмно съвмѣстими с Минск-2.
- Нѣ̋колко компютъра Минск-32 сѫ били инсталирани и експлоатирани в България.
- При Минск-32 за приложно програмиране се използваше най-вече езикът COBOL.
- Освѣн в град Минск, развойни центрове за компютърна техника в бившия̌т Съвѣтски съюз имаше в още нѣ̋колко града. На първо мѣ̋сто в Москва и в Киев. Но България е била клиент на заводът в Минск.
- Както при всичко остана̨ло, и при компютритѣ съвѣтското производство отстѫпваше на западното - и по качество, и по цѣна, и по всичко.
- В срѣдата на 60-тѣ години в индустрията на Запад голѣ̋м успѣх е постигна̨ла фирмата IBM със своята System/360. Донѣ̋къдѣ била стана̨ла индустриален стандарт, с развит пазар не само за харду̌ер, но и за софту̌ер.
- Във връзка с това в Москва сѫ рѣшили да направя̨т "голѣ̋м скок".
- Издадена е била командата всички стари проекти да се канцелират и всички ресурси да се впрегна̨т в reverse-engineering на IBM System/360 под означението ЕС ЭВМ.
- Повече никакви странни модели със странни архитектури!
- Равняваме се по първитѣ. Крадем от първитѣ.
- Равняваме се по IBM. Крадем от IBM.
- Слѣд години почна̨хме да крадем и от фирмата DEC.
- В reverse-engineering-ът бѣ̋х добър.
- Та това е сложило край на компютритѣ от серията Минск.
- Специалиститѣ от град Минск и тамошния̌т завод успѣшно сѫ се прѣквалифицирали за IBM System/360, пардон за ЕС ЭВМ.
- Само да отбѣлѣжа̨, че независимата държава Бѣлорусия е наслѣдила от бившия̌т Съвѣтски съюз сравнително развита компютърна индустрия.
- По-развита от българската.
- (.. скрий го края̌т на Минск-2 ..) (.. скрий го подраздѣлът за компютритѣ Минск-2 ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Отклонение: Из "дрѣвноститѣ" на българската компютърна индустрия (.. покажи ..)
-
▼▼ Отклонение: Из "дрѣвноститѣ" на българската компютърна индустрия
(.. скрий ..)
- Като студент в университетът и в първитѣ години на професионалната ми кариера съм работил на IBM System/360 (т.е. на ЕС ЭВМ). На изложеното в това отклонение не съм свидѣтел.
- Първо и Второ.
- Първо. В годинитѣ 1960-63 български учени в един екземпляр сѫ разработили компютър Витоша.
- Ето нѣ̋кои фрагментарни свѣдения за него.
- В машинната инструкция се указват адреситѣ не само на операндитѣ, но и на слѣдващата инструкция. Ето защо.
- Оперативната памет (RAMът) е бил[а] реализиран[а] на магнитен барабан.
- Докато централния̌т процесор изпълнява текущата инструкция, барабанът се е завъртѣ̋л и е подмина̨л мѣ̋стото на слѣдващата по разположение инструкция. Затова се налага в машинната команда да се укаже адресът на само на операндитѣ, но и на слѣдващата инструкция за изпълнение.
- Второ.
Прѣз годинитѣ 1967-1971 в софийския̌т ЗИТ (заводът за изчислителна техника) се произвеђали компютри с означение ЗИТ-151,
по лиценз за Facom-230–30 от японската фирма Facom.
- Нѣ̋кои новосъздадени териториални изчислителни центрове, наред със съвѣтскитѣ компютри модѣл Минск-32, били оборудвани и с компютри ЗИТ-151 (Facom).
- Kомпютритѣ ЗИТ-151 (Facom), както и компютритѣ Минск-32, нѣ̋мали дискова памет, т.е. външна енерго-независима (трайна) памет с бърз достѫп. Външната им памет е била на магнитни ленти, a оперативната им памет - на феромагнитни мрѣжички (core: connecting others reaching everyone).
- Производството на ЗИТ-151 е било спрѣ̋но, когато свыше е дошла височайша заповѣд всичкитѣ усилия на компютърнитѣ специалисти в пространството от Бранденбургската врата до Владивосток да се включа̨т в reverse-engineering (разбирай крадене) на продуктовата линия System/360 на фирмата IBM. Не само ЗИТ-151 е бил спрѣ̋н от производство, сѫщото е сполетѣ̋ло и Минск-32, както и ред други съвѣтски разработки.
- Забѣлѣжѣте, че българската компютърна индустрия (а вѣроятно и съвѣтската) е била подтикна̨та към кражби на интелектуална собственост едва с височайшата заповѣд да се слѣдва IBM System/360.
- Прѣз 80-тѣ в Чехословакия бѣ̋ха̨ разработили оригинална операционна система за IBM System/370. Дори фирмата IBM нѣ̋маше такава разработка. Да, като всѣки нов софту̌ер, чешката система бѣ доста бъгава, но другитѣ страни от СИВ можѣхме да помогнем в дебъгването. Нищо такова не стана̨. Чешката система бѣ изхвърлена.
- Неусѣтно стигна̨х до събития, на които съм свидѣтел.
- Общо наблюдение: Както и при всички остана̨ли продукти, компютритѣ западно производство по качество и надѣђност в пѫти надвишаваха̨ компютритѣ съвѣтско производство. Които пък от своя страна по качество и надѣђност надвишаваха̨ компютритѣ българско производство.
- (.. скрий ги дрѣвноститѣ на българската компютърна индустрия ..) (.. скрий го подраздѣлът за компютритѣ Минск-2 ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Пак отклонение: бит и байт (.. покажи ..)
-
▼▼ Пак отклонение: бит и байт
(.. скрий ..)
- В паметта на компютритѣ има битове, много битове.
- Един бит има двѣ състояния.
- Това означава, че в един бит от паметта на компютърът се записва един бит информация.
- Битът е естествено понятие.
- Един бит има двѣ състояния. Тѣ физически мога̨т да имат различно изражение.
- Напримѣр на опрѣдѣлена позиция на перфолентата нѣ̋ма дупка или има дупка.
- Обаче е прието хората да означават двѣтѣ състояния на бит с цифритѣ 0 и 1.
- Най-често се използват не отдѣлни битове, а групи от сѫсѣдни битове, които прѣдставят нѣ̋какво число или код.
- Когато централния̌т процесор чете данни от оперативната памет (от RAMът) или записва там данни, винѫги чете или пише наведнѫж група от сѫсѣдни битове.
- Когато централния̌т процесор чете данни от оперативната памет (от RAMът) или записва там данни, той адресира мѣ̋стото.
- Адресът прѣдставлява число, което обикновено се интерпретира като двоично число без знак.
- Стѫпката на адреситѣ нѣ̋кога бѣше основна част от компютърната архитектура.
- Прѣз колко бита адресът на мѣ̋стото в оперативната памет се промѣня с единица:
- При Минск-2: прѣз 37 бита.
- При ЗИТ-151 (Facom-230): прѣз 10 бита.
- При ИЗОТ-310 (PDP-8): прѣз 12 бита.
- При съврѣменнитѣ компютри тази стѫпка е винѫги осем (8).
- Група от осем сѫсѣдни байта на общ адрес от паметта е била нарѣчена байт (byte).
- Тази архитектурна черта на съврѣменнитѣ компютри се нарича байтова организация.
- Тази мода се е установила вѣроятно заради доминирането на IBM System/360 в момент от мина̨лото.
- У нас понятието байт и компютри с байтова организация се появиха̨ с IBM System/360 и ЕС ЭВМ.
- Компютритѣ Витоша, Минск-2 и ЗИТ-151, за които стана̨ дума, нѣ̋мат байтова организация и понятието байт при тѣ̋х не се използва.
- ◄►
Отклонение_1: Относно мѣркитѣ за количество информация.
- Основната мѣ̋рка за количество информация, зададена от природата, е бит.
- Обикновено скоростта на интернет се мѣри в "Мегабитове на секунда" - MegaBits per second - Mbps.
- Мегабит - MegaBit - това сѫ (1024*1024=)1048576 бита.
- Не се използва байт, понеже отдѣлнитѣ битове от един байт мога̨т да пѫтуват по различни пѫтища из дебритѣ на интернет.
- Осем бита информация прѣдставляват един байт (byte).
- 1024 байта прѣдставляват един килобайт (kilobyte, Kb).
- 1024 килобайта прѣдставляват един мегабайт (megabyte, Mb, голѣ̋м байт).
- 1024 мегабайта прѣдставляват един гигабайт (gigabyte, Gb, гигантски байт).
- 1024 гигабайта прѣдставляват един терабайт (terabyte, Tb, звѣрски байт).
- Основната мѣ̋рка за количество информация, зададена от природата, е бит.
- ►► Отклонение_2: Да обясня̨ терминитѣ 16-битови, 32-битови или 64-битови компютри (.. покажи ..)
-
▼▼ Отклонение_2: Да обясня̨ терминитѣ 16-битови, 32-битови или 64-битови компютри
(.. скрий ..)
- И тъй, компютритѣ сѫ с байтова организация. В паметта им битоветѣ сѫ организирани в байтове.
- В един байт може да се запише число (двоично без знак) от 0 до 255.
- Ако адресът на байт от паметта се съдържаше само в един байт, то щѣше да е възможно да се адресират само 256 байта - твърдѣ малко за почти всѣ̋ко приложение.
- Ето защо за адреси се използват по-голѣми числа (двоични без знак), записани в нѣ̋колко сѫсѣдни байта.
- Ако адресът се съдържа в два сѫсѣдни байта, то компютърът ще може непосрѣдствено да адресира 65536 байта (с двоично беззнаково число међу 0 и 65535).
- Такъв компютър се означава като 16-битов.
- Ако адресът се съдържа в четири сѫсѣдни байта, то компютърът ще може непосрѣдствено да адресира 4294967296 байта или 4 GigaBytes (с двоично беззнаково число међу 0 и 4294967295).
- Такъв компютър се означава като 32-битов.
- Ако адресът се съдържа в осем сѫсѣдни байта, то компютърът ще може да има непосрѣдствен достѫп до адресно пространство с космически размѣри.
- Такъв компютър се означава като 64-битов.
- И тъй, компютърът е с байтова организация и използва за адреси беззнакови двоични числа, разположени в нѣ̋колко сѫсѣдни байта.
- Всѣки от тѣзи нѣ̋колко сѫсѣдни байта, заедно прѣдставляващи беззнаково двоично число, използвано за адрес, всѣки от тѣ̋х си има свой адрес.
- Но адреситѣ им сѫ сѫсѣдни числа. Най-малкото от тѣзи числа се използва за адрес на адресът.
- Адресът на адресът адресира адрес - затова е адрес на адресът. Но това си е адрес, значи е и адрес на байт. Е, този байт каква позиция има в числото, в беззнаковото двоично число, прѣдставляващо адресът?
- Ако това е младшия̌т байт - компютърът е LittleEndian.
- Ако това е старшия̌т байт - компютърът е BigEndian.
- Компютритѣ от серията ЕС ЭВМ (IBM System/360/370) сѫ BigEndian.
- Компютритѣ с архитектури PDP-11 (DEC), VAX (DEC), X86 (Intel) сѫ LittleEndian.
- Характеристиката LittleEndian/BigEndian има значение и при кодировкитѣ, когато различни компютри си обмѣнят кодове, понеже тя се отнася не само до адреситѣ, които сѫ двоични беззнакови числа, но и при всѣ̋какви числа.
- (.. скрий го отклонението за 16-32-64-битовитѣ компютри ..)
- (.. скрий го отклонението за бит и байт ..) (.. свий го ..) (.. разгъни го ..) (.. скрий го подраздѣлът за компютритѣ Минск-2 ..) (.. свий го ..) (.. разгъни го ..)
- ►► Нѣ̋кои свѣдения за компютритѣ Минск-2 (.. покажи ..)
-
▼▼ Нѣ̋кои свѣдения за компютритѣ Минск-2
(.. скрий ..)
- Наврѣмето знаѣх да пиша̨ машинни програми за Минск-2.
- Сега съм забравил. Цѣлта на този текст е да си припомня̨, каквото мога̨.
- Прѣз професионалната си кариера владѣѣх машинния̌т код на IBM/System/360/370, PDP-11 и VAX.
- Но това бѣше прѣз първата половина на професионалната ми кариера.
- Прѣз втората половина на професионалната ми кариера не ми се е налагало да слизам на това ниво.
- Минск-2 бѣше 37-битов компютър.
- Сѫсѣдни 37 бита от паметта образуваха̨ клѣтка (memory cell, ячейка памяти).
- Всѣ̋ка клѣтка си има адрес.
- Адресът прѣдставлява 12-битово двоично число без знак.
- Слѣдователно, адресът прѣдставлява число от 0 до 4095.
- При моделът Минск-22 адресът е 13-битово число от 0 до 8191.
- Слѣдователно, при Минск-2 максималния̌т и реалния̌т размѣр на оперативната памет е 4096 37-битови клѣтки, или общо (4096*37=) 151552 бита, което е 18944 съврѣменни байта, 18.5 килобайта.
- При моделът Минск-22 - двойно.
- Когато с такива адреси работѣха̨ хора - програмисти и кодировчици, един 12-битов адрес се прѣдставяше чрѣз 4-цифрово беззнаково число в осмична система от 0000 до 7777 (което значи от 0 до 4095 десетично).
- И тъй, размѣрът на оперативната памет при Минск-2 в съврѣменни мѣрки е 18 и половина килобайта.
- За сравнение:
- Когато завърших и постѫпих на работа, компютърът, с който си имах работа, имаше оперативната памет 128 килобайта. ЕС ЭВМ (IBM System/360).
- Едно врѣме 32-битовото адресно пространство на VAX (4 гигабайта) ни изглеђаше огромно.
- Личния̌т ми лаптоп, на който пиша̨ това, има 16 гигабайта оперативна памет.
- Друго компютърче, лично мое, пак с нѣ̋колко гигабайта памет, си го нося̨ в џобът и го ползвам като телефонче.
- Свидѣтел съм и на дрѣвнитѣ, и на модернитѣ врѣмена.
- Клѣтката, както писах, прѣдставлява 37 сѫсѣдни бита.
- Разбира се, такава клѣтка можѣше да съдържа 37-битово двоично число със или без знак.
- Компютърът можѣше да извършва операции с такива числа.
- Сѫщо така, една такава клѣтка можѣше да съдържа машинна команда за изпълнение.
- Когато с такива 37-битови числа или машинни команди работѣха̨ хора - програмисти и кодировчици,
една 37-битова клѣтка се прѣдставяше чрѣз 12-цифрово число в осмична система със знак отпрѣд.
- Напримѣр, +100001770200.
- Като двоично число (с фиксирана точка) това е числото 8590454912 в десетичен запис.
- Като машинна команда, тази 37-битова клѣтка инструктира компютърът:
- Да прочете в суматорът съдържанието на клѣтка на адрес 0177 осмично (десетично 127).
- Да прибави към него съдържанието на клѣтка на адрес 0200 осмично (десетично 128).
- Резултатът от суматорът (сумата на двѣтѣ числа) да запише обратно в паметта на адрес 0200 осмично (десетично 128).
- Общия̌т формат на машинната команда при Минск-2 е слѣдния̌т:
- Старшитѣ 7 бита сѫ кодът на операцията.
- Остават 30 бита.
- Слѣдващитѣ 6 бита задават индексния̌т регистър.
- Остават 24 бита.
- Слѣдват двата операнда, всѣки указан с 12-битов адрес.
- Всичкитѣ битове в клѣтката влѣ̋зоха̨ в употрѣба.
- Старшитѣ 7 бита сѫ кодът на операцията.
- Относно индексния̌т регистър.
- Обикновено централния̌т процесор на един компютър има на свое разположение близо до себе си, "на една рѫка разстояние", нѣ̋колко регистъра, съдържащи данни, нужни в текущия̌т момент или пък в непосрѣдственото бѫдеще.
- Броя̌т на тѣзи регистри не може да е много голѣ̋м, понеже програмиращитѣ на машинен език или на асемблер трѣ̋бва да държа̨т тѣзи регистри в човѣшката си памет.
- 16 е прилично число за този брой.
- Ако тѣ сѫ 16, такъв регистър се указва с число от 0 до 15.
- Диапазонът от 0 до 15 е миниатюрно адресно пространство за тѣзи регистри, извън адресното пространство на оперативната памет.
- Оперативната памет е "на един поглед разстояние", по-далече от регистритѣ.
- В компютърът Минск-2 практически има само един такъв регистър - суматорът. Той винѫги се указва неявно и не се нуђае от адрес.
- Той - суматорът - не може да служи за индексен регистър.
- В машинната команда на Минск-2 за адрес на клѣтка от оперативната памет (за адрес на операнд) се задѣлят 12 бита, а за номер на индексен регистър се задѣлят 6 бита.
- Възможнитѣ адреси на клѣтки от паметта осмично сѫ от 0000 до 7777, или десетично от 0 до 4095.
- В 6-тѣ бита, задѣлени за номерът на индексния̌т регистър, може да се запише осмично число от 00 до 77, или десетично от 0 до 63.
- В Минск-2 първитѣ 64 клѣтки от оперативната памет, клѣткитѣ с адреси от 00 до 77 осмично или 0 до 63 десетично, мога̨т да се използват като индексни регистри.
- Адресирането на тѣзи клѣтки с 12-битов адрес на операнд си остава възможно.
- В Минск-22 като индексни регистри мога̨т да се използват само първитѣ 16 клѣтки от паметта.
- За адресирането им сѫ достатъчни 4 бита: от 00 до 17 осмично или от 0 до 15 десетично.
- В Минск-22 за всѣки от двата операнда се взема един бит и се слага като старши бит на адресът на операндът.
- Така в Минск-22 адреситѣ на операндитѣ стават 13-битови, което позволява максимален размѣр на оперативната памет 8192 37-битови клѣтки.
- Как в Минск-2 се използва индексния̌т регистър.
- От неговитѣ 37 бита, само 24-тѣ бита, разположени на позиция на адрес на операнд, се използват.
- Остана̨литѣ битове трѣ̋бва да сѫ нули или се приемат за нули.
- Съдържанието на индексния̌т регистър се добавя към машинната команда.
- По този начин адреситѣ на двата операнда мога̨т да бѫда̨т модифицирани.
- Тази техника е необходима при програмиране на цикли.
- Помня̨, че в архитектурата IBM/System/360/370 (ЕС ЭВМ) да се укаже номер 0 (нула) за индексен или за базисен регистър означава да не се използва такъв регистър.
- Не помня̨ дали подобно правило имаше и при Минск-2.
- Заключение: Колко първобитно е било машинното програмиране за Минск-2.
- В девети клас никой не ни е учил към какъв интерфейс да се придържаме при извикване на подпрограма.
- Явно, при Минск-2 човѣк сам е трѣ̋бвало да си разработи такъв интерфейс.
- За сравнение, при IBM/System/360/370 (ЕС ЭВМ) и при всички слѣдващи компютърни архитектури, ако не знаеш този интерфейс, значи не владѣеш машинното програмиране.
- Изключително трудно е програмата да се направи relocatable.
- Слѣдващитѣ компютърни архитектури прѣдоставят такива възможности.
- Сега практически всѣки компилатор произвеђа позиционно-независим код (PIC: position-independent code).
- Истински стек (stack) нѣ̋маше и в архитектурата IBM/System/360/370 (ЕС ЭВМ).
- Не е оправдано в Минск-2 да очакваме улеснения за stack.
- Има ли смисъл изобщо да се говори за sharable-програми, понеже нѣ̋ма много нишки (threads), нѣ̋ма много процеси, нѣ̋ма много пoтрѣбители.
- Изключително трудно е програмата да се направи reentrant.
- В частност, изключително трудно е да се програмира рекурсия.
- Чудя̨ се дали за машинитѣ Минск е имало компилатор на Алгол.
- Защо в единадесети клас учихме Алгол?
- Експлоатацията на компютритѣ Минск-32 у нас се е основавала на Кобол.
- И послѣдно: нѣ̋мам прѣдстава каква дѫлбочина на софту̌ерът е била достигна̨та при Минск-2.
- (.. скрий ги свѣденията за компютритѣ Минск-2 ..) (.. скрий го подраздѣлът за компютритѣ Минск-2 ..) (.. свий го ..) (.. разгъни го ..)
- ◄► (.. скрий ги компютритѣ Минск-2 ..) (.. свий ги ..) (.. разгъни ги ..) (.. скрий го мина̨лото незапомнено ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
-
►► References: прѣпратки
(.. покажи ги ..)
-
▼▼ References: прѣпратки
(.. скрий ги ..)
(.. скрий го мина̨лото незапомнено ..)
(.. свий го ..)
(.. разгъни го ..)
- christotamarin.blogspot.com: 7-битовата срѣда̀
- christotamarin.blogspot.com: The JCUKEN keyboard layout
- christotamarin.blogspot.com: 7-битовата срѣда̀
- christotamarin.blogspot.com: The JCUKEN keyboard layout
- christotamarin.blogspot.com: 7-битовата среда̀
- christotamarin.blogspot.com: The JCUKEN keyboard layout
- christotamarin.blogspot.com: 7-битовата среда̀
- christotamarin.blogspot.com: The JCUKEN keyboard layout
- christotamarin.blogspot.com: 7-bitovata sredà
- christotamarin.blogspot.com: The JCUKEN keyboard layout
- christotamarin.blogspot.com: 7-bitovata sredà
- christotamarin.blogspot.com: The JCUKEN keyboard layout
- wikipedia: Baudot code#ITA2
- wikipedia: МТК-2
- wikipedia: Punched tape
- Виртуальный компьютерный музей: Серия ЭВМ «Минск»
- Виртуальный компьютерный музей: Электронная цифровая вычислительная машина Минск-2
- ◄► (.. скрий я̨ първата бесѣда ..) (.. свий я̨ ..) (.. посвий или поразгъни ..) (.. разгъни я̨ ..) .. към началото ..
►► .0. За компютритѣ полиномиално (.. покажи я̨ втората бесѣда ..) (.. разгъна̨то ..) .. към началото ..
- По споменитѣ ми от 11-ти клас, 1971..72.
- Иска ми се да си докажа̨, че сега не съм по-тѫп, отколкото съм бил тогава.
- Заглавието на тази бесѣда го сложих като заглавие на цѣлия̌т този сборник с бесѣди.
▼▼ .0. За компютритѣ полиномиално (.. скрий я̨ втората бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Постановка на задачата (.. покажи го прѣдговорът на бесѣдата ..) (.. покажи го разгъна̨то ..)
-
▼▼
Постановка на задачата
(.. скрий го прѣдговорът на бесѣдата ..)
(.. свий го ..)
(.. разгъни го ..)
- ►► Срѣдношколски спомени (.. покажи ..)
-
▼▼
Срѣдношколски спомени
(.. скрий ..)
- Завършил съм гимназия (11-ти клас) прѣз 1972 със специалност "изчислител-кодировчик".
- Съученицитѣ ми от сѫсѣдната "Г" паралелка завършваха̨ като шофıори.
- В деня̨т на навършване на пълнолѣтив всѣки от тѣ̋х можѣше да отиде да си я̨ вземе шофıорската книжка.
- В 11-ти клас по прѣдмѣтът за компютърна подготовка (АСМ) изучавахме езикът за програмиране Algol-60.
- Компилатор от Algol-60 не съм виђал.
- Езикът се използваше за публикуване на алгоритми,
- което значи, че аз съм го използвал по прѣдназначение.
- В Algol-60 имаше странно прѣдаване на параметритѣ към подпрограмитѣ.
- А това бѣше трудно за реализация.
- Как да е. Макар езикът Algol-60 да не се използваше за реално програмиране, синтаксисът му е повлиял на много други компютърни езици (PL/I, Pascal, C, Java, JavaScript, ..).
- Написах програма на Algol-60 за намиране на реалнитѣ корени на полином с реални коефициенти.
- Учителя̌т ни по математика я̨ прати в нѣ̋какво списание и май я̨ публикуваха̨.
- Но тогава тя не бѣше тествана.
- (.. скрий ги срѣдношколскитѣ ми спомени ..) (.. скрий го прѣдговорът на втората бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Завършил съм гимназия (11-ти клас) прѣз 1972 със специалност "изчислител-кодировчик".
- ►► Спомен от около 1980 (.. покажи ..)
-
▼▼
Спомен от около 1980
(.. скрий ..)
- Когато прѣз 1979 постѫпих на работа, по едно врѣме получих неограничен достѫп до компютър ЕС-1020 (равностоен с младши модел на IBM/360).
- Рѣших да не стоя̨ без работа, а да изтествам алгоритъмът на програмата за намирането на реалнитѣ корени на полином с реални коефициенти, която бѣ̋х написал като ученик в 11-ти клас на езикът Algol-60.
- Алгоритъмът го помнѣх.
- Написах програмата на езикът PL/I.
- Наложи се да симулирам рекурсията.
- Да, програмата работѣше.
- Но тестването ӥ бѣше повърхностно.
- Нѣ̋мах врѣме за повече.
- (.. скрий го споменът ми от около 1980 ..) (.. скрий го прѣдговорът на втората бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Като пенсионер се връщам към споменитѣ си отпрѣди десетилѣтия (.. покажи ..)
-
▼▼
Като пенсионер се връщам към споменитѣ си отпрѣди десетилѣтия
(.. скрий ..)
- Дал ми сега Господ много врѣме.
- Мога̨ да се върна̨ към задачата за намирането на реалнитѣ корени на полином с реални коефициенти.
- Имам врѣме за обстойно тестване.
- Имам врѣме да разработя̨ и срѣда̀ за тестване.
- Технологиитѣ много напрѣдна̨ха̨.
- Мога̨ да пиша̨ на език като JavaScript и "програмата да се публикува за всенародно тестване".
- Не си поставям за цѣл да гоня̨ най-мощното и най-напрѣдничавото.
- Има вѣроятно срѣдства за чертане на графики, което би могло добрѣ да илюстрира бесѣдата.
- Но все пак, софту̌ерът, който ползвам, трѣ̋бва да ми е лесно достѫпен, да го има и на моето лаптопче, и на почти всѣ̋ко друго компютърче - лаптопче, таблетче или смартфонче.
- Като пенсионер нѣ̋мам програмистки достѫп до сървър.
- Затова - JavaScript.
- (.. скрий го пенсионерското ми ежедневи ..) (.. скрий го прѣдговорът на втората бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ◄►
Намирането на реалнитѣ корени на полином с реални коефициенти -
- това е задачата.
- ►► Задачата е математическа и алгоритъмът се основава на математиката (.. покажи ..)
-
▼▼
Задачата е математическа и алгоритъмът се основава на математиката
(.. скрий ..)
- Нѣ̋ма да изнасям урок по математика.
- Нищо нѣ̋ма и да доказвам тука.
- Софту̌ер се тества, не се доказва.
- Но нѣ̋кои нѣща - основанията за алгоритъмът - трѣ̋бва да се напиша̨т.
- Нека аргументът на полиномът, както обикновено, да означаваме с буквата x.
- Ако x0 е корен на полиномът (на многочлѣнът), тогава за стойност на аргументът x0
стойността на полиномът е нула (0).
Това е дефиниция на корен на полином. - Ако x0 е корен на полиномът (на многочлѣнът), тогава биномът (двучлѣнът) (x - x0) е дѣлител на полиномът.
- Коренът на полиномът си има своята кратност.
- Ако x0 е двукратен корен на полиномът, тогава (x - x0)2 е негов дѣлител.
- Ако x0 е трикратен корен на полиномът, тогава (x - x0)3 е негов дѣлител.
- Без ограничение на общността можем да считаме, че старшия̌т коефициент на полиномът е положителен.
- Ако е отрицателен, ще го умножим полиномът по -1 и ще получим полином с положителен старши коефициент и със сѫщитѣ корени.
- Полиномът е гладка непрѣкѫсна̨та функция.
- Щом старшия̌т коефициент на полиномът е положителен, то той клони към +∞, когато аргументът клони към +∞.
- Ако при нѣ̋каква стойност на аргументът x1 стойността на полиномът е отрицателна, то нѣ̋къде в интервалът от x1 до +∞ графиката му ще прѣсѣче абсцисната ос, тоест нѣ̋къде в интервалът от x1 до +∞ сѫществува поне един корен на полиномът.
- Щом старшия̌т коефициент на полиномът е положителен, когато аргументът клони към −∞,
полиномитѣ от нечетна степен клоня̨т към −∞, а
полиномитѣ от четна степен - към +∞.
- Ако при нѣ̋каква стойност на аргументът x1 стойността на полином от четна степен е отрицателна, то нѣ̋къде в интервалът от −∞ до x1 сѫществува поне един корен.
- Ако при нѣ̋каква стойност на аргументът x1 стойността на полином от нечетна степен е положителна, то нѣ̋къде в интервалът от −∞ до x1 сѫществува поне един корен.
- Ясно е, че полиномът се разглеђа като функция на аргументът си.
- И като функция той има производна.
- Производната на полином е пак полином, но с една степен по-ниска.
- Ако x0 е двукратен корен на полиномът, тогава x0 е корен и на производната.
- Ако x0 е трикратен корен на полиномът, тогава x0 е корен и на производната и на нейната производна (тоест на първата и на втората производна).
- Полиномът е гладка непрѣкѫсна̨та функция.
- Ако x0 е корен на производната, тогава при тази стойност на аргументът x0 самия̌т полином има или локален минимум, или локален максимум, или инфлексна точка.
- Ако x1 е най-малкия̌т корен на производната, тогава в отворения̌т интервал от −∞ до x1 сѫществува най-много един корен на полиномът.
- Ако x2 е най-голѣмия̌т корен на производната, тогава в отворения̌т интервал от x2 до +∞ сѫществува най-много един корен на полиномът.
- Ако x1 и x2 сѫ два послѣдователни корени на производната, тогава в отворения̌т интервал от x1 до x2 сѫществува най-много един корен на полиномът.
- (.. скрий ги математическитѣ основи на алгоритъмът ..) (.. скрий го прѣдговорът на втората бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Самия̌т алгоритъм (.. покажи ..)
-
▼▼
Самия̌т алгоритъм е рекурсивен.
(.. скрий ..)
- Реалнитѣ корени на полиномът се намират, слѣд като сме намѣрили реалнитѣ корени на производната му.
- Производната на един полином пак е полином, но от по-ниска степен.
- Коренът на полином от първа степен се намира елементарно.
- Във всѣки един от интервалитѣ, опрѣдѣлени от коренитѣ на производната, може да има най-много един корен.
- Дали има или нѣ̋ма - това се опрѣдѣля от стойноститѣ на полиномът в краищата на интервалът.
- Ако бѫде опрѣдѣлено, че в интервалът има корен, интервалът се дѣли на два по-малки интервала, и се опрѣдѣля в кой от тѣ̋х е коренът.
- Ако интервалът, за който знаем, че съдържа корен, стане достатъчно малък, това значи, че сме го намѣрили коренът.
- Колко малък да стане интервалът?
Каквато точност на резултатът ни е нужна. - (.. скрий го алгоритъмът ..) (.. скрий го прѣдговорът на втората бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Аналогичната задача в полето на комплекснитѣ числа (.. покажи ..)
-
▼▼
Аналогичната задача в полето на комплекснитѣ числа
(.. скрий ..)
- За обобщението в полето на комплекснитѣ числа може да се докаже слѣдното:
- Един полином от n-та степен с коефициенти от полето на комплекснитѣ числа има точно n корена в полето на комплекснитѣ числа, като всѣки корен се брои според кратността си.
- Както и при реалнитѣ числа,
- ако комплексното число x0 е корен на полиномът (на многочлѣнът), тогава биномът (двучлѣнът) (x - x0) е дѣлител на полиномът.
- ако комплексното число x0 е двукратен корен на полиномът, тогава (x - x0)2 е дѣлител на полиномът.
- Не съм се занимавал със задачата за намирането на коренитѣ на полином в полето на комплекснитѣ числа.
- И тази бесѣда нѣ̋ма нищо общо с комплекснитѣ числа.
- От теорията на комплекснитѣ числа се ползва само резултатът, че коренитѣ на полином от n-та степен сѫ точно n на брой.
- Ако се ограничим до полето на реалнитѣ числа, както правя̨ в тази бесѣда, то твърдението се изказва така:
- Един полином от n-та степен с реални коефициенти има най-много n реални корена, като всѣки корен се брои според кратността си.
- (.. скрий ги комплекснитѣ числа ..) (.. скрий го прѣдговорът на втората бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- За обобщението в полето на комплекснитѣ числа може да се докаже слѣдното:
- ◄► В бесѣдата сѫ включени и двѣ отклонения от темата.
- ◄► (.. скрий го прѣдговорът на втората бесѣда ..) (.. свий го ..) (.. разгъни го ..) (.. скрий я̨ втората бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Полиноми с реални коефициенти (.. покажи го въведението за полиномитѣ ..) (.. покажи го разгъна̨то ..)
-
▼▼
Полиноми с реални коефициенти
(.. скрий го въведението за полиномитѣ ..)
(.. свий го ..)
(.. разгъни го ..)
- ◄► В този раздѣл се демонстрира и тества
въвеђането на полином.
- Този раздѣл е стѫпка към крайната цѣл - детайлно тестване на програмата за намиране на реалнитѣ корени на полином с реални коефициенти.
- ►► Що е то полином (.. покажи ..)
-
▼▼
Що е то полином
(.. скрий ..)
- Този подраздѣл нѣ̋ма да бѫде урок по математика, нито урок по алгебра.
- Цѣлта ми е само да се уточня̨т понятията и терминитѣ.
- Ако не помните от срѣдното училище какво е това полином, наричано още многочлѣн, откажѣте се.
- Ако не сте учили за комплексни числа, то за Вас всички числа сѫ реални и понятието полином с реални коефициенти означава просто полином.
- Полиномът е функция с един аргумент.
- Аргументът се означава с латинска буква, обикновено буквата x.
- В математическата литература е прието аргументитѣ да се означават с нѣ̋коя от послѣднитѣ букви на латинската азбука, а първитѣ букви се използват за коефициентитѣ, ако тѣ сѫщо сѫ промѣнливи.
- В тази бесѣда нѣ̋ма да става дума за полиноми с промѣнливи коефициенти.
- Един полином, наричан още многочлѣн, прѣдставлява сума (сбор) от едночлѣни.
- А пък един едночлѣн прѣдставлява
аргументът на нѣ̋каква степен, умножен по коефициент.
- Коефициентът е число, в случая̌т реално число.
- Степента е цѣ̋ло неотрицателно число.
- Ако тя е нула, едночлѣнът се нарича свободен члѣн.
- Едночлѣнитѣ (члѣноветѣ на многочлѣнът) с нулеви коефициенти обикновено не се пиша̨т.
- Но присѫтстват при избраното вѫтрешно прѣдставяне в компютърът.
- При прѣдставянето на полиномът (многочлѣнът), члѣноветѣ му (едночлѣнитѣ) обикновено се подређат по намаляване на степента си.
- Едночлѣнитѣ от една и сѫща степен се събират е едни члѣн.
- Свободния̌т члѣн - този с аргумент на нулева степен - е послѣден.
- Първия̌т члѣн с ненулев коефициент - този с най-високата степен на аргументът - е старши члѣн.
- Коефициентът му е старши коефициент на полиномът (на многочлѣнът).
- Степента му става степен на полиномът.
- (.. скрий що е то полином ..) (.. скрий го въведението за полиномитѣ ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
-
Буква за аргументът: - ►► Как да въвеђаме полином (.. покажи ги правилата ..)
-
▼▼
Как да въвеђаме полином
(.. скрий ги правилата ..)
- По-горѣ в този раздѣл, при въвеђането на полином с реални коефициенти, в сила сѫ слѣднитѣ правила и свободи:
- Шпации (интервали, space characters) сѫ допустими навсѣ̋къдѣ, освѣн вѫтрѣ в числата и међу двѣтѣ звѣздички ** на знакът за степенуване.
- Полиномът (многочлѣнът) се въвеђа като сума от едночлѣни.
- Може и да е съставен само от един члѣн.
- Не се изисква подредба на съставящитѣ едночлѣни по степен.
Програмата ще ги подреди. - Разрѣшава се въвеђане на нѣ̋колко едночлѣна от една и сѫща степен.
Програмата ще ги обедини, слѣд като сумира коефициентитѣ им. - Едночлѣнът започва с коефициентът си.
Коефициентът може да се пропусне, ако е равен на единица. - Слѣд коефициентът на едночлѣнът, се въвеђа буквата за аргументът.
- Тя може да се пропусне, ако степента на едночлѣнът е нула (т.е. ако това е свободен члѣн).
- Међу коефициентът и аргументът, ако и двѣтѣ присѫтстват, може да се сложи звѣздичка * като знак за умножение.
- Но звѣздичката може да се пропусне.
- Слѣд буквата за аргументът като цѣ̋ло число се пише степента на едночлѣнът.
- Степента може да се пропусне, ако е единица.
- Међу буквата за аргументът и степента, ако и двѣтѣ присѫтстват,
мога̨т да се сложа̨т двѣ звѣздички ** като знак за степенуване.
Но знакът за степенуване може да се изпусне.
- Примѣри за едночлѣни от нулева степен:
5*x**0 1024*x**0 3.14*x**0 2.56*x**0 -1*x**0 -100*x**0 5x**0 1024x**0 3.14x**0 2.56x**0 -1x**0 -100x**0 5x**0 1024x**0 3.14x**0 2.56x**0 -x**0 -100x**0 5*x0 1024*x0 3.14*x0 2.56*x0 -1*x0 -100*x0 5x0 1024x0 3.14x0 2.56x0 -1x0 -100x0 5x0 1024x0 3.14x0 2.56x0 -x0 -100x0 5 1024 3.14 2.56 -1 -100 - Примѣри за едночлѣни от първа степен:
1*x**1 1024*x**1 3.14*x**1 2.56*x**1 -1*x**1 -100*x**1 1x**1 1024x**1 3.14x**1 2.56x**1 -1x**1 -100x**1 x**1 1024x**1 3.14x**1 2.56x**1 -x**1 -100x**1 1*x1 1024*x1 3.14*x1 2.56*x1 -1*x1 -100*x1 1x1 1024x1 3.14x1 2.56x1 -1x1 -100x1 x1 1024x1 3.14x1 2.56x1 -x1 -100x1 1*x 1024*x 3.14*x 2.56*x -1*x -100*x 1x 1024x 3.14x 2.56x -1x -100x x 1024x 3.14x 2.56x -x -100x - Међу едночлѣнитѣ, съставящи въвеђания̌т полином, се слага само един знак + (плюс) или - (минус).
- Прѣд първия̌т едночлѣн може да се сложи знак - (минус).
- Примѣр:
1*x**2 - 2*x**1 - 3*x**1 + 6*x**0 -2*x**3 + 3*x**2 - 1*x**1 + 7 1*x**2 - 5*x**1 + 6*x**0 -2x3 + 3x2 - x + 7 x2 - 5x + 6 2x3 - 3x2 + x - 7 - Забѣлѣжѣте, че за цѣлитѣ на основната задача програмата ще осигури положителен старши коефициент на полиномът.
- Ако при въвеђането той е бил отрицателен, програмата ще умножи всички коефициенти по -1.
- Ако бѫде въведен полином от втора или от по-висока степен, ще се появи бутон
.
Слѣдващия̌т раздѣл е за умножението на полиноми.
Бутонът ще Ви прати там. - Страничен ефект. Жълтото поле горѣ - там, къдѣто се въвеђа полиномът,
може да се използва като прост калкулатор.
- Там могат да се събират и извађат числа.
- Програмата възприема всѣ̋ко въведено число като коефициент на едночлѣн от нулева степен и сумира тѣзи коефициенти.
- (.. скрий ги правилата ..) (.. скрий го въведението за полиномитѣ ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
-
►►
.. Покажи код на JavaScript ..
-
▼▼
Код на JavaScript
(.. скрий го кодът ..)
- Класът RealPolynom е разширение на Array.
Обект от класът RealPolynom е прѣди всичко Array, масив от числа.- Числата от масивът сѫ коефициентитѣ на полиномът.
- Броя̌т им е с единица по-голѣ̋м от степента на полиномът.
- Елементът [0] е старшия̌т коефициент - коефициентът прѣд най-високата степен.
- Послѣдния̌т елемент е коефициентът прѣд нулевата степен (свободния̌т члѣн)
- Всички нулеви коефициенти присѫтстват в масивът на мѣстата си, макар обикновено да не се показват.
-
- Методът toString() показва полиномът в обичаен вид.
Члѣноветѣ с нулев коефициент се изпускат.
Аргументът в нулева степен не се показва.
За да може кодът на този метод да се покаже тука, налага се html-таговетѣ да се декомпозират. - Методът getDegree() провѣрява дали всички елементи от масивът сѫ числа.
Ако не, връща -1.
Ако старшия̌т коефициент this[0] е нула, пак връща -1 като резултат.
Иначе дава степента на полиномът - броя̌т на числата без 1. - Методът doitRegular() осигурява старшия̌т коефициент да е положително число.
За тази цѣл може да бѫде намален броя̌т на числата.
За тази цѣл всички коефициенти може да бѫда̨т умножени по -1. - Програмитѣ, които приемат входът от екранът и прѣобразуват въведеното в обект от клас RealPolynom, не се показват.
- (.. скрий го кодът на JavaScript ..) (.. скрий го въведението за полиномитѣ ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Класът RealPolynom е разширение на Array.
- ◄► Този раздѣл от бесѣдата може да се пропусне.
- Той е просто послѣдователна стѫпка към крайната цѣл.
- Всичко от този раздѣл се повтаря в слѣдващитѣ раздѣли.
- Освѣн калкулаторът за събиране и извађане - той работи само тука.
- ◄► (.. скрий го въведението за полиномитѣ ..) (.. свий го ..) (.. разгъни го ..) (.. скрий я̨ втората бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ◄► В този раздѣл се демонстрира и тества
въвеђането на полином.
- ►► Полиноми-множители (.. покажи го умножението на полиноми ..) (.. покажи го разгъна̨то ..)
-
▼▼
Полиноми-множители
(.. скрий го умножението на полиноми ..)
(.. свий го ..)
(.. разгъни го ..)
- ◄► Този раздѣл от бесѣдата може да се пропусне.
- Той е просто послѣдователна стѫпка към крайната цѣл.
- Всичко от този раздѣл се повтаря в слѣдващия̌т раздѣл.
- ►► Защо в темата се намѣсва умножение на полиноми? (.. покажи ..)
-
▼▼
Защо в темата се намѣсва умножение на полиноми?
(.. скрий ..)
- Този раздѣл е стѫпка към крайната цѣл - детайлно тестване на програмата за намиране на реалнитѣ корени на полином с реални коефициенти.
- Подготвяме полином, който да дадем на тази програма, че тя да му намѣри коренитѣ.
- Или трѣ̋бва прѣдварително да знаем кои сѫ тѫрсенитѣ корени, ..
- или за всѣки намѣрен от програмата корен трѣ̋бва да можем да провѣрим дали наистина е корен на полиномът.
- Намирането на реалнитѣ коренитѣ на зададен полином с реални коефициенти е в слѣдващия̌т раздѣл.
- В по-слѣдващия̌т раздѣл ще може да се провѣри дали намѣренитѣ корени наистина сѫ корени на полиномът.
- А в настоящия̌т раздѣл се показва как да подготвим полином за тестване, такъв че прѣдварително да му знаем коренитѣ.
- Нека буквата за аргументът да е x.
- Полиномът x-5 има еднократен реален корен 5.
- Полиномът x+2 има еднократен реален корен -2.
- Полиномът x има еднократен реален корен 0.
- Ако умножим тритѣ полинома (x-5)*(x+2)*x, произведението им x3-3x2-10x, което е полином от 3-та степен,ще има точно три реални корена 5, 0 и -2.
- Полиномът x има еднократен реален корен 0.
- Полиномът x2 има двукратен корен 0.
- Полиномът x3, който е полином от 3-та степен, има трикратен корен 0.
- Полиномът x-5 има еднократен реален корен 5.
- Произведението на послѣднитѣ два полинома x3*(x-5) е полином от 4-та степен x4-5x3, които има четири корена: веднѫж 5 и три пѫти 0.
- Полиномът от 2-ра степен x2+x+1 нѣ̋ма реални корени, понеже стойноститѣ му сѫ строго положителни.
- Това се виђа, ако се прѣдстави във видът (x+0.5)2+0.75.
- Разбира се, ако свободния̌т члѣн е по-голѣ̋м от 0.25, напримѣр 2, то полиномът x2+x+2 пак нѣ̋ма реални корени.
- Ако за множител се вземе полином от 2-ра или 4-та степен без реални корени, то липсата на реални корени трѣ̋бва да бѫде отчетена в резултатът.
- Един полином примѣрно от 6-та степен има най-много 6 реални корени.
Може да нѣ̋ма и нито един. - Един полином примѣрно от 7-ма степен има най-много 7 реални корени.
Има поне един. Полином от нечетна степен има поне един реален корен.
- Та така: в този раздѣл се демонстрира умножението на полиноми.
- Това ще се ползва, за да се получи полином, реалнитѣ корени на който сѫ извѣстни.
- Функционалността от този раздѣл е повторена в слѣдващия̌т раздѣл.
- Затова този раздѣл може да се пропусне.
- Все пак, получения̌т в този раздѣл полином може да бѫде прѣнесен в слѣдващия̌т раздѣл, за да се тества.
- (.. скрий я̨ тукашната цѣл на умножението на полиноми ..) (.. скрий го умножението на полиноми ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ◄► Ако въведете полином от нулева степен,
- тоест число - константа,
- програмата ще го прѣобразува във бином (полином от първа степен),
- коренът на който е въведеното число.
- Напримѣр, ако въведете 5, все едно че сте въвели x-5.
- Ако буквата за аргументът е x, разбира се.
-
Буква за аргументът: -
►►
.. Покажи кодът на JavaScript ..
-
▼▼
Код на JavaScript
(.. скрий го кодът ..)
-
- Програмитѣ, които приемат входът от екранът и извеђат резултатът на екранът, не се показват.
- (.. скрий го кодът на JavaScript ..) (.. скрий го умножението на полиноми ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
-
- ◄► (.. скрий го умножението на полиноми ..) (.. свий го ..) (.. разгъни го ..) (.. скрий я̨ втората бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ◄► Този раздѣл от бесѣдата може да се пропусне.
- ►► Реалнитѣ корени на полином с реални коефициенти (.. покажи как се намират ..) (.. покажи разгъна̨то ..)
-
▼▼
Реалнитѣ корени на полином с реални коефициенти
(.. скрий ги ..)
(.. свий ги ..)
(.. разгъни ги ..)
- ◄► Това е основния̌т раздѣл на бесѣдата.
- Тука се демонстрира и тества програмата за намиране на реалнитѣ корени на полином с реални коефициенти.
- ►► За цѣлитѣ на тестването полиномът може да се въвеђа по множители (.. покажи ..)
-
▼▼
За цѣлитѣ на тестването полиномът може да се въвеђа по множители
(.. скрий ..)
- Подготвяме полином, който да дадем на тази програма, че тя да му намѣри коренитѣ.
- Или трѣ̋бва прѣдварително да знаем кои сѫ тѫрсенитѣ корени, ..
- или за всѣки намѣрен от програмата корен трѣ̋бва да можем да провѣрим дали наистина е корен на полиномът.
- Намирането на реалнитѣ коренитѣ на зададен полином с реални коефициенти е в този раздѣл.
- В слѣдващия̌т раздѣл ще може да се провѣри дали намѣрен корен наистина е корен на полиномът.
- За цѣлта полиномът и прѣсмѣтна̨титѣ в този раздѣл негови корени мога̨т да бѫда̨т прѣнесени в слѣдващия̌т раздѣл за провѣрка.
- А в настоящия̌т раздѣл да видим как да подготвим полином за тестване, такъв че прѣдварително да му знаем коренитѣ.
- Нека буквата за аргументът да е x.
- Полиномът x-5 има еднократен реален корен 5.
- Полиномът x+2 има еднократен реален корен -2.
- Полиномът x има еднократен реален корен 0.
- Ако умножим тритѣ полинома (x-5)*(x+2)*x, произведението им x3-3x2-10x, което е полином от 3-та степен,ще има точно три реални корена 5, 0 и -2.
- Полиномът x има еднократен реален корен 0.
- Полиномът x2 има двукратен корен 0.
- Полиномът x3, който е полином от 3-та степен, има трикратен корен 0.
- Полиномът x-5 има еднократен реален корен 5.
- Произведението на послѣднитѣ два полинома x3*(x-5) е полином от 4-та степен x4-5x3, които има четири корена: веднѫж 5 и три пѫти 0.
- Полиномът от 2-ра степен x2+x+1 нѣ̋ма реални корени, понеже стойноститѣ му сѫ строго положителни.
- Това се виђа, ако се прѣдстави във видът (x+0.5)2+0.75.
- Разбира се, ако свободния̌т члѣн е по-голѣ̋м от 0.25, напримѣр 2, то полиномът x2+x+2 пак нѣ̋ма реални корени.
- Ако за множител се вземе полином от 2-ра или 4-та степен без реални корени, то липсата на реални корени трѣ̋бва да бѫде отчетена в резултатът.
- Един полином примѣрно от 6-та степен има най-много 6 реални корени.
Може да нѣ̋ма и нито един. - Един полином примѣрно от 7-ма степен има най-много 7 реални корени.
Има поне един. Полином от нечетна степен има поне един реален корен.
- (.. скрий го въвеђането на полиномът по множители ..) (.. скрий ги коренитѣ на полином ..) (.. свий ги ..) (.. разгъни ги ..) .. към началото ..
- ◄► Разбира се, можете да въведетѣ цѣлия̌т полином като един множител.
- ◄► Ако въведете полином от нулева степен,
- тоест число - константа,
- програмата ще го прѣобразува във бином (полином от първа степен),
- коренът на който е въведеното число.
- Напримѣр, ако въведете 5, все едно че сте въвели x-5.
- Ако буквата за аргументът е x, разбира се.
-
Намиране на реалнитѣ корени на полином с реални коефициенти Epsylon: Буква за аргументът: -
►►
.. Покажи го кодът на програмата ..
-
▼▼
Кодът на програмата
(.. скрий го кодът ..)
- Главната програма е getRoots().
- Тя намира реалнитѣ корени на полиномът и ги връща в Array (масив), подредени по голѣмина.
- Ако полиномът нѣ̋ма реални корени, резултатът е празен масив.
- Алгоритъмът е рекурсивен. JavaScript поддържа рекурсия, както и повечето съврѣменни компютърни езици.
- Ако става дума за полином от първа степен, програмата веднага прѣсмѣ̋та коренът и завършва работата си.
- Иначе с помощта на методът getDerivative() се построява производната на полиномът.
- Производната е сѫщо полином, степента на който е по-ниска с единица.
- За тази производна рекурсивно се извиква главната програма е getRoots(),
- за да се намѣря̨т реалнитѣ корени на производната.
- Продължаваме алгоритъмът при условие, че реалнитѣ корени на производната сѫ намѣрени.
- Ако производната нѣ̋ма реални корени, то този полином има един реален корен,
- за намирането на който се извиква #getSingleRoot( -∞, +∞ ).
- Методът #getSingleRoot() намира единствен реален корен в зададен интервал, ако такъв корен има.
- Първо, този метод #getSingleRoot() се извиква за интервалът от -∞ до първия̌т реален корен на производната.
- Слѣд това методът #getSingleRoot() се извиква за всѣки интервал међу два послѣдователни реални корени на производната.
- И послѣдно, методът #getSingleRoot() се извиква за интервалът от послѣдния̌т реален корен на производната до +∞.
- Методът getDerivative() построява производната като обект от класът RealPolynomEquation, така че към този обект да може да се приложи getRoots().
- На методът #getSingleRoot() трѣ̋бва да му бѫде зададен интервал, за който да е ясно,
че в него има най-много един реален корен на полиномът.
- Ако в интервалът има реален корен, методът #getSingleRoot() го намира и го връща като число.
- Ако в интервалът нѣ̋ма реален корен, резултатът е NaN (Not a Number).
- Mетодът #getSingleRoot() разглеђа четири случая,
които тука сѫ изброени в ред обратен на този в кодът:
- Краен интервал међу двѣ числа.
- Интервал от -∞ до число.
- Интервал от число до +∞.
- Интервалът от -∞ до +∞.
- Методът #getSingleRoot() се извиква рекурсивно за подинтервали.
- Методът getValue(), който се използва тука, се демонстрира отдѣлно в слѣдващия̌т раздѣл.
- Слѣдва самия̌т код.
-
- Надѣ̋вам се на всички устройства резултатитѣ да сѫ поне сходни, ако не идентични.
- Прѣсмѣ̋танията се извършват не на web-server, а локално на Вашето устройство (смартфон, таблет, лаптоп, ..).
- Прѣсмѣ̋танията ги извършва интерпретаторът от JavaScript, който е вграден във Вашия̌т browser.
- Езикът JavaScript е стандартизиран.
- Интерпретаторът от JavaScript ползва стандартна аритметика с плаваща точка.
- Да, алгоритъмът ползва аритметика с плаваща точка.
- Това налага да се обръща внимание на закрѫглянията и приближенията.
- (.. скрий го кодът на програмата ..) (.. скрий ги коренитѣ на полином ..) (.. свий ги ..) (.. разгъни ги ..) .. към началото ..
- Главната програма е getRoots().
- ►► Точност на прѣсмѣ̋танията (.. покажи ..)
-
▼▼
Точност на прѣсмѣ̋танията
(.. скрий ..)
- Не съм се задѫлбочавал в точността на прѣсмѣ̋танията.
- Разчитам на стандартна аритметика с плаваща точка, каквато ползва стандартен интерпретатор от JavaScript.
- Не ползвам специални софту̌ерни библиотеки за математически изчисления.
- Програмата трѣ̋бва да може да работи на всѣ̋ко устройство.
- Все пак, въведен е параметър Epsylon със стойности 0.001, 0.0001, 0.00001 или 0.000001 по избор.
- Сигурно мога̨т да се намѣря̨т примѣри, при които тази програма грѣши.
- Моля̨ да бѫда̨ увѣдомяван, ако намѣрите такива примѣри.
- Аз ще прѣцѣня̨ дали си струва да се поправя програмата.
- (.. скрий я̨ точността на прѣсмѣ̋танията ..) (.. скрий ги коренитѣ на полином ..) (.. свий ги ..) (.. разгъни ги ..) .. към началото ..
- Не съм се задѫлбочавал в точността на прѣсмѣ̋танията.
- ◄► (.. скрий ги коренитѣ на полином ..) (.. свий ги ..) (.. разгъни ги ..) (.. скрий я̨ втората бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ◄► Това е основния̌т раздѣл на бесѣдата.
- ►► Прѣсмѣ̋тане на стойността на полиноми при зададена стойност на аргументът (.. покажи ..) (.. разгъна̨то ..)
-
▼▼
Прѣсмѣ̋тане на стойността на полиноми при зададена стойност на аргументът
(.. скрий ..)
(.. свий ..)
(.. разгъни ..)
- ◄► В този раздѣл именно това се прави:
- Компютърчето смѣ̋та стойността на зададен полином за зададена стойност на аргументът.
- И коефициентитѣ на полиномът, и стойността на аргументът, и получената стойност на полиномът сѫ реални числа.
- Непосрѣдствената цѣл е да може да се провѣри дали намѣрен в прѣдишния̌т раздѣл реален корен на полиномът наистина е корен.
- Непосрѣдствената цѣл е да може да се провѣри дали програмата от прѣдишния̌т раздѣл смѣ̋та вѣ̋рно.
- Ако дадено число наистина е корен на полиномът, то като се замѣсти аргументът с това число, стойността на полиномът трѣ̋бва да е нула.
- Това значи да е корен на полиномът.
- По-нататък, този раздѣл дава повод да се покаже как компютритѣ прѣсмѣ̋тат стойността на полином.
- Това е втората цѣл на бесѣдата, макар да е отклонение от основната цѣл.
- ◄► Първо задайте полиномът.
- Тука полиномът се въвеђа наведнѫж, а не по множители, както в прѣдишния̌т раздѣл.
- Но можете полиномът от прѣдишния̌т раздѣл заедно с намѣренитѣ корени да бѫда̨т прѣнесени в този раздѣл.
- Тука нѣ̋ма смисъл да въвеђате числа-константи.
Тѣ нѣ̋ма да бѫда̨т прѣобразувани в биноми.
- ◄► Послѣ задайте стойност на аргументът.
- Можете да изберете стойността на аргументът између числата, които в прѣдишния̌т раздѣл сѫ били намѣрени като корени на полиномът, ако сѫ били прѣнесени оттам тука.
- Можете и да въведете нѣ̋какво число за стойност на аргументът, слѣд което да натиснете бутонът (не този бутон тука, а оня по-долу при въведеното число).
-
Буква за аргументът: Въведи стойност на аргументът: Избери стойност на аргументът: - ►► Как да въвеђаме полином (.. покажи ги правилата ..)
-
▼▼
Как да въвеђаме полином
(.. скрий ги правилата ..)
- По-горѣ в този раздѣл, при въвеђането на полином с реални коефициенти, в сила сѫ слѣднитѣ правила и свободи:
- Шпации (интервали, space characters) сѫ допустими навсѣ̋къдѣ, освѣн вѫтрѣ в числата и међу двѣтѣ звѣздички ** на знакът за степенуване.
- Полиномът (многочлѣнът) се въвеђа като сума от едночлѣни.
- Може и да е съставен само от един члѣн.
- Не се изисква подредба на съставящитѣ едночлѣни по степен.
Програмата ще ги подреди. - Разрѣшава се въвеђане на нѣ̋колко едночлѣна от една и сѫща степен.
Програмата ще ги обедини, слѣд като сумира коефициентитѣ им. - Едночлѣнът започва с коефициентът си.
Коефициентът може да се пропусне, ако е равен на единица. - Слѣд коефициентът на едночлѣнът, се въвеђа буквата за аргументът.
- Тя може да се пропусне, ако степента на едночлѣнът е нула (т.е. ако това е свободен члѣн).
- Међу коефициентът и аргументът, ако и двѣтѣ присѫтстват, може да се сложи звѣздичка * като знак за умножение.
- Но звѣздичката може да се пропусне.
- Слѣд буквата за аргументът като цѣ̋ло число се пише степента на едночлѣнът.
- Степента може да се пропусне, ако е единица.
- Међу буквата за аргументът и степента, ако и двѣтѣ присѫтстват,
мога̨т да се сложа̨т двѣ звѣздички ** като знак за степенуване.
Но знакът за степенуване може да се изпусне.
- Примѣри за едночлѣни от нулева степен:
5*x**0 1024*x**0 3.14*x**0 2.56*x**0 -1*x**0 -100*x**0 5x**0 1024x**0 3.14x**0 2.56x**0 -1x**0 -100x**0 5x**0 1024x**0 3.14x**0 2.56x**0 -x**0 -100x**0 5*x0 1024*x0 3.14*x0 2.56*x0 -1*x0 -100*x0 5x0 1024x0 3.14x0 2.56x0 -1x0 -100x0 5x0 1024x0 3.14x0 2.56x0 -x0 -100x0 5 1024 3.14 2.56 -1 -100 - Примѣри за едночлѣни от първа степен:
1*x**1 1024*x**1 3.14*x**1 2.56*x**1 -1*x**1 -100*x**1 1x**1 1024x**1 3.14x**1 2.56x**1 -1x**1 -100x**1 x**1 1024x**1 3.14x**1 2.56x**1 -x**1 -100x**1 1*x1 1024*x1 3.14*x1 2.56*x1 -1*x1 -100*x1 1x1 1024x1 3.14x1 2.56x1 -1x1 -100x1 x1 1024x1 3.14x1 2.56x1 -x1 -100x1 1*x 1024*x 3.14*x 2.56*x -1*x -100*x 1x 1024x 3.14x 2.56x -1x -100x x 1024x 3.14x 2.56x -x -100x - Међу едночлѣнитѣ, съставящи въвеђания̌т полином, се слага само един знак + (плюс) или - (минус).
- Прѣд първия̌т едночлѣн може да се сложи знак - (минус).
- Примѣр:
1*x**2 - 2*x**1 - 3*x**1 + 6*x**0 -2*x**3 + 3*x**2 - 1*x**1 + 7 1*x**2 - 5*x**1 + 6*x**0 -2x3 + 3x2 - x + 7 x2 - 5x + 6 2x3 - 3x2 + x - 7 - В този раздѣл нѣ̋ма смисъл да се въвеђа полином от нулева степен, тоест константа.
- (.. скрий ги правилата ..) (.. скрий как се смѣ̋та полином ..) (.. свий ..) (.. разгъни ..) .. към началото ..
-
►►
.. Покажи коментар към кодът на JavaScript ..
-
▼▼
Кодът на JavaScript
(.. скрий го коментарът към кодът ..)
-
- Класът RealPolynom е разширение на Array.
Обект от класът RealPolynom е прѣди всичко Array, масив от числа.- Числата от масивът сѫ коефициентитѣ на полиномът.
- Броя̌т им е с единица по-голѣ̋м от степента на полиномът.
- Елементът [0] е старшия̌т коефициент - коефициентът прѣд най-високата степен.
- Послѣдния̌т елемент е коефициентът прѣд нулевата степен (свободния̌т члѣн)
- Всички нулеви коефициенти присѫтстват в масивът на мѣстата си, макар обикновено да не се показват.
- Тази програмка е на компютърния̌т език JavaScript.
- Тя би изглеђала по сѫщия̌т начин на Java, C, C++, C#, и по подобен начин на Алгол и PL/I.
- (.. скрий го коментарът към кодът на JavaScript ..) (.. скрий как се смѣ̋та полином ..) (.. свий ..) (.. разгъни ..) .. към началото ..
-
- ►► Бѣлѣжки по тукашния̌т алгоритъм (.. покажи ..)
-
▼▼
Бѣлѣжки по тукашния̌т алгоритъм
(.. скрий ..)
- Става дума за алгоритъмът за прѣсмѣ̋тане на стойността на полином за зададена стойност на аргументът.
- Съвѣт към кандидати за позиция на компютърен програмист.
- На интервюто за работа може да поискат от Вас да напишете малка програмка подобна на горѣ-показаната.
- Ако става дума за сѫщата задача и ако Вие кодирате нѣ̋какъв алгоритъм, при който се прѣсмѣ̋тат степенитѣ на аргументът, това може да основание да Ви отхвърля̨т.
- Слѣдва словесно описание на алгоритъмът за тѣзи, които не умѣя̨т да разчитат компютърен код.
- Коефициентитѣ на полиномът се наређат в масив по старшинство.
Пръв е старшия̌т коефициент, свободния̌т члѣн е послѣден. - Дори нѣ̋кой от коефициентитѣ да е нула - крѫгла нула, той заема мѣ̋стото си в масивът и алгоритъмът не може да го изпусне.
В частност, нулев свободен члѣн сѫщо заема мѣ̋стото си (послѣдното мѣ̋сто) в масивът. - Алгоритъмът започва с резултат 0 (нула).
- Алгоритъмът прѣминава послѣдователно прѣз всички коефициенти на полиномът, започвайки от старшия̌т и завършващи със свободния̌т члѣн.
- Поредния̌т коефициент се добавя към резултатът.
- Ако има слѣдващ коефициент, резултатът се умножава по зададената стойност на аргументът, прѣди да се прѣмине към слѣдващия̌т коефициент.
- Коефициентитѣ на полиномът се наређат в масив по старшинство.
- Примѣри.
- Полиномът e
1*x5 - 5*x4 + 6*x3 - 1*x2 + 5*x - 6
а стойността на аргументът x е 2 .
- Алгоритъмът слѣдва формулата:
(((((((((((0+1)*x)-5)*x)+6)*x)-1)*x)+5)*x)-6)
.
- Алгоритъмът слѣдва формулата:
- Полиномът e
1*x4 - 1
а стойността на аргументът x е 256 .
- Алгоритъмът слѣдва формулата:
(((((((((0+1)*x)+0)*x)+0)*x)+0)*x)-1)
.
- Алгоритъмът слѣдва формулата:
Аргумент Коефициенти Резултат 2 1 -5 6 -1 5 -6 0 1 1 2 2 -5 -3 2 -6 6 0 2 0 -1 -1 2 -2 5 3 2 6 -6 0 256 1 0 0 0 -1 0 1 1 256 256 0 256 256 65536 0 65536 256 16777216 0 16777216 256 4294967296 -1 4294967295 - Полиномът e
1*x5 - 5*x4 + 6*x3 - 1*x2 + 5*x - 6
а стойността на аргументът x е 2 .
- Числата сѫ в десетична позиционна бройна система.
Компютърът (в случая̌т интерпретаторът от JavaScript) така ги показва. - Послѣдното число 4294967295
- в 16-ичен запис е FFFFFFFF,
- в двоичен запис е 11111111111111111111111111111111 (32 цифри 1), а
- в 8-ичен запис е 37777777777.
- Това е прелюдия към слѣдващия̌т раздѣл, който е отклонение за позиционнитѣ бройни системи.
- (.. скрий ги бѣлѣжкитѣ по алгоритъмът ..) (.. скрий как се смѣ̋та полином ..) (.. свий ..) (.. разгъни ..) .. към началото ..
- ◄► (.. скрий как се смѣ̋та полином ..) (.. свий ..) (.. разгъни ..) (.. скрий я̨ втората бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ◄► В този раздѣл именно това се прави:
- ►► Отклонение_1: позиционни бройни системи (.. покажи го отклонението ..) (.. разгъна̨то ..)
-
▼▼
Отклонение_1: позиционни бройни системи
(.. скрий го отклонението ..)
(.. свий го ..)
(.. разгъни го ..)
- ►► В ежедневието се ползва десетична позиционна бройна система (.. покажи ..)
-
▼▼
В ежедневието се ползва десетична позиционна бройна система
(.. скрий ..)
- Десетичната позиционна бройна система е
в Европа отскоро: има-нѣ̋ма петстотин години.
- Сегашното младо поколѣние трудно може да си прѣдстави свѣтът без компютри и компютърчета. Старитѣ обаче помним онова врѣме.
- Но всички вече трудно можем да си прѣдставим какъв е бил свѣтът без десетичната позиционна бройна система.
- Толкова сме свикна̨ли с нея̨.
- В Западна Европа сѫ се ползвали римскитѣ цифри.
- Нѣ̋кога ги учѣхме в основното училище. Вѣроятно все още се уча̨т.
- Присѫтсваха̨ обикновено на табелитѣ на класнитѣ стаи: V а клас. Вѣроятно все още е така.
- Присѫтсваха̨ и в номерацията на партийни конгреси и на петилѣткитѣ.
- Сега, слава Богу, не пиша̨т "XLIX народно събрание" - само във wikipedia-та се мѫдри.
- Лично аз избѣ̋гвам употрѣбата на римскитѣ цифри и обикновено пиша̨ "49-тото народно събрание".
- У нас сѫ се ползвали
милетскитѣ цифри.
- До началото на 19-ти вѣк всѣки грамотен нашенец-християнин ги е знаѣл.
- Сега ги зная̨т само експерти, тренирани да разчитат стари текстове.
- В съврѣменна Гърция милетскитѣ цифри ги зная̨т.
- Там не употрѣбяват римскитѣ цифри.
- В случаитѣ, когато ние употрѣбяваме римскитѣ цифри, в Гърция ползват милетскитѣ.
- Според мене, милетскитѣ цифри сѫ по-добри от римскитѣ.
- Но и еднитѣ, и другитѣ нищо не струват прѣд десетичната позиционна бройна система.
- Десетичната позиционна бройна система опрѣдѣлено е съдѣйствала за развитието на технологиитѣ.
- С такова нѣщо не мога̨т да се похваля̨т нито римскитѣ цифри, нито милетскитѣ.
- (.. скрий го ежедневието ..) (.. скрий го отклонението за позиционнитѣ бройни системи ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Десетичната позиционна бройна система е
в Европа отскоро: има-нѣ̋ма петстотин години.
- ►► Полиномитѣ и позиционнитѣ бройни системи (.. покажи ..)
-
▼▼
Полиномитѣ и позиционнитѣ бройни системи
(.. скрий ..)
- Записът на числата в позиционна бройна система има нѣщо общо с полиномитѣ.
- Това е и причината за появата на този раздѣл, в който се прави отклонение от основната тема на бесѣдата.
- При позиционна бройна система се фиксира цѣ̋ло число по-голѣ̋мо от единица за
основа на бройната система или накратко radix.
- В ежедневния̌т живот на хората radix-ът е 10 (десет).
- Вѫтрѣ в свѣтът на компютритѣ - тогава, когато на компютритѣ не им се налага да общуват с хора, radix-ът е 2 (двѣ).
- Записът на число в позиционна бройна система при фиксиран radix
прѣдставлява поредица (масив, array) от цифри.
- Цифритѣ сѫ коефициентитѣ на полиномът, а radix-ът е аргументът.
- За всѣ̋ко цѣ̋ло неотрицателно число, по-малко от radix-ът,
сѫществува цифра, стойността на която е това число.
- Цифритѣ сѫ толкова на брой, колкото е radix-ът.
- Ако radix-ът е 2, и цифритѣ сѫ 2: 0 и 1.
- Ако radix-ът е 10 (осем), и цифритѣ сѫ осем: 0, 1, 2, 3, 4, 5, 6, 7.
- Ако radix-ът е 10 (десет), и цифритѣ сѫ десет: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
- Ако radix-ът е 16 (шестнадесет), и цифритѣ сѫ шестнадесет.
Обикновено се ползват тѣзи: 0123456789ABCDEF. - Ако radix-ът е 36 (тридесет и шест), и цифритѣ сѫ толкова.
Обикновено се ползват тѣзи: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.
- Нулата винѫги е цифра, при всѣки radix.
- При всѣ̋ка позиционна бройна система има нуђа от цифрата
0 (нула).
Както и от единица (1). - Изобрѣтяването на позиционния̌т запис на числата, вѣроятно дѣло на индийски математици, е тѣ̋сно свързано с изобрѣтяването на цифрата нула и на числото нула.
- Точно това е дало тласък на развитието и на математиката, и на технологиитѣ.
- Етимологията на думи като цифра или шифър ни води към арабското название на нулата, което значѣло "нищо".
- При всѣ̋ка позиционна бройна система има нуђа от цифрата
0 (нула).
- Цѣлта на нулата е да държи и да бѣлѣжи позицията си
- и като цифра в запис на число в позиционна бройна система,
- и като коефициент на полиномът.
- В позиционна нотация, нулата може да се изпусне, само ако прѣди нея̨ нѣ̋ма по-старши ненулев коефициент или по-старша ненулева цифра.
- Наличието на цифра нулата е основната разлика међу съврѣменното означение на числата от една страна, и римската или милетската система от друга страна.
- Непозиционни означения:
- Хиляда оки люта ракия. Sıcak rakı bin okkası. One Thousand oz of brendy.
- Полиномът x3.
- Позиционни означения:
- 1000 оки люта ракия. Sıcak rakı 1000 okkası. 1000 oz of brendy.
- В прѣдишнитѣ раздѣли вѫтрешно на JavaScript pолиномът x3 се прѣдставя като масив от числа така: [1 0 0 0].
- (.. скрий го полиномиалното при позиционнитѣ бройни системи ..) (.. скрий го отклонението за позиционнитѣ бройни системи ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Записът на числата в позиционна бройна система има нѣщо общо с полиномитѣ.
- ►► Прѣз практиката ми на компютърен програмист съм си имал работа със .. (.. покажи ..)
-
▼▼
Прѣз практиката ми на компютърен програмист съм си имал работа ..
(.. скрий ..)
- прѣдимно с radix 10 - с десетичната позиционна бройна система.
- Човѣк съм, а компютритѣ отдавна сѫ се научили да общуват с хора в radix 10.
- Напримѣр, дотук при тази бесѣда - "за компютритѣ полиномиално", не ми се е налагало мислено да прѣвключвам към radix 2.
- Но пък в прѣдишната бесѣда - оная за дупкитѣ на перфолентата, това понѣ̋кога се налагаше.
- Без връзка с писането на разни бесѣди, прѣз практиката ми на компютърен програмист все пак ми се е налагало да минавам и на други в radix-и.
- Не може човѣк да разбира сърдцето и чувствата на компютърът, ако не владѣе вѫтрешния̌т му
radix - radix 2.
- В кръвта на компютритѣ е radix 2.
- Едно врѣме, когато бѣ̋х ученик и студент, имаше надѣђа, че в бѫдеще ще се появя̨т компютри с radix 3 в кръвта, и се упражнявахме не само на radix 2, но и на radix 3.
- Не се появиха̨ такива компютри.
Не съм имал досѣг с radix 3 в практиката си.
- Записът в radix 2 е твърдѣ неудобен за показ и възприятие.
Когато radix 2 се показва на човѣк или се очаква човѣк да го възприеме, винѫги се замѣства с «роднински» radix - radix 8 или radix 16.- При Минск-2 и PDP-11 - radix 8.
- При другитѣ компютърни архитектури - radix 16.
- Не бива да се забравя, че radix 8 и radix 16 не сѫ нищо друго освѣн сбит запис на radix 2.
- Едно врѣме при компютритѣ PDP-11 за кодиране на 6-знакови идентификатори в 32 бита
се ползваше radix 40 под означението Radix-50.
- Числото 40 (записано в radix 50) e 50 в radix 8 (5*8 е 40), а «кръвообращението» на PDP-11 се показваше в radix 8.
- Комуникациитѣ в слѣдващитѣ години използват разни други radix-и.
- Напримѣр, radix 64 се ползваше от програмитѣ uuencode и uudecode в Unix, а впослѣдстие и във e-mail-итѣ при прикрѣпенитѣ към тѣ̋х файлове.
- Само за забавление - just for fun, в слѣдващитѣ подраздѣли ще демонстрирам произволен
radix в диапазонът от 2 до 36.
- Горната граница на диапазонът е опрѣдѣлена от фактът, че разполагаме с 36 цифри: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.
- (.. скрий с кои radix-и съм си имал работа ..) (.. скрий го отклонението за позиционнитѣ бройни системи ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- прѣдимно с radix 10 - с десетичната позиционна бройна система.
- ►► Прѣобразуване от друга позиционна бройна система към «нашата» (.. покажи ..)
-
▼▼
Прѣобразуване от друга позиционна бройна система към «нашата»
(.. скрий ..)
- Коя е «нашата» позиционна бройна система?
Кой е «нашия̌т» radix?- «Нашия̌т» radix е този, в който се извършват аритметичнитѣ дѣйствия: събиране, умножение, дѣление на цѣли числа.
- «Нашия̌т» radix е този, в който се извършват прѣсмѣ̋танията.
- За нас хората «нашия̌т» е radix 10.
- За интерпретаторът на JavaScript «свой» сѫщо така е radix 10.
- Този интерпретатор е програма, която работи на компютърът, а не е самия̌т компютър.
- Програма на езикът JavaScript се изпълнява от интепретаторът, а не от самия̌т компютър.
- Компютритѣ на съвсѣм ниско ниво имат radix 2 за «свой».
- Програми, които да се изпълняват непосрѣдствено на самия̌т компютър, се пиша̨т на езици като C, C++ или асемблер.
- Това, разбира се, е условно написано.
- Важното е, че в този раздѣл ще се имат прѣд вид смѣтки само в radix 10.
- Аритметика в radix различен от 10 нѣ̋ма да се обсѫђа.
- В този подраздѣл задачата ще е тази: число, прѣдставено в друг radix,
да се конвертира в «нашия̌т» radix 10.
- Ако числото е прѣдставено в друг radix, за «нас» то не е число, защото не можем да смѣ̋таме с него.
- За «нас» то е просто низ от нѣ̋какви цифри.
- Задачата ще е да го прѣвърнем в число в «нашия̌т» radix 10.
- Алгоритъмът ще е сѫщия̌т, който бѣ приложен в раздѣлът за прѣсмѣ̋тане на стойността на полином.
- Примѣр. Число нѣ̋какво е прѣдставено в radix 16 във видът FFFF, като цифрата F е 15.
- Започваме с нулев резултат. Резултатът е 0.
- Към резултатът добавяме стойността на старшата цифра. 0+15. Резултатът е 15.
- Умножаваме резултатът по radixът. 15*16. Резултатът е 240.
- Към резултатът добавяме стойността на слѣдващата цифра. 240+15. Резултатът е 255.
- Умножаваме резултатът по radixът. 255*16. Резултатът е 4080.
- Към резултатът добавяме стойността на слѣдващата цифра. 4080+15. Резултатът е 4095.
- Умножаваме резултатът по radixът. 4095*16. Резултатът е 65520.
- Към резултатът добавяме стойността на послѣдната цифра. 65520+15. Резултатът е 65536.
- Тука ще можете да изберете radix в диапазонът от 2 до 36.
- Слѣд това ще можете да въведете число в избрания̌т radix.
- И като натиснете бутонът Go!, програмата на JavaScript ще прѣдстави Вашето число в «нашия̌т» radix 10.
-
Radix: - Полученото като резултат число, записано в «нашия̌т» radix 10 (в десетичната позиционна бройна система, използвана в ежедневието), ще бѫде прѣнесено автоматично в слѣдващия̌т подраздѣл, където то ще може да бѫде прѣобразувано друг radix, трети radix.
- Впрочем, това е начинът за конвертиране от един radix в друг, като и двата radix-а сѫ различни от «нашия̌т»: първо в «нашия̌т», послѣ в другия̌т.
-
.. Покажи го кодът на програмката за конвертиране към «нашия̌т» radix ..
-
Кодът на програмката за конвертиране към «нашия̌т» radix
(.. скрий го кодът ..)
-
- Такива програмки се пиша̨т не на JavaScript, а на C или на асемблер.
- JavaScript има вградени срѣдства за такова конвертиране.
-
- (.. скрий го прѣобразуването от друга позиционна бройна система ..) (.. скрий го отклонението за позиционнитѣ бройни системи ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Коя е «нашата» позиционна бройна система?
- ►► Прѣобразуване от «нашата» позиционна бройна система към друга (.. покажи ..)
-
▼▼
Прѣобразуване от «нашата» позиционна бройна система към друга
(.. скрий ..)
- Коя е «нашата» позиционна бройна система?
Кой е «нашия̌т» radix?- «Нашия̌т» radix е този, в който се извършват аритметичнитѣ дѣйствия: събиране, умножение, дѣление на цѣли числа.
- «Нашия̌т» radix е този, в който се извършват прѣсмѣ̋танията.
- За нас хората «нашия̌т» е radix 10.
- За интерпретаторът на JavaScript «свой» сѫщо така е radix 10.
- Този интерпретатор е програма, която работи на компютърът, а не е самия̌т компютър.
- Програма на езикът JavaScript се изпълнява от интепретаторът, а не от самия̌т компютър.
- Компютритѣ на съвсѣм ниско ниво имат radix 2 за «свой».
- Програми, които да се изпълняват непосрѣдствено на самия̌т компютър, се пиша̨т на езици като C, C++ или асемблер.
- Това, разбира се, е условно написано.
- В този подраздѣл задачата ще е тази: число,
прѣдставено в добрѣ познатия̌т ни «наш» radix 10,
да се прѣобразува в друг зададен radix.
- Резултатът тука ще бѫде низ от цифри в другия̌т radix.
- Алгоритъмът се основава на аритметичната операция дѣление на цѣли числа.
- Тази операция дава двѣ числа като резултат: частното и остатъкът.
- Компютърът на ниско ниво извършва цѣлочисленото дѣление точно така: едноврѣменно намира частното и остатъкът.
- Ако се програмира на език от високо ниво, задача на езиковия̌т процесор (компилатор или интерпретатор) е да не кара операцията на ниско ниво да се извършва два пѫти.
- Описание на алгоритъмът за рѣшаване на задачата.
- Цифритѣ се опрѣдѣля̨т послѣдователно една по една, от младшата към старшата, от послѣдната към първата.
- На всѣ̋ка стѫпка от алгоритъмът се извършва цѣлочислено дѣление, при което дѣлител е radix-ът.
- Остатъкът е поредната цифра.
- Слѣдващата стѫпка продължава с частното.
- Илюстрация на алгоритъмът по стѫпки.
- За цѣлитѣ на илюстрацията да се поставим на мѣ̋стото на компютърът, за който «свой» е radix 2 (или кой да е друг radix, различен от 10.
- Задачата ще бѫде да намѣрим десетичнитѣ цифри, цифритѣ в radix 10.
- Да вземем произволно число. Съвсѣм произволно. От нѣмай къдѣ записът му тука на екранът ще бъде десетичен.
- 265302.
- 1-ва стѫпка. Дѣлим 265302 на 10. Остатъкът е 2. Това е послѣдната цифра. Продължаваме с частното 26530.
- 2-ра стѫпка. Дѣлим 26530 на 10. Остатъкът е 0. Това е поредната цифра. Слагаме я̨ отпрѣд. Резултат дотук: 02. Продължаваме с частното 2653.
- 3-та стѫпка. Дѣлим 2653 на 10. Остатъкът е 3. Това е поредната цифра. Слагаме я̨ отпрѣд. Резултат дотук: 302. Продължаваме с частното 265.
- 4-та стѫпка. Дѣлим 265 на 10. Остатъкът е 5. Това е поредната цифра. Слагаме я̨ отпрѣд. Резултат дотук: 5302. Продължаваме с частното 26.
- 5-та стѫпка. Дѣлим 26 на 10. Остатъкът е 6. Това е поредната цифра. Слагаме я̨ отпрѣд. Резултат дотук: 65302. Продължаваме с частното 2.
- 6-та стѫпка. Дѣлим 2 на 10. Остатъкът е 2. Това е поредната цифра. Слагаме я̨ отпрѣд. Резултат дотук: 265302. Частното е 0. Слѣдователно, това е послѣдната стѫпка.
- Първо въведѣте цѣ̋ло положително число в привичния̌т за човѣк десетичен запис (в «нашия̌т» radix 10).
- Послѣ изберѣте друг radix в диапазонът от 2 до 36.
- Програмата ще Ви покаже прѣдставянето на Вашето число в избрания̌т radix.
-
Radix: -
.. Покажи го кодът на програмката за конвертиране към друг radix ..
-
Кодът на програмката за конвертиране към radix, различен от «нашия̌т»
(.. скрий го кодът ..)
-
- Такива програмки се пиша̨т не на JavaScript, а на C или на асемблер.
- JavaScript има вградени срѣдства за такова конвертиране.
-
- (.. скрий го прѣобразуването към друга позиционна бройна система ..) (.. скрий го отклонението за позиционнитѣ бройни системи ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Коя е «нашата» позиционна бройна система?
- ►► Прѣобразуване међу «роднински» позиционни бройни системи (.. покажи ..)
-
▼▼
Прѣобразуване међу «роднински» позиционни бройни системи
(.. скрий ..)
- «Роднински» сѫ radix-и,
които сѫ степени на един и сѫщ radix - първа степен, втора степен, трета степен, ..
- Напримѣр, radix-итѣ 8 и 16 сѫ «роднински»,
понеже 8 и 16 сѫ степени (трета и четвърта) на 2.
- В сѫщност, тѣзи три radix-а 2, 8 и 16 сѫ «роднински».
- Друг примѣр. «Роднински» сѫ radix-итѣ 10, 100 и 1000.
- Напримѣр, radix-итѣ 8 и 16 сѫ «роднински»,
понеже 8 и 16 сѫ степени (трета и четвърта) на 2.
- Конвертирането међу «роднински» radix-и ..
- не се извършва по алгоритмитѣ от прѣдишнитѣ два подраздѣла,
- дори когато нѣ̋кой от «роднински» radix-и е «нашия̌т».
- Защото има по-лесен начин.
- Защото два «роднински» radix-а не сѫ много различни един от друг.
- Конвертирането међу «роднински» radix-и ..
- се извършва чрѣз групиране, декомпозиране и прѣгрупиране на цифритѣ.
- Да разгледаме radix-ът 100.
- Той е «роднина» на «нашия̌т» radix 10.
- Radix 100 има нуђа от 100 цифри.
- Нека тѣзи 100 цифри да сѫ слѣднитѣ:
{00},{01},{02},{03},{04},{05},{06},{07},{08},{09}, {10},{11},{12},{13},{14},{15},{16},{17},{18},{19}, {20},{21},{22},{23},{24},{25},{26},{27},{28},{29}, . . {80},{81},{82},{83},{84},{85},{86},{87},{88},{89}, {90},{91},{92},{93},{94},{95},{96},{97},{98},{99}.
- Всѣ̋ка от тѣзи 100 «цифри» си я̨ мислѣте като цѣ̋лостен йероглиф със съотвѣтната стойност.
- При конвертирането от radix 10 към radix 100 цифритѣ по radix 10 се групират по двѣ (по двѣ, защото 100 е втора степен на 10) от дѣ̋сно на лѣ̋во (в общия̌т случай от точката в двѣтѣ посоки).
- Всѣ̋ка групичка от двѣ цифри в radix 10 се кодира в една от 100-тѣ «цифри» по radix 100.
- 2024 => {20}{24}.
- Да разгледаме radix-ът 1000.
- Той е «роднина» на radix-итѣ 10 и 100.
- Radix 1000 има нуђа от 1000 цифри.
- Нека тѣзи 1000 цифри да сѫ слѣднитѣ:
{000},{001},{002},{003},{004},{005},{006},{007},{008},{009}, {010},{011},{012},{013},{014},{015},{016},{017},{018},{019}, {020},{021},{022},{023},{024},{025},{026},{027},{028},{029}, . . {980},{981},{982},{983},{984},{985},{986},{987},{988},{989}, {990},{991},{992},{993},{994},{995},{996},{997},{998},{999}.
- Всѣ̋ка от тѣзи 1000 «цифри» си я̨ мислѣте като цѣ̋лостен йероглиф със съотвѣтната стойност.
- Нека задачата да е слѣдната: Число, което в radix 100 се прѣдставя във видът {20}{24}, да се прѣдстави в «роднинския̌т» radix 1000.
- Де-композираме цифритѣ по radix 100 към цифри по radix 10:
- {20}{24} => 2024.
- Групираме ги по три (по три, защото 1000 е трета степен на 10).
- 2024 => 002 024.
- Всѣ̋ка групичка от три цифри в radix 10 се кодира в една от 1000-та «цифри» по radix 1000.
- 002 024 => {002}{024}.
- Да се върнем на компютърчетата, че тѣхен е бѫдещия̌т интелект.
- Като оставим настрани «нашия̌т» radix 10,
компютърнитѣ програмисти и кодировчици най-често си имат работа с три «роднински» radix-a:
2, 8 и 16.
- При radix 2, двоичината позиционна система, която компютритѣ имат за «своя»,
сѫ нужни двѣ (2) цифри, 0 и 1.
- Една двоична цифра се нарича бит.
- Това е най-малкото количество информация.
- Мѣ̋рката за количество информация е бит.
- При radix 8 сѫ нужни 8 (осем) цифри.
- Ето ги тѣзи 8 (осем) цифри, заедно с де-композицията им на битове:
0: 000, 1: 001, 2: 010, 3: 011, 4: 100, 5: 101, 6: 110, 7: 111.
- Напримѣр, записът 377 в radix 8 означава 11111111 - един байт свѣтна̨ти битове.
- Ето ги тѣзи 8 (осем) цифри, заедно с де-композицията им на битове:
- При radix 16 сѫ нужни 16 цифри.
- Ето ги тѣзи 16 цифри, заедно с де-композицията им на битове:
0: 0000, 1: 0001, 2: 0010, 3: 0011, 4: 0100, 5: 0101, 6: 0110, 7: 0111, 8: 1000, 9: 1001, A: 1010, B: 1011, C: 1100, D: 1101, E: 1110, F: 1111.
- Напримѣр, един байт свѣтна̨ти битове в radix 16 се прѣдставя така: FF.
- А пък байт, в който само старшия̌т бит е свѣтна̨т, в radix 16 се прѣдставя така: 80.
- Ето ги тѣзи 16 цифри, заедно с де-композицията им на битове:
- При radix 2, двоичината позиционна система, която компютритѣ имат за «своя»,
сѫ нужни двѣ (2) цифри, 0 и 1.
- Нека задачата да ни е слѣдната.
Число, имащо видът 3750 в radix 8, да се прѣдстави в «роднинския̌т» radix 16.- Осмичнитѣ цифри ги де-композираме на битове - всѣ̋ка на три бита:
011 111 101 000
. - Групираме битоветѣ по четири:
0111 1110 1000
. - Всѣ̋ка групичка от четири бита прѣдставяме с една цифра в radix 16:
7E8
.
- Осмичнитѣ цифри ги де-композираме на битове - всѣ̋ка на три бита:
- Да отбѣлѣжа̨, че за компютърчето играта с битове е по-лесна от аритметичнитѣ операции събиране, умножение и дѣление.
- То и за човѣк е така, ако е свикна̨л да жонглира с битчета.
- (.. скрий го прѣобразуването међу роднински позиционни бройни системи ..) (.. скрий го отклонението за позиционнитѣ бройни системи ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- «Роднински» сѫ radix-и,
които сѫ степени на един и сѫщ radix - първа степен, втора степен, трета степен, ..
- ►► Нѣщо като заключение на първото отклонение (.. покажи ..)
-
▼▼
Нѣщо като заключение на първото отклонение
(.. скрий ..)
- Основната тема на бесѣдата бѣше намирането на реалнитѣ корени на полином с реални коефициенти.
- В това отклонение се отплѣсна̨х по вѫтрешното прѣдставяне на даннитѣ в компютритѣ.
- Изложението не е на техническо ниво. То е на публицистично ниво.
- Цѣлта е само читателитѣ да добия̨т нѣ̋каква прѣдстава.
- Цѣлта е обща прѣдстава прѣди всичко и прѣдстава за алгоритмитѣ.
- Имплементацията на алгоритмитѣ срѣща ограниченията на компютърната срѣда и тѣ не винѫги работя̨т.
- Но не съм си поставял за цѣл имплементация на аритметика с по-висока точност.
- Съвсѣм не всичко бѣ споменато.
- Струва си да се отбѣлѣжи, че както всичко, свързано с компютритѣ, се доразвива и подобрява, така става с разнитѣ формати и кодировки.
- Редица стари формати, с които съм работил прѣз 80-тѣ, сега сѫ забравени.
- Напримѣр, пакетиранитѣ десетични числа и машинната аритметика с тѣ̋х.
- Имаше ги в IBM/System360, а послѣ и във VAX.
- Или пък десетичнитѣ числа с плаваща точка.
- Имаше ги пак в IBM/System360, къдѣто нѣмаше двоични числа с плаваща точка.
- Не знам тази странност да е била повторена в друга компютърна архитектура.
- Напримѣр, пакетиранитѣ десетични числа и машинната аритметика с тѣ̋х.
- При рѣшаването на задачата за намирането на реалнитѣ корени на полином с реални коефициенти се ползва аритметика с плаваща точка.
- Едно врѣме аритметиката с плаваща точка бѣше един от аспектитѣ в програмирането, който бѣше най-трудно прѣносим међу различнитѣ компютърни архитектури.
- Сѫщо така, почти невъзможно бѣше да се прѣнасят като данни числа с плаваща точка в машинно прѣдставяне.
- Сега вече има стандарт за аритметика с плаваща точка.
- (.. скрий го заключението ..) (.. скрий го отклонението за позиционнитѣ бройни системи ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ◄► (.. скрий го отклонението за позиционнитѣ бройни системи ..) (.. свий го ..) (.. разгъни го ..) (.. скрий я̨ втората бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Отклонение_2: циклично броене, пръстени на остатъцитѣ (.. покажи го отклонението ..) (.. разгъна̨то ..)
-
▼▼
Отклонение_2: циклично броене, пръстени на остатъцитѣ
(.. скрий го отклонението ..)
(.. свий го ..)
(.. разгъни го ..)
- ►► Нѣщо като прѣдговор на второто отклонение (.. покажи ..)
-
▼▼
Нѣщо като прѣдговор на второто отклонение
(.. скрий ..)
- Основната тема на бесѣдата бѣше намирането на реалнитѣ корени на полином с реални коефициенти.
- При това "полето на дѣйствие" е полето на реалнитѣ числа.
- Но това бѣше в математическата задача за намирането на реалнитѣ корени на полином с реални коефициенти.
- В първото отклонение се отплѣсна̨х по вѫтрешното прѣдставяне на даннитѣ в компютритѣ.
- Там, в първото отклонение, вече напусна̨хме полето на реалнитѣ числа.
- Всичко в компютритѣ се моделира и се прѣдставя с цѣли числа.
- Аналогови компютри и дори хибридни аналогово-цифрови компютри аз не съм виђал.
- Всичко минава на цифровизация и дори вече си е цифрово (дигитално) - телефонни разговори, телевизия, звукозаписи.
- Дигиталното е по-надѣђно, по-стабилно и по-лесно се управлява.
- Аналоговото може да резонира със заобикалящия̌т ни реален аналогов свѣ̋т.
- Изградили сме си виртуален дигитален (цифров) свѣ̋т.
- Това бѣше още в първото отклонение.
- Трѣ̋бва да го прочетете прѣди второто отклонение.
- И сега идва второто отклонение.
- Ще се раздѣлим с прѣдставата за безкрайност.
- Ще замѣним безкрайността с цикличност.
- В нашитѣ човѣшки прѣдстави и усѣщания нѣ̋ма безкрайност.
- Всичко, до което се докасваме или което можем да погледнем, е отсам безкрайността.
- Не знаем къдѣ е тя, безкрайността.
- Лесно можем да си прѣдставим, че половината на нищото - на нулата - е точно равна на цѣ̋лото нищо (на цѣ̋лата нула).
- Но трудно можем да си прѣдставим, че половината на безкрайността е точно равна на цѣ̋лата безкрайност.
- Или че цѣ̋лата безкрайност е равна на половината си.
- Затова ще се раздѣлим с прѣдставата за безкрайност.
- Изложението не е на техническо ниво. То е на публицистично ниво.
- Едната цѣл е читателитѣ да добия̨т нѣ̋каква прѣдстава за цикличността в компютритѣ.
- В този смисъл това е продължение на първото отклонение от бесѣдата.
- От друга страна, подготвям обстойна публикация за разнитѣ календари и за разнитѣ календарни елементи.
- А там има много примѣри на циклично броене.
- (.. скрий го прѣдговорът на второто отклонение ..) (.. скрий го второто отклонение ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Основната тема на бесѣдата бѣше намирането на реалнитѣ корени на полином с реални коефициенти.
- ►► Цикличното броене в ежедневието (.. покажи ..)
-
▼▼
Цикличното броене в ежедневието
(.. скрий ..)
- Седмицата.
- Понедѣлник, вторник, срѣ̋да, четвъртък, петък, сѫбота, недѣля .. и пак понѣделник.
- И така повече от три хиляди години.
- Без прѣкѫсване, без приплъзгване, без грѣшки.
- Мѣсецитѣ.
- Януари, февруари, март, април, май, юни, юли, август, септември, октомври, ноември, декември .. и пак януари.
- И така повече от двѣ хиляди години.
- Циферблатът на часовницитѣ.
- Един часът, два часът, три часът, .., шест часът, .., девет часът, десет часът, единадесет часът, дванадесет часът, и пак един часът.
- И така откакто го има стария̌т часовник.
- Г-жа Петрова, начална учителка.
- Води първолаци, води второкласници, води третокласници, води четвъртокласници, и пак при първолацитѣ.
- И така до пенсия.
- Е, да:
- Първолацитѣ не сѫ сѫщитѣ, както прѣди четири годинин - други сѫ.
- Един часът днес по пладнѣ не е като един часът нощес, а пък утрѣ в един часът кой знае какво ще стане.
- Прѣз тазгодишния̌т януари бѣ̋х с цѣ̋ла година по-стар, отколкото бѣ̋х прѣз мина̨логодишния̌т януари.
- Този понѣдѣлник сериалът по телевизията свърши, и другия̌т понедѣлник ще почва друг сериал.
- Обаче:
- Все първолаци, дѣчица малки.
- Часовникът все един часът показва.
- И на стѣнния̌т календар пише все "януари".
- И слѣд този понѣдѣлник пак вторник ще дойде.
- (.. скрий го цикличното броене в ежедневието ..) (.. скрий го второто отклонение ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Седмицата.
- ►► Цикличното броене в математиката (.. покажи ..)
-
▼▼
Цикличното броене в математиката
(.. скрий ..)
- В прѣдишното отклонение бѣше написано, че появата на понятиетието за нула - изобрѣтяването на числото нула и на цифрата нула,
което се е случило сравнително наскоро, е дало тласък на развитието на математиката и на технологиитѣ.
- Ако часовниковитѣ циферблати не слѣдваха̌ стара традиция, означенията върху тѣ̋х щѣ̋ха̨ да сѫ от 0 до 11.
- С терминитѣ "поле" и "пръстен" се означават двѣ алгебрични структури, на които в математиката се дават опрѣдѣления.
- Елементитѣ им мога̨т да бѫда̨т наричани числа.
- И в двѣтѣ тѣзи структури сѫ възможни обичайнитѣ аритметични операции събиране, извађане и умножение.
- Има си нула, която не промѣня числото, към което е добавена.
- Има си и единица, която не промѣня числото, с което е умножена.
- Всѣ̋ко поле в частност е и пръстен, но не всѣки пръстен е поле.
- Един пръстен, за да бѫде поле, трѣ̋бва винѫги в него да е възможна операцията дѣление на число, което е различно от нула.
- Напримѣр.
- Числата 5 и 2 сѫ елементи поне на три полета: на полето на комплекснитѣ числа, на полето на реалнитѣ числа и на полето на рационалнитѣ числа.
- Ако числата 5 и 2 ги разглеђаме като елементи на поле, то можем да раздѣлим 5 на 2 и ще се получи число от сѫщото поле: числото 2.5 (двѣ и половина).
- Числата 5 и 2 сѫ елементи и на пръстенът на цѣлитѣ числа.
- Ако числата 5 и 2 ги разглеђаме като елементи на пръстенът на цѣлитѣ числа, то при операцията "5 дѣлено на 2" ще се получа̨т двѣ числа (двѣ числа от този пръстен): частно 2 и остатък 1.
- Число 2.5 (двѣ и половина) в този пръстен нѣ̋ма.
- Да забравим за полетата. Продължаваме само с пръстенитѣ.
От нѣ̋каква гледна точка, продължаваме с цѣлитѣ числа.- При дѣление на двѣ числа от един пръстен (при ненулев дѣлител, разбира се) може да не се намѣри едно число от този пръстен като резултат.
- Но ще се намѣря̨т двѣ числа: частно и остатък.
- Да си припомним, че цѣлта на това второ отклонение е да се раздѣлим с прѣдставата за безкрайност
и да я̨ замѣним с прѣдстава за цикличност.
- Като имаме на разположение нулата и позиционното прѣдставяне на числата.
- Обикновено в десетичната позиционна бройна система.
- Да се ограничим до послѣднитѣ двѣ десетични цифри, до послѣднитѣ два десетични разряда.
- Ако за двѣ цѣли положителни числа съвпадат послѣднитѣ двѣ цифри - единицитѣ и десетицитѣ - в десетичното им прѣдставяне, нека да смѣ̋таме, че тѣзи двѣ числа сѫ идентични.
- Така се получава пръстен, съдържащ точно 100 елемента - точно 100 "числа", нарѣчен "пръстен на остатъцитѣ по модул 100" и означаван така: Z100.
- Числата от този пръстен обикновено се означават така: 0, 1, 2, .., 98, 99.
- В този пръстен 12+12 е равно на 24. Ама 92+12 е равно на 4, защото 104 е идентично на 4
- В този пръстен 0-6 е равно на 94. Елементът 94 може да бѫде означен и така: -6.
- С други думи, нѣ̋маме никакъв проблем част от числата в пръстенът на остатъцитѣ да ги смѣ̋таме за отрицателни.
- Възможно е и всичкитѣ ненулеви елементи на този пръстен да ги смѣ̋таме за отрицателни.
- Отклонение за почивка. Да не си помислите, че дѣцата от 2-ри клас се уча̨т да смѣ̋тат в пръстенът Z100. Макар това донѣ̋къдѣ да е вѣ̋рно. Край на почивката.
- За всѣ̋ко цѣ̋ло число n по-голѣ̋мо от 1 сѫществува пръстен на остатъцитѣ по модул n с означение
Zn.
- Пръстенът Zn съдържа точно n числа: от 0 до n-1.
- Отклонение към физиката.
- Нѣ̋кои физични явления имат абсолютно начало и е естествено това начало да бѫде отбѣлѣ̋звано с цифрата 0 (нула).
- Напримѣр, абсолютната нула при температурата (минус 253 градуса по Целзий). По-ниска температура нѣ̋ма.
- Хората не винѫги сѫ осъзнавали сѫществуването на абсолютната температурна нула.
- И досега се използват температурни ска̀ли, къдѣто нулата не е в абсолютното начало,
а на нѣ̋кое друго условно прието мѣ̋сто:
- При ска̀лата на Целзий нулата е на точката на замръзване на водата.
- При ска̀лата на Fahrenheit нулата е най-ниската температура, измѣрена в Данциг (Гданск) прѣз зимата на 1708-1709.
- Врѣмето сѫщо има абсолютно начало - голѣмия̌т взрив, но това абсолютно начало е абсолютно недостижимо.
- Затова при отчитане на врѣмето винѫги се налага да слагаме нѣ̋къдѣ условна нула.
- Я̀ при рођението на Иисуса Христа.
- Я̀ при създаването на свѣтът според Библията.
- Я̀ от основаването на градът Рим.
- Я̀ в други точки от врѣмето.
- Край на отклонението към физиката.
- Да въведем абсолютно отброяване на днитѣ (на денонощията) от нѣ̋какво условно начало.
- За нулев ден ще обявя̨ 16-ти април 1916. 27499
- Избран е за по-лесни смѣтки.
- Това е първата недѣля слѣд въвеђането на григорианския̌т календар в България.
- Ще го нарѣка̨ този ден ДТВ: дѣ̋до тръгва на война.
- Абсолютно броене на днитѣ от ДТВ.
- Малко от днитѣ сѫ добри за България. Много малко.
- На ден 882 от ДТВ е пробивът на Добро поле.
- На ден 3287 от ДТВ терористи взривяват храм в центърът на София и убиват около 200 души.
- На ден 10373 от ДТВ България попада в лапитѣ на Сталин.
- На ден 26706 от ДТВ стотина хиляди мюсюлмани български грађани сѫ изгонени от страната.
- На ден 29514 от ДТВ - един от малкото хубави дни - БСП загуби властта - отстѫпи я̨ за около 8 години.
- На ден 30553 - най-хубавия̌т ден за България от ДТВ насам - Европейския̌т съюз рѣши да приеме България за члѣн.
- Ние хората не сме компютри и не отчитаме днитѣ така.
- В ежедневието си в много случаи отчитаме днитѣ циклично.
- Делим числото - броя̌т на днитѣ от ДТВ - на 7 и броим циклично. Прилагаме Z7: пръстенът на остатъцитѣ по модул 7.
- Имаме си имена за елементитѣ на този пръстен:
{0} недѣля, {1} понедѣлник, {2} вторник, {3} срѣ̋да, {4} четвъртък, {5} петък, {6} сѫбота. - Пробивът на Добро поле е бил в недѣля. [882 дѣлено на 7: частно 126 и остатък 0]
- Голѣмия̌т атентатът в софийски храм е бил в четвъртък. [3287 дѣлено на 7: частно 469 и остатък 4]
- България попада в лапитѣ на Сталин в сѫбота. [10373 дѣлено на 7: частно 1481 и остатък 6]
- Тодор Живков я̨ държа онази си рѣч в понедѣлник. [26706 дѣлено на 7: частно 3815 и остатък 1]
- Бѣше вторник, когато БСП отстѫпи властта за около 8 години. [29514 дѣлено на 7: частно 4216 и остатък 2]
- Рѣшението за приемането на България в Евросъюзът бѣ взето в петък. [30553 дѣлено на 7: частно 4364 и остатък 5]
- Да въведем абсолютно отброяване на часоветѣ от нѣ̋какво условно начало.
- Нека това условно начало е настѫпването на новата 2024 година.
- В час номер 15 (часовниковата стрѣлка сочи 3 на циферблатът) слушах на запис виенския̌т новогодишен концерт. [15 дѣлено на 12: частно 1 и остатък 3]
- В час номер 156 (часовниковата стрѣлка сочи 12) януарската ми пенсия е постѫпила по смѣтката ми. [156 дѣлено на 12: частно 13 и остатък 0]
- В час номер 906 (часовниковата стрѣлка сочи 6) февруарската ми пенсия е постѫпила по смѣтката ми. [906 дѣлено на 12: частно 75 и остатък 6]
- В час номер 1602 (часовниковата стрѣлка сочи 6) мартенската ми пенсия постѫпи по смѣтката ми. [1602 дѣлено на 12: частно 133 и остатък 6]
- В час номер 2167: часовниковата стрѣлка сочѣше 7 - мръдна̨х я̨ да сочи 8 заради лѣ̋тното часово врѣме. [2167 дѣлено на 12: частно 180 и остатък 7]
- Свикна̨ли сме да отчитаме часоветѣ циклично - в пръстен по модул 12.
- (.. скрий го цикличното броене в математиката ..) (.. скрий го второто отклонение ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- В прѣдишното отклонение бѣше написано, че появата на понятиетието за нула - изобрѣтяването на числото нула и на цифрата нула,
което се е случило сравнително наскоро, е дало тласък на развитието на математиката и на технологиитѣ.
- ►► Цикличното броене в компютритѣ (.. покажи ..)
-
▼▼
Цикличното броене в компютритѣ
(.. скрий ..)
- Ако числата се прѣдставят в radix 10 (десетична позиционна бройна система, r = 10)
и се ограничим до осем разряда (осем цифри, n = 8), ще можем да получим смѣ̋тане
в пръстенът на остатъцитѣ по модул 100000000. Сто милиона - десет на осма -
r на степен n -
това е мощността на пръстенът, толкова елемента той съдържа.
- Тѣзи сто милиона на брой числа сѫ от 0 (00000000) до 99999999.
- Послѣдното или "най-високото" число е 99999999.
- Ако към него добавим 1 ще получим 0 (00000000) и 1 прѣнос. Ето как:
- Добавяме единица към младшия̌т разряд. В него има 9. Става 10, тоест 0 (нула) и 1 (единица) прѣнос към старшия̌т разряд (едно на ум).
- Тази единица, която е прѣнос от младшия̌т разряд, я̨ добавяме към слѣдващия̌т разряд. В него има пак 9. Става 10, тоест 0 (нула) и 1 (единица) прѣнос към старшия̌т разряд (пак едно на ум).
- .. И така нататък. На всѣ̋ка позиция се получава 0 (нула) и 1 (единица) прѣнос.
- Към старшия̌т наличен разряд добавяме единицата, която е прѣнос от прѣдишния̌т разряд. Получава се пак 0 (нула) и единица прѣнос, който нѣ̋ма вече какво да го правим.
- Резултатът е 0 (00000000).
- Тази смѣтка бѣ направена в пръстенът Z100000000.
- Да се запитаме: щом в този пръстен 99999999+1 = 0, нима елементът 99999999 не е -1.
- Да, така е. В пръстенът Z100000000 99999999 е идентично с -1. Както и -1 е идентично с 99999999.
- Вѫтрешно в реалнитѣ компютри числата се прѣдставят в radix 2, двоично.
- Една двоична цифра се нарича бит.
- Един бит може да има стойност или 0 (нула) или 1 (единица).
- Нѣ̋кога имаше компютри с най-различна разрядност.
- Сегашнитѣ сѫ 64-битови или 32-битови.
- Да означим разрядността с n - radix-ът си е 2.
- Съотвѣтния̌т пръстен се означава така: Z2**n (пръстен Ζ с мощност 2 на степен n).
- Трудно е човѣк да съсрѣдоточи вниманието си върху 32 бита, а за 64 - да не говорим.
- Пръстенитѣ Z2**64 и Z2**32 нѣ̋ма как да ги използвам за илюстрация.
- Затова ще приема 8 бита, макар 8-битови компютри да нѣ̋ма отдавна.
- Пръстенът Z256 е с мощност 256 (двѣ на осма).
- Той съдържа 256 елемента - 256 числа.
- Тѣзи 256 числа, наредени по "височина", сѫ:
- Десетично от 0 до 255.
- Двоично от 0 (00000000) до 11111111.
- Осмично от 0 до 377.
- Шестнадесетично от 0 (00) до FF.
- Нѣ̋ма комбинация от 8 бита, която да не е прѣброена и да не е включена в тѣзи 256 елемента или 256 числа.
- Послѣдното или "най-високото" число е 11111111.
- Ако към него добавим 1 ще получим 0 (00000000) и 1 прѣнос. Ето как:
- Добавяме единица към младшия̌т разряд. В него има 1. Става 10, тоест 0 (нула) и 1 (единица) прѣнос към старшия̌т разряд (едно на ум).
- Тази единица, която е прѣнос от младшия̌т разряд, я̨ добавяме към слѣдващия̌т разряд. В него има пак 1. Става 10, тоест 0 (нула) и 1 (единица) прѣнос към старшия̌т разряд (пак едно на ум).
- .. И така нататък. На всѣ̋ка позиция се получава 0 (нула) и 1 (единица) прѣнос.
- .. Както по-горѣ при radix 10, така и сега при radix 2.
- Към старшия̌т наличен разряд добавяме единицата, която е прѣнос от прѣдишния̌т разряд. Получава се пак 0 (нула) и единица прѣнос, който нѣ̋ма вече какво да го правим.
- Резултатът е 0 (00000000).
- Тази смѣтка бѣ направена в пръстенът Z256.
- Да се запитаме: щом в този пръстен 11111111+1 = 0, нима елементът 11111111 не е -1.
- Да, така е. В пръстенът Z256
- 11111111 (десетично 255) е идентично с -1. Както и -1 е идентично с 11111111.
- 11111110 (десетично 254) е идентично с -10 (десетично -2).
- 11111100 (десетично 252) е идентично с -100 (десетично -4).
- 11111000 (десетично 248) е идентично с -1000 (десетично -8).
- 11110000 (десетично 240) е идентично с -10000 (десетично -16).
- 11100000 (десетично 224) е идентично с -10000 (десетично -32).
- 11000000 (десетично 192) е идентично с -1000000 (десетично -64).
- 10000000 (десетично 128) е идентично с -10000000 (десетично -128).
- Разбира се, нулата 00000000 е идентична с -0 (минус нула), както във всѣки пръстен.
- А щом десетичното 255 (двочно 11111111) е идентично с -1, като умножин това равенство с -1, дали е вѣ̋рно, че в този пръстен 1 (единицата, 00000001) е идентична с -255 (десетично)?
- Да, разбира се.
- И тъй, набѣлѣ̋зани сѫ три възможни интерпретации на елементитѣ (на числата) от пръстенът Z256.
- Имайте прѣд вид реалния̌т общ случай: пръстенът е Z2**32 или Z2**64.
- Аритметичнитѣ дѣйствия събиране, извађане, умножение и дѣление сѫ дефинирани в пръстенът независимо от интерпретацията на елементитѣ му.
- Забѣлѣжка. При дѣлението дѣлителя̌т не бива да е нула, а резултатитѣ сѫ два: остатък и частно.
- Тритѣ интерпретации сѫ слѣднитѣ:
- Адресна интерпретация. В езицитѣ С&C++ се означава unsigned int или само unsigned.
- Числата сѫ наредени по височина от най-ниското (нулата, 00000000) до най-високото (11111111, десетично 255).
- Елементитѣ 01111111 (десетично 127) и 10000000 (десетично 128) сѫ просто два сѫсѣдни адреса.
- Интерпретация със знак. В езицитѣ С&C++ може да се ползва се означава signed int или само int (integer).
- Нулата 00000000 е в разположена в срѣда̀та међу положителнитѣ и отрицателнитѣ числа.
- Елементитѣ от 00000001 (десетично 1) до 01111111 (десетично 127), 127 на брой, както сѫ си наредени по височина, се интерпретират като положителни числа от 1 до 127.
- Елементитѣ от 11111111 (десетично 255) до 10000000 (десетично 128), 128 на брой, се интерпретират като отрицателни числа от -1 до -128.
- Третата възможна интерпретация не се ползва.
- Всички числа освѣн нулата - 255 на брой - се интерпретират като отрицателни:
- от 11111111 (-1) до 00000001 (минус 255 десетично).
- Адресна интерпретация. В езицитѣ С&C++ се означава unsigned int или само unsigned.
- Каква е интерпретацията - дали е адресна (беззнакова, unsigned) или е знакова, има значение в три момента:
- Първо. Как да се показват елементитѣ на пръстенът в човѣшки вид.
- Второ. Как да се интерпретират сравненията међу елементитѣ на пръстенът.
- При знакова интерпретация 11111111 е -1 и е по-малко от нулата 0.
- При адресна интерпретация 11111111 е 255 десетично и е по-голѣ̋мо от нулата 0.
- На ниско ниво има различни операции за сравнение: едната се ползва при адресна интерпретация (кое е по-високо и кое е по-ниско), а другата се ползва при знакова интерпретация (кое е по-голѣ̋мо и кое е по-малко).
- В езицитѣ от високо ниво (напримѣр С&C++) сравненията се означават еднакво, но за всѣ̋ко число трѣ̋бва да се знае в какъв вид сравнения участва (unsigned или signed).
- Трето. Кога да се маркира особена ситуация.
- При знакова интерпретация, ако към 01111111 (127 десетично) добавим единица, ще се получи прѣпълване (integer overflow), тъй като резултатът минава в диапазонът на отрицателнитѣ числа.
- Сѫщата операция над сѫщитѣ елементи на пръстенът, но при адресна интерпретация, не бива да се маркира като особена ситуация.
- При адресна интерпретация особени ситуации възникват в други случаи.
- Напримѣр, особена ситуация от такъв тип е stack overflow.
- (.. скрий го цикличното броене в компютритѣ ..) (.. скрий го второто отклонение ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Ако числата се прѣдставят в radix 10 (десетична позиционна бройна система, r = 10)
и се ограничим до осем разряда (осем цифри, n = 8), ще можем да получим смѣ̋тане
в пръстенът на остатъцитѣ по модул 100000000. Сто милиона - десет на осма -
r на степен n -
това е мощността на пръстенът, толкова елемента той съдържа.
- ◄► (.. скрий го отклонението за цикличното броене ..) (.. свий го ..) (.. разгъни го ..) (.. скрий я̨ втората бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ◄► (.. скрий я̨ втората бесѣда ..) (.. свий я̨ ..) (.. посвий или поразгъни ..) (.. разгъни я̨ ..) .. към началото ..
►► .0. Бродерия на тракащ принтер (.. покажи я̨ третата бесѣда ..) (.. разгъна̨то ..) .. към началото ..
- Аз като студент по бакалавърска програма в математическия̌т факултет.
- По спомени от лѣ̋тото на 1977 - на стаж в Търново. ::2023-06-13 18:09::
▼▼ .0. Спомени от лѣ̋тото на 1977: Бродерия на тракащ принтер (.. скрий я̨ третата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
::2023-06-13 18:09::- ►► Аз като студент по бакалавърска програма в математическия̌т факултет (.. покажи ..) (.. разгъна̨то ..) (.. скрий я̨ третата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
-
▼▼
Аз като студент по бакалавърска програма в математическия̌т факултет
(.. скрий ..)
(.. свий ..)
(.. разгъни ..)
- ►► Реформитѣ на Благовѣст Сендов в математическия̌т факултет на софийския̌т университет (.. покажи ги ..)
-
▼▼
Когато бѣ̋х студент, Благовѣст Сендов бѣше ректор на университетът.
(.. скрий ..)
- Но прѣди това е бил декан на математическия̌т факултет. И като такъв е направил слѣднитѣ реформи или поне е съдѣйствал за тѣ̋х:
- По примѣрът на цивилизования̌т свѣ̋т висшето образование по математика в софийския̌т университет е стана̨ло двустепенно:
бакалавърска и магистърска степен.
- Конспиративното име на бакалавърската степен бѣше "блок_А", а на магистърската степен - "блок_B".
- Имаше и "блок_C" - аспирантура. Завършваше се с кандидатска степен. Сега това се прираянява на докторска степен.
- Не познавам никого, който да си е остана̨л само с "блок_А" и бакалавърска степен. Но вѣроятно е имало такива. Тѣ получаваха̨ диплома за висше образование по математика. И можѣха̨ да работя̨т като компютърни програмисти в изчислителнитѣ центрове.
- Почти всички колеги, които завършваха̨ бакалавърска степен по математика с конспиративно име "блок_А", продължаваха̨ образованието си или в "блок_B" за магистърска степен, или в "блок_D", къдѣто получаваха̨ педагогическа квалификация за учители по математика.
- Аз съм завършил и с двѣтѣ квалификации - магистър по математика и учител по математика.
- Но прѣз цѣ̋лата си професионална кариера съм работил само като компютърен програмист и софту̌ерен инженер.
- Английския̌т език - задължителен за бакалавритѣ по математика.
- Срѣдното образование включваше и обучение по западен език - френски, нѣмски или английски, но зрѣлостницитѣ не го усвоявахме този език.
- Естествено бѣше обучението по западен език да продължи и във висшето учебно заведение.
- Във факултетът по математика на софийския̌т университет задължителен бѣше английския̌т език.
- Прѣз семестритѣ не учѣхме нито английски, нито друг западен език.
- За нас се организираха̨ интензивни лѣтни курсове: прѣз лѣ̋тото слѣд първи курс (1975) и прѣз лѣ̋тото слѣд втори курс (1976).
- Интензивни курсове - всѣки ден по шест часа английски.
- Имаше отдѣлни групи за начинаещи като мене и за напрѣдна̨ли (които сѫ учили английски като срѣдношколци).
- Аз си остана̨х с гимназиалното ниво по френски език и трѣ̋бваше да започна̨ да уча̨ английски език.
- За мене това бѣше добър късмет.
- Отклонение за руския̌т език. Разчиташе се, че от 5-ти до 9-ти клас учащитѣ се сѫ го усвоили руския̌т език. Винѫги ни се е налагало да ползваме учебна литература на руски език и не сме имали проблеми нито аз, нито колегитѣ. Не може цѣ̋лата специализирана литература да се прѣвеђа и издава на български. Край на отклонението за руския̌т език.
- Интеграция на Факултетът по математика към Софийския̌т университет и на
Институтът по математика към БАН във Единен център по математика.
- Не мога̨ да формулирам какво значение имаше това за мене. Но за нѣ̋кои мои колеги това бѣше важно.
- Сега в България всички уча̨т английски от дѣтската градина, във висшето образование сѫ отдѣлени магистърска и бакалавърска степен не само в математиката.
- Но интеграцията међу софийския̌т университет и БАН едва ли е устоѣ̋ла на врѣмето.
- (.. скрий ги реформитѣ на Благовѣст Сендов ..) (.. скрий ги споменитѣ ми от 1975..76..77 ..) (.. свий ги ..) (.. разгъни ги ..) .. към началото ..
- ►► Не съм ходил на лѣтни студентски бригади. (.. покажи ..)
-
▼▼
Не съм ходил на лѣтни студентски бригади.
(.. скрий ..)
- Есеннитѣ студентски бригади не сѫ ми се размина̨ли.
- Ямболската консервена фабрика.
- Разни села из Сѣверозападна България.
- Но на лѣтни студентски бригади не съм ходил.
- Слѣд първи и втори курс студентитѣ от математическия̌т факултет на софийския̌т университет посѣщавахме интензивни курсове по английски и бѣ̋хме освободени от лѣтни бригади.
- Слѣд трети курс прѣз лѣ̋тото трѣ̋бваше да изкараме нѣ̋какъв стаж.
- Вѣроятно така е било и в другитѣ факултети и вузове - стаж вмѣсто бригада слѣд трети курс.
- Като ученик в търновската гимназия съм ходил и на лѣтни, и на есенни бригади.
- Помня̨, че когато се уби Гунди, бѣ̋х на бригада в еленския̌т балкан за бране на малини.
- Помня̨ и една есенна бригада в Рѣсен, в прѣдприятието за производство на сѣмена.
- Динитѣ там ги пускаха̨ в една машина да ги мачка и да отдѣля сѣмкитѣ.
- Ядѣ̋хме дини на корем, но сѣмкитѣ трѣ̋бваше да ги плюем и да ги прѣдаваме.
- А бе сега кой я̨ прибира селско-стопанската реколта?
- Пълно е с малини на пазарът. Кой се боде и ги бере тѣзи малини?
- (.. скрий защо не съм ходил на лѣтни бригади ..) (.. скрий ги споменитѣ ми от 1975..76..77 ..) (.. свий ги ..) (.. разгъни ги ..) .. към началото ..
- Есеннитѣ студентски бригади не сѫ ми се размина̨ли.
- ►► Подготовката ми за бѫдещата ми трудова дѣйност. (.. покажи ..)
-
▼▼
Подготовката ми за бѫдещата ми трудова дѣйност.
(.. скрий ..)
- Дипломирал съм магистър по математика със специалност "реален и функционалем анализ" и с допълнителна квалификация за учител по математика.
- Но прѣз цѣ̋лата си професионална кариера съм работил само като компютърен програмист и софту̌ерен инженер.
- Не трѣ̋бва да си мислите, че двугодишното ми обучение по магистърската програма е било за мене безполезно.
- Напротив.
- Бих прѣпорѫчал на всички, които имат тази възможност, да не остават с бакалавърска степен, а да си изкарат и диплома за магистър.
- Първо. Дипломата за магистърска степен е цѣнна. С нея̨ университетът увѣрява бѫдещитѣ Ви работодатели, че Вие имате умѣнията да оглавите проект.
- Вѣроятно, това е вѣ̋рно не само в областта на математиката и в компютърната индустрия, а и в други области.
- Думата "магистър" може да се прѣведе като "майстор".
- Второ. Обучение по магистърската програма на мене ми я̨ разшири общата култура.
- А за работата в компютърнара индустрия така и така е нужно постоянно човѣк да се учи на нови нѣща.
- Защото това е нова бързо развиваща се област.
- Лично аз се бѣ̋х задѫлбочил в математическата логика и основитѣ на математиката.
- Трето. Маловажно, но конкретно. Започна̨х работа на 1979-10-01 с начална заплата 120 лева.
- Ако си бѣ̋х остана̨л с бакалавърска степен, стартовата ми заплата щѣше да е 105 лева.
- Но наистина, повечето от техническитѣ умѣния, които ми бѣ̋ха̨ нужни, за да започна̨ работа в компютърната индустрия,
ги бѣ̋х усвоил прѣз обучението ми по бакалавърската програма.
- На първо мѣ̋сто, фундаментални курсове по алгебра, включително линейна алгебра.
- На второ мѣ̋сто, фундаментални курсове по ACM.
- Първа и втора част съотвѣтно в първи и втори курс.
- Съкращението ACM имаше двѣ разшифровки:
- На български: Автоматични Смѣтачни Машини.
- На английски: Automatical Computing Machines.
- И на трето мѣ̋сто, курсове по числени методи и по изслѣдване на операциитѣ (оптимиране).
- И всичко това с практически упражнения.
- Наред с фундаменталнитѣ въпроси, в курсът по ACM се усвояваха̨ и слѣднитѣ технически умѣния:
- JCL (Job Control Language) за DOS/360.
- Езицитѣ от този тип сега сѫ много по-развити и се наричат shell scripts.
- Езикът за програмиране PL/1.
- Той стана̨ "родния̌т ми език за програмиране".
- Прѣз първитѣ години на професионалната си кариера работѣх на него.
- На втория̌т национален конкурс по програмиране прѣз 1986, къдѣто спечелих голѣ̋мата награда, се състезавах на PL/1.
- Езикът за програмиране Fortran.
- Като студент го бѣ̋х усвоил добрѣ.
- Повечето практически упражнения ги правѣхме на Fortran.
- В професионалната си кариера обаче не съм ползвал Fortran.
- JCL (Job Control Language) за DOS/360.
- Отклонение. АСМ или ЕИМ?
- На професионален жаргон думата компютри никога не е била смѣсвана с думата калкулатори.
- На професионален жаргон винѫги се е употрѣбявала и думата машини, но само със значението компютри.
- И тритѣ тѣзи думи калкулатори, компютри и машини сѫ се употрѣбявали, откакто се помня̨.
- Абревиатуритѣ (съкращенията) АСМ и ЕИМ сѫ елементи на канцеларския̌т езиков стил и не се употрѣбяваха̨ в устната рѣч.
- АСМ: Автоматични Смѣтачни Машини.
- ACM: Automatical Computing Machines.
- ЕИМ: Електронни Изчислителни Машини.
- ЭВМ: Электронные Вычислительные Машины.
- Абревиатурата АСМ по-точно изразява сѫщността на компютритѣ като автоматични машини, за разлика от калкулаторитѣ.
- Но навсѣ̋къдѣ извън факултетът по математика грађанственост доби съкращението ЕИМ, което точно съотвѣтстваше на руското ЭВМ.
- Макар че абревиатуритѣ ЕИМ (ЭВМ) сѫ неточни, понеже електроннитѣ калкулатори сѫ сѫщо така електронни изчислителни машини, но не сѫ компютри.
- Отклонение в отклонението.
- Машината, която Џон Атанасов, професор по физика в университетът в Айова, е започна̨л да конструира, е била замислена като електронна изчислителна машина, но не като програмируем компютър.
- Автоматичната смѣтачна машина, която нѣмецът Конрад Цузе е конструирал, не е била електронна, но е била истински програмируем компютър.
- Край на отклоненията.
- (.. скрий я̨ подготовката ми като студент по бакалавърската програма ..) (.. скрий ги споменитѣ ми от 1975..76..77 ..) (.. свий ги ..) (.. разгъни ги ..) .. към началото ..
- ◄► (.. скрий ги споменитѣ ми от 1975..76..77 ..) (.. свий ги ..) (.. разгъни ги ..) (.. скрий я̨ третата бесѣда по споменитѣ ми от 1977 ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► На стаж в Търново (.. покажи ..) (.. скрий я̨ третата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
-
▼▼ На стаж в Търново
(.. скрий ..)
- Като студенти по бакалавърска програма слѣд трети курс трѣ̋бваше да изкараме нѣ̋какъв производствен стаж.
- Аз и още един колега карахме стажът си в търновския̌т териториален изчислителен център.
- Лѣ̋тото на 1977.
- Колегитѣ от териториалния̌т изчислителен център бѣ̋ха̨ така добри да ни разрѣшават да гледаме и да пипаме, без да ни дават задачи.
- Никак не ни ограничаваха̨, но и никак не разчитаха̨ на нас при развойнитѣ си и производственитѣ си задачи.
- Териториалния̌т изчислителен център бѣше оборудван с машина ЕС ЭВМ, младши модел, българско или съвѣтско производство.
- По онова врѣме не ме интересуваха̨ по-точни технически данни и нѣ̋ма как да помня̨.
- (.. скрий ги споменитѣ ми за стажът в Търново ..) (.. скрий я̨ третата бесѣда по споменитѣ ми от 1977 ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Бродерия на тракащ принтер (.. покажи ..) (.. разгъна̨то ..) (.. скрий я̨ третата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
-
▼▼ Бродерия на тракащ принтер
(.. скрий ..)
(.. свий ..)
(.. разгъни ..)
- ►► Като си нѣ̋мах друга работа, рѣших да избродирам картинка на принтер.. (.. покажи ..)
-
▼▼
Прѣз лѣ̋тото на 1977,
(.. скрий ..)
- докато бѣ̋х на стаж в търновския̌т териториален изчислителен център,
- като си нѣ̋мах друга работа,
рѣших да избродирам картинка на принтер.
- По онова врѣме се разпространяваха̨ подобни бродерии.
По-извѣстнитѣ бѣ̋ха̨:- "Изплѣзил ми се е Айнщайн"
- "Маймуна в дѫлбок размисъл се почесва зад ухото"
- Календар за текущата година
- Хората си ги разпечатваха̨ и си ги лѣпѣ̋ха̨ по стѣнитѣ.
- Вѣроятно и в търновския̌т териториален изчислителен център е имало такива.
- Използваше се достѫпната печатна база с цѣл забавление.
- Такива избродирани за тракащ принтер картинки трѣ̋бваше да се гледат отдалече.
- Избрах си да избродирам слѣдната подходяща grayscale картинка:
- Бѣ̋х я̨ намѣрил в Търново в нѣ̋какво списание.
- (.. скрий го рѣшението ми да бродирам на принтер ..) (.. скрий я̨ бродерията на принтер ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Принтери: тракащи, стържещи, рѫмжащи.. (.. покажи ..)
-
▼▼
Принтери: тракащи, стържещи, рѫмжащи..
(.. скрий ..)
- Съврѣменнитѣ принтери сѫ лазерни.
- Тѣ произвеђат цѣ̋ла страница наведнѫж.
- При работа рѫмжа̨т приглушено или съвсѣм тихо.
- Лазернитѣ принтери замѣстват нѣ̋когашнитѣ плотери при производството на чертежи.
- Сѣврѣменнитѣ цвѣтни лазерни принтери мога̨т да произвеђат картинки с фотографско качество.
- Да бродирам картинка на принтер се налагаше, само защото тогава - прѣз 70-тѣ, нѣ̋маше лазерни принтери.
- Друг вид принтери сѫ игленитѣ.
- При тѣ̋х пишеща глава се движи по хартията и с удари от иглички отпечатва знацитѣ.
- При движение на иглената глава по хартията се чува стържене.
- Миниатюрнитѣ иглички в печатащата глава мога̨т да изрисуват практически всѣ̋ка буква и всѣки йероглиф.
- Но картинка, произведена с такъв принтер, нѣ̋ма да има фотографско качество - тя винѫги ще изглеђа като бродерия.
- Сега стържещи принтерчета в миниатюрни размѣри се използват за печат на разни разписки и касови бѣлѣжки.
- Стигна̨хме и до линейнитѣ принтери (line printers), дѣто тракат.
- Вече нѣ̋ма такива - измѣстени сѫ от тихо рѫмжащитѣ лазерни принтери, които прѣвъзхођат линейнитѣ тракащи принтери и по бързина, и по качество.
- Прѣз 70-тѣ и 80-тѣ, повечето компютри у нас бѣ̋ха̨ оборудвани с линейни принтери полско производство.
- Такъв имаше и в търновския̌т териториален изчислителен център, къдѣто прѣз лѣ̋тото на 1977 карах стаж.
- Барабанът на тракащ линеен принтер удря хартията и с един удар отпечатва цѣ̋л ред.
- Но прѣди да удари, на всѣ̋ка позиция се установява релефната фигурка на съотвѣтната буква или цифра.
- С помощта на електрониката и фината механика.
- Такива релефни фигурки имаше по върховетѣ на лостчетата на старитѣ пишещи машини (typewriters), като при тѣ̋х тѣзи лостчета се задвижваха̨ с клавиши.
- Доколкото си спомням, линейнитѣ принтери имаха̨ по 132 знака на ред.
- Може да е имало и по-широки принтери.
- Имаше специална хартия за линейни принтери.
- Произвеђаше се с нѣ̋колко стандартни ширини.
- Обикновено една страница от такава хартия събираше 66 реда, отпечатани на линеен принтер.
- Принтерът можѣше да се програмира да удря на един и сѫщ ред повече от веднѫж, отпечатвайки различни текстове.
- Напримѣр, с втори и трети удар нѣ̋коя дума можѣше да се удебели (bold face).
- Но много удари на едно мѣ̋сто можѣха̨ да скѫсат хартията.
- Докато един стържещ иглен принтер би могъл да се настрои така, че игличкитѣ му да мога̨т да отпечатват огромно множество знаци (фирмени емблеми, китайски йероглифи), за линейнитѣ принтери това бѣше невъзможно.
- Един линеен принтер разполагаше с ограничен набор от знаци - около 90, тоест по около 90 релефни фигурки за буква или цифра на всѣ̋ка от 132-тѣ позиции на един ред.
- Латинското A и кирилското А се отпечатваха̨ с една и сѫща фигурка, разбира се.
- Да не говорим, че тѣ и се кодираха еднакво в ДКОИ/EBCDIC.
- (.. скрий ги видоветѣ принтери ..) (.. скрий я̨ бродерията на принтер ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- Съврѣменнитѣ принтери сѫ лазерни.
- ►► Перфокарти втора употрѣба (.. покажи ..)
-
▼▼
Перфокарти втора употрѣба - такива използвах..
(.. скрий ..)
- По врѣмето, когато бѣ̋х на стаж в търновския̌т териториален изчислителен център - става дума за 1977,
нѣ̋маше друг начин да се вкара нѣщо в компютърът освѣн от перфокарти.
- Става дума за компютър ЕС ЭВМ, аналог на младши модел на IBM/360.
- Тъй че както програмата ми, която да накара тракащия̌т принтер да бродира, така и даннитѣ за самата бродерия
трѣ̋бваше да се въведа̨т в компютърът от перфокарти, слѣд като програмата и даннитѣ се надупча̨т на перфокарти.
- Фирмата IBM е имала развита технология с перфокарти - некомпютърна технология - още от края̌т на 19-ти вѣк.
- Холеритова техника се е наричала. У нас не е бивала внедрявана.
- Аз работѣх с перфокарти в началото на трудовата си дѣйност.
- Бѣ̋х свикна̨л и да ги разчитам.
- Спомням си, че понѣ̋кога казвах: перфокарти мога̨ да чета̨, но магнитни ленти - не.
- От днешна гледна точка, тогавашната практика - и с перфокартитѣ, и с принтеритѣ - бѣше неоправдано прахосване на хартия.
- Обаче нѣ̋маше друг начин да се вкара нѣщо в компютърът освѣн от перфокарти.
- Не можѣше просто от клавиатурата.
- Нѣ̋маше и начин компютърът да покаже нѣщо на човѣк, освѣн излѣ̋зло на принтерът.
- Онѣзи компютри нѣ̋маха̨ достѫп до екрани.
- Рѣших да не натоварвам допълнително колегитѣ от търновския̌т териториален изчислителен център с прѣразход на ресурси.
A перфокартитѣ бѣ̋ха̨ производствен ресурс.- Рѣших за цѣлитѣ на бродерията да използвам перфокарти втора употрѣба.
- Не съм виђал нѣ̋кой друг нѣ̋кога да е ползвал перфокарти втора употрѣба.
- Както JCL/360 (the job control language, тогавашния̌т shell),
така и езицитѣ за програмиране (COBOL, Fortran, PL/1)
често изискваха кѫси редове от програмата,
и слѣдователно - перфокарти с малко перфориран текст.- Напримѣр, цѣ̋ла перфокарта бѣше нужна за означаване на "край на данни" (end-of-data), която имаше перфорация "/*" само в първитѣ двѣ позиции.
- Перфокартата имаше 80 позиции.
- Прѣрових хартиенитѣ отпадъци и намѣрих в достатъчно количество перфокарти с перфорация само в първитѣ 20 позиции.
- Използвах ги, за да перфорирам на тѣ̋х даннитѣ от бродерията.
- Използвах срѣднитѣ 50 позиции на всѣ̋ка перфокарта.
- Послѣднитѣ позиции на перфокартата не бѣ̋ха̨ надѣђни:
четецът на перфокарти (reader-ът) често се запъваше на послѣднитѣ позиции,
може би перфорационнитѣ машини не правѣха̨ добри дупки в края̌т на перфокартата.
- wikipedia: Computer programming in the punched card era
- (.. скрий ги перфокартитѣ ..) (.. скрий я̨ бродерията на принтер ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- По врѣмето, когато бѣ̋х на стаж в търновския̌т териториален изчислителен център - става дума за 1977,
нѣ̋маше друг начин да се вкара нѣщо в компютърът освѣн от перфокарти.
- ►► Пиксели на тракащ принтер (.. покажи ..)
-
▼▼
Пиксели на тракащ принтер
(.. скрий ..)
- В съврѣменни термини, форматът на бродерията нѣ̋ма как да е бил друг освѣн bitmap.
- Тази картинка тука е 129 пиксела на ширина и 185 пиксела на височина.
Това дава прѣдстава за съотношението.
Картинката, която аз избродирах за тракащ принтер,
бѣше около 100 пиксела на ширина и около 144 на височина. - Тъй като една страница на тракащ принтер бѣше 66 реда,
двѣ страници - 132 пиксела на височина, то
избродираната картинка захапваше трета страница. - Остатъкът от третата страница го запълних с календар.
- Картинката е greyscale. Затова я̨ избрах - защото не бѣше цвѣтна.
- Дълбочината ѝ (depth) сега е трудно да я̨ опрѣдѣля̨.
- Тя бѣше повече от два бита.
- Принтерът удряше два пѫти на един ред,
- като при всѣки удар във всѣки пиксел
- можѣше да има нѣ̋кой от знацитѣ "*.Ж/\#", а може би и други.
- Самото бродиране бѣше пипкава работа - само за мене.
- Доосъвършенстването на картинката бѣше още по-пипкава работа.
- То вече бѣше част от дебъгването на програмата.
- Нѣ̋ма да Ви занимавам повече с пипкави работи.
- (.. скрий ги пикселитѣ ..) (.. скрий я̨ бродерията на принтер ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ◄► (.. скрий я̨ бродерията на принтер ..) (.. свий я̨ ..) (.. разгъни я̨ ..) (.. скрий я̨ третата бесѣда по споменитѣ ми от 1977 ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Програмата или по-точно програмитѣ, а бе софту̌ерът (.. покажи ..) (.. разгъна̨то ..) (.. скрий я̨ третата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
-
▼▼ Програмата или по-точно програмитѣ, а бе софту̌ерът
(.. скрий ..)
(.. свий ..)
(.. разгъни ..)
- ►► Опции за дистрибуция - как програмата се разпространяваше (.. покажи ги ..)
-
▼▼
Опции за дистрибуция - как програмата се разпространяваше
(.. скрий ги ..)
- Задачата, с която се бѣ̋х заел по врѣме на стажът ми в търновския̌т териториален изчислителен център прѣз лѣ̋тото на 1977, бѣше развойна задача, задача за производство на софту̌ер, it was a software development task.
- По замисъл срѣдствата за прѣнос и обмѣн на данни и софту̌ер при компютритѣ ЕС ЭВМ бѣ̋ха̨ перфокартитѣ и магнитнитѣ ленти.
- Обаче в практиката перфокартитѣ се използваха̨ само за първичен вход на данни и програми.
- Оборудването, нужно за използването на перфокартитѣ при прѣнос и обмѣн на данни и софту̌ер, макар и налично, бѣше занемарено и не функционираше.
- Не съм го виђал да работи нито в Търново, нито в София.
- Разбира се, тестето перфокарти, изготвено в Търново за първичен вход, можѣх да си го взема̨ в София, но не можѣх да дам копие на другиго.
- Остават магнитнитѣ ленти като единствен носител за прѣнос и обмѣн на данни и софту̌ер в онѣзи условия.
- Обаче в практиката перфокартитѣ се използваха̨ само за първичен вход на данни и програми.
- Какво да се запише на магнитна лента с цѣл дистрибуция (разпространение) на софту̌ерния̌т продукт?
- Сѫществуват три опции:
- картинката във вид подходящ за принтер,
- програмата като обектен модул, или
- програмата в изходен код на PL/1.
- Kартинката във вид подходящ за принтер.
- Съврѣменния̌т аналог е файл за картинка във формат bitmap (.bmp).
- Тогава подобен файл би се получил, ако
програмата, която отпечатва бродираната картинка на тракащ принтер,
или "генерираната програма", както ще бѫде нарѣчена тя по-долу,
се пусне, слѣд като изходът ѝ се прѣнасочи
от принтерът към магнитен носител. - Магнитна лента, съдържаща такъв файл, можѣше да се занесе в друг изчислителен център с машина ЕС ЭВМ и тракащ принтер към нея̨ и там да се разпечата, примѣрно с програмата DITTO.
- Доколкото в картинката бѣше включен и календар, този начин на разпространение не покриваше цѣ̋лата функционалност.
- Нова дистрибуция би била нужна за всѣ̋ка нова година.
- Програмата като обектен модул.
- Това бѣше "легитимния̌т вариант" за дистрибуция, ако не искате да разпространявате изходния̌т код на програмата.
- Програмата, която отпечатва бродираната картинка на тракащ принтер,
или "генерираната програма", както ще бѫде нарѣчена тя по-долу,
е програма на езикът за програмиране PL/1. - Компилаторът от PL/1 обработва тази програма и резултатът от работата му е машинен код във формат обектен модул за DOS/360.
- Този обектен модул може да се запише на магнитма лента и да се занесе в друг изчислителен център с машина ЕС ЭВМ и тракащ принтер към нея̨.
- Там този обектен модул се подава на програмата LNKEDT (Linkage Editor),
и LNKEDT произвеђа готовата за изпълнение програма,
която ще отпечата картинката, като се пусне. - Готовата за изпълнение програма, прѣди да отпечата картинката, трѣ̋бва да прочете от входът си годината за календарът.
- Забѣлѣжѣте, че на мѣстото, къдѣто програмата е получена чрѣз дистрибуция по този вариант, не е задължително да има инсталиран компилатор от езикът PL/1.
- Програмата в изходен код на PL/1
- Програмата, която отпечатва бродираната картинка на тракащ принтер,
или "генерираната програма", както ще бѫде нарѣчена тя по-долу,
е програма на езикът за програмиране PL/1. - Тя е получена като резултат - като изход - от изпълнението на
"генериращата програма", за която ще стане дума по-долу. - Прѣди да се пусне "генериращата програма" изходът ѝ трѣ̋бва да се прѣнасочи към магнитен носител (понеже устройствата за punch на перфокарти никъдѣ не функционираха̨).
- Ако този носител е магнитна лента, то тя може да се отнесе в друг изчислителен център с машина ЕС ЭВМ с тракащ принтер и с компилатор от PL/1.
- Програмата, която отпечатва бродираната картинка на тракащ принтер,
- (.. скрий ги опциитѣ за дистрибуция ..) (.. скрий го софту̌ерът за бродерията ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Частитѣ на програмата (.. покажи ги ..)
-
▼▼
Частитѣ на програмата
(.. скрий ги ..)
- Задачата, с която се бѣ̋х заел по врѣме на стажът ми в търновския̌т териториален изчислителен център прѣз лѣ̋тото на 1977, бѣше развойна задача, задача за производство на софту̌ер, it was a software development task.
- Дѣйноститѣ по тази задача бѣ̋ха̨ от два типа: бродиране и програмиране.
- И в двата случая резултатитѣ сѫ тестета перфокарти.
- Пет тестета, всѣ̋ко в един екземпляр.
- Калѐ-тестѐ: тесте перфокарти с програмата за календарът.
- Тази програма извеђа календар за зададена година.
- Обикновен календар по мѣсеци и дни в седмицата.
- Тука нѣ̋ма да се спирам на нея̨.
- Подготвям друга публикация по календарнитѣ въпроси.
- Това тесте трѣ̋бва да стане част от "генерираната програма".
- Пѝксел-тестѐ: съдържа самата "бродерия" на картинката.
- Най-голѣ̋мото тесте.
- За него изполвах перфокарти втора употрѣба,
- само срѣднитѣ им позиции.
- То трѣ̋бва да влѣзе в "генерираната програма" във фо̀рмата на текстови литерали (константи).
- Прѝнтер-тестѐ: тесте перфокарти с печатащата програма.
- Тя трѣ̋бва първо да изведе на принтерът картинката, слѣд което да пусне и подпрограмата за календарът.
- Това е началната част на "генерираната програма", прѣди текстовитѣ литерали (пѝксел-тестѐто) и прѣди програмата за календарът.
- Ра̀птор-тестѐ: Генера̀[п]торът, "генериращата програма".
- Това е първата програма, която трѣ̋бва да се компилира и да се изпълни.
- Прѣди да се пусне тя за изпълнение, изходът ѝ трѣ̋бва да се прѣнасочи към магнитен носител,
- зашото на изходът ѝ ще се получи "генерираната програма",
която от своя страна- или веднага ще се компилира и ще се изпълни, за да разпечата картинката и календарът,
- или веднага ще се компилира, като получения̌т обектен модул се използва за дистрибуция,
- или пък самата "генерираната програма" ще се използва за дистрибуция.
- "Генериращата програма" (генераторът), като се пусне,
- първо изчита прѝнтер-тестѐто и го извеђа на изходът си,
- послѣ чете срѣднитѣ позиции на пѝксел-тестѐто и прѣобразува прочетенитѣ данни в програмни литерали, които праща към изходът си като част от "генерираната програма",
- и накрая̌ изчита калѐ-тестѐто и го извеђа на изходът си.
- На изходът на генераторът се получава "генерираната програма" на езикът PL/1.
- Виртуално тестѐ JCL: Това не е тесте, а набор от перфокарти.
- Тѣзи перфокарти съдържат команди на езикът JCL.
- Разполагат се правилно около и међу горнитѣ четири тестета.
- С такава перфокарта:
- Mоже да се пусне компилаторът от PL/1.
- Току-що компилираната опрограма може да се свърже (via LNKEDT) и да се пусне.
- Може входът и изходът на програма, прѣди пускането ѝ, да се прѣнасоча̨т.
- Може да се означи края̌т на тесте перфокарти,
- Може да се означи края̌т на заданието към компютърът.
- Благодаря̨ на компютър не се казва.
- Калѐ-тестѐ: тесте перфокарти с програмата за календарът.
- (.. скрий ги частитѣ на програмата ..) (.. скрий го софту̌ерът за бродерията ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ◄► (.. скрий го софту̌ерът за бродерията ..) (.. свий го ..) (.. разгъни го ..) (.. скрий я̨ третата бесѣда по споменитѣ ми от 1977 ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ◄► (.. скрий я̨ третата бесѣда за бродерията на принтер по споменитѣ ми от 1977 ..) (.. свий я̨ ..) (.. посвий или поразгъни ..) (.. разгъни я̨ съвсѣм ..) .. към началото ..
►► .0. ЕГН-то отвѫтрѣ (.. покажи я̨ четвъртата бесѣда ..) (.. разгъна̨то ..) .. към началото ..
- Ако Ви интересува как е съставено ЕГН-то и в частност как се прѣсмѣ̋та контролната цифра. ::2021-10-30 11:13::
▼▼ .0. ЕГН-то отвѫтрѣ (.. скрий я̨ четвъртата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
::2021-10-30 11:13::- ►► ЕГН-то отвън (.. покажи ..)
-
▼▼ ЕГН-то отвън
(.. скрий го прѣдговорът на четвъртата бесѣда ..)
- Когато прѣз годинитѣ 1993..98 работѣх в Банксервиз, знаѣх алгоритъмът за опрѣдѣляне на контролната цифра на ЕГН-то. Моя бѣше програмата, която я̨ провѣряваше. Сѫщия̌т алгоритъм се използваше и за контролната цифра на още два тогавашни банкови идентификатора.
- Сега на стари години цѣлта ми е да си припомня̨ този алгоритъм.
- Отклонение: Единния̌т грађански номер (ЕГН) е въведен прѣз 1977.
- Знаете ли как изглеђаше точната идентификация на човѣкът-поданик прѣди 1977?
- Ето така изглеђаше:
- Жител на еди-кой си окрѫг и на еди-коя си община.
- [Жител на еди-кое си населено мѣ̋сто.]
- Забѣлѣжѣте: жител, не просто живущ или прѣбиваващ.
- Име, презиме, фамилия.
- Дата на рађане.
- Том и страница - отбѣлѣ̋звани в тогавашнитѣ паспорти.
- ЕГН-то бѣ въведено заради компютърнитѣ технологии.
- В САЩ ролята на ЕГН-то изпълнява SSN (Social Securuty Number) - номерът за социално осигуряване.
- Има правило от теорията за базитѣ данни, че
- в идентификаторитѣ на обектитѣ не бива да се кодират други характеристики на тѣзи обекти.
- ЕГН-то не спазва това правило.
- В него сѫ кодирани: датата на рађане, полът - мѫжки или женски, и - едва сега научавам това - окрѫгът.
- Google ме насочи към програма с автор Георги Чорбаџийски.
- Ето го изходния̌т код на тази програма.
- Ето я̨ в дѣйствие.
- Програмата на Георги Чорбаџийски е написана на php, което означава, че тя се изпълнява на web-сървър.
- Аз си нѣ̋мам мѣ̋сто на web-сървър, настоящия̌т мой текст е на blogspot.com, но това е само склад за текстове и картинки. Нѣ̋мам право да пиша̨ програми, които да се изпълняват на blogspot.com.
- Имам право обаче вѫтрѣ в настоящия̌т текст да вмъкна̨ програма, която да се изпълни на Вашето устройство, на Вашия̌т лаптоп или на Вашия̌т смартфон.
- Такава програма трѣ̋бва да бѫде написана на JavaScript.
- Интерпретатор на JavaScript е вграден във всѣки съврѣменен browser, и на Вашето устройство със сигурност има browser, чрѣз който Вие ровите в мрѣжата internet.
- И тъй, занимавката ми е да прѣпиша̨ от php на JavaScript тази част от програмата на Георги Чорбаџийски, която прави анализ на ЕГН-то.
- Програмата на Георги Чорбаџийски има и друга част - генерация на ЕГН-та, тя сѫщо би могла да се прѣпише от php на JavaScript, но ще си спѣстя̨ тази тривиалност.
- .. скрий го ЕГН-то отвън .. (.. скрий я̨ бесѣдата за ЕГН-то отвѫтрѣ ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Изходен код на програмата за изчисляване на контролната цифра (.. покажи ..)
-
▼▼ Изчисляването на контролната цифра в source на JavaScript
(.. скрий ..)
- Изчисляването на контролната цифра по модул 11.
Приема низ от цифри. Връща цифра или празно при невалидни данни. - .. скрий я̨ функцията на JavaScript .. (.. скрий я̨ бесѣдата за ЕГН-то отвѫтрѣ ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- Изчисляването на контролната цифра по модул 11.
-
►► Програмата за изчисляване на контролната цифра в дѣйствие
(.. покажи ..)
-
▼▼ Програмата за изчисляване на контролната цифра в дѣйствие
(.. скрий ..)
Въведете нѣ̋колко цифри, напримѣр първитѣ девет цифри на ЕГН:
Като натиснете , ще получите контролната цифра. -
►► Анализ на въведено ЕГН
(.. покажи ..)
-
▼▼ Анализ на въведено ЕГН
(.. скрий ..)
Въведете десеттѣ цифри на ЕГН-то:
- ◄► (.. скрий я̨ четвъртата бесѣда за ЕГН-то ..) (.. свий я̨ ..) (.. посвий или поразгъни ..) (.. разгъни я̨ ..) .. към началото ..
►► .0. Дисковата памет на System/360 (.. покажи я̨ петата бесѣда ..) (.. разгъна̨то ..) .. към началото ..
- Как развитието на харду̌ерът кара софту̌ериститѣ да забравя̨т старитѣ проблеми и да се захвана̨т с нови.
▼▼ .0. Дисковата памет на System/360 (.. скрий я̨ петата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Нѣщо като прѣдговор, нѣщо като въведение (.. покажи го ..) (.. разгъна̨то ..)
-
▼▼
Нѣщо като прѣдговор, нѣщо като въведение
(.. скрий го ..)
(.. свий го ..)
(.. разгъни го ..)
- ►► Шапка на тояга (.. покажи ..)
-
▼▼
Шапка на тояга. Доживѣ̋х.
(.. скрий ..)
- Прѣз 2018 се пенсионирах, слѣд като придобих изикващитѣ се стаж и възраст за това.
- Пенсионирах се слѣд 40 години работа като компютърен програмист и софту̌ерен инженер.
- В сѫщност бѣ̋х много добър кодировчик.
- Много добрѣ съм се разбирал с компютритѣ.
- Влизал съм им под тенекиитѣ - при битоветѣ.
- Защото тѣ само от битове разбират.
- С компютри съм се занимавал от 70-тѣ:
- като ученик в началото на 70-тѣ;
- като студент в срѣда̀та на 70-тѣ; и
- професионално от края̌т на 70-тѣ.
- Едва ли има друга технологична област с толкова много промѣни.
- Ако кажа̨, че прѣз 70-тѣ или 80-тѣ съм можѣл да прѣдскажа̨ бѫдещето, ще излъжа̨.
- (.. скрий това, че дочаках пенсия ..) (.. скрий го въведението към петата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Какво го нѣ̋ма днес при компютритѣ. И добрѣ че го нѣ̋ма. (.. покажи ..)
-
▼▼
Какво го нѣ̋ма днес при компютритѣ - това ще е тази пета бесѣда.
(.. скрий ..)
- Нѣ̋ма бездискови компютри.
- Нѣ̋ма канални програми.
- Нѣ̋ма потрѣбителско форматиране на дисковитѣ писти.
- Нѣ̋ма значение геометрията на дисковетѣ.
- Нѣ̋ма намѣстване на файловетѣ върху дискът от потрѣбителя̌т.
- Нѣ̋ма сподѣлени цилиндри.
- Нѣ̋ма осигурен от харду̌ерът асоциативен достѫп до дискът.
- Нѣ̋ма си прѣдстава системния̌т софту̌ер за вѫтрешната структура на файловетѣ.
- Нѣ̋ма магнитни глави отдѣлно от дисковетѣ.
- То и истински дискове нѣ̋ма вече.
- SSD-тата дискове ли сѫ?
- Върша̨т работа като дискове. Минават за дискове.
- (.. скрий какво го нѣ̋ма днес ..) (.. скрий го въведението към петата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ◄► (.. скрий я̨ петата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Бездискови компютри (.. покажи ги ..)
-
▼▼
Бездискови компютри
(.. скрий ги ..)
- Срѣдношколски спомени.
- Завършил съм гимназия (11-ти клас) прѣз 1972 със специалност "изчислител-кодировчик".
- В 9-ти клас за компютритѣ Минск-2 се учѣхме да кодираме на машинен език.
- Сега това го правя̨т програми, нарѣчени асемблери.
- В дѣйствителност, учебната програма бѣше остарѣ̋ла.
- Тогава вече никой не е пишѣл компютърни програми на машинен език.
- Все пак, тѣзи упражнения бѣ̋ха̨ полезни за мене.
- В гимназията не бѣ̋х чувал за дискови устройства.
- Компютритѣ Минск-2 и Минск-22 нѣ̋маха̨ дискови устройства.
- Тѣ май нѣ̋маха̨ никакви магнитни устройства.
- Повече за компютритѣ Минск-2 - в първата бесѣда.
- Прѣз 70-тѣ в България се появиха̨ териториални изчислителни центрове.
- В нѣ̋кои имаше компютри Минск-22, които имаха̨ магнитни ленти, но не и дискове.
- Водиха̨ ни на екскурзия в София и ни показаха̨ компютър FACOM - с магнитни ленти, без дискове.
- Магнитнитѣ ленти впечатляващо се въртѣ̋ха̨.
- Прѣз 80-тѣ колеги от варненско прѣдприятие ми разказаха̨.
- Имали стар оригинален компютър IBM/System-360. Но без дискове.
- Знаѣх, че първитѣ модели на IBM/System-360 нѣ̋мат дискове.
- Работѣл стабилно и безотказно. Вършѣл им работа.
- Не искали да го замѣнят с нов модел, който нѣ̋ма как да бѫде друг освѣн от некачественото производство отсам желѣ̋зната завѣса.
- Докато бѣ̋х в казармата, съм пропусна̨л двѣ важни събития:
- оттеглянето на Brigitte Bardot, и
- появата на компютърнитѣ дискове.
- Като студент и като професионалист не съм работил на бездискови компютри.
- Разни терминални устройства може вѫтрешно да сѫ приличали на компютър.
- Обаче устройство, което не прѣдлага програмистки достѫп, за мене не е компютър.
- Забѣлѣжка_1. Съврѣменнитѣ смартфони сѫ компютри. Тѣ имат диск (макар и SSD). Прѣдлагат и програмистки достѫп за този, който знае как.
- Забѣлѣжка_2. Най-разнообразни устройства мога̨т да съдържат вграден (embedded) софту̌ер. Компютри се използват за създаването му и вѣроятно за самото вграђане.
- Споменатитѣ компютри - Минск-2, Минск-32, Facom-230–30 (ЗИТ-151), нѣ̋мат магнитно-дискови устройства.
- Нѣ̋мат енерго-независма външна памет с прѣ̋к достѫп.
- Били сѫ в експлоатация у нас прѣз 60-тѣ и 70-тѣ.
- Вече нѣ̋ма такива компютри. Слава Богу!
- (.. скрий ги бездисковитѣ компютри ..) (.. скрий я̨ петата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- Срѣдношколски спомени.
- ►► Канали (периферни процесори) и канални програми (.. покажи ги ..)
-
▼▼
Канали (периферни процесори) и канални програми
(.. скрий ги ..)
- Дисковетѣ сѫ дошли у нас със системата IBM/360 (ЕС ЭВМ).
- Забѣлѣжка_1. В прѣдния̌т раздѣл на тази бесѣда стана̨ дума, че ..
- сѫ сѫществували младши модели на IBM/360 без дискове.
- Прѣдполагам, че когато сѫ планирали системата ЕС ЭВМ, не сѫ съзнавали голѣ̋мото значение и изключителната важност на дисковетѣ.
- Социалистиическа България извадила късмет.
- Заводът за дискове го построили в Стара Загора.
- И този завод нѣ̋колко послѣдователни години бѣше монополист в производството на магнитно-дискови устройства в пространството от Бранденбургската врата до Владивосток.
- И реализираше голѣми печалби като монополист.
- Докато другитѣ страни от СИВ (СЭВ, Comecon) не се усѣтиха̨.
- Към края̌т на 80-тѣ монополът бѣше загубен.
- Забѣлѣжка_2. В
първата бесѣда
стана̨ дума за ..
- компютърът Витоша, изработен в един екземпляр от български учени и инженери.
- Оперативната му памет (RAMът му) е бил[а] реализиран[а] на магнитен барабан.
- Да, вѣрно е, че магнитния̌т барабан (drum) е вид диск
(диск с много глави и само един цилиндър),
но в компютърът Витоша този барабан (или диск) се е ползвал като оперативна памет, а не като трайна външна памет. - Пък и тогава - прѣз 70-тѣ, бѣ̋х чувал за фамозния̌т компютър Витоша, но прѣдстава си нѣ̋мах за строежът му.
- Забѣлѣжка_1. В прѣдния̌т раздѣл на тази бесѣда стана̨ дума, че ..
- Сега чиповетѣ "централен процесор" сѫ евтино масово производство
и се влагат в най-различни издѣлия.
- Във всѣки смартфон има един-два.
- Във всѣки автомобил има десетина.
- Тогава обаче централния̌т процесор на IBM/System-360 заемаше шкаф.
- Централния̌т процесор бѣше смѣ̋тан за скѫпа част от оборудването.
- Част, която трѣ̋бва да се щади. И да се разтоварва.
- В сѫсѣдство със шкафът на централния̌т процесор на IBM/System-360 бѣ̋ха̨ разположени перифернитѣ процесори.
- В "научната" литература тѣ се наричаха̨ "периферни процесори".
- Но в дикументацията на IBM се наричаха̨ канали (channels).
- Знаѣхме ги като канали.
- Сигурно е имало различни конфигурации на каналитѣ, но аз съм виђал само една:
- Три канала: 2, 1 и 0.
- Към 2-ри канал се включваха̨ магнитно-лентовитѣ устройства.
- Към 1-ви канал се включваха̨ магнитно-дисковитѣ устройства.
- А нулев канал бѣше прѣдназначен за бавната периферия: конзола, принтер, четец на перфокарти (reader) и пънч (punch).
- Оборудването за пънчът бѣше налично и значи заплатено.
- Но работещ пънч не съм виђал.
- Във Варна, къдѣто прѣз 80-тѣ все още експлоатирани стар оригинален бездисков модел на IBM/System-360, за което стана̨ дума в прѣдишния̌т раздѣл, пънчът си работѣл безотказно.
- При бездискова система имаше по-малко възможности да се елиминира необходимостта от пънч.
- И тъй, става дума за управлението на периферията на IBM/System-360, за входно-изходнитѣ (Input/Output, I/O) операции.
- Това е работа на каналитѣ (на перифернитѣ процесори).
- Особеното в архитектурата на IBM/System-360 е, че каналитѣ сѫ процесори и изпълняват програми.
- Каналнитѣ програми сѫ на машинния̌т език на каналитѣ,
който е много различен от машинния̌т език на централния̌т процесор.
- Тѣ се състоя̨т от 8-байтови команди.
- Една такава команда се наричаше CCW (Channel Command Word, ЦеЦеВѐ).
- При писане на канални програми от потрѣбител мнемоничността е минимална.
- Появата на адресната прѣадресация (на виртуалната памет) във IBM/System-370 (виж слѣдващата бесѣда) направи писането на канални програми от потрѣбител невъзможно.
- Чрѣз канална програма може да се разглоби входен запис или да се сглоби изходен запис.
- Примѣр. Нека на входът имаме записи по 80 байта (перфокарти) за всѣки човѣк от прѣдприятието.
- Първитѣ пет байта - служебен номер.
- Слѣдващитѣ десет байта - ЕГН.
- Слѣдващитѣ тридесет байта - име, прѣзиме, фамилия.
- До края̌т на перфокартата - други данни: отдѣл. адрес, и т. н.
- Интересуват ни само служебния̌т номер и полето "име, прѣзиме, фамилия".
- Чрѣз канална програма каналът може да бѫде инструктиран да пропуска даннитѣ, които не сѫ от интерес - да не се заема оперативна памет за тѣ̋х.
- Чрѣз канална програма каналът може да бѫде инструктиран даннитѣ, които сѫ от интерес, да бѫда̨т разположени в паметта в указан ред, а не непрѣмѣнно както сѫ във входния̌т поток.
- Чрѣз канална програма може да се осѫществи асоциативен достѫп до дискът.
- На това е посветен отдѣлен раздѣл на тази бесѣда.
- Свързано е и с потрѣбителското форматиране на дисковитѣ писти, на което сѫщо е посветен отдѣлен раздѣл.
- И тогава, и сега
елементарнитѣ операции с перифернитѣ (входно-изходнитѣ) устройства
се извършват с посрѣдничество на харду̌ерни устройства, нарѣчени контролери.
- Контролерът знае особеноститѣ на съотвѣтното периферно устройство.
- Контролерът е настроен и към харду̌ернитѣ интерфейси на съотвѣтния̌т компютър.
- При компютритѣ от системата IBM/360 (както и при IBM/370), всѣки контролер бѣше свързан с нѣ̋кой канал (с нѣ̋кой периферен процесор).
- При всички по-модерни компютри контролеритѣ сѫ свързани с централния̌т процесор, а повечето от тѣ̋х имат достѫп и до оперативната памет (до RAMът).
- Нѣ̋ма вече канали (периферни процесори).
- Нѣ̋ма вече и канални програми. Слава Богу!
- Съврѣменнитѣ процесори сѫ толкова бързи, че нѣ̋ма защо да се щадя̨т и да се разтоварват.
- И ако трѣ̋бват повече от един, слагат се толкова, колкото е нужно.
- Защо тѣзи процесори трѣ̋бва да имат толкова различни архитектури и различни машинни езици?
- Сега сѫществуват обособени части на системния̌т софту̌ер, нарѣчени
драйвери (drivers).
- Всѣ̋ко периферно харду̌ерно устройство (drive) си върви в комплект с drivers (драйвери) за всѣ̋ка компютърна архитектура и платформа.
- Драйверът, който е софту̌ер, се разбира с контролерът, който е харду̌ер.
- Драйверът подава команди на контролерът, който знае как да накара устройството да изпълни командата.
- Драйверът получава отчет от контролерът за изпълнението на задачата.
- Драйверът получава отчет от контролерът за текущото състояние на устройството.
- Тогава на нивото на сегашнитѣ драйвери имаше системен софту̌ер, нарѣчен методи на достѫп (access method).
- Каналнитѣ програми бѣ̋ха̨ части от методитѣ на достѫп.
- Имахме си работа с три метода на достѫп:
- послѣдователен (sequential),
- прѣ̋к (direct), и
- индексно-послѣдователен (indexed sequential, ISAM).
- (.. скрий ги каналнитѣ програми ..) (.. скрий я̨ петата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- Дисковетѣ сѫ дошли у нас със системата IBM/360 (ЕС ЭВМ).
- ►► Потрѣбителското форматиране (.. покажи го ..) (.. разгъна̨то ..)
-
▼▼
Потрѣбителското форматиране
(.. скрий го ..)
(.. свий го ..)
(.. разгъни го ..)
- Потрѣбителското форматиране на дисковитѣ писти съм го срѣщал само в системитѣ IBM/360 и IBM/370.
- Да, на потрѣбителитѣ им се налагаше да форматират дискети, но тогава се прилагаше фабрично форматиране, стандартно форматиране.
- При форматиране на дискета потрѣбителя̌т не указваше как тя да бѫде форматирана.
- За да се разбере проблемът с форматирането на дисковитѣ писти,
(.. покажи ..)
(.. покажи ..) първо трѣ̋бва да имаме прѣдстава за магнитнитѣ ленти. - За да се разбере проблемът с форматирането на дисковитѣ писти,
(.. скрий ..)
първо трѣ̋бва да имаме прѣдстава за магнитнитѣ ленти. (.. скрий ..)- Понеже една неформатирана писта на магнитен диск е като магнитна лента. Е да, доста по-кѫса.
- Човѣк може да види и даже да прочете запис върху перфолента или перфокарта.
Човѣк може да види баркод или QR-код.
Но не и магнитен запис. Човѣк нѣ̋ма сѣтива за това. - Стандартнитѣ магнитни ленти от 70-тѣ и 80-тѣ бѣ̋ха девет-пистови (девет-пѫтечкови, 9 tracks).
- Това, което се виђаше като магнитна глава на устройството, в дѣйствителност бѣше букетче от девет глави за запис и четене.
- Отклонение_1. Осем плюс едно е девет.
- Или броя̌т на пиститѣ при стандартнитѣ магнитни ленти бѣше девет, защото в индустрията вече бѣше установено понятието байт като редица от осем бита.
- Или понятието байт като редица от осем бита е възникна̨ло заради установилия̌т се деветпистов стандарт при магнитнитѣ ленти.
- Как да е. Връзка има.
- При най-простия̌т метод на запис (NRZ, 800bpi), можете да си прѣдставяте магнитната лента като девет-пѫтечкова перфолента.
- На всѣ̋ка позиция - 0 или 1 - има или нѣ̋ма дупка.
- На всѣки ред - девет позиции, девет бита.
- Деветия̌т бит е за контрол по нечетност (odd parity).
- Ако на редът, който е съставен от девет бита, нѣ̋ма нито една дупка - нито една единица, то на този ред нищо не е записано.
- Защото дори байт, съставен от осем нулеви бита, се записва с единица в пѫтечката за контрол по нечетност.
- Броя̌т на единицитѣ (на дупкитѣ) на един ред трѣ̋бва да е нечетен.
- Редоветѣ, къдѣто има нѣщо записано, трѣ̋бва да сѫ групирани в записи (records).
- Понѣ̋кога вмѣсто запис (record) се казваше блок (block).
- Имаше ограничения за дължината на един запис.
- Устройството се сърдѣше, ако записът е по-кѫс от 18 байта.
- Не се приемаха̨ и твърдѣ дълги записи, защото лентата може много да се разпъне на такова мѣ̋сто при скоростта на четене.
- Устройството не може да си почива вѫтрѣ в един запис (вѫтрѣ в един блок).
- Освѣн това, на самия̌т край на блокът има един или два контролни байта.
- Устройството си почива међу записитѣ (међу блоковетѣ).
- За цѣлта међу записитѣ се оставя празнина (gap), достатъчно дълга, така че да даде възможност на устройството да спре међу два записа и да може слѣд това да ускори до скорост за четене прѣди достигане на слѣдващия̌т блок.
- Отклонение_2. Чист спирт за почистване на магнитнитѣ глави.
- Главитѣ на магнитно-дисковитѣ устройства сѫщо се замърсяваха̨, но почистването им изискваше специална квалификация и се правѣше при редовна харду̌ерна профилактика.
- А да чистя̨ главитѣ на магнитно-лентовитѣ устройства се е налагало и на мене.
- Чист спирт винѫги бѣше на разположение за цѣлта в нѣ̋кой шкаф или чекмеџе - знаѣше се къдѣ, заедно с чисто парцалче.
- Имаше едно българо-съвѣтско прѣдприятие на софийската улица Александър Стамболийски.
- Там дошъл на работа ново-назначен директор - прямо из Москвы или прямо из Минска - не знаю точно.
- И първата му работа била да провѣри как се съхранява чистия̌т спирт, нужен за почистване на магнитнитѣ глави.
- Наложило се да му обясняват, че никой в България нѣ̋ма да пие чист спирт при наличието на толкова много спиртни напитки.
- Ролкитѣ с магнитни ленти се произвеђаха̨ в три стандарни дължини: 600ft, 1200ft и 2400ft.
- Най-голѣмитѣ ролки не се събираха̨ в дамска чанта.
- Архив на пълен 20-мегабайтов дисков пакет IBM/2314 (ЕС-5061) не се събираше на по-малка ролка.
- Но можѣше да се сложи втора ролка.
- Началото и края̌т на лентата се маркират със свѣтло-отразителни станиолчета, които датчикът на устройството засича.
- Слѣд станиолчето в края̌т на лентата трѣ̋бва да има мѣ̋сто за още нѣ̋колко записа (до шест), за да завърши файлът нормално.
- Магнитната лента е с послѣдователен достѫп. Строго послѣдователен.
- Не може да се зададе команда "прѣвърти 100 ft (фута) и почни да четеш (или да пишеш) оттам!"
- Нѣ̋ма жалон за 100 ft (фута).
- Обаче може да се зададе команда "пропусни 100 записа (100 блока) и почни да четеш (или да пишеш) оттам!"
- Устройството не може да пропусне 100 записа, без послѣдователно да ги прочете.
- Да ги пропусне - значи прочетенитѣ данни да не се пращат към оперативната памет.
- Наред с обикновенитѣ записи, имаше и специален особен запис върху магнитната лента, нарѣчен TM (tape mark).
- Устройството изпълняваше такива команди:
- Вземи от този адрес на физическата памет толкова послѣдователни байта и ги запиши върху лентата на текущата позиция.
- Запиши TM върху лентата на текущата позиция.
- Пропускай всички записи върху лентата, докато стигнеш TM.
- Пропускай записи върху лентата, докато стигнеш TM, но най-много толкова записа.
- Прочети от текущата позиция запис, докладвай дали е TM, и ако не е, докладвай дължината му, а даннитѣ запиши по този адрес на физическата памет.
- Мило устройство, знам, че току-що си прочело TM. Върни се, моля̨, една стѫпка назад, така че слѣдващия̌т запис да покрие tape-mark-ерът.
- Rewind! Прѣвърти лентата и я̨ позиционирай в началото, на началното станиолче.
- И това сѫ всички команди, които устройството изпълнява.
- При всѣ̋ка команда, ако устройството засѣче крайното станиолче, то е длъжно да докладва, че лентата е на привършване.
- На първо приближение може да се приеме, че файлът върху магнитна лента
прѣдставлява редицата от записи међу два tape-mark-ера.
- Два послѣдователни tape-mark-ера (без други записи међу тѣ̋х - празен файл) означава, че по-нататък на лентата нѣ̋ма нищо записано.
- (.. скрий ги магнитнитѣ ленти ..) (.. скрий го потрѣбителското форматиране ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- И тъй, магнитната лента е със строго послѣдователен достѫп и без прѣдварително форматиране.
- При всѣ̋ка операция за запис върху лентата мѣ̋стото на записът "се форматира" наново.
- Магнитно-дисковитѣ устройства прѣдоставят прѣ̋к достѫп до всѣки запис върху дискът.
- За цѣлта записитѣ трѣ̋бва прѣдварително да сѫ създадени.
- Създаването на записитѣ върху дисковата писта се нарича форматиране на пистата.
- Слѣд това, по врѣме на нормалната експлоатация, даннитѣ вѫтрѣ в създаденитѣ при форматирането записи се прѣзаписват.
- Разбира се, при форматиране на пистата, всичко, което е било записано на нея̨ прѣди това, безвъзвратно се губи.
- При системитѣ IBM/360 и IBM/370 всѣ̋ка дискова писта може да се форматира отдѣлно от другитѣ писти,
и то по указан от потрѣбителя̌т начин.
- Форматирането на една писта не засѣ̋га другитѣ писти.
- Различнитѣ писти мога̨т да имат различно форматиране.
- Различнитѣ писти мога̨т да имат различно форматиране, извършено по различно врѣме.
- Различнитѣ писти мога̨т да имат различно форматиране, заявено от различни потрѣбители.
- Потрѣбителскитѣ заявки за форматиране се указваха̨ чрѣз JCL (Job Control Language).
- При старитѣ дискови пакети се виђаше процѣпът, прѣз който се прокрадва свѣтлината, която устройството засича.
- Този процѣп маркира началото и края̌т на всѣ̋ка писта.
- Процѣпът е един за цѣлия̌т дисков пакет.
- Пистата прѣдставлява окрѫжност. Тя започва и свършва на мѣ̋стото, маркирано от процѣпът.
- Това е фабрична маркировка.
- Форматирането си има работа с вѫтрешността на пистата.
- Къдѣ тя почва и къдѣ свършва - това е фабрично опрѣдѣлено.
- И тъй, във вѫтрешността на дисковата писта има записи (records) или блокове (blocks).
- Колко записа и колко байта да е един запис - както е указано в заявката за форматиране на пистата.
- Един запис върху дискът се състои от три части - жалон, индекс и данни.
- Међу тѣзи части има празнини.
- Цѣлта им е да дада̨т врѣме на "електрониката" да рѣши дали записът е от интерес в дадения̌т момент.
- Жалонът. Съдържанието му е слѣдното:
- номерът на цилиндърът (при IBM-2311 и IBM-2314: число от 0 до 199),
- номерът на дисковата повърхност (surface) или номерът на пистата вѫтрѣ в цилиндърът (при IBM-2314: число от 0 до 19), и
- номерът на записът (на блокът) върху пистата.
- Горнитѣ три числа съставляват дисковия̌т адрес на блокът (на записът).
- Освѣн дисковия̌т адрес, в жалонът е указана дължината на индексът и дължината на даннитѣ.
- Ако дължината на индексът е нула, индекс нѣ̋ма.
- Дължината на даннитѣ не може да е нула - данни винѫги има.
- Индексът.
Даннитѣ от него се ползват при асоциативния̌т достѫп и при индексно-послѣдователнитѣ файлове.
- Има си специален раздѣл за това.
- Ако пистата не е част от индексно-послѣдователен файл, в блокът нѣ̋ма индекс.
- Даннитѣ. Дължината на блокът с данни се задава при форматиране.
- Блоковетѣ данни върху една писта обикновено сѫ еднакво дълги.
- Защото нѣ̋ма лесен начин да се укаже друго.
- Ако магнитно-дисковото устройство получи команда ..
- за позициониране (за четене или за писане) на опрѣдѣлен дисков адрес,
- съставен от номер на цилиндър, номер на повърхност и номер на блок,
- устройството първо позиционира (с придвижване)
- гребенът с магнитнитѣ глави на указания̌т цилиндър
- и веднага идентифицира указаната писта.
- Но не чака да мине физическия̌т свѣтлинен маркер за началото на пистата.
- Веднага чете всѣки срѣщна̨т жалон и сравнява дисковия̌т адрес.
- Ако е този, който е указан в командата,
- значи устройството е на точното мѣ̋сто за четене или за писане.
- Забѣлѣжка_1: При асоциативния̌т достѫп вмѣсто дисков адрес в командата се дава тѫрсен индекс и устройството по подобен начин сравнява индекси, а не адреси.
- Забѣлѣжка_2: Ако жалон с тѫрсения̌т адрес не се намѣри върху идентифицираната писта, има възможност при форматиране да е било прѣцѣнено, че съотвѣтната част от пистата е поврѣдена и записът да е бил прѣнасочен към резервна писта. Там - на резервната писта, жалонът съдържа оригиналния̌т дисков адрес.
- Как да е.
- Отдавна нѣ̋ма потрѣбителското форматиране. Слава Богу!
- Него го имаше само в системитѣ IBM/360 и IBM/370.
- При всички други компютри дисковитѣ писти се форматират еднакво и това не може да бѫде промѣнено от потрѣбителя̌т.
- Винѫги без индекс и в блокове по 512 байта (по половин килобайт).
- За всѣки тип диск броя̌т на блоковетѣ върху една писта е фиксиран и се знае.
- (.. скрий го потрѣбителското форматиране ..) (.. свий го ..) (.. разгъни го ..) (.. скрий я̨ петата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- Потрѣбителското форматиране на дисковитѣ писти съм го срѣщал само в системитѣ IBM/360 и IBM/370.
- ►► Геометрията на дискът (.. покажи я̨ геометрията ..)
-
▼▼
Геометрията на дискът
(.. скрий я̨ геометрията ..)
- Стана̨ дума, че освѣн в системитѣ IBM/360 и IBM/370,
- при другитѣ компютри всички писти на един диск съдържат
- един и сѫщ брой блокове (записи), всѣки по половин килобайт.
- Този брой е фиксиран и се знае за всѣки тип диск.
- Напримѣр, дисковетѣ от тип IBM-2314 (ЕС-5061),
когато работя̨т с компютър PDP-11 (СМ-4),- имат по 10 (десет) блока на всѣ̋ка писта,
- по половин килобайт (512 байта) всѣки.
- 200 цилиндъра,
- по 20 писти на цилиндър: 4000 писти общо,
- по 10 блока на писта: 40000 блока общо,
- по половин килобайт на блок: 20000 килобайта, почти 20 мегабайта.
- Ако знаем броя̌т на цилиндритѣ (в примѣрът 200),
- броя̌т на пиститѣ на един цилиндър (броя̌т на дисковитѣ повърхности, в примѣрът 20),
- и броя̌т на блоковетѣ върху една писта (в примѣрът 10),
- значи знаем геометрията на дискът.
- В условията на примѣрът, ако знаем адресът на блок върху дискът
- разположен на цилиндър номер CylNo (число от 0 до 199),
- повърхност номер SurfNo (число от 0 до 19), и запис номер RecNo (число от 0 до 9),
- то по формулата ( ( ( CylNo * 20 ) + SurfNo ) * 10 ) + RecNo
- ще получим число от 0 до 39999.
- Това число се нарича номер на дисков блок.
- Именно то се ползва вече за адресиране на дисковата памет.
- И обратно, пак в условията на примѣрът, ако знаем
- номерът на дисков блок - число от 0 до 39999, което ще означим BlockNo,
- като раздѣлим BlockNo на броя̌т на блоковетѣ на писта (10),
- ще получим остатък RecNo (число от 0 до 9) и частно TrackNo.
- Слѣд това, като раздѣлим TrackNo на броя̌т на дисковитѣ повърхности (20),
- ще получим остатък SurfNo (число от 0 до 19) и частно CylNo - номерът на цилиндърът.
- В условията на примѣрът, като изключим дисковия̌т драйвер,
остана̨лата част от софту̌ерът на PDP-11
не се интересува от геометрията на дискът и от горнитѣ двѣ смѣтки. - Дисковия̌т драйвер на PDP-11, който е софту̌ерен компонент,
му се налага да знае геометрията на дискът
и да може да прави тѣзи двѣ смѣтки,- защото харду̌ерът е взет от IBM/System-360 и
дисковия̌т контролер, който е харду̌ерен компонент,
не знае как сѫ форматирани пиститѣ. - Вижте прѣдишния̌т раздѣл за форматирането.
- защото харду̌ерът е взет от IBM/System-360 и
- Обаче ако харду̌ерния̌т компонент "дисков контролер"
е проектиран така, че да знае геометрията на дискът, то на никой софту̌ерен компонент не му трѣ̋бва да я̨ знае.
- Софту̌ерът трѣ̋бва да знае общия̌т брой на дисковитѣ блокове, които по размѣр сѫ стандартни.
- Софту̌ерът работи само с номера на дискови блокове, които сѫ числа в плътен диапазон от нула нагорѣ.
- Софту̌ерът не се интересува вече от геометрията на дискът. Слава Богу!
- А пък при устройствата от тип SSD геометрията на дискът вече нѣ̋ма никакъв смисъл.
- (.. скрий я̨ геометрията на дискът ..) (.. скрий я̨ петата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- Стана̨ дума, че освѣн в системитѣ IBM/360 и IBM/370,
- ►► Разположението на файловетѣ върху дискът - задача на потрѣбителя̌т (.. покажи го ..) (.. разгъна̨то ..)
-
▼▼
Разположението на файловетѣ върху дискът - задача на потрѣбителя̌т
(.. скрий го ..)
(.. свий го ..)
(.. разгъни го ..)
- При IBM/System-360 една писта винѫги се назначава на един файл цѣ̋лата.
- Не е възможно част от една писта да принадлѣжи към един файл, а друга част от сѫщата писта - към друг файл.
- Пистата е най-малката единица - най-малката част от дискът - която може да бѫде назначена към файл.
- От друга страна, един файл може да заема нѣ̋колко писти.
- Даже много писти.
- И тѣзи писти може да не сѫ сѫсѣдни.
- Нѣщо повече: един файл може да заема писти от нѣ̋колко диска.
- Такова нѣщо май нѣ̋ма в съврѣменнитѣ файлови системи -
- от какъв зор един файл ще захапва и друга файлова система.
- Един диск от гледна точка на файловото си съдържание се наричаше том (volume).
- Той си имаше таблица на съдържанието VTOC (volume table of contents).
- Само една на том - една на диск - само една "директория".
- Тя донѣ̋къдѣ е прѣдшественик на сетнешнитѣ директории.
- Всѣки файл на дискът бѣше прѣдставен в таблицата VTOC.
- Идентифицира се с името си - до 44 байта без опрѣдѣлена структура.
- Кои дискови писти файлът заема и в какъв ред.
- Има ли файлът продължение на друг диск и дали това тука е продължение.
- И още данни за файлът - за вѫтрешната му структура,
- на което е посветен слѣдващ раздѣл.
- С томове и файлове се оперираше на езикът JCL (Job Control Language).
- Ако е нужен достѫп до сѫществуващ файл, указва се името на файлът и съдържащия̋т го том, и системния̌т софту̌ер го намира.
- Обаче когато се създава нов файл, системата DOS/360 не можѣше сама да го сложи нѣ̋къдѣ.
- При създаване на нов файл под DOS/360 потрѣбителя̌т трѣ̋бваше явно да укаже на кои писти файлът да бѫде разположен.
- Слава Богу! Такова нѣщо вече нѣ̋ма.
При всички нови системи системния̌т софту̌ер сам намира къдѣ да разположи нов файл. - Да забравим за системитѣ IBM/360 и IBM/370.
- Там потрѣбителя̌т на файлът, към който файл е назначена дискова писта, отговаря за форматирането ӥ - на колко блока по колко байта пистата да се раздѣли.
- В по-новитѣ компютърни системи нѣ̋ма такова нѣщо като потрѣбителско форматиране.
- В по-новитѣ компютърни системи всѣ̋ка писта е била подложена на стандартно форматиране -
- фиксиран брой блокове по половин килобайт (512 байта).
- В по-новитѣ компютърни системи на файловетѣ се назначават отдѣлни блокове,
- а не непрѣмѣнно цѣли писти.
- Геометрията на дискът вече нѣ̋ма значение.
- Има начин - има механизъм, по който за всѣки файл да се укаже кои дискови блокове той заема и в какъв ред.
- Това описание на разпрѣдѣлението на дисковитѣ блокове по файлове се съдържа в специален файл - най-важния̌т файл на дискът, нарѣчен индексен файл.
- Блоковетѣ се идентифицират или все едно се адресират с номерата си (BlockNo).
- Номерът на блокът (или все едно адресът му) е число в плътен интервал от нула нагорѣ.
- В нѣ̋кои дискови файлови системи се разпрѣдѣлят не стандартни блокчета по половин килобайт (512 байта), а групички ор сѫсѣдни блокчета (1024 байта, 2048 байта, 4096 байта).
- Понѣ̋кога това е съгласуването със системата на виртуалната памет (вижте шестата бесѣда).
- Отклонение.
Общо описание на дискова файлова система
(.. покажи го отклонението ..)
(.. покажи ..) с автоматично поблоково назначаване на дисковото пространство. - Отклонение.
Общо описание на дискова файлова система
(.. скрий го отклонението ..)
с автоматично поблоково назначаване на дисковото пространство. (.. скрий ..)- wiki/List_of_file_systems Не става дума за IBM/360 или IBM/370.
- В основата е индексния̌т файл - най-важния̌т файл върху дискът.
- Има и други файлове - важни части на файловата система:
- битмап на свободнитѣ елементи от индексния̌т файл,
- файл, съставен от свободнитѣ блокове на дискът,
- файл, съставен от поврѣденитѣ дискови блокове,
- изпълним код на операционната система, и
- главна директория.
- Обръщението към всѣки от горѣспоменатитѣ файлове е по номер, а не по нѣ̋какво име.
- Тоест, всѣки от горѣспоменатитѣ файлове си има фиксиран номер - нѣ̋какво малко число.
- Създаването на файловата система - създаването на тѣзи основни файлове - се нарича инициализация, а не форматиране.
- Форматирането е стандартно, фабрично и не е проблем на софту̌ерът.
- Индексния̌т файл се състои от плътно разположени елементи (entries)
с еднаква фиксирана дължина.
- Тѣзи елементи се номерират с послѣдователни числа от нула нагорѣ.
- Достѫпът до елемент на индексния̌т файл е по номер.
- Достѫпът до елемент на индексния̌т файл е бърз - мѣ̋стото му се изчислява лесно.
- Един елемент на индексния̌т файл:
- може да бѫде свободен, или
- може да съдържа описание на файл, или
- може да съдържа продължение на описанието на файл.
- Послѣдователнитѣ битове от битмап-файлът съотвѣтстват на послѣдователнитѣ елементи на индексния̌т файл.
- Съотвѣтния̌т бит показва дали елементът на индексния̌т файл е свободен.
- Когато един елемент на индексния̌т файл
съдържа описание на файл, тогава:
- Номерът на този елемент се ползва като номер на файл.
- Не само за горѣ-споменатитѣ "важни" файлове, но и за всѣки файл.
- Описанието на един файл,
съдържащо се в елемент от индексния̌т файл, се състои от слѣднитѣ части:
- Неформална част. Напримѣр име и разширение.
- Не е от интерес в този контекст.
- Затова тази информация е неформална.
- Типът на файлът. Важно.
- Обикновен файл (създаден от потрѣбител).
- Директория (directory, folder).
- "Важен" файл између горѣспоменатитѣ, поддържан от файловата система и скрит от потрѣбителитѣ.
- Спецификация на правата за достѫп. Важно.
- Кой има право на достѫп до файлът.
- И какъв вид достѫп му се разрѣшава.
- Датировки. Timestamps. Важно.
- Врѣмето на създаване на файлът.
- Врѣмето на послѣдното му измѣнение.
- Разположението на файлът върху дискът. Най-важното.
- На кои дискови блокове е разположен файлът.
- Послѣдователно се описват всички фрагменти на файлът.
- Пореден фрагмент от толкова дискови блока, започващ от този дисков блок.
- Ако файлът е силно фрагментиран, описанието му трѣ̋бва да продължи в друг елемент на индексния̌т файл.
- Ако елемент на индексния̌т файл съдържа продължение на описанието на файл, номерът му не се ползва като номер на файл.
- Неформална част. Напримѣр име и разширение.
- Самия̌т индексен файл като "важен" файл си има фиксиран номер (нула или едно) и чрѣз своя̌т си елемент с този номер сам описва разположението си.
- На фиксирано мѣ̋сто в началото на всѣки елемент от индексния̌т файл
има число, нарѣчено послѣдователен контролен номер.
- Всѣки пѫт, когато този елемент бива назначаван да съдържа описанието на нѣ̋кой файл, това число - послѣдователния̌т контролен номер, се увеличава с единица.
- Към самия̌т файл, чието описание се съдържа в елементът, се обръщаме не просто чрѣз номерът на елементът, а чрѣз двойка номера: номерът на елементът и послѣдователния̌т контролен номер.
- Така се прави, за да се обезсиля̨т обръщения към стари вече изтрити файлове, които сѫ ползвали за описанието си сѫщия̌т елемент от индексния̌т файл.
- Свободнитѣ дискови блокове се оформят като отдѣлен "важен" файл.
- "Разположението" му се описва чрѣз индексния̌т файл, подобно на всѣки друг файл.
- Само файловата система има достѫп до него, и то по номерът му.
- Ако нѣ̋кой обикновен файл бѫде изтрит от потрѣбителя̌т, неговитѣ блокове се добавят към този файл.
- Този файл бива прѣтѫрсван от разни програми за възстановяване на изтрити данни.
- Поврѣденитѣ (лошитѣ) дискови блокове се оформят като друг отдѣлен "важен" файл.
- "Разположението" му се описва чрѣз индексния̌т файл, подобно на всѣки друг файл.
- Само файловата система има достѫп до него, и то по номерът му.
- Изпълнимия̌т код на операционната система ..
- обикновено се оформя като "важен" файл.
- Но това не е задължително за самата файлова система.
- При начално заређане (boot) първия̌т софту̌ер е с минимални умѣния.
- За не го караме да се рови по директории, оформяме това, което трѣ̋бва да се прочете при начално заређане от дискът в оперативната памет, като файл с малък фиксиран номер.
- Просто за улеснение.
- Главната директория (master directory) е втория̌т по "важност" файл
слѣд индексния̌т файл.
- От "важнитѣ" файлове, само той се виђа от потрѣбителитѣ.
- Другитѣ "важни" файлове сѫ изключително за "служебно ползване".
- Макар да е "важен" файл, достѫпен по фиксиран малък номер, главната директория се виђа от потрѣбителитѣ, защото е директория (directory, folder).
- Файловетѣ, които потрѣбителитѣ виђат и с които тѣ оперират, биват
- обикновени файлове (ordinary files), и
- директории (directories, folders).
- Другитѣ типове (напримѣр линковетѣ) за простота ги пропускам.
- И директориитѣ, и обикновенитѣ файлове сѫ все файлове и си имат описание в нѣ̋кой елемент на индексния̌т файл.
- Номерът на този елемент служи за номер на файлът.
- Двойката числа номерът на елементът от индексния̌т файл и послѣдователния̌т контролен номер служа̨т за прѣпратка (за обръщение) към файлът.
- Това важи за всѣки файл: обикновен файл, директория или пък "важен" файл.
- Файловата система обикновено не обръща внимание на вѫтрешното съдържание на
обикновенитѣ файлове.
- С обикновенитѣ файлове се занимава потрѣбителския̌т софту̌ер.
- Обаче директориитѣ се поддържат от файловата система.
- Файловата система знае вѫтрешната структура на директориитѣ.
- А тази структура е слѣдната:
- [точка като име на файл], прѣпратка към самата директория, която си е файл
- [двѣ точки като име на файл], прѣпратка към директорията на по-горно йерархично ниво
- име на файл, прѣпратка към файлът
- име на друг файл, прѣпратка към файлът
- и така нататък за много файлове.
- Първитѣ два реда се слагат за удобство при обхођане на йерархията от директории.
- За името на файлът може да има нѣ̋какви ограничения, може и да нѣ̋ма.
- Прѣпратката към файлът прѣдставлява двойката числа номерът на елементът от индексния̌т файл и послѣдователния̌т контролен номер.
- Директориитѣ създават йерархична структура на файловата система.
- Потрѣбителитѣ имат прѣдстава за нея̨.
- Един потрѣбител или създава нов обикновен файл, или създава нова директория.
- Каквото и да създава, потрѣбителя̌т трѣ̋бва да го сложи в нѣ̋коя сѫществуваща директория.
- Потрѣбителя̌т не може да създава файлове извън сѫществуващитѣ директории.
- (.. скрий го отклонението ..)
- (.. скрий го разпрѣдѣлянето на дисковото пространство ..) (.. свий го ..) (.. разгъни го ..) (.. скрий я̨ петата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- При IBM/System-360 една писта винѫги се назначава на един файл цѣ̋лата.
- ►► Сподѣлени цилиндри (.. покажи ги ..)
-
▼▼
Сподѣлени цилиндри
(.. скрий ги ..)
- Дисковата памет на System/360: това е заглавието на тази пета бесѣда.
- При това положение не би било редно да подмина̨ такава техника като сподѣленитѣ цилиндри (shared cylinders).
- Ако при нѣ̋коя обработка участват два файла, напримѣр входен и изходен, и двата на един и сѫщ диск, при онова бѣдно буфериране заради онази оскѫдица на оперативна памет, бѣше възможно обработката да се бави заради движението на дисковитѣ магнитни глави међу цилиндритѣ, както и да се причини върхово натоварване на механизмитѣ на дисковото устройство.
- В такива случаи се налагаше да се прилага техниката сподѣлени цилиндри.
- Както бе казано в прѣдишния̌т раздѣл, потрѣбителя̌т (програмистът, технологът на обработката) трѣ̋бва да указва къдѣ по дискът да се разполагат файловетѣ.
- При техниката сподѣлени цилиндри долнитѣ писти на нѣ̋колко послѣдователни цилиндъра се назначават на единия̌т файл, а горнитѣ писти - на другия̌т.
- Така се намалява движението на гребенът с магнитнитѣ глави.
- Обработката може да мине нѣ̋колко пѫти по-бързо, без трѣ̋сък и вибрации.
- Отдавна вече дисковото пространство се разпрѣдѣля автоматично.
Геометрията на дискът отдавна нѣ̋ма значение.
Оскѫдицата на оперативна памет е прѣодолѣ̋на.
Осигурява се подходящо буфериране на операциитѣ за вход и изход.
Нѣ̋ма вече нуђа от техниката със сподѣленитѣ цилиндри. Слава Богу! - (.. скрий ги сподѣленитѣ цилиндри ..) (.. скрий я̨ петата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Асоциативен достѫп до дискът (.. покажи го ..) (.. разгъна̨то ..)
-
▼▼
Асоциативен достѫп до дискът
(.. скрий го ..)
(.. свий го ..)
(.. разгъни го ..)
- Дисковата памет на System/360: това е заглавието на тази пета бесѣда.
- При това положение не би било редно да подмина̨
- индексно-послѣдователнитѣ файлове и
- индексно-послѣдователния̌т метод на достѫп (ISAM: indexed-sequential access method).
- Съвсѣм нормално е компютритѣ да прѣдлагат и да осѫществяват асоциативен достѫп.
- Напримѣр, да се намѣря̨т даннитѣ за човѣк със зададено ЕГН.
- Или да се намѣри файл на дискът със зададено име.
- Но това се осѫществява от софту̌ерът.
- При индексно-послѣдователния̌т метод на достѫп обаче
асоциативния̌т достѫп е подпомогна̨т от харду̌ерът.
- При системитѣ IBM/360 и IBM/370 дисковитѣ писти се форматират според изискванията на потрѣбителя̌т.
- Пиститѣ на индексно-послѣдователния̌т файл, който ще съдържа данни за хора и който ще има ЕГН-то за ключ, ще бѫда̨т форматирани така, че међу жалонът и блокът с данни да има индекс с дължина 10 байта.
- Записитѣ в индексно-послѣдователния̌т файл сѫ сортирани (подредени) по ключ, в случая̌т по ЕГН.
- Устройството може да получи команда "тѫрси на тази писта запис с това съдържание на индексът".
- Устройството ще докладва "индекс с това съдържание току-що мина̨ под моята глава".
- И ще получи нова команда "прочети блокът с данни, който слѣдва".
- Колкото и бързо да се върти дискът, комуникацията устройство-контролер-канал е по-бърза.
- Когато блокът с данни стигне четящата глава на устройството, то вече ще знае, че трѣ̋бва да ги прочете даннитѣ.
- Ще знае, че даннитѣ за човѣкът със зададеното ЕГН сѫ намѣрени.
- Може и друго да се случи.
- Устройството може да докладва "индекс със съдържание, по-голѣ̋мо от тѫрсеното, прѣмина̨ под моята глава".
- Тогава каналът и каналната му програма ще си направя̨т изводът, че на тази писта такъв запис нѣ̋ма.
- Към един индексно-послѣдователен файл е възможен и
послѣдователен достѫп.
- Програмата ще получи послѣдователно един слѣд друг всички записи от файлът (напримѣр за всички хора, за които има данни във файлът), и то сортирани по ключ (подредени по ЕГН).
- Все едно, че програмата чете сортиран файл от магнитна лента.
- Обикновено, един индексно-послѣдователен файл се пълни
при послѣдователен достѫп.
- Индексно-послѣдователния̌т файл трѣ̋бва прѣдварително да е създаден на дискът с нужното форматиране.
- Записитѣ прѣдварително се подготвят като послѣдователен файл на магнитна лента.
- Сортирани! Подредени по ключ.
- Ако записитѣ, които ще запълня̨т индексно-послѣдователния̌т файл, не сѫ прѣдварително сортирани, резултатът може да е отчайващ.
- Слѣд първоначалното запълване на индексно-послѣдователния̌т файл, новопостѫпващитѣ записи си намират мѣ̋стото в подредбата по ключ, но свалят ефективността - и заемат повече мѣ̋сто, и се намират по-трудно.
- Затова от врѣме на врѣме един индексно-послѣдователен файл трѣ̋бва да се прѣсъздава.
- Има и други случаи, когато при системитѣ IBM/360 и IBM/370 се прѣдоставя
асоциативен достѫп до дискът.
- Дали в тѣзи случаи се ползва специална подкрѣпа от харду̌ерът, както при индексно-послѣдователнитѣ файлове, не зная̨.
- Първия̌т такъв случай е самата таблица на съдържанието на дискът, VTOC (Volume Table Of Contents).
- Системата намира сѫществуващ дисков файл по зададено име на файлът, прѣравяйки VTOC-ът.
- Втория̌т такъв случай (.. покажи го ..) сѫ така нарѣченитѣ библиотеки (libraries).
- Втория̌т такъв случай
сѫ така нарѣченитѣ библиотеки (libraries).
(.. скрий ги библиотекитѣ ..)
- Имаше програма библиотекар (librarian), която поддържаше дискови файлове с библиотечна структура - библиотеки.
- Една библиотека съдържа модули, на които можем да гледаме като на по-малки файлчета.
- Чрѣз библиотекаря̌т, един модул от библиотека можѣше да бѫде намѣрен по неговото име.
- Името на модула не можѣше да е по-дълго от 8 байта.
- На потрѣбителитѣ се даваше само CLI-достѫп до библиотекитѣ - чрѣз езикът JCL (Job Control Language).
- Системни програми - компилатори, асемблер, текстов редактор, LinkageEditor, Loader и други, ползваха̨ API-та към библиотекаря̌т - можѣха̨ да го извикват вѫтрешно, но това не бѣше документирано.
- Из разни книги съм срѣщал да се обсѫђа библиотечен метод на достѫп, но не и във фирмената документация.
- Може би защото във фирмената документация понятието метод на достѫп означаваше канални програми, а библиотекаря̌т може да не е ползвал такива.
- В системата DOS/360 сѫществуваха̨ три вида библиотеки:
- SLB: source code library: библиотека от изходни програмни кодове.
- Такава библиотека имаше раздѣли с еднобуквени означения.
- При тѫрсене на даден модул трѣ̋бваше да се укаже раздѣлът.
- Напримѣр, раздѣл 'A' бѣше прѣдназначен за асемблерски програми (за макродефиниции).
- А пък раздѣл 'P' - за програмки на PL/I.
- Библиотекаря̌т не провѣряваше синтаксисът на текстоветѣ като програмен код.
- Можѣше да се слагат произволни текстове, стига да не ги подавате на асемблер или на компилатор.
- Напримѣр, можѣте да отворите раздѣл 'L' и там като модули да слагате текстове на любовни писма.
- Самата операционна система DOS/360 се разпространяваше в source code във вид на SLB, съдържащо макродефиниции.
- RLB: relocatable library: библиотека от обектни модули.
- Резултатът от асемблер или компилатор се нарича обектен модул и обикновено се записва в RLB.
- Именно заради тази практика при IBM/360 резултатитѣ от работата на такива езикови процесори и досега се наричат модули (или обектни модули).
- Функционалността на нѣкогашнитѣ RLB-та и досега се пази едно към едно във файлове, наричани статични библиотеки.
- В системата Windows статичнитѣ библиотеки имат разширение на името ".LIB", а в Unix - ".a".
- Защо relocatable? Защото съдържащитѣ се програми на машинен език, резултат от работата на нѣ̋кой езиков процесор, не сѫ обвързани с мѣ̋сто в оперативната памет, къдѣто да бѫда̨т заредени и изпълнени.
- Макар и на машинен език, тѣзи програмки все още не сѫ изпълними.
- LinkageEditor-ът е програма, която от прѣдварително асемблирани или компилирани обектни модули (relocatables) ще създаде готова за изпълнение програма във формат core-image.
- И в помощ на LinkageEditor-ът, библиотекаря̌т може да намѣри модул в RLB-то не само по име, но и по друг "външен символ".
- Когато обектен модул (а relocatable) се пъха в RLB (в статична библиотека), библиотекаря̌т го индексира не само по името на модулът, но и по всѣки друг символ, отбѣлѣ̋зан като "външен" (external) от езиковия̌т процесор.
- Забѣлѣжка. Съврѣменния̌т термин "статична библиотека" отразява фактът, че вече има подобни библиотеки с разширена функционалност, наричани "динамични библиотеки" (DLLs) или (в Unix) "shared objects" (.so).
- CLB: core-image library: библиотека от изпълними програми.
- В системата DOS/360 един модул от CLB не подлѣжи на слѣдваща обработка.
- Той може само да бѫде зареден в паметта и изпълнен.
- Обикновено такъв модул е маркиран с адрес от паметта, къдѣто той трѣ̋бва да бѫде зареден, за да може да се изпълни правилно.
- Имаше изпълними модули, маркирани като само-прѣмѣстващи се (relocatable).
- Такава програма в началото провѣрява къдѣ е заредена и сама настройва мѣстата от своя̌т код, които сѫ позиционно зависими.
- SLB: source code library: библиотека от изходни програмни кодове.
- (.. скрий ги библиотекитѣ ..) (.. скрий го асоциативния̌т достѫп ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Използването на индексно-послѣдователнитѣ файлове и
индексно-послѣдователния̌т метод на достѫп може да е било умѣстно при
пакетния̌т режим на работа (batch processing).
- Но тѣ никак не сѫ подходящи за реалната работа на един съврѣменен сървър.
- Сегашнитѣ разнообразни изисквания се покриват от йерархичната файлова система и най-вече от базитѣ данни.
- Само софту̌ер може да посрѣщне разнообразието в съврѣменната дѣйствителност.
- Слава Богу! Харду̌ерът вече не се мѣси при прѣдоставянето на асоциативен достѫп.
- (.. скрий го асоциативния̌т достѫп ..) (.. свий го ..) (.. разгъни го ..) (.. скрий я̨ петата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Системния̌т софту̌ер се мѣси във вѫтрешната структура на файловетѣ (.. покажи ..) (.. разгъна̨то ..)
-
▼▼
Системния̌т софту̌ер се мѣси във вѫтрешната структура на файловетѣ
(.. скрий ..)
(.. свий ..)
(.. разгъни ..)
- Системния̌т софту̌ер се е чувствал длъжен да прави това, за да улеснява потрѣбителитѣ.
- Не е съзнавал, че това не му влиза в работата.
- Магнитната лента вече е отпадна̨ла като носител на потрѣбителски данни.
(.. покажи ..) А нѣ̋кога това бѣше основен носител. (.. покажи ги магнитнитѣ ленти ..) - Магнитната лента вече е отпадна̨ка като носител на потрѣбителски данни.
А нѣ̋кога това бѣше основен носител. (.. скрий ..) (.. скрий ги магнитнитѣ ленти ..)- Системния̌т софту̌ер се е чувствал задължен да маркира файловетѣ, разположени на магнитна лента,
- да слага в началото и в края̌т на всѣки файл етикети.
- В етикетитѣ на файлът системата записва:
- името на файлът,
- версия и дата,
- поредност на този файл в поредицата файлове на този том (на тази ролка),
- дали това е само фрагмент от файлът,
- колко други фрагменти на този файл върху други ролки сѫществуват,
- това послѣдния̌т фрагмент на файлът ли е или файлът има продължение на друга ролка,
- дали записитѣ сѫ с фиксирана или с променлива дължина,
- колко е дължината - фиксирамата или максималната - на един физически запис,
- колко е дължината на един логически запис,
- колко общо записа има в сегментът или във файлът.
- Както заради пакетната обработка при машинитѣ IBM/360/370,
така и заради магнитнитѣ ленти като основен носител на потрѣбителски данни,
така и заради установилата се коболистка традиция,- системния̌т софту̌ер маркираше мета-данни за файловетѣ
- както при лентитѣ, така и при дисковетѣ.
- Пакетната обработка остана̨ в мина̨лото.
Компютритѣ вече работя̨т в реално врѣме. (.. покажи какво донесе системата Unix ..)
(.. покажи ..) Дойде и системата Unix. - Пакетната обработка остана̨ в мина̨лото.
Компютритѣ вече работя̨т в реално врѣме.
Дойде и системата Unix. (.. скрий какво донесе тя ..) (.. скрий ..)- Системата Unix е много-потрѣбителска (multi-user).
- Основната ӥ грижа трѣ̋бва да е правилното разпрѣдѣление на ресурситѣ међу потрѣбителитѣ.
- Магнитната лента е недѣлим ресурс. Не се сподѣля међу потрѣбителитѣ.
- Системата я̨ назначава на потрѣбител цѣ̋лата
- и не се интересува какво потрѣбителя̌т ще прави с лентата.
- Системата Unix не поддържа файлове на магнитна лента.
- Цѣ̋лото лентово устройство се разглеђа като файл.
- Софту̌ерът, който по коболистка традиция чете и пише етикети и файлове от и на магнитна лента, е изцѣ̋ло потрѣбителски.
- От друга страна, коболистката традиция е възникна̨ла в "бездисково врѣме".
- А пък системата Unix прѣдполага диск,
- прѣдполага външно запомнящо устройство с прѣ̋к бърз достѫп и за сподѣлено ползване от всички потрѣбители.
- Системата Unix поддържа файлова система на диск, и разпрѣдѣля дисковитѣ ресурси въз основа на файловетѣ.
- Системата Unix трѣ̋бва да идентифицира и локализира файл в йерархичната файлова система по файлова спецификация (име на файл).
- Системата Unix трѣ̋бва да провѣри дали този потрѣбител има право на достѫп до този файл.
- Тя може да откаже достѫп до файлът.
- Но ако тя разрѣши искания̌т достѫп, какво потрѣбителя̌т ще прави вѫтрѣ във файлът - това си е работа на потрѣбителя̌т - системата Unix не му се мѣси.
- Системата Unix рѣшава въпросът за компетенциитѣ в слоеветѣ на софту̌ерът.
- Нѣ̋ма си вече прѣдстава системния̌т софту̌ер за вѫтрешната структура на файловетѣ.
- Слава Богу!
- (.. скрий го оттеглянето на системния̌т софту̌ер ..) (.. свий го ..) (.. разгъни го ..) (.. скрий я̨ петата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Магнитнитѣ глави вече сѫ си част от дисковетѣ (.. покажи ги дисковетѣ Winchester ..)
-
IBM-2311
- Спира се дисковото устройство и се чака дисковия̌т пакет да спре да се върти.
- Нѣ̋ма спирачки, спира бавно.
- Нѣ̋къдѣ наблизо, обикновено върху устройството, стои празната кутия на дисковия̌т пакет, състояща се от дъно и капак с рѫкохватка.
- Със силната (дѣ̋сната) рѫка се взема капак за рѫкохватката.
- С другата рѫка се отваря горната врата на устройството.
- Дисковия̌т пакет с помощта на своя̌т капак с въртеливо движение се прихваща и извађа се от устройството.
- С другата рѫка се затваря горната врата на устройството.
- Слага се върху дъното, дъното щраква и се прикрѣпя за пакетът отдолу.
- Дисковия̌т пакет се прибира за съхранение в шкаф.
- Другия̌т дисков пакет, който трѣ̋бва да се монтира, се вади от шкафът.
- Със силната си рѫка го хващаме здраво за рѫкохватката на капакът му.
- Занасяме го до устройството.
- С другата рѫка откопчаваме дъното от пакетът и го слагаме върху устройството.
- Със сѫщата слаба рѫка отваряме горната врата на устройството.
- Със силната си рѫка поставяме дисковия̌т пакет върху шпинделът на устройството
- и с въртеливо движение закрепваме пакетът към шпинделът и освобођаваме капакът на пакетът.
- Със слабата рѫка затваряме горната врата на устройството.
- Силната рѫка държи празния̌т капак и го поставя върху дъното.
- С коя да е рѫка се пуска дискът да се завърти.
- Може да мине минута, докато ускори до нужната скорост.
- Щом това стане, гребенът с главитѣ влизат на нулев цилинддър и устройството минава в готовност.
- Устройствата ЕС-5063 (IBM-2314), с които сѫщо съм разботил, външно изглеђаха̨ по сѫщия̌т начин.
- Обаче дисковия̌т пакет имаше 11 плочи (вмѣсто 6) и тежѣше повече.
- И плътността на магнитния̌т запис бѣ удвоена.
- В резултат, IBM-2314 събираше четири пѫти повече информация, отколкото IBM-2311.
- Устройството на картинката е музеен експонат.
- На мѣ̋стото, къдѣто е надписът с техническитѣ данни, стоѣше празната кутия на монтирания̌т дисков пакет.
- Такива устройства се произвеђаха̨ в Стара Загора, а дискови пакети - в Пазарџик.
-
▼▼
Магнитнитѣ глави вече сѫ си част от дисковетѣ
(.. скрий ги дисковетѣ Winchester ..)
- Нѣ̋кога се е считало, че магнитнитѣ глави и механизмът за придвижването им међу цилиндритѣ
сѫ много по-скѫпи от магнитнитѣ носители.
- Магнитния̌т носител е метална плоча с магнитно покритие от двѣтѣ страни.
-
(..Вижте IBM-2311 на картинка ..) (.. прочетѣте за него ..) - Плочитѣ обикновено се оформяха̨ в пакети (disk packs).
- Пакет от шест плочи (IBM-2311) имаше десет повърхности и съотвѣтно десет писти на цилиндър.
- Пакет от единадесет плочи (IBM-2314) имаше двадесет повърхности и двадесет писти на цилиндър.
- Външнитѣ повърхности в пакетът не се ползваха̨.
- Дисковетѣ и дисковитѣ пакетитѣ бѣ̋ха̨ смѣнни.
- Тѣ се монтираха̨ в устройството от човѣк-оператор.
- Механизмът, въртящ дисковетѣ, магнитнтѣ глави и механизмът за придвижването им бѣ̋ха̨ част от устройството (част от драйвът, disk drive).
- Едно дисково устройство бѣше голѣ̋мо колкото автоматична пералня или автоматична миялна.
- По нѣ̋кое врѣме имаше флопи-дискове или дискети - пластмаса с магнитно покритие.
- Тѣ̋х не ги считам за истински дискове, понеже не прѣдоставяха̨ достатъчно бърз достѫп.
- Основния̌т експлоатационен проблем бѣше замърсяването.
- При смѣнни носители, прахът поврѣђаше и магнитнитѣ глави, и носителитѣ.
- Друг експлоатационен проблем бѣше настройката на главитѣ към стандарт за магнитен запис.
- Обикновено ги оставяха̨ ненастроени.
- В резултат, за всѣки дисков пакет трѣ̋бваше да се знае кое от устройствата може да го чете.
- Операционната система OS/360 изискваше настройка на главитѣ към стандартът.
- DOS/360 не поставяше такова изискване.
- Технологиитѣ напрѣдна̨ха̨: миниатюризация, масово производство, поевтиняване.
- Магнитнитѣ глави и механизмът за придвижването им међу цилиндритѣ не се смѣ̋тат вече за много по-скѫпи от магнитнитѣ носители.
- Огромната вмѣстимост при новитѣ технологии намаляват необходимостта от смѣ̋на на носителитѣ.
- Всичко вече се оформя като едно едно устройство - глави и магнитна повърхност, капсулирани и изолирани от външната срѣда̀.
- За първитѣ такива модели се използваше названието Winchester.
- При тѣ̋х задвижването бѣше все още външно.
- При съврѣменнитѣ HDD (hard disk drives) абсолютно всичко е капсулирано и изолирано -
и въртенето на дискът, и постѫпателното движение на гребенът с главитѣ. - (.. Илюстрация: един терабайт HDD Toshiba, USB, 2.5 инча ..)
- Магнитнитѣ глави сѫ фабрично капсулирани в едно дисково устройство заедно с магнитната повърхност.
- Слава Богу!
- (.. скрий ги дисковетѣ Winchester ..) (.. скрий я̨ петата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- Нѣ̋кога се е считало, че магнитнитѣ глави и механизмът за придвижването им међу цилиндритѣ
сѫ много по-скѫпи от магнитнитѣ носители.
- ►► Нѣщо като заключение (.. покажи го заключението на бесѣдата ..) (.. разгъна̨то ..)
-
▼▼
Нѣщо като заключение
(.. скрий го заключението на бесѣдата ..)
(.. свий го ..)
(.. разгъни го ..)
- ►► А нѣ̋кога System/360 бѣше за примѣр .. (.. покажи ..)
-
▼▼
А нѣ̋кога System/360 бѣше за примѣр ..
(.. скрий ..)
- Нѣ̋кога от Москва е дошла команда всички проекти да се канцелират и
цѣ̋лата инженерна мисъл в пространството от Бранденбургската врата до Владивосток
да се впрѣгне във reverse-engineering на IBM System/360.
- За да се издаде такава команда от Москва, трѣ̋бва System/360 на IBM да е била вече стана̨ла за примѣр в цѣлия̌т остана̨л свѣ̋т.
- Официално се казваше, че разработваме ЕС ЭВМ (Единая Система Электронных Вычислительных Машин).
- Професионалната ми история като компютърџия започна̨ от System/360.
- Не претендирам за точност при историческитѣ справки.
- Не знам в кой компютър сѫ били приложени магнитни дискове за пръв пѫт.
- Но до мене дисковетѣ достигна̨ха̨ на бордът на System/360.
- Освѣн дисковетѣ, какво друго трайно е остана̨ло от System/360?
- На първо мѣ̋сто, софту̌ерния̌т бизнес. Компютърната програма като индустриален продукт.
- Слѣд това, нѣщо незначително: понятието байт. Никой вече не смѣе да изневѣри на тази тогавашна мода.
- Понятията обектен модул и библиотека от обектни модули.
- Тука попадат и LinkageEditor-ът, асемблерът, компилаторитѣ ..
- Компилаторът от FORTRAN бѣ впечатляващ с бързината си.
- Съжалѣ̋вахме я̨ машината, като я̨ гледахме как се мѫчи да компилира COBOL.
- И защо не се сѣщам за друго? Трайно остана̨ло от System/360?
По много причини.- Забравил съм много нѣща вѣроятно.
- Наистина прогресът в технологиитѣ е огромен.
- Той е изхвърлил и обезсмислил много нѣща.
- В тази бесѣда, посветена на дисковетѣ на System/360,
- Ви занимавах най-вече с това, което го имаше нѣ̋кога там,
- а сега вече - Слава Богу! - го нѣ̋ма.
- Сѣщам се за нѣ̋кои нѣща, несвързани с дисковетѣ, които ги имаше в System/360, а сега вече ги нѣ̋ма.
- Десетични числа с плаваща точка. Това е необяснима странност на System/360.
- Разни други странни формати и кодировки.
- EBCDIC вмѣсто ASCII.
- Пакетирани десетични числа и машинна аритметика с такива числа.
- Записи с промѣнлива дължина с прѣдшестващ брояч.
Това може да е полезно, но е изоставено.
- (.. скрий кога System/360 бѣше за примѣр ..) (.. скрий го заключението на бесѣдата ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Нѣ̋кога от Москва е дошла команда всички проекти да се канцелират и
цѣ̋лата инженерна мисъл в пространството от Бранденбургската врата до Владивосток
да се впрѣгне във reverse-engineering на IBM System/360.
- ►► Езикът COBOL стъпкан в прахта от езикът C (.. покажи ..)
-
▼▼
Езикът COBOL стъпкан в прахта от езикът C
(.. скрий ..)
- На какво се дължи зашеметяващия̌т успѣх на техническото развитие?
На това, че не се обръщаше внимание на тѣснитѣ мѣста (bottle-necks: ботълнеци),
а на важнитѣ нѣща, които извеђат технологията на нови равнища, на нови висоти.- Не на машинна десетична аритматика.
- Не на харду̌ерно подпомагане на асоциативния̌т достѫп до дискът.
- Не на сложни машинни инструкции, които така се опитват да въвлѣка̨т харду̌ерът в ботълнецитѣ.
- Не - ботълнецитѣ сѫ си софту̌ерен проблем.
- Да на екстремната миниатюризация.
- Да на екстремно голѣ̋мата компютърна памет.
- Да на екстремното бързодѣйствие.
- Да на екстремно ниската енергозависимост.
- Прѣди повече от 40 години съм почна̨л на компютър със 120 килобайта оперативна памет и със седем-мегабайтови дискове.
- Сега се наслађавам:
- на 16 гигабайта оперативна памет (140000 пѫти повече)
- и на терабайтов диск (25000 пѫти повече),
- и то с размѣрът на кутия шоколадови бонбони, а не в зала с климатик, противопожарна инсталация и повдигна̨т под.
- Само се наслађавам. Защото заслуга нѣ̋мам. Само се възползвам.
- А кой има заслуга?
- Кой го движи прогресът?
- Има за какво да им завиђат смо̀танитѣ злобни лѣви поcepковци "всех стран".
- Компютърна архитектура от тип RISC (Reduced Instruction Set Computers).
- Не е важно, че харду̌ерът на централния̌т процесор смѣ̋та само двоично, а не десетично.
- Важното е да смѣ̋та екстремно бързо.
- Софту̌ерът лесно ще прѣвърне числата от десетични в двоични, а послѣ обратно в десетични.
- Ако десетичната аритметика бѣше реализирана в "харду̌ерът", едва ли щѣше да е по-различно.
- Не е важно, че централния̌т процесор не приема инструкция "прѣмѣсти оттук там двѣста байта".
- Важното е инструкцията "прѣмѣсти оттук там един байт" да се изпълнява екстремно бързо.
- Пък софту̌ерът ще я̨ задава тази инструкция двѣста пѫти.
- Архитектурата RISC бѣ навѣяна от езикът C и от системата Unix.
- За ужас на коболиститѣ.
- Не е важно, че харду̌ерът на централния̌т процесор смѣ̋та само двоично, а не десетично.
- Коболистът може да цѣни техниката "логически и физически записи"
и да се радва на прѣдоставенитѣ от системата улеснения в тази връзка.
- А пък програмистът на C се подхилква на това.
- Че това сѫ елементарни нѣща.
- Родния̌т ми език за програмиране бѣше PL/I.
- Той бѣше нѣщо като обединение на тритѣ езика ALGOL-60, FORTRAN-IV и COBOL,
- но без "извращенията", каквито всѣки от тѣ̋х си имаше.
- Езикът C, системата Unix и обектно-ориентираното програмиране стъпкаха̨ и PL/I.
- Завърших професионалната си кариера като програмист на C и C++.
- Сега като пенсионер се упражнявам на JavaScript.
- (.. скрий я̨ побѣдата на езикът C ..) (.. скрий го заключението на бесѣдата ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- На какво се дължи зашеметяващия̌т успѣх на техническото развитие?
- ►► Дискът е душата на компютърът (.. покажи ..)
-
▼▼
Дискът е душата на компютърът
(.. скрий ..)
- Макар че жабитѣ и рибитѣ сѫ все гръбначни животни като нас, аз не съм способен да им назначавам индивидуалност.
- Хората назначават индивидуалност на кучетата и коткитѣ.
- Даже душа им назначават!
- Лично аз с пуделитѣ имам спомени!
- За мене тѣ сѫ личности с индивидуалност и душа.
- Има ли компютърът индивидуалност и душа?
- Стана̨ дума, че нѣ̋кога имаше бездискови компютри.
- Тѣ сѫ като рибитѣ и жабитѣ.
- Без индивидуалност и без душа.
- Докато ползвам даден компютър, аз пълня̨ дискът му със спомени.
- Дискът му придава на компютърът индивидуалност.
- Да не се изсилвам да казвам, че компютърът имал душа.
- Знам му карантиитѣ - това е машина.
- Битове. Много много битове, ама все битове.
- Каква душа.
- На нов компютър се радвам.
- Може да се погрижа̨ да прѣхвърля̨ споменитѣ си от стария̌т на новия̌т диск.
- За стария̌т компютър нѣ̋ма да плача̨.
- А при смъртта на два пудела и аз, и Тамара плакахме.
- (.. скрий я̨ душата на компютърът ..) (.. скрий го заключението на бесѣдата ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ◄► (.. скрий я̨ петата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ◄► (.. скрий я̨ петата бесѣда за дисковетѣ на IBM/360 ..) (.. свий я̨ ..) (.. посвий или поразгъни ..) (.. разгъни я̨ ..) .. към началото ..
►► .0. Виртуалната памет на компютритѣ (.. покажи я̨ шестата бесѣда ..) (.. разгъна̨то ..) .. към началото ..
- Виртуалната памет на компютритѣ се осѫществява чрѣз автоматична динамична прѣадресация.
- Можете ли да си прѣдставите компютър без динамична прѣадресация?
- Съврѣменнитѣ компютри не мога̨т без нея̨.
▼▼ .0. Виртуалната памет на компютритѣ (.. скрий я̨ шестата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ◄► Не знам при кой компютър се е появила виртуалната памет за пръв пѫт.
- Не претендирам за точност при историческитѣ справки.
- Писах, че до мене дисковетѣ достигна̨ха̨ на бордът на System/360.
- Сега пиша̨, че до мене виртуалната памет достигна̨ на бордът на System/370.
- Нѣщо повече.
- Самата дума "виртуално" до мене сѫщо така дойде със System/370.
- Когато ставаше дума за виртуални адреси и виртуална памет.
- Сега вече има виртуална реалност, виртуален свѣ̋т, виртуални приятели, виртуална любов.
- Но това вече е съвсѣм друго.
- А можѣха̨ нѣ̋кога вмѣсто думата "виртуална" (virtual) да употрѣбя̨т думата "симулирана" (simulated).
- ►► Нѣщо като увод (.. покажи го ..) (.. разгъна̨то ..)
-
▼▼
Нѣщо като увод
(.. скрий го ..)
(.. свий го ..)
(.. разгъни го ..)
- ►► Машинни инструкции, операнди и адреситѣ им (.. покажи ги ..)
-
▼▼
Машинни инструкции, операнди и адреситѣ им
(.. скрий ги ..)
- Централния̌т процесор (CPU: Central Processing Unit) е мозъкът на компютърът -
това, дѣто смѣ̋та, мисли и взема рѣшения.
- От човѣшка гледна точка, той изпълнява програма.
- Самия̌т той обаче не знае за нея̨, за програмата си.
- Централния̌т процесор (CPU-то) във всѣки момент изпълнява нѣ̋каква инструкция, машинна инструкция.
- Съсрѣдоточил е вниманието си на нея̨, на текущата инструкция.
- Докато я̨ изпълнява текущата инструкция, вече е забравил прѣдишната и си нѣ̋ма прѣдстава коя ще е слѣдващата.
- А инструкцията идва от оперативната памет на компютърът.
- Оперативната памет на компютърът (RAM-ът: Random Access Memory, main memory) е извън CPU-то.
- За да получи инструкцията си за изпълнение, CPU-то издава заявка до RAM-ът:
- Прати ми съдържанието на толкова байта, както си ги запомнил, започвайки от този адрес.
- Колко толкова? Два, четири, осем най-много.
- RAM-ът взема от посочения̌т адрес поредица от битове (нѣ̋колко байта) и ги праща на CPU-то.
- А пък CPU-то ги интерпретира и ги изпълнява като машинна инструкция.
- Вѫтрѣ в себе си CPU-то поддържа специален регистър, нарѣчен PC (Program Counter).
- Чрѣз PC-регистърът CPU-то знае от кой адрес на RAM-ът да вземе инструкцията си.
- Когато CPU-то иска от RAM-ът слѣдваща инструкция за изпълнение, CPU-то използва съсдържанието на PC-регистърът за адрес към RAM-ът и веднага CPU-то увеличава PC-регистърът да бѫде готов за по-слѣдващата инструкция.
- Вѫтрѣ в себе си CPU-то поддържа нѣ̋колко регистъра, за които ще стане дума по-долу.
- PC-регистърът е един от тѣ̋х.
- Повечето регистри сѫ с общо прѣдназначение (General Purpose Registers).
- При нѣ̋кои компютри CPU-то взема съдържанието на PC-регистърът и на регистритѣ с общо прѣдназначение по един и сѫщ начин.
- При други компютри (напримѣр при IBM/360/370) CPU-то взема съдържанието на PC-регистърът по специален начин, със специална инструкция.
- Практически при всички компютри има специални машинни инструкции за установяване на ново съдържание на PC-регистърът.
- Това сѫ инструкциитѣ за безусловен или условен прѣход (branching, jumping).
- Тѣ промѣнят адресът на слѣдващата машинна инструкция.
- Вѫтрѣ в себе си CPU-то поддържа регистри.
- Това сѫ елементчета памет. Памет на една рѫка разстояние до CPU-то.
- RAM-ът е памет на един поглед разстояние,
- а дискът е необятна памет отвѫд хоризонтът.
- Повечето от тѣзи регистри сѫ с общо прѣдназначение.
- CPU-то не знае прѣдназначението им. Програмата знае.
- CPU-то се обръща към такъв регистър, само ако това е указано в изпълняваната машинна инструкция.
- Нѣ̋кои от регистритѣ сѫ със специално прѣдназначение.
- Такъв е PC-регистърът, за който стана̨ дума.
- CPU-то знае прѣдназначението му и го използва според прѣдназначението му.
- В съврѣменнитѣ компютри (но не и във IBM/360/370) има и друг регистър със специално прѣдназначение - SP (Stack Pointer).
- Темата за stack-ът и за heap-ът може би заслужава бесѣда от тукашната поредица бесѣди.
- Такава обаче не се прѣдвиђа.
- Дори установени термини на български нѣ̋ма.
- Пък и това не е загубило актуалността си - на тѣзи, които се уча̨т да програмират на C или C++, stack-ът и heap-ът трѣ̋бва да им бѫда̨т обяснени.
- А аз не пиша̨ учебник.
- Регистритѣ на CPU-то най-често съдържат адрес.
- Най-често в тѣ̋х се съхраняват адреси на мѣста от RAM-ът, с които CPU-то или по-точно програмата работи.
- Двата регистъра със специално прѣдназначение, за които стана̨ дума - PC-регистърът и SP-регистърът, съдържат именно адреси.
- Регистритѣ на CPU-то с общо прѣдназначение, които не съдържат адреси, ако програмата ги ползва,
тя ги ползват като акумулатори, напримѣр суматори.
- Акумулаторитѣ съдържат данни, които сѫ резултат от изчисления и подлѣжа̨т на скорошна обработка.
- Това сѫ елементчета памет. Памет на една рѫка разстояние до CPU-то.
- Даннитѣ, с които CPU-то борави при изпълнението на машинна инструкция, се наричат операнди на инструкцията.
- Един операнд:
- или се съдържа в самата инструкция,
- или се съдържа в нѣ̋кой регистър,
- или се съдържа в RAM-ът по нѣ̋кой адрес.
- Ако операндът се съдържа в RAM-ът, то адресът му:
- или се съдържа в самата инструкция,
- или се съдържа в нѣ̋кой регистър,
- или се съдържа в RAM-ът по нѣ̋кой адрес.
- Това послѣдното рѣ̋дко се срѣща, но се срѣща.
- По-голѣ̋ма дѫлбочина на косвено адресиране не се срѣща.
- Един операнд:
- И тъй, основната връзка на CPU-то (на централния̌т процесор)
със свѣтът извън него е връзката му с RAM-ът.
- Основното в тази връзка е адресът на мѣ̋сто в RAM-ът.
- CPU-то задава този адрес.
- CPU-то или иска да получи от RAM-ът съдържанието на този адрес, какво е запомнено там,
- или иска от RAM-ът по указания̌т адрес да бѫда̨т записани (и запомнени) нѣ̋какви данни (поредица от битове), които CPU-то сѫщо задава.
- Друга връзка на CPU-то (на централния̌т процесор) със свѣтът извън него
е системата на прѣкѫсвания.
- Основното прѣдназначение на механизмът на прѣкѫсванията е
CPU-то да бѫде увѣдомено за настѫпило измѣнение във външния̌т свѣ̋т.
- Завършила е операция за вход или за изход, натисна̨л съм клавиш, мръдна̨л съм мишката, барна̨л съм touch-screen-ът.
- Трудно ми е да го опиша̨ механизмът на прѣкѫсванията обобщено.
- Пък е и извън темата на бесѣдата.
- Основното прѣдназначение на механизмът на прѣкѫсванията е
CPU-то да бѫде увѣдомено за настѫпило измѣнение във външния̌т свѣ̋т.
- При компютърна архитектура, която позволява много-потрѣбителска (multi-user) работа,
CPU-то има най-малко два режима на работа: системен режим (kernel mode) и потрѣбителски режим (user mode).
- В потрѣбителския̌т режим (user mode) машиннитѣ инструкции, които мога̨т да повлияя̨т на другитѣ потрѣбители, сѫ забранени.
- Това сѫщо е извън темата на бесѣдата и силно зависи от конкретната компютърна архитектура.
- (.. скрий ги машиннитѣ инструкции ..) (.. скрий го уводът към швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Централния̌т процесор (CPU: Central Processing Unit) е мозъкът на компютърът -
това, дѣто смѣ̋та, мисли и взема рѣшения.
- ►► Адреси, адресно пространство, адресация (.. покажи ..)
-
▼▼
Адреси, адресно пространство, адресация
(.. скрий ..)
- И тъй, CPU-то (централния̌т процесор) на компютърът генерира и извеђа към външния̌т свѣ̋т адреси,
които сѫ част от два вида заявки:
- Заявка за четене:
- CPU-то иска да получи даннитѣ, записани на този адрес,
като прѣдполага, че това е адрес на мѣ̋сто от RAM-ът.
- CPU-то иска да получи даннитѣ, записани на този адрес,
- Или заявка за писане:
- CPU-то иска по този адрес да се запиша̨т и запомня̨т
нѣ̋какви данни, които CPU-то прѣдоставя заедно с адресът,
като пак прѣдполага, че адресът е на мѣ̋сто от RAM-ът.
- CPU-то иска по този адрес да се запиша̨т и запомня̨т
- Заявка за четене:
- Напримѣр, когато CPU-то иска да получи слѣдваща машинна инструкция за изпълнение, CPU-то издава заявка за четене по адрес, взет от PC-регистърът.
- При съврѣменнитѣ компютри адресът е адрес на байт - на поредица от 8 бита, нарѣчена байт.
- Не винѫги е било така.
- Но системата IBM/360 въведе тази мода и оттогава това е стандарт в индустрията.
- Ако към един адрес прибавим единица, ще се получи адресът на слѣдващия̌т байт.
- Заявката за четене или за писане по адрес, която CPU-то издава към външния̌т свѣ̋т,
може да има обхват с различна ширина:
- един байт (8 бита),
- два байта (16 бита),
- четири байта (32 бита - най-често), или
- осем байта (64 бита)
- Ако заявката е за два байта, обикновено адресът е четен (послѣдния̌т бит от адресът е 0).
- Ако заявката е за четири байта, обикновено адресът се дѣли на 4 (послѣднитѣ два бита от адресът сѫ 00).
- Харду̌ерът може да се сърди, ако не е така, а може и да не се сърди.
- CPU-то не може да издава заявки с произволна ширина.
- Не може 100 или 200 байта.
- CPU-то трѣ̋бва да издаде заявки байт по байт, а не наведнѫж.
- Не може само 5 бита.
- CPU-то трѣ̋бва да издаде заявка за цѣлия̌т 8-битов байт, а послѣ да си отдѣли интересуващитѣ го битове.
- Не може 100 или 200 байта.
- Най-често адресът прѣдставлява редица от 32 бита, интерпретирана като 32-битово двоично цѣ̋ло число без знак.
- Но има и други случаи.
- При други компютри адресът може да е 16-битово двоично число без знак.
- При IBM/360/370 адресът е 24-битово двоично число без знак.
- При други компютри адресът може да е 64-битово двоично число.
- Адреситѣ съставляват адресно пространство (address space).
- То се състои от всички възможни адреси.
- Отсега ще го нарѣка̨ физическо адресно пространство (physical address space), макар засега да не е ясно за какво е думата физическо.
- Ако адресът е 32-битов, то всички адреси на брой сѫ 4294967296.
- Това число е в десетичен запис и прѣдставлява 2 на степен 32.
- Толкова различни байта може да се адресират с 32-битови адреси.
- Може да се каже, че обемът на адресното пространство при 32-битови адреси е 4 гигабайта.
- При друга разрядност на адресът (16-битов, 24-битов, 64-битов) обемът на адресното пространство може да се прѣсмѣтне по сѫщата формула - числото 2 на тази степен.
- Най-ниския̌т (най-малкия̌т) адрес е съставен само от нулеви битове (двоични нули).
- Най-високия̌т адрес е съставен само от двоични единици.
- Стойността на адрес нѣ̋ма смисъл да се прѣдставя десетично.
- Прѣдставя се в шестнадесетичен или в осмичен запис и обикновено се запълват всички разряди.
- Напримѣр, най-високия̌т 32-битов адрес шестнадесетично се прѣдставя така: FFFFFFFF.
- А пък най-ниския̌т, разбира се е 0 (нула) или 00000000.
- CPU-то се обръща по адрес към външния̌т свѣ̋т -
CPU-то адресира физическо адресно пространство -
- или за да получи слѣдващата машинна инструкция, която CPU-то трѣ̋бва да изпълни,
- тогава това е заявка за четене,
- или в изпълнение на машинна инструкция,
- тогава това може да е заявка за четене или за писане според машинната инструкция.
- или за да получи слѣдващата машинна инструкция, която CPU-то трѣ̋бва да изпълни,
- (.. скрий ги адреситѣ и адресацията ..) (.. скрий го уводът към швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- И тъй, CPU-то (централния̌т процесор) на компютърът генерира и извеђа към външния̌т свѣ̋т адреси,
които сѫ част от два вида заявки:
- ►► Оперативна памет и физическо адресно пространство (.. покажи ..)
-
▼▼
Оперативна памет и физическо адресно пространство
(.. скрий ..)
- Когато CPU-то издава към външния̌т свѣ̋т - към физическото адресно пространство - заявка за четене или за писане, кой му отговаря?
- Кой я̨ изпълнява заявката?
- Кой е разположен във физическото адресно пространство?
- Най-често това е RAM-ът, оперативната памет.
- RAM-ът - това е памет (memory).
- Записва (запомня) подадени данни на мѣ̋сто, опрѣдѣлено чрѣз адресация, опрѣдѣлено от зададен физически адрес.
- Подава обратно даннитѣ, които сѫ били записани (запомени) на мѣ̋сто, опрѣдѣлено чрѣз адресация.
- RAM-ът е пасивно устройство.
- Изпълнява заявки и не проявява инициатива.
- Чии заявки изпълнява пасивното устройство RAM?
- На първо мѣ̋сто на CPU-то (на централния̌т процесор).
- В RAM-ът е записана неговата програма и CPU-то си я̨ чете програмата от RAM-ът.
- Пак към RAM-ът се обръща CPU-то и във връзка с операндитѣ на изпълняваната от него инструкция, освѣн когато операндът е в регистър.
- Но не само на CPU-то.
- Заявки към RAM-ът идват и откъм дисковия̌т контролер.
- По-общо казано, заявки към RAM-ът идват и откъм системата за вход/изход (I/O).
- Даннитѣ, които дискът или лентата записват на магнитната си повърхност, с посрѣдничеството на контролерът идват от RAM-ът, като контролерът използва сѫщата физическа адресация, както CPU-то.
- CPU-то ги е сложило на това мѣ̋сто в RAM-ът, прѣди да се стартира операцията за запис върху магнитен носител.
- И сѫщо така, даннитѣ, които дискът или лентата чета̨т от магнитната си повърхност, с посрѣдничеството на контролерът биват пращани към RAM-ът.
- CPU-то, при стартиране на операцията за четене от магнитен носител, е казало на контролерът къдѣ точно в RAM-ът - на кой физически адрес - да бѫда̨т записани тѣзи данни.
- Послѣ CPU-то ще си ги намѣри там.
- По-общо казано, заявки към RAM-ът идват и откъм системата за вход/изход (I/O).
- Напримѣр, от контролерът на дисплея̌т (на екранът).
- Дисплея̌т на моя̌т лаптоп (пиксели 1920 на 1080) изисква поне 8-мегабайтово мѣ̋сто в паметта.
- А реално вѣроятно доста повече.
- Цѣ̋лата RAM-памет на лаптопът ми е 16 гигабайта, което е 2000 пѫти повече от 8 мегабайта.
- За сравнение: прѣз 1979 започна̨х работа на компютър IBM/360 (ЕС ЭВМ) с RAM 120 килобайта.
- CPU-то подготвя в тази област от RAM даннитѣ, включително картинкитѣ, които дисплея̌т трѣ̋бва да ми покаже.
- Областитѣ от RAM-ът, които служа̨т на CPU-то за обмѣн на данни с контролеритѣ на периферията, се наричат буфери.
- И CPU-то, и контролеритѣ се обръщат към буферитѣ чрѣз физическа адресация на RAM-ът.
- Контролеритѣ на периферията научават физическитѣ адреси на буферитѣ от CPU-то, от командата за стартиране на входно-изходната (I/O) операция.
- На първо мѣ̋сто на CPU-то (на централния̌т процесор).
- Най-много мѣ̋сто във физическото адресно пространство заема RAM-ът.
- Обаче RAM-ът не заема всичкото физическо адресно пространство.
- Може компютърът да е оборудван с по-малко RAM, отколкото физическото адресно пространство позволява.
- Може сегменти от RAM-ът да сѫ били отстранени заради поврѣда.
- А може и част от физическото адресно пространство да е била задѣлена от компютърната архитектура за контролеритѣ на периферията.
- Какъв е резултатът, слѣд като CPU-то издаде заявка за четене или писане по физически адрес към външния̌т свѣ̋т?
- Заявката ще бѫде изпълнена без проблеми.
- CPU-то може да бѫде увѣдомено, че адресът не е достѫпен заради защита по ключ.
- CPU-то може да бѫде увѣдомено, че адресът не е достѫпен, защото липсва.
- CPU-то може само̀ да се усѣти, че адресът липсва, ако отговорът на заявката закъснява.
- (.. скрий го физическото адресно пространство ..) (.. скрий го уводът към швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Много-потрѣбителска работа на компютърът (.. покажи ..)
-
▼▼
Много-потрѣбителска работа на компютърът
(.. скрий ..)
- Тази шеста бесѣда е за виртуалната памет. Напрѣдваме натам стѫпка по стѫпка.
- Прѣдишната пета бесѣда бѣше за дисковетѣ.
- Там стана̨ дума, че операционната система Unix не може без дискове.
- В дѣйствителност, всички съврѣменни компютри имат дискове и затова всички съврѣменни операционни системи разчитат на дискова памет.
- Всички съврѣменни компютри имат и виртуална памет.
- Съврѣменнитѣ операционни системи я̨ използват виртуалната памет, за да организират много-потрѣбителската работа (multi-user) на компютърът, и то до степента компютърът да може да се ползва като сървър - без формално заложено ограничение за едноврѣменно обслужванитѣ потрѣбители.
- Нататък в настоящия̌т подраздѣл ще се опитам да покажа̨ как е организирана много-потрѣбителската работа
в IBM/System-360 без виртуална памет.
- Какво значи да се организира много-потрѣбителска работа?
- Да е възможно компютърът да има много (поне повече от един) потрѣбители едноврѣменно,
- като системата чрѣз харду̌ерът и чрѣз системния̌т софту̌ер не позволява един потрѣбител неволно (чрѣз грѣшка в потрѣбителската програма) или умишлено да наруши работата на другитѣ потрѣбители или на компютърната система като цѣ̋ло.
- И тъй, в IBM/System-360 ..
- Наличната оперативна памет е раздѣлена на блокове (наричани още страници) по 2 килобайта (2048 байта).
- На всѣки такъв блок се назначава 4-битов ключ за защита.
- 4-битов ключ: това значи число от 0 до 15.
- Централния̌т процесор (CPU-то) сѫщо има своя текуща стойност на този 4-битов ключ.
- CPU-то го ползва своя̌т текущ 4-битов ключ при адресирането на оперативната памет (RAM-ът) по какъвто и да е повод.
- Когато CPU-то стартира канална програма, дава съотвѣтния̌т 4-битов ключ за ползване от каналът (от периферния̌т процесор) при изпълнението на тази канална програма.
- Всѣ̋ка заявка за достѫп до физически адрес
(а такава заявка може да идва от CPU-то или от нѣ̋кой канал)
трѣ̋бва да бѫде придружена от 4-битов ключ за достѫп. - Ако ключът за достѫп е нула, достѫпът се разрѣшава.
- Ако ключът за достѫп не е нула, достѫпът се разрѣшава,
само ако ключът за достѫп съвпада с ключът на защита на 2K-блокът, в който попада адресът. - Когато се изпълнява потрѣбителска програма, CPU-то работи в потрѣбителски режим.
- В потрѣбителски режим на CPU-то му е забранено да изпълнява привилигировани инструкции.
- В частност, на CPU-то в потрѣбителски режим му е забранено да промѣня своя̌т 4-битов ключ за достѫп, да промѣня 4-битовитѣ ключове за защита на блоковетѣ RAM, както и да стартира канални програми.
- Горното означава, че архитектурата на IBM/System-360 (без виртуална памет) позволява едноврѣменно обслужване на 15 потрѣбителя най-много.
- Имаше версия на операционната система - OS/360-MVT,
която автоматично разкрояваше наличната оперативна памет на потрѣбителски раздѣли (partitions)
според постѫпващитѣ задания в потокът за пакетна обработка (batch processing).
- Аз не съм имал досѣг с такава система.
- При системитѣ OS/360-MFT и DOS/360 наличната за ползване оперативна памет биваше разкроявана
на потрѣбителски раздѣли (partitions) от човѣк.
- Най-много 15 раздѣла, всѣки с ключ за защита от 1 до 15.
- Системата OS/360-MFT сама избираше кога да пусне дадено потрѣбителско задание и в кой от наличнитѣ раздѣли на паметта да го пусне.
- При системата DOS/360 човѣк указваше това (програмист, технолог, оператор).
- (.. скрий я̨ много-потрѣбителската работа ..) (.. скрий го уводът към швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Обектни модули, секции, сегменти (.. покажи ги ..)
-
▼▼
Обектни модули, секции, сегменти
(.. скрий ги ..)
- В този подраздѣл ще се помѫча̨ да покажа̨ как едно врѣме без виртуална памет се строѣ̋ха̨
голѣми програми за изпълнение от компютър.
- Толкова голѣми, че не се събират в наличната оперативна памет.
- Повечето от тѣзи нѣща все още сѫ валидни.
- Дори новитѣ технологии да ги скриват.
- Тука става дума само за програми, които сѫ създадени или построени да работя̨т непосрѣдствено на компютърът,
- а не за програми, които докато се изпълняват, се интерпретират от други програми.
- Не става дума за програми, написани на Java, JavaScript, Python, Perl, PHP и други подобни.
- Не става дума за програми, написани на разни shell-script-ове.
- Програмата се пише на части, нарѣчени изходни модули (source modules).
- Програмата може да се пише от колектив програмисти
- и различнитѣ изходни модули може да сѫ написани от различни програмисти.
- Но дори да е само един програмистът, естествено е програмата да се пише на части.
- Различнитѣ изходни модули може да сѫ написани на различни езици за програмиране.
- По принцип, на асемблер.
- Реално, на COBOL, FORTRAN, PL/I, Pascal, C или C++.
- Все още в употрѣба: C и C++.
- Всѣки изходен модул се обработва - компилира се или се асемблира - от асемблер или от компилатор,
и се получава обектен модул (object module).
- За обектни модули (object modules) ставаше дума и в прѣдната бесѣда.
- При всѣ̋ко пускане на асемблерът или на компилаторът се получава един обектен модул.
- Oбектния̌т модул има двоичен формат, нечетлив за хора.
- Едно врѣме за всѣ̋ка компютърна платформа сѫществуваше специфичен формат на обектнитѣ модули.
- Напримѣр, при IBM/System-360 обектнитѣ модули имаха̨ формат удобен за пънч, макар че отдавна тѣ не се пънчваха̨, а се записваха̨ на магнитен носител (диск или лента).
- Сега има нѣ̋какви стандартни общи формати за обектни модули. (.. Напримѣр, COFF .. или .. ELF ..)
- Един обектен модул съдържа машинни инструкции и данни,
- като даннитѣ мога̨т да бѫда̨т инициализирани (с обявени начални стойности) или не.
- Ако даннитѣ не сѫ инициализирани, тѣ не заемат мѣ̋сто в самия̌т обектен модул, но той пак назначава мѣ̋сто за тѣзи данни в оперативната памет по врѣме на изпълнение на програмата.
- Паметта за врѣмето на изпълнение на програмата можем да я̨ нарѣчем обектна памет.
- И тъй, един обектен модул назначава и пълни парчета от обектната памет.
- Когато ги пълни, пълни ги с машинни инструкции или инициализиращи данни.
- Но да не забравяме, че обектния̌т модул по начало е разултат от работата на компилаторът или асемблерът.
- Как обектния̌т модул допринася за обектната памет - компилаторът или асемблерът сѫ опрѣдѣлили това.
- Парчетата, с които обектния̌т модул допринася за обектната памет, се наричат програмни секции.
- Едно врѣме при IBM/System-360 вмѣсто програмни секции се казваше контролни секции.
- Обектната памет - оперативната памет, назначена за изпълняваната програма - се дѣли на програмни секции.
- Ако обектния̌т модул е резултат от работата на асемблерът, то асемблерът е слѣдвал точно указанията на програмистът как да се разкрои модулът на секции.
- Ако обектния̌т модул е резултат от работата на компилатор, компилаторът сам може да рѣши да отдѣли машиннитѣ инструкции, инициализиранитѣ данни и неинициализиранитѣ данни в различни секции.
- Но и в този случай програмистът трѣ̋бва да може да укаже специфика в оформянето на програмнитѣ секции.
- Има двѣ програми, които умѣя̨т да боравя̨т с обектни модули:
- програма-библиотекар (librarian), наричана в системата Unix архивар (ar), и
- линкер (Linker или LinkageEditor), наричан още свързващ редактор.
- Библиотекаря̌т (архиваря̌т) поддържа
- библиотеки от обектни модули, наричани още статични библиотеки.
- Като файлове в IBM/System-360 библиотекитѣ от обектни модули се наричаха̨
RLB-та,
в системата Unix файловетѣ със статични библиотеки имат разширение на името .a, а във Windows - .lib. - Един обектен модул е резултат от работата на асемблерът или на компилаторът.
- Той може да си остане отдѣлен файл (с разширение .o в Unix или .obj във Windows),
- но може с помощта на библиотекаря̌т да се пъхне в нѣ̋коя статична библиотека.
- Библиотекаря̌т и форматът на статичнитѣ библиотеки сѫ проектирани така, че да служа̨т на линкерът.
- Библиотекаря̌т не може да раздѣли обектен модул на съдържащитѣ се в модулът програмни секции - това го може линкерът.
- Линкерът - сам или с вѫтрешна невидима помощ от библиотекаря̌т, трѣ̋бва да може:
- Да извлѣче от статична библиотека обектен модул по името на модулът.
- Да извлѣче от статична библиотека този обектен модул, съдържащ се в нея̨, който дефинира даден външен символ.
- Външнитѣ символи най-често сѫ имена на подпрограми (функции), но може и да сѫ означения на блокове с данни.
- Линкерът е една от най-важнитѣ програми.
- Резултатът (изходът) от едно пускане на линкерът е изпълнима програма - executable.
- Забѣлѣжка в аванс. В новитѣ системи със виртуална памет резултатът от линкерът може да бѫде или executable, или динамична библиотека. Но засега ще забравим за това.
- Паметта на executable-ът се дѣли на сегменти (segments).
- По своя инициатива - ако не му е указано от програмистът, линкерът нѣ̋ма да направи повече от един сегмент.
- Забѣлѣжка в аванс. По своя инициатива линкерът нѣ̋ма да направи динамична библиотека.
- Забѣлѣжка в аванс. Динамичната библиотека е сегмент за общо ползване.
Но засега ще забравим за това.
- Резултатът (изходът) от едно пускане на линкерът е изпълнима програма - executable.
- Ако executable-ът (изпълнимата програма) се вмѣства в наличната оперативна памет,
- то нѣ̋ма смисъл executable-ът да се дѣли на сегменти - достатъчен е един сегмент.
- В този случай програмистът не мисли и за програмни секции.
- За всѣки изходен модул компилаторът ще създаде обектен модул с най-много три програмни секции: за машинни инструкции, за инициализирани данни и за неинициализирани данни.
- Дали тя съдържа машинни инструкции, инициализирани данни или неинициализирани данни - това е свойство на програмната секция.
- Компилаторът дава едно и сѫщо подразбиращо се име на програмнитѣ секции, щом програмистът не се е намѣсил.
- Послѣ линкерът ще сглоби секцията с това подразбиращо се име, като събере (конкатенира) приноситѣ към тази секция от различнитѣ обектни модули.
- Така в получения̌т единствен сегмент има само една програмна секция, съдържаща машинни инструкции, и името ӥ се подразбира.
- По подобен начин се третират и секциитѣ с данни, но тѣ не се събират, а се прѣпокриват.
- От различнитѣ изходни модули прѣз различнитѣ обектни модули се обръщаме към общи данни - това е смисълът на прѣпокриването.
- Когато такава програма се пуска за изпълнение, единствения̌т ӥ сегмент се заређа в оперативната памет и управлението на CPU-то се прѣдава на указана входна точка.
- Смисълът на този подраздѣл обаче е да обясня̨ как се строя̨т голѣми програми
- такива, които не се побират в наличната оперативна памет.
- Програмистът проектира и разкроява голѣ̋мата програма на сегменти.
- Всѣки сегмент се заређа в оперативната памет отдѣлно.
- Не е възможно всички сегменти да се заредя̨т едноврѣменно, защото програмата е голѣ̋ма.
- Един от сегментитѣ е базов - root segment.
- Той се заређа, когато програмата се пусне да се изпълнява, и той заређа другитѣ сегменти.
- Нѣкои от сегментитѣ се прѣпокриват - тѣ се заређат на един и сѫщ адрес (на едно и сѫщо мѣ̋сто) и не мога̨т да сѫ заредени едноврѣменно.
- Никой от другитѣ сегменти не прѣпокрива базовия̌т сегмент.
- Може да има нѣ̋колко групи от взаимно прѣпокриващи се сегменти.
- Програмистът указва на линкерът:
- от колко сегмента да бѫде построен executable-ът,
- кой е базовия̌т сегмент и кои сѫ групитѣ прѣпокриващи се сегменти,
- от кои обектни модули и програмни секции да се състои всѣки сегмент.
- Линкерът включва в базовия̌т сегмент подпрограмки за замѣстване на един сегмент с друг по врѣме на изпълнение.
- Дори да идват от един и сѫщ обектен модул, различнитѣ програмни секции мога̨т да отида̨т в различни сегменти.
- Програмистът проектира и разкроява една голѣ̋ма програма на сегменти, така че замѣстванията на един сегмент с друг да се случват максимално рѣ̋дко.
- При недобро разпрѣдѣление на програмнитѣ секции и обектнитѣ модули по сегментитѣ, производителността на програмата може да падне драстично.
- (.. скрий ги секциитѣ и сегментитѣ ..) (.. скрий го уводът към швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- В този подраздѣл ще се помѫча̨ да покажа̨ как едно врѣме без виртуална памет се строѣ̋ха̨
голѣми програми за изпълнение от компютър.
- ◄► (.. скрий го уводът ..) (.. свий го ..) (.. разгъни го ..) (.. скрий я̨ шестата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Нѣщо по срѣдата (.. покажи го ..) (.. разгъна̨то ..)
-
▼▼
Нѣщо по срѣдата
(.. скрий го ..)
(.. свий го ..)
(.. разгъни го ..)
- ◄► За да разберете това нѣщо по срѣдата, трѣ̋бва да сте прочели нѣщото като увод.
- ►► Динамичната прѣадресация (.. покажи ..)
-
▼▼
Динамичната прѣадресация
(.. скрий ..)
- Това, което се слага по срѣдата међу CPU-то (централния̌т процесор) и външния̌т за него свѣ̋т, е MMU-то.
(.. Повече за MMU-тата можете да прочетете тука ..)- Външния̌т свѣ̋т за CPU-то се състои от физическата оперативна памет и от периферията.
- MMU-то стои на изходът от CPU-то към външния̌т свѣ̋т.
- Всѣки адрес, който CPU-то генерира и праща към външния̌т свѣ̋т в заявки за четене или за писане, минава прѣз MMU-то.
- Когато MMU-то не работи (не е включено, изключено е), адреситѣ минават прѣз MMU-то без промѣ̋на.
- Може да се смѣ̋та, че когато MMU-то е изключено, адреситѣ не минават прѣз него.
- Когато обаче MMU-то работи (включено е), то промѣня адреситѣ и пуска към външния̌т свѣ̋т други адреси.
- MMU-то извършва динамична прѣадресация
- Адреситѣ, които важа̨т във външния̌т свѣ̋т, се наричат физически адреси.
- Тѣ образуват физическо адресно пространство.
- Адреситѣ, които CPU-то генерира и които стигат само до MMU-то, се наричат виртуални адреси.
- Тѣ образуват виртуално адресно пространство.
- MMU-то извършва динамична прѣадресация:
прѣобразува виртуалнитѣ адреси във физически. - CPU-то може да включва и да изключва MMU-то,
но само когато CPU-то е в системен (привилегирован) режим (kernel mode, privileged mode),
не и в потрѣбителски режим (user mode).
- Битоветѣ на виртуалния̌т адрес се дѣля̨т на двѣ групи - младши и старши.
- Старшитѣ битове опрѣдѣлят "сѫдбата" на виртуалния̌т адрес.
При "щастливо" стечение на обстоятелствата,
тѣ опрѣдѣлят базовия̌т физически адрес,
към който се добавят младшитѣ битове,
за да се получи физическия̌т адрес.
- Старшитѣ битове опрѣдѣлят "сѫдбата" на виртуалния̌т адрес.
- Виртуалнитѣ адреси със съвпадащи старши битове образуват виртуална страница (virtual page).
- Виртуалнитѣ адреси от една виртуална страница обикновено имат една и сѫща "сѫдба". (Изключение: PDP-11)
- Колко на брой сѫ младшитѣ битове на виртуалния̌т адрес?
- Колко е голѣ̋ма една виртуална страница?
- Тѣзи два въпроса, разбира се, сѫ свързани:
броя̌т на младшитѣ битове на адресът опрѣдѣля размѣрът на една виртуална страница. - Зависи от архитектурата на компютърът и от моделът на MMU-то.
- При нѣ̋кои MMU-та броя̌т на младшитѣ битове на адресът е част от настройката на устройството, и то работи според текущата си настройка.
- При IBM/System-370 ..
- броя̌т на младшитѣ битове e 11, и съотвѣтно една виртуална страница е 2048 байта (2 килобайта, 2К байта, 2 на степен 11 байта).
- Спомнѣте си, че в IBM/360/370 толкова е и размѣрът на блокът памет с общ 4-битов ключ за защита.
- Адресът в системата IBM/370 е 24-битов.
- Младшитѣ 11 бита на виртуалния̌т адрес дават адресът вѫтрѣ във виртуалната страница, а старшитѣ 13 бита опрѣдѣлят коя е самата виртуална страница.
- При VAX броя̌т на младшитѣ битове e 9, и съотвѣтно една виртуална страница е 512 байта (2 на степен 9 байта, половин килобайт).
- При по-новитѣ компютърни архитектури, с модерна организация на дисковата памет, размѣрът на виртуалната страница е съгласуван с размѣрът на дисковитѣ блокове в разпрѣдѣлението на дисковото пространство по файлове..
- (.. покажи ..) MMU-то на PDP-11 не е показателно за другитѣ компютри, но този случай е обозрим. (.. покажи подробности за MMU-то на PDP-11 там ..)
-
MMU-то на PDP-11 не е показателно за другитѣ компютри, но този случай е обозрим.
(.. покажи подробности за MMU-то на PDP-11 там ..)
(.. скрий го PDP-11 ..)
- PDP-11 е 16-битов компютър, и виртуалния̌т адрес е 16-битов.
- Броя̌т на младшитѣ битове във виртуалния̌т адрес е 13, а на старшитѣ - 3.
- Това означава, че:
- една виртуална страница е 8 К (2 на степен 13) байта,
- виртуалното адресно пространство е 64 К (2 на степен 16) байта, и
- виртуалното адресно пространство съдържа 8 (осем на брой: 2 на степен 3) виртуални страници.
- За да извършва динамичната прѣадресация, MMU-то на PDP-11 ползва таблица с осем реда - таблица на виртуалнитѣ страници, по един ред за всѣ̋ка виртуална страница.
- В дѣйствителност, MMU-то на PDP-11 има достѫп до двѣ такива таблици: една за системния̌т режим (kernel mode) на CPU-то, и друга за потрѣбителския̌т режим (user mode).
- С други думи, във всѣки момент има двѣ виртуални адресни пространства - едно за "kernel mode" и друго за "user mode".
- С прѣвключването от "kernel mode" във "user mode", CPU-то смѣня видимото за него виртуално адресно пространство.
- А колко е голѣ̋мо физическото адресно пространство при компютритѣ PDP-11?
- Младшитѣ модели нѣ̋мат MMU и физическото адресно пространство е сѫщото като виртуалното.
- Младшитѣ модели на PDP-11 сѫ едно-потрѣбителски компютри.
- При срѣднитѣ модели физическитѣ адреси сѫ 18-битови и размѣрът на физическото адресно пространство е 256 К байта (2 на степен 18 байта).
- При старшитѣ модели физическитѣ адреси сѫ 22-битови и размѣрът на физическото адресно пространство е 4 М байта (4 мегабайта, 2 на степен 22 байта).
- При всички модели горнитѣ 8 К байта от физическото адресно пространство сѫ задѣлени за входно-изходната страница.
- Остана̨лата част на физическото адресно пространство е свободна за разполагане на физическа оперативна памет там.
- При срѣднитѣ модели 248 К байта е максималния̌т размѣр на наличната физическа оперативна памет.
- Характерно за архитектурата на PDP-11 е това, че размѣрът на физическото адресно пространство (то е 18-битово или по-голѣ̋мо) надвишава размѣрът на виртуалното адресно пространство.
- При PDP-11, MMU-то (динамичната прѣадресация) дава на CPU-то възможност да гледа по цѣ̋лото физическо адресно пространство, като прѣнастройва и промѣня виртуалното адресно пространство.
- Виртуалната страница е доста голѣ̋ма по размѣр - 8 K байта.
- А пък наличната физическа оперативна памет при PDP-11 е цѣ̀нен ресурс,
- при положение, че срѣднитѣ и старшитѣ модели се рекламират като много-потрѣбителски компютри.
- Физическата оперативна памет се разпрѣдѣля за ползване по̀ на дребно - на парчета по 128 байта.
- Едно такова парче се опрѣдѣля от съвпадащи старши битове на физическия̌т адрес, слѣд като отрѣжем младшитѣ 7 бита.
- Една виртуална страница (8 К байта) може да съдържа 64 на брой 128-байтови парчета.
- Колко точно такива парчета сѫ назначени за виртуалната страница - това може да се укаже със 6 бита.
- Схема на 16-битов виртулен адрес при PDP-11:
P P P L L L L L L Λ Λ Λ Λ Λ Λ Λ ................. Λ Λ Λ Λ Λ Λ Λ => 7 най-младши бита ..... L L L L L L ............. => 6 срѣдно младши бита P P P ......................... => 3 старши бита
- P: тритѣ старши бита опрѣдѣлят една от 8-тѣ виртуални страници на виртуалното адресно пространство.
- Λ: 7-тѣ най-младши бита се запазват без промѣ̋на във физическия̌т адрес слѣд динамичната прѣадресация.
- L: 6-тѣ срѣдни бита опрѣдѣлят 128-байтовото парче от физическата памет. Ако такова парче не е назначено, адресът е невалиден.
- L: тѣзи 6 бита, разглеђани като двоично число без знак, се прибавят към базовото число от специалния̌т регистър PAR за съотвѣтната виртуална страница.
- Схема на 18- или 22-битов физически адрес при PDP-11:
b b b b B B B B B B B B B B B Λ Λ Λ Λ Λ Λ Λ ............................. Λ Λ Λ Λ Λ Λ Λ => 7 най-младши бита b b b b B B B B B B B B B B B ............. => 11 или 15 старши бита
- Λ: 7-тѣ най-младши бита сѫ копирани от виртуалния̌т адрес.
- bB: старшитѣ битове на физическия̌т адрес се получават, като към базовото число от специалния̌т регистър PAP се прибави 6-битовото число LLLLLL от виртулния̌т адрес.
- И тъй, MMU-то на PDP-11 във всѣки момент прѣдоставя двѣ виртуални адресни пространства:
- едно за системен режим (kernel mode) и друго за потрѣбителски режим (user mode).
- Всѣ̋ко от двѣтѣ виртуални адресни пространства се състои от осем виртуални страници.
- За всѣ̋ка виртуална страница във MMU-то има по два специална регистъра:
- PAR (Page Address Register). Съдържа старшитѣ битове на физическия̌т адрес на началото на страницата, слѣд като младшитѣ седем бита сѫ отсѣчени.
- PDR (Page Descriptor Register). Описва виртуалната страница.
- CPU-то казва на MMU-то дали достѫпът до виртуалната страница изобщо е разрѣшен.
- CPU-то казва на MMU-то дали във виртуалната страница е разрѣшено писане (е разрѣшена промѣ̋на).
- CPU-то казва на MMU-то колко 128-байтови парчета физическа памет сѫ задѣлени за виртуалната страница.
- CPU-то казва на MMU-то дали тѣзи 128-байтови парчета физическа памет сѫ разположени в началото или в края̌т на виртуалната страница.
Удобно е виртуална страница, използвана за стек (stack), да започва от края̌т на адресния̌т диапазон. - MMU-то казва на CPU-то дали виртуалната страница е била промѣняна.
- Освѣн това, има нѣ̋колко специални регистъра общо за MMU-то, така че:
- CPU-то да може да го пуска MMU-то и да го спира,
- MMU-то да може да каже на CPU-то защо виртуален адрес е невалиден и как да се излѣзе от ситуацията.
- Резюме́: Какво позволява MMU-то на PDP-11? За какво се ползва то?
- Физическото адресно пространство да е по-голѣ̋мо от виртуалното адресно пространство, което е ограничено до 64 K байта.
- Изолиране на потрѣбителитѣ един от друг.
- Базовия̌т сегмент и стекът може да започват от едни и сѫщи виртуални адреси за кой да е потрѣбител.
- Слѣд динамичната прѣадресация полученитѣ физически адреси ще сѫ различни за различнитѣ потрѣбители.
- Един конкретен потрѣбител изобщо не може да виђа физическата памет извън показаното в неговото виртуално адресно пространство.
- В рамкитѣ на обслужването на един потрѣбител.
- На един потрѣбител при нуђа може да му бѫде задѣлена физическа оперативна памет,
повече отколкото той може в даден момент да виђа прѣз виртуалното си адресно пространство.
- Виртуалното адресно пространство е 64 К байта.
- А може да има и 100 K байта налична физическа оперативна памет, свободна за разпрѣдѣление.
- MMU-то на PDP-11 позволява прѣзаређане на виртуални страници, така че в различни моменти една виртуална страница да гледа към различни сегменти на физическата оперативна памет.
- На един потрѣбител при нуђа може да му бѫде задѣлена физическа оперативна памет,
повече отколкото той може в даден момент да виђа прѣз виртуалното си адресно пространство.
- Обслужване на повече потрѣбители, отколкото наличната физическа оперативна памет без MMU би позволила.
- Физическа оперативна памет е цѣ̀нен ресурс, подлежащ на разпрѣдѣление међу потрѣбителитѣ съобразно тѣхнитѣ нуђи и приоритети.
- Парче физическа оперативна памет, обикновено с размѣр на виртуална страница, което е назначено на потрѣбител в състояние на очакване на нѣщо или на потрѣбител с нисък приоритет, може да бѫде записано на дискът в специален файл (swap file), без този "ощетен" потрѣбител да "съзнава" какво става, и мѣ̋стото във физическата оперативна памет да се даде на друг потрѣбител.
- В моментът, когато "ощетения̌т" потрѣбител отново се "събуди" за работа, неговото виртуално адресно пространство се заређа в MMU-то, но онова парче памет, което е било записано на дискът в специалния̌т файл, не се връща във физическата памет.
- Виртуалния̌т адрес, който сочи към него, ще бѫде невалиден.
- Може да не се случа̨т обръщения към тази невалидна виртуална страница, която отдавна е била изгонена от физическата оперативна памет на дискът. Тя ще си остане на дискът.
- Но ако има обръщение към нея̨, MMU-то ще рапортува невалиден адрес,
а операционната система ще се сѣти какво да направи.
- Потрѣбителя̌т ще мине в състояние на очакване.
- Ще му бѫде задѣлена нужната физическа оперативна памет.
- На това ново мѣ̋сто ще бѫде прочетена от дискът исканата виртуална страница.
- Виртуалната таблица ще бѫде промѣнена, така че тази виртуална страница да гледа към това ново мѣ̋сто.
- Потрѣбителя̌т ще мине в състояние на готовност.
- Ако настане момент този потрѣбител пак да отстѫпи назад и да даде прѣдимство на други, и ако при това физическа оперативна памет, задѣлена за тази виртуална страница, трѣ̋бва пак да бѫде освободена за други нуђи, операционната система ще провѣри дали тази виртуална страница е била промѣняна, докато е прѣбивавала във физическата оперативна памет.
- Ако не е била, парчето физическа памет просто се освобођава.
- Но ако е била промѣняна, парчето физическа памет се освобођава, едва слѣд като записът върху дискът се опрѣсни.
- (.. скрий го PDP-11 ..) (.. скрий го PDP-11 ..)
- (.. скрий я̨ динамичната прѣадресация ..) (.. скрий го това по срѣдата на швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Това, което се слага по срѣдата међу CPU-то (централния̌т процесор) и външния̌т за него свѣ̋т, е MMU-то.
- ►► Общо виртуално адресно пространство за цѣ̋лата система (.. покажи ..)
-
▼▼
Общо виртуално адресно пространство за цѣ̋лата система
(.. скрий ..)
- В прѣдишния̌т подраздѣл навлѣ̋зох в нѣ̋кои подробности за MMU-то на PDP-11.
- Но първото MMU, което ми е попадало, е това за IBM/System-370.
- Тука най-напрѣд ще ги сравня̨ накратко.
- MMU-то на PDP-11 изобразява малко виртуално адресно пространство върху по-голѣ̋мо физическо адресно пространство.
- При IBM/370 физическото адресно пространство реално е по-малко от виртуалното.
- MMU-то на PDP-11, както и всички по-нови MMU-та, прѣдоставят отдѣлни виртуални адресни пространства за различнитѣ режими на CPU-то - системния̌т и потрѣбителския̌т (kernel-user mode).
- MMU-то на IBM/370 прѣдоставя само едно виртуално адресно пространство.
- MMU-то на IBM/System-370 е трѣ̋бвало да поддържа защитата по 4-битов ключ, наслѣдена от IBM/System-360.
- MMU-то на PDP-11 позволява разрѣшения̌т диапазон на адреситѣ в една виртуална страница да е по-малък от самата виртуална страница.
Физическата памет се разпрѣдѣля на парчета по 128 байта. - При IBM/360/370 паметта се разпрѣдѣля само по цѣли страници, 2 K байта всѣ̋ка.
- При PDP-11, MMU-то е част от архитектурата на компютърът от самото начало.
- При IBM/360/370, MMU-то идва като късно допълнение на вече установила се сѫществуваща архитектура.
- Затова, при въвеђането на разширената архитектура IBM/370, първата работа на разработчицитѣ на системния̌т софту̌ер е да се пусне натрупания̌т за IBM/360 софту̌ер, системен и приложен, и то с минимални промѣни.
- Усилията сѫ били насочени към виртуализация.
- Физическата оперативна памет е да кажем 512 K байта (половин мегабайт).
Модели на IBM/370 с памет повече от един мегабайт май не сѫ пускали. - Във дисков файл (page file) се моделира виртуална памет да кажем два мегабайта.
То и дисковото пространство е кът.
Максималния̌т размѣр е 16 M байта. - Старата система - тази, която е работила години наред на IBM/System-360 и която не подозира за такива нѣща като MMU, динамична прѣадресация и виртуални адреси, се пуска да работи при памет два мегабайта.
- Само дѣто тази памет е виртуална.
- Цѣ̋лата виртуална памет я̨ има на дискът.
- Виртуалнитѣ страници, които се ползват в моментът, сѫ заредени във физическата оперативна памет, и MMU-то динамично прѣобразува виртуалнитѣ адреси в реални физически адреси.
- В нѣ̋какъв момент се случва обръщение към виртуална страница, която не е заредена във физическата оперативна памет,
- MMU-то ще съобщи за това събитие на CPU-то чрѣз прѣкѫсване.
- В случая̌т на IBM/370 това прѣкѫсване ще бѫде прихвана̨то и обработено от ново-написания̌т системен софту̌ер.
- MMU-тата на IBM/370 и на PDP-11 сѫ истински MMU-та,
- Едно истинско MMU ще помогне на системния̌т софту̌ер да рѣши коя виртуална страница између зареденитѣ в паметта да бѫде изгонена оттам, за да се освободи мѣ̋сто за ново-поисканата виртуална страница.
- Ще бѫде изгонена тази, към която не е имало обръщение най-отдавна.
- MMU-то ще каже дали тази страница е била промѣняна по врѣме на прѣстоя̌т си във физическата оперативна памет.
- Ако е била промѣняна, нейния̌т запис върху дискът ще се опрѣсни.
- Слѣд това исканата виртуална страница - тази, която е прѣдизвикала прѣкѫсването, ще бѫде заредена от дискът на освободеното мѣ̋сто във физическата оперативна памет, и изпълнението ще продължи от мѣ̋стото на прѣкѫсване.
- Прѣкѫсна̨тата програма нѣ̋ма да забѣлѣжи прѣкѫсването.
- Ново-написания̌т системен софту̌ер трѣ̋бва да прихваща и други нѣща от старата система.
- Командитѣ за работа с 4-битовитѣ ключове за защита трѣ̋бва да бѫда̨т прихващани.
- Тѣзи ключове важа̨т за виртуалнитѣ страници, сѫществуващи само като копие в дисковия̌т файл.
- Командитѣ за старт на вход-изход и прѣкѫсванията откъм системата за вход-изход трѣ̋бва да бѫда̨т прихващани,
- защото буферитѣ за вход-изход трѣбва да остана̨т във физическата оперативна памет.
- Още нѣщо. Тѣзи буфери имат различни виртуални и физически адреси, а системата за вход-изход трѣ̋бва да знае само физическитѣ адреси.
- Физическата оперативна памет е да кажем 512 K байта (половин мегабайт).
- Освѣн IBM/370, не зная̨ друг случай, когато при виртуална памет и "истинско" MMU
да се поддържа общо виртуално адресно пространство за цѣ̋лата система.
- При IBM/370 това се е наложило, за да може бързо да се пусне сѫществуващ и познат на потрѣбителитѣ софту̌ер на модел с модифицирана архитектура.
- (.. скрий го общото виртуално адресно пространство ..) (.. скрий го това по срѣдата на швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Всѣки потрѣбител с отдѣлно виртуално адресно пространство (.. покажи ..)
-
▼▼
Всѣки потрѣбител с отдѣлно виртуално адресно пространство
(.. скрий ..)
- В прѣдишния̌т подраздѣл показах кое е било най-малкото, което разработчицитѣ на системния̌т софту̌ер на IBM/System/360/370 е трѣ̋бвало да направя̨т, за да използват новия̌т харду̌ер - MMU-то.
- Осигурили сѫ голѣ̋мо виртуално адресно пространство.
- На първо врѣме - едно за цѣ̋лата система.
- Слѣдващата стѫпка е да се осигури отдѣлно виртуално пространство за всѣки потрѣбител.
- Освѣн при IBM/370, при другитѣ системи с "истинско" MMU това е било първата стѫпка.
- Върху специален дисков файл системата моделира нѣ̋колко виртуални адресни пространства - по едно за потрѣбител.
- Всѣ̋ка виртуална страница, записана в специалния̌т файл, се идентифицира не само с виртуалния̌т си адрес, но и с идентификаторът на потрѣбителя̌т.
- Всѣки потрѣбител получава свое виртуално адресно пространство.
- Но, разбира се, не с максималния̌т размѣр (16 M байта при IBM/370), а само толкова, колкото му е нужно.
- Старото ограничение - 15 - за броя̌т на едноврѣменно обслужванитѣ потрѣбители, наложено от 4-битовия̌т ключ за защита при IBM/360, отпада.
- Специалния̌т дисков файл може да съдържа страницитѣ на повече от 15 виртуални адресни пространства.
- Потрѣбителитѣ сѫ изолирани един от друг - всѣки виђа само своето виртуално адресно пространство.
- Във всѣ̋ка архитектура MMU-то си има особености.
- Обобщение на особеноститѣ при IBM/370.
- Отдѣлно виртуално адресно пространство за всѣки потрѣбител е втора стѫпка при IBM/370, докато при другитѣ е първа стѫпка и се подразбира.
- MMU-то при IBM/370 трѣ̋бва да се съобразява с 4-битовия̌т ключ за защита, наслѣден от IBM/370.
- Развитието на системния̌т софту̌ер при IBM/370 е вървѣ̋ло в двѣ посоки:
- Старитѣ операционни системи, които потрѣбителитѣ добрѣ познават от IBM/360, се модифицират така, че всѣки потрѣбител в терминитѣ на старата система да получи свое виртуално адресно пространство.
- Разработена е нова операционна система VM/370, която може да обслужва много потрѣбители.
- Разбира се, програми мога̨т да се изпълняват непосрѣдствено на операционната система VM/370.
- VM е съкращение на Virtual Machines.
- Системата VM/370 може да играе ролята на домакин, като потрѣбителитѣ ӥ сѫ ӥ гости.
- Като домакин тя може да прѣдостави на всѣки свой гост отдѣлна виртуална машина - отдѣлен виртуален компютър.
- Архитектурата на прѣдоставената на гостът виртуална машина - IBM/360 или IBM/370, както и конфигурацията, е по избор.
- Системата VM/370 като домакин симулира за гостът избраната от него виртуална машина.
- За домакинът VM/370 един гост е един потрѣбител.
- Но гостът може да пусне на своята си виртуална машина каквато си иска опрационна система - стара (DOS/360, OS/MFT, OS/MVT) или нова (т.е. модифицирана стара).
- стара, дълго врѣме експлоатирана на IBM/360, или
- нова, за IBM/370 - с едно виртуално адресно пространство или с нѣ̋колко такива.
- Така на своята си виртуална машина гостът може да обслужва свои потрѣбители.
- Накратко, новата операционна система VM/370 прѣдоставя на всѣки свой потрѣбител, когото аз тука наричам гост, не само и не толкова отдѣлно виртуално адресно пространство, а отдѣлна виртуална машина.
- Основна грижа на разработчицитѣ на системния̌т софту̌ер за IBM/370 е била да не налагат промѣни в потрѣбителския̌т софту̌ер, който е бил дълго врѣме в експлоатация на IBM/360.
- (.. скрий ги отдѣлнитѣ виртуални адресни пространства ..) (.. скрий го това по срѣдата на швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Потрѣбители, сесии, процеси и нишки (.. покажи ..)
-
▼▼
Потрѣбители, сесии, процеси и нишки
(.. скрий ..)
- Едно врѣме - при IBM/System/360/370, при пакетната обработка и прѣди системата Unix - тѣзи понятия не бѣ̋ха̨ добрѣ опрѣдѣлени.
- В прѣдишнитѣ раздѣли и подраздѣли на тази бесѣда употрѣбявах нѣ̋какво недобрѣ дефинирано понятие потрѣбител.
- При пакетната обработка (batch procesisng) точната дума бѣше job, но не мога̨ да намѣря̨ подходяща българска дума за job.
- Нѣ̋кога думата job я̨ прѣвеђахме на български и на руски с думата задание.
- Думата задание не се вписва добрѣ в контекстът на настоящата бесѣда.
- Затова досега пишѣх потрѣбител.
- Но настана̨ врѣме понятията да се уточня̨т.
- Уточнението дойде със системата Unix.
- Да напомня̨, че виртуална памет без дискова памет нѣма.
- На виртуалната памет е посветена настоящата бесѣда, а на дисковата памет - прѣдишната.
- В прѣдишната бесѣда май бѣ̋х написал, че без дисковата памет и системата Unix я̨ нѣ̋ма.
- Потрѣбителитѣ (users).
- Описанието на потрѣбителитѣ се намира в "зорко охраняван" файл на системния̌т диск.
- В нашитѣ модерни врѣмена описанието на потрѣбителитѣ може да се намира в нѣ̋кой облак тъмен.
- Това значи да се намира на диск на нѣ̋кой сървър, разположен в нѣ̋коя точка от глобусът или от космосът.
- Сървърът е мощен компютър.
- Облачността на глобалната мрѣжа се състои от сървъри, които мѣня̨т локацията си като стратегически ядрени ракети.
- В настоящата си бесѣда облачността ще я̨ игнорирам.
- Все пак, аз пиша̨ прѣдимно за мина̨лото.
- Един потрѣбител се идентифицира с името си (username).
- Потрѣбителя̌т си има и парола.
- Потрѣбителя̌т е собственик на нѣ̋кои файлове на дискът, и към тѣ̋х той има пълен достѫп.
- Към други файлове един потрѣбител може да има ограничен достѫп, или пък може да нѣ̋ма никакъв достѫп.
- Този важен аспект - достѫпът на потрѣбителитѣ до дисковитѣ файлове, нѣ̋ма отношение към виртуалната памет.
- Може би трѣ̋бваше да бѫде разгледан в прѣдишната бесѣда.
- Как да е. За достѫът на потрѣбителитѣ до дисковитѣ файлове - толкова.
- Описанието на потрѣбителитѣ се намира в "зорко охраняван" файл на системния̌т диск.
- Сесиитѣ.
- Потрѣбителя̌т отваря и затваря сесии.
- Отварянето на сесия се нарича LogIn или SignIn,
- а затварянето - LogOut или SignOut.
- От гледна точка на потрѣбителя̌т в рамкитѣ на сесията той изпълнява програми - потрѣбителски програми, приложни програми, приложения, applications.
- Напримѣр аз сега като пенсионер на лаптопът си най-често изпълнявам двѣ приложения - брау̌зерът (the internet browser), с който ровя̨ из интернет, и редакторът, с който въвеђам текстоветѣ на html.
- Процеситѣ.
- За изпълнението на всѣ̋ка компютърна програма (включително на всѣ̋ко приложение), операционната система пуска процес.
- Един процес може да пуска други процеси.
- В повечето случаи, самата операционна система работи като взаимодѣйстващи си процеси.
- Един процес може сам да си завърши (to terminate).
- Може и привилегирован процес да го терминира (to be terminated).
- Понятието процес е най-важното във връзка с MMU-тата. тоест в контекстът на настоящата бесѣда.
- Процесът е това нѣщо, което има свое отдѣлно виртуално адресно пространство.
- Процеситѣ, работещи едноврѣменно, се конкурират един друг за ресурситѣ на компютърът.
- Обаче процеситѣ сѫ изолирани един от друг в оперативната памет.
- Когато CPU-то прѣвключва от един процес на друг, CPU-то прѣвключва от едно виртуално адресно пространство на друго.
- Всѣ̋ка сесия се прѣдставя със своя̌т базов процес.
- Когато потрѣбителя̌т отвори сесия, за нея̨ се пуска процес - базов процес за сесията.
- За изпълнението на разни приложения в рамкитѣ на сесията, този базов процес пуска други процеси.
- Игнорирайки детайли, базовия̌т процес на сесия можете да си го мислите като интерпретатор на команди или като manager на екранът.
- Нишкитѣ (threads).
(.. advanced topic .. за напрѣдна̨ли ..)
- Думата нишка идва като съкращение на изразът нишка на изпълнение (execution thread).
- Нишкитѣ сѫ тѣзи, които се конкурират за "вниманието" на CPU-то.
- Понѣ̋кога сложни програми се нуђая̨т от нѣ̋колко нишки, които се изпълняват едноврѣменно на CPU-то.
- Ако двѣ нишки сѫ част от един и сѫщ процес, то тѣ работя̨т в едно и сѫщо виртуално адресно пространство.
- Процесът може да си го мислите като нишка, но не каква да е, а нишка със собствено виртуално адресно пространство.
- Един процес може да пусне друг процес - друг отдѣлен процес с отдѣлно виртуално адресно пространство.
- Но сѫщо така, един процес може да пусне друга нишка във своето виртуално адресно пространство.
- Новата нишка ще е част от процесът, който я̨ е пусна̨л.
- Тя сѫщо така може да пусне друга нишка в сѫщото виртуално адресно пространство, тоест друга нишка към сѫщия̌т процес.
- Нишкитѣ, принадлѣжащи към един и сѫщ процес, не сѫ изолирани една от друга, понеже ползват общо виртуално адресно пространство.
- Забѣлѣжка. Коректното взаимодѣйствие међу нишкитѣ в един процес изисква специални умѣния у програмистът.
- Владѣенето на multi-threading-ът (много-нишковото програмиране) слѣдва изрично да се обяви в CV-то.
- Ако работата изисква multi-threading, това умѣние се провѣрява на интервютата за работа.
- Disclaimer. Разпрѣдѣлението на работата върху много компютри, разположени близо или далеч един от друг, е отвѫд прѣдмѣтът на бесѣдата.
- (.. скрий ги процеситѣ и нишкитѣ ..) (.. скрий го това по срѣдата на швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Едно врѣме - при IBM/System/360/370, при пакетната обработка и прѣди системата Unix - тѣзи понятия не бѣ̋ха̨ добрѣ опрѣдѣлени.
- ◄► (.. скрий го това по срѣдата ..) (.. свий го ..) (.. разгъни го ..) (.. скрий я̨ шестата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ►► Нѣщо като заключение (.. покажи го заключението ..) (.. разгъна̨то ..)
-
▼▼
Нѣщо като заключение
(.. скрий го ..)
(.. свий го ..)
(.. разгъни го ..)
- ◄► Като заключение: За какво служи виртуалната памет.
- ►► Физическото адресно пространство да е по-голѣ̋мо от виртуалното (.. покажи ..)
-
▼▼
Физическото адресно пространство да е по-голѣ̋мо от виртуалното
(.. скрий ..)
- Такъв е случая̌т при 16-битовитѣ компютри.
- При тѣ̋х виртуалното адресно пространство е твърдѣ малко - само 64 К байта.
- Динамичната прѣадресация към физически адреси може да предостави достѫп до оперативна памет с по-голѣ̋м размѣр.
- В тази бесѣда вече бѣ разгледано MMU-то на PDP-11.
- Тука трѣ̋бва да спомена̨ Intel 8086/8088 - процесоритѣ, използвани в първитѣ персонални компютри на IBM.
- За разлика от PDP-11, MMU-то при 8086/8088 не си поставя други цѣли освѣн разширението на физическото адресно пространство.
- Много-потрѣбителска работа не се осигурява.
- (.. скрий го голѣ̋мото физическо адресно пространство ..) (.. скрий го заключението към швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Голѣ̋мо виртуално адресно пространство (.. покажи ..)
-
▼▼
Голѣ̋мо виртуално адресно пространство
(.. скрий ..)
- Обърнѣте внимание на двѣ ключови думи: голѣ̋мо и виртуално.
- Виртуално адресно пространство е голѣ̋мо.
- Да, то може да е виртуална памет с огромен размѣр.
- Може да събере данни за обработка, много повече от прѣди.
- Прѣди динамичната прѣадресация и MMU-тата толкова данни не можѣха̨ да се побера̨т в оперативната памет.
- Програмистът трѣ̋бваше да се погрижи да ги организира даннитѣ в дисков файл.
- Сега на програмистът ще му е по-лесно. Ще разположи даннитѣ във виртуалната памет и тѣ "наглед" постоянно ще сѫ му под рѫка.
- Обаче това е само улеснение за програмитѣ и за програмиститѣ.
- Природата не може да бѫде излъгана.
- Системния̌т софту̌ер с помощта на MMU-то ще моделира голѣ̋мата виртуална памет върху дискът.
- Ще го прави скрито от програмистът, който нѣ̋ма да има грижата.
- Виртуално адресно пространство е голѣ̋мо.
- Да, то може да е виртуална памет с огромен размѣр.
- Програмата може да е толкова голѣ̋ма, че прѣди динамичната прѣадресация и MMU-тата да не е можѣла да се побере в оперативната памет.
- Програмиститѣ сѫ раздѣляли голѣмитѣ програми на припокриващи се сегменти.
- Върнѣте се да прочетете този подраздѣл.
- Сега програмата вѣроятно ще се събере в голѣ̋мата виртуална памет и програмистът нѣ̋ма да има грижата да я̨ сегментира.
- Обаче това е само улеснение за програмиститѣ.
- Природата не може да бѫде излъгана.
- Системния̌т софту̌ер с помощта на MMU-то ще моделира голѣ̋мата виртуална памет върху дискът.
- Вмѣсто прѣзаређане на програмни сегменти, опрѣдѣлени от програмистът, ще се случва автоматично прѣзаређане на виртуални сраници.
- Всѣки процес си има свое виртуално адресно пространство, и то е виртуално.
- Процесът работи не с реални физически адреси, а с виртуални адреси, които подлѣжа̨т на автоматично динамично прѣобразуване в реални физически адреси от MMU-то.
- Прѣди, без динамична прѣадресация, линкерът трѣ̋бва да настрои произвеђаната от него изпълнима програма (executable) към адресът на раздѣлът в оперативната памет, в който раздѣл executable-ът ще се пусне да се изпълнява.
- Сега, линкерът може да настрои произвеђания̌т от него executable към уговорен фиксиран адрес (обикновено над мѣ̋стото, задѣлено за stack).
- Този прѣдварително уговорен адрес е виртуален.
- Той е адрес във виртуалното адресно пространство за този процес.
- На какъв физически адрес отговаря - за това не трѣ̋бва да се грижим.
- Това ще стане ясно едва при пускане на програмата.
- При различни пускания на програмата физическия̌т адрес може да е различен.
- Фиксиран е виртуалния̌т адрес.
- (.. скрий го голѣ̋мото виртуално адресно пространство ..) (.. скрий го заключението към швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Изолация на процеситѣ един от друг (.. покажи ..)
-
▼▼
Изолация на процеситѣ един от друг
(.. скрий ..)
- Всѣки процес работи във свое виртуално адресно пространство и така е изолиран от другитѣ процеси.
- Бъгава или злонамѣрена потрѣбителска програма не може да пише из паметта на другитѣ процеси или на операционната система, защото нѣ̋ма достѫп.
- Процесът виђа само това, което му се показва в неговото виртуално адресно пространство.
- Към всѣ̋ка страница от виртуалното адресно пространство на процесът достѫпът може да е разрѣшен, да е напълно забранен, или да е само за четене.
- Процесът нѣ̋ма възможност да наврѣди на другитѣ.
- Да не може да се наврѣди на другитѣ - това е основното в много-потрѣбителската работа на компютърът.
- (.. скрий я̨ изолацията на процеситѣ ..) (.. скрий го заключението към швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- Всѣки процес работи във свое виртуално адресно пространство и така е изолиран от другитѣ процеси.
- ►► Динамични библиотеки (.. покажи ги ..)
-
▼▼
Динамични библиотеки
(.. скрий ги ..)
- Върнѣте се да прочетете този подраздѣл.
- Динамични библиотеки. Цѣлия̌т израз е библиотеки с динамично свързване.
- DLLs: Dynamically Linked Libraries.
- Наричани още: shared objects, shared libraries или раздѣляеми библиотеки.
- За функционалността на DLL-итѣ допринася не само динамичната прѣадресация (MMU-тата), но и възможността, която съврѣменнитѣ компютърни архитектури прѣдоставят, компилаторитѣ да генерират само позиционно независим код (PIC: position independent code).
- Една динамична библиотека и един executable си приличат много.
- Резултат сѫ от работата на линкерът.
- Съдържат или код (машинни инструкции - код, изпълним от CPU-то), или данни.
- Мога̨т да се заређат в оперативната памет за изпълнение.
- Обаче от executable може да се стартира процес, а от динамична библиотека не може.
- Един executable обявява на операционната система от коя входна точка да се стартира процесът.
- Една динамична библиотека нѣ̋ма специална входна точка.
- Обръщенията към съдържащитѣ се в нея̨ подпрограми и данни трѣ̋бва да дойда̨т от други програми, а не от операционната система.
- Тѣзи обръщения се свързват и настройват по врѣме на заређането на динамичната библиотека във виртуалното адресно пространство на процесът.
- Когато една динамична библиотека се заређа във виртуалното адресно пространство на процес, нуђаещ се от нея̨, намира ӥ се там мѣ̋сто.
- Ако сѫщата динамична библиотека се зареди във виртуалното адресно пространство на друг процес, тя може да бѫде намѣстена на друг виртуален адрес.
- Двата процеса използват едно и сѫщо копие на динамичната библиотека във физическата оперативна памет.
- Затова е важно подпрограмитѣ от динамичната библиотека да сѫ в позиционно независим код.
- (.. скрий ги динамичнитѣ библиотеки ..) (.. скрий го заключението към швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ►► Виртуални машини (.. покажи ..)
-
▼▼
Виртуални машини
(.. скрий ..)
- Думата виртуален означава симулиран или моделиран, а виртуализация - симулация или моделиране.
- А думата машина означава компютър, разбира се.
- За системата VM/370, която прѣдоставя гостуващи виртуални машини с архитектура, подобна на архитектурата на компютърът-домакин, стана̨ дума тука.
- Идеята за виртуализация на оперативната памет - идеята за виртуална памет, се прѣнася към цѣлия̌т компютър - към цѣ̋лата машина.
- Появява се идеята за виртуална машина.
- На пръв поглед - отсам хоризонтът, трѣ̋бва да се спомена̨т
виртуалнитѣ машини, които симулират-моделират реални машини.
- Реална машина - означава машина, сѫществуваща в харду̌ерно изпълнение.
- Слѣд системата VM/370, вече има много приложен софту̌ер за виртуални машини.
- Има даже софту̌ер, който симулира машина със съвсѣм друга архитектура.
- Напримѣр, виртуална машина с архитектура VAX, работеща на машина-домакин, която не е VAX.
- Виртуалнитѣ машини имат широко приложение
- както за тестване на програми, когато цѣлевия̌т харду̌ер не е наличен,
- така и за мултиплициране, когато един нов мощен модел идва да замѣни стари машини в нѣ̋колко обработки.
- А оттатък хоризонтът, на слѣдващо ниво на абстракция, сѫ
виртуалнитѣ машини, сѫществуващи изцѣ̋ло като софту̌ерна идея, без връзка в никакъв харду̌ер.
(.. Това излиза от темата на настоящата бесѣда ..)
- На първо мѣ̋сто слѣдва да се спомене виртуалната машина на езикът Java - JVM: Java Virtual Machine.
- Тя изпълнява програми на езикът Java.
- Програмитѣ на езикът Java се изпълняват на такава машина.
- За всѣки от езицитѣ за програмиране, които не се компилират, а се интерпретират, може да се изгради съотвѣтна идея за виртуална машина.
- Освѣн Java, такива езици сѫ PERL, Python, PHP, LISP и други.
- На първо мѣ̋сто слѣдва да се спомене виртуалната машина на езикът Java - JVM: Java Virtual Machine.
- (.. скрий ги виртуалнитѣ машини ..) (.. скрий го заключението към швстата бесѣда ..) (.. свий го ..) (.. разгъни го ..) .. към началото ..
- ◄► (.. скрий го заключението ..) (.. свий го ..) (.. разгъни го ..) (.. скрий я̨ шестата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
- ◄► (.. скрий я̨ шестата бесѣда за динамичната прѣадресация ..) (.. свий я̨ ..) (.. посвий или поразгъни ..) (.. разгъни я̨ ..) .. към началото ..
►► .0. [Draft] Хуманната аритметика на компютър (.. покажи я̨ седмата бесѣда ..) (.. разгъна̨то ..) .. към началото ..
- Колкото по̀ остарѣ̋вам, толкова по̀ се вдѣтинѣ̋вам.
- С това ще се упражнявам на JavaScript.
- Ще уча̨ компютърът на сѫщата аритметика, както дѣцата в началното училище.
- May appear in the future: Не е написано още. Я̀ доживѣя̨ да го напиша̨, я̀ не.
▼▼ .0. [Draft] Хуманната аритметика на компютър (.. скрий я̨ седмата бесѣда ..) (.. свий я̨ ..) (.. разгъни я̨ ..) .. към началото ..
-
In development: Не е написано още.
- ◄►
- ◄►
- ◄► (.. скрий я̨ седмата бесѣда за хуманната аритметика ..) (.. свий я̨ ..) (.. посвий или поразгъни ..) (.. разгъни я̨ ..) .. към началото ..
►► .0. Прѣпратки (references) (.. покажи ги ..) .. към началото ..
▼▼ .0. Прѣпратки (references) (.. скрий ги ..)
- christotamarin.blog: Житейска програма
- christotamarin.blog: XT Keyboard Layouts Reference: Клавиатури с разширена кирилица
- christotamarin.blog: Virtual Keyboard and some other tools
- christotamarin.blog: Принципи на моитѣ възгледи за мина̨лото
►► .0. Коментари, въпроси и отговори (comments, Q&As) (.. покажи ги коментаритѣ ..) (.. разгъна̨ти ..) .. към началото ..
▼▼ .0. Коментари, въпроси и отговори (comments, Q&As) (.. скрий ги ..) (.. свий ги ..) (.. разгъни ги ..) .. към началото ..
Ако има въпрос или коментар, на който трѣ̋бва да отговоря̨, ще прѣпиша̨ въпросът или коментарът тука и ще отговоря̨ тука.
- ►► ::christo.tamarin, 2023-04-13 20:34:: The history of IT at a glance (.. покажи тука ..) (.. разгъна̨то ..) (.. покажи във facebook: .. там .. или там ..) .. към началото ..
-
▼▼
::christo.tamarin, 2023-04-13 20:34:: The history of IT at a glance
(.. скрий ..)
(.. свий ..)
(.. разгъни ..)
(.. покажи във facebook: ..
там .. или
там ..)
.. към началото ..
- ◄► Историята на информационнитѣ технологии накратко Този текст не е завършен. Я̀ го завърша̨, я̀ не.
- ►► Програмисти (.. покажи ..)
-
▼▼
Програмисти
(.. скрий ..)
- Смѣ̋та се, че първата програмистка е била Ада Лъвлейс (Ada Lovelace), дъщеря на поетът Байрон и сътрудничка на Чарлз Бабиџ (Charles Babbage).
- Обаче прѣз животът си изпълнение на своя програма тя не е виђала, понеже компютърът на Чарлз Бабиџ не е влѣ̋зъл в дѣйствие.
- Реално първитѣ на свѣтът програмисти сѫ настройчицитѣ на жакардовитѣ тъкачни станове.
- ►► Бази данни (.. покажи ..)
-
▼▼
Бази данни
(.. скрий ..)
- Архиви и библиотеки сѫ първитѣ бази данни.
- Слѣдващия̌т сѫществен момент в развитието е холеритовата техника на фирмата IBM от края̌т на 19-ти и прѣз 20-ти вѣк.
- Бази данни в компютърната ера.
- Първо ще спомена̨ базитѣ данни по йерархичния̌т или по мрѣжовия̌т модел.
- Коболиститѣ (програмиститѣ на COBOL) бѣ̋ха̨ наложили езикът CODASYL.
- Нѣ̋ма май такива нѣща вече.
- Сега всѣ̋ка файлова система може да се смѣ̋та за йерархична база данни.
- Наложи се релационния̌т модел на базитѣ данни и езикът SQL.
- ►► Калкулатори (.. покажи ..)
-
▼▼
Калкулатори
(.. скрий ..)
- Смѣтала̀.
- Едно врѣме във всѣ̋ка класна стая в началното училище (в отдѣленията) имаше голѣ̋мо смѣтало,
- а всѣки второкласник имаше малко смѣтало като учебно пособие.
- Имаше и уроци за работа с такива смѣтала̀.
- Въпрѣки това българското образование се проваляше при усвояването на умѣнията за работа със смѣталата.
- Магазинеритѣ в България смѣ̋таха̨ с химически молив върху амбалажна хартия.
- Амбалажната хартия, с която магазинерът ще ти увие буцата сирене, обикновено съдържаше смѣтката на прѣдишния̌т клиент.
- Не така бѣше в Русия.
- Когато прѣз 80-тѣ ходѣх в командировка в Москва, тамошнитѣ магазинери работѣха̨ срѫчно със смѣтала̀.
- Логаритмична линийка и логаритмични таблици.
- Едно врѣме в гимназиитѣ се учѣхме да смѣ̋таме с логаритмична линийка и логаритмични таблици.
- Тогава това бѣше необходимо за инженерното дѣло.
- На срѣдношколскитѣ олимпиади по математика и физика разрѣшаваха̨ да си носим логаритмични линийки.
- Сега всичко това е out-of-date, остарѣ̋ло, измѣстено от компютритѣ и електроннитѣ калкулатори.
- Механични калкулатори.
- При такъв калкулатор се натискат клавиши и се върти рѫчка.
- Често сѫ снабдени и със звънчета.
- В много филми за старото американско врѣме може да се види, че във всѣки американски магазин или бар има такъв калкулатор като касов апарат.
- Баща ми бѣше счетоводител и имаше на разположение такъв калкулатор.
- Едно завъртане на рѫчката напрѣд - събиране.
- Завъртане назад - извађане.
- Пет завъртания напрѣд - умножаване на пет.
- Имаше брояч на завъртанията.
- Ако искаш да умножиш по пет, но си се засилил и си завъртѣ̋л рѫчката шест пѫти, завърташ веднѫж назад.
- Имаше и начин за извършване на дѣление, но в нашето село никой не знаѣше как става това.
- Електро-механични калкулатори.
- За разлика от чисто механичнитѣ, тѣзи си нѣ̋мат рѫчка, а само клавиши.
- Имат си и електромоторче[та] за въртене на регистритѣ.
- Изполвал съм такъв - нѣмско производство. Много удобен бѣше за работа.
- Електронни калкулатори.
- Тука има вече българска слѣда, даже двѣ такива слѣди.
- Иначе в областта на ΙΤ друга българска слѣда има само при компютърнитѣ вируси.
- Но за тѣ̋х изобщо нѣ̋ма да пиша̨, че ме е срам.
- Първата българска слѣда не е съвсѣм българска, ама все пак.
- На Џон Атанасов баща му още като дѣте роднини го отвели в Щатитѣ.
- Там той се изучил за инженер и се оженил за американка от ирландски произход, учителка по математика.
- А самия̌т Џон бил професор по физика в щатския̌т университет на Айова.
- По врѣме на WW2 той рѣшил да създаде калкулатор за насочване на артилерийския̌т огън, изграден върху материалната база на радиотехниката, т.е. електронен калкулатор.
- Нарѣчен бил ABC - Atanassoff-Berry Computer (Berry бил сътрудник на Atanassoff).
- Войната свършила и работата по калкулаторът била зарѣ̋зана, прѣди той да бѫде завършен.
- Прѣз слѣдващитѣ години във връзка със сѫдебен спор за патенти адвокатитѣ на едната страна по дѣлото изровили информация за ABC.
- Тази информация достигна̨ла до Благовѣст Сендов, слѣд което на случая̌т била придадена гласност и в България, и в свѣтът.
- При ABC за пръв пѫт електроника била използвана за IT.
- Но все пак, това ABC не е било компютър, защото ABC не е бил програмируем.
- ABC е бил калкулатор със специално прѣдназначение.
- Втората българска слѣда в електроннитѣ калкулатори.
- Прохођащата българска електроника прѣз 60-тѣ била на свѣтовно ниво при настолнитѣ електронни калкулатори.
- Построени били заводи в София и Силистра.
- Марката ЕЛКА стана̨ла нарицателно за електронен калкулатор в българския̌т език.
- Разбира се, българската електроника бързо изостана̨ла, защото не можѣла да слѣдва прогресът към калкулаторитѣ џобен формат.
- Тука има вече българска слѣда, даже двѣ такива слѣди.
- (.. скрий ги смѣталата и калкулаторитѣ ..)
- Смѣтала̀.
- ►► Електроника (.. покажи ..)
-
▼▼
Електроника
(.. скрий ..)
- Електрониката е слѣдваща фаза в развитието на радиотехниката, приложение на радио-техниката не само в радиото.
- Радио-техниката (електрониката) се обособила от електро-техниката слѣд изобрѣтяването на електронната лампа (1904).
- Технологичния̌т прогрес е замѣнил електроннитѣ лампи с транзистори (слѣд 1954), основани на полу-проводници (силиций, германий, ..).
- За разлика от електроннитѣ лампи, при полу-проводницитѣ имало мегдан за миниатюризация.
- Появили се интегрални схеми - LSI (Large Scale Integration), послѣ X-LSI (Extra-Large Scale Integration), послѣ XX-LSI, ..
- Сега нано-технологии и XXXX..XX-LSI.
- ►► Компютри (.. покажи ..)
-
▼▼
Компютри
(.. скрий ..)
- Конрад Цузе.
- Конрад Цузе.
- ◄► (.. скрий го коментарът ..) (.. свий го ..) (.. разгъни го ..) (.. скрий ги коментаритѣ ..) (.. свий ги ..) (.. разгъни ги ..) .. към началото ..
- ►► ::author.unknown, 2023-10-25 09:45:: Историческа справка за нашето поколѣние (.. покажи я̨ тука ..) (.. покажи я̨ във facebook: .. Нѣжна е нощта .. България ..) .. към началото ..
-
▼▼
::author.unknown, 2023-10-25 09:45:: Историческа справка за нашето поколѣние
(.. скрий я̨ ..)
(.. покажи я̨ във facebook: ..
Нѣжна е нощта ..
България ..)
.. към началото ..
- Има хора, които сѫ родени прѣз 50-тѣ и 60-тѣ години.
Отгледани сѫ прѣз 60-тѣ години.
Учили сѫ прѣз 70-тѣ години.
Тѣ сѫ се женили прѣз 80-тѣ години.
Работили сѫ прѣз 80-тѣ и 90-тѣ,
много работя̨т и днес ... - Тѣ си промѣниха̨ мирогледът прѣз 90-тѣ.
«Виђаха̨ свѣтлината» прѣз 2000-та.
Бѣ̋ха̨ изненадани прѣз 2010.
И неотказали се прѣз 2020! - Прѣживѣли почти
седем различни десетилѣтия...
два различни вѣка...
двѣ различни хилядолѣтия... - От телефон на дълги разстояния до видео-разговори навсѣ̋къдѣ по свѣтът,
от филмови ленти и slide-show-та до Youtube,
от винилови плочи до online-музика,
от рѫкописни писма до email, WhatsApp и социални мрѣжи.
От слушане на мачове по радиото, гледане на черно-бѣ̋ла телевизия и след това телевизия с висока раздѣлителна способност.
Тѣ ходѣха̨ във видеотеката, а сега гледат Netflix.
Знаѣха̨ как да отпечатат фотокарта,
имаха̨ първитѣ компютри, перфокарти, флопи дискове,
а сега имат гигабайти и терабайти на мобилни телефони или iPad.
Прѣз цѣ̋лото си дѣтство тѣ нося̨т кѫси панталони, слѣд това дълги панталони, оксфордки, бермуди или мини поли, макси поли, клинове, харем и др.
Обуваха̨ филцове, караха̨ ролери, триколки и велосипеди, мотопеди, бензинови или дизелови коли, а сега карат хибриди или 100% електрически скутери, велосипеди, скутери и коли.
Те избѣгна̨ха̨ дѣтски паралич, менингит, едра шарка, грип H1N1 и западнонилска треска. - Да! Такива хора сѫ мина̨ли прѣз много, но какъв прѣкрасен и интересен живот имат!
- Това поколѣние спокойно може да се нарече «бивши пенсионери»,
които сѫ родени в онзи свѣ̋т на 50-тѣ и 60-тѣ години,
имали сѫ аналогово дѣтство
и дигитален живот на зрѣ̋ла възраст.
Тѣ сѫ един вид «Абракадабра». В буквалния̌т смисъл на думата. - Това поколѣние е живѣ̋ло и прѣживѣ̋ло повече от всѣ̋ко друго в историята на човѣчеството във всѣ̋ко измѣрение на животът.
- Именно това поколѣние се адаптира към всѣ̋какви промѣни!
- 👏 Аплодисменти 👏!
За всички прѣдставители на особеното поколѣние,
което бѣше и си остава уникално, независмо от всичко!
Здраве, Радост, Късмет, Доброта и Щастие!💛🍀💜 - ◄►
::christo.tamarin, 2023-10-25 11:05::
два различни вѣка...
Кое е нашето хилядолѣтие?
двѣ различни хилядолѣтия...- Дали това, прѣз което европейцитѣ сѫ открили Америка?
- Или това, прѣз което американцитѣ ще заселя̨т Луната?
- (.. скрий я̨ историческата справка за нашето поколѣние ..) (.. скрий ги коментаритѣ ..) (.. свий ги ..) (.. разгъни ги ..) .. към началото ..
- Има хора, които сѫ родени прѣз 50-тѣ и 60-тѣ години.
- ►► ::christo.tamarin, 2024-04-01 15:34:: Не е била Brigitte Bardot (.. покажи го коментарът ..) .. към началото ..
-
▼▼
::author.unknown, 2023-10-25 09:45:: Не е била Brigitte Bardot
(.. скрий го коментарът ..)
.. към началото ..
- В третата си бесѣда разказах как прѣз лѣ̋тото на 1977, докато карах стаж в Търново, избродирах картинка за тракащ принтер.
- Искаше ми се Brigitte Bardot да е позирала на художникът.
- Но се оказа, че това нѣ̋ма как да е възможно.
- Литографията е рисувана около 1935 от съвѣтския̌т художник Е.А.Кибрик.
- (.. скрий го коментарът ..) (.. скрий ги коментаритѣ ..) (.. свий ги ..) (.. разгъни ги ..) .. към началото ..
- ◄► (.. скрий ги коментаритѣ ..) (.. свий ги ..) (.. разгъни ги ..) .. към началото ..
(.. развернуть все̇ ..) (.. свернуть все̇ ..) .. to the bottom ..
[Draft] Полиномиально о компьютерах
Перевода на русский не будет.
.. в начало ..
(.. show all ..) (.. collapse all ..) .. to the bottom ..
[Draft] About Computers Polynomially
Not available yet - still in development.
.. to the top ..
No comments:
Post a Comment