Senin, 27 Juni 2011

Kontrol Diri

Perubahan-perubahan sosial yang cepat (rapid sosial change) sebagai konsekuensi modernisasi, industrialisasi, kemajuan ilmu pengetahuan, dan teknologi telah mempengaruhi perilaku, nilai-nilai moral, etika, dan gaya hidup (value sistem and way of life).

Keberadaan hawa nafsu disamping memberikan manfaat bagi kehidupan manusia, juga dapat melahirkan madlarat (ketidaknyamanan, atau kekacauan dalam kehidupan, baik personal maupun sosial). Kondisi ini terjadi apabila hawa nafsu tidak dikendalikan atau dikontrol, karena memang sifat yang melekat pada hawa nafsu adalah mendorong (memprovokasi) manusia kepada keburukan atau kejahatan.

Kegilaan masyarakat saat ini adalah personifikasi atas kegilaan yang dialami sebagai implikasi dari modernitas, bahwa modernitas, disamping melahirkan kemajuan dalam berbagai aspek (teknologi informasi, ekonomi, politik, sosial, dan budaya), ternyata juga melahirkan kegilaan atau gangguan kejiwaan. Diharapkan setiap individu mampu mengontrol diri terhadap setiap perubahan yang terjadi.

Tindakan-tindakan tidak terkontrol sering dikaitkan dengan remaja, karena seringkali bentuk perkelahian dilakukan oleh para remaja, sehingga perkelahian antar remaja sudah menjadi fenomena yang biasa di masyarakat luas terutama di kota-kota besar, perkelahian ini biasanya dipicu oleh masalah-masalah yang sepele, seperti bersenggolan di jalan, atau saling pandang yang ditafsirkan sebagai bentuk menantang, dan biasanya berakhir dengan perkelahian, perkelahian antar remaja pada awalnya hanya melibatkan dua individu kemudian berkembang menjadi perkelahian antar kelompok.

Kondisi tersebut dikarenakan dalam kelompok terdapat sifat interdependen antar anggota dan kondisi seperti itu berpeluang menjadi konflik SARA, dikarenakan Indonesia terdiri berbagai macam suku, agama, ras, yang berbeda-beda, sehingga individu akan merasa cemas, tidak aman, dan mudah tersulut emosi bila kontrol diri individu kurang. Oleh karena itu, kontrol diri diperlukan untuk mengontrol emosi yamg berasal dari dalam dan luar individu sebagai bentuk sosialisasi yang wajar.

Menurut Drever, kontrol diri adalah kontrol atau pengendalian yang dijalankan oleh individu terhadap perasaan-perasaan, gerakan-gerakan hati, tindakan-tindakan sendiri, sedangkan Goleman (dalam Sarah, 1998) mengartikan bahwa kontrol diri sebagai kemampuan untuk menyesuaikan dan mengendalikan dengan pola sesuai dengan usia. Bander (dalam Sarah, 1998) menyatakan bahwa kontrol diri merupakan kemampuan individu dalam mengendalikan tindakan yang ditandai dengan kemampuan dalam merencanakan hidup, maupun frustasi-frustasi dan mampu menahan ledakan emosi. Masa-masa remaja ditandai dengan emosi yang mudah meletup atau cenderung untuk tidak dapat mengkontrol dirinya sendiri, akan tetapi tidak semua remaja mudah tersulut emosinya atau tidak mampu untuk mengkontrol dirinya, pada remaja tertentu juga sudah matang dalam artian mampu mengkontrol setiap tindakan yang dilakukannya.

Selingkuh?

Perselingkuhan akhir-akhir ini menjadi bahan perbincangan yang menarik dan santer, sebab perselingkuhan itu sendiri tidak hanya didominasi oleh para pria, tetapi juga wanita di segala lapisan dan golongan, bahkan tidak memandang usia. Sebenarnya fenomena ini tidak hanya terjadi di kota-kota besar, tetapi juga di kota-kota kecil atau pun di daerah. bahkan ada pula yang suaminya menikah lagi dan punya anak selama bertahun-tahun tanpa diketahui oleh pihak istri pertamanya, perselingkuhan bukanlah tanpa akibat, akan tetapi memberi luka yang mendalam bagi pasangan, bahkan membuat pasangan merasa sangat terpukul, marah, sakit hati, benci pada suami atau istri dan selingkuhannya, hilang total kepercayaan, tidak lagi bisa menghormati pasangan, hingga akhirnya tidak mampu lagi membangun cinta kasih dan persahabatan yang selama ini menjadi pengikat dalam kehidupan perkawinan. Banyak yang mengatakan bahwa sulit sekali bagi untuk kembali mencintai setelah dikhianati sekian lama sehingga meskipun perkawinan tersebut bisa diselamatkan, namun tetap saja hatinya sudah menjadi dingin dan hubungan jadi hambar.

Ada beberapa pakar yang berbeda pendapat tentang perselingkuhan, ada yang melihat perselingkuhan ketika terjadi hubungan seksual yang bukan pasangan resminya, ada yang berpendapat bahwa tanpa berhubungan seksual tetapi ada keterlibatan asmara antara dua pasangan yang bukan pasangan resmi bisa dikatakan sebagai bentuk perselingkuhan, misalnya kissing, pengungkapan perasaan cinta. Menurut Latvala ( 2003 ) yang mengutip dari Essensial Dictionary menemukan dua definisi tentang perselingkuhan, menurutnya perselingkuhan adalah jika dua orang yang tidak saling terikat dalam satu perkawinan melakukan selingkuh, mereka mempunyai hubungan seksual. Sedangkan definisi yang lain memberikan pengertian bahwa penyelewengan terjadi, ketika seseorang yang sudah menikah atau yang sudah mempunyai ikatan khusus dengan seseorang melakukan hubungan seks dengan orang lain.

Bentuk perselingkuhan
Bentuk perselingkuhan dapat berupa non sexual maupun sexual. Hubungan perselingkuhan non sexual biasanya melibatkan adanya perasaan jatuh cinta diantara 2 (dua) orang lawan jenis dimana salah seorang atau keduanya telah menikah yang diekpresikan hanya sebatas aktivitas oral misalnya saling menceritakan perasan dan masalah masing-masing dan berbagi rasa serta kegiatan lain yang bersifat pribadi bukan bersifat sexual. Sebagian orang mengatakan bahwa kasus ini disebut sebagai kasus perselingkuhan non sexual ini sering kali terjadi bukan sekedar karena seseorang menemukan orang yang dirasa cocok sebagai sahabat tapi justru oleh sebab- sebab lain. Misal karena sesungguhnya individu merasa frustasi dengan kehidupan perkawinannya .

Sebagian orang melakukan perselingkuhan yang bersifat non sexual beranggapan bahwa melibatkan unsur seks dalam persahabatan sama halnya dengan merusak kehidupan perkawinan mereka. Padahal banyak terjadi kasus perkawinan retak karena keterlibatan emosional dari orang lain yang berbeda jenis, sebab seringkali tanpa disadari dari persahabatan lalu muncul keinginan untuk membandingkan pasangan yang resmi terlihat negatif dibandingkan dengan sahabatnya.

Berikut adalah tips untuk kita semua menghindari / meminimalisasi perselingkuhan :

Niat Kuat
Tetapkan hati untuk tidak mendua. Sedari awal menikah ataupun baru berpacaran, niatkan dalam hati bahwa hanya dia yang Anda miliki. Saya rasa Anda kerap kali mendengar kalimat ini “Satu saja nggak habis, kenapa mesti dua atau lebih? Nah, cobalah untuk menerapkannya. Camkan pula : bahwa pernikahan adalah sakral dan hanya dilakukan sekali dalam hidup.

Karma
Jika tidak ingin dikhianati oleh pasangan, maka jangan melakukannya. Berani berbuat, harus berani mengambil resiko. Ingatlah karma, jika Anda pernah berselingkuh, suatu hari entah kapan waktunya, semuanya bisa berbalik menimpa Anda. Jadi sebaiknya jangan sekali-kali mencoba untuk berselingkuh, ingatlah karma!

Self-help
Banyak sekali, bisa diperoleh dari membaca buku-buku, download di internet, dan majalah yang memuat artikel (solusi maupun tips-tips) yang bisa dijadikan referensi untuk Anda agar terhindar dari selingkuh. Bisa juga dengan minta pendapat dengan beberapa sahabat Anda yang bisa memberikan pandangan yang netral.

Lihat Pasangan Lebih Dekat
Jangan membandingkan pasangan dengan yang lain. Lihat dia dan terima dia apa adanya, meski ada kekurangan itu adalah hal yang wajar sebab manusia tidak ada yang sempurna. Justru Anda harus bisa menggali daya tariknya bukan dalam hal fisik semata (simpati, kebaikannya, kesetiaannya).

Komitmen
Menjaga komitmen serta aturan yang telah dibuat berdua. Setelah berniat untuk setia, terapkan pula dalam keseharian bahwa Anda harus menerapkan kesetiaan. Jika ada masalah lebih dahulu dibicarakan dengan pasangan. Jangan menganggap Anda sendirian, melainkan ada pasangan yang menjadi partner hidup Anda. Lantas bagi pribadi narsistik, sebaiknya buat komitmen dan aturan yang jelas dan tegas, sehingga mencegah terjadinya perselingkuhan.

Remaja

Secara tradisional masa remaja dianggap sebagai periode “badai dan topan”, suatu masa dimana ketegangan emosi meninggi sebagai akibat dari perubahan fisik dan kelenjar. Ciri perkembangan psikologis remaja adalah adanya emosi yang meledak-ledak, sulit dikendalikan, cepat depresi (sedih, putus asa) dan kemudian melawan dan memberontak. Emosi tidak terkendali ini disebabkan oleh konflik peran yang senang dialami remaja. Oleh karena itu, perkembangan psikologis ini ditekankan pada keadaan emosi remaja.

Keadaan emosi pada masa remaja masih labil karena erat dengan keadaan hormon. Suatu saat remaja dapat sedih sekali, dilain waktu dapat marah sekali. Emosi remaja lebih kuat dan lebih menguasai diri sendiri daripada pikiran yang realistis. Kestabilan emosi remaja dikarenakan tuntutan orang tua dan masyarakat yang akhirnya mendorong remaja untuk menyesuaikan diri dengan situasi dirinnya yang baru. Hal tersebut hampir sama dengan yang dikemukakan oleh Hurlock (1990), yang mengatakan bahwa kecerdasan emosi akan mempengaruhi cara penyesuaian pribadi dan sosial remaja. Bertambahnya ketegangan emosional yang disebabkan remaja harus membuat penyesuaian terhadap harapan masyarakat yang berlainan dengan dirinya.

Menurut Mappiare (dalam Hurlock, 1990) remaja mulai bersikap kritis dan tidak mau begitu saja menerima pendapat dan perintah orang lain, remaja menanyakan alasan mengapa sesuatu perintah dianjurkan atau dilarag, remaja tidak mudah diyakinkan tanpa jalan pemikiran yang logis. Dengan perkembangan psikologis pada remaja, terjadi kekuatan mental, peningkatan kemampuan daya fikir, kemampuan mengingat dan memahami, serta terjadi peningkatan keberanian dalam mengemukakan pendapat.

