MS Lesson26: Threads
1. Process - emeliyyat sistemi terefinden ishe salinan, oz ayrica yaddash sahesine malik olan programin icra nusxesidir.
Mes biz kompumuzda muxtelif programlar acanda Paint, Excel ve s. bunlar ferqli proseslerdir.
OS her bir prosese ferqli registerler, stack memory, heap memory assign edir.
Restoran misali:
Restoran = process
Bina = yaddash (RAM)
Ishciler = thread
Yeni process ishe salinmish bir programdir.
* Her proses oz yaddashinda ishleyir, bashqasina toxuna bilmez.
* OS her prosese unikal ID verir.
* Yaratmaq / silmek bahalidir.
* Biri crash olsa, digerine tesir etmir.
Bir prosesin icinde coxlu thread ola biler. Amma bir thread yalniz bir prosese aid ola biler.
Java kodu bashlayanda JVM ozu de bir nece thread yaradir:
* main thread - bizim kodumuz
* GC thread - Garbage Collector
* Finalizer thread
* Signal Dispatcher thread
2. Thread - process icinde ishleyen ayrica ish axinidir. Kodun setir setir icra olundugu yoldur.
Restoran - process
Ashpaz 1 - pizza bishirir - thread1
Ashpaz 2 - salat hazirlayir - thread2
Ashpaz 3 - desert duzeldir - thread3
Hami eyni anda ishleyir - paralel.
Hami eyni metbexte ishelyir - eyni yaddash.
3. Time Slicing
CPU - tekce beyin deyil, milyardlarla tranzistordan ibaret cipdir. Tranzistor elektrik kecirik ya kecirmir 0 ve 1.
Core - CPU-nun icinde musteqil bir ishcidir. Ona kod verirsen o da icra edir, bashqa hecne bilmir.
CPU - fabrika, Core - fabrikadaki ishci.
Core-un icinde 4 esas sahe var:
1. Fetch unit: "Novbeti emri getir"
RAM-da bizim Java kodumuz durur:
Unvan 100: int a = 5;
Unvan 104: int b = 3;
Unvan 108: int c = a + b;
Fetch unit:
"Unvan 100 get -> Decode ver"
"Unvan 104 get -> Decode var"
...
Problemi: RAM yavashdir, 70 nanosaniye gozlemek lazimdir, Core ise 0.3 nanosaniyede ishleyir. Yeni Core RAM-dan 200x daha suretlidir. Buna gore Core-un daxilinde oz cache-i var.
2. Decode unit: "Bu emr ne demekdir?"
Tercumeci, genen emri CPU diline cevirir.
Sən yazırsan:
int c = a + b;
JVM çevirir (Bytecode):
iload_1 ← a-nı yüklə
iload_2 ← b-ni yüklə
iadd ← topla
istore_3 ← c-yə yaz
CPU görür (Machine Code):
10110000 00000101
10110011 00000011
00000001 11000011
Decode unit bunlari oxuyur ve deyir:
"A-nı Register-ə yüklə"
"B-ni Register-ə yüklə"
"İkisini ALU-da topla"
"Nəticəni Register-ə yaz"
3. ALU: "Hesablama et"
Arithmetic Logic Unit - butun hesablama burada gedir.
4. Register: "Neticeni saxla"
Yaddaş növləri sürətə görə:
Register │██████████████████████│ 0.3 ns ← Core-un içi
L1 Cache │████████████████ │ 1 ns
L2 Cache │████████ │ 5 ns
L3 Cache │████ │ 15 ns
RAM │█ │ 70 ns ← 200x yavaş!
SSD │ │ 100 µs
HDD │ │ 10 ms
Core-da cəmi ~16 Register var Hər biri 64 bit = 8 byte saxlayır
Комментарии
Отправить комментарий