מערכות הפעלה
Download
Report
Transcript מערכות הפעלה
מערכות הפעלה
תרגול - 1מבוא
ברוכים הבאים לקורס מערכות הפעלה!
אדמיניסטרציה
מערכת ההפעלה שתודגם בקורס היא :XINU
הכנה לעבודה בXINU-
הרצת ישומים
תהליכים
קריאות מערכת הפעלה
2
מערכות הפעלה -תרגול 1
אדמיניסטרציה
3
מתרגלת :נועה פריבמן חורש
תרגולים :יום ד'12:00-14:00 ,
יום ה'18:00-20:00 ,
שעות קבלה :יום ד'( 10:00-11:00 ,לתאם מראש במייל)
אתר הקורסhttp://sci.haifa.ac.il/courses/oscourse/:
תרגילי בית :הגשה בזוגות
מערכות הפעלה -תרגול 1
איך מתקינים XINU
באתר לינק ל:
התקנת מערכת הפעלה .XINU התקנת ערכת פיתוח .Turbo C להוסיף מסלול TCלמשתנה
סביבה PATH
(למשל )c:\tc\bin
4
מערכות הפעלה -תרגול 1
ex1.с – תכנית ראשונה
XINU- הפונקציה הראשית ב- xmain
? מה התכנית עושה
#include <conf.h>
xmain)(
{
putc)CONSOLE, ‘h’(;
putc)CONSOLE, ‘i’(;
putc)CONSOLE, ‘\n’(;
}
1 תרגול- מערכות הפעלה
5
איך להריץ ?ex1.c
לפתוח )cmd.exe( command line
להריץ Turbo Cכדי לקבל קובץ exe
tcc -I.. ex1.c ..\xinu.lib > errs
קובץ errsמכיל את תוצאות הקומפילציה .כדי לפתוח אותו:
type errs
לפתוח קובץ exeשהתקבל כדי להריץ ישום ( ex1.exeבדוגמה)
הערה Ctrl-F1 :מאפשר לראות את הנתונים הפנימיים של מערכת
6
מערכות הפעלה -תרגול 1
מערכות הפעלה – מבוא
Linux
Unix
Novell - NetWare
MS Windows
1 תרגול- מערכות הפעלה
Mac OS X
7
מערכות הפעלה – נעים להכיר!
מהי מערכת ההפעלה?
אפליקציה
4
שכבת תוכנה לניהול
והסתרת פרטים של
חומרת המחשב.
מנהלת את משאבי
המערכת ומשתפת אותם
בין תהליכים ,תוכניות,
ומשתמשים.
8
אפליקציה
3
אפליקציה
2
אפליקציה
1
מערכת הפעלה
Device
Printer
controller
memory
מערכות הפעלה -תרגול 1
Disk
controller
CPU
סוגי מערכות הפעלה
9
עם תהליך יחיד )(MS DOS
ריבוי תהליכים )(MS Windows, UNIX
ריבוי מעבדים )(HYDRA
מערכות מבוזרות )(Amoeba
מערכות (VxWorks, Windows CE) real time
מערכות הפעלה -תרגול 1
מערכות הפעלה ומבנה המחשב
התנהגות מערכת ההפעלה מוכתבת (חלקית) על-
ידי החומרה שעליה היא רצה
סט פקודות ,רכיבים מיוחדים
החומרה יכולה לפשט /לסבך משימות מערכת
ההפעלה
מחשבים ישנים לא סיפקו תמיכה לזיכרון וירטואלי
10
מערכות הפעלה -תרגול 1
מנגנוני חמרה לתמיכה
במערכת ההפעלה
שעון חומרה
פעולות סנכרון אטומיות
פסיקות
קריאות מערכת-הפעלה
פעולות בקרת קלט /פלט
הגנת זיכרון
אופן עבודה מוּגן ()protected
11
מערכות הפעלה -תרגול 1
רכיבי מערכת הפעלה
מנהל תהליכים
מנהל זיכרון
מנהל קלט /פלט
מנהל קבצים
הגנה
ניהול חשבונות משתמשים
ממשק משתמש ()shell
12
זאת ועוד...
אתחול
גיבוי
...
דפדפן?
מערכות הפעלה -תרגול 1
קריאות מערכת הפעלה
קריאת מערכת הפעלה היא פונקציה המהווה ממשק בין
המשתמש ושירותי מערכת ההפעלה
קריאות מערכת הפעלה מבצעות בדיקות תקינות
הפרמטרים המועברים (מזהה תהליך קיים ,פרמטר
בתחום המותר ,ועוד)
13
מערכות הפעלה -תרגול 1
קריאות מערכת הפעלה
משתמש יכול לגשת רק
לקריאות מערכת
הפעלה
פונקציות פנימיות של
מערכת הפעלה מוגנות
מפני המשתמש
14
תכניות משתמש
קריאות
מערכת
הפעלה
מערכת ההפעלה
חומרה
מערכות הפעלה -תרגול 1
קריאות מערכת הפעלה XINU
קריאות מערכת יחזירו ( SYSERRערך )-1עבור קריאה
לא תקינה
בסיום ביצוע תקין קריאות מ"ה מחזירות ערך מספרי.
חלקן מחזירות ( OKערכו )1
עבור קריאות מערכת הפעלה מובטח שביצוע בו-זמני
יהיה תקין
15
מערכות הפעלה -תרגול 1
תהליכים
תהליך הוא ביצוע של תכנית
תהליכים יוצרים אשליה של הרצת מספר
אפליקציות במקביל
לכל תהליך – תכנית אחת ,לתכנית אחת יכולים
להיות תהליכים רבים מתבצעים בו זמנית
16
מערכות הפעלה -תרגול 1
תהליכים
17
לתהליך אין השתקפות בחומרה ,תהליכים הם מושג
הממומש בתוכנה
נקרא גם job, task, sequential process
הערה :התכניות שכתבתם עד עתה בקורסים קודמים
רצו כולן כתהליכים בודדים
מערכות הפעלה -תרגול 1
תהליכים
תהליכים יכולים לשתף פעולה עם תהליכים אחרים,
ובכך מתאפשרת כתיבה של תכניות המורכבות מכמה
תהליכים ,שכל אחד מהם מבצע חלק מהעבודה
במקרים רבים קל יותר ותחזוקתי יותר לכתוב תכניות
המורכבות מכמה תהליכים מאשר לכתוב תכנית בעלת
תהליך יחיד המבצעת את אותה העבודה
18
מערכות הפעלה -תרגול 1
ריבוי תהליכים
תהליכים עוקבים
A
t A+ t B
B
תהליכים מקבילים
A
B
t A+B
זמן ריצה קצר יותר
זמן
19
מערכות הפעלה -תרגול 1
חלוקת זמן
במערכת מרובת תהליכים פועל כל תהליך כאילו הוא
יחיד במערכת ,ואינו נדרש לתאם את פעולותיו עם
תהליכים אחרים (אלא אם כן רצונו לתאם)
מ"ה אחראית לאפשר לכל התהליכים להתבצע ,אך
בכל רגע נתון ,בדיוק אחד התהליכים מבוצע במעבד
20
מערכות הפעלה -תרגול 1
חלוקת זמן
תזמון בפועל
תכנית B
תכנית A
A
תכנית A
2
1
B
3
A
אבסטרקציה
2
מחכה
מ
למעבד
3
A
מחכה
למעבד
B
A
21
מערכות הפעלה -תרגול 1
מחכה לקלט
2
A
מחכה
לקלט
3
1
1
2
זמן
חלוקת זמן
תהליך יכול לוותר על המעבד בכמה דרכים:
בקשות קלט/פלט בהן עליו לחכות לסיום ביצוע הבקשה
בקשה לחכות לאירוע כלשהו (למשל קבלת הודעה
מתהליך אחר)
בקשה להפסיק ביצוע למשך זמן נתון ()sleep
מערכת הפעלה יכולה ליזום החלפת תהליך
22
מערכות הפעלה -תרגול 1
מ"ה ללא תהליכים ()MS-DOS
יתרונות:
23
פשטות
תכניות יכולות לנצל את כל משאבי המחשב
תהליכים אחרים אינם מפריעים
התכניות מסתיימות בזמן הקצר ביותר
זמן הביצוע תלוי רק בתכנית עצמה
תכניות יכולות להסתמך על אי יציאתן מהמעבד
מערכות הפעלה -תרגול 1
מ"ה ללא תהליכים ()MS-DOS
חסרונות:
לא ניתן להשתמש במעבד ובאמצעי קלט/פלט בו
זמנית בצורה יעילה
תכנית הצורכת את המעבד לפרק זמן ארוך מונעת
מתכניות אחרות כל שימוש במחשב
אין תמיכה במישתמשים אינטראקטיביים
לא מאפשרות תקשורת בין תהליכים
24
מערכות הפעלה -תרגול 1
מאפייני תהליך
25
pid = 1215
pid = 1216
pid = 1221
קוד התוכנית
נתונים
מספר תהליך ()process id
עדיפות
מחסנית זמן-ביצוע
program counter
מערכות הפעלה -תרגול 1
Open Office
מחשב
מסך
מסך
מסך
דיאגרמת מצבים- תהליך
sleep
wake up
SLEEPING
resched
resched
CURRENT
READY
suspend
SUSPENDED
suspend
resume
Create
1 תרגול- מערכות הפעלה
26
שרשרת המצבים של תהליך
דוגמה
התהליך נוצר ,הועבר לביצוע ,הושעה ,הועבר לביצוע,
הלך "לישון" ,הועבר לביצוע ,הושעה...
27
מערכות הפעלה -תרגול 1
1. Suspended
2. Ready
3. Current
4. Ready
5. Current
6. Ready
7. Suspended
8. Ready
9. Current
10. Sleep
11. Ready
12. Current
… 13.
14. END
יצירת תהליכים create -
XINUתומכת בריבוי תהליכים .יצירת תהליך מתבצעת באמצעות
קריאת מערכת הפעלה create
>,שם הפונקציה הראשית< (сreate
>,גודל מחסנית לתהליך<
>,עדיפות<
>,שם התהליך<
;) >פרמ' >, …, < nפרמ' >, <2פרמ' >, <1מס' פרמטרים<
28
מערכות הפעלה -תרגול 1
יצירת תהליכים create -
קיימים 2קבועים:
– INITSTK גודל מחסנית של 512בתים
– INITPRIO עדיפות 20
התהליך xmainנוצר עם גודל המחסנית והעדיפות הנ"ל
createמחזירה מזהה תהליך ייחודי ( )pidעבור התהליך
הנוצר
תהליך הנוצר באמצעות createיווצר במצב מושעה
()SUSPENDED
29
מערכות הפעלה -תרגול 1
הכנסת תהליך מושעה לריצה
תהליך מושעה (לדוגמא :תהליך חדש שנוצר כרגע)
עובר למצב בו הוא מוכן ( )READYלריצה ע"י קריאת
מערכת הפעלה .resume
;) >מזהה תהליך< ( resume
התהליך עובר למצב READYומהרגע הזה מחכה
בתור לכניסה למעבד
30
מערכות הפעלה -תרגול 1
1 דוגמה
#include <conf.h>
#include <kernel.h>
xmain()
{
int prA(), prB();
resume( create)prA, INITSTK, INITPRIO, “proc 1”, 0) );
resume( create)prB, INITSTK, INITPRIO, “proc 2”, 0) );
}
prA()
{
while(1)
putc)CONSOLE, ‘A’(;
}
prB()
{
while(1)
putc)CONSOLE, ‘B’(;
}
1 תרגול- מערכות הפעלה
31
?מהו הפלט של התכנית
1
AAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBB
2
BBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAA
3
1111111111111111111111111111112222222222222222222222222222
4
2222222222222222222222222222222222221111111111111111111111
5
AAAAABBBBBBBAAAAAAAAAAAAAAAAAAABBBBAAAAAAAAAAAAAA
1 תרגול- מערכות הפעלה
32
2 דוגמה
#include <conf.h>
#include <kernel.h>
xmain()
{
int prnter();
resume( create)prnter, INITSTK, INITPRIO, “proc 1”, 1, ‘A’) );
resume( create)prnter, INITSTK, INITPRIO, “proc 2”, 1, ‘B’) );
}
prnter(int ch)
{
while(1)
putc(CONSOLE, ch);
}
1 תרגול- מערכות הפעלה
33
השעיית תהליך
ניתן להשעות תהליך מריצה באמצעות קריאת מערכת
הפעלה .
;) >מזהה תהליך< (suspend
ניתן להשעות תהליך רק אם הוא רץ כרגע או מוכן
לריצה.
34
מערכות הפעלה -תרגול 1
סיום תהליך
סיום נורמלי של תהליך מתבצע כאשר מסתיימת
הפונקציה הראשית שלו.
ניתן לגרום לסיום התהליך לפני כן (להרוג אותו) על ידי
קריאת מ"ה kill
;) >מזהה תהליך< (kill
תהליך יכול להרוג את עצמו .קריאת התאבדות:
;))(kill(getpid
)( – getpidמחזיר את המזהה של התהליך
35
מערכות הפעלה -תרגול 1
עדיפויות
העדיפות מגדירה את מיקומו של התהליך בתור המתנה
של .CPUניתן לקבל עדיפות של התהליך באמצעות
קריאה לgetprio-
;) >מזהה תהליך< (getprio
שינוי עדיפות של תהליך:
;)>עדיפות חדשה< >,מזהה תהליך< (chprio
chprioמחזירה את העדיפות הישנה (לפני השינוי)
36
מערכות הפעלה -תרגול 1
שינה
תהליך יכול לבקש ללכת לישון לזמן קצוב.
את הזמן מבטאים בשניות
ניתן ללכת לישון למספר שלם של שניות בלבד.
;) >מספר שניות שלם< (sleep
) sleep(0גורם להחלפת תהליכים ללא כניסה למצב
שינה.
37
מערכות הפעלה -תרגול 1
דוגמה- שינה
#include <conf.h>
#include <kernel.h>
long counter; /* global shared counter */
xmain()
{
int proc(int), count_proc();
int pid;
counter = 0;
pid = create(count_proc, INITSTK, INITPRIO-1, “counter process”, 0);
resume( create)proc, INITSTK, INITPRIO, “my process”, 1, pid));
}
1 תרגול- מערכות הפעלה
38
המשך- דוגמה
/* counter – increase global counter */
count_proc()
{
while(1)
counter++;
}
/* proc - wake up counting process and go to sleep, print counter when waked up */
proc(int other_id)
{
printf)“going to sleep for 10 seconds”(;
resume(other_proc); /* let counter process to run */
sleep(10);
suspend(other_proc); /* stop counter process */
printf)“while I was sleeping other process increased the counter %d times”, counter(;
kill(other_proc);
}
1 תרגול- מערכות הפעלה
39
דוגמה -המשך
40
לתהליך counterעדיפות נמוכה .מדוע?
counterמסתיים בעת ש proc-מבצע kill
procמסתיים בצורה טבעית
counterהוא משתנה משותף
מערכות הפעלה -תרגול 1
בשעור הבא...
קריאות מערכת הפעלה -המשך
דוגמאות לשימוש בקריאות מערכת ההפעלה
41
מערכות הפעלה -תרגול 1
42
מערכות הפעלה -תרגול 1