Laboratorium, SO2 instrukcja 9

background image

Instrukcja do laboratorium Systemów Operacyjnych

(semestr drugi)

wiczenie dziewi te

Ć

ą

Temat: Niskopoziomowa obs uga terminali

ł

Opracowanie:

mgr in . Arkadiusz Chrobot

ż

background image

Wprowadzenie

1. Terminale

Ka dy

ż

system komputerowy jest wyposa ony

ż

w pewną liczbę urz dze

ą

ń

przeznaczonych do komunikacji z u ytkownikiem

ż

lub innymi komputerami.

Mianem „terminal” okre la

ś

się najcz

ciej

ęś

monitor i klawiatur ,

ę choć mo na

ż

tym terminem okre li

ś ć również takie urz dzenia

ą

jak modem i drukarka.

W przypadku systemów uniksowych okre la

ś

się tak również protokół terminala

okre laj cy

ś

ą

sposób obs ugi

ł

danego urz dzenia

ą

przez system operacyjny i część

systemu obs uguj c

ł

ą ą urz dzenia

ą

interakcji z u ytkownikiem.

ż

Istnieje zbiór

funkcji wchodz cych

ą

w sk ad

ł

API, które umo liwiaj

ż

ą programom u ytkownika

ż

sterowanie zachowaniem terminali. Z ka dym

ż

terminalem są zwi zane

ą

dwie

kolejki, wej ciowa

ś

i wyj ciowa,

ś

które stanowią rodzaj buforów j dra

ą

na znaki,

które mają zostać zapisane na ekran, b d

ą ź które zosta y

ł pobrane z klawiatury.

Ka dy

ż

terminal

mo e

ż

pracować

w

dwóch

trybach:

kanonicznym

i niekanonicznym. W pierwszym trybie znaki przeczytane lub zapisywane na
terminal są przetwarzane grupami, które ko cz

ń

ą znaki nowej linii, ko ca

ń

linii,

lub ko ca

ń

pliku. Ponadto niektóre znaki mają specjalne znaczenie, np.: mogą

powodować skasowanie poprzedzaj cego

ą

je znaku. W trybie niekanonicznym

program mo e

ż okre li

ś ć samodzielnie jakimi porcjami mają być czytane i pisane

dane na terminal, oraz które znaki b d znakami

ę ą

kontrolnymi.

2. Wybrane funkcje i struktury danych

Podstawową strukturą danych wykorzystywaną w obs udze

ł

terminali jest

struktura termios. Standardy uniksowe gwarantuj ,

ą

e

ż

b d

ę ą się w niej

znajdowa przynajmniej nast puj ce pola:

ć

ę

ą



c_iflag – pole okre laj ce flagi trybu wej cia,

ś

ą

ś



c_oflag – pole okre laj ce flagi trybu wyj cia,

ś

ą

ś



c_cflag – pole okre laj ce flagi trybu sterowania,

ś

ą



c_lflag – pole okre laj ce flagi trybu lokalnego,

ś

ą



cc_t c_cc[NCCS] – tablica okre laj ca,

ś

ą

które znaki są zwi zane

ą

z funkcjami

kontrolnymi.

Uwaga:

Niektóre terminale mogą definiować w asne

ł

pola w tej strukturze, zwi zane

ą

np.

z

obs ug

ł

ą

kolorowych

wy wietlaczy,

ś

dlatego

przy

manipulacji

ustawieniami

terminala

nale y

ż

przeczytać

jego

bie

ce

żą

ustawienia,

zapami ta

ę ć je w osobnej zmiennej, a nast pnie

ę

zmodyfikować odpowiednie

pole struktury termios przy pomocy odpowiednich sta ych

ł

i operatorów

bitowych, a nast pnie

ę

wywo a

ł ć funkcję zmieniaj c

ą ą zachowanie terminala.

2

background image

Przed

zako czeniem

ń

program

powinien

przywrócić

domy ln

ś ą

obs ug

ł

ę

terminala.