Konsep Diri

Konsep diri merupakan faktor penting didalam berinteraksi. Hal ini disebabkan oleh setiap individu dalam bertingkah laku sedapat mungkin disesuaikan dengan konsep diri. Kemampuan manusia bila dibandingkan dengan mahluk lain adalah lebih mampu menyadari siapa dirinya, mengobservasi diri dalam setiap tindakan serta mampu mengevaluasi setiap tindakan sehingga mengerti dan memahami tingkah laku yang dapat diterima oleh lingkungan. Dengan demikian manusia memiliki kecenderungan untuk menetapkan nilai-nilai pada saat mempersepsi sesuatu. Setiap individu dapat saja menyadari keadaannya atau identitas yang dimilikinya akan tetapi yang lebih penting adalah menyadari seberapa baik atau buruk keadaan yang dimiliki serta bagaimana harus bersikap terhadap keadaan tersebut. Tingkah laku individu sangat bergantung pada kualitas konsep dirinya yaitu konsep diri positif atau konsep diri negatif.

Menurut Brooks dan Emmart (1976), orang yang memiliki konsep diri positif menunjukkan karakteristik sebagai berikut: (a) Merasa mampu mengatasi masalah. Pemahaman diri terhadap kemampuan subyektif untuk mengatasi persoalan-persoalan obyektif yang dihadapi. (b) Merasa setara dengan orang lain. Pemahaman bahwa manusia dilahirkan tidak dengan membawa pengetahuan dan kekayaan. Pengetahuan dan kekayaan didapatkan dari proses belajar dan bekerja sepanjang hidup. Pemahaman tersebut menyebabkan individu tidak merasa lebih atau kurang terhadap orang lain. (c) Menerima pujian tanpa rasa malu. Pemahaman terhadap pujian, atau penghargaan layak diberikan terhadap individu berdasarkan dari hasil apa yang telah dikerjakan sebelumnya. (d) Merasa mampu memperbaiki diri. Kemampuan untuk melakukan proses refleksi diri untuk memperbaiki perilaku yang dianggap kurang.

Sedangkan orang yang memiliki konsep diri yang negatif menunjukkan karakteristik sebagai berikut: (a) Peka terhadap kritik. Kurangnya kemampuan untuk menerima kritik dari orang lain sebagai proses refleksi diri. (b) Bersikap responsif terhadap pujian. Bersikap yang berlebihan terhadap tindakan yang telah dilakukan, sehingga merasa segala tindakannya perlu mendapat penghargaan. (c) Cenderung merasa tidak disukai orang lain. Perasaan subyektif bahwa setiap orang lain disekitarnya memandang dirinya dengan negatif. (d) Mempunyai sikap hiperkritik. Suka melakukan kritik negatif secara berlebihan terhadap orang lain. (e) Mengalami hambatan dalam interaksi dengan lingkungan sosialnya. Merasa kurang mampu dalam berinteraksi dengan orang-orang lain.

Stress

Hidup manusia ditandai oleh usaha-usaha pemenuhan kebutuhan, baik fisik, mental-emosional, material maupun spiritual. Bila kebutuhan dapat dipenuhi dengan baik, berarti tercapai keseimbangan dan kepuasan. Tetapi pada kenyataannya seringkali usaha pemenuhan kebutuhan-kebutuhan tersebut mendapat banyak rintangan dan hambatan.

Tekanan-tekanan dan kesulitan-kesulitan hidup ini sering membawa manusia berada dalam keadaan stress. Stress dapat dialami oleh segala lapisan umur.

Stress dapat bersifat fisik, biologis dan psikologis. Kuman-kuman penyakit yang menyerang tubuh manusia menimbulkan stress biologis yang menimbulkan berbagai reaksi pertahanan tubuh. Sedangkan stress psikologis dapat bersumber dari beberapa hal yang dapat menimbulkan gangguan rasa sejahtera dan keseimbangan hidup.

SUMBER STRESS
Sumber stress dapat digolongkan dalam bentuk-bentuk:

Krisis
Krisis adalah perubahan/peristiwa yang timbul mendadak dan menggoncangkan keseimbangan seseorang diluar jangkauan daya penyesuaian sehari-hari. Misalnya: krisis di bidang usaha, hubungan keluarga dan sebagainya.

Frutrasi
Frustrasi adaah kegagalan dalam usaha pemuasan kebutuhan-kebutuhan/dorongan naluri, sehingga timbul kekecewaan. Frutrasi timbul bila niat atau usaha seseorang terhalang oleh rintangan-rintangan (dari luar: kelaparan, kemarau, kematian, dan sebagainya dan dari dalam: lelah, cacat mental, rasa rendah diri dan sebagainya) yang menghambat kemajuan suatu cita-cita yang hendak dicapainya.

Konflik
Konflik adalah pertentangan antara 2 keinginan/dorongan yaitu antara kekuatan dorongan naluri dan kekuatan yang mengenalikan dorongan-dorongan naluri tersebut.

Tekanan
Stress dapat ditimbulkan tekanan yang berhubungan dengan tanggung jawab yang besar yang harus ditanggungnya. (Dari dalam diri sendiri: cita-cita, kepala keluarga, dan sebagainya dan dari luar: istri yang terlalu menuntut, orangtua yang menginginkan anaknya berprestasi).

AKIBAT STRESS
Akibat stress tergantung dari reaksi seseorang terhadap stress. Umumnya stress yang berlarut-larut menimbulkan perasaan cemas, takut, tertekan, kehilangan rasa aman, harga diri terancam, gelisah, keluar keringat dingin, jantung sering berdebar-debar, pusing, sulit atau suka makan dan sulit tidur). Kecemasan yang berat dan berlangsung lama akan menurunkan kemampuan dan efisiensi seseorang dalam menjalankan fungsi-fungsi hidupnya dan pada akhirnya dapat menimbulkan berbagai macam gangguan jiwa.

REAKSI TERHADAP STRESS
Reaksi seseorang terhadap stress berbeda-beda tergantung dari:
1. Tingkat kedewasaan kepribadian
2. Pendidikan dan pengalaman hidup seseorang

Reaksi psikologis yang mungkin timbul dalam menghadapi stress:
1.   Menghadapi langsung dengan segala resikonya.
2.   Menarik diri dan tak tahu menahu tentang persoalan yang dihadapinya/lari dari kenyataan.
3.   Menggunakan mekanisme pertahanan diri.

PENANGGULANGAN STRESS
  1. Mengenal dan menyadari sumber-sumber stress.
  2. Membina kedewasaan kepribadian melalui pendidikan dan pengalaman hidup.
  3. Mengembangan hidup sehat. Antara lain dengan cara: merasa cukup dengan apa yang dimilikinya, tidak tergesa-gesa ingin mencapai keinginannya, menyadari perbedaan antara keinginan dan kebutuhan, dan sebagain
  4. Mengucap syukur kepada Tuhan Yang Maha Esa untuk segala sesuatu yang terjadi dengan tetap beriman kepadaNYa.
  5. Minta bimbingan kepada sahabat dekat, orang-orang yang lebih dewasa, psikolog, orang yang dewasa rohaninya, dan sebagainya).
  6. Hindarkan sikap-sikap negatif antara lain: memberontak terhadap keadaan, sikap apatis, marah-marah. Hal-hal tersebut tidak menyelesaikan masalah tetapi justru membuka masalah baru.

IQ

Menurut David Wechsler, inteligensi adalah kemampuan untuk bertindak secara terarah, berpikir secara rasional, dan menghadapi lingkungannya secara efektif. secara garis besar dapat disimpulkan bahwa inteligensi adalah suatu kemampuan mental yang melibatkan proses berpikir secara rasional. Oleh karena itu, inteligensi tidak dapat diamati secara langsung, melainkan harus disimpulkan dari berbagai tindakan nyata yang merupakan manifestasi dari proses berpikir rasional itu.
Adapun faktor-faktor yang mempengaruhi inteligensi adalah :

Faktor bawaan atau keturunan
Penelitian membuktikan bahwa korelasi nilai tes IQ dari satu keluarga sekitar 0,50. Sedangkan di antara 2 anak kembar, korelasi nilai tes IQnya sangat tinggi, sekitar 0,90. Bukti lainnya adalah pada anak yang diadopsi. IQ mereka berkorelasi sekitar 0,40 - 0,50 dengan ayah dan ibu yang sebenarnya, dan hanya 0,10 - 0,20 dengan ayah dan ibu angkatnya. Selanjutnya bukti pada anak kembar yang dibesarkan secara terpisah, IQ mereka tetap berkorelasi sangat tinggi, walaupun mungkin mereka tidak pernah saling kenal.

Faktor lingkungan
Walaupun ada ciri-ciri yang pada dasarnya sudah dibawa sejak lahir, ternyata lingkungan sanggup menimbulkan perubahan-perubahan yang berarti. Inteligensi tentunya tidak bisa terlepas dari otak. Perkembangan otak sangat dipengaruhi oleh gizi yang dikonsumsi. Selain gizi, rangsangan-rangsangan yang bersifat kognitif emosional dari lingkungan juga memegang peranan yang amat penting.

Inteligensi dan IQ
Orang seringkali menyamakan arti inteligensi dengan IQ, padahal kedua istilah ini mempunyai perbedaan arti yang sangat mendasar. Arti inteligensi sudah dijelaskan di depan, sedangkan IQ atau tingkatan dari Intelligence Quotient, adalah skor yang diperoleh dari sebuah alat tes kecerdasan. Dengan demikian, IQ hanya memberikan sedikit indikasi mengenai taraf kecerdasan seseorang dan tidak menggambarkan kecerdasan seseorang secara keseluruhan.

Skor IQ mula-mula diperhitungkan dengan membandingkan umur mental (Mental Age) dengan umur kronologik (Chronological Age). Bila kemampuan individu dalam memecahkan persoalan-persoalan yang disajikan dalam tes kecerdasan (umur mental) tersebut sama dengan kemampuan yang seharusnya ada pada individu seumur dia pada saat itu (umur kronologis), maka akan diperoleh skor 1. Skor ini kemudian dikalikan 100 dan dipakai sebagai dasar perhitungan IQ. Tetapi kemudian timbul masalah karena setelah otak mencapai kemasakan, tidak terjadi perkembangan lagi, bahkan pada titik tertentu akan terjadi penurunan kemampuan.

Pengukuran Inteligensi
Pada tahun 1904, Alfred Binet dan Theodor Simon, 2 orang psikolog asal Perancis merancang suatu alat evaluasi yang dapat dipakai untuk mengidentifikasi siswa-siswa yang memerlukan kelas-kelas khusus (anak-anak yang kurang pandai). Alat tes itu dinamakan Tes Binet-Simon. Tes ini kemudian direvisi pada tahun 1911.

