Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 241

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ клиСнтский процСсс ΠΎΡ‚ΠΊΡ€Ρ‹Π» сСрвСрный ΠΊΠ°Π½Π°Π» FIFO, ΠΎΠ½ создаСт собствСнный FIFO с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ для считывания Π΄Π°Π½Π½Ρ‹Ρ… с сСрвСра. Волько послС этого ΠΊΠ»ΠΈΠ΅Π½Ρ‚ записываСт Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° сСрвСр (ΠΏΡ€ΠΈΡ‡Π΅ΠΌ, Ссли ΠΊΠ°Π½Π°Π» ΠΏΠΎΠ»ΠΎΠ½ ΠΈΠ»ΠΈ сСрвСр всС Π΅Ρ‰Π΅ спит, клиСнтская ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° блокируСтся) ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ для Π²Ρ‹Π·ΠΎΠ²Π°

read
свой собствСнный ΠΊΠ°Π½Π°Π» FIFO, оТидая ΠΎΡ‚Π²Π΅Ρ‚Π°.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, сСрвСр ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ…, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ клиСнтский ΠΊΠ°Π½Π°Π» для записи ΠΈ записываСт Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎ снимаСт Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ клиСнтского процСсса. Когда ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· своСго ΠΊΠ°Π½Π°Π»Π° Π΄Π°Π½Π½Ρ‹Π΅, записанныС Ρ‚ΡƒΠ΄Π° сСрвСром.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ повторяСтся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° послСдний ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ ΠΊΠ°Π½Π°Π» сСрвСра, вызывая Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ сСрвСрного Π²Ρ‹Π·ΠΎΠ²Π° read (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ 0), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½ΠΈ Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса Π½Π΅Ρ‚ сСрвСрного ΠΊΠ°Π½Π°Π»Π°, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ для записи. Если Π±Ρ‹ это Π±Ρ‹Π» Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСрный процСсс, Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Π²Ρ‹Π±Ρ€Π°Π² ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ…:

β–‘Β ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор собствСнного сСрвСрного ΠΊΠ°Π½Π°Π»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·ΠΎΠ²

read
всСгда Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π», Π° Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π» 0;

β–‘Β Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ сСрвСрный ΠΊΠ°Π½Π°Π», ΠΊΠΎΠ³Π΄Π°

read
Π²Π΅Ρ€Π½Π΅Ρ‚ 0 Π±Π°ΠΉΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ сСрвСрный процСсс блокировался Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ
open
, оТидая ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ½ это Π΄Π΅Π»Π°Π», стартуя ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·.

Оба эти ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² Π½ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ прилоТСния для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисков, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΌ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисков

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, зная, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ простой ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрной систСмы, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисков ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ. Π’Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π² Π½Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сигналов, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅ дСйствия ΠΏΠΎ навСдСнию порядка ΠΏΡ€ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΈ процСсса. Π‘ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ ранняя вСрсия прилоТСния с dbm ΠΈ интСрфСйсом ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π» максимально простым ΠΈ понятным.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ эту Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Если Π²Ρ‹ взяли исходный ΠΊΠΎΠ΄ с Web-сайта, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ make-Ρ„Π°ΠΉΠ» для Π΅Π³ΠΎ компиляции ΠΈ получСния сСрвСрной ΠΈ клиСнтской ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Как Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π°Π½Π΅Π΅ Π² Π³Π»Π°Π²Π΅ 7, Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дистрибутивах Ρ„Π°ΠΉΠ»Ρ‹ dbm ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ΡΡ ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Если прСдоставлСнныС Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² вашСм дистрибутивС, Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π³Π»Π°Π²Π΅ 7 ΠΈ ΠΏΠΎΠΈΡ‰ΠΈΡ‚Π΅ свСдСния ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ… ΠΈ мСстонахоТдСнии Ρ„Π°ΠΉΠ»ΠΎΠ² dbm.

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

server -i
позволяСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисков.

