DioneOS - DioneOS

DioneOS (айтылатын / djoneos /) - бұл көп тапсырма алдын-ала, нақты уақыттағы операциялық жүйе. Жүйе арналған Texas Instruments MSP430x микроконтроллерлер. Мақсатты микроконтроллер платформасында шектеулі ресурстар бар, яғни жүйенің сағат жиілігі ондаған МГц ал естеліктер оннан бірнеше жүзге дейін жетеді КБ. Жүйе өзінің ықшам және тиімді бейнесін ұсына отырып, осындай жағдайларға бейімделген. Мұндағы тиімділік термині қосымша минимизацияны білдіреді Орталық Есептеуіш Бөлім жүйені пайдаланудан туындаған жүктеме. Осы анықтамаға сәйкес, жүйе өзінің ішкі бөліктерін орындау үшін процессордың уақытын аз жұмсағанда тиімді болады (мысалы.). жіптер басқару).

DioneOS жүйесі пайдаланушы интерфейсі шектеулі функциялары бар автономды құрылғыларға арналған. Жүйе ұсынатын негізгі функционалдылық - стандартты, белгілі тұжырымдамалар (мысалы, мысалы) арқылы көп тапсырмалы микробағдарлама құруға арналған орта. семафоралар, таймерлер және т.б.). Қолданудың мақсатты домені болғандықтан, жүйеде жоқ графикалық интерфейс.

Жад моделі

Texas Instruments компаниясы кең ауқымды өндіреді микроконтроллерлер MSP430 өзегін қолданады. Нұсқаға байланысты чип құрамында әртүрлі мөлшер бар жедел жад және Жедел Жадтау Құрылғысы (мысалы, MSP430f2201 сәйкесінше 1KB / 128B бар, бірақ MSP430f5438 - 256KB / 16KB). Жадының мөлшері 64 КБ шегінен асқанда,[1] 16 бит адресі жеткіліксіз. Осы шектеулерге байланысты үлкен жады бар чиптер кеңейтілген ядромен (MSP430x) жабдықталған. Бұл нұсқасы процессор кеңірек регистрлерге (20 бит) және оларды өңдеу бойынша жаңа нұсқауларға ие.

Компиляция кезінде бағдарламашы қолданылатын жад моделінің түрін таңдайды ('жақын' немесе 'алыс') ФЛАШ және Жедел Жадтау Құрылғысы естеліктер. Бұл таңдау қол жетімді жад диапазонын анықтайды, сондықтан 64 КБ шегінен жоғары FLASH бағдарламаланған кезде «алыс» моделін қолдану керек.

DioneOS код модульдеріне арналған 'алыс' модельді қолдайды, сондықтан кеңейтілген FLASH қолданатын үлкен микробағдарламалық жасақтама жүйенің басқаруымен өңделеді және жұмыс істейді. Жүйе деректер сегменттері үшін 'жақын' жад моделін қолданады.

Ағындарды басқару

DioneOS жүйесінде басталған микробағдарлама жалған түрде орындалатын ағындардан тұрады.параллель жол. Әрбір жіптің жіптерді маңыздысынан екіншісіне тапсырыс беру үшін қолданылатын өзіндік, бірегей басымдығы бар. Ағымдық басымдылық мәні басқаларға жүгірудің басымдылығын анықтайды.

DioneOS жүйесінде ағын келесі күйлердің бірінде болуы мүмкін:

  • Жүгіру - ағынды қазір процессор орындайды,
  • Дайын - жіп іске қосылуға дайын,
  • Күту - жіп бұғатталған және кейбір синхрондау объектісін күтеді.

Процессорда тек бір ядро ​​болғандықтан, тек бір ағын жұмыс күйінде болуы мүмкін. Күту күйінде емес барлық ағындардың ішіндегі басымдығы жоғары жіп. Жіп күйінің өзгеруіне мыналар себеп болуы мүмкін:

  • іске қосу жіпті ұстайтын зат,
  • бұғатталған нысанды сәтсіз алу (мысалы, басқа біреудікі болатын мутекс),
  • өткен тайм-аут,
  • алдын-ала пайда болуына әкелуі мүмкін басқа жіптің күйін өзгерту.

Жүйе 16 ағынға дейін жұмыс істейді, оның ішінде басымдылығы ең аз бос жүрісті. Бос жіп әрқашан іске қосылуға дайын болуы керек және ешқашан күту күйіне ауыспауы керек, сондықтан кез-келгенін шақыруға жол берілмейді функциялары бұл жіптің ішінен бұғатталады. Бос жіптің көмегімен жүйенің жалпы жүктемесін анықтауға болады.

Жүйенің ерекшеліктері

DioneOS жүйесі мыналарды ұсынады:

  • үндестіруге арналған элементтер: мутекс және санау семафоралар, жіпті синхрондау, сигнал беру үшін қолданылады ISR ағынға және ортақ ресурстарды қорғауға,
  • уақытты басқару әдістері: таймерлер, жіптерді ұйықтау, күту уақыты,
  • іс-шаралар жүзеге асыратын байланыс элементтері және кезектер қол жетімді дөңгелек буферлер,
  • жадыны басқару жад пулы ол жадыны тек белгіленген өлшемді блоктарға бөледі, бірақ ол кезде пайда болатын фрагментация мәселелерінен босатылады үйінді қолданылады. Malloc / үйіндіге ақысыз бөлу де қол жетімді, ол стандартта қарастырылған C кітапханалар.
  • тірек нысандарын сынау: чип түйрегіштеріндегі оқиғалар туралы сигнал беру, сыни ерекшеліктер, объектілерді белгілеу, бұл жойылған объектіні пайдалану немесе жадты екі рет бөлу сияқты қателерді анықтауға көмектеседі.

