Отидовме далеку од тоа како се пишува, можеби коментарите за штое е EEPROM и слично да се преместат во друга тема.
Ај нека стојат тука... треба да сечам од местото на кое Toma праша, бидејќи дискусијата се разви од таму па навака, а сепак почна со прашање во врска со пишување.
Освен ако немаш некоја подобра идеја... јас немам во моментов.
Од многу луѓе е прифатена кратенката ROM како кратенка за технологија за складирање и чување на податоци и ја користат за многу различни технолгии, 24XX/32ХХ EEPROM чиповите, nand flash, UFS и eMMC сите се именуваат како ROM. Иако тоа не е технички точно кога таа терминологија се користи од страна на водечките компании во производство на тие технологии останатите само следат.
Многу логично и нормално
.
Единствено Mask ROM (MROM) е буквално reed only memory, се програмира за време на производството во фабриката, потоа само се чита од него.
Ако станува збор за истата работа, јас ги знам како OTP (One Time Programmable) ROM-ови (чипови).
Не мислев на тоа дека на HDD се запишуваат податоците консеквентно на секоја локација една по друга.
На HDD главата мора да ги помине сите предходни сектори пред да дојде до одреден сектор и да го прочита или запише таму, како се бираат секторите зависи од повеќе работи. RAM (кратенката од старт нема врска со функцијата) можеш директно да пристапиш до одредена локација. Тоа е глобално и просто кажано, за разликите помеѓу RAM и HDD има цели книги напишано.
Ако мислиш на тоа дека главата лебди над сите останати сектори, па „сакала нејќела“ ги „поминува“, да, тоа е точно.
Но, ако мислиш дека мора да ги „прочешла“ сите останати сектори додека дојде до оној од кој е зададена команда да исчита, не, ова е неточно.
Не постои CHS конотацијата за џабе (Cylinder, Head, Sector), за да знае дискот (главите) од кој сектор, кој цилиндер и која глава треба да чита. Целата „процедура“ за исчитување на определен податок од диск оди некако вака (од прилика).
1) Некој програм му вика на оперативниот систем „мене треба овој фајл да ми го исчиташ во RAM“. Оперативниот систем му враќа „ОК, ај да видам дали може да ти угодам“.
2) Оперативниот систем ја гледа FAT табелата на дискот и гледа дали го има фајлот кој програмот го бара запишано на диск. Ако го има, на драјверот за исчитување на податоци од диск му вика „слушај ваму, мене ми треба овој фајл, ај жити све, види дали може да го исчиташ“. Драјверот враќа „ај ќе пробам“.
3) Е сега, натаму комуникацијата е прилично low level и веќе (скоро) никаква улога нема оперативниот систем, скоро се е оставено на чиповите и нивните хардверски протоколи за комуникација, но од прилика, некако вака оди.
3-а) Southbridge-от/PCH-то е одговорно за оваа работа. Преводот на „мене ми треба овој фајл“ во „исчитај го овој, овој и овој податок од дискот“ го прави тој.
3-b) Е сега, дискот треба да знае што да прави со оваа команда. Он знае дека треба да исчита определена мемориска локација, но чипсетот не може да знае која, тоа е работа на дискот, нема што он да му се меша во неговата работа
.
Е сега, мало појаснување. CHS нотацијата е измислена бидејќи порано (уште на времето, кога прв пат се измислува IBM PC стандардот, во 80-тите од претходниот век) микроконтролерите за дисковите биле прилично „глупи“ (денешна гледна точка), па не можеле баш се да обработат и одговорен за задавање на CHS командата практично бил чипсетот, а на електрониката на дискот практично му останувала само задачата да ја преведе CHS нотацијата во контролни сигнали за главата/главите. На овој принцип комуницира IDE стандардот. SCSI стандардот не комуницира на овој начин, но затоа бил многу поскап како стандард (мислам на чиповите со кои треба да работи SCSI) и затоа никогаш не стана mainstream во PC-ињата. Се користеше за многу други работи, но во класично Home PC, не. Во сервери, да.
Да се вратам назад. Затоа е направен SATA стандардот (една од причините), за да не мора CHS нотацијата да ја обработува чипсетот, туку дискот, т.е. да се препушти баш целата работа на дискот. Ова вака требало да биде уште во старт, но, тогаш дисковите ќе чинеа колку цел компјутер, само поради микроконтролерот кој ќе мора се ова да го обработи... и затоа е направен овој компромис.
Е сега, кога дискот веќе знае да чита само команди за „исчитај ова и ова“ и сам си обработува се (CHS и се останато), значи он треба да го преведе се ова во CHS и да и ја даде оваа команда на главата/главите... и ова треба да го направи, па... голем број на пати, бидејќи скоро ниеден фајл не е 512 бајти голем (можеби на времето биле и толкави, но сега веќе се прилично прилично големи библиотеките).
Практично, преведувањето на CHS командата се сведува на пресметка на јачината на електричните сигнали (напон, струја, што и да е) со која геометриски треба определена глава да се позиционира над определена локација на плочите од дискот. Не е за џабе дадено името disk geometry за вкупниот број на цилиндри, глави и сектори. Со помош не овие три параметри определена е целата геометрија на еден диск.
3-c) Откако ќе исчита и врати се што треба на чипсетот од податоци, он враќа се назад кон драјверот, драјверот кон оперативниот систем (поточно кернелот), а овој пак load-а се што треба во RAM и му вика на програмот „бујрум, од таа до таа мемориска адреса е она што го бараше од мене“.
Ова е симплифицирано објаснување и не е баш сосема точно, но од прилика, вака одат работите.