39
Увод

PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Увод

Page 2: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Рачунарски систем

Физичкаархитектура

Системскапрограмска

подршкаПрограмска

подршка

Корисничкаспрега

У/Испреге

ОС

Меморијскиподсистем

Корисник

Администратор

Инжењер

Page 3: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Рачунарски систем

Физичкаархитектура

Системскапрограмска

подршкаПрограмска

подршка

Корисничкаспрега

У/Испреге

ОС

Меморијскиподсистем

Page 4: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Рачунарски систем

Хардвер - софтвер

Физичка архитектура - програмска подршка

Изучавају се често одвојено, али у рачунарској техници су тесно повезани и док се бави једним увек се мора мислити на друго.

Пошто развој физичке архитектуре често претходи развоју програмске подршке, развој програмске подршке више зависи од физичке архитектуре него обрнуто.

Page 5: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Рачунарски систем

Кад расте величина рачунара, расте и цена

Кад расте величина рачунара, расте и потрошња

Рачунарски систем треба ради што боље, да буде што јефтинији и да што мање троши.

Page 6: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Рачунарски систем

Кад расте величина рачунара, расте и цена

Кад расте величина рачунара, расте и потрошња

Рачунарски систем треба ради довољно добро, да буде што јефтинији и да што мање троши.

Шта треба да ради довољно добро?

Page 7: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Рачунарски системи

Системи за рад у реалном времену

Уграђени системи

Системи са ограниченим ресурсима ->Процесори са ограниченим ресурсима

Наменски рачунарски системи ->Наменски процесор

Page 8: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Системи у реалном времену

Системи (за рад) у реалном времену.

Приликом пројектовања готово је немогуће направити оштру разлику између „шта“ и „како“.

Page 9: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Уграђени системи

Нема спреге човека и машине (или је сведена на минимум) Дакле, нема: тастатуре, екрана итд.

99% процесора је у уграђеним системима Животни циклус система: развој,

производња, одржавање. Код уграђених система цена развоја је

обично испод 5% укупне цене целог циклуса.

Економски аспекти имају далеко већи значај.

Page 10: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Системи са ограниченим ресурсима

Ресурси: Меморија, регистри

Брзина

Енергија

...

Ограниченост је релативна

али радни такт уграђених система је обично до неколико стотина мега-херца

Page 11: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Наменски системи

Системи посебне намене

Наменски процесори Сваки процесор сабира бројеве... ?

Page 12: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Груписање процесора по намени

Процесори опште намене

Наменски процесори (Процесори посебне намене) ДСП-ови Микроконтролери Графички процесори...

Page 13: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Процесори опште намене

Најбоље извршавају све могуће врсте програма

Page 14: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Процесори опште намене

Најбоље извршавају све могуће врсте програма

Подједнако добро извршавају све могуће врсте програма

Page 15: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Процесори опште намене

Најбоље извршавају све могуће врсте програма

Подједнако добро извршавају све могуће врсте програма

Неке врсте програма извршавају боље, неке лошије, али је разлика обична мања од једног реда величине (10х)

Page 16: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Чиме се програмирајунаменски рачунарски

системи

Рад са НРС најчешће није директан.

Систем домаћин(host system)

Обично рачунар опште намене

Циљни систем(target system)

Наш наменски рач. систем

програмер

Део системског софтвера се извршава на домаћину.

Домаћин је систем са више ресусра и већом брзином, а пре свега комотнији за рад.

Многи елементи системског софтвера ни не би могли бити извршавани на циљном систему.

Page 17: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Чиме се програмирајунаменски рачунарски

системи

Алати: Асемблер

Компајлер (за виши програмски језик)

Дебагер (компонента за контролисано извршавање програма)

Симулатор (омогућава бољу контролу и бољи увид у извршавање кода)

Интегрисано развојно окружење

Оперативни систем и библиотеке

Page 18: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Када се програмирајунаменски рачунарски

системи

