[OSy] Dotazy k 3. rozsirenemu zadani

Petr Stefan ptr.stef at gmail.com
Mon Nov 23 17:19:49 CET 2015


Dobry den,

schromazdil jsem relativne velkou mnozinu zajimavych dotazu k 3. 
rozsirenemu zadani semestralni ulohy, na ktere neumim presvedcive 
odpovedet. Prosim o jejich vysvetleni, urcite se odpovedi budou hodit i 
dalsim.

  * Jak priradit vlaknu cislo ASID? Podle manualu procesoru se cislo
    ASID nastavi do registru EntryHi pri vyjimkach TLB refill a TLB
    invalid. To znamena, ze vlakno musi mit tento identifikator na
    predem danem miste. Ja si myslim, ze je treba nastavit spodnich 8
    bitu v registru t2 (= EntryHi) v kontextu na pocatku zasobniku pri
    vytvareni vlakna. Je to spravne?
  * Podle zadani mame uvazovat, ze nam staci cisla ASID pro vsechna
    vlakna. Jedna se o vlakna spustena v jednu chvili nebo za celkovou
    dobu behu operacniho systemu (jedna se mi o pridelovani techto cisel
    - zda staci jedna promenna nebo je treba mit napriklad bitmapu a
    pridelovat i volna cisla dobehlych threadu)?
  * Kde v pameti uchovavat strankovaci tabulky? Podle me je treba je mit
    v pameti KSEG0, protoze jinak by mohl nastat pripad, kdy pri obsluze
    vyjimky TLB refill potrebuji pristoupit na adresu (strankovaci
    tabulky), ktera take v TLB neni, coz by po chvili pravdepodobne
    vyustilo v pad kernelu. Je nejaka jina moznost jak toto resit?
  * Co ma presne delat vma_map() v KSEG0? Vratit adresu ziskanou z
    frame_alloc(), jen s prictenim 0x80000000?
  * Malloc je kernelovy alokator v Kalistu. Znamena to, ze pracuje jen v
    segmentu KSEG0 nebo v celem adresovem prostoru? Pripadne jaky je
    jeho vztah k virtualnimu adresovemu prostoru (mel by pouzivat volani
    vma_map()?)?
  * Pri vytvareni vlaken se dynamicky alokuje misto pro zasobnik, kde na
    zacatku je explicitne misto pro ulozeni registru (pri prepinani
    kontextu, obsluze vyjimek, ...). Znamena to, ze zasobniky vsech
    vlaken musi byt v KSEG0 nebo vse bude fungovat (context switch,
    vyjimky) i pokud zasobnik prestehujeme nekam do virtualniho
    adresoveho prostoru daneho vlakna (a tedy i do jine pameti nez je
    KSEG0)?
  * Obsluha vyjimek TLB invalid se udela jak? Musime pridat rozpoznani
    konkretniho kodu vyjimky do wrapperu vseobecne vyjimky, kde jiz
    muzeme zavolat vlastni funkci (tj. jedna se o jinou vyjimku nez TLB
    refill a tato jiz nema svou vlastni obsluhu, ale pouziva se
    vseobecna vyjimka)?
  * Rezimy procesoru User/Supervisor/Kernel. K cemu to slouzi? Vim jak
    zjistit v jakem rezimu se nachazim, ale podle toho co jsem nasel se
    tyto rezimy lisi jen v tom, na ktere adresy hardware vyhodi vyjimku
    Address Error. Je to tak?
  * Jsou nejake specialni pozadavky pro testy tohoto ukolu? Napriklad
    nastavit velikost pameti RAM na nejake vetsi cislo (treba 2GB) aby
    bylo mozno alokovat i z USEG segmentu? Pripadne podpora nesouvisle
    pameti pres cely adresovy prostor (prochazet 4 GB adresoveho
    prostoru a hledat jestli nekde nahodou neni volna pamet)?
  * Muzete mi prosim vysvetlit tento odstavec z knihy See MIPS Run?
      o If you make your page table start at a 4-MB boundary [jedna se o
        KSEG2 segment] (since it's in virtual memory, any gap created
        won't use up physical memory space) and set up the Context
        PTEBase field with the high-order bits of the page table
        starting the address, then, following a user refill exception,
        the Context register will contain the address of the entry you
        need for the refill with no further calculation needed.
      o Jedna se o stranu 143-144, kapitola 6.5 Hardware-Friendly Page
        Tables and Refill Mechanism, k nahlednuti na Google Knihy. Zni
        to hrozne zajimave a chtel bych pochopit, jak neceho takoveho
        lze dosahnout.


To je zatim asi vse. Predem dekuji za odpovedi. Protoze mam jeste techto 
hodne nejasnosti, tak vyuziji vasi nabidky a prehodim si cviceni az na 
dalsi tyden (predpokladam ze se mohu zucastnit prave jednoho).
S pozdravem,

Petr Stefan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://d3s.mff.cuni.cz/pipermail/nswi004/attachments/20151123/5a323238/attachment.html>


More information about the NSWI004 mailing list