Tahun 1916, Lewis Terman, seorang psikolog dari Amerika mengadakan banyak perbaikan dari tes Binet-Simon. Sumbangan utamanya adalah menetapkan indeks numerik yang menyatakan kecerdasan sebagai rasio (perbandingan) antara mental age dan chronological age. Hasil perbaikan ini disebut Tes Stanford_Binet. Indeks seperti ini sebetulnya telah diperkenalkan oleh seorang psikolog Jerman yang bernama William Stern, yang kemudian dikenal dengan Intelligence Quotient atau IQ. Tes Stanford-Binet ini banyak digunakan untuk mengukur kecerdasan anak-anak sampai usia 13 tahun.

Salah satu reaksi atas tes Binet-Simon atau tes Stanford-Binet adalah bahwa tes itu terlalu umum. Seorang tokoh dalam bidang ini, Charles Sperrman mengemukakan bahwa inteligensi tidak hanya terdiri dari satu faktor yang umum saja (general factor), tetapi juga terdiri dari faktor-faktor yang lebih spesifik. Teori ini disebut Teori Faktor (Factor Theory of Intelligence). Alat tes yang dikembangkan menurut teori faktor ini adalah WAIS (Wechsler Adult Intelligence Scale) untuk orang dewasa, dan WISC (Wechsler Intelligence Scale for Children) untuk anak-anak.

Di samping alat-alat tes di atas, banyak dikembangkan alat tes dengan tujuan yang lebih spesifik, sesuai dengan tujuan dan kultur di mana alat tes tersebut dibuat.

Inteligensi dan Bakat
Inteligensi merupakan suatu konsep mengenai kemampuan umum individu dalam menyesuaikan diri dengan lingkungannya. Dalam kemampuan yang umum ini, terdapat kemampuan-kemampuan yang amat spesifik. Kemampuan-kemampuan yang spesifik ini memberikan pada individu suatu kondisi yang memungkinkan tercapainya pengetahuan, kecakapan, atau ketrampilan tertentu setelah melalui suatu latihan. Inilah yang disebut Bakat atau Aptitude. Karena suatu tes inteligensi tidak dirancang untuk menyingkap kemampuan-kemampuan khusus ini, maka bakat tidak dapat segera diketahui lewat tes inteligensi.

Alat yang digunakan untuk menyingkap kemampuan khusus ini disebut tes bakat atau aptitude test. Tes bakat yang dirancang untuk mengungkap prestasi belajar pada bidang tertentu dinamakan Scholastic Aptitude Test dan yang dipakai di bidang pekerjaan adalah Vocational Aptitude Test dan Interest Inventory. Contoh dari Scholastic Aptitude Test adalah tes Potensi Akademik (TPA) dan Graduate Record Examination (GRE). Sedangkan contoh dari Vocational Aptitude Test atau Interest Inventory adalah Differential Aptitude Test (DAT) dan Kuder Occupational Interest Survey.

Inteligensi dan Kreativitas
Kreativitas merupakan salah satu ciri dari perilaku yang inteligen karena kreativitas juga merupakan manifestasi dari suatu proses kognitif. Meskipun demikian, hubungan antara kreativitas dan inteligensi tidak selalu menunjukkan bukti-bukti yang memuaskan. Walau ada anggapan bahwa kreativitas mempunyai hubungan yang bersifat kurva linear dengan inteligensi, tapi bukti-bukti yang diperoleh dari berbagai penelitian tidak mendukung hal itu. Skor IQ yang rendah memang diikuti oleh tingkat kreativitas yang rendah pula. Namun semakin tinggi skor IQ, tidak selalu diikuti tingkat kreativitas yang tinggi pula. Sampai pada skor IQ tertentu, masih terdapat korelasi yang cukup berarti. Tetapi lebih tinggi lagi, ternyata tidak ditemukan adanya hubungan antara IQ dengan tingkat kreativitas.

Para ahli telah berusaha mencari tahu mengapa ini terjadi. J. P. Guilford menjelaskan bahwa kreativitas adalah suatu proses berpikir yang bersifat divergen, yaitu kemampuan untuk memberikan berbagai alternatif jawaban berdasarkan informasi yang diberikan. Sebaliknya, tes inteligensi hanya dirancang untuk mengukur proses berpikir yang bersifat konvergen, yaitu kemampuan untuk memberikan satu jawaban atau kesimpulan yang logis berdasarkan informasi yang diberikan. Ini merupakan akibat dari pola pendidikan tradisional yang memang kurang memperhatikan pengembangan proses berpikir divergen walau kemampuan ini terbukti sangat berperan dalam berbagai kemajuan yang dicapai oleh ilmu pengetahuan.

Sabtu, 25 Juni 2011

Konkurensi

Fitur-fitur utama dari sistem operasi modern yang paling menonjol adalah kemampuan sistem operasi untuk melakukan:
  1. Multiprogramming: kemampuan untuk memanajemen banyak proses dengan menggunakan satu prosesor,
  2. Multiprocessing: kemampuan untuk memanajemen banyak proses dengan menggunakan banyak prosesor,
  3. Distributed Processing  (pemrosesan tersebar): kemampuan untuk memanajemen banyak proses yang dieksekusi pada banyak komputer yang tersebar dibeberapa lokasi.
Hal mendasar yang perlu diperhatikan ketika menangani banyak proses yang berjalan bersama-sama (konkurensi) adalah masalah-masalah seperti: bagaimana komunikasi antar proses-proses tersebut, membagi pakai dan terjadinya kompetisi untuk sumber daya komputer, sinkronisasi aktivitas proses-proses, dan alokasi prosesor.
Prinsip-prinsip Konkurensi
Pada komputer yang menjalankan multiprogramming proses-proses dijalankan bergantian dengan cepat oleh prosesor sehinga tampak seolah-olah berjalan bergantian. Ketika hal ini dilakukan timbul beberapa masalah, yaitu:
  1. Berbagi pakai sumber daya memiliki resiko tinggi. Contohnya ketika dua buah proses mengakses variabel yang sama dan melakukan operasi penulisan dan pembacaan maka urutan eksekusi pembacaan dan penulisan masing-masing proses menjadi hal yang perlu diperhatikan dan bersifat kritikal.
  2. Sulit bagi sistem operasi untuk memanajemen alokasi sumber daya komputer secara optimal. Contohnya jika sebuah proses mengakses suatu file atau I/O kemudian ditunda eksekusinya maka proses lain yang hendak mengakses file atau I/O tersebut akan ditolak hingga proses pertama selesai mengakses file atau I/O tersebut.
  3. Sulit untuk melacak kesalahan pada program. Hal ini dikarenakan hasil yang sama tidak determinisitik dan sulit diproduksi ulang.
Salah satu masalah yang ditimbulkan dari berbagi pakai sumber daya adalah race condition, yaitu situasi sedemikian sehingga beberapa proses atau thread menulis data di tempat/variabel yang sama sehingga hasil akhir bergantung kepada urutan eksekusi instruksi-instruksi proses-proses tersebut. Sebagai contoh: jika ada dua proses P1 dan P2, berbagai pakai variabel global a. Jika P1 mengubah nilai a menjadi 1 dan kemudian pada suatu ketika P2 mengubah nilai a menjadi 2 maka kedua proses sedang berada dalam kondisi balapan untuk menulis variabel a. Pada contoh ini pihak yang kalah balapan (yang terakhir mengubah nilai variabel a) adalah yang menentukan nilai akhir dari variabel a.
Untuk menangani masalah konkurensi ini sistem operasi perlu memperhatikan hal-hal sebagai berikut:
  1. Sistem operasi harus dapat mengetahui jejak dari berbagai proses yang berjalan, Hal ini dapat dilakukan melalui process control block.
  2. Sistem operasi harus dapat mengalokasi dan mendealokasi sumber daya komputer untuk setiap proses yang aktif, seperti Prosesor, Memori, Berkas-berkas, Peralatan-peralatan I / O
  3. Sistem operasi harus dapat melindungi data dan sumber daya fisik yang sedang dialokasikan untuk setiap proses dari interferensi yang tidak dimaksudkan oleh proses lain.
  4. Fungsi dan output dari sebuah proses harus independen terhadap kecepatan eksekusi relatif terhadap kecepatan proses konkuren yang lain. Bab ini akan difokuskan pada poin ke-empat ini.
Apa maksud dari pernyataan fungsi dan output dari sebuah proses harus independen terhadap kecepatan eksekusi relatif terhadap kecepatan proses konkuren yang lain? Fungsi sebuah proses dan output yang dihasilkannya sebisa mungkin dijaga untuk tidak terpengaruh oleh kecepatan eksekusi proses tersebut yang dalam sebuah sistem multiproses menjadi tidak tetap bergantung proses-proses lainnya.

Proses-proses dalam sistem multiproses dapat saling independen tetapi lebih sering melakukan interaksi. Ada beberapa jenis interaksi yang terjadi antar proses berdasarkan derajat pengetahuan proses-proses terhadap adanya proses lainnya:
  1. Proses-proses tidak saling mengetahui keberadaan proses lain.
  2. Proses-proses tersebut dimaksudkan untuk bekerja independen dan tidak dimaksudkan untuk saling bekerja sama. Pada kasus ini meski tidak bekerja sama tetapi sangat mungkin terjadi kompetisi untuk mendapatkan sumber daya kompuer tertentu.
  3. Proses-proses saling mengetahui keberadaan proses lain secara tidak langsung.
  4. Proses-proses ini tidak mengetahui secara langsung proses lain melalui process ID yang mereka miliki melainkan karena berbagi pakai suatu sumber daya yang sama dan mengetahui bahwa sumber daya tersebut dibagi pakai bersama dengan proses lainnya.
  5. Proses-proses saling mengetahui keberadaan proses lain secara langsung.
Proses-proses ini saling mengetahui keberadaan proses lain sampai pada tingkat mengetahui process ID proses lainnya.
Pada jenis interaksi pertama proses-proses yang berjalan berbarengan mengalami konflik ketika mencoba mengakses sumber daya yang sama pada waktu yang bersamaan. Jika salah satu proses telah mengakses sumber daya tersebut maka proses lain harus menunggu hingga proses tersebut selesai menggunakan sumber daya tersebut sebelum dapat menggunakannya. Hal ini menyebabkan eksekusi proses menjadi tertunda dan bahkan pada beberapa kasus proses lain tidak pernah mendapat kesempatan untuk mengakses sumber daya tersebut dan akhirnya tidak pernah selesai dengan sukses.
Untuk mengendalikan proses-proses yang saling berkompetisi setidaknya ada tiga masalah yang dihadapi, yaitu:
  1. Mutual exclusion
  2. Deadlock
  3. Starvation