Пре него што је физичка архитектура готова Да би се убрзао развој система

Део кода је већ раније развијен

Када је физичка архитектура фиксирана, али још увек није произведена Развојне плоче са прототипом

Симулатори

Када је физичка архитектура готова, али системски софтвер још није (алати) Развој системског софтвера обично креће пре него што је физичка

архитектура готова

Када је физичка архитектура спремна и зрела Код неких система ово је већ крај животног циклуса софтвера

Код неких дугих - нови почетак

Page 19: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Како се програмирајунаменски рачунарски

системи

Зависи од много фактора: Фазе у развоју - спремност физичке архитектуре и алата

Уложеног развојног напора - у развој системског софтвера, алата пре свега

Обима конкретног програма - за мали програм може и бинарно да се програмира

Захтевности конкретног програма - на нижем нивоу апстракције се може више исцедити из архитектуре

Page 20: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Како се програмирајунаменски рачунарски

системи

Асемблер Ближи архитектури

Преводилац лакши за прављење

Компликованији за успешно програмирање

Виши програмски језик Даљи од архитектуре

Преводилац компликованији

Програмирање лакше

Page 21: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Прогамски језик Це

Виши програмски језик који се најчешће користи за програмирање НРС је Це.

Проценат пројеката у којима се користи дати програмски језик

Page 22: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Прогамски језик Це

Виши програмски језик који се најчешће користи за програмирање НРС је Це.

0

10

20

30

40

50

60

70

80

90

100

2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017

C C++ Assembly

Проценат пројеката у којима се већински користи дати програмски језик

Page 23: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Прогамски језик Це

Зашто програмски језик Це? Није превише висок

Омогућује боље цеђење перформанси

Релативно добро пресликавање његових операција на операције физичке архитектуре

Историјски разлози Нагомилан већ постојећи код

Велики број његових познаваоца

Конструкција компајлера релативно једноставнија

Page 24: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Прогамски језик Це

Зашто НЕ програмски језик Це? Није превише висок

Виши ново апстракције би олакшавао програмирање

Релативно лоше пресликавање његових операција на операције физичке архитектуре

Историјски разлози Ваљда је до сада могло бити смишљено нешто паметније

Велики број његових „познаваоца”

Који стандард тачно подржава конкретан систем?

K&R C89

C99 C11

K&R C89

C99 C11

Конкретан компајлер

Page 25: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Прогамски језик Це++

Цеов млађи брат Нису потпуно у релацији подскуп/надскуп

Али 99% Цеа је исто и у Це++-у.

Хардверски модел је идентичан

Скоро све што будемо учили на овом курсу важи и у Це++-у. Скренућемо пажњу на места где постоје разлике

Зашто Це++ није потиснуо Це? За већину проблема из овог домена изгледа да је Це сасвим

довољан.

Инерција.

Више могућности => више шанси да се погреши.

Више могућности => више мора да се учи!

Page 26: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Циљ предавања и вежби

Оспособити полазнике да могу:

Писати нови Це код за НРС Научити делове језика који нису у фокусу када се

програмирају системи опште намене и када се ад хок програмира, али су важни при програмирању НРС

Учврстити добру праксу, зарад писања лепог, јасног и употребљивог кода

Препознати сиве зоне језика да их не бисте користили

Разумети постојећи Це код за НРС Препознати сиве зоне језика да бисте их разумели у коду

са којим се будете сусретали

Page 27: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

ППуРВ1 и ППуРВ2

50 бодова предиспитне обавезе 10 бодова присуство на вежбама 40 бодова предметни пројекат

50 бодова испит Тест или усмени

Page 28: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Тест: 10 бодова – елиминациони део 40 бодова – остатак Присуство на (скоро) свим предавањима

предуслов за излазак на тест Тест само у предроку (на крају блока) и у

јануару

Усмени: На усменом такође имају елиминациона

питања!

Page 29: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Распоред

