Cunoaște Intuit, prelegerea, dispozitive, terminale și procese

terminal de linie

La fel ca și conceptul de „dispozitiv“ desemnează un dispozitiv și extern - „bucată de fier“, iar reprezentarea sa logică în cadrul sistemului, termenul „terminal“ se aplică dispozitivelor de primul tip descris mai sus și la dispozitivele speciale de al doilea tip, denumit tty. A dat comanda ls / dev / * tty *. putem găsi, uneori, o multitudine de dispozitive cu numele, inclusiv un TTY. Toate aceste dispozitive - terminale. sau linia terminală ([6] pe linia terminalului se spune în detaliu, ne vom ne limităm la o examinare destul de superficial, suficient pentru a se asigura că utilizatorul nu apare în impas lucrarea). Din punctul de vedere al liniei terminale UNIX - nu doar dispozitive. octeți transferați: unele dintre aceste octeți (de exemplu, ne-am acoperit în capitolul 7, eliminarea simbolurilor) au o semnificație specială. De fapt, atunci când scrieți în simbolul terminalului șterge intrarea curentă (de obicei ^ U) se ocupă de sistemul în sine (a se citi: linia terminale), și programul. care este în așteptare pentru introducerea de date, aceasta nu se observă. interfață linie de comandă este determinată de linia de terminal în mod linie. tot ceea ce este introdus de către utilizator, este procesat și stocat într-un tampon special, până când vine NEWLINE. După aceea, întregul buffer este transmis este de așteptat să intre în program (shell. De exemplu), iar linia începe să se umple unul nou.

Comportamentul liniei terminale nu depinde de capacitățile terminale. Această proprietate a sistemului, așa-numitul modul de transfer al datelor procesate (modul fierte). În unele cazuri, de exemplu, dacă un program dorește să se ocupe în mod independent, toate caracterele tastate, linia de terminale pot fi traduse în modul „brut“ (modul brut). Diverse setări terminale ieșiri de linie de comandă stty -a (sau stty --all). Printre alte setări linii sunt, de exemplu, a transforma o translație șir de caractere (LF) și un retur de car (CR) unul in altul prin intrare și ieșire. În UNIX, se presupune că într-un text de linii de fișier terminat cu un caracter - New Line. NL. Acest simbol este de obicei echivalent cu caracterul NEWLINE, LF. Intre timp, multe terminale în derivarea liniilor necesare ca o mașină de scris, două simboluri. mai întâi - CR, apoi - LF. Uneori terminale de un singur caracter, dar CR. Pe de altă parte, dacă introduceți de la tastatură, tasta Enter poate trimite și LF, și CR, și CR + LF. Unele setări stty determina ce ar trebui să fie înțeles ca un UNIX NL pe intrare de la tastatură și de ieșire la ecranul terminalului curent.

Emisiunea stty -a ne găsim comanda familiar: ^ C. ^ D. ^ U, și așa mai departe. D. Ce înseamnă ele? comanda stty vă permite să suprascrie cele mai simple comenzi șterge textul de intrare: Ștergeți caracterul (.? șterge, de obicei, este - ^ H sau ^), cuvânt (de obicei, werase ^ W.) și întreaga linie (de obicei, ucide ^ U.). De ce este necesar? De exemplu, Volker Craig se întoarce terminalul ^ U, apăsând pe săgeata dreapta. Aș dori să văd acest simbol al programului transmis, și nu trebuie prelucrate linia terminală. Comanda Comanda stty kill ^ E suprascrie pentru a șterge întregul șir de intrare la Ctrl + E. Notă: ^ E în argumentele de utilitate - aceasta este două personaje, stty facilitează munca noastră, în urma acordului privind reprezentarea secvențelor de evacuare.

Un alt grup operează linia de comandă terminală. de exemplu, dacă dorim să oprim afișarea textului voluminos (uitând de timp pentru a profita de mai mult de utilitate sau mai puțin), puteți utiliza comanda de oprire (de obicei ^ S): se indică sistemului că terminalul este temporar primește datele, și o altă operațiune de scriere este completă atâta timp cât linia nu primește o comandă de start (^ Q). Dacă un anumit program a citit toate datele din dosar, următoarea operație de citire este complet cu EOF de diagnosticare (End Of File), care programul ar trebui să se ocupe. Dacă citirea este din terminal. că programul este imposibil de distins de citire dintr-un fișier, terminalul EOF liniei de comandă (de obicei ^ D) conduc la același rezultat.

Al treilea grup de comandă este de o importanță deosebită. Este o modalitate de a prezenta un program pentru a face schimb de date cu terminalul nostru. Semnalele de la tastatura. Așa cum sa discutat în [35]. semnal - este o scurtă de mesaje între procese în mod UNIX. Conform logicii semnalului la nivel de sistem se aseamănă cu întrerupere la hardware-ul. Procesul poate ignora semnalul. intercepta (mâner-l), sau de a părăsi sistemul de procesare. Procesul de semnal poate proveni dintr-un alt proces. și pot fi generate la adâncime. Semnalele nu sunt foarte multe; pentru a indica diferite în ceea ce privește expeditorului semnalului. situații folosind semnale diferite. În particular, linia de comandă terminală intr (de obicei ^ C) este utilizat pentru a opri complet procesul, care preia semnalul INT (de întrerupere. Se întrerupe) proces. a cărui intrare standard este asociată cu acel terminal.

