.. -*- coding: utf-8 mode: rst -*- .. HUOM: Synkronoitava käsipelillä!! Nämä on viety tässä muodossaan luentomonisteen lukujen alkuun ja demojen introihin, aina siihen lukuun/demoon, jossa tavoitteen saavuttamiseksi on tekstiä tai harjoitteita. JOS TEET MUUTOKSIA TÄHÄN, etsi myös vastaava kohta materiaalista ja muokkaa sielläkin vastaavasti! Ja toisin päin. Olisihan se kiva, jos vaikka tuleva TIM-systeemi pystyisi automaattisesti yhdistämään lokalisoidut osaamistavoitteet jonkun avainsanan perusteella tai muuta... laitetaan kehittäjille toivetta ja näin... Toistaiseksi tämä pitää hoitaa käsipelillä ikävästi. ITKA203 Käyttöjärjestelmät: Osaamistavoitteet =========================================================== en: ITKA203 Operating Systems: Desired Learning Outcomes ======================================================== :ne :Versio: 13.3.2017 Tässä dokumentissa kuvaillaan Jyväskylän yliopiston Informaatioteknologian tiedekunnan aineopintotasoisen kurssin "ITKA203 Käyttöjärjestelmät" osaamistavoitteet. Uusin kehitysversio historiatietoineen on seuraavassa sijainnissa: https://gitlab.jyu.fi/itka203-kurssimateriaali/itka203-kurssimateriaali-avoin/blobs/master/osaamistavoitteet.txt Aiemmin osaamistavoitteet olivat implisiittisessä tenttikysymystärppien ja avainsanalistojen muodossa sekä huomioina harjoitustehtävien johdannoissa. Keväällä 2015 ne ensimmäistä kertaa eksplikoitiin kohdassa `Taustamateriaali ja kansainväliset suositukset`_ mainitun ohjeistuksen mukaisesti. **Opettajat varaavat mahdollisuuden muokata tavoitteita myös kurssin aikana, mikäli tarvetta ilmenee**. Meneillään olevan kurssin osalta versio kiinnitetään viimeistään viimeisellä luennolla, ja sen jälkeen se pidetään samana kolmen tenttikerran ajan. Taustamateriaali ja kansainväliset suositukset ------------------------------------------------------- Laadinnan pohjana käytettiin seuraavaa W5W^2 -projektin tuottamaa ohjetta, johon oman opintotietojärjestelmämme Korpin osaamistavoiteohjeet viittaavat: https://www.uef.fi/documents/1526314/1526337/N%C3%A4in+asennat+osaamistavoitteet+opetussuunnitelmaasi-+laaja+oppim%C3%A4%C3%A4r%C3%A4_OY.pdf/e6750ff0-6f2f-4f55-8f68-d5cc33adca0c Mallina on käytetty ACM:n "computing curriculum" -suosituksia vuosilta 2001 ja 2013 (käyttöjärjestelmien osalta suositus on kohtalaisen muuttumaton näiden versioiden välillä; lisätyt kohteet vaikuttaisivat liittyvän muihin kursseihimme, joten ydinsisältö rakennettiin nyt ensisijaisesti vuoden 2001 mallin mukaisesti): http://wiki.acm.org/cs2001/index.php?title=Operating_systems http://www.acm.org/education/CS2013-final-report.pdf (erit. sivu 138) Tässä tehty ACM-mallin mukautus perustuu paikalliseen kurssikehityskaareen sekä muilla tiedekuntamme kursseilla tarjottavaan opetukseen: Kurssille on valittu tietyt ACM-mallin "elective"-tavoitteet, joita meillä on aiemminkin korostettu. Toisaalta on jätetty pois tavoitteita, jotka kuuluvat omassa OPSissamme joillekin muille kursseille. ACM:n "core"-tavoitteista joitakin on karsittu tämän kurssin rajallisen tuntimäärän vuoksi. Konkreettisiin käytännön esimerkkeihin perustuva toteutusnäkökulma tuo käytännönläheisiä osaamistavoitteita, joita ACM-mallissa ei mainita. Näistä erityisesti ohjelmointiin liittyvät osaamistavoitteet ovat linjassa niiden tutkintojemme profiilin kanssa, joilla tämä kurssi on pakollinen osa. Paikallisen kurssikehityskaaren mukainen tulkinta -------------------------------------------------------- Opintojakson sisältö: `````````````````````` Käyttöjärjestelmän rakenne ja periaatteet, yhdenaikaisuus ja rinnakkaisuus, ajoitus, muistin hallinta, oheislaitteiden hallinta, tiedostojärjestelmä. Opintojakson opetustavoite: ```````````````````````````` Kurssilla esitellään opiskelijalle käyttöjärjestelmien merkitystä, periaatteita ja toteutusratkaisuja yksinkertaistettujen teoreettisten yleiskuvausten sekä konkreettisten koodi-, kuori- ja skriptausesimerkkien kautta. Konkreettisina esimerkkiartefakteina käytetään Linuxin ydintä lähdekoodeineen, POSIX-standardia, bash-kuorta, GNU-työkaluja, C-kieltä ja AMD64-prosessoriarkkitehtuuria. Opintojakson osaamistavoitteet: ```````````````````````````````` Hakasuluissa tavoitelauseiden lopussa on koetettu tehdä ydinainesanalyysiä seuraavasti: - [ydin/arvos1] tarkoittaa välttämätöntä, siis "välttävää", ydinosaamista kurssin läpäisyyn ykkösellä - [ydin/arvos2] tarkoittaa hieman laajempaa, tyydyttävää, ydinosaamista - [edist/arvos3] tarkoittaa laajaa, hyvää, osaamista. - [edist/arvos4] tarkoittaa edistynyttä, kiitettävää osaamista - [edist/arvos5] tarkoittaa edistynyttä, erinomaista osaamista ja ehkä alustavaa "asiantuntijuuttakin". Tämä kurssi on ensimmäinen johdanto aihepiiriin, joten se on enemmän laaja kuin syvä. Niinpä suurin osa osaamistavoitteista, eli kurssin ns. "ydinaines", ovat luonteeltaan melko pintapuolisia ja siten toivottavasti myös yksittäisinä vähemmän työläitä saavuttaa. Ne kuuluvat kolmeen ensimmäiseen tasoon (jotakuinkin vastaten arvosanoja 1-3), joilla kurssin saa läpi ja voi hyvällä omallatunnolla jatkaa opintoja alalla. Kahteen viimeksi mainittuun kategoriaan puolestaan sisältyy erityisesti (1) kurssin luonteen mukaisesti teknisiin yksityiskohtiin ja koodarin kädentaitoihin liittyvää osaamista, joka ylittää pintapuolisen ydinaineksen, sekä (2) aineopintotasoiseen yleistavoitteeseen liittyen tieteellistä ja ammatillista osaamista. Sokerina pohjalla on viimeisenä mainittu yksi ultimaattisempi osaamistavoite, joka parhaimmillaan voisi johtaa käyttöjärjestelmien syvällisempään tutkimiseen esimerkiksi kanditutkielman aihepiirinä. Arvostelun mielessä noudatetaan osittain "määrä korvaa laadun" -periaatetta, jossa tentissä kysytään pääasiassa tasojen 1-4 asioita, vaikka täysillä pisteillä on mahdollista saada arvosanaksi 5. Korkeampiin tasoihin liittyviä vapaaehtoisia demotehtäviä tekemällä voi kuitenkin saada bonuspisteitä, joilla on mahdollista kompensoida unohduksia/lapsuksia tasojen 1-4 asioihin liittyvissä kysymyksissä. Tasojen 4-5 tavoitteet ovat luonteeltaan soveltavia ja luovia, joten niiden saavuttaminen edellyttää oletettavasti tasojen 1-3 osaamista. Arvosanatavoitteen perässä on yksilöivä ID-numero, jota käytetään tenttikohtaisten kysymysten arvonnassa. ID-numero 0 tarkoittaa, että tehtävästä ei ole kevään 2015 tenttiin mennessä keksitty hyvää ja yksikäsitteistä tehtävänantoa, joten se ei ole mukana arvonnassa en: This document lists the learning outcomes of the course ITKA203 Operating Systems. It is originally based on the ACM computing curriculum recommendations: http://wiki.acm.org/cs2001/index.php?title=Operating_systems and http://www.acm.org/education/CS2013-final-report.pdf (esp. page 138; no critical changes since the 2001 recommendations). The objectives have been selected and modified according to the local curriculum and traditions, and then re-translated into English. After completing the course, the student should be able to... :ne Käyttöjärjestelmät -kurssin suoritettuaan opiskelija... **...käyttöjärjestelmän rakenteen ja periaatteiden osalta:** en:**...with regard to operating system structure and principles:** :ne - osaa kuvailla tyypillisen nykyaikaisen käyttöjärjestelmän päätehtävät ja kykenee pääpiirteissään selittämään historian, jonka kautta käyttöjärjestelmien nykymuoto on syntynyt [ydin/arvos1_1] en:- describe the main responsibilities of a contemporary operating system (OS) and to explain the history leading to their current form :ne - osaa luetella käyttöjärjestelmän tärkeimmät osajärjestelmät ja tehtävät, joita kunkin osajärjestelmän vastuulla on [ydin/arvos1_2] en:- list the most fundamental subsystems of an OS and the functions that each subsystem is responsible of :ne - tunnistaa ja osaa antaa esimerkkejä ristiriitaisista tavoitteista ja kompromisseista, joita käyttöjärjestelmän toteutukseen ja asetusten tekemiseen välttämättä liittyy [ydin/arvos1_3] en:- recognize and give examples of conflicting goals and compromises necessary in implementing an OS and configuring its run-time parameters :ne - tuntee olennaisimman käyttöjärjestelmiin liittyvän terminologian ja sanojen tunnetuimmat variaatiot suomeksi ja englanniksi; kykenee kommunikoimaan aiheeseen liittyvistä erityiskysymyksistä kirjallisesti (ja suullisesti; ei kuitenkaan verifioitavissa kirjallisella tentillä) molemmilla kielillä [ydin/arvos1_4] en:- know the common English terminology related to OSs along with the most common variations of the terms; to discuss OS issues in written and spoken English :ne - osaa kuvailla käyttöjärjestelmille tyypilliset abstraktiot (prosessit, resurssit, tiedostot) sekä kerrosmaisen rakenteen abstraktioiden ja fyysisen laitteiston välillä; osaa kertoa syitä abstraktioiden käyttöön laiteohjauksessa ja kykenee yleistämään abstrahointimenettelyn ohjelmistojen tekemiseen muutoinkin [ydin/arvos1_5] en:- describe the abstractions typical to OSs (processes, resources, files, etc.) and the layered structure between the abstractions and the physical devices; list reasons for using abstractions in device management and extend the idea of abstractions to software development tasks other than OSs. :ne - ymmärtää standardoinnin päämäärät käyttöjärjestelmien (ja muiden rajapintojen) yhteydessä; osaa kertoa, millaisia asioita POSIX-standardi määrittelee ja toisaalta mihin POSIX ei ota kantaa. [ydin/arvos1_6] en:- understand the goals of standardization of OS (and other) interfaces; describe what kinds of things the POSIX standard defines, and, on the other hands, things that POSIX leaves undefined, i.e., up to the specific implementation :ne - tietää ja tunnistaa (sisällön kuvauksen perusteella) tyypillisimmät käyttöjärjestelmässä tarvittavat tietorakenteet (tietyt tietueet sekä niistä muodostuvat taulukot, jonot, listat, pinot, hierarkkiset rakenteet) sekä tietää, mihin tarkoitukseen mitäkin niistä voidaan käyttää. Erityisesti opiskelija osaa tunnistaa ja kuvailla ne käyttöjärjestelmän tietorakenteet, joita käytetään prosessien tilan hallinnassa, sivuttavan virtuaalimuistin hallinnassa, tiedostojärjestelmän toteutuksessa sekä vuoronnuksessa. [ydin/arvos1_7] en:- know and identify (from content description or C code), the most common data structures required in an OS implementation (certain C struc's and arrays, queues, lists, stacks, and hierarchical structures thereof) and know which purpose each of these can be used for. Specifically, the student is able to identify and describe the OS data structures used in process state management, paging virtual memory management, file system management (with "unix i-nodes"), and scheduling. :ne - osaa kertoa, missä olosuhteissa tietokoneen prosessori suorittaa ohjelmakoodia käyttöjärjestelmätilassa ja milloin käyttäjätilassa sekä mitä eroja näillä tiloilla on keskenään [ydin/arvos1_8] en:- tell under which circumstances the processor is executing code either in kernel mode or in user mode, and how these modes differ from each other :ne - tietää, missä olosuhteissa ja millä mekanismilla prosessori siirtyy keskeytyskäsittelyyn; ymmärtää keskeytyskäsittelyn hyödyt ja toisaalta implikaatiot sovellus- ja järjestelmäohjelmistojen kannalta [ydin/arvos1_9] en:- explain under which situations and by what kind of mechanism the processor transitions into interrupt handling; understand the benefits and, on the other hand, the implications, that the processor interrupt handling mechanism has on application and system software :ne - tietää olennaisimmat erot monoliittisen ja mikroydinjärjestelmän välillä [ydin/arvos2_2] en:- know the most important differences between a monolithic and a microkernel OS :ne - osaa esittää C-kielisen tietorakenteen sisällön tietokoneen muistissa sijaitsevien peräkkäisten muistipaikkojen sisältöinä, joilla on yksilölliset osoitteet; erityisesti pystyy toteuttamaan objekti-/tietorakenneviitteen muistiosoitteena. Vastaavasti osaa löytää muistissa olevasta datasta yksinkertaisen C-tietorakenteen komponenttien sijainnin ja sisällön, kun tietorakenne, alkuosoite ja muistin sisältö osoitteen ympäriltä on annettu. [ydin/arvos2_0] en:- represent the contents of a C language data structure as the contents of consecutive memory locations with distinct addresses; especially, the student is able to implement a reference to data as a memory address (C pointer). Likewise, the student is able to identify the location and content of a simple C data structure in the memory space, when given the structure, the start address, and some memory surrounding the start address. :ne - ymmärtää ohjelman suorituksen muistissa sijaitsevien konekielisten käskyjen jonona sekä tyypillisten ohjelmointirakenteiden ilmenemisen konekielessä; tunnistaa konekielisen ohjelman sellaisen nähdessään (AT&T tai Intel -tyyppisenä assemblynä tai disassemblynä) [ydin/arvos2_3] (eikö tämä sisälly seuraavaan tavoitteeseen, jossa aivan simuloidaan mielikuvamallissa konekieltä?? no ei oikeastaan, koska tavallaan tässä on kyseessä "koko prosessorin trace", ei yksittäisen prosessin. Eli varsinainen kysymys on: millaisella tenttikysymyksellä tämän ymmärtämistä mitattaisiin, ehkä erityisesti suhteessa seuraavaan?) en:- understand the execution of a program as the trace of consecutive machine language instructions residing in the computer memory, and how typical programming structures manifest themselves in machine language; recognize a machine language program upon seeing one (in assembly or disassembly either in the AT&T or the Intel dialect) :ne - osaa lukea lyhyitä (so. 2-10 käskyä) suomen kielellä rivi riviltä kommentoituja konekielisiä ohjelmanpätkiä ja muodostaa mielessään (tai kynällä ja paperilla) niiden jäljen sekä niiden suorittamisen aiheuttamat tilapäiset ja pysyvät vaikutukset tietokoneen rekistereihin ja muistiin [edist/arvos4_1] en:- read short (i.e., 2-10 instructions) machine language programs that have been fully commented line-by-line in English describing the workings of each instruction; formulate (using a pen and paper, if necessary) the trace of such a program and follow the temporary and persistent effects of such a program in the state of the registers and the memory of the computer :ne **... yhdenaikaisuuden osalta:** en:**... with regard to concurrency:** :ne - osaa kertoa, kuinka moniajo voidaan toteuttaa yksiprosessorijärjestelmässä ja tietää, kuinka moniprosessorijärjestelmä eroaa yksiprosessorijärjestelmästä sovellusohjelmoijan näkökulmasta [ydin/arvos1_10] en:- describe how multitasking can be implemented in a uniprocessor system, and how application programming differs between a multicore system and a uniprocessor one :ne - osaa kuvailla prosessin elinkaaren vaiheet tilakaavion avulla sekä tulkita annettua tilakaaviota [ydin/arvos1_11] en:- provide an annotated state diagram that describes the states and state transitions during the whole lifetime of a process; likewise, interpret such a state transition diagram :ne - tunnistaa ja osaa luetella tilanteita, joissa samanaikaisten prosessien tai säikeiden käyttäminen on edullista ongelman ratkaisemiseksi (sisältäen muiden muassa lähtökohtaisen tarpeen moniajokäyttöjärjestelmälle) [ydin/arvos1_12] en:- identify and list application scenarios in which it is useful to use multiple threads of execution (including the fundamental need for multitasking in an OS) :ne - osaa selittää prosessin käsitteen sekä käyttöjärjestelmän prosessielementin ja prosessitaulun rakenteen pääpiirteet; tunnistaa prosessielementin nähdessään sellaisen ja osaa arvioida, onko kyseisessä elementissä mukana kaikki tarpeellinen tyypillisimpien käyttöjärjestelmätehtävien hoitamiseksi [ydin/arvos1_13] en:- explain the concept of a process and the process control block (PCB) in a typical OS; recognize a PCB upon seeing the C code of such, and assess whether such a data structure contains everything that is necessary to handle the main tasks of a modern OS :ne - osaa selittää prosessin ja säikeen eron [ydin/arvos1_14] en:- explain the difference between a process and a thread :ne - osaa antaa konkreettisen koodi- tai pseudokoodiesimerkin, joka voi johtaa lukkiutumistilanteeseen tai kilpa-ajosta aiheutuvaan datan korruptoitumiseen; vastaavasti osaa kertoa, onko annetussa esimerkkikoodissa mahdollisuus jompaan kumpaan ongelmaan [ydin/arvos2_4] en:- provide a concrete example (in C or in some pseudocode) of code that can lead to deadlock or data corruption due to a race; likewise, the student is able to tell whether a given code example (in C or similar pseudocode) has a bug that makes deadlock or data corruption likely to occur :ne - muistaa yksinkertaisimmat yhdenaikaisen suorituksen aiheuttamat haasteet (poissulkua, synkronointia edellyttävät tilanteet) ja osaa ratkaista ne käyttäen (POSIX-) semaforeja [edist/arvos3_1] en:- remember the most elementary challenges in concurrent programming (i.e., situations requiring mutual exclusion and synchronization) and solve them using semphores (as defined by the POSIX threading interface). :ne - osaa verifioida tuottaja-kuluttaja -ongelman ratkaisemiseksi ehdotetun esimerkkikoodin oikeellisuuden, eli ratkaiseeko se oikeasti ongelman vai ei. [ydin/arvos2_5] (eikö tämä sisälly olennaisesti edelliseen?) en:- verify whether a given C (or similar pseudocode) program correctly solves the producer-consumer problem using multi-valued semaphores :ne - osaa selittää (POSIX-tyyppisen) semaforin käsitteenä, (POSIX-yhteensopivan) alustan tietorakenteena sekä sovellusohjelmalle tarjottavana rajapintana; muistaa semaforikäsitteen historian ja pystyy luettelemaan esimerkkisovelluksia [ydin/arvos2_6] en:- explain the semaphore (as defined by POSIX) as a concept, a data structure of a platform (esp. as defined by POSIX concurrency), and as an application interface; remember the history of the semaphore concept and list traditional examples of application :ne - osaa nimetä semaforin lisäksi muita tapoja vastaavanvahvuisen synkronoinnin tuottamiseksi. [ydin/arvos2_7] en:- remember names of synchronization methods other than semaphores:ne - osaa luetella ja selittää yksinkertaisia vuoronnusmenetelmiä sekä antaa esimerkkejä tilanteista, joissa kukin niistä voisi olla edullisempi valinta kuin jokin toinen; vastaavasti osaa valita annetuista vaihtoehdoista sopivimman vuoronnusmenetelmän annetussa skenaariossa [ydin/arvos2_0] (2015 ja 2016 tulee tentti niin pian, ettei tälle asialle jää lukuaikaa; jatkossa vois olla käsittely varhaisemmassa vaiheessa kurssia jolloin voisi kysyä järkevästi? Tai sitten vois suosiolla hyväksyä, että ei kuulu meidän peruskurssille?) en:- list and explain simple scheduling algorithms and give examples of applications in which each scheduler could be more beneficial than the others; likewise, choose the most suitable scheduling algorithm from a number of given choices, given an application scenario :ne - osaa antaa esimerkkejä vuoronnuksen yleisten periaatteiden ilmenemisestä muissakin yhteyksissä kuin käyttöjärjestelmän prosessivuorontajassa [ydin/arvos2_9] en:- give examples of scheduling algorithms used in other context than OSs. :ne - osaa kertoa, mitä tarkoittaa reaaliaikajärjestelmä ja antaa esimerkkejä reaaliaikajärjestelmistä [edist/arvos3_2] en:- provide a useful definition for a realtime system; give examples of actual realtime systems :ne - (?) tietää, mitä on pre-emptiivinen deadline-vuoronnus ja missä tilanteessa sitä esimerkiksi tarvitaan [edist/arvos3_0] (2015 ja 2016 jäi vähän loppupuolelle kurssia) en:- know what pre-emptive scheduling and deadline scheduling are and in what kind of situations these are necessary :ne **... muistinhallinnan osalta:** en:**... with regard to memory management:** :ne - osaa selittää, mikä on tietokoneiden muistihierarkia ja siihen liittyvät kompromissit [ydin/arvos1_15] en:- explain the typical (physical) computer memory hierarchy and the compromises involved in using such a hierarchy :ne - tietää, mikä on lokaalisuusperiaate, miten sitä hyödynnetään muistijärjestelmässä sekä kuinka periaate on yleistettävissä muihin sovelluksiin [ydin/arvos2_10] en:- know what the principle of locality stands for, how it is used in a typical memory system, and how the principle can be used in applications other than computer technology and OSs. :ne - osaa selittää sivuttavan virtuaalimuistin toimintaperiaatteen ja kuvailla sen toteuttamiseksi tarvittavat käyttöjärjestelmän tietorakenteet sekä ohjelmiston ja laitteiston osat [ydin/arvos2_11] (sisältyykö seuraavaan sopivasti?) en:- explain the principles of paging virtual memory (VM) and describe the datastructures and components (both hardware and software) that are necessary to implement paging VM :ne - osaa muuntaa virtuaalimuistiosoitteen fyysiseksi annetun (yksitasoisen) sivutaulun perusteella; ymmärtää sekä osaa selittää jaetun muistialueen toteuttamisen virtuaalisia muistiosoitteita käyttäen [edist/arvos3_3] en:- translate a virtual memory address into a physical address, given a page table (of a given simple "toy" computer with very tiny address space); understand and explain how a shared memory area can be implemented using VM addresses in different processes :ne - osaa kuvailla yksityiskohtaisesti sivunvaihtokeskeytyksen kulun LRU-menettelyssä [edist/arvos4_2] en:- describe how the page fault exception is handled when the reason for fault is a reference to an existing but swapped-out page, and the LRU page replacement algorithm is selected :ne - tietää cache thrashing -ilmiön ja tunnistaa mahdollisuuden sellaisen olemassaoloon yksinkertaisessa koodiesimerkissä; osaa kuvailla keinoja, joilla ilmiöltä voidaan yrittää välttyä; osaa valita kahdesta konkreettisesta koodiesimerkistä sen, jossa ilmiö on vähemmän paha [edist/arvos4_3] en:- explain cache thrashing as a phenomenon, identify the possibility of cache thrashing in a simple code example; describe means to avoid cache thrashing; given two C code examples, select the one which presents a smaller chance of thrashing :ne **... oheislaitteiden hallinnan ja tiedostojärjestelmän osalta:** en:**... with regard to device management, I/O, and file systems:** :ne - osaa kuvailla laiteohjelmistojen kerrosmaisen rakenteen ja I/O-pyynnön sekä I/O-keskeytyksen käsittelyn yleisellä tasolla [ydin/arvos1_16] en:- describe the layered structure of input/output (I/O) software and give a broad overview of I/O interrupt handling :ne - osaa kuvailla tiedon pitkäaikaiseen tallennukseen ja lataamiseen liittyvät vaiheet laitteiston ja ohjelmiston osien toiminnan tasolla [ydin/arvos2_12] en:- describe the phases required of hardware and software components for persistent storage and retrieval of persistent data :ne - tietää DMA:n toimintaperiaatteen hyötyineen ja implikaatioineen [ydin/arvos2_13] en:- understand the idea of direct memory access (DMA) with its advantages and implications :ne - ymmärtää erikoistiedostojen roolin ja "kaikki ilmenee tiedostona -periaatteen" unix-tyyppisissä järjestelmissä; osaa antaa esimerkkejä unixin erikoistiedostoista [edist/arvos3_4] en:- understand the role of special files and the "everything looks like a file" principle in unix-like systems; list examples of special files in a unix system (e.g., Linux) :ne - tietää RAIDin (vähintään muutamien eri tasojen) toimintaperiaatteet hyötyineen ja implikaatioineen [edist/arvos3_5] en:- describe the functional principles of (a couple of levels of) RAID with their benefits and implications :ne - osaa kertoa, miksi naiivisti toteutettu tiedostojärjestelmä voi korruptoitua sähkövirran katketessa ja kuvailla keinot, joilla korruptoitumista voidaan ehkäistä (journalointi) [edist/arvos3_6] en:- explain why a naively implemented file system (FS) can be corrupted upon sudden power loss, and describe (on a general level) some means by which such corruption can be prevented (journaling FSs). :ne - osaa selittää yhden konkreettisen tavan organisoida tiedostojärjestelmä levyllä (unix i-nodet) [edist/arvos4_4] en:- explain one concrete way (traditional unix i-nodes) of organizing a file system on a physical storage medium :ne **... käytännön sovellusten osalta (kuori):** en:**... with regard to applications (shell):** :ne - uskaltaa ja osaa käyttää "unix-tyyppistä" käyttöjärjestelmää, esim. Linuxia, komentorivikuoren avulla sekä pääteyhteyden yli, aiheuttamatta vaaraa omille tiedoille tai häiriötä muille käyttäjille tai järjestelmälle [ydin/arvos1_17] en:- possess the courage and basic skills to use a unix-like OS, e.g., Linux, by means of a command line shell and an SSH terminal connection, without endangering his/her own files or disturbing other users or compromising the availability of the remote system. :ne - osaa käyttää screen -apuohjelman tarjoamia teksti-ikkunoita sekä jotakin yleisesti käytettyä tekstieditoria tietojen manipulointiin tekstimuotoisen pääteyhteyden kautta suoraan linux-palvelimella [ydin/arvos1_0] en:- use the terminal multiplexer program ``screen`` with multiple "windows" and manipulate data directly on a Linux server machine over the terminal connection using some commonly used text editor (such as ``vi`` which is always installed) :ne - tuntee Bourne Again Shell -kuoren (bash) tärkeimmät (erityisesti POSIX-yhteensopivat) sisäänrakennetut komennot sekä yleisimmät unix-tyyppisiin (etenkin POSIX-yhteensopiviin) järjestelmiin asennetut apuohjelmat (grep, find, ...); osaa käyttää näitä manuaalisivujen perusteella sekä arvioida kriittisesti nettifoorumeilta löytyvien ohjeiden laatua [ydin/arvos1_0] (esimerkit jäivät tasolle echo, cat, ls) en:- know the most common (especially POSIX-compliant) internal commands and utility programs available in Bourne Again Shell (bash); use them when "man pages" are available; assess the quality and safety of examples and instructions found in Internet forums, blogs, etc. :ne - osaa tulkita ja rakentaa yksittäisiä bash-komentorivejä, hyödyntäen putkitusta ja tiedostoonohjausta [ydin/arvos1_19] en:- understand (i.e., mentally interpret and "dry-run") and build simple bash command lines that may use pipes (``|``) and output redirection (``>`` and ``>>``) :ne - tunnistaa ja osaa luetella käyttötarkoituksia, joihin yleisesti käytetään kuorikomentojonoja (shell script, "skripti") [ydin/arvos1_20] en:- identify and list purposes for which it is common to use shell scripts :ne - (?) tuntee syntaksin, jolla perusohjelmointirakenteita (muuttujat, ehdot, silmukat, aliohjelmat) käytetään bash -kuoressa; tuntee myös kuoren käytölle ominaiset "||" ja "&&" -syntaksit [ydin/arvos2_0] en:- know the syntax for using basic programming structures (variables, conditionals, loops, functions) in the bash shell; know the typical conditional execution syntaxes of ``||`` and ``&&`` :ne - (?) ymmärtää komentoriviargumenttien ja ympäristömuuttujien roolin sovellusohjelman toimintaympäristön osana; osaa antaa käyttöohjeiden mukaisia argumentteja komentoriviohjelmille sekä julkaista ympäristömuuttujia bash-kuoressa [ydin/arvos2_15] en:- understand the role of command line arguments and environment variables as the part of the environment of an application program; provide arguments to utility programs according to their respective "man pages"; export environment variables in the bash shell. :ne - pystyy lukemaan ja ymmärtämään yksinkertaisia bash -skriptejä, muokkaamaan niitä hallitusti sekä tuottamaan itse alkeellisia skriptejä mallin tai ohjeiden perusteella [ydin/arvos2_16] en:- read and understand simple bash scripts, modify them in a controlled way, and produce simple scripts using examples, tutorials, or hints in Internet forums :ne - (?) osaa asentaa bash -skriptiin signaalinkäsittelijän, joka tekee tarvittavat lopputoimet, kuten väliaikaisten tiedostojen poistamisen [edist/arvos3_0] (2015 ja 2016 ainoastaan vapaaehtoisessa demossa; aikalailla on sellaista käytännön hommaa joka tapauksessa.. ei mitään niikö tenttiasiaa sillai) en:- hook a signal handler to a bash script, for the purpose of removing temporary files and other necessary clean-ups upon premature exit :ne - (?) muistaa apuohjelmia ja keinoja, joilla unix-tyyppisen käyttöjärjestelmän hetkellistä tilaa voidaan tarkastella pääteyhteydellä ja/tai tekstimuotoisella kuorella; kykenee etsimään WWW:stä lisätietoa vastaavien tehtävien suorittamiseen ja arvioimaan kriittisesti ohjeiden laatua ja soveltuvuutta tarpeeseen [edist/arvos3_0] (milläs mittaat tämän toteutumista sitten?) en:- remember some basic utilities that can be used to examine the status of a unix-type operating system over a terminal connection and a command line shell; search and locate instructions for similar tasks from the WWW and evaluate the quality, safety, and suitability of such examples :ne **... käytännön sovellusten osalta (C-kieli, binääritiedostot, kj-kutsut):** en:**... with regard to applications (C language, binary files, OS system calls):** :ne - osaa kääntää valmiita C-ohjelmia ja linkittää objektitiedostoja komentoriviltä GNU-työkaluilla ja suorittaa näin syntyneen ohjelman itsenäisenä prosessina sekä tekstipohjaisen debuggerin kautta [ydin/arvos1_0] en:- compile and link C programs using GNU command line tools and execute the resulting binary program both as a stand-alone process and via the text-based debugger program GDB :ne - (?) osaa selittää vaiheet ja mahdolliset ongelmatilanteet suoritettavan ohjelmatiedoston lataamisessa, dynaamisessa linkittämisessä ja käynnistämisessä [ydin/arvos2_17] (vaiheet tuli 2015 hyvin; ongelmatilanteita ei ehditty paljonkaan) en:- describe the stages and possible problems in loading, dynamic linking, and launching of a binary program file :ne - osaa tarkastella minkä tahansa muotoisen tiedoston sisältöä heksavedoksena (hex dump) ja suoritettavan ohjelmatiedoston sisältöä tekstimuotoisen debuggerin disassemblerilla; osaa tehdä arvion todennäköisestä tiedostoformaatista heksavedoksen perusteella (yleisten tiedostojen kohdalla, mm. tekstitiedostot erilaisin merkistökoodauksin, ELF-ohjelmat, Windows-ohjelmat, JPG ja PNG -kuvat, HTML/XML, ZIP-paketit, docx:t, ym.) [ydin/arvos2_18] en:- examine any file using a hex dump; examine the contents of a binary executable file using the disassembly feature of a text-based debugger (gdb); make a proper heuristic guess of the possible file format using a hex dump (for common files, such as plaintext, UTF-8 possibly with BOM, ELF executable, Windows excutable, JPG, PNG, ZIP, docx) :ne - osaa selittää prosessin virtuaalimuistiavaruuden tyypillisen jaon loogisiin segmentteihin (koodi, data, pino, keko, (käyttöjärjestelmäosio)) sekä antaa esimerkin segmenttien sijoittumisesta avaruuden osoitteisiin [ydin/arvos2_19] en:- explain the typical layout of a process in its virtual address space (code, data, heap, stack, OS memory) and give a concrete example of how the segments may be laid out in practice :ne - osaa lukea, ymmärtää ja muokata lyhyitä (n. 50 riviä kommenttirivien lisäksi) C-kielisiä ohjelmia [edist/arvos3_7] en:- read, understand, and meaningfully modify short (ca. 50 lines in addition to comments) programs in the C language. :ne - ymmärtää ja osaa selittää ohjelman käynnistämisen vaiheet unix-tyyppisten fork() ja exec() -käyttöjärjestelmäkutsujen tapauksessa [edist/arvos3_8] en:- explain the phases of loading and starting a new program image using typical unix-type system calls (also defined by POSIX) fork() and exec(). :ne - ymmärtää suorituspinoon päällekkäin allokoitavien aktivaatiotietueiden käytön aliohjelmien parametrien ja paikallisten muuttujien säilytyksessä; osaa soveltaa tätä tietoa tekstipohjaista debuggeria käyttäen ja kykenee näkemään yhteyden aiemmin opitun oliokielen (esim. C#) viitteiden ja rakenteisen, laiteläheisen kielen (esim. C) muistiosoittimina toteutuvien viitteiden välillä [edist/arvos4_5] en:- understand how the activation records in the execution stack can be used to store function parameters and local variables; apply this knowledge using a text-based debugger and AMD64 binaries; compare and contrast the reference types of object-oriented languages (e.g., C#, Java) and the crude pointer types (memory addresses) of C :ne - osaa ohjeita tai esimerkkiä mukaillen hyödyntää ohjelmalle annettuja komentoriviargumentteja ja ympäristömuuttujia omassa C-ohjelmassa sekä omassa bash-skriptissä jonkin toiminnallisen tavoitteen saavuttamiseksi [edist/arvos3_9] (2015 tuli C-ohjelma hyvin, mutta sh ei niinkään; 2016 jäi myös shell aika vähälle.. ehkä hyvä niin) en:- make use of command line arguments and environment variables in own C programs and bash scripts to achieve some functionality, using instructions or examples as reference :ne - osaa WWW-pohjaista työkalua (lxr) käyttäen paikantaa linux-ytimen uusimman version lähdekoodista jonkin yksinkertaisen käyttöjärjestelmätoiminnallisuuden sijainnin, selvittää sen toteutuksen pääpiirteet lähdekoodin perusteella ja kuvailla nämä suomen kielellä [edist/arvos5_0] en:- locate some simple OS functionality or data structure in the current version of the Linux kernel using a WWW-based tool (lxr), learn (some parts of) the main implementation ideas directly from the source code, and describe these (in general terms) in English :ne **... tieteellisten ja ammatillisten taitojen osalta:** en:**... with regard to scientific and professional skills:** :ne - pystyy seuraamaan käyttöjärjestelmiin liittyvää ammattikeskustelua esimerkiksi lkml-sähköpostilistalla [edist/arvos3_0] en:- follow professional OS discussion for example on the mailing list "lkml" (i.e., the discussion list of real-life Linux kernel developers) :ne - tietää julkaisufoorumeita, joissa käyttöjärjestelmätutkimuksen uusia tieteellisiä tuloksia julkaistaan [ydin/arvos2_0] en:- remember publication forums in which new scientific research on OSs published :ne - osaa hakea oman yliopiston tilaamista tutkimustietokannoista kokotekstiartikkeleita käyttöjärjestelmien osa-alueisiin liittyen [edist/arvos3_0] en:- search some of the scientific article databases subscribed to by the university and find full-text articles regarding OS topics :ne - kykenee lukemaan käyttöjärjestelmiin liittyviä tutkimusartikkeleita ymmärtäen ne vähintään johdannon ja johtopäätösten osalta [edist/arvos4_0] en:- read scientific articles on OSs, understanding at least the introduction and conclusion sections :ne - kykenee löytämään uusien käyttöjärjestelmiin liittyvien tutkimusartikkelien pohjalta "kuumia aiheita" ja toistaiseksi auki olevia tutkimuskysymyksiä [edist/arvos5_0] en:- identify "hot topics" and open research questions related to OSs from the recent research articles by others :ne - kykenee muodostamaan alustavasti käyttöjärjestelmiin liittyvän kanditason tutkimussuunnitelman tai aihe-ehdotuksen ["ultimaattinen tavoite" joka ylittää tämän kurssin sisäiset osaamistavoitteet ja parhaimmillaan muodostaa sillan konkreettisen kandidaattitutkielman puolelle] en:- formulate a preliminary study plan or topic suggestion for a Bachelor Thesis project regarding some OS-related topic (an "ultimate goal" that exceeds all actual learning outcomes of the course) :ne Huom. Ohitetaan tarkoituksellisesti mm. seuraavia tärkeitä asioita: -------------------------------------------------------------------- Tällä kurssilla *ei* käsitellä seuraavia kansainvälisissä sisältösuosituksissa listattuja asioita: en:We intentionally disregard the following recommended topics, since they are covered on other courses of our faculty: :ne - tarkemmat tietoturvakysymykset (hyökkäyskohteet ja -keinot, policyt ym.) en:- details of information security issues :ne - käyttöjärjestelmän suorituskyvyn arvioinnin tarkemmat tavoitteet ja menettelyt (system performance evaluation) en:- performance assessment issues; system performance evaluation :ne - vikasietoisen järjestelmän suunnitteluperusteet (fault tolerant systems design) en:- fault tolerant systems design :ne - sähköisen todistusaineiston kysymykset (digital forensics) en:- digital forensics :ne - moniprosessorijärjestelmän synkronoinnin yksityiskohdat, pilvipalvelut en:- details of multiprocessor systems, cloud computing :ne - tietoliikenteen yksityiskohdat en:- details of telecommunication systems :ne Aiheita käsitellään käyttöjärjestelmiinkin sovellettavissa olevista yleisistä näkökulmista rinnakkaisilla aineopintokursseilla sekä syventävillä jatkokursseilla, mm. Ohjelmistoturvallisuus, Tietoverkkoturvallisuus, Operating System Security 1&2 (sekä muut Informaatioturvallisuus-kurssit), Requirements Engineering, Ohjelmistoarkkitehtuurit, Ohjelmistotestaus, Hajautetut järjestelmät, Introduction to SOA and Cloud Computing, ... Tuloksena syntyvä taulukkomuoto välttävälle osaamiselle (arvosana 1): --------------------------------------------------------------------- Yrittää mukailla ns. Bloomin taksonomiaa. Taulukko on välttämättä karkea yksinkertaistus yllä mainituista täsmällisistä osaamistavoitteista. 1 muistaa 2 ymmärtää 3 osaa soveltaa 4 osaa analysoida 5 osaa arvioida 6 osaa luoda ================================== ================ Osa-alue "Bloomin taso" ================================== ================ Käyttöjärjestelmän merkitys ymmärtää Käyttöjärjestelmän perustoiminta ymmärtää Käyttöjärjestelmän perusrakenne ymmärtää Keskeytysjärjestelmä ymmärtää Rinnakkaisuus osaa soveltaa Tehtävien ajoitus, skedulointi osaa soveltaa Muistin hallinta ymmärtää Oheislaitteiden hallinta ymmärtää Tiedostojärjestelmä ymmärtää Interaktiivinen tekstikuori osaa soveltaa Kuoriskriptit ymmärtää C-kieli ymmärtää ================================== ================