OS Scheduler Project
์ด ํ๋ก์ ํธ๋ Python Flask์ pywebview๋ฅผ ์ด์ฉํ ๋ฉํฐ์ฝ์ด FCFS ์ค์ผ์ค๋ฌ ์๋ฎฌ๋ ์ดํฐ์ ๋๋ค.
๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ
/ (ํ๋ก์ ํธ ๋ฃจํธ) โโโ os_app.py # Flask ์๋ฒ ๋ฐ pywebview ์ฐฝ ์์ฑ ์ํธ๋ฆฌํฌ์ธํธ โโโ scheduler.py # FCFS ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ (fcfs_schedule_multi) โโโ requirements.txt # Python ์์กด ํจํค์ง ๋ชฉ๋ก (flask, pywebview ๋ฑ) โโโ .gitignore # Git์์ ์ ์ธํ ํ์ผ/๋๋ ํฐ๋ฆฌ ํจํด โโโ static/ # ํ๋ก ํธ์๋ ์ ์ ํ์ผ ํด๋ โโโ index.html # ๋ฉ์ธ HTML ํ์ด์ง โโโ app.js # ํด๋ผ์ด์ธํธ ์ธก JS: ์ ๋ ฅ ์ฒ๋ฆฌ, Gantt ์ฐจํธ ๋ ๋๋ง, ์ ๋๋ฉ์ด์ โโโ style.css # (์ ํ) ์ฐจํธ ๋ฐ UI ์คํ์ผ ์ ์
์ฃผ์ ํ์ผ ์ค๋ช
os_app.py
Flask ์ฑ์ ์คํํ๊ณ , /api/fcfs ์๋ํฌ์ธํธ๋ฅผ ํตํด ํ๋ก์ธ์ค ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ค์ผ์ค๋ง ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
pywebview๋ฅผ ์ฌ์ฉํด ๋ฐ์คํฌํ GUI ์ฐฝ์ผ๋ก ์ธ์ฝ๋ฉ๋ ์น UI๋ฅผ ๋์๋๋ค.
scheduler.py
fcfs_schedule_multi(processes, cores) ํจ์ ๊ตฌํ๋ถ๊ฐ ๋ค์ด ์์ต๋๋ค.
Process ๋ชฉ๋ก๊ณผ P/E ์ฝ์ด ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ๋ฐ์ First-Come-First-Serve ์ค์ผ์ค๋ง์ ์ํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํฉ๋๋ค.
static/index.html
์ ๋ ฅ ํผ(ํ๋ก์ธ์ค ์, ๋์ฐฉ/์๋น์ค ์๊ฐ, P/E ์ฝ์ด ์ค์ )๊ณผ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ Gantt ์ฐจํธ๋ฅผ ์ ์ํ HTML ๋ฌธ์์ ๋๋ค.
static/app.js
DOMContentLoaded ์ด๋ฒคํธ๋ก ๋ฒํผ ํด๋ฆญ ํธ๋ค๋ฌ(genFields, runFCFS)๋ฅผ ๋ฑ๋กํฉ๋๋ค.
/api/fcfs ํธ์ถ ํ ์ค์ผ์ฅด ๊ฒฐ๊ณผ๋ก Gantt ์ฐจํธ๋ฅผ ๊ทธ๋ฆฌ๊ณ , marker ์ ๋๋ฉ์ด์ ์ ์คํํฉ๋๋ค.
static/style.css
์ฐจํธ ๋ฐ ๋ฒํผ, ์ ๋ ฅ์ฐฝ ๋ฑ์ ๊ธฐ๋ณธ ์คํ์ผ์ ์ ์ํฉ๋๋ค.
requirements.txt
Flask pywebview
pip install -r requirements.txt๋ก ํ์ํ ํจํค์ง๋ฅผ ํ ๋ฒ์ ์ค์นํ ์ ์์ต๋๋ค.
์คํ ๋ฐฉ๋ฒ
์์กด์ฑ ์ค์น
pip install -r requirements.txt
์ฑ ์คํ
python os_app.py
GUI ์ฐฝ์ด ์ด๋ฆฌ๋ฉด ํ๋ก์ธ์ค ์, ๋์ฐฉ/์๋น์ค ์๊ฐ, P/E ์ฝ์ด ์ ๋ฑ์ ์ ๋ ฅํ๊ณ ์ค์ผ์ค๋ฌ๋ฅผ ์คํํ์ธ์.
๋ณธ README๋ ํ๋ก์ ํธ์ ์ ์ฒด ๊ตฌ์กฐ์ ๊ฐ ํ์ผ์ ์ญํ ์ ํ๋์ ํ์ ํ ์ ์๋๋ก ์์ฑ๋์์ต๋๋ค.