More Related Content
Similar to Lec03 concurrency (2)
Similar to Lec03 concurrency (2) (20)
More from Khuder Altangerel
More from Khuder Altangerel (10)
Lec03 concurrency (2)
- 2. Lec 3.29/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Үйлдлийн системийн түүх
• Яагаад судлах ёстой вэ?
– ТХ-ийн хязгаарлалт ҮС-д яаж нөлөөлснийг ойлгох?
• Хэд хэдэн ялгаатай үе шатууд:
– ТХ үнэтэй, Хүний хөдөлмөр хямд
» Eniac, … Multics
– ТХ хямд, Хүний хөдөлмөр үнэтэй
» PCs, Workstations, GUI-ийн үүсэл
– ТХ асар хямд, Хүний хөдөлмөр асар үнэтэй
» Хаа сайгүй төхөөрөмж, Өргөн тархсан сүлжээ
• ТХ өөрчлөгдөхийн хэрээр ҮС дагаж хурдтай өөрчлөгддөг.
– Багц Multiprogramming Timeshare Graphical UI
Хаа сайгүй төхөөрөмж Cyberspace/Metaverse/??
– Шинж чанарууд аажмаар жижиг болж хувирч байна.
• Өнөөдрийн нөхцөл байдал 60-аад он шиг болж байна.
– Жижиг OS: 100K мөр/ Том: 10M мөр (5M browser!)
– 100-1000 хүн-жил
- 4. Lec 3.49/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Агуулга
• ҮС-ийн бүтцийн тухай ярьж дуусгана.
• Бид олон бодлогын горимыг яаж хийдэг вэ?
• Процесс гэж юу вэ?
• Хуулбар процесс болон хаягийн огторгуй ямар
хамааралтай вэ?
Note: Some slides and/or pictures in the following are
adapted from slides ©2005 Silberschatz, Galvin, and Gagne
Note: Some slides and/or pictures in the following are
adapted from slides ©2005 Silberschatz, Galvin, and Gagne.
Many slides generated from my lecture notes by Kubiatowicz.
- 6. Lec 3.69/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Микро кернел бүтэц
• Кернел хэрэглэгчийн орон зай руу аль болох ихийг зөөдөг.
– Кернелийн түвшинд ҮС-ийн жижиг цөм ажилдаг.
– ҮС үйлчилгээнүүд нь олон бие даасан процессуудаас тогтдог.
– Модулиуд нь хоорондоо мессеж дамжуулалтаар харилцдаг.
• Давуу тал:
– Микро кернелийг өргөтгөхөд хялбар
– Үйлдлийн системийг шинэ архитектур руу шилжүүлэхэд хялбар
– Илүү найдвартай (Кернелийн горимд бага хэмжээний код ажилана.)
– Алдаа тусгаарлалт (Кернелийн хэсгүүд өөр өөрөөсөө хамгаалагддаг.)
– Аюулгүй байдал сайтай
• Дутагдалтай тал:
– Энгийн байдлаар хэрэгжүүлбэл гүйцэтгэл удаан болдог.
Figure ©Wikipedia
монолитик
кернел
микрокернел
- 7. Lec 3.79/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Олон цөмтэй чипийн дизайны шинэ хандлага?
Задаргаа: ҮС-ийн задлалт
• Энгийн элементүүдийг
хэсгүүдэд задлана
– Төхөөрөмжийн
драйверууд
(Нууцлалт/Найдвартай
байдал)
– Сүлжээний үйлчилгээ
(Гүйцэтгэл)
» TCP/IP стэк
» Firewall
» Вирус илрүүлэлт
» Нэвтрэлт илрүүлэлт
– Хадгалалт (Гүйцэтгэл,
Нууцлал, Найдвартай
байдал)
– Хяналтын үйлчилгээ
» Гүйцэтгэлийн тоолуур
» Өөрийн шалгалт
– Нэвтрэлт/Орчны
үйлчилгээ(Нууцлал)
» Биометр, GPS,
Эзэмшилтийг бүртгэх
• Програмд их зай өгнө
– Нөөцийг чөлөөтэй
хэрэглэх эрх
Төх.
драйв.
Видео&
Цонхны
драйв.
Firewall
Вирус
илр.
Дэлгэц
ба
адапт
Хадгалалт
& Файлын
систем
HCI/
Дуу
Танилт
Том програмууд
Бодит хугацааны
програм
Нэвтр
- 8. Lec 3.89/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Давхцал
• “Хуулбар процесс”-ийн гүйцэтгэл
– Командыг татах/задлах/биелүүлэх бие даасан циклтэй.
– Хаягийн нэг орон зайд ажилладаг.
• Нэг бодлогын горим: Нэгэн зэрэг нэг хуулбар ажиллана.
– MS/DOS, Macintosh өмнөх хувилбар, Багц боловсруулалт
– ҮС хийж байгаа хүндээ хялбар
– Давхцал байхгүй
• Олон бодлогын горим: Нэгэн зэрэг олон хуулбар
ажиллана.
– Multics, UNIX/Linux, OS/2, Windows NT/2000/XP, Mac OS
X
- 9. Lec 3.99/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Давхцалын үндсэн асуудал
• Давхцлын үндсэн асуудалд дараах нөөцүүд багтана:
– ТХ: ганц CPU, ганц DRAM, ганц I/O төхөөрөмж
– Олон бодлогын горимын API: Хэрэглэгчид дундын нөөцийг
зөвхөн өөрийнх гэж боддог.
• OS бүх үйл ажиллагааг зохицуулах хэрэгтэй
– Олон хэрэглэгч, I/O тасалдалууд, …
• Үндсэн санаа: Виртуал машины хийсвэрлэлийг хэрэглэх
– Хүнд бодлогыг энгийн бодлогууд болгож задлах
– Програмын биелэлтийг хийсвэрлэх
– Дараа нь, эдгээр хийсвэр машинуудыг нэгтгэх тал дээр
ажиллах
• Үүнийг Дейкстра “THE system” дээрээ хэрэгжүүлсэн
– Хэдхэн мянган мөр vs нэг сая мөр OS 360 (1K алдаа)
- 10. Lec 3.109/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Татах
Биел
R0
…
R31
F0
…
F30
PC
…
Data1
Data0
Inst237
Inst236
…
Inst5
Inst4
Inst3
Inst2
Inst1
Inst0
Addr 0
Addr 232-1
Биелүүлэлтийн турш юу тохиолддог вэ?
• Биелүүлэх дараалал:
– Командыг ПТ-ээс татах
– Задлах
– Биелүүлэх (регистр ашиглаж болно.)
– Үр дүнгээ регистр/санах ой руу бичих
– ПТ = Дараагийн команд(ПТ)
– Давтах
ПТ
ПТ
ПТ
ПТ
- 11. Lec 3.119/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Олон процессорын хийсвэрлэлийг яаж бий болгох вэ?
CPU3CPU2CPU1
Дундын санах ой
• Нэг процессортой гэж үзнэ. Олон процессорын хийсвэрлэлийг яаж
бий болгох вэ?
– Хугацаагаар ээлжлүүлэх!
• Виртуал “CPU” бүр дараах элементүүдээс тогтоно:
– Програм тоологч (ПТ), Stack Pointer (SP)
– Регистр (Бүхэл тоо, Хөвөгч таслалтай, бусад…?)
• Нэг CPU-ээс дараагийнх руу яаж шилжүүлдэг вэ?
– Анхны байгаа төлвийн мужийг ПТ, SP болон регистрүүдийг
хадгалдаг.
– Шинэ төлвийн мужаас ПТ, SP болон регистрүүдийг ачаалладаг.
• Шилжилтийг яаж хийдэг вэ?
– Тоологч, өөрөө гарах, I/O, бусад
CPU1 CPU2 CPU3 CPU1 CPU2
Хугацаа
- 12. Lec 3.129/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Энгийн олон бодлогын горимын техникийн шинж чанар
• Бүх виртуал CPU-үүд бусад нөөцөө хуваалцана.
– I/O төхөөрөмжүүд ижил
– Нэг санах ойтой
• Хуваалцлын үр дүн:
– Хуулбар болгон бусад хуулбарын өгөгдөл рүү хандаж
чаддаг. (Хуваалцахад сайн, хамгаалалтанд муу)
– Хуулбарууд командаа хуваалцана
(Хуваалцахад сайн, хамгаалалтанд муу)
– Хуулбар нь ҮС-ийн функцуудыг дарж бичиж чадах уу?
• Энэ загвар нь (хамгаалалтгүй) дараах програмуудад
хэрэглэгддэг:
– Эмбэдэд програмууд
– Windows 3.1/Machintosh (Сайн дураар шилжих)
– Windows 95—ME? (Сайн дураар болон тоолуураар
шилжих)
- 13. Lec 3.139/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Орчин үеийн техник: SMT/Hyperthreading
• Техник хангамжийн арга
– Суперскаляр процессорын
шинж чанарыг ашиглан олон
процессорын хийсвэрлэлийг
үүсгэх
– Процессорын нөөцийн
ашиглалтыг сайжруулах
• Тус тусдаа CPU дээр ажил-
-лаж байгаа юм шиг төлөвлөнө.
– Гэвч, хурд шугаман байдлаар
өсөхгүй!
– Олон процессортой бол
процессор бүрийг эхэлж төлөвлөнө.
• SMT - “Simultaneous Multithreading” /арга/
– http://www.cs.washington.edu/research/smt/
– Alpha, SPARC, Pentium 4 (“Hyperthreading”), Power 5
- 14. Lec 3.149/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Хуулбаруудыг бие биенээс яаж хамгаалах вэ?
• Гурван чухал зүйл байдаг:
1. Санах ойн хамгаалалт
» Програм болгон санах ойг бүтнээр нь эзэмшихгүй.
2. I/O гаралтын хамгаалалт
» Програм болгон бүх төхөөрөмж рүү хандахгүй.
3. Процессорын хандалтын хамгаалалт:
Програмаас програм руу давуу эрхээр шилжинэ.
» Тоолуур ашиглах
» Програмын кодоос тоолуурыг идэвхгүй болгож
чадахгүй.
- 15. Lec 3.159/8/10 Kubiatowicz CS162 ©UCB Fall 2010
ProgramAddressSpace
Програмын хаягийн огторгуй
• Хаягийн огторгуйthe хандах
боломжтой хаягийн олонлог + тэдний
холбогдох төлөв:
– 32 битийн процессорт : 232 = 4 тэр бум
хаяг
• Хаягаас унших болон бичихэд юу
болдог вэ?
– Юу ч болохгү байж магадгүй
– Энгийн санах ой шиг ажиллаж
магадгүй
– Бичихийг хориглож магадгүй
– I/O үйлдлийг хориглож магадгүй
» (Memory-mapped I/O)
– ОТ үүсэж магадгүй (Алдаа)
- 16. Lec 3.169/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Хаяг хувиргалтын жишээ
Прог 1
Виртуал
хаягийн огторгуй 1
Прог 2
Виртуал
хаягийн
огторгуй 2
Код
Өгөгдөл
Овоолго
Стэк
Код
Өгөгдөл
Овоолго
Стэк
Өгөгдөл 2
Стэк 1
Овоолго 1
ҮС Ов. &
Стэк
Код 1
Стэк 2
Өгөгдөл 1
Овоолго 2
Код 2
ҮС Код
ҮС Өгөгд
Хувиргалтын
буулгалт 1
Хувиргалтын
буулгалт 2
Физик хаягийн огторгуй
- 17. Lec 3.179/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Уламжлалт UNIX-ийн процесс
• Процесс: Нэг програмыг ажиллуулахад
шаардлагатай зүйлсийг дүрслэх ҮС хийсвэрлэл.
– “Хүнд жингийн процесс” гэж нэрлэдэг.
– Өөрөөр хэлбэл: хаягийн огторгуйд ажиллаж байгаа
ганц дараалсан урсгал
• Хоёр хэсэгтэй:
– Програмын дараалсан ургсгалын биелэлт
» Код нь дараалсан ганц урсгал байдлаар биелэнэ.
» CPU-гийн регистрүүдийн төлвийг агуулна.
– Хамгаалагдсан нөөц:
» Үндсэн санах ойн төлөв (хаягийн огторгуйн агуулга)
» I/O-ийн төлөв (Жнь. Файлын тодорхойлогч)
• Чухал: Хүнд жингийн процесс-д давхцал байхгүй.
- 18. Lec 3.189/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Process
Control
Block
Процессуудыг яаж ээлжлүүлэх вэ?
• Процессын төлвийг процесс удирдах
блокод хадгална. (ПУБ):
– Энэ бол биелэлтийн болон хамгаалалтын
орчны нэг агшины зураг юм.
– Нэг зэрэг нэг ПУБ идэвхтэй байна.
• CPU-ний хугацааг процессуудад тараах
(Төлөвлөлт):
– Нэг зэрэг нэг процесс ажиллана.
– Чухал процессуудад илүү хугацаа өгнө.
• Ялгаатай процессуудад нөөцийг хувааж
өгнө. (Хамгаалалт):
– Бусад нөөцийн хандалтыг хянана.
– Жишээ нь:
» Санах ойн буулгалт: Пр болгон хаягийн
огторгуйтай байна.
» Кернел/Хэрэглэгч хослол: Системийн
дуудалтыг ашиглан I/O – руу хүссэн үедээ
хандана.
- 19. Lec 3.199/8/10 Kubiatowicz CS162 ©UCB Fall 2010
CPU-г Пр-ээс Пр руу шилжүүлэх
• Үүнийг бас “Орчин солих” гэж нэрлэдэг.
• Орчин солихыг кернел гүйцэтгэх ба бага зэрэг ачаалдаг.
– Ачаалал нь практик дээр солилтын хамгийн бага хугацааг
тогтооно.
– SMT/hyperthreading нь бага ачаалладаг, гэвч… нөөцийн
агуулга их байна.
- 20. Lec 3.209/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Пр-ын төлвийн диаграм
• Пр-ийн ажиллагаа нь дараах төлвүүдтэй.
– шинэ: Пр үүсэж байгаа
– бэлэн: Пр ажиллахаар хүлээж байгаа
– ажиллах: Командыг биелүүлж байгаа
– хүлээх: Пр ямар нэг үйл явдлыг хүлээж байгаа
– хаагдах: Пр ажиллаж дууссан.
- 21. Lec 3.219/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Процессийн төлөвлөлт
• ПУБ нь төлөв солигдоход дарааллаас дараалал руу
шилжинэ.
– Дарааллаас аль пр-ыг гаргахыг төлөвлөлтөөр шийднэ.
– Олон алгоримт буй (одоогоос хэдэн долоо хоногийн дараа)
- 22. Lec 3.229/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Пр-г яаж үүсгэх вэ?
• Шинэ ПУБ үүсгэх хэрэгтэй
– Амархан
• Хаягийн огторгуйд зориулж хуудсын хүснэгт үүсгэнэ.
– Илүү удаан
• Эцэг пр-оос өгөгдлийг хуулах (Unix-ийн fork() )
– Unix-ийн fork() нь хүү пр нь эцэг пр-ийн санах ойн
болон I/O –ийн төлвийг бүрэн хуулж авна.
– Ер нь маш удаан
– “copy on write” гэдэг оновчлол хэрэглэвэл арай хурдан
болно.
• I/O-н төлвийг хуулах (файл тодорхойлогч, г.м)
– Дунд зэргийн хугацаатай
- 23. Lec 3.239/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Пр =? Програм
• Програмаас пр нь том:
– Програм бол пр-ийн төлвийн нэг хэсэг юм.
• Програмаас пр нь жижиг:
– Програм нэгээс олон пр дуудаж чадна.
main ()
{
…;
}
A() {
…
}
main ()
{
…;
}
A() {
…
}
Heap
Stack
A
main
Program Process
- 24. Lec 3.249/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Олон Пр нэг бодлого дээр ажиллах
• Пр-г үүсгэх болон санах ойн өндөр ачаалалтай
• (Харьцангуй) Орчин солилт өндөр ачаалалтай
• Харилцааны механизм хэрэгтэй:
– Пр-ууд өөрийн хаягийн огторгуйтай.
– Дундын-Санах Ойн Буулгалт
» DRAM дээр ерөнхий буулгалтаар хэрэгжүүлнэ.
» Дундын санах ойгоор уншиж бичнэ.
– Мессеж дамжуулалт
» send() ба receive() функцтэй
» Сүлжээний орчинд ажиллана.
Proc 1 Proc 2 Proc 3
- 25. Lec 3.259/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Дундын санах ойгоор харилцах
Prog 1
Virtual
Address
Space 1
Prog 2
Virtual
Address
Space 2
Data 2
Stack 1
Heap 1
Code 1
Stack 2
Data 1
Heap 2
Code 2
Shared
• Дундын санах ой руугаа унших бичих байдлаар
харилцана.
– Харилцааны ачаалал маш бага
– Синхрончлолын асуудлууд үүсэж эхэлнэ.
Code
Data
Heap
Stack
Shared
Code
Data
Heap
Stack
Shared
- 26. Lec 3.269/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Орчин үеийн “Хөнгөн жингийн” пр-г хуулбараар
хэрэгжүүлэх
• Хуулбар: a sequential execution stream within process
(Sometimes called a “Lightweight process”)
– Process still contains a single Address Space
– No protection between threads
• Олон хуулбар: a single program made up of a number of
different concurrent activities
– Sometimes called multitasking, as in Ada…
• Why separate the concept of a thread from that of a process?
– Discuss the “thread” part of a process (concurrency)
– Separate from the “address space” (Protection)
– Heavyweight Process Process with one thread
- 27. Lec 3.279/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Single and Multithreaded Processes
• Threads encapsulate concurrency: “Active” component
• Address spaces encapsulate protection: “Passive” part
– Keeps buggy program from trashing the system
• Why have multiple threads per address space?
- 28. Lec 3.289/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Examples of multithreaded programs
• Embedded systems
– Elevators, Planes, Medical systems, Wristwatches
– Single Program, concurrent operations
• Most modern OS kernels
– Internally concurrent because have to deal with concurrent
requests by multiple users
– But no protection needed within kernel
• Database Servers
– Access to shared data by many concurrent users
– Also background utility processing must be done
- 29. Lec 3.299/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Examples of multithreaded programs (con’t)
• Network Servers
– Concurrent requests from network
– Again, single program, multiple concurrent operations
– File server, Web server, and airline reservation systems
• Parallel Programming (More than one physical CPU)
– Split program into multiple threads for parallelism
– This is called Multiprocessing
• Some multiprocessors are actually uniprogrammed:
– Multiple threads in one address space but one program at a
time
- 30. Lec 3.309/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Thread State
• State shared by all threads in process/addr space
– Contents of memory (global variables, heap)
– I/O state (file system, network connections, etc)
• State “private” to each thread
– Kept in TCB Thread Control Block
– CPU registers (including, program counter)
– Execution stack – what is this?
• Execution Stack
– Parameters, Temporary variables
– return PCs are kept while called procedures are executing
- 31. Lec 3.319/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Execution Stack Example
• Stack holds temporary results
• Permits recursive execution
• Crucial to modern languages
A(int tmp) {
if (tmp<2)
B();
printf(tmp);
}
B() {
C();
}
C() {
A(2);
}
A(1);
A: tmp=2
ret=C+1Stack
Pointer
Stack Growth
A: tmp=1
ret=exit
B: ret=A+2
C: ret=b+1
- 32. Lec 3.329/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Classification
• Real operating systems have either
– One or many address spaces
– One or many threads per address space
• Did Windows 95/98/ME have real memory protection?
– No: Users could overwrite process tables/System DLLs
Mach, OS/2, Linux
Windows 9x???
Win NT to XP,
Solaris, HP-UX, OS X
Embedded systems
(Geoworks, VxWorks,
JavaOS,etc)
JavaOS, Pilot(PC)
Traditional UNIX
MS/DOS, early
Macintosh
Many
One
# threads
Per AS:
ManyOne
#ofaddr
spaces:
- 33. Lec 3.339/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Java APPS
OS
Hardware
Java OS
Structure
Example: Implementation Java OS
• Many threads, one Address Space
• Why another OS?
– Recommended Minimum memory sizes:
» UNIX + X Windows: 32MB
» Windows 98: 16-32MB
» Windows NT: 32-64MB
» Windows 2000/XP: 64-128MB
– What if we want a cheap network
point-of-sale computer?
» Say need 1000 terminals
» Want < 8MB
• What language to write this OS in?
– C/C++/ASM? Not terribly high-level. Hard to
debug.
– Java/Lisp? Not quite sufficient – need direct
access to HW/memory management
- 34. Lec 3.349/8/10 Kubiatowicz CS162 ©UCB Fall 2010
Summary
• Processes have two parts
– Threads (Concurrency)
– Address Spaces (Protection)
• Concurrency accomplished by multiplexing CPU Time:
– Unloading current thread (PC, registers)
– Loading new thread (PC, registers)
– Such context switching may be voluntary (yield(), I/O
operations) or involuntary (timer, other interrupts)
• Protection accomplished restricting access:
– Memory mapping isolates processes from each other
– Dual-mode for isolating I/O, other resources
• Book talks about processes
– When this concerns concurrency, really talking about thread
portion of a process
– When this concerns protection, talking about address space
portion of a process
Editor's Notes
- Collaboration allows faults to propagate…
- Sometimes need parallelism for a single job, and processes are very expensive – to start, switch between, and to communicate between