Încărcare în lanț - Chain loading
Încărcarea în lanț este o metodă utilizată de programele de computer pentru a înlocui programul în curs de executare cu un program nou, utilizând o zonă de date comună pentru a transmite informații din programul curent către noul program. Apare în mai multe domenii de calcul.
Încărcarea în lanț este similară cu utilizarea suprapunerilor . Spre deosebire de suprapuneri, totuși, încărcarea în lanț înlocuiește integral programul care se execută în prezent. Suprapunerile înlocuiesc, de obicei, doar o parte din programul care rulează. La fel ca utilizarea suprapunerilor, utilizarea încărcării în lanț crește sarcina I / O a unei aplicații.
Încărcarea lanțului în programele de boot boot
În programele de gestionare a boot-ului sistemului de operare , încărcarea în lanț este utilizată pentru a trece controlul de la managerul de boot la un sector de boot . Sectorul de încărcare țintă este încărcat de pe disc , înlocuind sectorul de încărcare în memorie din care managerul de boot a fost bootstrappat și executat.
Încărcarea lanțului în Unix
În Unix (și în sistemele de operare asemănătoare Unix ), apelul de sistem exec () este utilizat pentru a efectua încărcarea în lanț. Imaginea programului procesului curent este înlocuită cu o imagine complet nouă, iar firul curent începe executarea acelei imagini. Zona de date comună cuprinde variabile de mediu ale procesului e , care sunt păstrate în cadrul apelului de sistem.
Încărcarea lanțului în Linux
În plus față de încărcarea lanțului la nivel de proces exec () Linux acceptă apelul de sistem kexec () pentru a înlocui întregul nucleu al sistemului de operare cu o versiune diferită. Noul kernel pornește ca și când ar fi fost pornit de la pornire și nu se păstrează niciun proces de rulare.
Încărcarea lanțului în programele BASIC
În programele BASIC , încărcarea în lanț este competența CHAIN declarației (sau, în Commodore BASIC , LOAD declarația), ceea ce face ca programul curent să fie terminat și programul înlănțuit să fie încărcat și invocat (cu, pe acele dialecte ale BASIC care îl susțin, un parametru opțional care specifică numărul de linie de la care urmează să înceapă execuția, mai degrabă decât valoarea implicită a primei linii a noului program). Zona de date comună variază în funcție de dialectul de bază al BASIC-ului utilizat. Pe BBC BASIC , de exemplu, numai un subset specific al tuturor variabilelor sunt păstrate într-un CHAIN. Pe alte elemente de bază, COM declarația poate fi utilizată împreună cu CHAIN pentru a specifica ce variabile trebuie păstrate ca date obișnuite într-o operație în lanț.
Încărcarea în lanț permite programelor BASIC să execute mai multe coduri de program decât s-ar putea încadra în programul disponibil și în memoria variabilă. Aplicațiile scrise în BASIC ar putea fi, așadar, mult mai mari decât dimensiunea memoriei de lucru, printr-un set de programe cooperante care CHAIN se deplasează între ele în timp ce fluxul de programe se deplasează în cadrul aplicației generale.
Încărcarea lanțului în programele FORTRAN
Multe versiuni ale Fortran includ o CALL LINK declarație care efectuează încărcarea în lanț, păstrând conținutul stocării COMUNE . Acest lucru nu este același lucru cu LINK subrutina fără legătură din GNU Fortran .
Încărcarea lanțului în OS / 360
OS / 360 și succesorii utilizează XCTL macrocomanda (pentru "controlul transferului") pentru încărcarea în lanț. Datorită gestionării memoriei sistemului de operare, acest lucru poate duce sau nu la înlocuirea codului programului apelant în memorie.
Vezi si
- CHAIN (directiva CONFIG.SYS) (lanț care execută mai multe fișiere CONFIG.SYS în DR-DOS)
Referințe
- „încărcare în lanț” . Manual GNU GRUB .
- Orlando Lee Stevenson (decembrie 1985). „Înlănțuirea programului Commodore” . CALCULA! (67): 114.
- Raymond, Eric Steven. "Multiprogramare: Taxonomie a metodelor IPC Unix: Wrappers și Bernstein Chaining" . Arta programării Unix .