informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Kebutuhan akan komputasi tersebar luas dalam sejarah umat manusia, dan perkembangannya secara umum telah melalui proses perkembangan dari alat komputasi umum, komputer mekanik, hingga komputer elektronik saat ini.
Kebutuhan umat manusia akan komputasi mendorong kita untuk terus menciptakan dan menyempurnakan komputer. Era saat ini adalah era “komputer elektronik”, dan tren perkembangannya adalah: lebih cepat, lebih stabil, dan lebih kecil.
Buku yang direkomendasikan: "Sejarah Singkat Komputer"
Poin 1
Komputer modern, sebagian besar mematuhinyaArsitektur Von Neumann
John von Neumann (28 Desember 1903 - 8 Februari 1957), ahli matematika dan ilmuwan komputer Hongaria-Amerika
Ilmuwan, fisikawan, dan salah satu ahli matematika terpenting abad ke-20. Von Neumann adalah seorang Ph.D. dalam bidang matematika dari Universitas Budapest. Ia adalah salah satu pemikir ilmiah paling serbaguna di bidang komputer modern, teori permainan, senjata nuklir, dan senjata biologis bapak komputer modern" dan "bapak teori permainan". ”.
Selanjutnya kita menggunakan proses dari awal untuk membangun CPU langkah demi langkah. Kita dapat menggunakan proses ini untuk memahami prinsip kerja komponen utama komputer seperti CPU dan memori.
Sakelar elektronik – Relai Mekanis
Melalui saklar elektronik, kita dapat mengimplementasikan operasi logika 1-bit (bit) yang tampaknya tidak berguna, tapi setidaknya berhasil, bukan?
Kita akan mempelajari lebih lanjut tentang cara menggunakan sakelar elektronik untuk menggabungkan komponen logika yang benar-benar berguna.
Inti dari tabung vakum dan transistor masa depan adalah untuk menyelesaikan pekerjaan serupa, tetapi prinsip fisiknya lebih kompleks, jadi kami tidak akan membawa Anda melalui penjelasan mendalam.
Selanjutnya, kita belajar bagaimana menggunakan saklar elektronik untuk membangun beberapa komponen yang berguna - rangkaian gerbang dapat direalisasikan.
ALU adalah komponen inti untuk operasi aritmatika dan logika di komputer, dan merupakan otak matematika komputer. Selanjutnya, kita menggunakan gerbang logika yang dibangun di atas untuk menyelesaikan ALU kita sendiri, untuk mempelajari dan memahami mode kerjanya, sehingga dapat untuk menyelesaikan ALU kita sendiri. memajukan pemahaman kita tentang landasan prinsip-prinsip komputer modern.
Unit aritmatika bertanggung jawab atas semua operasi digital di komputer, seperti empat operasi aritmatika, tentu saja, ia dapat melakukan lebih dari itu. Selanjutnya, saya akan menunjukkan kepada Anda cara mengimplementasikan penambah (adder) 8-bit saya tidak akan menjelaskan seluruh proses dan operasi lainnya.
Pada titik ini, kami telah membuat penambah 8-bit dari awal. Operasi satuan aritmatika tentu saja jauh lebih banyak dari ini. Dengan terus menggabungkan gerbang logika, satuan aritmatika dapat melakukan operasi penjumlahan, pengurangan, perkalian, pembagian, dan bahkan lebih banyak lagi operasi aritmatika, tetapi penjumlahan saja sudah cukup sebagai demonstrasi. Faktanya, tingkat kesulitan membuat pengali dan pembagi lebih tinggi dibandingkan dengan penjumlahan dan pengurangan. Jika Anda tertarik, Anda bisa mencoba mempelajarinya lebih lanjut.
Unit logika terutama digunakan untuk melakukan operasi logika. Operasi paling dasar adalah operasi AND, OR, dan NOT, tetapi bukan hanya perbandingan angka satu bit.
经过我们的努力,通过基本的逻辑门电路,我们⼀步步地做出了⼀个 8 位(bits) ALU,甚至比 Intel 74181 还要强大,Intel 74181 只是⼀个 4 位(bits) ALU(😀)。当然现代的计算机中的 ALU 部件非常强大,复杂度远远超过了我们的想象,32 位 甚至 64 位基本已经普及全球了。但无论如何,再复杂的ALU 也是芯片工程师像我们这样,一层又一层, 一步又一步地将其抽象出来的。ALU 是第⼀次将人类历史上的数学和逻辑学学科有机地结合起来,可以视为人类智慧发展的现代巅峰.
ALU saja tidak cukup. Kami tidak dapat menyediakan komponen penyimpanan untuk ALU, jadi selanjutnya kami menggunakan rangkaian gerbang untuk menjelaskan secara singkat produksi penyimpanan. Perhatikan bahwa meskipun tidak ditunjukkan dengan jelas pada gambar, persyaratan penyimpanan ini harus tetap menyala , yaitu penyimpanan ini bersifat volatil (volatile)
Kami menyembunyikan beberapa detail implementasi di tengah, dan efek akhirnya adalah: ketika garis penonaktifan disetel, masukannya adalah 1, dan 1 disimpan; ketika masukannya adalah 0, 0 disimpan , penulisannya tidak valid.
Kita dapat menggunakan kunci pintu untuk membangun register dan memori yang kita perlukan.
Konstruksi memori sedikit lebih rumit dari ini, namun prinsip dasarnya sama. Memori yang dibangun dengan cara ini disebut RAM (Random Access Memory) dan dapat mendukung kompleksitas waktu O(1) untuk mengakses data di lokasi mana pun. Ini berarti operasi akses subskrip array kita adalah O(1).
dukungan perangkat keras.
Kita sekarang memiliki ALU dan penyimpanan, tetapi ini masih belum cukup untuk membuat komputer kita berfungsi. Kita memerlukan komponen untuk mengarahkan ALU melakukan perhitungan seperti apa, dan komponen tersebut adalah unit kendali (CU).
Poin 2
Jumlah kotak pada gambar di atas dapat dianggap sebagai jumlah core. Seperti yang ditunjukkan pada gambar, ini adalah CPU enam belas inti.
CPU awal memiliki inti tunggal. Seiring dengan perkembangan zaman, kita memiliki persyaratan yang semakin tinggi untuk kecepatan pemrosesan CPU. Saat ini, kita perlu membuat CPU lebih terintegrasi dan memuat lebih banyak unit komputasi untuk menghitung lebih cepat unit komputasi menjadi kecil (proses pembuatan CPU, seperti 5nm, dll.). Pada saat ini, mekanika klasik menjadi tidak valid dan mulai memasuki bidang mekanika kuantum.
Saat ini, konsep multi-core sedang diusulkan.
Kecepatan komputasi CPU digambarkan oleh frekuensi, yang secara sederhana dapat dipahami sebagai berapa banyak instruksi yang dapat dieksekusi dalam satu detik (tidak ketat). Misalnya, kecepatan di atas dapat dipahami sebagai perhitungan CPU sekitar 3,4 miliar kali per detik .
Frekuensi CPU berubah secara dinamis berdasarkan beban kerja, seiring dengan meningkatnya frekuensi, maka akan mengkonsumsi lebih banyak daya dan menghasilkan lebih banyak panas. Untuk melindungi CPU dari pembakaran akibat panas berlebih, maka secara otomatis akan mengurangi frekuensi.
Poin 3
Pertama, mari kita perkenalkan instruksi yang kita perlukan.
Yang disebut instruksi, yaitu perintah yang memandu CPU untuk melakukan pekerjaan, terutama terdiri dari kode operasi + operan.
Opcode digunakan untuk menunjukkan tindakan apa yang harus dilakukan, dan operan adalah data yang akan dioperasikan oleh instruksi ini, yang dapat berupa alamat memori atau nomor register, dll.
Instruksi itu sendiri juga berupa angka, disimpan dalam area memori tertentu dalam bentuk biner.
Program yang kita tulis dalam bahasa pemrograman pada akhirnya harus diterjemahkan ke dalam “instruksi biner yang dieksekusi pada CPU.” Instruksi adalah unit dasar dari tugas yang diselesaikan oleh CPU.
Instruksi juga merupakan bahasa mesin (biner) dan bahasa rakitan. Bahasa mesin dan bahasa rakitan memiliki korespondensi satu-ke-satu.
CPU yang berbeda mendukung instruksi yang berbeda di tingkat mikro, seperti instruksi x86 dan instruksi arm, yang menyebabkan masalah kompatibilitas.
Instruksi mana yang dapat dijalankan oleh CPU dapat dianggap telah ditetapkan ketika CPU pertama kali dirancang. Gambar di atas mencantumkan beberapa instruksi yang disederhanakan.
Instruksi 8-bit dapat dibagi menjadi dua bagian.
4 bit pertama adalah kode operasi (opcode) yang menunjukkan apa yang dilakukan instruksi.
4 bit terakhir adalah operan (mirip dengan parameter)
Nama register AB pada tabel di atas adalah fiktif. Nama register CPU sebenarnya berbentuk: eax, ebx, esp, ebp...)
Ada register khusus di CPU, "penghitung program" (akan secara otomatis diatur oleh sistem setelah exe dimuat ke dalam memori), yang menyimpan lokasi memori dari mana instruksi akan dieksekusi selanjutnya waktu, saat instruksi dijalankan, Nilai "penghitung program" juga akan diperbarui. Secara default, ini adalah proses kenaikan otomatis +1 (mengeksekusi instruksi secara berurutan). sebagai (jika, sementara, untuk, pemanggilan fungsi...), itu akan diatur ke nilai lain.
Kami membagi pelaksanaan instruksi menjadi tiga tahap:
1) Pengambilan instruksi, CPU membaca isi instruksi dari memori ke dalam CPU (Ada register khusus untuk menyimpan instruksi yang dibaca)
2) Menganalisis instruksi dan mengidentifikasi fungsinya, fungsi dan operan yang sesuai
3) Jalankan instruksi
Eksekusi setiap instruksi harus melalui tiga langkah di atas, dan menyelesaikan suatu tugas memerlukan eksekusi beberapa instruksi di atas. Misalnya, proses penambahan mungkin memerlukan tiga instruksi di atas, yang tampaknya sangat merepotkan, tetapi karena perhitungan CPU sangat cepat (operasi di atas dapat dilakukan lebih dari satu miliar kali dalam satu detik), dan tidak memakan banyak waktu bagi komputer.
Yang disebut program adalah sekumpulan instruksi dan data yang akan diproses oleh kumpulan instruksi tersebut. Dalam arti sempit, suatu program biasanya tampak bagi kita sebagai sekumpulan file.
Program = instruksi + data yang akan diproses oleh instruksi.
Ini adalah cerita kecil menarik yang sempat beredar sebelumnya, namun tentu saja tidak benar.Namun untuk komputer paling awal, pemrograman sangat dibutuhkan
Diprogram dengan 0 dan 1 (Σ(っ°Д °;)っ)
Gambar di bawah menunjukkan komputer Altair 8800, salah satu mikrokomputer paling awal. Pengguna perlu mengontrol sakelar dan memasukkan program ke komputer sedikit demi sedikit.
Jika semua pengguna komputer diharuskan menggunakan pemrograman biner, semua orang akan menjadi gila. Ini adalah ambang batas yang terlalu tinggi. Maka lahirlah bahasa pemrograman.
Untuk meningkatkan efisiensi pemrograman, konsep bahasa assembly pertama kali dibuat. Faktanya, bahasa rakitan dan bahasa mesin (yaitu instruksi) secara langsung berkorespondensi satu-satu. Hanya saja sehubungan dengan angka 0 dan 1, beberapa simbol telah diciptakan untuk membantu manusia mengingat dan memahaminya, yang mana adalah apa yang kami miliki di atas. Apa yang Anda lihat mirip dengan LOAD_A, LOAD_B, dll. Setelah programmer menyelesaikan pemrograman, mereka perlu menggunakan assembler untuk menerjemahkan bahasa assembly ke dalam bahasa mesin.
Meskipun perakitan mengurangi biaya memori pemrogram, namun tetap memerlukan program untuk menguasai semua pengetahuan tentang perangkat keras komputer, dengan semakin banyaknya produsen komputer, program yang ditulis dalam satu waktu seringkali hanya cocok untuk satu jenis komputer. Ini masih jauh dari cukup, sehingga lahirlah bahasa tingkat tinggi yang melindungi detail perangkat keras dan memungkinkan pemrogram memikirkan bisnis mereka pada tingkat yang lebih tinggi. Di sini kita mengambil bahasa C sebagai contoh. Setelah programmer selesai menulis program, dia perlu menggunakan compiler dan linker untuk menerjemahkan program ke dalam bahasa assembly, dan kemudian menggunakan assembler untuk mengubahnya menjadi bahasa mesin akhir.
Dengan bantuan ide enkapsulasi, kita semakin mudah dalam mempelajari pemrograman. Namun, ada kelebihan dan kekurangannya. Tingginya tingkat abstraksi menyebabkan banyak programmer menganggap komputer sebagai kotak hitam dan sama sekali tidak dapat memahami cara kerja program mereka. Saya berharap tidak ada di antara kita yang menjadi programmer seperti itu.
Bahasa Java yang kami gunakan sedikit lebih maju dibandingkan bahasa C, namun tidak banyak perbedaan pada prinsip dasar abstraknya, jadi kami tidak akan menguraikannya untuk saat ini.
Catatan: Pernyataan dalam bahasa tingkat tinggi sering kali berhubungan dengan banyak instruksi yang harus diselesaikan.
Poin 4
Sistem operasi adalah nama kolektif untuk sekumpulan perangkat lunak yang mengelola sumber daya komputer. Saat ini, sistem operasi yang umum meliputi: seri Windows, seri Unix, seri Linux, seri OSX, seri Android, seri iOS, Hongmeng, dll.
Program yang berjalan pada sistem berbeda berbeda (program tidak kompatibel karena kpi berbeda)
Sistem operasi mempunyai dua fungsi dasar:
1) Mencegah perangkat keras disalahgunakan oleh aplikasi spatio-temporal; berikan KPI ke aplikasi dan biarkan aplikasi memanggilnya untuk menyelesaikan fungsi yang berbeda.
2) Menyediakan aplikasi dengan mekanisme yang sederhana dan konsisten untuk mengontrol perangkat keras tingkat rendah yang kompleks dan seringkali sangat berbeda.
Sistem operasi pada dasarnya melakukan dua hal berikut:
1) Kelola perangkat keras yang berbeda. Komputer dapat mengakses banyak perangkat, seperti pemindai kode, peralatan medis, mesin USG B...
2) Menyediakan lingkungan operasi yang stabil untuk perangkat lunak. Sistem operasi modern harus menjalankan banyak program secara bersamaan. Diharapkan program-program tersebut tidak saling mengganggu. Jika terjadi bug pada satu program, tidak akan berdampak pada program lainnya .
Ketika setiap aplikasi berjalan pada sistem operasi modern, sistem operasi akan memberikan abstraksi, seolah-olah hanya program ini yang berjalan di sistem, dan semua sumber daya perangkat keras digunakan oleh program ini. Ilusi ini dicapai dengan mengabstraksi konsep suatu proses, yang bisa dibilang salah satu konsep paling penting dan sukses dalam ilmu komputer.
Suatu proses adalah abstraksi dari program yang sedang berjalan oleh sistem operasi. Dengan kata lain, proses tersebut dapat dianggap sebagai proses yang berjalan dari program; pada saat yang sama, dalam sistem operasi, proses tersebut merupakan unit dasar alokasi sumber daya oleh sistem operasi.
Poin 5
Proses adalah beberapa aplikasi yang sedang dijalankan di komputer kita. (Ketika berbicara tentang suatu aplikasi, ada dua keadaan. Saat tidak berjalan, itu adalah file exe yang ada di hard disk; saat sedang berjalan, exe akan menjadi file exe. dimuat ke dalam memori, dan CPU menjalankan instruksi di dalamnya.
Proses adalah unit dasar alokasi sumber daya oleh sistem operasi.
Poin 6
Karena ada banyak proses dalam sistem, maka proses tersebut perlu dikelola
1) Deskripsi mengungkapkan berbagai atribut proses melalui struktur/kelas (sistem arus utama diimplementasikan melalui C/C++)
2) Organisasi menghubungkan beberapa struktur (deskripsi) di atas melalui struktur data, dan selanjutnya melakukan berbagai penambahan, penghapusan, modifikasi dan pemeriksaan...
Misalnya, sistem operasi Linux menggunakan struktur yang disebut "PCB" untuk mendeskripsikan informasi proses (PCB adalah singkatan dari blok kontrol proses). Sederhananya, beberapa PCB yang disebutkan di atas dirangkai melalui daftar tertaut untuk membuat suatu proses (ganda -klik exe, menjalankan program) sama dengan membuat struktur PCB. Menghancurkan proses berarti menghapus PCB dari daftar koneksi dan melepaskan struktur PCB. Melihat daftar proses berarti melintasi daftar koneksi dan menampilkan informasi yang sesuai secara berurutan .
PCB adalah struktur yang sangat kompleks yang berisi banyak atribut. Mari pelajari beberapa informasi penting di bawah ini.
1.Pengidentifikasi proses PID
Pada saat yang sama, PID bersifat unik di antara beberapa proses pada mesin dan tidak akan terulang. Banyak operasi internal dalam sistem menemukan proses yang sesuai melalui PID.
2. Penunjuk memori (satu set)
Menjelaskan area di mana instruksi dan data yang bergantung pada proses disimpan
Ketika sistem operasi menjalankan exe, ia akan membaca instruksi dan data di exe dan memuatnya ke dalam memori (alamat memori).
Dari sisi terlihat bahwa eksekusi proses memerlukan sumber daya memori tertentu.
3. Tabel deskripsi file (tabel/array urutan)
Menjelaskan file mana yang dibuka oleh proses, sesuai dengan data di hard disk
Ketika file dibuka dalam proses, item akan ditambahkan ke tabel urutan agar mudah dibaca.
Hal-hal berikut ini bersama-sama menentukan penjadwalan proses, yang berkaitan erat dengan perkembangan kita sehari-hari.
Poin 7
Kunci penjadwalan proses sistem operasiMultiplexing berbagi waktu
Sistem operasi saat ini semuanya adalah "sistem multi-tugas" yang dapat menjalankan banyak proses pada waktu yang sama. Sistem operasi sebelumnya disebut "sistem tugas tunggal" dan hanya dapat menjalankan satu proses pada waktu yang sama.
Pengertian time-sharing multiplexing: Pada saat tertentu, CPU menjalankan proses 1, berjalan beberapa saat, CPU menjalankan proses 2, dan menjalankan proses 3 setelah beberapa saat... Karena kecepatan komputasi CPU dan kecepatan switching sangat cepat, itu tidak terlihat dengan mata telanjang. Berdiri Dari sudut pandang manusia, ini setara dengan eksekusi simultan, "eksekusi bersamaan".
Eksekusi paralel: Sekarang dengan CPU multi-core, setiap core dan antar core juga dapat menjalankan proses yang berbeda secara bersamaan pada tingkat mikroskopis.
Konkurensi atau konkurensi dijadwalkan secara seragam oleh kernel sistem operasi dan tidak dapat dirasakan oleh pemrogram/pengguna biasa. Oleh karena itu, paralelisme dan konkurensi biasanya secara kolektif disebut sebagai "konkurensi", dan teknik pemrograman yang terkait juga disebut "pemrograman konkuren".
4. Status proses
Status siap: Proses dapat dijadwalkan ke CPU untuk menjalankan instruksi kapan saja
Status diblokir: Proses tidak dapat dijadwalkan untuk menjalankan instruksi pada CPU. Alasan mengapa proses diblokir adalah karena proses tersebut perlu melakukan beberapa operasi lain, seperti operasi IO (membaca dan menulis hard disk atau membaca dan menulis kartu jaringan, seperti sebagai sebagai scan input). Ketika input pengguna diperlukan, proses memasuki status pemblokiran)
Dua keadaan di atas adalah dua keadaan proses utama. Ada juga keadaan lain, jadi saya tidak akan membahas terlalu banyak detail...
5. Prioritas proses
Prioritas secara harfiah adalah urutan proses.
6. Konteks proses
Multiplexing pembagian waktu. Setelah suatu proses dijalankan beberapa saat, proses tersebut akan ditransfer dari CPU. Setelah beberapa saat, proses tersebut akan dijadwalkan kembali ke CPU. Proses tersebut akan terus dijalankan bersama dengan hasil eksekusi terakhir hasil antara dari eksekusi sebelumnya (berbagai nilai dalam register cpu) disimpan untuk penggunaan berikutnya.
7. Informasi akuntansi proses
Dengan dukungan prioritas, sumber daya yang dikonsumsi oleh berbagai proses mungkin menjadi semakin berbeda...
Atribut di atas digunakan untuk mendukung pelaksanaan proses penjadwalan secara bersamaan.
Sistem operasi mengalokasikan sumber daya memori menggunakan model spasial - proses yang berbeda menggunakan area memori yang berbeda tanpa mengganggu satu sama lain.
Seperti disebutkan di atas, proses adalah unit terkecil dari alokasi sumber daya oleh sistem operasi, yang berarti bahwa setiap proses tidak dapat merasakan keberadaan satu sama lain. Inilah maksud awal sistem operasi untuk mengabstraksi konsep proses yang ditimbulkannya prosesnya Mereka memiliki "isolasi" satu sama lain.
Namun, aplikasi modern seringkali tidak dapat menyelesaikan kebutuhan bisnis yang kompleks melalui suatu proses secara mandiri. Mereka selalu memerlukan proses dan proses untuk bekerja sama untuk mencapai tujuan aplikasi. Kebutuhan akan komunikasi antar-proses muncul pada momen bersejarah.
Saat ini hanya ada satu metode komunikasi antar proses utama di Java, melalui jaringan (socket)
Jaringan merupakan mekanisme IPC yang relatif khusus. Selain mendukung komunikasi antara dua proses pada host yang sama, juga mendukung komunikasi antar proses pada host berbeda dalam jaringan yang sama.