Mutual exclusion adalah konsep sedemikian sehingga hanya satu proses yang boleh mengakses/menggunakan sebuah sumber daya yang tidak bisa dipakai berbarengan (contohnya: printer, kartu jaringan, dll). Instruksi-instruksi yang dieksekusi ketika mengakses sebuah sumber daya disebut sebagai critical section dan sumber daya tersebut dikenal sebagai critical resource. Mutual excluision mengharuskan pada suatu saat hanya ada satu proses yang berada pada kondisi critical section.
Penerapan mutual exclusion dapat menyebabkan dua masalah, yaitu deadlock dan starvation. Deadlock adalah kondisi sedemikian sehingga beberapa proses tidak berjalan karena masing-masing sedang mengakses suatu sumber daya dan untuk menyelesaikan eksekusi critical section masing-masing harus mengakses critical resource yang sedang diakses proses lainnya. Misalkan proses P1 dan P2 membutuhkan sumberdaya R1 dan R2 untuk menyelesaikan critical section masing-masing. Seandainya P1 sedang mengakses R1 dan P2 sedang mengakses R2 maka P1 tidak dapat mengakses R2 dan sebaliknya P2 juga tidak dapat mengakses R1. Saat inilah kedua proses tidak dapat melanjutkan proses eksekusi dan deadlock terjadi.
Starvation (kelaparan) adalah kondisi sedemikan sehingga sebuah proses terus menerus gagal mendapatkan akses suatu sumber daya dikarenakan proses-proses lain terus menggunakan sumber daya tersebut

Persayaratan untuk mutual exclusion
Untuk menerapkan mutual exclusion sebuah sistem harus memenuhi kebutuhan-kebutuhan sebagai berikut:
  1. Mutual exclusion harus dapat dipaksakan
  2. Proses yang berhenti sementara pada bagian non critical harus dapat berhenti tanpa mengganggu proses yang lain
  3. Tidak boleh terjadi sebuah proses tertahan dari memasuki critical section dalam waktu yang tidak pasti: tidak boleh ada deadlock dan starvation
  4. Ketika tidak ada proses yang memasuki critical section pada suatu critical resource maka proses lain yang hendak memasuki cirtical sectionnya harus diizinkan mengakses critical resource tersebut tanpa waktu tunda
  5. Tidak asumsi yang dibuat mengenai kecepatan proses dan jumlah prosesor
Sebuah proses berada dalam critical section untuk waktu yang terbatas.
Dukungan Perangkat Keras untuk Mewujudkan Mutual Exclusion
Interrupt Disabling
Apabila sebuah proses yang memasuki critical section dapat diinterupsi eksekusinya maka mutual exclusion menjadi tidak terjamin penerapannya. Kemampuan untuk mencegah suatu proses diinterupsi di tengah critical section proses tersebut dapat diwujudkan dalam bentuk rutin-rutin dasar/primitif yang disediakan di dalam kernal yang berguna untuk mematikan dan menyalakan kembali fasilitas interupsi. Sebuah proses dapat memaksakan mutual exclusion dengan cara seperti di bawah ini:
while (true)
{
  /* matikan interupsi */;
  /* masuk ke critical section */;
  /* nyalakan interupsi */;
  /* masuk ke non-critical section */;   
}

Sebelum proses memasuki critical section proses memanggil rutin primitif untuk mematikan fasilitas interupsi dan proses memanggil rutin untuk mengembalikan fungsi interupsi. Dikarenakan critical section tidak dapat diinterupsi maka mutual exclusion menjadi terjamin penerapannya. Cara ini memiliki biaya yang mahal dikarenakan akan membatasi fleksibilitas prosesor dalam mengubah proses yang dieksekusi. Selain itu solusi ini tidak bekerja pada lingkungan multiprosesor di mana beberapa proses dapat dijalankan bersamaan masing-masing dengan prosesor yang berbeda.   
Instruksi-instruksi Mesin Khusus
Interrupt disabling tidak dapat digunakan pada mesin dengan banyak prosesor dikarenakan tidak ada mekanisme untuk melakukan interupsi antar prosesor. Pada lingkungan seperti ini yang mengkaitkan prosesor satu dan lainnya adalah mereka sama-sama mengakses satu main memory yang sama dan pada tingkatan perangkat keras akses ke lokasi tertentu main memory berarti menghalangi prosesor lain mengakses lokasi yang sama. Dengan menggunakan kondisi ini para disainer prosesor mencoba untuk mengaplikasikan mutual exclusion melalui instruksi mesin yang dalam satu putaran melakukan dua pekerjaan yang bersifat atomik seperti reading dan writing, atau reading dan testing. Dua bentuk instruksi yang diimplementasi antara lain:
1.    Instruksi test and set
2.    Instruksi exchange

Instruksi Test and Set
Instruksi test and set dapat didefinisikan seperti di bawah ini:
boolean testset (int i)
{
    if(i==0)
    {
        i=1;
        return true;
    }
    else
    {
        return false;
    }
}

Instruksi ini memeriksa apakah parameter i bernilai. Jika i bernilai 0 maka instruksi ini akan mengganti nilainya menjadi 1 dan mengembalikan nilai boolean true. Sebaliknya jika bernilai 1 maka instruksi ini akan mengembalikan nilai false.
Tabel di bawah memperlihatkan bagaimana mutual exclusion dapat diimplementasi melalui mekanisme instruksi ini. Prosedur parBegin(P1,P2, …, Pn) sendiri bekerja dengan cara sebagai berikut: tahan (suspend) ekseskusi dari program utama (main program) kemudian siapkan/inisiasi eksekusi secara konkuren prosedur P1, P2, …, Pn. Jika prosedur-prosedur tersebut telah selesai lanjutkan kembali program utama. Sebuah variabel yang dibagi pakai bernama bolt diinisialisasi bernilai 0. Proses yang dapat memasuki critical section hanyalah proses yang mendapati bahwa nilai bolt adalah 0. Proses lainnya akan tertahan dari memasuki critical section dan mengalami bussy waiting atau spin waiting. Bussy waiting adalah suatu teknik sedemikian sehingga proses tidak dapat memasuki critical section dan terus-menerus memeriksa kondisi tertentu yang membolehkan proses tersebut memasuki critical section. Setelah proses keluar dari critical section proses tersebut akan mengubah nilai bolt kembali menjadi 0.

/*program:mutualexclusion*/
const int n=/*jumlah proses*/
int bolt;
void P(int i)
{
   while(true)
   {
     while(!testset(bolt))
        /*diam*/
     /*critical section*/
     /*lain-lain*/
   }
}
void main()
{
   bolt=0;
   parBegin(P(1),P(2), …, P(n));
}
/*program:mutualexclusion*/
const int n=/*jumlah proses*/
int bolt;
void P(int i)
{
  int keyi=1;
  while(true)
  {
     do exchange (keyi, bolt);
     while(key!=0)
     /*critical section*/
     exchange(keyi, bolt);
     /*lain-lain*/
  }
}
void main()
{
  bolt=0;
  parBegin(P(1),P(2), …, P(n));
}
Instruksi Test and Set
Instruksi Exchange

Instruksi Exchange
Instruksi exchange dapat didefinisikan seperti di bawah ini:
void exchange (int register, int memory)
{
    int temp;
    temp=memory;
    memory=register;
    register=temp;
}
Instruksi ini menukar nilai dalam sebuah register (lokasi memori dalam prosesor) dengan nilai dalam sebuah lokasi memori. Tabel 4-1 memperlihatkan bagaimana mutual exclusion dapat diimplementasi dengan instruksi ini. Prosedur parBegin dan variabel bolt pada instruksi ini memiliki fungsi yang sama dengan pasangannya di instruksi set and test sedangkan variabel baru keyi ditetapkan di awal bernilai 1. Proses boleh memasuki critical section hanya jika mendapati nilai bolt adalah 0 dengan cara menukar nilai keyi dengan bolt dan memeriksa apakah nilai keyi adalah 1. Setelah proses meninggalkan critical section proses akan menukarkan kembali nilai bolt menjadi 0.
Sifat-sifat Pendekatan Instruksi Mesin
Keuntungannya:
  1. Dapat digunakan pada lingkungan satu (uni) atau banyak (multi) prosesor yang berbagi pakai main memory
  2. Sederhana dan mudah dipastikan
  3. Dapat mendukung beberapa critical section dengan menggunakan variabel tersendiri untuk setiap critical section
Kerugiannya:
1.    Terdapat busy waiting yang menghabiskan waktu prosesor
2.    Memungkinkan terjadinya starvation.
3.    Memungkinkan terjadinya deadlock
Fasilitas Perangkat Lunak untuk Mewujudkan Mutual Exclusion
Melihat kekurangan dari pendekatan instruksi mesin pendekatan alternatif dirasa perlu. Sistem operasi dan bahasa pemrograman dapat menyediakan mekanisme untuk mewujudkan mutual exclusion. Beberapa di antaranya adalah:
1.    Semaphore,
2.    Monitor, dan
3.    Message passing
Semaphore
William Stalling dalam bukunya, Operating Systems Internal Design and Principles, menyebutkan kemajuan besar yang pertama dalam menangani masalah-maslah yang timbul akibat proses-proses yang konkuren terjadi di tahun 1965 oleh Dijkstra. Dijkstra menekankan pada disain dari sistem operasi sebagai sekumpulan proses berurutan yang saling bekeja sama dan dengan pengembangan dari mekanisme-mekanisme kerja sama yang efisien dan dapat diandalkan. Mekanisme-mekanisme tersebut dapat digunakan oleh proses dari user jika prosesor dan sistem operasi dapat menyediakan mereka untuk digunakan.
Prinsip dasarnya adalah: bawhwa dua atau lebih proses dapat bekerja sama dengan menggunakan sinyal-sinyal sederhana, sedemikian sehingga sebuah proses dapat dipaksa berhenti pada tahap tertentu hingga menerima sinyal tertentu. Kebutuhan untuk koordinasi kompleks apapun dapat dipenuhi dengan struktur sinyal-sinyal yang tepat. Untuk mengirimkan sinyal dibutuhkan variabel-variabel spesial yang disebut sebagai semaphore. Untuk mengirim sinyal melalui semaphore s sebuah proses memanggil rutin primitif semSignal(s) dan untuk menerima sinyal melalui semaphore s, sebuah proses memanggil rutin primitif semWait(s). Jika ternyata setelah memanggil semWait(s) sinyal yang ditunggu tidak tersedia maka proses tersebut akan ditahan hingga sinyal yang ditunggu dikirimkan.
Semaphore dapat dilihat sebagai sebuah variabel bertipe integer yang kepadanya dapat dilakukan tiga operasi, yaitu:
  1. Sebuah semaphore dapat diinisialisasikan sehingga bernilai bilangan non negatif.
  2. Operasi semWait akan mengurangi nilai semaphore. Jika nilainya telah negatif maka proses yang memanggil semWait tersebut akan di blok. Sebaliknya jika nilainya masih positif proses dapat dilanjutkan.
  3. Operasi semSignal menaikkan nilai semaphore. Jika nilanya kurang atau sama dengan nol maka proses yang diblok oleh operasi semWait akan dilepaskan dari status diblok.