НСт Π½ΡƒΠΆΠ΄Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ выполнится, ΠΏΠΎΠΊΠ° сСрвСр Π½Π΅ установится ΠΈ Π½Π΅ запустится. Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ make-Ρ„Π°ΠΉΠ», ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ ΡΠΎΠ²ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

all: server client

CC=cc

CFLAGS= -pedantic -Wall

# Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Π·Π½Π°ΠΊ коммСнтария Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС

# DFLAGS=-DDEBUG_TRACE=1 -g

# Π“Π΄Π΅ ΠΈ ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ dbm ΠΌΡ‹ примСняСм.

# ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ gdbm прСдустановлСна Π² стандартном мСстС, Π½ΠΎ ΠΌΡ‹

# собираСмся ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, совмСстимыС с gdbrn, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅

# Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π΅Π΅ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ndbm. ДСлаСтся это ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ndbm β€” 'самая

# стандартная' ΠΈΠ· вСрсий dbm. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ потрСбуСтся внСсти измСнСния

# Π² соотвСтствии с вашим дистрибутивом.

DBM_INC_PATH=/usr/include/gdbm

DBM_LIB_PATH=/usr/lib

DBM_LIB_FILE=-lgdbm

# Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… дистрибутивах ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ

# строку, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ совмСстимости, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅.

# DBM_LIB_FILE=-lgdbm_compat -lgdbm

.с.о:

 $(CC) $(CFLAGS) -I$(DBM_INC_PATH) $(DFLAGS) -с $<

app_ui.o: app_ui.c cd_data.h

cd_dbm.o: cd_dbm.c cd_data.h

client_f.o: client_f.c cd_data.h cliserv.h

pipe_imp.o: pipe_imp.c cd_data.h cliserv.h

server.о: server.с cd_data.h cliserv.h

client: app_ui.o clientif.o pipe_imp.o

Β $(CC) -o client $(DFLAGS) app_ui.ΠΎ clientif.o pipe_imp.o

server: server.ΠΎ cd_dbm.o pipe_imp.o

Β $(CC) -o server -L$(DBM_LIB_PATH) $(DFLAGS) server.ΠΎ cd_dbm.o pipe_imp.o -l$(DBM_LIB_FILE)

clean:

Β rm -f server client_app *.o *~

Π¦Π΅Π»ΠΈ

Наша Π·Π°Π΄Π°Ρ‡Π° β€” ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса прилоТСния. Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ сСрвСрный процСсс, Π½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ мноТСства клиСнтских процСссов ΠΈ ΠΏΡ€ΠΈ этом ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° измСнСния, вносимыС Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π’Π΅Π·Π΄Π΅, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ сохранитС исходный тСкст прилоТСния Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

Для простоты Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ (ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ) ΠΊΠ°Π½Π°Π»Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния, Π½Π΅ заставляя администратора систСмы ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ смоТСтС ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ.

Π’Π°ΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ состояниС "Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ оТидания", Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ЦП Π½Π° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ события. Как Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, ОБ Linux позволяСт ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ событий Π±Π΅Π· потрСблСния Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ свойства ΠΊΠ°Π½Π°Π»ΠΎΠ² для Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ эффСктивного использования ЦП. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², тСорСтичСски сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ ΠΆΠ΄Π°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… часов поступлСния запроса.

РСализация

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии прилоТСния, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π² Π²ΠΈΠ΄Π΅ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ процСсса, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ познакомились Π² Π³Π»Π°Π²Π΅ 7, для управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ примСнялся Π½Π°Π±ΠΎΡ€ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. К Π½ΠΈΠΌ ΠΎΡ‚Π½ΠΎΡΠΈΠ»ΠΈΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

int database_initialize(const int new_database);

void database_close(void);

cdc_entry get_cdc_entry(const char *cd_catalog_ptr);

cdt_entry get_cdt_entry(const char *cd_catalog_ptr, const int track_no);

int add_cdc_entry(const cdc_entry entry_to_add);

int add_cdt_entry(const cdt_entry entry_to_add);

int del_cdc_entry(const char *cd_catalog_ptr);