--- "I.B. Darmasakti" <[EMAIL PROTECTED]> schrieb: > > Maksudnya loop besar gimana ya? > > Maksudnya program dengan state yang sangat panjang dan > tidak bisa dipisah/dipecah menjadi proses terpisah. > > > Di POSIX Thread ada cara untuk ini, namanya > > condition variable atau > > objek sinkronisasi/ objek messaging. Thread yang > > nungguin kondisi > > variabel tertentu tinggal waiting saja, sampai > > variabel itu di set/ di > > signaled oleh thread lainnya. > > Oh.. yang ini kan datangnya dari user mode ke user > mode, apakah ada datang dari kernel mode dan bisa > sampai ke user mode? > Waktu menggunakan select() atau read(), ini sudah memakai konsep objek messaging. Kedua fungsi di atas tidak dilakukan dengan methode polling. Scheduler OS akan selalu melihat queue list sewaktu context switching, dan begitu ada data yang diinginkan, proses atau thread yang bersangkutan akan diaktifkan. Ini kan sama dengan modelnya condition variable.
> > > > > > > > sejak linux menggunakan metode file system untuk > > > mengakses driver termasuk socket. Metode ini > > > menggunakan cara polling. Polling berarti > > menghabiskan > > Wah ini kesimpulan atau baca dari mana mas :) > > dari kesimpulan saya sendiri. Setahu saya interrupt, > DMA dan resource hardware hanya berlaku di kernel > mode. Di user mode, kita cuman bisa akses device > dengan file system (open, read, write, etc). Nah itu Sedikit koreksi, bergantung pada jenis device drivernya, akses dengan device file system hanyalah salah satu cara (yang sering dipakai). Masih ada cara lainnya. > kan polling, dan linux menyediakan 2 metode untuk itu, Ini masih termasuk bukan polling kok. Runtutan ceritanya seperti yang saya uraikan di atas. > yaitu blocking dan non-blocking. kalo blocking berarti > prosesnya bakalan nunggu sampai permintaannya > terpenuhi. sedangkan kalo non-blocking, proses segera > kembali bila keadaan tidak terpenuhi. mirip seperti > yang anda jelaskan. > > > Fungsi select() bisa digunakan untuk tujuan di atas. > > Atau kalau pakai > > multithread, fungsi read() dengan blocking methoda > > juga bisa memnuhi > > spesifikasi di atas. > > Yah, dari pengalaman saya. Saya menggunakan select > untuk akses device dengan metoda non-blocking. dan > menggunakan multithread bila memakai metoda blocking. > karena meskipun nge-block tapi ada context switching > sehingga proses lain nggak harus nunggu. > Tapi kedua cara itu belumlah memuaskan untuk system > yang perlu real-time. :( Tentu saja untuk mendapatkan hasil menurut spesifikasi real time, juga bergantun dari OS yang dipakai. Kalau kayak standard Linux kan bukan dikonsep utk aplikasi real time, tentu saja banyak faktor yang ikut menentukan seperti context switching yang perlu waktu lama, syscal yang tidak preemtable dsb. Coba bandingkan dengan RT-Linux, terus komunikasi antara driver dengan user mode pakai fifo(RT-FIFO), atau shared memory, yang notabene berkonsep sama dengan read() atau select(), hasilnya akan jauh berbeda. ebs __________________________________________________________________ Gesendet von Yahoo! Mail - http://mail.yahoo.de M�chten Sie mit einem Gru� antworten? http://grusskarten.yahoo.de -- Utk berhenti langganan, kirim email ke [EMAIL PROTECTED] Informasi arsip di http://www.linux.or.id/milis.php3