По данима: 12. 10. до 21. 10. предавања и вежбе 21/22. 10. (среда/четвртак) додале пројектних

задатака 22. 10. до 28. 10. термини вежби и предавања

служе за консултације 29. и 30. 10. одбрана пројектних задатака 28. 10. предрок

Page 30: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Дебаговање

Page 31: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Дебаговање?

Буба (енгл. Bug /баг/) - Проблем у програму

Отклањање буба, проблема

У ужем смислу то подразумева: контролисано извршавање програма и увид у стање програма зарад отклањања проблема.

У ширем смислу то су сви могући (и немогући) поступци за откривање и отклањање проблема.

Page 32: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Тестирање (испитивање)

Програм најчешће ради савршено све док га не покренемо.

Провера исправности: верификација и валидација

Верификација проверава да ли програм ради то што ми мислимо да треба да ради.

Валидација проверава да ли програм ради то што нама треба. (То што ми мислимо да програм треба да ради не мора бити то што нама треба.)

Тестирање не мора бити формализовано! Али је то више него пожељно код озбиљних подухвата.

Page 33: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Отклањање проблема

Програм најчешће не ради добро све док га не издебагујемо.

Испитни случај: улаз (побуда) - очекиван излаз (реакција)

Зашто добијамо неочекиван излаз?

Потребан нам је бољи увид у извршавање програма.

Уобичајено доступне ствари: Контролисано извршавање:

Корак по корак и тачке прекида

Увид у стање програма Посматрање променљивих и меморије

Додавање контролних исписа у код

Page 34: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Отклањање проблема

Неуобичајено доступне ствари: Контролисано извршавање:

Корак у назад

Условне тачке прекида

Кретање по току података, уместо по току извршавања

Увид у стање програма Срачунавање израза у тренутном контексту

Али неки пут немамо ништа од поменутог! Тада се сналазимо како знамо и умемо.

Page 35: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Неке поделе багова

Ухватљиви (доследни, поновљиви) баговиЗа одређену побуду увек добијамо исту нежељену реакцију

Лако поновљиви багови Побуду која узрокује нежељену реакцију је лако направити у

контролисаним условима

Тешко поновљиви багови Побуду која узрокује нежељену реакцију је тешко направити у

контролисаним условима

Неухватљиви (недоследни, стохастички) баговиЗа одређену побуду нежељену рекцију добијамо само понекад

Узрок је постојање нежељеног утицаја на систем ван чинилаца побудеМогући узроци:

Читање из неинициализоване меморије

Ослањање на адресе динамички заузете меморије

Упадање у стања недефинисана програмским језиком

Page 36: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Дигресија: недефинисана стања и понашања

То значи да понашање може бити различито приликом извршавања истог кода на истом систему.

Неки важнији примери недефинисаних понашања у програмском језику Це:

Прекорачење код интеџерске аритметике Укључујући померање у десно, тзв. шифтовање

Битске операције над интеџерима Бинарна репрезентација интеџера не мора бити

комплемент двојке!

Важи само за означене интеџере! Неозначени се дефинишу тотално другачије.

Page 37: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Неке поделе багова

Прости баговиМанифестација проблема је тесно везана за место где

постоји грешка у коду.

Сложени баговиМанифестација проблема и место грешке у коду су врло

посредно повезане.

Page 38: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Како успешно дебаговати

Разумети систем

Репродуковати баг

Не претпостављати - погледати

Подели па владај

Постепено мењати

Водити белешке

Проверити кабел (да није до физичке архитектуре?)

Применити нов поглед на ствари

Ништа се не поправља само од себе

Page 39: PPuRV Predavanja 1 - University of Novi Sad...Рачунарски систем NbabqdZ Zjobl_dlmjZ Kbkl_fkdZ ijh]jZfkdZ ih^jrdZ Ijh]jZfkdZ ih^jrdZ DhjbkgbqdZ kij_]Z M B kij_]_ HK

Најважнији савет!

Покушати решити проблем