Selain ketiga operasi di atas tidak boleh ada lagi cara untuk memeriksa dan mengubah nilai semaphore.
Bentuk dari semphore yang lebih ketat adalah binary semaphore atau mutex yang hanya mengizinkan nilai 0 dan 1 bagi semaphore. Operasi-operasinya adlah sebagai berikut:
  1. Binary semaphore dapat diinisialisasikan dengan nilai 0 atau 1.
  2. Operasi semWaitB memeriksa nilai semaphore. Jika nilainya satu maka nilainya diubah menjadi nol dan proses melanjutkan eksekusi.
  3. Operasi semSignalB memeriksa apakah ada proses yang diblok pada semaphore ini. Juka ada maka proses yang telah diblok oleh operasi semWaitB akan dilepaskan dari status diblok dan nilai dari semaphore diubah menjadi satu.
Bentuk semaphore yang pertama sering pula disebut sebagai counting semaphore atau general semaphore.
Kebijakan yang digunakan untuk mengeluarkan proses dari antrian proses yang diblok pada semaphore dapat bermacam-macam bentuknya. Bentuk yang paling adil adalah First In First Out (FIFO). Proses yang paling lama diblok adalah yang keluar paling awal. Semaphore yang mendefinisikan kebijakan melepas proses dari antrian dikenal sebagai strong semaphore sedangkan yang tidak mendefinisikannya disebut sebagai weak semaphore. 
Contoh dari mekanisme semaphore dapat dilihat pada gambar 4-1 dengan kondisi awal terdapat proses A, B, C, dan D dengan keterhubungan sedemikan sehingga proses A, B, dan C bergantung pada hasil yang dikeluarkan proses D. Urutan kejadian pada gambar dapat dijelaskan sebagai berikut:
  1. Awalnya A sedang berjalan; B, C, dan D dalam kondisi ready. Semaphore bernilai 1 menandakan salah satu hasil yang dikeluarkan proses D telah tersedia. Ketika A memanggil instruksi semWait pada semaphore s nilai s akan dikurangi menjadi 0 dan A dapat melanjutkan ke langkah selanjutnya dan kemudain bergabung pada antrian ready.
  2. B kemudian dieksekusi dan memanggil instruksi semWait. Dikarenakan nilai semaphore s menjadi -1 maka proses B akan diblok dan memasuki antrian blocked.
  3. Ketika proses D dieksekusi dan mengeluarkan hasil yang baru instruksi semSignal dipanggil oleh proses D  yang memungkinkan proses B yang diblok untuk masuk ke kondisi ready di antrian ready.
  4. Proses D yang telah selesai langsung bergabung pada antrian ready dan proses C dieksekusi.
  5. Proses C yang memanggil instruksi semWait kemudian diblok dan masuk ke antrian blocked dan nilai semaphore menjadi -1 (tidak tampak di gambar).
  6. Selanjutnya proses A dan B juga mengalami hal yang sama dengan proses C. Pada tahap ini akhirnya nilai semaphore menjadi -3.
  7. Proses D kembali dijalankan, mengeluarkan hasil baru dan memanggil instruksi semSignal sehingga nilai semaphore menjadi -2 dan proses C keluar dari antrian blocked masuk ke antrian ready. Ketika dieksekusi proses C akan mendapatkan hasil yang dikeluarkan oleh proses D. Pada putaran berikutanya proses D akan melepaskan proses A dan B dari antrian blocked dan masing-masing akan mendapatkan hasil dari proses D seperti halnya proses C.
Strong semaphore menjamin terbebas dari starvation sedangkan weak semaphore tidak. Pada umumnya sistem operasi menyediakan fasilitas untuk strong semaphore.
Contoh dari mekanisme semaphore

Monitor diajukan sebagai solusi dari masalah yang dimiliki semaphore. Monitor sendiri adalah sebuah modul program yang memiliki satu atau beberapa prosedur, urutan inisialisasi, dan data lokal. Monitor memiliki karakteristik sebagai berikut:
  1. Data lokal hanya bisa diakses oleh prosedur yang ada di dalam monitor.
  2. Sebuah proses memasuki monitor dengan memanggil salah satu prosedur di dalam monitor tersebut.
  3. Pada satu saat hanya ada satu proses yang bisa menggunakan prosedur di dalam monitor. Proses lain yang hendak mengakses pada waktu yang bersamaan harus menunggu proses pertama selesai.
Untuk melindungi struktur data yang dibagi pakai bersama data tersebut dapat diletakkan di dalam monitor.
Untuk dapat digunakan dalam lingkungan yang konkuren monitor harus menyediakan fasilitas sinkronisasi bagi proses-proses yang menggunakannya. Sebagai contoh jika ada sebuah proses yang memanggil prosedur dalam monitor  dan ketika berada di dalamnya harus diblok untuk menunggu suatu kejadian atau kondisi tertentu terpenuhi maka diperlukan sebuah fasilitas yang memungkinkan proses tersebut tidak hanya diblok tetapi juga melepas akses terhadap monitor sehinga proses lain dapat menggunakan monitor tersebut. Setelah kondisi terpenuhi dan monitor kembali tersedia proses tadi dapat kembali berjalan pada posisi sebelum ia diblok.
Monitor sendiri memiliki beberapa alternative implementasi seperti:
1.    Monitor dengan signal
2.    Monitor dengan notify dan broadcast
Message Passing
Message passing adalah sebuah teknik untuk melakukan sinkronisasi dan komunikasi antara proses-proses yang salin berinteraksi. Message passing dapat diimplementasikan dengan beberapa cara namun yang dibahas kali ini adalah dengan menggunakan sepasang prosedur primitive yaitu:
1.    Send (tujuan, pesan)
2.    Receive(sumber, pesan)
Sebuah proses mengirim informasi kepada proses lain melalui pemanggilan prosedur send sedangkan proses menerima informasi melalui pemanggilan prosedur receive.
Ada beberapa persoalan yang berkenaan dengan disain teknik message passing ini, antara lain:
  1. Sinkronisasi: proses tidak dapat menerima pesan sebelum pesan tersebut dikirimkan oleh proses lain.
  2. Pengalamatan: menentukan cara mengalamati sebuah proses, yaitu melalui direct addressing dan indirect addressing.
  3. Format pesan: menentukan bagaimana pesan dibentuk dan informasi apa saja yang terdapat di dalam pesan termasuk pesan-pesan pada sistem tersebar
  4. Aturan antrian: menentukan bagaimana antrian pesan yang datang maupun dikirim diproses oleh proses tujuan atau sumber.
Sinkronisasi
Ketika suatu proses mengirimkan pesan dengan memanggil prosedur send ada dua kemungkinan yang dapat terjadi:
1.    Proses pengirim diblok hingga pesan diterima, atau
2.    Proses boleh melanjutkan eksekusi
Hal yang sama juga terjadi pada proses menerima pesandengan memanggil prosedur receive. Proses dapat diblok menunggu adanya pesan yang datang atau proses melanjutkan eksekusinya sekalipun pesan belum datang.
Berdasarkan empat kondisi yang telah disebutkan dapat dibuat tiga kombinasi kondisi yang umum digunakan pada sebuah sistem yaitu:
1.    Blocking send, blocking receive
2.    Nonblocking send, blocking receive
3.    Nonblocking send, nonblocking receive
Proses dengan nonblocking send memiliki kelebihan proses dapat terus berlanjut tanpa menunggu adanya konfirmasi bahwa pesan telah diterima namun di sisi lain jika proses mengalami kesalahan dan terus menerus mengirimkan pesan maka sumber daya komputer dapat terkuras oleh proses tersebut. Selain itu pemrogram aplikasi juga harus membuat sendiri mekanisme untuk menentukan apakah pesan sudah diterima atau belum.
Pada prosedur primitive receive versi blocking proses yang meminta pesan akan menunggu hingga pesan yang dimaksud diterima. Saat pesan tidak juga diterima proses dapat menunggu terus tanpa kepastian. Non blocking receive menyelesaikan masalah ini namun sisi buruknya adalah pesan dapat hilang ketika prosedur receive dipanggil sebelum pesan sampai.
Pengalamatan (Addressing)
Pada direct addressing prosedur send memerlukan penanda/identitas dari proses yang menjadi tujuan pesan sedangkan prosedur receive akan menangani dua kemungkinan:
  1. Prosedur receive memerlukan identitas proses yang akan mengirimkan pesan. Konsekuensinya proses yang memanggil receive perlu mengetahui identitas dari proses yang akan mengirimkan pesan. Cara ini efektif untuk mengendalikan dua proses konkuren yang saling bekerja sama.
  2. Proses yang menerima pesan tidak dapat menentukan proses mana yang menjadi sumber pesan. Contohnya pada proses yang menangani printer. Proses tersebut menerima pesan dari proses-proses lain yang memerlukan layanan printer. Pada kasus seperti ini lebih tepat jika menggunakan indirect addressing.
Pada metode indirect addressing pesan tidak langsung dikirimkan kepada proses tujuan melainkan disimpan terlebih dahulu pada penyimpanan sementara (mailbox). Cara ini dipandang lebih baik karena ketergantungan antar proses menjadi lebih rendah dan komunikasi dapat menjadi lebih fleksibel.
Terdapat empat jenis komunikasi dengan metode indirect ini bergantung kepada banyaknya proses pengirim dan penerima, yaitu:
1.    Satu pengiri ke satu penerima
2.    Banyak pengirim ke satu penerima
3.    Satu pengirim ke banyak penerima
4.    Banyak pengirim ke banyak penerima
Yang menjadi persoalan adalah kepemilikan mailbox tempat menyimpan pesan. Mailbox bisa dimiliki oleh proses penerima pesan dan ketika proses mati begitu juga mailbox akan dihapus. Cara lain adlah sistem operasi menyediakan layanan mailbox dan mailbox dapat dipesan oleh proses tertentu. Pada cara ke-dua mailbox dapat dipandang dimiliki oleh proses yang memintanya dan akan dihilangkan ketika proses tersebut selesai atau tetap dimiliki oleh sistem operasi penghapusan nantinya dilakukan oleh sistem operasi.
Format Pesan
Format pesan amat bergantung pada fasilitas pertukaran pesan dan jumlah komputer yang terlibat dalam pertukaran pesan. Pesan dapat memiliki panjang tetap untuk memperkecil overhead (pemrosesan tambahan seperti: menelusuri pesan untuk mencari ujung dari sebuah pesan) atau jika berukuran besar dapat disimpan dalam sebuah file. Pendekatan yang lebih fleksibel adalah menggunakan pesan yang panjangnya tidak tetap.
Pesan dapat dibagi menjadi bagian kepala (header) yang berisi informasi tentang pesan dan badan (body) tempat menampung isi pesan sebenarnya.
Aturan Antrian
Aturan antrian yang paling sederhana adalah FIFO (first in first out) tetapi mungkin tidak cukup jika terdapat beberapa pesan yang penting dan perlu untuk segera disampaikan dibandingkan pesan-pesan lainnya. Alternatifnya ialah dengan menyediakan fasilitas prioritas pada pesan atau membolehkan penerima pesan memeriksa antrian untuk mengambil pesan.