Мәтінмәндік қосқыш

'Threads Management' тарауында айтылғандай, микробағдарлама жалған параллель ағындардан тұрады. Әрбір ағынның процессордың негізгі регистрлері, соңғы орындалу мекенжайы және жеке стекі бар жеке мәтіні бар. Жіптер арасында ауысу кезінде жүйе тоқтатылған жіптің контекстін сақтайды және іске қосылған контекстті қалпына келтіреді. Бұл күйді үнемдеу жіптің орындалуын бұзуға мүмкіндік береді, тіпті егер олардың арасында басқа жіп орындалған болса да, одан әрі жалғастырады. Алдын ала және одан кейін болатынына назар аударыңыз контексттік қосқыш кез-келген сәтте орын алуы мүмкін, тіпті егер жүйеде ешқандай функция функциясы шақырылмаса да. Бұл орындалған кодта күтпеген жерде орын алуы мүмкін болса да, жүйенің және контекстті үнемдеудің арқасында жұмыс бұрмаланбайды. Ағын тұрғысынан қосқышты фонда жасауға болады.

Контексттік қосқыш жүйеде маңызды жұмыс болып табылады және оның орындалу уақыты жүйенің қаншалықты тиімді екенін анықтайды. Осыған байланысты DioneOS жүйесіндегі контексттік ауыстырғыш қысқа уақытқа оңтайландырылды. Ең маңызды бөліктері жазылған құрастырушы, сондықтан қосқышты 12–17 мкс ішінде жасауға болады[2] (f. үшінosc= 25 МГц).

DioneOS жүйесінде контексттік қосқышты бастауға болады қызмет көрсетуді үзу. Бұл қасиет оқиғаны өңдеуді ағынға жылжыту үшін пайдалы және әдетте екі қабатты архитектурада жүзеге асырылады:

  • үзіліс өңдеушісі - аппараттық үзіліс болғаннан кейін шақырылады. Бұл бөлімде үзілістер өшіріледі, сондықтан орындалуды ұзақ уақытқа дейін жалғастыруға болмайды, әйтпесе жүйенің жауап беру қабілеті бұзылады. Бұл қабатта үзіліске жылдам жауап беруді қажет ететін жұмыстар ғана өңделуі керек, қалғандары жоғары деңгейге жіберілуі керек,
  • жоғары қабат - оқшауланған жіпте тосқауылсыз өңдеу; бұл жіпті алдын-ала қарастыруға болады. Шектеу мұнда үзіліс өңдегішіндегідей қатты емес. Кодтың орындалуы жүйені бұғаттамайды.
  • ISR-дегі сигнал беру нүктесінен басқа жіптерді қалпына келтіруге дейін өлшенген контексттік қосқыш 10us құрайды (f үшін)osc= 25 МГц) DioneOS жүйесінде.

Конфигурация

DioneOS жүйесінде жинақталған кескінге енгізілген мүмкіндіктерге әсер ететін бірнеше конфигурация параметрлері бар. Олардың көпшілігі жинақталған бастапқы кодты қосқыштар конфигурация файлы және оны өзгерте алады микробағдарлама. Бұл арқылы қосымша сынақ бөліктерін бақылауға болады. Егер олар қосылса, жүйе әдеттегіден тыс жағдайларды анықтауға мүмкіндік беретін нұсқада құрастырылған және түзету процесіне көмектесетін жұмыс уақыты туралы ақпарат. Қателер табылған және жойылған кезде, жүйенің толық жұмыс істеуі үшін қосымша мүмкіндіктерді ажыратуға болады.

Конфигурация фрагментінің мысалы:

 [...] # анықтаңыз CFG_ТЕКСЕРУ_ҚОЛДАНУ / * семафорларда толып кетуді тексеру / мутекс * * # CFG_CHECK_LOCK анықтау / * жоспарлағышты құлыптау кезінде алдын-ала шарттармен туындаған құлып мәселесін анықтау * / # CFG_ІЗІНІҢ_УЛЫМЕН ТІЗІМІН анықтаңыз / * тізімдегі жойылған элементтерді os_list1_del () * / белгілеу # анықтаңыз CFG_MEM_POOL_POISON_FILL 0xDAAB / * бөлінбеген жад элементтерін белгілеу үлгісі * / # CFG_LISTDEL_POISON 0xABBA анықтау / * жойылған тізім элементтерін белгілеу үлгісі * / # CFG_CHECK_EMPTY_SEM_DESTROY анықтаңыз / * семафораны os_sleep () ішінде жоюдан бұрын тестілеу * / # CFG_FILL_EMPTY_MEM_POOL анықтаңыз / * бос жадты үлгіге толтыру * / [...]

Әдебиеттер тізімі

  1. ^ бұл жад 0-64 КБ аралығында сыймайтын кезде болады
  2. ^ коммутация уақыты жүйенің конфигурациясына байланысты болады, көбірек мән коммутаторға жүйенің кене үзілісі кедергі жасағанда пайда болады.
  • Дагда Таннер Маттеус «DioneOS» (Кітап) желдеткіш, ISBN  6136470608, 2012-01-01

Сыртқы сілтемелер