{"id":371,"date":"2024-07-18T10:59:07","date_gmt":"2024-07-18T08:59:07","guid":{"rendered":"https:\/\/wi.pb.edu.pl\/p\/?page_id=371"},"modified":"2024-07-18T10:59:07","modified_gmt":"2024-07-18T08:59:07","slug":"systemy-operacyjne-projekt-pierwszy","status":"publish","type":"page","link":"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/","title":{"rendered":"Systemy operacyjne &#8211; Projekt pierwszy"},"content":{"rendered":"<table border=\"0\" cellspacing=\"2\" cellpadding=\"2\">\n<tbody>\n<tr align=\"center\">\n<td>\n<h2>Systemy operacyjne<\/h2>\n<h2>Projekt pierwszy &#8211; przyk\u0142adowe tematy<\/h2>\n<h3>Programowanie z wykorzystaniem API system\u00f3w Uniksowych<\/h3>\n<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-size: medium\">1.&nbsp;&nbsp;Prosty interpreter polece\u0144 [10p]&nbsp;Zaprojektuj i zaimplementuj prosty interpreter polece\u0144. Interpreter pobiera ze standardowego wej\u015bcia pojedynczy wiersz. Nastepnie dokonuje prostej analizy wiersza dziel\u0105c go na s\u0142owa separowane spacjami. Pierwsze s\u0142owo jest nazw\u0105 programu kt\u00f3ry nale\u017cy uruchomi\u0107 (wykorzystuj\u0105c zmienn\u0105 PATH), a pozosta\u0142e s\u0105 argumentami. Shell uruchamia program i standardowo czeka na zako\u0144czenie jego pracy, chyba \u017ce ostatnim s\u0142owem jest znak &amp; co powoduje uruchomienie programu w tle, jak w normalnym shellu bash. Shell ko\u0144czy prac\u0119 gdy otrzyma znak ko\u0144ca pliku. Dzi\u0119ki temu mozliwe jest przygotowanie prostych skrypt\u00f3w, kt\u00f3re mo\u017cna uruchamia\u0107 z wiersza polece\u0144 bash-a, je\u017celi pierwsza linia skryptu ma posta\u0107 #!\/home\/student\/moj_shell&nbsp; (gdzie po ! podaje si\u0119 scie\u017ck\u0119 do programu shella). Dodatkowe opcje to:<\/p>\n<p>a)&nbsp;[6p]&nbsp;mo\u017cliwo\u015b\u0107 przekierowania standardowego wyj\u015bcia polecenia przy pomocy &gt;&gt;<br \/>\nb)&nbsp;<\/span><span style=\"font-size: medium\">[9p]&nbsp;<\/span><span style=\"font-size: medium\">mo\u017cliwo\u015b\u0107 tworzenia potok\u00f3w o dowolnej d\u0142ugo\u015bci przy pomocy znaku |<br \/>\nc)&nbsp;&nbsp;<\/span><span style=\"font-size: medium\">[9p]&nbsp;<\/span><span style=\"font-size: medium\">historia polece\u0144 &#8211; shell przechowuje (w zewn\u0119trznym pliku w katalogu domowym u\u017cytkownika &#8211; tak \u017ce historia powinna &#8222;przetrwa\u0107&#8221; zako\u0144czenie shella) dok\u0142adn\u0105 tre\u015b\u0107 20 polece\u0144, a wys\u0142anie sygna\u0142u SIGBRK powoduje wy\u015bwietlenie historii na standardowym wyj\u015bciu &#8211;&nbsp;uwaga na niuanse zwi\u0105zane z obs\u0142ug\u0105 sygna\u0142\u00f3w !!!<\/p>\n<p>Uwaga:&nbsp;Jako minimum, opr\u00f3cz cz\u0119\u015bci podstawowej, projekt powinien mie\u0107 zrealizowany jeden z punkt\u00f3w a)-c)<\/p>\n<p><\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-size: medium\">2. [12p]&nbsp; Demon synchronizuj\u0105cy dwa podkatalogi:&nbsp;Program kt\u00f3ry otrzymuje co najmniej dwa argumenty: scie\u017ck\u0119 \u017ar\u00f3d\u0142ow\u0105 scie\u017ck\u0119 docelow\u0105 . Je\u017celi kt\u00f3ra\u015b ze \u015bcie\u017cek nie jest katalogiem program powraca natychmiast z komunikatem b\u0142\u0119du. W przeciwnym wypadku staje si\u0119 demonem. Demon wykonuje nast\u0119puj\u0119ce czynno\u015bci: \u015bpi przez pi\u0119\u0107 minut (czas spania mo\u017cna zmienia\u0107 przy pomocy dodatkowego opcjonalnego argumentu), po czym po obudzeniu si\u0119 por\u00f3wnuje katalog \u017ar\u00f3d\u0142owy z katalogiem docelowym. Pozycje kt\u00f3re nie s\u0105 zwyk\u0142ymi plikami s\u0105 ignorowane (np. katalogi i dowi\u0105zania symboliczne). Je\u017celi demon (a) napotka na&nbsp; nowy plik w katalogu \u017ar\u00f3d\u0142owym, i tego pliku brak w katalogu docelowym lub (b) plik w katalogu docelowym ma p\u00f3\u017aniejsz\u0105 dat\u0119 ostatniej modyfikacji demon wykonuje kopi\u0119 pliku z&nbsp; katalogu \u017ar\u00f3d\u0142owego do katalogu docelowego &#8211; ustawiaj\u0105c w katalogu docelowym dat\u0119 modyfikacji tak aby przy kolenym obudzeniu nie trzeba by\u0142o wykona\u0107 kopii (chyba&nbsp; ze plik w katalogu \u017ar\u00f3d\u0142owym zostanie ponownie zmieniony). Je\u017celi za\u015b odnajdzie plik w katalogu docelowym, kt\u00f3rego nie ma w katalogu \u017ar\u00f3d\u0142owym to usuwa ten plik z katalogu docelowego. Mo\u017cliwe jest r\u00f3wnie\u017c natychmiastowe obudzenie si\u0119 demona poprzez wys\u0142anie mu sygna\u0142u SIGUSR1. Wyczerpuj\u0105ca informacja o ka\u017cdej akcji typu u\u015bpienie\/obudzenie si\u0119 demona (naturalne lub w wyniku sygna\u0142u), wykonanie kopii lub usuni\u0119cie pliku jest przes\u0142ana do logu systemowego. Informacja ta powinna zawiera\u0107 aktualn\u0105 dat\u0119.<\/p>\n<p>a) [10p.]&nbsp;&nbsp;Dodatkowa opcja -R pozwalaj\u0105ca na rekurencyjn\u0105 synchronizacj\u0119 katalog\u00f3w (teraz pozycje b\u0119d\u0105ce katalogami nie s\u0105 ignorowane). W szczeg\u00f3lno\u015bci je\u017celi demon&nbsp; stwierdzi w katalogu docelowym&nbsp; podkatalog kt\u00f3rego brak w katalogu \u017ar\u00f3d\u0142owym powinien usun\u0105\u0107 go wraz z zawarto\u015bci\u0105.<br \/>\nb) [2p.]&nbsp;W zale\u017cno\u015bci&nbsp; od rozmiaru plik\u00f3w dla ma\u0142ych plik\u00f3w wykonywane jest kopiowanie przy pomocy read\/write a w przypadku du\u017cych przy pomocy mmap\/write (plik \u017ar\u00f3d\u0142owy) zostaje zamapowany w ca\u0142o\u015bci w pami\u0119ci. Pr\u00f3g dziel\u0105cy pliki ma\u0142e od du\u017cych&nbsp; mo\u017ce by\u0107 przekazywany jako opcjonalny argument.<\/p>\n<p>Uwagi:&nbsp;(a) Wszelkie operacje na plikach nale\u017cy wykonywa\u0107 przy pomocy API Linuksa a nie standardowej biblioteki j\u0119zyka C (b)&nbsp; kopiowanie za ka\u017cdym obudzeniem ca\u0142ego drzewa katalg\u00f3w zostanie potraktowane jako powa\u017cny b\u0142\u0105d (c) podobnie jak przezucenie cz\u0119\u015bci zada\u0144 na shell systemowy (funkcja system).<br \/>\n<\/span><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"justify\"><span style=\"font-size: medium\"><b>Uwagi<\/b>:<\/p>\n<p><\/span><\/p>\n<p>&lt;&gt;<span style=\"font-size: medium\">1.) Projekty pisane s\u0105 w grupach dwuosobowych.<br \/>\n2.) Odbi\u00f3r projektu&nbsp; polega na dostarczeniu&nbsp;&nbsp;kodu \u017ar\u00f3d\u0142owego (p\u0142ytka CD) +&nbsp; raportu&nbsp;na papierze&nbsp;(razem z p\u0142ytk\u0105 w koszulce foliowej)&nbsp;zawieraj\u0105cego:<br \/>\n<\/span><\/p>\n<p align=\"justify\"><span style=\"font-size: medium\">a) Dane wykonawc\u00f3w i prowadz\u0105cego + tre\u015b\u0107 zadania,<br \/>\nb) Kodu programu z komentarzami.<\/span><\/p>\n<p>c) Opis najistotniejszych algorytm\u00f3w<br \/>\nd) Opis najwa\u017cniejszych modu\u0142\u00f3w (funkcji i zmiennych globalnych)<\/p>\n<p>3.) Kary: za beznadziejny styl programowania max: -5p. za niekompletno\u015b\u0107 punkt\u00f3w c) d) dokumentacji -4p.<\/p>\n<p>Na ostateczn\u0105 liczb\u0119 punkt\u00f3w bardzo du\u017cy wp\u0142yw b\u0119dzie mia\u0142a rozmowa, kt\u00f3ra zostanie w p\u00f3\u017aniejszym terminie przeprowadzona z zespo\u0142em realizuj\u0105cym projekt.<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<\/tr>\n<tr>\n<td>Opracowa\u0142:&nbsp;Wojciech Kwedlo<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Systemy operacyjne Projekt pierwszy &#8211; przyk\u0142adowe tematy Programowanie z wykorzystaniem API system\u00f3w Uniksowych 1.&nbsp;&nbsp;Prosty interpreter<a class=\"read-more\" href=\"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/\" title=\"Poka\u017c artyku\u0142 Systemy operacyjne &#8211; Projekt pierwszy\">wi\u0119cej<\/a><\/p>\n","protected":false},"author":14,"featured_media":0,"parent":364,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"ngg_post_thumbnail":0,"footnotes":""},"class_list":["post-371","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Systemy operacyjne - Projekt pierwszy - Strony pracownik\u00f3w Wydzia\u0142u Informatyki Politechniki Bia\u0142ostockiej<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Systemy operacyjne - Projekt pierwszy - Strony pracownik\u00f3w Wydzia\u0142u Informatyki Politechniki Bia\u0142ostockiej\" \/>\n<meta property=\"og:description\" content=\"Systemy operacyjne Projekt pierwszy &#8211; przyk\u0142adowe tematy Programowanie z wykorzystaniem API system\u00f3w Uniksowych 1.&nbsp;&nbsp;Prosty interpreterwi\u0119cej\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/\" \/>\n<meta property=\"og:site_name\" content=\"Strony pracownik\u00f3w Wydzia\u0142u Informatyki Politechniki Bia\u0142ostockiej\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/\",\"url\":\"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/\",\"name\":\"Systemy operacyjne - Projekt pierwszy - Strony pracownik\u00f3w Wydzia\u0142u Informatyki Politechniki Bia\u0142ostockiej\",\"isPartOf\":{\"@id\":\"https:\/\/wi.pb.edu.pl\/p\/#website\"},\"datePublished\":\"2024-07-18T08:59:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/wi.pb.edu.pl\/p\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"dr hab. in\u017c. Wojciech Kwedlo\",\"item\":\"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Dydaktyka\",\"item\":\"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Systemy operacyjne &#8211; pracownia specjalistyczna\",\"item\":\"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Systemy operacyjne &#8211; Projekt pierwszy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/wi.pb.edu.pl\/p\/#website\",\"url\":\"https:\/\/wi.pb.edu.pl\/p\/\",\"name\":\"Strony pracownik\u00f3w Wydzia\u0142u Informatyki Politechniki Bia\u0142ostockiej\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/wi.pb.edu.pl\/p\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Systemy operacyjne - Projekt pierwszy - Strony pracownik\u00f3w Wydzia\u0142u Informatyki Politechniki Bia\u0142ostockiej","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/","og_locale":"pl_PL","og_type":"article","og_title":"Systemy operacyjne - Projekt pierwszy - Strony pracownik\u00f3w Wydzia\u0142u Informatyki Politechniki Bia\u0142ostockiej","og_description":"Systemy operacyjne Projekt pierwszy &#8211; przyk\u0142adowe tematy Programowanie z wykorzystaniem API system\u00f3w Uniksowych 1.&nbsp;&nbsp;Prosty interpreterwi\u0119cej","og_url":"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/","og_site_name":"Strony pracownik\u00f3w Wydzia\u0142u Informatyki Politechniki Bia\u0142ostockiej","twitter_card":"summary_large_image","twitter_misc":{"Szacowany czas czytania":"4 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/","url":"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/","name":"Systemy operacyjne - Projekt pierwszy - Strony pracownik\u00f3w Wydzia\u0142u Informatyki Politechniki Bia\u0142ostockiej","isPartOf":{"@id":"https:\/\/wi.pb.edu.pl\/p\/#website"},"datePublished":"2024-07-18T08:59:07+00:00","breadcrumb":{"@id":"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/systemy-operacyjne-projekt-pierwszy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/wi.pb.edu.pl\/p\/"},{"@type":"ListItem","position":2,"name":"dr hab. in\u017c. Wojciech Kwedlo","item":"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/"},{"@type":"ListItem","position":3,"name":"Dydaktyka","item":"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/"},{"@type":"ListItem","position":4,"name":"Systemy operacyjne &#8211; pracownia specjalistyczna","item":"https:\/\/wi.pb.edu.pl\/p\/wojciech-kwedlo\/dydaktyka\/systemy-operacyjne-pracownia-specjalistyczna\/"},{"@type":"ListItem","position":5,"name":"Systemy operacyjne &#8211; Projekt pierwszy"}]},{"@type":"WebSite","@id":"https:\/\/wi.pb.edu.pl\/p\/#website","url":"https:\/\/wi.pb.edu.pl\/p\/","name":"Strony pracownik\u00f3w Wydzia\u0142u Informatyki Politechniki Bia\u0142ostockiej","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wi.pb.edu.pl\/p\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"}]}},"_links":{"self":[{"href":"https:\/\/wi.pb.edu.pl\/p\/wp-json\/wp\/v2\/pages\/371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wi.pb.edu.pl\/p\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wi.pb.edu.pl\/p\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wi.pb.edu.pl\/p\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/wi.pb.edu.pl\/p\/wp-json\/wp\/v2\/comments?post=371"}],"version-history":[{"count":1,"href":"https:\/\/wi.pb.edu.pl\/p\/wp-json\/wp\/v2\/pages\/371\/revisions"}],"predecessor-version":[{"id":372,"href":"https:\/\/wi.pb.edu.pl\/p\/wp-json\/wp\/v2\/pages\/371\/revisions\/372"}],"up":[{"embeddable":true,"href":"https:\/\/wi.pb.edu.pl\/p\/wp-json\/wp\/v2\/pages\/364"}],"wp:attachment":[{"href":"https:\/\/wi.pb.edu.pl\/p\/wp-json\/wp\/v2\/media?parent=371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}