Proses

Proses dalam ruang lingkup sistem operasi dapat dikatakan sebagai sebuah aplikasi/program yang sedang dijalankan. Manajemen proses adalah salah satu dari fungsi utama dari sistem operasi terutama pada sistem operasi yang mendukung eksekusi banyak aplikasi pada waktu yang bersamaan. Sistem operasi yang baik harus dapat mengatur sumber daya komputer (yang terbatas) sedemikian rupa sehingga aplikasi-aplikasi yang sedang berjalan bersamaan tersebut mendapatkan sumber daya komputer yang mereka butuhkan agar dapat berfungsi dengan benar.

Sebuah proses yang sedang berjalan disimpan di dalam memori utama (RAM) dan dua bagian penting dari sebuah proses adalah Kode program atau instruksi-instruksi program yang harus dieksekusi oleh prosesor (yang dapat dibagi pakai bersama dengan proses lain) dan Sekumpulan data yang berhubungan dengan kode program dari proses

Tetapi dua bagian di atas tidak memiliki cukup informasi yang dibutuhkan oleh sistem operasi untuk memanajemen banyak proses yang berjalan bersamaan. Informasi-informasi tersebut dibuat oleh sistem operasi dan disimpan dalam struktur data yang disebut PCB (Process Control Block). Isi dari PCB tersebut antara lain:
  1. Identifier: tanda identitas yang membedakan suatu proses dengan proses lainnya.
  2. State: kondisi dari proses. Jika proses sedang dieksekusi maka kondisi/statusnya adalah running.
  3. Priority: prioritas eksekusi dibandingkan proses-proses lainnya.
  4. Program counter: alamat memori dari instruksi program berikutnya yang akan dieksekusi.
  5. Memory pointer: pointer menuju kode program (instruksi program), data yang berhubungan dengan proses, dan blok memori yang dibagipakai bersama proses-proses lain.
  6. Contex data: adalah data yang ada di register prosesor ketika proses dieksekusi.
  7. I/O status information: informasi tentang permintaan I/O, peralatan I/O, file, dll.
  8. Accounting information: dapat terdiri dari waktu prosesor, waktu clock yang digunakan, batas waktu, nomor akun, dll.
Informasi-informasi di atas setidaknya cukup lengkap bagi sistem operasi untuk menginterupsi/menunda pengeksekusian sebuah proses untuk mengeksekusi proses lain kemudian kembali lagi mengeksekusi proses pertama seakan-akan interupsi tidak pernah terjadi

Kondisi / Keadaan Proses
Dari sudut pandang prosesor eksekusi sebuah proses berarti mengeksekusi instruksi-instruksi dari proses tersebut berdasarkan urutan tertentu. Urutan eksekusi ini dikendalikan lewat perubahan nilai pada register program counter yang berupa penunjuk ke suatu lokasi yang berisi instruksi dari proses.

Isi dari program counter ini pada suatu saat bisa berubah menjadi penunjuk ke instruksi yang dimiliki oleh proses lain. Hal ini terjadi ketika sebuah program kecil bernama dispatcher yang dieksekusi secara periodik oleh prosesor.

Sebuah daftar yang berisi urutan instruksi yang dieksekusi untuk suatu proses yang dibuat untuk mengetahui kelakuan dari sebuah proses individual dikenal sebagai trace. Gambar-gambar 3-1 dan 3-2 dapat menjelaskan posisi proses dan dispatcher serta trace dari beberapa proses ketika dijalankan.

Untuk mengatur eksekusi dari proses termasuk mengatur pergantian eksekusi antar proses dan mengalokasikan sumber daya komputer yang dibutuhkan proses yang akan dieksekusi sistem operasi perlu mengetahui kondisi yang sedang dialami sebuah proses dan menentukan tindakan apa yang harus diambil terhadap proses tersebut pada kondisi tertentu.

Ada beberapa model dari kondisi-kondisi yang dialami sebuah proses dimulai dari model yang sederhana yang terdiri dari hanya dua kondisi hingga berkembang menjadi model yang memiliki lebih dari lima kondisi.

Model Dua Kondisi
Model yang pertama dan paling sederhana adalah model 2 kondisi (2 state) yang terdiri dari kondisi running dan not running seperti dijelaskan oleh gambar 3-3. Pada saat pertama kali proses dibuat proses tersebut akan memasuki kondisi not running dan akan memasuki sebuah antrian untuk proses-proses yang menunggu untuk dieksekusi oleh prosesor. Proses yang sedang dieksekusi berada dalam kondisi running dan pada suatu saat akan berhenti dieksekusi apakah karena telah selesai atau gilirannya telah habis dan prosesor akan mengeksekusi dispatcher yang akan menaruh proses barusan pada belakang antrian dan merubah nilai program counter sehingga menunjuk pada urutan instruksi yang dimiliki oleh proses yang berada di depan antrian.

Model Lima Kondisi
Model yang ke-dua adalah model dengan 5 kondisi (5 state). Model ini merupakan perkembangan dari model yang pertama untuk menangani kondisi di mana sebuah proses mungkin saja tidak selalu siap untuk dieksekusi karena harus menunggu sebuah operasi I/O selesai dilaksanakan. Pada model ini kondisi not running  dipecah menjadi ready dan blocked. Berikut ini adalah daftar 5 kondisi yang ada pada model 5 kondisi:
  1. Running : proses sedang dieksekusi
  2. Ready : proses siap dieksekusi jika telah mendapat kesempatan
  3. Blocked : proses tidak dapat dieksekusi hingga suatu event terjadi atau menunggu suatu proses I/O selesai
  4. New : proses baru saja selesai dibuat. Pada kondisi ini biasanya baru process control block saja yang telah selesai dibuat dan ditaruh di memori utama sedangkan instruksi dan datanya belum
  5. Exit : proses telah dilepaskan dari kumpulan (pool) proses yang dapat dieksekusi oleh sistem operasi dikarenakan telah selesai maupun dibatalkan karena alasan tertentu
Dapat dilihat bahwa ada dua kondisi tambahan selain pemisahan not running menjadi ready dan blocked yaitu new dan exit. Kondisi new pada model ini seperti yang telah dijelaskan di atas menerangkan bahwa sistem operasi telah menyiapkan keperluan untuk menjalankan proses seperti PCB dan tabel-tabel tertentu dalam sistem operasi tetapi proses itu sendiri belum dieksekusi oleh prosesor. Kondisi exit pada model ini mewakili kondisi sedemikian sehingga proses yang telah dihentikan eksekusinya karena telah selesai maupun karena hal lainnya seperti kesalahan dan pembatalan oleh pengguna tidak langsung dihapus melainkan disimpan sementara agar informasi yang menyertai proses tersebut seperti PCB dan tabel-tabel yang menyertainya dapat digunakan oleh proses lain yang memerlukan seperti proses yang melakukan perhitungan waktu eksekusi dan penggunaan sumberdaya oleh proses lainnya.

Berikut ini adalah jenis-jenis kejadian (event) yang dapat menyebabkan proses berpindah dari suatu kondisi ke kondisi lainnya dalam model 5 kondisi:
  1. Null –> New: sebuah proses baru dibuat. Prose ini dapat benar-benar baru atau dapat berasal dari proses lain yang telah ada melalui process spawning.
  2. New –> Ready: sistem operasi memindahkan sebuah proses ke kondisi ready dari kondisi new hanya jika sistem operasi tersebut telah siap. Sistem operasi dapat menahan sebuah proses dalam kondisi new jika kondisi belum memungkinkan untuk menangani proses tambahan seperti kekurangan memori atau terdapat batasan jumlah proses yang dapat ditangani agar tidak menurunkan kinerja keseluruhan.
  3. Ready –> Running: proses dipindahkan dari kondisi ready ke kondisi running oleh rutin penjadwalan atau dispatcher dan dieksekusi oleh prosesor.
  4. Running –> Ready: alasan paling umum untuk memindahkan suatu proses dari running ke kondisi ready adalah karena waktu eksekusi untuk proses tersebut telah habis atau diinterupsi untuk digantikan oleh proses dengan prioritas yang lebih tinggi.
  5. Running –> Exit: proses dihentikan eksekusinya dan diterminasi dikarenakan telah selesai atau karena alasan lainnya seperti terjadinya kesalahan atau pembatalan eksekusi oleh pengguna.
  6. Running –> Blocked: proses diblok apabila proses tersebut telah meminta sesuatu yang tidak dapat langsung dipenuhi oleh sistem operasi, contohnya: operasi I/O
  7. Blocked –> Ready: proses dipindahkan dari blocked ke kondisi ready hanya jika kejadian (event) tertentu yang ditunggu telah terjadi seperti permintaan operasi I/O oleh proses tersebut telah selesai dilaksanakan.
  8. Ready –> Exit: transisi ini tidak digambarkan pada model 5 kondisi untuk menjaga kejelasan tetapi sebuat proses dalam kondisi ready dapat langsung diterminasi contohnya sebuah proses anak dapat diterminasai oleh proses induk kapan saja dan jika sebuah proses induk mati maka proses anak juga ikut diterminasi.
  9. Blocked –> Exit: transisi ini termasuk dalam penjelasan kondisi ready -> exit.
Model dengan Suspended State
Model 2 kondisi dan 5 kondisi sebelumnya berlaku pada sistem operasi yang tidak memerlukan swapping. Swapping  berlaku pada sistem operasi yang menerapkan konsep memori virtual (akan dibahas di bab manajemen memori) yaitu menjadikan media penyimpanan seperti harddisk sebagai bagian dari memori untuk menyimpan proses yang akan dieksekusi. Proses-proses yang ada tidak disimpan dalam memori utama tetapi disimpan dalam media harddisk. Hanya proses-proses yang siap dieksekusi saja yang disimpan dalam memori utama. Konsep memori virtual ini memungkinkan sistem operasi membuat proses dengan jumlah dan ukuran lebih besar dari kapasitas memori utama. Jika memori utama penuh dan ada proses lain yang harus masuk maka proses yang sedang tidak dieksekusi di memori dapat dipindahkan kembali ke memori virtual. Pemindahan dari memori virtual ke memori utama dan sebaliknya inilah yang disebut sebagai swapping.

Untuk mengimplementasikan konsep memori virtual tersebut perlu dibuat suatu kondisi baru yaitu kondisi ketika proses berada pada dalam memori virtual yaitu kondisi suspended. Proses yang berada dalam kondisi blocked dapat dipindahkan dari memori utama ke sebuah antrian proses di memori virtual untuk menyediakan ruang kosong bagi proses lain di memori utama. Gambar 3-4 memperlihatkan dua model yang mengakomodir kondisi suspended.

