Ikhtisar
Ikhtisar
Fungsionalitas OS
Resource sharing
- CPU (mesin tunggal / multiprosesor)
penjadwalan proses
- Memori (statis / alokasi dinamis untuk program)
manajer memori
- Penyimpanan file dan perangkat
OS kernel
- Mengimplementasikan CPU dan memori berbagi
- Hardware abstrak
Core OS functionality
Process manager
Communication
manager
Supervisor
komponen inti OS
Manajer Proses
- Penciptaan dan operasi pada proses (= ruang + benang)
Manajer Threads
- Benang penciptaan, sinkronisasi, penjadwalan
Manajer Komunikasi
- Komunikasi antara benang (soket, Semaphore)
Manajer Memori
- Fisik (RAM) dan virtual (disk) memori
Pengawas
- Abstraksi perangkat keras (interupsi, pengecualian, cache)
Distributed OS
- Transparan proses penjadwalan seluruh node
- penyeimbang beban
- Tidak digunakan ... biaya beralih OS terlalu tinggi, load balancing tidak selalu mudah untuk mencapai
Middleware
- Dibangun di atas OS jaringan yang berbeda
- Penawaran didistribusikan berbagi sumber daya
System layers
Applications, services
Middleware
Pelaksanaan doa
- Komunikasi (parameter passing, lokal atau remote)
- Penjadwalan operasi dipanggil
Perlindungan
Kernel
- Hak akses lengkap untuk semua sumber daya fisik
- Mengeksekusi dalam mode atasan
Program Aplikasi
- Memiliki ruang alamat sendiri, terpisah dari kernel dan lain-lain
- Mengeksekusi dalam mode pengguna
Akses ke sumber
- Panggilan ke kernel (system call trap), interupsi
- Beralih ke kernel ruang alamat
- Bisa mahal dalam hal waktu
Proses
- Abstraksi historis pertama thread tunggal aktivitas
- Bisa berjalan bersamaan, berbagi CPU jika CPU tunggal
- Perlu lingkungan eksekusi sendiri
proses multi-threaded
Growth in
Auxiliary opposite
regions direction
Stack
Heap
Text
0
Unit memori virtual
- bersebelahan
- Non-overlapping
Alokasi
penyeimbang beban
- Penciptaan lingkungan eksekusi
Banyak pendekatan
- Kesederhanaan disukai
- Beban mengukur mahal.
Isi Menginisialisasinya
- Isi dengan nilai dari file atau nol
menyalin fisik hanya ketika salah upaya untuk mengubah (hardware halaman kesalahan)
Copy-on-write
Process As address space Process Bs address space
RB copied
from RA
RA, parent region RA RB RB, inherited region
new, copy
Kernel
Shared
frame
A's page B's page
table table
Thread 2 makes
requests to server
Receipt & Input-output
queuing
Thread 1
generates
data
Requests
Server pool
(N threads)
Client
Server
Threads within clients
Thread 1 Thread 2
Separate
Item 1 data production
RMI calls to server
RMI
Pass data via buffer
Item 2 & 3
caller
blocked
Run concurrently
Improved speed,
throughput
Item 4
Server benang dan throughput
benang tunggal
- Max 100 permintaan klien per detik = 1000 / (2 + 8)
pool Pekerja
- Kolam tetap pekerja benang, ukuran tidak berubah
- Dapat menampung prioritas tapi tidak fleksibel
Arsitektur lain
- Benang-per-permintaan
- Benang-per-koneksi
- Benang-per-objek
paralelisme Fisik
- Mesin multi-prosesor (casper cf, SOC server file; noo-noo)
Thread-per-request
Spawns
workers
new worker for each request
I/O remote worker destroys itself
objects
when finished
Allows max throughput
no queuing
Server
no I/O delays
but overhead of creation &
destruction high
Thread-per-connection
per-connection threads Create new thread for
each connection
remote
objects Multiple requests
Destroy thread on
close
Server
Lower o/heads
but unbalanced load
Mengapa benang tidak proses?
Sinkronisasi
- Monitor (kata kunci disinkronisasi)
- Paling satu thread dalam monitor
Penjadwalan
- Memesan Efek Terlebih Dahulu (ditangguhkan setiap saat), non-preemptive
- Tidak ada real-time penjadwalan thread
Membuat thread baru di negara ditangguhkan, yang akan menjadi milik kelompok dan diidentifikasi
sebagai nama; benang akan menjalankan run () metode sasaran.
menjalankan()
Sebuah thread mengeksekusi run () metode objek target, jika memiliki satu, dan sebaliknya yang
menjalankan metode sendiri () (Thread mengimplementasikan Runnable).
mulai()
Penyebab benang untuk memasuki negara SUSPENDED untuk waktu yang ditentukan.
menghasilkan()
menghancurkan()
benang Java: sinkronisasi
thread.join (int millisecs)
Blok panggilan benang sampai waktu yang ditentukan sampai thread telah dihentikan.
thread.interrupt ()
Interupsi thread: menyebabkannya kembali dari pemblokiran panggilan metode seperti tidur ().
Blok panggilan benang sampai panggilan dibuat untuk memberitahukan () atau notifyAll () pada
objek bangun benang, atau benang terganggu, atau waktu yang ditentukan telah berlalu.
Bangun, masing-masing, satu atau semua dari setiap benang yang telah disebut menunggu () pada
objek.
Pelaksanaan doa
Jenis-jenis doa
- System call, RMI / RPC panggilan, mengirim pesan ...
Kinerja kritis!
- Jumlah yang sangat tinggi dari doa per sistem seumur hidup
- Latency tinggi lebih dari WAN, Internet
Menyusun
menyalin data
- Pengguna kernel, di seluruh jaringan, dll
inisialisasi Packet
- Protokol header, checksum
penjadwalan Thread, switching konteks
Menunggu pengakuan
- TCP atau UDP?
doa bersamaan
Keuntungan
- Meningkatkan delay total dan throughput yang
- Komunikasi tumpang tindih dengan render
doa asynchronous
Non-blocking doa
- Klien membuat panggilan (cf Mercury memperoleh janji)
- Terus pengolahan
Response
- Kadang-kadang tidak diperlukan
- Jika tidak, panggilan terpisah untuk mengumpulkan hasil,
- Kemudian mengklaim janji (uji apakah hasil siap, blok sampai hasil siap)
Desain isu
- Struktur dan hubungan kernel & middleware
- Pemilihan multi-threaded atau multi-prosesor arsitektur
- Persyaratan sistem pemahaman
jumlah maksimum permintaan, delay min diterima, throughput