מערכות הפעלה
Download
Report
Transcript מערכות הפעלה
מערכות הפעלה
תרגול - 1מבוא
ברוכים הבאים לקורס מערכות הפעלה!
אדמיניסטרציה
מערכת ההפעלה שתודגם בקורס היא :XINU
הכנה לעבודה בXINU-
הרצת ישומים
תהליכים
קריאות מערכת הפעלה
2
מערכות הפעלה -תרגול 1
אפריל 15
אדמיניסטרציה
3
מתרגלת :בלה ספקטור
תרגול :יום א'12:00-14:00 ,
שעות קבלה :יום א'( 10:00-11:00 ,לתאם מראש במייל)
אתר הקורסhttp://sci.haifa.ac.il/courses/os/:
תרגילי בית :הגשה בזוגות
מערכות הפעלה -תרגול 1
אפריל 15
איך מתקינים XINU
באתר לינק ל:
התקנת מערכת הפעלה .XINU התקנת ערכת פיתוח .Turbo C להוסיף מסלול TCלמשתנה
סביבה PATH
(למשל )c:\tc\bin
4
מערכות הפעלה -תרגול 1
אפריל 15
ex1.с – תכנית ראשונה
XINU- הפונקציה הראשית ב- xmain
? מה התכנית עושה
#include <conf.h>
xmain)(
{
putc)CONSOLE, ‘h’(;
putc)CONSOLE, ‘i’(;
putc)CONSOLE, ‘\n’(;
}
15 אפריל
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
אפריל 15
חלונות ב - XINU-פתיחת חלון
;int win1
;)”win1 = open(CONSOLE, “#10,4:30,20”, “wht/blk
7
החלון יווצר עם מסגרת .ניתן להשמיט את ה #-ואז החלון יהיה ללא
מסגרת
- c1,r1קואורדינטות של הפינה השמאלית העליונה של חלון
()сolumn, row
- c2,r2קואורדינטות של הפינה הימנית התחתונה
– bbb/fffמחרוזת באורך 3תווים המיצגת את צבעי החלון
()background/foreground
פונקציה openמחזירה device descriptor
ניתן לפתוח עד 4חלונות
מערכות הפעלה -תרגול 1
אפריל 15
פעולות נוספות
סגירת חלון
;)close(win1
כתיבה לחלון
;(’putc(win1, ‘a
הערה :כתיבת CONSOLEבמקום ה desc-תגרום
לכתיבה ישירות לСONSOLE-
קריאה מחלון
;)ch = getc(win1
8
מערכות הפעלה -תרגול 1
אפריל 15
1דוגמה
#include <conf.h<
#include <kernel.h<
xmain)(
}
int i;
int win1;
i = 0;
win1 = open)CONSOLE, “#1,4:30,20”, “blk/wht”(;
while ( i++ < 10)
putc(win1, ‘A’(;
close(win1);
{
15 אפריל
1 תרגול- מערכות הפעלה
9
מערכות הפעלה – מבוא
Linux
Unix
Novell - NetWare
15 אפריל
MS Windows
1 תרגול- מערכות הפעלה
Mac OS X
10
מערכות הפעלה – נעים להכיר!
מהי מערכת ההפעלה?
אפליקציה
4
שכבת תוכנה לניהול
והסתרת פרטים של
חומרת המחשב.
מנהלת את משאבי
המערכת ומשתפת אותם
בין תהליכים ,תוכניות,
ומשתמשים.
11
אפליקציה
3
אפליקציה
2
אפליקציה
1
מערכת הפעלה
Device
Printer
controller
memory
מערכות הפעלה -תרגול 1
Disk
controller
CPU
אפריל 15
סוגי מערכות הפעלה
12
עם תהליך יחיד )(MS DOS
ריבוי תהליכים )(MS Windows, UNIX
ריבוי מעבדים )(HYDRA
מערכות מבוזרות )(Amoeba
מערכות (VxWorks, Windows CE) real time
מערכות הפעלה -תרגול 1
אפריל 15
מערכות הפעלה ומבנה המחשב
התנהגות מערכת ההפעלה מוכתבת (חלקית) על-
ידי החומרה שעליה היא רצה
סט פקודות ,רכיבים מיוחדים
החומרה יכולה לפשט /לסבך משימות מערכת
ההפעלה
מחשבים ישנים לא סיפקו תמיכה לזיכרון וירטואלי
13
מערכות הפעלה -תרגול 1
אפריל 15
מנגנוני חמרה לתמיכה
במערכת ההפעלה
שעון חומרה
פעולות סנכרון אטומיות
פסיקות
קריאות מערכת-הפעלה
פעולות בקרת קלט /פלט
הגנת זיכרון
אופן עבודה מוּגן ()protected
14
מערכות הפעלה -תרגול 1
אפריל 15
רכיבי מערכת הפעלה
מנהל תהליכים
מנהל זיכרון
מנהל קלט /פלט
מנהל קבצים
הגנה
ניהול חשבונות משתמשים
ממשק משתמש ()shell
15
זאת ועוד...
אתחול
גיבוי
...
דפדפן?
מערכות הפעלה -תרגול 1
אפריל 15
קריאות מערכת הפעלה
קריאת מערכת הפעלה היא פונקציה המהווה ממשק בין
המשתמש ושירותי מערכת ההפעלה
קריאות מערכת הפעלה מבצעות בדיקות תקינות
הפרמטרים המועברים (מזהה תהליך קיים ,פרמטר
בתחום המותר ,ועוד)
16
מערכות הפעלה -תרגול 1
אפריל 15
קריאות מערכת הפעלה
משתמש יכול לגשת רק
לקריאות מערכת
הפעלה
פונקציות פנימיות של
מערכת הפעלה מוגנות
מפני המשתמש
17
תכניות משתמש
קריאות
מערכת
הפעלה
מערכת ההפעלה
חומרה
מערכות הפעלה -תרגול 1
אפריל 15
קריאות מערכת הפעלה XINU
קריאות מערכת יחזירו ( SYSERRערך )-1עבור קריאה
לא תקינה
בסיום ביצוע תקין קריאות מ"ה מחזירות ערך מספרי.
חלקן מחזירות ( OKערכו )1
עבור קריאות מערכת הפעלה מובטח שביצוע בו-זמני
יהיה תקין
18
מערכות הפעלה -תרגול 1
אפריל 15
תהליכים
תהליך הוא ביצוע של תכנית
תהליכים יוצרים אשליה של הרצת מספר
אפליקציות במקביל
לכל תהליך – תכנית אחת ,לתכנית אחת יכולים
להיות תהליכים רבים מתבצעים בו זמנית
19
מערכות הפעלה -תרגול 1
אפריל 15
תהליכים
20
לתהליך אין השתקפות בחומרה ,תהליכים הם מושג
הממומש בתוכנה
נקרא גם job, task, sequential process
הערה :התכניות שכתבתם עד עתה בקורסים קודמים
רצו כולן כתהליכים בודדים
מערכות הפעלה -תרגול 1
אפריל 15
תהליכים
תהליכים יכולים לשתף פעולה עם תהליכים אחרים,
ובכך מתאפשרת כתיבה של תכניות המורכבות מכמה
תהליכים ,שכל אחד מהם מבצע חלק מהעבודה
במקרים רבים קל יותר ותחזוקתי יותר לכתוב תכניות
המורכבות מכמה תהליכים מאשר לכתוב תכנית בעלת
תהליך יחיד המבצעת את אותה העבודה
21
מערכות הפעלה -תרגול 1
אפריל 15
ריבוי תהליכים
תהליכים עוקבים
A
t A+ t B
B
תהליכים מקבילים
A
B
t A+B
זמן ריצה קצר יותר
זמן
22
מערכות הפעלה -תרגול 1
אפריל 15
חלוקת זמן
במערכת מרובת תהליכים פועל כל תהליך כאילו הוא
יחיד במערכת ,ואינו נדרש לתאם את פעולותיו עם
תהליכים אחרים (אלא אם כן רצונו לתאם)
מ"ה אחראית לאפשר לכל התהליכים להתבצע ,אך
בכל רגע נתון ,בדיוק אחד התהליכים מבוצע במעבד
23
מערכות הפעלה -תרגול 1
אפריל 15
חלוקת זמן
תזמון בפועל
תכנית B
תכנית A
A
תכנית A
2
1
B
3
A
אבסטרקציה
3
מחכה לקלט
2
B
A
A
A
מחכה
למעבד
2
מחכה
מ
למעבד
24
3
מערכות הפעלה -תרגול 1
1
1
2
זמן
אפריל 15
חלוקת זמן
תהליך יכול לוותר על המעבד בכמה דרכים:
בקשות קלט/פלט בהן עליו לחכות לסיום ביצוע הבקשה
בקשה לחכות לאירוע כלשהו (למשל קבלת הודעה
מתהליך אחר)
בקשה להפסיק ביצוע למשך זמן נתון ()sleep
מערכת הפעלה יכולה ליזום החלפת תהליך
25
מערכות הפעלה -תרגול 1
אפריל 15
מ"ה ללא תהליכים ()MS-DOS
יתרונות:
26
פשטות
תכניות יכולות לנצל את כל משאבי המחשב
תהליכים אחרים אינם מפריעים
התכניות מסתיימות בזמן הקצר ביותר
זמן הביצוע תלוי רק בתכנית עצמה
תכניות יכולות להסתמך על אי יציאתן מהמעבד
מערכות הפעלה -תרגול 1
אפריל 15
מ"ה ללא תהליכים ()MS-DOS
חסרונות:
לא ניתן להשתמש במעבד ובאמצעי קלט/פלט בו
זמנית בצורה יעילה
תכנית הצורכת את המעבד לפרק זמן ארוך מונעת
מתכניות אחרות כל שימוש במחשב
אין תמיכה במישתמשים אינטראקטיביים
לא מאפשרות תקשורת בין תהליכים
27
מערכות הפעלה -תרגול 1
אפריל 15
מאפייני תהליך
28
pid = 1215
pid = 1216
pid = 1221
קוד התוכנית
נתונים
מספר תהליך ()process id
עדיפות
מחסנית זמן-ביצוע
program counter
מערכות הפעלה -תרגול 1
Open Office
מחשב
מסך
מסך
מסך
אפריל 15
דיאגרמת מצבים- תהליך
sleep
wake up
SLEEPING
resched
resched
CURRENT
READY
suspend
SUSPENDED
suspend
resume
Create
15 אפריל
1 תרגול- מערכות הפעלה
29
שרשרת המצבים של תהליך
דוגמה
התהליך נוצר ,הועבר לביצוע ,הושעה ,הועבר לביצוע,
הלך "לישון" ,הועבר לביצוע ,הושעה...
30
מערכות הפעלה -תרגול 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
אפריל 15
יצירת תהליכים create -
XINUתומכת בריבוי תהליכים .יצירת תהליך מתבצעת באמצעות
קריאת מערכת הפעלה create
>,שם הפונקציה הראשית< (сreate
>,גודל מחסנית לתהליך<
>,עדיפות<
>,שם התהליך<
;) >פרמ' <, …, < nפרמ' >, <2פרמ' >, <1מס' פרמטרים<
31
מערכות הפעלה -תרגול 1
אפריל 15
יצירת תהליכים create -
קיימים 2קבועים:
– INITSTK גודל מחסנית של 512בתים
– INITPRIO עדיפות 20
התהליך xmainנוצר עם גודל המחסנית והעדיפות הנ"ל
createמחזירה מזהה תהליך ייחודי ( )pidעבור התהליך
הנוצר
תהליך הנוצר באמצעות createיווצר במצב מושעה
()SUSPENDED
32
מערכות הפעלה -תרגול 1
אפריל 15
הכנסת תהליך מושעה לריצה
תהליך מושעה (לדוגמא :תהליך חדש שנוצר כרגע)
עובר למצב בו הוא מוכן ( )READYלריצה ע"י קריאת
מערכת הפעלה .resume
;) >מזהה תהליך< ( resume
התהליך עובר למצב READYומהרגע הזה מחכה
בתור לכניסה למעבד
33
מערכות הפעלה -תרגול 1
אפריל 15
2 דוגמא
#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’(;
}
15 אפריל
1 תרגול- מערכות הפעלה
34
?מהו הפלט של התכנית
1
AAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBB
2
BBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAA
3
1111111111111111111111111111112222222222222222222222222222
4
2222222222222222222222222222222222221111111111111111111111
5
AAAAABBBBBBBAAAAAAAAAAAAAAAAAAABBBBAAAAAAAAAAAAAA
15 אפריל
1 תרגול- מערכות הפעלה
35
3 דוגמא
#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);
}
15 אפריל
1 תרגול- מערכות הפעלה
36
השעיית תהליך
ניתן להשעות תהליך מריצה באמצעות קריאת מערכת
הפעלה .
;) >מזהה תהליך< (suspend
ניתן להשעות תהליך רק אם הוא רץ כרגע או מוכן
לריצה.
37
מערכות הפעלה -תרגול 1
אפריל 15
סיום תהליך
סיום נורמלי של תהליך מתבצע כאשר מסתיימת
הפונקציה הראשית שלו.
ניתן לגרום לסיום התהליך לפני כן (להרוג אותו) על ידי
קריאת מ"ה kill
;) >מזהה תהליך< (kill
תהליך יכול להרוג את עצמו .קריאת התאבדות:
;))(kill(getpid
)( – getpidמחזיר את המזהה של התהליך
38
מערכות הפעלה -תרגול 1
אפריל 15
עדיפויות
העדיפות מגדירה את מיקומו של התהליך בתור המתנה
של .CPUניתן לקבל עדיפות של התהליך באמצעות
קריאה לgetprio-
;) <מזהה תהליך< (getprio
שינוי עדיפות של תהליך:
;)<עדיפות חדשה< <,מזהה תהליך< (chprio
chprioמחזירה את העדיפות הישנה (לפני השינוי)
39
מערכות הפעלה -תרגול 1
אפריל 15
שינה
תהליך יכול לבקש ללכת לישון לזמן קצוב.
את הזמן מבטאים בשניות
ניתן ללכת לישון למספר שלם של שניות בלבד.
;) >מספר שניות שלם< (sleep
) sleep(0גורם להחלפת תהליכים ללא כניסה למצב
שינה.
40
מערכות הפעלה -תרגול 1
אפריל 15
דוגמה- שינה
#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));
}
15 אפריל
1 תרגול- מערכות הפעלה
41
המשך- דוגמה
/* 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);
}
15 אפריל
1 תרגול- מערכות הפעלה
42
דוגמה -המשך
43
לתהליך counterעדיפות נמוכה .מדוע?
counterמסתיים בעת ש proc-מבצע kill
procמסתיים בצורה טבעית
counterהוא משתנה משותף
מערכות הפעלה -תרגול 1
אפריל 15
בשעור הבא...
קריאות מערכת הפעלה -המשך
דוגמאות לשימוש בקריאות מערכת ההפעלה
44
מערכות הפעלה -תרגול 1
אפריל 15
45
מערכות הפעלה -תרגול 1
אפריל 15