Pada model pertama diperlihatkan hanya ada satu kondisi suspend seperti yang telah dijelaskan di atas. Mengingat bahwa kecepatan eksekusi prosesor jauh melebihi waktu yang dibutuhkan untuk menyelesaikan operasi I/O maka akan ada kemungkinan di mana prosesor akan banyak menganggur dikarenakan kebanyakan proses berada dalam keadaan suspended menunggu operasi I/O yang belum selesai. Mengembalikan proses-proses ini ke dalam memori utama hanya akan memboroskan waktu dan sumber daya dikarenakan proses-proses ini belum tentu siap dijalankan ketika telah berada di memori utama. Untuk menghemat sumber daya hanya proses-proses yang telah siap dijalankan, yang telah mendapatkan event yang dibutuhkan, yang dipindahkan dari antrian di memori virtual ke memori utama. Proses-proses tersebut sebelum dipindahkan ke memori utama dapat diletakkan dalam antrian proses yang siap untuk dieksekusi kembali oleh prosesor. Oleh karena itu kondisi suspended dibagi lagi menjadi dua kondisi, yaitu:
  1. Blocked/Suspend: kondisi di mana proses berada dalam kondisi blocked di dalam memori virtual dan menunggu suatu event.
  2. Ready/Suspend: kondisi di mana proses berada dalam memori virtual tetapi dapat langsung dijalankan ketika telah berada dalam memori utama.
Selain itu kondisi ready berlaku untuk proses yang tidak menunggu event tertentu dan telah berada di memori utama dan kondisi blocked berlaku bagi proses yang sedang menunggu event tertentu dan sedang berada dalam memori utama.

Transisi-transisi antar kondisi yang terjadi, antara lain:
  1. Blocked ==> Blocked/Suspend: transisi ini terjadi ketika sistem operasi membutuhkan tambahan ruang kosong di dalam memori utama untuk proses lain dan tidak tersedia ruang kosong dalam memori utama. Untuk menyediakan ruang tersebut sistem operasi akan memindahakan proses-proses yang berada dalam kondisi blocked ke dalam memori virtual sehingga kondisi proses tersebut dikatakan sebagai blocked/suspend.
  2. Blocked/Suspend ==> Ready/Suspend: transisi ini terjadi ketika event yang ditunggu proses dalam kondisi blocked/suspend telah terjadi sehingga status proses tersebut berubah menjadi ready/suspend.
  3. Ready/Suspend ==> Ready: transisi ini terjadi ketika tidak ada lagi proses yang berada dalam kondisi ready di dalam memori utama sehingga sistem operasi akan memindahkan proses yang berada dalam kondisi ready/suspend dari memori virtual ke memori utama. Transisi ini juga dapat terjadi apabila proses dalam kondisi ready/suspend memiliki prioritas lebih tinggi dari proses yang berada dalam kondisi ready.
  4. New ==> Ready/Suspend dan New � Ready: transisi ini terjadi ketika suatu proses baru saja dibuat. Proses tersebut dapat disimpan di dalam antrian memori di memori utama atau diantrikan dalam kondisi ready/suspend di memori virtual.
  5. Blocked/Suspend ==> Blocked: transisi ini meskipun tampak tidak terlalu baik dari segi disain namun masih mungkin terjadi. Jika memori utama memiliki tempat kosong dan proses dalam kondisi blocked/suspend tersebut memiliki prioritas lebih tinggi dari yang berada dalam kondisi ready/suspend serta sistem operasi percaya bahwa event yang ditunggu proses tersebut akan terjadi segera maka transisi ini boleh saja terjadi.
  6. Running ==> Ready/Suspend: proses yang telah habis masa eksekusinya biasanya akan dipindahkan ke dalam kondisi ready namun apabila ada proses dengan prioritas lebih tinggi telah berubah dari kondisi blocked/suspend menjadi ready/suspend maka sistem operasi dapat membebaskan memori utama untuk proses tersebut dengan memindahkan proses dengan prioritas lebih rendah tersebut ke dalam kondisi ready/suspend.
  7. Kondisi Apapun ==> Exit: biasanya proses diterminasi dalam kondisi berjalan karena telah selesai atau ada kesalahan tertentu namun pada beberapa sistem operasi proses dapat diterminasi oleh proses yang menjadi induknya atau ketika proses induknya diterminasi. Jika hal tersebut diperbolehkan maka semua kondisi dapat segera berubah menjadi kondis exit.
Deskripsi Proses
Seperti yang telah disebutkan sebelumnya sistem operasi bertugas untuk mengelola proses-proses dan sumber daya komputer yang digunakan proses-proses tersebut. Untuk melaksanakan tugas tersebut sistem operasi memerlukan beberapa informasi mengenai proses-proses yang ada dan sumber daya komputer yang ada

Struktur Kendali Sistem Operasi
Sistem operasi membuat dan memelihara beberapa tabel berisi informasi mengenai sumber daya komputer dan proses yang ada. Tabel-tabel tersebut antara lain:
  1. Tabel memori
Tabel ini digunakan untuk mengelola memori utama dan memori virtual. Tabel ini berisi, antara lain:
  • Alokasi memori utama untuk proses
  • Alokasi memori virtual untuk proses
  • Atribut-atribut yang digunakan untuk keperluan proteksi blok-blok memori yang digunakan pada memori utama
  • Informasi apa saja yang digunakan untuk mengelola memori virtual.
     2.  Tabel I/O
Tabel ini digunakan untuk mengelola peralatan-peralatan dan saluran-saluran I/O. Ketika terjadi suatu operasi yang berhubungan dengan I/O sistem operasi harus mengetahui lokasi memori yang digunakan dalam proses perpindahan data.
     3. Tabel file
Tabel ini digunakan untuk menyimpan informasi mengenai file-file yang sedang digunakan, seperti: lokasi mereka dalam memori, status, dan atribut mereka.
     4.  Tabel proses
Tabel ini digunakan untuk memanajemen proses-proses. Mulai dari bagian ini selebihnya dari bab ini akan membahas mengenai tabel proses yang perlu dibuat untuk memanajemen proses.
Setidaknya ada dua hal penting yang harus diingat sebelum membahas masalah tabel proses, yaitu bahwa I/O, memori, dan file dimanajamen untuk memenuhi kebutuhan proses sehingga perlu ada penunjuk bagi proses untuk mengakses mereka dan informasi mengenai kondisi lingkungan seperti konfigurasi perangkat keras, jumlah memori tersedia, dan sebagainya harus disediakan oleh sesuatu di luar sistem operasi apakah oleh perangkat lunak atau dengan bantuan manusia

Recovery

Informasi di direktori di memori utama biasanya lebih baru daripada informasi yang ada di disk, karena penulisan dari informasi direktori yang disimpan ke disk tidak terlalu dibutuhkan secepat terjadinya pembaharuan. Mempertimbangkan efek yang memungkinkan terjadinya crash pada komputer. Secara berkala, program khusus akan dijalankan pada saat waktu reboot untuk mengecek dan mengoreksi disk yang tidak konsisten. Pemerikasaan rutin membandingkan data yang ada di struktur direktori dengan blok data pada disk, dan mencoba untuk memperbaiki ketidakkonsistenan yang ditemukan.

Backup dan Restore
Dikarenakan disk magnetik kadang-kadang gagal, perawatan harus dijalankan untuk memastikan data tidak hilang selamanya. Oleh karena itu, program sistem dapat digunakan untuk back up data dari disk menuju ke media penyimpanan yang lainnya, seperti sebuah floppy disk, tape magnetik, atau disk optikal. Recovery dari kehilangan sebuah berkas individu, atau seluruh disk, mungkin menjadi masalah dari restoring data dari backup.
Untuk meminimalis kebutuhan untuk menduplikat, kita dapat menggunakan inforamsi dari, masing-masing masukan direktori. Sebagai contoh, jika program backup mengetahui kapan backup terakhir dari berkas telah selesai, dan tanggal terakhir berkas di direktori menunjukkan bahwa berkas tersebut tidak dirubah sejak tanggal tersebut, lalu berkas tersebut tidak perlu diduplikat lagi.
Sebuah tipe jadwal backup yaitu sebagai berikut:
Day 1:
Menduplikat ke sebuah medium back up semua berkas ke disk. Ini disebut sebuah full backup.
Day 2:
Menduplikat ke medium lainnya semua berkas yang dirubah sejak hari pertama. Ini adalah incremental backup.
Day 3:
Menduplikat ke medium lainnya semua berkas yang dirubah sejak hari ke-2.
Day N:
Menduplikat ke medium lainnya semua berkas yang dirubah sejak hari ke N-1.
Perputaran baru dapat mempunyai backupnya ditulis ke semua set sebelumnya, atau ke set yang baru dari media backup. N yang terbesar, tentu saja memerlukan tape atau disk yang lebih untuk dibaca untuk penyimpanan yang lengkap. Keuntungan tambahan dari perputaran backup ini adalah kita dapat menyimpan berkas apa saja yang tidak sengaja terhapus selama perputaran dengan mengakses berkas yang terhapus dari backup hari sebelumnya.

Log-structured File System
Algoritma logging sudah dilakukan dengan sukses untuk manangani masalah dari pemeriksaan rutin. Hasil dari implementasinya dikenal dengan log-based transaction-oriented (atau journaling sistem berkas).
Pemanggilan kembali yang mengenai struktur data sistem berkas pada disk--seperti struktur-struktur direktori, penunjuk-penunjuk blok-kosong, penunjuk-penunjuk FCB kosong--dapat menjadi tidak konsisten dikarenakan adanya system crash. Sebelum penggunaan dari teknik log-based di sisitem operasi, perubahan biasanya dipakaikan pada struktur ini. Perubahan-perubahan tersebut dapat diinterupsi oleh crash, dengan hasil strukturnya tidak konsisten.
Ada beberapa masalah dengan adanya pendekatan dari menunjuk struktur untuk memechkan dan memperbaikinya pada recovery. Salah satunya adalah ketidakkonsistenan tidak dapat diperbaiki. Pemeriksaan rutin mungkin tidak dapat untuk recover struktur tersebut, yang hasilnya kehilangan berkas dan mungkin seluruh direktori.
Solusinya adalah memakai teknik log-based-recovery pada sistem berkas metadata yang terbaru. Pada dasarnya, semua perubahan metadata ditulis secara berurutan di sebuah log. Masing-masing set dari operasi-operasi yang manampilakan tugas yang spesifik adalah sebuah transaction. Jika sistemnya crashes, tidak akan ada atau ada kelebihan transactions di berkas log. Transactions tersebut tidak akan pernah lengkap ke sistem berkas walaupun dimasukkan oleh sistem operasi, jadi harus dilengkapi. Keuntungan yang lain adalah proses-proses pembaharuan akan lebih cepat daripada saat dipakai langsung ke struktur data pada disk.

Sistem Berkas Linux Virtual
Obyek dasar dalam layer-layer virtual file system 
  • File 
File adalah sesuatu yang dapat dibaca dan ditulis. File ditempatkan pada memori. Penempatan pada memori tersebut sesuai dengan konsep file deskriptor yang dimiliki unix.
  • Inode
