Keserentakan (sains komputer)

Dalam sains komputer, **keserentakan** (bahasa Inggeris: *concurrency*) merupakan satu sifat sistem yang waktu membuat pengiraan-pengiraan bertindih, dan yang membenarkan sumber-sumber yang sama dikongsi antara pengiraan-pengiraan yang bertindih itu. Atau mengikut kata-kata Edsger Dijkstra, *"Keserentakan berlaku apabila dua atau lebih aliran pelaksanaan dapat dilakukan dengan serentak."* Penggunaan sumber-sumber kongsi dengan serentak merupakan sumber untuk banyak kesulitan. Syarat-syarat lumba yang melibatkan sumber-sumber kongsi boleh mengakibatkan tingkah laku sistem yang tidak dapat diramalkan. Pengenalan ekslusi bersaling boleh mencegah syarat-syarat lumba, tetapi juga boleh mengakibatkan masalah-masalah seperti kebuntuan dan kebuluran sumber. Perekaan bentuk sistem-sistem keserentakan seringnya melibatkan mencari-cari teknik-teknik yang boleh dipercayai untuk menyeleraskan pelaksanaan, pertukaran data, peruntukan ingatan, dan penjadualan pelaksanaan supaya dapat mengurangkan masa gerak balas dan memaksimumkan truput.

## Teori
Teori keserentakan merupakan bidang penyelidikan yang aktif dalam sains komputer teori sejak penerbitan karya Carl Adam Petri yang sangat besar pengaruhnya mengenai jaring Petri pada awal dekad 1960-an. Sejak dari masa itu, berbagai-bagai model teori, logik, dan alat-alat untuk memahami sistem-sistem serentak telah dikembangkan.

### Model
Berbagai-bagai formalisme untuk memodelkan dan memahami sistem-sistem serentak yang telah diperkembangkan, termasuk:
* Jaring Petri
* Mesin Capaian Rawak Selari
* Model pelaku
* Proses kalkulus

Sesetengah model keserentakan khususnya bertujuan untuk membantu pertimbangan dan spesifikasi, sedangkan yang lain boleh digunakan untuk seluruh kitaran pembangunan, termasuk reka bentuk, pelaksanaan, pembuktian, pengujian, serta penyelakuan sistem-sistem serentak.

### Logik
Berbagai-bagai jenis logik masa boleh digunakan untuk membantu pertimbangan tentang sistem-sistem serentak. Sesetengah logik itu, seperti logik masa linear dan logik pokok pengiraan, membenarkan kenyataan dibuat tentang urutan-urutan keadaan yang dialami oleh sebuah sistem serentak. Yang lain seperti logik masa tindakan oleh Lamport, logik Hennessy-Milner, dan logik pokok pengiraan tindakan mendasarkan kenyataan-kenyataannya pada jujukan-jujukan *tindakan* (perubahan dalam keadaan). Kegunaan utama kesemua logik ini adalah untuk menulis spesifikasi-spesifikasi sistem serentak.

## Amalan
Pengaturcaraan serentak merangkumi bahasa-bahasa pengaturcaraan dan algoritma-algoritma yang digunakan untuk melaksanakan sistem-sistem serentak. Pengaturcaraan serentak biasanya dianggap lebih umum, berbanding dengan pengaturcaraan selari kerana ia melibatkan pola-pola komunikasi dan saling tindak yang sembarangan dan dinamik. Sebaliknya, sistem-sistem selari umumnya mempunyai pola-pola komunikasi yang pratertakrif serta berstruktur rapi. Matlamat-matlamat asas pengaturcaraan serentak termasuk *ketepatan*, *prestasi*, serta *keteguhan*. Sistem-sistem selari seperti sistem-sistem pengendalian umumnya direka bentuk untuk beroperasi tak terhingga dan tidak terhenti tanpa dijangka. Sesetengah sistem serentak melaksanakan sejenis keserentakan nyata yang entiti-entiti pengiraan serentak akan bersaing dan berkongsi satu sumber tunggal, tetapi kerumitan-kerumitan persaingan dan pengongsian ini dilindungi daripada pengaturcara.

Oleh sebab sistem-sistem serentak menggunakan sumber-sumber kongsi, sistem-sistem itu biasanya memerlukan penggunaan sejenis pengantara (sering di dalam perkakasannya) dalam pelaksanaannya untuk mengawal capaian sumber-sumber tersebut. Penggunaan pengantara memungkinkan keputusan-keputusan ketaktentuan tak terbatas yang boleh menjejaskan ketepatan dan prestasi sistem serentak.

## Lihat juga
* Bahasa atur cara serentak
* Bebenang
* Kawalan keserentakan
* OpenMP
* Nod gugusan
* Nod rangkaian klien-pelayan
* Nod sistem teragih
* Pengiraan serentak
* Pola keserentakan
* Projek Ptolemy
* Proses

## Pautan luar
* Sistem Keserentakan  di Koleksi Maya WWW