С чего начинается программирование...

читать лучше с начала!

На сайті розглядаються основи роботи з мультимедійною інформацією на персональному комп'ютері. Описано ряд програм для закису, обробки й відтворення звуку й зображення.

Представлено деякі Wіndows-програми комунікацій реального часу ( ІP-Телефонії).

Також сайт присвячен розробці власних програм для роботи з аудио й відео, передачі звукової й візуальної інформації в локальних мережах і Інтернеті.

Серед наших користувачів, як правило, користувачі комп'ютера в дома й в офіса, так і на починаючих розроблювачів програмного забезпечення - ми даємо основи програмування в середовищі Borland C++ Buіlder. Наша аудиторія - це, перш за все, школярі старших класів, студенти і широке коло людей, що просто використовують комп'ютер вдома й на роботі.

ТЕРМІНАЛЬНІ ПРИСТРОЇ



      Драйвери термінальних пристроїв є одними із самих складних драйверів пристроїв. Причина цього полягає в тім, що існує безліч рівнів програмного забезпечення, які підтримують характеристики інтерактивних терміналів. При роботі термінала по послудовательной лінії зв'язку необхідна потужна підтримка для того, щоб полегшити його використання. Різні установки, які може мати термінал, програмуються командами stty(1) і ioctl(2). Команда termio(7) також описує різні аспекти протоколу роботи термінала.


      ПРОТОКОЛ ОПЕРАЦІЙ УВЕДЕННЯ/ВИСНОВКУ ТЕРМІНАЛА

      Протокол роботи термінала являє собою погоджений набір сигналів, що дозволяють системі правильно інтерпретувати вводяться з клавіатури рядка. Протокол необхідний по чотирьох причинах. Першої является підтримка вхідної обробки спеціальних символів, таких як символи видалення й припинення роботи програми. По-друге, нам необходимо підтримувати обробку виведеної інформації, наприклад, вставку символів затримки або зміна послідовності повернення каретки/перевод рядка. Третьою причиною є підтримка режимів необробленаного й "канонічного" уведення. Ці два режими дозволяють пользовательским програмам одержувати дані або по одному символі, або по одний рядку. Остання причина введення термінального протоколу - желание зробити так, щоб користувач міг сам змінювати параметри конфигурации термінала.

      Уміст термінальної підсистеми показане на мал. 7-2. Малюнок розбитий на три частини: ліворуч - область користувача, посередині - область ядра й праворуч - область пристрою. Цей малюнок показує, як перідаються дані між терміналами й програмами користувача.


      Рис. 7-2.

      Керування протоколом термінала


Область Область ядра Область користувача пристрою

      Процес
      +-і-і-і-+ : :
      |текст | : +-і-і-і-і+ +-і-і-і-і+ +-і-і-і-+ : dzrint()
      |-------| : ttread() |канонич.| canon()|необраб.| ttin()|приемн.| : +-і-і-+
      |данные | : /-і-|очередь |<-і-і-і-|очередь |<-і-і-і|буфер |<-і|dbuf |
      | | : / +-і-і-і-і+ +-і-і-і-і+ / +-і-і-і-+ : | |
      | +-і-і+| : / структура структура / структура : +-і-і-+
      | |ubuf||<-і-/ clist clist / ccblock :
      | +-і-і+| : / :
      | +-і-і+| : +-і-і-і-і- / ttxput() :
      | |ubuf||-і-і | :
      | +-і-і+| : \ +-і-і-і-+ <-і+ +-і-і-і-і+ : +-і-і-+
      |-------| : \ |выходн.| |буфер | : |dbuf |
      |стек | : \-і->|очередь|-і-і-і->|передачи|-і-і-і-і-і-і-і-і-і->| |
      | | : +-і-і-і-+ ttout()+-і-і-і-і+ dzxint() : +-і-і-+
      +-і-і-і-+ : ttwrite() структура структура :
      clist ccblock /|\
      |
      -і-і-і+
      Границя драйвера
      пристрою



      Коли який-небудь процес читає символи із пристрої, дані начинают рухатися від буфера драйвера пристрою, що називається dbuf. Із цього буфера дані попадають у прийомний буфер, керований ядром. Прийомний буфер читається підпрограмою ядра з ім'ям ttin(), і дані містяться в структуру clist, називану неопрацьованої очередью. (Слово "неопрацьована" означає, що над символами поки що не вироблялося ніякої обробки.) У той же час символи також помещаются у вихідну чергу, що дозволяє системі виконувати луну-отображение символів у міру їхнього уведення.

      Після цього підпрограма canon() перетворює неопрацьовану очередь у канонічну. ("Канонічна" означає застосування правил, которые в цей момент установлені системою для виконання спеціальних функцій над рядком тексту, наприклад для обробки символу видалення.) Така обробка дозволяє перетворити дані перед тим, як їхньої підлогичит процес користувача. Останньою підпрограмою є ttread(), яка читає символи з канонічного буфера в буфер пользовательского процесу в області даних процесу.

      Коли символи записуються із процесу користувача на термінал, вони проробляють майже такий же маршрут у зворотному напрямку: від проласти процесу до області драйвера пристрою. Основна відмінність у подпрограмме запису полягає в тім, що ці дані проходять на один буфер менше. Від процесу користувача символи передаються у вихідну черга ядра підпрограмою ttwrite(), а потім у буфер передачі з поміццю підпрограми ttout(). З буфера передачі вони пересилаються непосередньо в прийомний буфер драйвера пристрою за допомогою подпрограммы dzxint().

[...]
Початок
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215] [216] [217] [218] [219] [220] [221] [222] [223] [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235] [236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256] [257] [258] [259] [260] [261] [262] [263] [264] [265] [266] [267] [268] [269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288] [289] [290] [291] [292] [293] [294] [295] [296] [297] [298] [299] [300] [301] [302] [303] [304] [305] [306] [307] [308] [309] [310] [311] [312] [313] [314] [315] [316] [317] [318] [319] [320] [321] [322] [323] [324] [325] [326] [327] [328] [329] [330] [331] [332] [333] [334] [335] [336] [337] [338] [339] [340] [341] [342] [343] [344] [345] [346] [347] [348] [349] [350] [351] [352] [353] [354] [355] [356] [357] [358] [359] [360] [361] [362] [363] [364] [365] [366] [367] [368] [369] [370] [371] [372] [373] [374] [375] [376] [377] [378] [379] [380] [381] [382] [383] [384] [385] [386] [387] [388] [389] [390] [391] [392] [393] [394] [395] [396] [397] [398] [399] [400] [401] [402] [403] [404] [405] [406] [407] [408] [409] [410] [411] [412] [413] [414] [415] [416] [417] [418] [419] [420] [421] [422] [423] [424] [425] [426] [427] [428] [429] [430] [431] [432] [433] [434] [435] [436] [437] [438] [439] [440]