Inode merepresentasikan obyek dasar dalam file sistem. Inode bisa saja file biasa, direktori, simbolik link dan lain sebagainya. Virtual file sistem tidak memiliki perbedaan yang jelas di antara obyek, tetapi mengacu kepada implementasi file sistem yang menyediakan perilaku yang sesuai. Kernel tingkat tinggi menangani obyek yang berbeda secara tidak sama. File dan inode hampir mirip diantara keduanya. Tetapi terdapat perbedaan yang penting diantara keduanya. Ada sesuatu yang memiliki inode tetapi tidak memiliki file, contohnya adalah simbolik link. Ada juga file yang tidak memiliki inode seperti pipes dan socket.
  • File sistem
File system adalah kumpulan dari inode-inode dengan satu inode pembeda yaitu root. Inode lainnya diakses mulai dari root inode dan pencarian nama file untuk menuju ke inode lainnya. File sistem mempunyai beberapa karakteristik yang mencakup seluruh inode dalam file sistem. Salah satu yang terpenting adalah blocksize.
  • Nama inode
Semua inode dalam file sistem diakses melalui namanya. Walaupun pencarian nama inode bisa menjadi terlalu berat untuk beberapa sistem, virtual file sistem pada linux tetap memantau cache dan nama inode yang baru saja terpakai agar kinerja meningkat. Cache terdapat di memori sebagai tree, ini berarti jika sembarang inode dari file terdapat di dalam cache, maka parent dari inode tersebut juga terdapat di dalam cache. Virtual file system layer menangani semua pengaturan nama path dari file dan mengubahnya menjadi masukan di dalam cache sebelum mengizinkan file sistem untuk mengaksesnya. Ada pengecualian pada target dari simbolik link, akan diakses file sistem secara langsung. File sistem diharapkan untuk menginterpretasikannya.

Virus dan Anti Virus

Siklus Hidup Virus
Virus adalah sama dengan program komputer lain.  Perbedaan dengan program lain adalah virus dapat menempelkan dirinya ke program lain dan mengeksekusi kodenya secara rahasia setiap kali program inang berjalan.  Masalah yang ditimbulkan virus adalah virus sering merusak sistem komputer seperti menghapus file, partisi disk, atau mengacaukan program. Virus mengalami siklus hidup empat fase (tahap), yaitu :
1.   Fase Tidur (dormant phase)
Virus dalam keadaan menganggur.  Virus akan tiba-tiba aktif oleh suatu kejadian seperti tibanya tanggal tertentu, kehadiran program atau file tertentu, atau kapasitas disk yang melewati batas.  Tidak semua virus mempunyai tahapan ini.
2.   Fase propagasi (propagation phase)
Virus menempatkan salinan dirinya ke program lain atau daerah sistem tertentu di disk.  Program yang terinfeksi virus akan mempunyai cloning virus.  Kloning virus itu dapat kembali memasuki fase propagasi.
3.   Fase pemicu (triggering phase)
Virus diaktifkan untuk melakukan fungsi tertentu.  Seperti pada fase tidur, fase pemicuan dapat disebabkan beragam kejadian sistem termasuk penghitungan jumlah salinan dirinya.
4.   Fase Eksekusi (execution phase)
Virus menjalankan fungsinya.  Fungsinya mungkin sepele seperti sekedar menampilkan pesan dilayar atau merusak program dan file-file data, dan sebagainya.

Kebanyakan virus melakukan kerjanya untuk suatu sistem operasi tertentu, lebih spesifik lagi pada platform perangkat keras tertentu.  Virus-virus dirancang memanfaatkan rincian-rincian dan kelemahan-kelamahan sistem tertentu.

Infeksi Virus
Sekali virus telah memasuki sistem dengan menginfeksi satu program, virus berada dalam posisi menginfeksi beberapa atau semua file berekstensi exe lain di sistem itu saat program yang terinfeksi dieksekusi. Infeksi virus dapat sepenuhnya dihindari dengan mencegah virus masuk sistem. Pencegahan ini sangat luar biasa sulit karena virus dapat menjadi bagian program di luar sistem.
Kebanyakan virus mengawali infeksinya pengsalinan disk yang telah terinfeksi virus. Banyak disk berisi game atau utilitas di rumah dikopikan ke mesin kantor.  Disk berisi virus pun dapat terdapat di disk yang dikirim produsen aplikasi.  Hanya sejumlah kecil infeksi virus yang dimulai dari hubungan jaringan.

Tipe-tipe virus
Saat ini perkembangan virus masih berlanjut, terjadi perlombaan antara penulis virus dan pembuat virus. Begitu satu tipe dikembangkan antivirus-nya, tipe virus yang lain muncul.  Klasifikasi virus adalah sebagai berikut :
1.       Parasitic virus
2.       Memory-resident virus
3.       Boot Sector Virus
4.       Stealth virus
5.       Polymorphic virus

Parasitic Virus
Merupakan virus tradisional dan bentuk virus yang paling sering.  Tipe ini menempelkan dirinya ke file exe.  Virus mereplikasi dirinya ketika program yang terinfeksi dieksekusi dengan mencari file-file exe lain untuk diinfeksi.

Memory-resident virus 
Virus memuatkan diri ke memori utama sebagai bagian program yang menetap.  Virus menginfekasi setiap program yang dieksekusi.

Boot Sector Virus 
Virus menginfeksi master boot record atau boot record dan menyebar saat sistem di boot dari disk yang berisi virus. 

Stealth Virus 
Virus yang bentuknya telah dirancang agar dapat menyembunyikan diri dari deteksi perangkat lunak antivirus.

Polymorphic Virus
Virus bermutasi setiap kali melakukan inveksi.  Deteksi dengan “penandaan” virus tersebut tidak dimungkinkan.
Penulis virus dapat melengkapi dengan alat-alat bantu penciptaan virus baru (virus-creation toolkit yaitu rutin-rutin untuk menciptakan virus-virus baru).  Dengan alat bantu ini penciptaan virus baru dapat dilakukan dengan sangat cepat.  Virus-virus yang diciptakan dengan alat bantu biasanya kurang canggih disbanding virus-virus yang dirancang dari awal. 

Anti Virus
Solusi ideal terhadap ancaman virus adalah pencegahan.  Jangan ijinkan virus masuk ke sistem.  Sasaran ini, tak mungkin dilaksanakan sepenuhnya.  Pencegahan dapat mereduksi sejumlah serangan virus.  Setelah pencegahan terhadap masuknya virus, maka pendekatan berikutnya adalah : 

Deteksi
Begitu infeksi telah terjadi, tentukan apakah infeksi memang telah terjadi dan cari lokasi virus.

Identifikasi
Begitu virus terdeteksi maka identifikasi virus yang menginfeksi program.

Penghilangan
Begitu virus dapat diidentifikasi maka hilangkan semua jejak virus dari program yang terinfeksi dan program dikembalikan ke semula (sebelum terinfeksi).
Jika edentifikasi sukses dilakukan, tapi identifikasi atau penghilangan tidak dapat dilakukan, maka alternative yang dilakukan adalah hapus program yang terinfeksi dan kopi kembali backup program yang masih bersih. 

Generasi Anti virus
Sebagaimana virus berkembang dari yang sederhana menjadi semakin canggih, begitu juga paket perangkat lunak antivirus.  Saat ini program antivirus semakin kompleks dan canggih.  Perkembangan program antivirus dapat diperiode menjadi empat generasi, yaitu: 

Generasi Pertama: sekedar scanner sederhana 
Antivirus men-scan program untuk menentukan penanda (signature) virus.  Walaupun virus mungkin berisi “karakter-karakter varian” tapi secara esensi mempunyai struktur dan pola bit yang sama dengan salinannya.  Teknik ini terbatas untuk diteksi virus-virus yang telah dikenal.  Tipe lain antivirus generasi pertama adalah mengelola rekaman panjang (ukuran) program dan memeriksa perubahan panjang program. 

Generasi Ke-dua : scanner yang pintar (heuristic scanner) 
Antivirus men-scan tidak bergantung pada penanda spesifik.  Antivirus menggunakan aturan-aturan pintar (heuristic scanner) untuk mencari kemungkinan terinvekasi virus.  Teknik yang dipakai misalnya mencari fragmen-fragmen kode yang sering merupakan bagian virus.  Contohnya, antivirus mencari awal loop enkripsi yang digunakan polymorphic virus dan menemukan kunci enkripsi.  Bagitu kunci ditemukan, antivirus dapat men-deskripsi virus untuk identifikasi dan kemudian menghilangkan infeksi virus.
Teknik lain adalah pemeriksa integritas.  Checksum dapat ditambahkan di tiap program.  Jika virus menginfeksi program tanpa mengubah checksum, maka pemerikasaan integritas akan menemukan perubahan itu.  Untuk menanggulangi virus canggih yang mampu mengubah checksum saat menginfeksi program, fungsi hash ter-enkripsi digunakan.  Kunci enkripsi disimpan secara terpisah dari program sehingga program tidak dapat menghasilkan kode hash dan meng-enkripsinya.  Dengan menggunakan fungsi hash bukan checksum sederhana maka mencegah virus menyesuaikan program yang menghasilkan kode hash yang sama seperti sebelumnya. 

Generasi Ke-tiga: jebakan-jebakan aktivasi (activity trap) 
Program antivirus merupakan program yang menetap di memori (memory resident program).  Program ini mengidentifikasi virus melalui aksi-aksinya bukan dari struktur program yang diinfeksi.  Dengan anticirus semacam ini tak perlu mengembangkan penanda-penanda dan aturan-aturan pintar untuk beragam virus yang sangat banyak.  Dengan cara ini yang diperlukan adalah mengidentifikasi kumpulan instruksi yang berjumlah sedikit yang mengidentifikasi adanya usaha infeksi.  Kalau muncul kejadian ini, program antivirus segera mengintervensi. 

Generasi Ke-empat: proteksi penuh (full-featured protection) 
Antivirus generasi ini menggunakan beragam teknik antivirus secara bersamaan.  Teknik-teknik ini meliputi scanning dan jebakan-jebakan aktivitas.  Antivirus juga mempunyai senarai kapabilitas pengaksesan yang membatasi kemampuan virus memasuki sistem dan membatasi kemampuan virus memodifikasi file untuk menginfeksi file.
Pertempuran antara penulis virus dan pembuat antivirus masih berlanjut.  Walau beragam strategi lebih lengkap telah dibuat untuk menghalangi virus, penulis virus-pun masih berlanjut menulis virus yang dapat melewati barikade-barikade yang dibuat penulis antivirus.  Untuk pengaman sistem komputer, sebaiknya pengaksesan dan pemakaian komputer diawasi dengan seksama sehingga tidak menjalankan program atau memakai disk yang belum terjamin kebersihannya dari infeksi virus.
    Pencegahan terbaik terhadap ancaman virus adalah mencegah virus memasuki sistem saat yang pertama.