Cum să operați un computer fără un sistem de operare? [duplicat] (Inginerie software, Sisteme De Operare)

abhishek a intrebat.

Cum poate fi folosit un computer atunci când nu există un sistem de operare?

De ce instrumente sau cunoștințe am nevoie pentru a face acest lucru?

Trebuie să dau toate comenzile în binar pentru a utiliza resursele hardware ale computerului, cum ar fi un monitor?

Comentarii

  • În legătură cu acestea: Cum funcționează… sistemele de operare… fără a avea un sistem de operare în care să funcționeze? –  > Por mouviciel.
  • Încercați să programați un microcontroler (de exemplu, orice placă Arduino). –  > Por SK-logic.
  • Studiați mai multe sisteme de operare cu software liber (Linux, Hurd, …) astfel încât să vă uitați în codul lor sursă. Vezi și osdev.org și citiți Sistem de operare wikipage. –  > Por Basile Starynkevitch.
  • Un sistem de operare este, practic, doar o bibliotecă/aplicație ca orice altă aplicație. Un sistem de operare nu este necesar pentru a controla hardware-ul calculatorului, dar face viața fooooooarte ușoară pentru dezvoltatori. Microcipurile PIC sunt doar unități centrale de procesare pe care pasionații (și destule companii) le folosesc pentru aplicații electronice. Pentru majoritatea cipurilor, în cel mai bun caz, puteți găsi biblioteci care să implementeze funcționalități asemănătoare sistemului de operare. Dar, în mod obișnuit, aproape toată lumea le programează pur și simplu folosind C de nivel foarte scăzut. Nu este nevoie de un sistem de operare. –  > Por Dunk.
  • @Dunk: Îmi place foarte mult prima ta frază. Unii oameni o fac să sune ca și cum sistemele de operare ar fi creaturi magice care scapă înțelegerii simplilor muritori. Nu sunt așa. Definiția mea preferată a sistemului de operare este de Dan Ingalls în cartea Principiile de proiectare din spatele Smalltalk: „Un sistem de operare este o colecție de lucruri care nu se încadrează într-un limbaj. Nu ar trebui să existe unul.” –  > Por Jörg W Mittag.
3 răspunsuri
celebrugarkin

În cazul în care nu există un sistem de operare trebuie să programezi direct procesorul folosind un limbaj pe care acesta îl înțelege. Asta nu se referă doar la CPU, ci și la altele, cum ar fi procesoarele pentru plăci grafice, procesoarele pentru plăci de sunet, etc. Fiecare procesor are un fel de limbaj de bază pe care îl poate înțelege numit set de instrucțiuni. Seturile de instrucțiuni variază de la un model de procesor la altul și constau în adresarea memoriei, controlul fluxului, instrucțiuni logice și aritmetice. Operațiile de nivel superior sunt alcătuite din aceste instrucțiuni de bază. Codul scris cu ajutorul seturilor de instrucțiuni se numește cod mașină.

De aici se ajunge la limbaje de asamblare, , care sunt, din nou, specifice pentru o anumită arhitectură de procesor și care, de obicei, se raportează puternic la instrucțiunile procesorului. Acestea fac scrierea codului mai ușoară pentru oameni și sunt deja considerate limbaje de programare, deși de nivel scăzut. Codul de asamblare este tradus în limbaj de mașină cu ajutorul unui asamblorator.

Așadar, acestea două sunt ceea ce trebuie să știți pentru a începe să programați direct calculatoare. Învățați setul de instrucțiuni și limbajul de asamblare al procesoarelor specifice pe care le aveți la îndemână și cum să construiți operații semnificative folosind aceste instrucțiuni de bază. Puteți construi unele lucruri complexe folosind doar un asamblor, inclusiv programe grafice, de exemplu, vedeți http://www.floodyberry.com/asm_toys/.

De aici, totul începe să se împletească în straturi, toate acestea oferind abstracțiuni și API-uri la nivel inferior: limbaje de nivel superior, drivere, nuclee, sisteme de operare și cadre de lucru, până la aplicații client. Toate aceste coduri de nivel superior se traduc în final în cod mașină, utilizând compilatoare și interpretoare, , astfel încât procesorul să poată înțelege ce trebuie să facă.