funkcja isatty() – sprawdza, czy podany deskryptor pliku odnosi się do
pliku urz dzenia terminala.

ą



funkcja ttyname() – zwraca nazwę pliku terminala do której odnosi się
deskryptor.



funkcja tcgetattr() – pobiera bie

ce

żą

atrybuty terminala zwi zanego

ą

z podanym deskryptorem pliku i zapisuje je do struktury termios.



funkcja tcsetattr() – ustawia

dane

żą

atrybuty terminala zwi zanego

ą

z podanym deskryptorem pliku. Nale y

ż zauwa y ,

ż ć

e

ż stan tych atrybutów

nie zmieni się po zako czeniu

ń

program i je li

ś

nie przywrócimy domy lnej

ś

procedury obs ugi

ł

terminala mo emy

ż

zak óci

ł

ć pracę innych programów

wspó pracuj cych z tym samym terminalem.

ł

ą



makro VMIN – ma znaczenie tylko w trybie niekanonicznym, okre la

ś

miejsce w tablicy cc okre laj ce

ś

ą

liczbę bajtów, która musi się znaleźć

w kolejce wej ciowej zanim zostanie zako czona operacja odczytu.

ś

ń



makro VTIME – ma znaczenie tylko w trybie kanonicznym, okre la

ś

miejsce

w tablicy cc, okre laj ce

ś

ą

jak d ugo

ł

b dzie

ę

czekał system zanim zako czy

ń

operacje wej cia. Jednostk czasu jest 0,1 sekundy.

ś

ą

Szczegó owy

ł

opis wszystkich funkcji i struktur danych zwi zanych

ą

z obs ug

ł

ą

terminali

znajduje

się

w

podr czniku

ę

systemowym

(man

termios)

i w dokumentacji biblioteki glibc: „The GNU C Library Reference Manual”
autorstwa Sandry Loosemore, Richarda Stallmana, Rolanda McGratha,
Andrew Orama i Urlicha Dreppera.

Zadania

1. Napisz program, który sprawdzi, czy z deskryptorem standardowego wej cia

ś

(STDIN_FILENO lub wartość 0) jest zwi zany

ą

terminal. Je li

ś

tak, to program

powinien wypisać nazwę pliku urz dzenia

ą

tego terminala, oraz kilka jego

bie

cych ustawie .

żą

ń

2. Napisz program, który wy czy

łą

echo, czyli wypisywanie znaków wprowadzonych

z klawiatury na ekran. Po ponownym uruchomieniu program powinien
przywróci echo.

ć

3

background image

3. Napisz program demonstruj cy

ą

obs ug

ł

ę terminala w trybie niekanonicznym

(Mo e

ż

to być np. program posiadaj cy

ą

menu, które jest uaktywnione

naci ni ciem klawisza, bez konieczno ci potwierdzania klawiszem Enter).

ś ę

ś

4


Wyszukiwarka

Podobne podstrony:
Laboratorium, SO2 instrukcja 6
Laboratorium SO2 instrukcja 1
Laboratorium SO2 instrukcja 2
Laboratorium SO2 instrukcja 9
Laboratorium, SO2 instrukcja 7
Laboratorium, SO2 instrukcja 1
Laboratorium, SO2 instrukcja 8
Laboratorium SO2 instrukcja 4
Laboratorium SO2 instrukcja 10
so2-laboratorium SO2 instrukcja 7
so2-laboratorium SO2 instrukcja 8
Laboratorium SO2 instrukcja 3
Laboratorium, SO2 instrukcja 5
Laboratorium, SO2 instrukcja 6
laboratorium zadanie 4 instrukcja
laboratorium zadanie 2 instrukcja
laboratorium zadanie 2 instrukcja
istan Laboratorium, BHP, Instrukcje-Stanowiskowe
sprawozdanie HP5 - OgarnijTemat.com, SiMR inżynierskie, Semestr 5, PNHiP, LABORATORIUM, SPRAWKA i IN

więcej podobnych podstron