Pada Ulasan ini saya Agung Ahmad K dan teman saya
R.PB Prameshwara akan mengulas video yang berjudul “CppCon 2015: Niall Douglas
“Racing The File System"” yang di unggah oleh CppCon dengan https://www.youtube.com/watch?v=uhRWMGBjlO8&app=desktop sebagai link tautannya dengan durasi 1 jam 44
detik. Video ini dipresentasikan oleh Niall Douglas mengenai File
System Race.
Terdapat 2 tipe race, yaitu data
race dan race condition. Keduanya sangat berhubungan karena data race memanggil race condition dan race conditionlah yang menyebabkan data race. Terdapat perbedaan utama
dari keduanya yaitu, Dalam diagnosa data
race dapat
dilakukan otomasi clang thread
sanitiser dan valgrind helgrind sementara dalam race condition dibutuhkan programmer dengan pengalaman dan skill yang cukup tinggi dalam
melakukan diagnosa karena tidak terdapat cara pasti.
Filing system races sangat penting karena
kebanyakan programmer menganggap file system bersifat
statis dan terdapat banyak celah dalam file security. Terdapat 4
contoh filing system race. Yang pertama adalah concurrent
i/o dimana thread 1 mengalami ketidakcocokan pada x dan y karena ada
proses overwrite data posisi pada thread 2. Yang kedua
adalah concurrent path changes dimana thread 1 mengalami
ketidakcocokan pada file 1 dan file 2 karena proses rename yang
terjadi di thread 2. Yang ketiga adalah deleting a directory tree dimana
algoritma yang berjalan pada POSIX tidak berjalan untuk Windows sehingga
dibutuhkan algoritma baru. Yang terakhir adalah time of check to time
of use (TOCTTOU) dimana terjadi bypassing terhadap security pada
proses writing terhadap file.
Pada pattern design pertama yaitu pilih relative path dibanding absolute paths. Berikutnya design pattern kedua adalah hindari path yang menggunakan direct-by-fd operations. Pada pattern yang ketiga kombinasikan relative path syscall dengan inodecheking. Pattern selanjutnya adalah atomic renaming. Atomic renaming merupakan design pattern yang cukup terkenal
yang diperuntukan untuk menghindari reader-writer
visibility races.
Sedangkan pattern terakhir adalah locking, yang berguna untuk mengkontrol filesystem.
Di pattern kelima ini,
terdapat 4 tipe locking dalam filesystem yang diurutkan berdasarkan performanya. Yang pertama, Exclusive lock files (paling mudah, paling portable), yang kedua byte range locks (mudah di windows dan linux, tapi sulit untuk non-linux
POSIX), yang ketiga yaitu atomic append + extend
deallocation,
sedangkan yang terakhir adalah ordering
guarantees.
Video ini membahas beberapa cara dimana system races dapat tercampur dan pattern seperti apa untuk mencegah
gagalnya operasi tersebut. Lalu pengenalan Boost library AFIO yang dapat membantu para application developer. Dalam presentasinya selain pembicaraannya yang cukup jelas,
kita juga dapat mengunduh presentasi yang di tampilkan di video tersebut
sehinnga informasi yang didapat bisa maksimal.
GitHub Account penulis ulasan ini adalah agungak
dan pbprameshwara. URL ulasan ini adalah http://os162fasilkom.blogspot.co.id/2016/12/ulasan1.html
dan URL konten youtube ulasan ini adalah https://www.youtube.com/watch?v=uhRWMGBjlO8 dan berdurasi 1 jam 44 detik. Submisi
pertama dilakukan pada tanggal 10 Desember 2016 dan submisi revisi terakhir
tanggal 10 Desember 2016.
Tidak ada komentar:
Posting Komentar