Comentarii

  • Ați cam menționat acest lucru, dar majoritatea oamenilor ar folosi C în locul limbajului de asamblare. Dacă o companie produce cipuri de tip CPU, atunci devine imperativ să furnizeze un compilator C care să le susțină cipul pentru a convinge oamenii să cumpere cipul. –  > Por Dunk.
  • Scuzați-mă, dar nu înțeleg ce legătură are un sistem de operare cu un limbaj de programare. Eu am programat sisteme embedded în C cu și fără sistem de operare. La fel și cu limbaj de asamblare. Deci, este posibil să programezi un procesor direct cu un sistem de operare? (În prezent, facem acest lucru pe sistemul nostru încorporat). –  > Por Thomas Matthews.
  • @famousgarkin, (presupunând că nu există un sistem de operare sau vreun bios), vrei să spui că dacă am un fișier exe care imprimă „hello world” pe ecran, atunci ar trebui să pornesc computerul, să dau procesorului o comandă binară (în conformitate cu setul său de instrucțiuni) pentru a sări la locația de memorie specifică în care este stocat fișierul exe pe hard disk și să îl încarce în memoria principală, să îl execute și apoi să folosească grafica video pentru a imprima rezultatul pe ecran și, în final, aș vedea „hello world”. –  > Por abhishek.
Ruslan Gerasimov

Este posibil să scrieți cod fără niciun sistem de operare, să îl puneți pe hard disk, pe unitatea optică sau pe unitatea USB, la o anumită adresă și să îl executați. Este, de asemenea, posibil să executați un astfel de cod din rețea (opțiunea de pornire în rețea).

De asemenea, este posibil să rulezi codul ca o extensie BIOS, ei bine, de fapt, CPU-ul sare la codul utilizatorului și nici BIOS-ul, nici sistemul de operare nu funcționează, dar codul utilizatorului da.

Iată câteva exemple de plăci PCI de securitate rusești, care își execută propriul program înainte ca orice sistem de operare să poată prelua controlul. Pe scurt, plăcile servesc la indentificarea și autentificarea utilizatorilor și rulează interfețe grafice, pot funcționa cu sisteme de fișiere etc.

Comentarii

  • Mulțumesc pentru că ați menționat bootarea prin rețea –  > Por abhishek.
Thomas Matthews

Calculatoarele nu au nevoie de sisteme de operare, indiferent de limbă. (Computerele rulează pe cod nativ, indiferent dacă există sau nu un sistem de operare).

În sistemele încorporate, există două modele fundamentale: 1) Munca se finalizează într-o întrerupere, iar timpul rămas se află într-o buclă de fundal. 2) Munca se finalizează în bucla de fundal, iar întreruperile sunt utilizate pentru activități rapide (cum ar fi incrementarea cronometrelor și I/O).

Există cazuri în care un procesor execută codul în memoria sa {read-only}, apoi se oprește.

Rețineți că PC-urile de birou nu sunt singurele calculatoare. Cuptoarele cu microunde, mașinile de spălat vase și telecomenzile de la televizor au toate computere în ele; la fel ca și mașinile moderne. Unele platforme sunt prea mici pentru a considera că au un sistem de operare (cum ar fi cuptorul cu microunde sau mașina de spălat vase), în timp ce platformele mai mari au sisteme de operare în timp real (RTOS), cum ar fi imprimantele și automobilele.

În ceea ce privește instrumentele, aveți nevoie de un sistem de compilare care poate lua un limbaj și îl poate compila pentru procesorul sistemului țintă. Trebuie să introduceți cumva acel executabil în platformă. Un depanator „la distanță” ar fi, de asemenea, util. Acestea sunt instrumentele de bază. Le puteți găsi într-un singur IDE sau puteți obține diferite părți de la diferiți furnizori. În general, instrumentele dvs. depind de procesorul țintă. Dacă platforma dvs. țintă este un controler PIC, atunci un IDE care construiește programe pentru un procesor Pentium nu vă este de nici un folos.

Comenzile către depanator sau monitor în binar sunt de școală veche. Majoritatea „monitoarelor” primesc comenzi printr-un port terminal și includ adesea secțiuni de „ajutor” pentru atunci când uitați lista de comenzi sau sintaxa. În timpurile moderne, binarul este utilizat în principal pentru setarea și ștergerea biților din registrele hardware sau a câmpurilor din protocoalele foarte bine împachetate. Binarul nu este prietenos și nu este eficient. Așa că, în vremuri în care este nevoie de a produce cod eficient, binarul a fost dat la o parte.