publish: K04 scheduler-states v00.01
This commit is contained in:
@@ -0,0 +1,248 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../../../tools/card-layouts/schemas/card-source.schema.json",
|
||||||
|
"schema": "esc-card-source.v1",
|
||||||
|
"card": {
|
||||||
|
"id": "mpabi-freertos-cpp-04-scheduler-states",
|
||||||
|
"series": "freertos-cpp",
|
||||||
|
"series_title": "FreeRTOS C++",
|
||||||
|
"number": "04",
|
||||||
|
"count": "16",
|
||||||
|
"slug": "scheduler-states",
|
||||||
|
"title": "Scheduler: stany, priorytety i typowane ticki",
|
||||||
|
"topic": "READY/RUNNING/BLOCKED, time slicing, priority preemption i czas tickowy",
|
||||||
|
"project": "Freestanding C++ nad FreeRTOS",
|
||||||
|
"subject": "Informatyka",
|
||||||
|
"level": "Rok 2 · L03 · RV32I/Hazard3",
|
||||||
|
"revision_date": "2026-07-19T00:00:00+02:00",
|
||||||
|
"status": "Gotowa",
|
||||||
|
"version": "v00.01",
|
||||||
|
"uuid": "853a7dd7-b00b-4f4a-96e8-c160fc5bb04a",
|
||||||
|
"author": "M. Pabiszczak",
|
||||||
|
"year": "2026"
|
||||||
|
},
|
||||||
|
"generated": {
|
||||||
|
"tex": "doc/generated/main.tex",
|
||||||
|
"html": "web/index.html",
|
||||||
|
"html_css": "web/style.css",
|
||||||
|
"html_tree_inspector": false,
|
||||||
|
"react_app": true
|
||||||
|
},
|
||||||
|
"template": "templates/karta-klasyczna.json",
|
||||||
|
"title_block": {
|
||||||
|
"category": "KARTA PRACY · INFORMATYKA",
|
||||||
|
"prepared_by": "M. Pabiszczak",
|
||||||
|
"prepared_on": "2026-07-19T00:00:00+02:00",
|
||||||
|
"title": "Scheduler: stany, priorytety i typowane ticki",
|
||||||
|
"repository_url": "https://zsl-gitea.mpabi.pl/edu-freertos-cpp/lab-rv32i-freertos-scheduler-states",
|
||||||
|
"revision": "v00.01",
|
||||||
|
"issued_on": "2026-07-19T00:00:00+02:00",
|
||||||
|
"series": "FREERTOS-CPP-04",
|
||||||
|
"document_type": "karta pracy",
|
||||||
|
"tool": "card-layouts",
|
||||||
|
"show_qr": false,
|
||||||
|
"show_repository_qr": false,
|
||||||
|
"height_cm": 2.6,
|
||||||
|
"repeat_on_every_page": true,
|
||||||
|
"replace_front_matter": true
|
||||||
|
},
|
||||||
|
"front_page_scope": {
|
||||||
|
"title": "Cel karty",
|
||||||
|
"content_tex": "Uczeń przewiduje i odtwarza stany dwóch tasków, mierzy blokadę w tickach i dowodzi natychmiastowego wywłaszczenia porządkiem BEFORE--HIGH--AFTER.",
|
||||||
|
"scope_title": "Zakres karty",
|
||||||
|
"scope_content_tex": "Jedno zadanie uruchamia prawdziwy scheduler FreeRTOS na Hazard3. Warstwa C++ dodaje tylko typy \\texttt{Ticks}, \\texttt{TickPoint} oraz nieposiadający \\texttt{TaskRef}; pełna fasada schedulera i własność taska są poza zakresem."
|
||||||
|
},
|
||||||
|
"side_margin_tree_layout": {
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"id": "zawodowe",
|
||||||
|
"label": "TECH",
|
||||||
|
"side": "left",
|
||||||
|
"tree": "WE -> EK -> KW",
|
||||||
|
"description": "Dowód ze śladu FreeRTOS i Hazard3."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ogolne",
|
||||||
|
"label": "OG",
|
||||||
|
"side": "right",
|
||||||
|
"tree": "WE -> EN -> KW",
|
||||||
|
"description": "Rozumowanie o czasie i kwalifikacji do CPU."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"learning_effects": {
|
||||||
|
"K04.EN01": {
|
||||||
|
"bloom_level": "Analiza",
|
||||||
|
"label": "Model schedulera",
|
||||||
|
"text": "Uczeń wyjaśnia związek stanu, priorytetu i gotowości oraz odróżnia czas trwania od punktu tickowego.",
|
||||||
|
"assessment_criteria": ["K04.KW01"]
|
||||||
|
},
|
||||||
|
"K04.EK01": {
|
||||||
|
"bloom_level": "Zastosowanie",
|
||||||
|
"label": "Ślad przełączeń",
|
||||||
|
"text": "Uczeń odtwarza osiem snapshotów, alternację równych priorytetów, blokadę na trzy ticki i natychmiastowe wywłaszczenie.",
|
||||||
|
"assessment_criteria": ["K04.KW01"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"assessment_criteria": {
|
||||||
|
"K04.KW01": {
|
||||||
|
"text": "Program kończy się PASS; ślad ma relację X,Y,X; A jest obserwowane jako BLOCKED; elapsed=3; B działa z p3 między znacznikami BEFORE i AFTER; osiem snapshotów jest spójnych.",
|
||||||
|
"learning_effects": ["K04.EN01", "K04.EK01"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"educational_requirements": {
|
||||||
|
"K04.WE01": {
|
||||||
|
"text": "Przewidzenie i udowodnienie decyzji schedulera FreeRTOS.",
|
||||||
|
"label": "Stany, priorytety i ticki",
|
||||||
|
"learning_effects": ["K04.EN01", "K04.EK01"],
|
||||||
|
"learning_tree": {
|
||||||
|
"schema": "we-learning-tree.v1",
|
||||||
|
"policy": "Każde twierdzenie o schedulerze ma odpowiadający snapshot, tick albo znacznik kolejności.",
|
||||||
|
"ogolne": [
|
||||||
|
{
|
||||||
|
"effect_ref": "K04.EN01",
|
||||||
|
"display": "EN LOCAL RTOS.MODEL.01",
|
||||||
|
"source": "LOCAL",
|
||||||
|
"official": "RTOS.MODEL",
|
||||||
|
"local": "01",
|
||||||
|
"kind": "EN",
|
||||||
|
"tree_id": "K04.WE01.OG.LOCAL.RTOS.MODEL.01",
|
||||||
|
"text": "Analizuje gotowość, stan, priorytet i jednostkę czasu.",
|
||||||
|
"kw": [
|
||||||
|
{
|
||||||
|
"criterion_ref": "K04.KW01",
|
||||||
|
"display": "KW LOCAL RTOS.MODEL.01",
|
||||||
|
"source": "LOCAL",
|
||||||
|
"kind": "KW",
|
||||||
|
"official": "RTOS.MODEL",
|
||||||
|
"local": "01",
|
||||||
|
"text": "Wyjaśnia BLOCKED mimo wysokiego priorytetu oraz relative delay kontra periodic reference."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"zawodowe": [
|
||||||
|
{
|
||||||
|
"effect_ref": "K04.EK01",
|
||||||
|
"display": "EK LOCAL DBG.SCHED.01",
|
||||||
|
"source": "LOCAL",
|
||||||
|
"official": "DBG.SCHED",
|
||||||
|
"local": "01",
|
||||||
|
"kind": "EK",
|
||||||
|
"tree_id": "K04.WE01.TECH.LOCAL.DBG.SCHED.01",
|
||||||
|
"text": "Koreluje snapshoty, ticki i kolejność wykonania z decyzjami kernela.",
|
||||||
|
"kw": [
|
||||||
|
{
|
||||||
|
"criterion_ref": "K04.KW01",
|
||||||
|
"display": "KW LOCAL DBG.SCHED.01",
|
||||||
|
"source": "LOCAL",
|
||||||
|
"kind": "KW",
|
||||||
|
"official": "DBG.SCHED",
|
||||||
|
"local": "01",
|
||||||
|
"text": "Pokazuje X,Y,X; elapsed=3; A BLOCKED; B/p3 oraz porządek 1,2,3."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sections": [
|
||||||
|
{
|
||||||
|
"title": "Stan i gotowość do wykonania",
|
||||||
|
"content_kind": "prose",
|
||||||
|
"content_tex": "Zadanie o najwyższym priorytecie wygrywa tylko wtedy, gdy jest gotowe. Przewidź READY, RUNNING, BLOCKED i DELETED w ośmiu punktach.",
|
||||||
|
"educational_requirement_refs": ["K04.WE01"],
|
||||||
|
"learning_effect_refs": ["K04.EN01"],
|
||||||
|
"assessment_criterion_refs": ["K04.KW01"],
|
||||||
|
"area_tree_refs": ["K04.WE01.OG.LOCAL.RTOS.MODEL.01"],
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"id": "S01",
|
||||||
|
"title": "Wypełnij tabelę stanów przed uruchomieniem kodu.",
|
||||||
|
"tree_refs": ["K04.WE01.OG.LOCAL.RTOS.MODEL.01"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "S02",
|
||||||
|
"title": "Wyjaśnij, dlaczego BLOCKED/p4 przegrywa z READY/p2.",
|
||||||
|
"tree_refs": ["K04.WE01.OG.LOCAL.RTOS.MODEL.01"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Time slicing i blokada na trzy ticki",
|
||||||
|
"content_kind": "prose",
|
||||||
|
"content_tex": "Dopuść A--B--A albo B--A--B, a następnie pokaż A jako BLOCKED i różnicę end-start równą 3 ticki.",
|
||||||
|
"educational_requirement_refs": ["K04.WE01"],
|
||||||
|
"learning_effect_refs": ["K04.EK01"],
|
||||||
|
"assessment_criterion_refs": ["K04.KW01"],
|
||||||
|
"area_tree_refs": ["K04.WE01.TECH.LOCAL.DBG.SCHED.01"],
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"id": "S03",
|
||||||
|
"title": "Sprawdź relację first==third i first!=second.",
|
||||||
|
"tree_refs": ["K04.WE01.TECH.LOCAL.DBG.SCHED.01"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "S04",
|
||||||
|
"title": "Zapisz snapshot BLOCKED/RUNNING oraz trzy ticki elapsed.",
|
||||||
|
"tree_refs": ["K04.WE01.TECH.LOCAL.DBG.SCHED.01"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Natychmiastowe wywłaszczenie po zmianie priorytetu",
|
||||||
|
"content_kind": "prose",
|
||||||
|
"content_tex": "A zapisuje BEFORE=1, podnosi B do p3 i dopiero po wznowieniu zapisuje AFTER=3. B musi zapisać HIGH=2 pomiędzy nimi.",
|
||||||
|
"educational_requirement_refs": ["K04.WE01"],
|
||||||
|
"learning_effect_refs": ["K04.EK01"],
|
||||||
|
"assessment_criterion_refs": ["K04.KW01"],
|
||||||
|
"area_tree_refs": ["K04.WE01.TECH.LOCAL.DBG.SCHED.01"],
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"id": "S05",
|
||||||
|
"title": "Pokaż B jako RUNNING/p3, gdy A jest READY/p2.",
|
||||||
|
"tree_refs": ["K04.WE01.TECH.LOCAL.DBG.SCHED.01"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "S06",
|
||||||
|
"title": "Udowodnij porządek markerów 1,2,3.",
|
||||||
|
"tree_refs": ["K04.WE01.TECH.LOCAL.DBG.SCHED.01"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Typy i granica nieposiadającej referencji",
|
||||||
|
"content_kind": "prose",
|
||||||
|
"content_tex": "Ticks opisuje czas trwania, TickPoint punkt licznika, a TaskRef tylko widok uchwytu. Po usunięciu taska widok może wisieć.",
|
||||||
|
"educational_requirement_refs": ["K04.WE01"],
|
||||||
|
"learning_effect_refs": ["K04.EN01"],
|
||||||
|
"assessment_criterion_refs": ["K04.KW01"],
|
||||||
|
"area_tree_refs": ["K04.WE01.OG.LOCAL.RTOS.MODEL.01"],
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"id": "S07",
|
||||||
|
"title": "Porównaj vTaskDelay z xTaskDelayUntil.",
|
||||||
|
"tree_refs": ["K04.WE01.OG.LOCAL.RTOS.MODEL.01"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "S08",
|
||||||
|
"title": "Uzasadnij brak odczytu przez TaskRef po delete.",
|
||||||
|
"tree_refs": ["K04.WE01.OG.LOCAL.RTOS.MODEL.01"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tasks": {
|
||||||
|
"task01": {
|
||||||
|
"title": "Osiem snapshotów decyzji schedulera",
|
||||||
|
"uuid": "853a7dd7-b00b-4f4a-96e8-c160fc5bb04a",
|
||||||
|
"prompt_tex": "Przewidź tabelę stanów, uruchom Hazard3 i udowodnij time slicing, blokadę na trzy ticki oraz wywłaszczenie kolejnością BEFORE--HIGH--AFTER.",
|
||||||
|
"criterion": "Ślad X,Y,X; A=BLOCKED/B=RUNNING; elapsed=3; B/p3 między znacznikami 1 i 3; osiem snapshotów; pass=1.",
|
||||||
|
"educational_requirement_refs": ["K04.WE01"],
|
||||||
|
"learning_effect_refs": ["K04.EN01", "K04.EK01"],
|
||||||
|
"assessment_criterion_ref": "K04.KW01",
|
||||||
|
"links": {"equations": [], "figures": []}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tasks_order": ["task01"]
|
||||||
|
}
|
||||||
BIN
Binary file not shown.
Reference in New Issue
Block a user