Procese și semnale

doar un singur proces poate fi conectat printr-o linie specifică C terminal de intrare. Acest proces se numește activ și, în plus față de proprietățile pentru a primi semnale de la tastatură, numai poate citi date de pe acesta. Celelalte procese de utilizator pot rula doar pe terminalul de ieșire. acestea ar trebui să intre din altă parte. Aceste procese numite de fundal. În cazul în care procesul. a primit INT semnal. nu-l va ocupa, sistemul se oprește funcționarea acestuia. Atunci când acest lucru devine părintele activ. și m. g. până la daemon getty. care este primul proces. conectat la intrare de la linia de borne. Pentru mai multe informații cu privire la acest getty vor fi discutate mai jos, ci despre linia de terminale. grup de procese și așa mai departe. pot fi găsite în [6].

Dacă doriți să opriți procesul în care, indiferent de cost, este necesar să se utilizeze un semnal QUIT (quit. De obicei, ^ \), care nu este de obicei prins. Procesul poate fi suspendat prin intermediul STOP (susp. ^ Z) semnal. Apoi se oprește temporar, nu va mai fi activ și nu va funcționa până la până când primește un semnal de CONT (nu o tastatură pentru că, după ce a încetat să mai fie activ, va avea acces la el, și multe dintre scoici au, de asemenea, comanda fg și BG pentru la procesul suspendat a continuat să lucreze ca un activ sau ca fundal, respectiv).

După cum sa menționat deja, primul sistem se conectează la terminalul de utilitate sistem Getty. a cărui sarcină - pentru a determina tipul de terminal și parametrii de intrare / ieșire, pe linia atunci când are loc activitatea. ajusta linia și poate cauza un utilitar de sistem, care se va ocupa de afacerile utilizatorului (de obicei - conectare utilitate pentru autentificarea utilizatorului). Reglați linia nu este atât de simplu, în cazul în care acesta este conectat la modem. și dispozitivul terminal real poate fi orice terminal al utilizatorului. Când lucrarea este terminată cu linia, modemul „închide“ și de lucru cu linia de program primește un semnal HUP (de la Hang UP). La primirea sistemului de semnal trebuie să uite toate vechile setările liniei terminale (utilizator -Asta deconectat) și reporniți Getty. Termenii alerga getty și alte entități care operează terminale linie indicate în / etc / inittab (USG la cuib) sau / etc / ttys (pentru prize BSD). Acest lucru a dat naștere la un alt acord UNIX. în cazul în care daemon primește un semnal HUP. trebuie să reporniți și re-citit configurația; De exemplu, dacă am schimbat fișierul de configurare inetd. el va observa aceste modificări după killall -HUP inetd.

În cazul în care computerul are un port serial de date (pe IBM PC, el răspunde de obicei RS-232 standard), este destul de potrivit pentru terminal. Prin urmare, în / dev este dispozitivul terminal corespunzător cu un nume ce conține subșir tty. în Linux, de exemplu, acesta va fi numit ttyS0. si FreeBSD - ttyd0. În FreeBSD, de altfel, acesta oferă un alt dispozitiv. cuaa0. care funcționează de fapt același port, dar nu procesează semnalele de date transmise și nu transmite; într-un cuvânt, acesta funcționează în „prime“. Rar porturi seriale din sistem pentru mai mult de patru (de obicei, două dintre ele). De unde, atunci, această sumă de la emiterea ls / dev / * tty *?

UNIX-sistem modern bazat pe IBM PC-ul nu a inclus un astfel de dispozitiv extern. ca un terminal. Da, este și nici un motiv: în unitatea de sistem și include o tastatură și un monitor. capabil să afișeze grafică, și, prin urmare, informațiile textuale. Cu toate acestea, este destul de independent de dispozitiv. apăsarea unei taste de pe tastatură este procesat de către dispozitiv special numit un controler de tastatură. iar monitorul afișează starea adaptorului grafic. Cu toate acestea, o parte a sistemului de bază, denumit în continuare consola virtuală. Acesta îndeplinește funcțiile terminalului. de lucru cu un monitor și tastatură ca un singur dispozitiv. Sub consola într-un terminal UNIX este menit (probabil nu singurul) pentru care sistemul se afișează diagnosticul la locul de muncă, și din care poate fi controlat. Atribuirea o consolă virtuală pentru utilizator ședinței de la tastatură și monitor IBM PC ca un terminal pentru. și UNIX „cred“ că astfel de terminal are întotdeauna. Și pentru comoditatea de console virtuale sunt de obicei organizate mai multe, apăsând pe Linux sau FreeBSD Alt + F6 va duce la faptul că va fi ca și în cazul în fața terminalului cu numărul 6 și va începe să lucreze cu el, și a lansat pe dispozitivul / dev / tty6 (pentru FreeBSD - / dev / ttyv6) programul getty detectează activitatea de pe acest dispozitiv.

articole similare