fungsi protokol jaringan

Fungsi Protokol Jaringan

Secara umum fungsi protokol adalah menghubungkan pengirim dan penerima dalam berkomunikasi serta dalam bertukar informasi agar dapat berjalan dengan baik dan akurat. Tidak semua protokol memiliki fungsi atau fitur yang sama, tetapi ada juga beberapa protokol yang memiliki fungsi sama meski berada pada tingkat berbeda. Beberapa protokol bergabung dengan protokol lainnya untuk membangun sistem komunikasi yang utuh.
Fungsi protokol secara garis besar adalah sebagai berikut :
• Encapsulation
• Pemisahan dan perakitan kembali
• Connection control (Kontrol koneksi)
• Pengiriman tersusun
• Pengiriman perintah
• Flow Control (alur kontrol)
• Error correction (Kontrol Kesalahan)
• Addressing (Pengalamatan)
• Multiplexing
• Layanan transmisi
Kesemua fungsi diatas dapat digabung dan dikelompokkan menjadi fungsi yang lebih besar. Ini karena beberapa protokol jaman sekarang telah mampu berkembang dan memiliki fungsi lebih kompleks dibanding versi sebelumnya. Fungsi protokol tersebut antara lain:
1. Fragmentasi dan Reassembly
Fragmentasi adalah membagi informasi yang dikirim menjadi beberapa paket data. Proses ini terjadi di sisi pengirim informasi. Reassembly adalah proses menggabungkan lagi paket-paket tersebut menjadi satu paket lengkap. Proses ini terjadi di sisi penerima informasi.
Terjadinya fragmentasi ditanandai dengan urutan beberapa PDU dari beberapa batasan ukuran. Protokol dengan tingkat yang lebih rendah mungkin harus memisahkan data ke dalam blok yang lebih kecil supaya dapat berkomunikasi. Jaringan komunikasi suara misalnya, mungkin hanya menerima blok sampai suatu ukuran tertentu. Misalnya ATM 53 atau Ethernet 1526 dengan komposisi music 8 channel.
Penggunaan fragmentasi dan reassemblymenyebabkan jalannya kontrol kesalahan yang lebih efisien karena apabila ada kesalahan pengiriman ulang akan lebih kecil. Selain itu pembagian jaringan lebih adil karena mencegah adanya channel yang memonopoli media transmisi.
Fragmentasi juga memiliki kekurangan, protokol harus membuat PDU-PDU sebesar mungkin sebab PDU berisi beberapa kontrol informasi yang tak mungkin dipisahkan, pembuatan blok yang lebih kecil juga menyebabkan ongkos pengiriman yang lebih besar. Blok juga memerlukan waktu untuk memprosesnya, makin banyak blok yang dikirim, waktu yang terbuang juga makin banyak. Berikut skema pembagian data dan PDU:
2. Encapsulation
 
Fungsi dari encapsulation adalah melengkapi informasi yang akan dikirimkan dengan address, kode-kode koreksi, dan lain-lain. Selanjutnya paket data ini dinamakan Frame.
Data pada umumnya ditransfer dalam blok-blok dan dikendalikan oleh Protocol Data Unit( PDU). Masing-Masing PDU berisi data dan kontrol informasi, sedangkan beberapa PDU lainnya hanya mengendalikan.
Ada tiga kategori kontrol dalam enkapsulasi data:
• Alamat, berisi pengirim dan/atau penerima
• Kode pendekteksian Kesalahan, misalnya memeriksa urutan frame
• Kontrol protokol, Informasi tambahan untuk menerapkan fungsi-fungsi protokol
Protokol dengan fungsi ini antara lain TFTP, HDLC, frame relay, ATM, AAL5, LLC, IEEE 802.3, dan IEEE 802.11.
3. Connection Control
 
Fungsi dari Connection Control adalah membangun hubungan komunikasi dari transmitter ke receiver termasuk dalam pengiriman data dan mengakhiri hubungan. Pada pemindahan data tanpa sambungan (saat pertama kali sinyal koneksi baru akan dibangun), masing-masing PDU diperlakukan sendiri-sendiri, misalnya datagram.
Terjadi tiga phase saat koneksi terjadi:
• Penetapan koneksi
• Perpindahan data
• Penghentian koneksi
Selama koneksi terjadi, connection control dapat menyela dan membetulkan koneksi pertahap untuk menangani kesalahan yang mungkin terjadi.
4. Flow Control
 
Flow Control berfungsi mengatur perjalanan data dari transmitter ke receiver. Dilakukan dengan menerima kesatuan untuk membatasi jumlah atau tingkat data yang dikirim. Flow control harus memiliki fitur Stop-And-Wait, artinya masing-masing PDU harus diakui sebelum yang dikirim berikutnya. Misalnya saat hardware menunggu akses disk, maka pengiriman data harus dihentikan sementara hingga data yang sudah sampai ditulis di dalam disk.
Flow control harus diterapkan di dalam beberapa protokol:
• kontrol lalu lintas jaringan
• penyedia gap atau spasi atau spacer.
• Flood network detection atau pendeteksian banjir data di jaringan
5. Error Control
Pengiriman data tidak terlepas dari kesalahan, baik dalam proses pengiriman maupun penerimaan. Fungsi error control adalah mengontrol terjadinya kesalahan yang terjadi pada waktu data dikirimkan.
Alur pendeteksian kesalahan dan retransmission adalah sebagai berikut:
• Pengirim memasukkan/menyisipkan error-detecting kode di dalam PDU
• Penerima memeriksa kode pada PDU yang datang/yang berikutnya
• Jika diketahui ada kesalahan, paket langsung dibuang
• Jika pemancar tidak mendapatkan pengakuan dalam waktu yang layak, maka protokol penerima mengirimkan sinyal retransmit.
Error control dapat dilakukan di berbagai lapisan protokol di dalam jaringan.
6. Transmission Service
 
Fungsi transmission service adalah memberi pelayanan komunikasi data yang berkaitan dengan prioritas dan keamanan serta perlindungan data. Misalnya pengaturan batas koneksi, prioritas paket, mutu jaringan (dengan mengeset minimum-maksimum gateway timeout), membatasi akses paket, dan sebagainya. Fitur-fitur ini tergantung pada sistem dasar transmisi dan kesatuan tingkat yang lebih rendah
https://andregatemedia.blogspot.co.id/2013/03/fungsi-protokol-jaringan.html
sumber:

Share Koneksi Internet Host-Guest di VirtualBox

Share Koneksi Internet Host-Guest di VirtualBox

 Pada posting sebelumnya, sudah dijelaskan langkah dasar menyambungkan OS Guest ke Jaringan meskipun sebatas peer-to-peer dengan OS Host saja. Tapi kali ini kita akan membuat OS Guest bisa terhubung ke jaringan yang lebih luas. Dalam hal ini jaringan yang saya maksud adalah koneksi internet menggunakan modem GSM biasa. Dikarenakan konfigurasinya tidak terlalu rumit dibandingkan LAN yang kemungkinan memiliki struktur rumit seperti Proxy atau routing. Jadi, komputer Host yang terhubung langsung ke internet membagi koneksinya dengan komputer virtual yang ada di dalam VirtualBox.


Untuk menghubungkan OS Guest ke Internet, cara paling mudah adalah ‘menancapkan’ Modem GSM tersebut pada OSGuest. Adapun cara-caranya sama persis seperti memasukkan USB flashdisk ke dalam Guest (sudah dibahas sebelumnya). Selanjutnya tinggal install modem dan sedikit konfigurasi jaringan sesuai operator, niscaya OS Guest akan terhubung ke duina maya.

Kelemahannya, Tentu OS Host akan kehilangan koneksi Internet karena modem tersebut telah di ‘eject’ oleh Virtualbox. Tentu butuh sedikit trik apabila anda ingin menghubungkan keduanya sekaligus.

Seperti biasa, media kali ini adalah Windows 7 sebagai Host, Windows XP sebagai guest, dan VirtualBox sebagai Virtual Machine. Sebelum dimulai, ada baiknya bagi anda yang belum membaca posting saya sebelumnya mengklik link ini (menuju posting sebelumnya), karena disini saya akan menjelaskannya dengan agak ‘lompat-lompat’.

Pertama, saya mengkoneksikan modem GSM saya (akses 3data) melalui OS Host.


Klik kanan 3data (akses modem) dan pilih properties > Sharing. Centang “allow other network user use this internet connection” dan arahkan ke VirtualBox host-only Network. Pastikan jaringan host-only aktif (tidak di-disable).


Akan muncul peringatan, bahwa username dan password (dalam hal ini username dan password koneksi 3data) tidak akan dibagikan ke user di jaringan, yang dibagi hanya koneksinya saja. Klik OK.


Muncul lagi peringatan, karena ada jaringan yang di-share, alamat IP LAN (maksudnya virtualbox host-only) akan diubah menjadi 192.168.137.1 dan koneksinya akan terputus. Perhatikan peringatan yang satu ini, kalau perlu catat alamat IP-nya.


Peringatan lagi, karena 3data sedang aktif, perubahan akan diterapkan setelah modem di restart. Karenanya sekarang disconnect-kan dan connect-kan kembali modem GSM kita.


Berikut hanya memastikan, apakah alamat IP Virtualbox Host-only telah berubah. Ternyata sudah berubah menjadi 192.168.137.1.


Berhubung alamat IP Host telah berubah, ganti juga alamat IP Guest dengan network yang sama. Kali ini saya ubah ke 192.168.137.2. Tambahkan juga gateway ke arah host (192.168.137.1)


Untuk memastikan sudah terhubung apa belum, coba ping antar keduanya. Host menuju guest dan sebaliknya.

 


Nah, sudah reply semua tapi belum ada perubahan. Entah kenapa di komputer saya, saya perlu me-restart OS Guest (Windows XP) untuk membuat perubahan. Bagaimana dengan komputer anda? Yang jelas, setelah di restart jaringan di Windows XP akan sedikit berubah dari sebelumnya.ya, jaringan share dari SASA-X1 (nama komputer Host) telah muncul dengan status ‘connected’.

sumber:https://andregatemedia.blogspot.co.id/2012/09/pada-posting-sebelumnya-sudah.html

 

jaringan ad hoc

Jaringan Wireless Ad Hoc

 Ad Hoc merupakan salah satu mode jaringan dalam WLAN (Wireless Local Area Network). Mode ini memungkinkan dua atau lebih device (komputer atau router) untuk saling berkomunikasi satu sama lain secara langsung (dikenal dengan istilah peer to peer) tanpa melalui Central Wireless Router atau Acces Point (AP).
Ad Hoc didasari pada spesifikasi IEEE 802.11. Saat ini ada empat variasi dari 802.11, yaitu: 802.11a, 802.11b, 802.11g dan 802.11n yang mempunyai data rate up to 300Mbps (downlink) and 150Mbps (uplink).
Untuk membuat jaringan Ad hoc, ada satu hal yang perlu diperhatikan yaitu IP address. Pembuat jaringan Ad Hoc harus menentukan apakah perangkat lain yang terhubung perlu menset IP Statis, atau IP didapatkan otomatis melalui protokol DHCP. Apabila saat membuat jaringan Ad Hoc komputer telah memiliki IP statis, maka komputer yang akan terhubung perlu mengetahui Network Idnya dan menset IP yang belum digunakan. Apabila IP tidak berada dalam satu jaringan, tentunya kedua perangkat tidak dapat berkomunikasi.
Namun apabila saat membuat jaringan Ad Hoc komputer tidak meiliki IP statis (obtain IP automatically), maka komputer selanjutnya yang ingin dihubungkan hanya perlu menset IP komputernya dengan DHCP. Otomatis saat terhubung dengan jaringam Ad Hoc tersebut, komputer akan mendapatkan IP secara otomatis (biasanya network 169.254.0.0/16).
Hal penting lainnya adalah keamanan, Ad Hoc dapat diberi perlindungan berupa password untuk mencegah user yang tidak diinginkan masuk ke dalam jaringan. Protokol keamanan yang didukung adalah WEP, WPA, atau WPA2.
Berikut adalah langkah-langkah membuat jaringan AdHoc:
Pada Komputer Pertama (PC1, pembuat jaringan)
1. Pastikan bahwa wireless adapter sudah terpasang pada PC/laptop dan dapat bekerja dengan baik.
Buka Start > Control Panel > Network and Internet > Network Connections
2. Ubah IP pada Wireless Adapter. Klik kanan pada Wireless Network Connection > Properties > Properties > pilih IPv4 > Properties.
Isikan no. IP yang dinginkan beserta Subnet masknya
3. Buatlah jaringan Ad-Hoc baru dengan membuka Control Panel > Network and Internet > Network and Sharing Center.
Pilih set up new connection or network
4. Pilih Ad Hoc network
5. Ikuti panduan setup dengan mengklik next
6. Isikan SSID (nama jaringan), tipe keamanan, dan password yang diinginkan (tidak tersedia apabila memilih no authentification).
SSID (Service set identifier) berfungsi sebagai ‘nama’ access point.
Kegunaan utamanya adalah untuk mempermudah client menemukan jaringan yang akan dipilihnya apabila dalam satu area memiliki babarapa akses wireless. Jadi, saat ada komputer ingin mengakses Jaringan Wireless, komputer tersebut harus memilih Wireless LAN mana yang ingin dikoneksikan.
SSID dibutuhkan karena sering terjadi di suatu lokasi terdapat beberapa HotSpot Wireless yang tumpang tindih.
7. Klik next, maka proses pembuatan jaringan akan berlangsung.
8. Tekan close untuk mengakhiri panduan pembuatan jaringan ad hoc
9. Jaringan-jaringan yang tersedia akan muncul di network status (sudut kanan bawah jendela). Network yang dibuat sudah terlihat dengan status connected (terhubung).
10. Klik kanan network tersebut dan pilih status, maka status jaringan, beserta no. IP akan terlihat
Menghubungkan Komputer Lain Ke Jaringan Ad Hoc
1. Nyalakan wireless adapter pada laptop kedua.
2. Set IP pada network yang sama dengan laptop pertama (tapi host ID nya beda ya).

3. Lakukan koneksi adhoc dengan laptop pertama dengan memilih SSID jaringan milik laptop pertama.

4. Setelah terhubung, cek status network.

5. Lakukan tes ping terhadap laptop pertama.
6. Pada laptop pertama, lakukan tes ping terhadap IP milik laptop kedua.
Kedua perangkat kini telah terhubung dengan baik. Keduanya dapat berkomunikasi.
Nah, tadi telah dibahas tentang pembuatan jaringan AdHoc menggunakan IP statis. Bagaimana dengan IP Dinamis (Automatically obtain IP with DHCP). Caranya sama, hanya saja jangan lupa untuk menset IP Wireless Adapter ke “obtain Automatically”
Ad Hoc Dengan DHCP
1. Putuskan koneksi ad-hoc yang sedang terhubung
2. Ubah konfigurasi IP PC pertama menjadi DHCP.
3. Buat jaringan ad hoc baru dengan cara yang sama seperti sebelumnya.
4. Buka status jaringan, lihat IP yang diperoleh komputer 1 secara DHCP.
5. Pada PC kedua, ubah konfigurasi IP menjadi DHCP seperti pada komputer pertama.
6. Hubungkan dengan jaringan ad hoc komputer pertama.
7. Buka status jaringan, lihat IP yang diperoleh.
8. Lakukan tes ping antar PC. PC 2 mem-ping IP komputer 1, dan sebaliknya. Apabila kedua komputer mengirimkan pesan Reply, maka kedua komputer telah terhubung dengan baik.
Bagaimana? Mudah bukan?
Apabila telah terhubung, maka AdHoc mode dapat digunakan selayaknya LAN biasa. Dapat digunakan untuk berbagi file melalui ‘sharing folder and files’, atau dapat saling berbagi koneksi internet.
Ad Hoc dapat digunakan bersama-sama untuk banyak user. Karena di AdHOc tidak ada pensentralan jaringan (seperti access point). Maka kinerja jaringan dirasa lebih cepat untuk banyak user dibandingkan dengan beban data yang terpusat.
Secara umum, AD hoc memiliki beberapa keuntungan dibandingkan dengan jaringan LAN kabel::
  • Lebih mudah untuk menambah atau memindahkan perangkat.
  • Lebih mudah untuk menyediakan konektivitas di daerah yang sulit untuk meletakkan kabel.
  • Instalasi cepat dan mudah, tidak perlu membuat jaringan kabel secara fisik.
  • Jangkauan akses luas, akses ke jaringan bisa darimana saja selama masih dalam batas jangkauan
  • Cocok untuk pembangunan jaringan sementara.
  • Biaya instalasi dapat secara signifikan lebih rendah.
Namun pengguna juga perlu mangantisipasi hal-hal berikut:
  • Membutuhkan keahlian konfihurasi agar jaringan benar-benar aman
  • Jaringan wireless sangat rentan terhadap penyebaran virus. Banyak jenis virus yang mampu menular ke komputer lain melalui jaringan AdHoc
  • Adanya batas jarak dan jangkauan.
  • Kemungkinan terjadinya gangguan sinyal yang dapat menurunkan kinerja jaringan.

sumber:https://andregatemedia.blogspot.co.id/2014/01/jaringan-wireless-ad-hoc.html

manfaat menggunakan mc power point

Manfaat Program Microsoft PowerPoint

 Presentasi adalah sebuah kegiatan yang dilakukan oleh seseorang yang sedang memaparkan ide atau gagasannya kepada pihak lain dalam sebuah pertemuan. Kegiatan ini sering dilakukan oleh kalangan guru, karyawan, dosen, pemakalah, mahasiswa/i, tim pemasaran, presenter, juru penerang, dan sebagainya. Berikut ini beberapa contoh penggunaan program presentasi dalam lingkungan kerja masing-masing.
Manfaat Program Microsoft PowerPoint

Manfaat Program Microsoft PowerPoint

  • Bagi guru; untuk memaparkan materi tertentu kepada murid-muridnya.
  • Bagi pemakalah; untuk memaparkan hasil pemikirannya kepada peserta sebuah seminar atau diskusi.
  • Bagi mahasiswa; untuk memaparkan hasil pengamatan ilmiahnya di depan dosen, maupun tim penilai.
  • Bagi marketing; untuk memaparkan program kerjanya kepada dewan direksi atau pimpinannya.
  • Bagi penyuluh atau penerang; untuk memberikan presentasi bimbingan dan penyuluhan kepada ibu-ibu rumah tangga atau masyarakat.

Selain didukung perangkat kerasnya seperti komputer, LCD, dan sound system, tingkat kesuksesan penyampaian presentasi juga dapat dipengaruhi oleh perangkat lunak yang digunakan, misalnya menggunakan Macromedia Flash®, SwishMax®, atau Microsoft PowerPoint®.

sumber:https://www.it-artikel.com/2015/10/manfaat-program-microsoft-powerpoint.html

permasalahan pada jaringan

Permasalahan dalam Jaringan

Permasalahan dalam Jaringan
Ada banyak jenis masalah jaringan yang dapat menyebabkan gangguan pada sebuah komputer, gangguan jaringan local, sampai gangguan pada koneksi jaringan global bisnis dalam corporate anda.
  • Masalah jaringan karena kegagalan kabel jaringan
Yang ini merupakan masalah jaringan yang umum kita temui akibat putusnya kabel jaringan yang bisa mempengaruhi kinerja sebuah komputer dalam jaringan karena putusnya kabel patch anda karena digigit tikus; masalah jaringan yang berdampak pada satu blok gedung karena putusnya kabel antar switch (uplink cable); atau bahkan berdampak pada sebagian besar komputer dalam jaringan lan anda karena kegagalan backbone cable.
Masalah jaringan yang berdampak pada sebuah komputer saja mungkin bukan masalah besar kecuali itu komputer sang jendral or sang direktur anda. Tapi masalah jaringan yang berdampak pada jaringan lan anda secara keseluruhan atau bahkan berdampak secara global dalam bisinis corporate anda bisa membuat keringat dingin anda keluar deras. Dalam system infrastruktur jaringan yang berskala besar, system redundansi haruslah diterapkan. Sehingga kalau terjadi kegagalan dalam satu jalur jaringan tidak akan menyebabkan kegagalan jaringan dalam waktu yang lama. Dalam jaringan multi switch yang kompleks maka Spanning Tree Protocol (STP) haruslah di enable dan di tuning secara manual. STP adalah suatu service yang memungkinkan jaringan switch-2 dan bridge-2 LAN anda terkoneksi satu sama lain secara redundant dengan suatu mekanisme yang bisa mencegah bridging loops. Bridging loop itu paket data yang berputar-putar dalam jaringan nyari alamat sampai kecapekan dan akhirnya koid. Bridging loop ini bisa menyebabkan trafik jaringan anda macet atau disebut broadcast storm.
  • Masalah jaringan karena kegagalan piranti jaringan
Skala gangguan akibat dari kegagalan piranti jaringan juga bisa bervariasi, dari hanya sebuah komputer karena kegagalan NIC – lan card; beberapa komputer karena kegagalan switch; atau bahkan berskala luas karena kegagalan pada switch central yang menghubungkan jaringan server. Untuk kegagalan lan card di salah satu komputer bisa diganti dengan network card cadangan anda.
Terus bagaimana kalau kegagalan jaringan itu akibat kerusakan pada switch? Design anda mengenai redundansi jaringan akan sangat membantu dalam menyelamatkan kegagalan jaringan anda. Kebutuhan load balancing dan redundansi haruslah dikaji untuk setiap kebutuhan berdasarkan penggunaan link redundansi; piranti router; switch dan multi-homed host yang bersifat kritis. Tujuan dari system redundansi ini dimaksudkan untuk menjamin ketersediaan layanan dimana tidak ada satupun titik rawan kegagalan.
sumber:https://www.it-artikel.com/2013/08/permasalahan-dalam-jaringan.html

mengenal CPU

Central Processing Unit (CPU)

A. Pengertian CPU

CPU (Central Processing Unit) adalah otak atau sumber dari komputer yang mengatur dan memproses seluruh kerja komputer. CPU ini berbentuk IC yang diberi nama sesuai dengan tipenya, misalnya 8088 untuk PC XT dan 80286 untuk PC AT,Pentium IV dan sebagainya. Karena CPU ini berada pada suatu board (papan) yang disebut motherboard dan terletk dalam kotak (casing), sekarang ini orang jadi cenderung menyebut kotak berisi catu daya, disk drive dan motherboard sebagai CPU/ kotak CPU. Di dalam kotak CPU biasanya terdapat 2 buah disket drive yang diberi nama disket drive A dan disket drive B. selain disket drive ada juga yang mempunyai hard disk dan CD ROM.

B. Fungsi CPU
Fungsi utama CPU adalah menjalankan program-program yang disimpan di memori utama. Hal ini dilakukan dengan cara mengambil instruksi-instruksi dari memori utama dan mengeksekusinya satu persatu sesuai dengan alur perintah. Pekerjaan ini dilakukan dalam dua tahapan yaitu membaca instruksi (fetch) dan melaksanakan instruksi tersebut (execute). Proses membaca dan melaksankan ini dilakukan berulang-ulang sampai semua instruksi yang terdapat di memori utama dijalankan atau komputer dimatikan. Proses ini dikenal juga sebagai siklus fetch-eksekusi.

a) Siklus fetch-eksekusi bisa dijelaskan sebagai berikut

  • i. di awal setiap siklus, CPU akan membaca dari memori utama,
    ii. sebuah register, yang disebut Program Counter (PC), akan mengawasi dan menghitung instruksi selanjutnya,
    iii. ketika CPU membaca sebuah instruksi, Program Counter akan menambah satu hitungannya,
    iv. lalu instruksi-instruksi yang dibaca tersebut akan dimuat dalam suatu register yang disebut register instruksi (IR), dan akhirnya
    v. CPU akan melakukan interpretasi terhadap instruksi yang disimpan dalam bentuk kode binari, dan melakukan aksi yang sesuai dengan instruksi tersebut.Download

b) Siklus Intruksi
i. Instruction Addess Calculation (IAC), yaitu mengkalkulasi atau menentukan alamat instruksi berikutnya yang akan dieksekusi. Biasanya melibatkan penambahan bilangan tetap ke alamat instruksi sebelumnya. Misalnya, bila panjang setiap instruksi 16 bit padahal memori memiliki panjang 8 bit, maka tambahkan 2 ke alamat sebelumnya.
ii. Instruction Fetch (IF), yaitu membaca atau pengambil instruksi dari lokasi memorinya ke CPU.
iii. Instruction Operation Decoding (IOD), yaitu menganalisa instruksi untuk menentukan jenis operasi yang akan dibentuk dan operand yang akan digunakan.
iv. Operand Address Calculation (OAC), yaitu menentukan alamat operand, hal ini dilakukan apabila melibatkan referensi operand pada memori.
v. Operand Fetch (OF), adalah mengambil operand dari memori atau dari modul I/O.
vi. Data Operation (DO), yaitu membentuk operasi yang diperintahkan dalam instruksi.
vii. Operand store (OS), yaitu menyimpan hasil eksekusi ke dalam memori

Sub Siklus Intruksi
a. Fetch : membaca instruksi berikutnya dari memori ke dalam CPU
b. Execute : menginterpretasikan opcode dan melakukan operasi yang diindikasikan
c. Interrupt : Apabila interrupt diaktifkan dan interrupt telah terjadi, simpan status proses saat itu dan layani interrupt.

Aksi – Aksi CPU
i. CPU Memori, perpindahan data dari CPU ke memori dan sebaliknya
ii. CPU – I/0, perpindahan data dari CPU ke modul I/0 dan sebaliknya
iii. Pengolahan Data, CPU membentuk sejumlah operasi aritmatika dan logika terhadap data
iv. Kontrol, merupakan instruksi untuk pengontrolan fungsi atau kerja. Misalnya instruksi pengubahan urusan eksekusi

C. Komponen – Komponen CPU

a) Control Unit yang mampu mengatur jalannya program. Komponen ini sudah pasti terdapat dalam semua CPU. CPU bertugas mengontrol komputer sehingga terjadi sinkronisasi kerja antar komponen dalam menjalankan fungsi-fungsi operasinya. Termasuk dalam tanggung jawab unit kontrol adalah mengambil intruksi-intruksi dari memori utama dan menentukan jenis instruksi tersebut. Bila ada instruksi untuk perhitungan aritmatika atau perbandingan logika, maka unit kendali akan mengirim instruksi tersebut ke ALU. Hasil dari pengolahan data dibawa oleh unit kendali ke memori utama lagi untuk disimpan, dan pada saatnya akan disajikan ke alat output.
Tugas dari control unit ini adalah:
 Mengatur dan mengendalikan alat-alat input dan output
 Mengambil instruksi-instruksi dari memori utama.
 Mengambil data dari memori utama (jika diperlukan) untuk diproses.
 Mengirim instruksi ke ALU bila ada perhitungan aritmatika atau perbandingan logika serta mengawasi kerja dari ALU
 Menyimpan hasil proses ke memori utama.
b) Register merupakan alat penyimpanan kecil yang mempunyai kecepatan akses cukup tinggi, yang digunakan untuk menyimpan data dan/atau instruksi yang sedang diproses. Memori ini bersifat sementara, biasanya di gunakan untuk menyimpan data saat di olah ataupun data untuk pengolahan selanjutnya. Secara analogi,register ini dapat diibaratkan sebagai ingatan di otak bila kita melakukan pengolahan data secara manual, sehingga otak dapat diibaratkan sebagai CPU, yang berisi ingatan-ingatan, satuan kendali yang mengatur seluruh kegiatan tubuh dan mempunyai tempat untuk melakukan perhitungan dan perbandingan logika

c) Aritmetic Logic Unit yang bertugas untuk melakukan operasi aritmetika dan operasi logika berdasar instruksi yang ditentukan. ALU sering di sebut mesin bahasa karena bagian ini ALU terdiri dari dua bagian, yaitu unit arithmetika dan unit logika boolean yang masing-masing memiliki spesifikasi tugas tersendiri. Tugas utama dari ALU adalah melakukan semua perhitungan aritmatika (matematika) yang terjadi sesuai dengan instruksi program. ALU melakukan semua operasi aritmatika dengan dasar penjumlahan sehingga sirkuit elektronik yang digunakan disebut adder.
Tugas lain dari ALU adalah melakukan keputusan dari suatu operasi logika sesuai dengan instruksi program. Operasi logika meliputi perbandingan dua operand dengan menggunakan operator logika tertentu, yaitu sama dengan (=), tidak sama dengan , kurang dari, dan lebih besar atau sama dengan.
d) CPU Interconnections adalah sistem koneksi dan bus yang menghubungkan komponen internal CPU, yaitu ALU, unit kontrol dan register-register dan juga dengan bus-bus eksternal CPU yang menghubungkan dengan sistem lainnya, seperti memori utama, piranti masukan.

D. Cara Kerja CPU

Saat data dan/atau instruksi dimasukkan ke processing-devices, pertama sekali diletakkan di RAM (melalui Input-storage); apabila berbentuk instruksi ditampung oleh Control Unit di Program-storage, namun apabila berbentuk data ditampung di Working-storage). Jika register siap untuk menerima pengerjaan eksekusi, maka Control Unit akan mengambil instruksi dari Program-storage untuk ditampungkan ke Instruction Register, sedangkan alamat memori yang berisikan instruksi tersebut ditampung di Program Counter. Sedangkan data diambil oleh Control Unit dari Working-storage untuk ditampung di General-purpose register (dalam hal ini di Operand-register). Jika berdasar instruksi pengerjaan yang dilakukan adalah arithmatika dan logika, maka ALU akan mengambil alih operasi untuk mengerjakan berdasar instruksi yang ditetapkan. Hasilnya ditampung di Accumulator. Apabila hasil pengolahan telah selesai, maka Control Unit akan mengambil hasil pengolahan di Accumulator untuk ditampung kembali ke Working-storage. Jika pengerjaan keseluruhan telah selesai, maka Control Unit akan menjemput hasil pengolahan dari Working-storage untuk ditampung ke Output-storage. Lalu selanjutnya dari Output-storage, hasil pengolahan.

sumber:https://fujhyzhu.wordpress.com/2010/05/22/central-processing-unit-cpu/

KONSEP DASAR SISTEM OPERASI

KONSEP DASAR SISTEM OPERASI

Konsep Sistem Operasi
Konsep Sistem Operasi

 

Definisi menurut American National Student,

Sistem operasi adalah software yang mengontrol eksekusi program komputer dan dilengkapi dengan penjadwalan, penelusuran kesalahan, pengendalian input-output, akunting, kompilasi, penyimpanan, manajemen data dan layanan hubungan.

2. TUJUAN SISTEM OPERASI

Sistem Operasi dimaksudkan untuk memudahkan penggunaan komputer secara efisien. Sistem Operasi mengatur secara optimal sumber daya system computer.

3. SIFAT-SIFAT SISTEM OPERASI

a. Usability ( Kemudahan Pemakaian )
Memudahkan penggunaan, mempunyai desain untuk menyenangkan user (userfreindly).
b. Generality
Memiliki banyak manfaat, sistem operasi dibangun untuk membantu bahkan mempermudah pekerjaan user atau memfasilitasi apa yang ingin user kerjakan.

Fasilitas yang ditawarkan sistem operasi ditandai dengan manfaatnya secara umum. Semua manfaat program harus memperoleh data dan menghasilkan data. Sistem operasi dipergunakan dalam banyak hal.

c. Efficiency
Memiliki fungsi yang cepat, os membuat penggunaan sumber daya lebih optimal.
Sistem operasi dirancang tidak hanya untuk melayani seorang user, tapi juga semua user sebagai group. Salah satunya adalah berkoordinasi dengan user untuk berbagi sumber daya.
Sumber daya sistem komputer antara lain:
  • Main Storage
  • Satu atau lebih CPU
  • Input/output Device
  • Channel / saluran
  • Media secondary storage
Bilamana CPU menunggu pekerjaan atau main storage kosong, maka OS berkolaborasi dengan user untuk memaksimalkan penggunaan sumber daya.
d. Visibility
Memiliki banyak kemampuan yang diharapkan oleh user, sehingga mereka mengambil keuntungan maksimal dari sistem operasi.
e. Fleksibilitas
Penyasuaian spesifikasi terhadap kepentingan suatu pekerjaan atau lingkungan. Contoh untuk kelas pelajar, personal, bisnis, atau bahkan untuk profesional.
f. Opacity ( Transparency)
Memiliki ijin penggunaan, sehingga untuk detail fitur tertentu tidak bisa diketahui atau digunakan.

g. Security
Memilki proteksi data dari akses orang yang tidak berhak

h. Integrity
Memiliki proteksi terhdap dirinya sendiri dan user dari sesuatu yang menyebabkan kesalahan

i. Capability
Memiliki kemampuan yang terbatas.

j. Avaibility
Memiliki banyak kelengkapan, fungsi dan waktu.

k. Reliability
Memiliki kemungkinan kegagalan yang jarang terjadi.

l. Serviceability
Memiliki kemampuan memperbaiki sendiri, recovery atau self troubleshooting.

m. Extensibility
Menyediakan input tambahan dan kemudahan dalam modifikasi.

4. KOMPONEN SISTEM OPERASI

Ada dua bagian utama sistem operasi, yaitu:

  • Supervisor atau komponen manajemen
  • Komponen Pendukung

5. SUPERVISOR ATAU KOMPONEN MANAJEMEN

Yaitu bagian dari fungsi sistem operasi yang tugasnya mengontrol keseluruhan lingkungan sistem pemrosesan data.
Fungsi – fungsi yang dikontrol antara lain :
  1. Pengelolaan Pekerjaan, yaitu mengalokasikan sumber daya yang dapat dimintakan prioritas untuk menjalankan program (penjadwalan pekerjaan).
  2. Pengelolaan Tugas, yaitu pengawasan terhadap sumber daya yang tidak dapat dimintakan prioritas menjalankan program.
  3. Pengolahan Data, membantu mengalokasikan storage sampai ke level bawah / file, dan pengawasan semua rutinitas, aktivitas semua input output, termasuk interface ke pemakai, juga pengelolaan ruangan, metode akses atau aluran program, pengelolaan buffer dan perbaikan kesalahan.

6. KOMPONEN PENDUKUNG

Yaitu bagian dari fungsi sistem operasi yang bertugas memelihara data/record, mendukung program tambahan dan dukungan input lainnya.

7. STRUKTUR DASAR SISTEM OPERASI

a. Sistem monolitik

Sistem operasi sebagai kumpulan prosedur dapat saling dipanggil oleh prosedur lain bila diperlukan. Contoh UNIX.


Kelemahan: 

  • Pengujian dan penghilangan kesalahan sulit karena tak dapat dipisahkan dan dilokalisasi.
  • Sulit dalam menyediakan fasilitas pengamanan.
  • Tidak fleksibel karena komputer sebenarnya tidak memberlakukan seluruh layanan yang disediakan .
  • Kesalahan satu pemrograman pada satu bagian dari satu kernel     menyebabkan matinya seluru sistem.

Keunggulan :
Layanan dapat dilakukan sangat cepat karena terdapat disatu ruang alamat.

b. Sistem berlapis

Sistem operasi dibentuk secara hierarki berdasar lapisan-lapisan dimana lapisan bawah memberi layanan lapisan diatasnya.
Adapun yang dimaksud dengan struktur berlapis yaitu mengurangi kompleksitas rancangan dan implementasi sistem operasi. Tiap lapisan mempunyai fungsi dan interface I/O antara 2 lapisan bersebelahan yang terdefinisi baik.

Contoh :UNIX termodifikasi, venus, THE, OS/2.

Kelemahan :
Fungsi-fungsi SO harus diberikan ketiap lapisan secara hati-hati.

Keunggulan :

  • Memiliki keunggulan rancangan modular, tiap lapis dapat dirancang, dikode dan diuji secara independen.
  • Pendekatan berlapis menyederhanakan rancangan, spesifikasi dan implementasi sistem operasi.

8. TIPE-TIPE SISTEM OPERASI

a. Sistem Batch Processing

Yaitu tipe yang dikarakteristikkan oleh kenyataan bahwa hanya satu program user yang dapat dijalankan komputer dan dikerjakan seluruhnya sampai selesai baru dapat memakai program selanjutnya.
b. Sistem Multi Programming
Yaitu sistem yang mempunyai karakteristik bahwa lebih dari satu proses dapat dijalankan dalam sistem komputasi yang sama pada saat yang sama.
c. Sistem Time Sharing / Multi Tasking
  • Seperti multiprograming hanya waktunya dibatasi.
  • Suatu proses menggunakan CPU dengan waktu tertentu, setelah itu CPU digunakan untuk mengerjakan proses yang lain.
  • Waktu maksimal yang diperlukan untuk menggunakan CPU disebut Quantum Time.
d. Sistem Multi Processing / Tightlycoupled Systems
Yaitu suatu sistem yang memiliki lebih dari satu processor, sehingga mampu menjalankan satu atau lebih program, menggunakan bus, clock, memori, dan peralatan lainnya secara bersama-sama.

Sistem Multi Processing dibagi menjadi 2:

  • Symmetric multiprocesing, yaitu tiap prosesor memiliki sistem operasi yang sama.
  • Assimetric multiprocesing, yaitu suatu prosesor berfungsi sebagai master procesor (mengaur penjadwalan dan mengalokasikan kerja tiap-tiap procesor) sedang procesor lain berfungsi sebagai slave.
e. System Terdistribusi / Loosely Coupled Systems
Yaitu kumpulan prosesor yang tidak menggunakan memori atau clock secara bersama-sama.
Keuntungan: 
  • Pemakaian resource secara bersama-sama
  • Kecepatan komputasi
  • Reabilitas, faktor kegagalan proses dapat diurangi
  • Komunikasi, adanya transfer data dari satu program ke program yang lain.
f. System Real–Time
Yaitu digunakan jika suatu operasi memerlukan ketepatan waktu dari procesor atau aliran data dan sering digunakan sebagai pengontrol terhadap aplikasi-aplikasi tertentu.

Ada dua bentuk sistem real time:

  • Hard real time, yaitu menjamin critical task dapat diselesaikan tepat pada waktunya.
  • Soft real time, yaitu memberikan prioritas pada critical task dibanding dengan task yang lainnya hingga critical task selesai dikerjakan.

sumber:https://www.gatewan.com/2016/02/konsep-dasar-sistem-operasi.html

fungsi dalam C++

MENGENAL FUNGSI DALAM C++

Fungsi Dalam C++
Fungsi Dalam C++

 

1. PENGERTIAN FUNGSI
Fungsi merupakan blok program yang dirancang untuk melaksanakan tugas tertentu. Beberapa keguaan fungsi antara lain :
  • Untuk mengurangi pengulangan program yang sama
  • Agar program menjadi terstruktur, rapi dan lebih mudah dikembangkan.

2. STRUKTUR FUNGSI

Sebuah fungsi sederhana mempunyai bentuk penulisan sebagai berikut:

return_type nama_fungsi(parameter) {
pernyataan 
}

Keterangan:

  • return_type adalah nilai balik saat fungsi dipanggil
  • nama_fungsi, biasanya disesuaikan dengan kegunaan dari fungsi, namun boleh ditulis secara bebas dengan ketentuan tidak menggunakan spasi dan nama-nama fungsi yang memiliki arti sendiri.
  • parameter/argumen, diletakan di antara tanda kurung setelah nama fungsi, argumen digunakan sebagai nilai masukan untuk fungsi dan dapat dibuat lebih dari satu atau tidak sama sekali.
Untuk memanggil fungsi, gunakan nama fungsi dan definisi argumen jika dibutuhkan. perhatikan contoh berikut:
Contoh 1:
#include <iostream.h> 
#include <conio.h> 

void hello() { 
cout << "Hello Everyone\n"; 
}

void main() { 
hello(); 
hello(); 
getch(); 
}

Output:
Hello Everyone
Hello Everyone

3. FUNGSI DENGAN PARAMETER

Parameter adalah nilai yang dapat kita masukkan ke dalam sebuah fungsi. Kita dapat mendefinisikan jumlah parameter berapapun sesuai dengan kebutuhan.
Terdapat dua macam parameter, yaitu:
  • parameter formal, yaitu variabel yang terdapat dalam definisi fungsi.
  • parameter aktual, yaitu variabel atau nilai yang digunakan saat pemanggilan suatu fungsi.
Perhatikan contoh berikut:
Contoh 2:
#include <iostream.h> 
#include <conio.h> 

void tambah(int a, int b) { 
cout << a + b << endl; 
} 

void main() { 
tambah(10, 12); 
tambah(100, 200); 
getch(); 
}

Output:
22
300

4. PROTIPE FUNGSI

Prototipe fungsi digunakan untuk mendeklarasikan ke kompiler mengenai:
  • Nilai balik dari fungsi
  • Jumlah parameter yang digunakan fungsi
  • Tipe data dari masing-masing parameter yang digunakan fungsi
Contoh 3:
#include <iostream.h>
#include <conio.h> //definisi prototipe 

void tambah(int a, int b); 
void kurang(int a, int b); 

void main() { 
tambah(10, 12); 
tambah(100, 200); 
kurang(30, 45); 
kurang(200, 125); 
getch(); 
} 

void tambah(int a, int b) { 
cout << a + b << endl;
} 

void kurang(int a, int b) { 
cout << a - b << endl; 
}

Output:
22
300
-15
75

5. NILAI BAWAAN PARAMETER

Salah satu keistimewaan C++ adalah adanya kemampuan untuk menggunakan nilai bawaan (default) parameter fungsi. parameter yang mempunyai nilai bawaan nantinya dapat tidak disertakan didalam pemanggilan fungsi.
Contoh 4:
#include <iostream.h>
#include <conio.h> 

void hello(int jum=1); // Prototipe fungsi 

void main() { 
clrscr(); 
hello(); 
hello(3);
getch(); 
} 

void hello(int jum) { 
for (int i = 0; i < jum; i ++) { 
cout << " C++ " << endl; 
}
cout << " Selesai " << endl; 
}

Output:
C++
Selesai
C++
C++
C++
Selesai

6. PASS BY VALUE

Melewatkan parameter dengan nilai (pass by value). Secara default argumen yang kita definisikan dalam fungsi bersifat pass by value, yang berarti akan dilewatkan ke dalam fungsi dan tidak akan mengalami perubahan setelah fungsi dijalankan. Perhatikan contoh berikut:
Contoh 5:
#include <iostream.h> 
#include <conio.h>

void perkalian(int a, int b, int c);

void main() { 
int a = 10, b = 30, c = 0; 
cout << "\nNilai c SEBELUM fungsi perkalian dipanggil : " << c; 
perkalian(a, b, c); 
cout << "\nNilai c SETELAH fungsi perkalian dipanggil : " << c; 
getch(); 
} 

void perkalian(int a, int b, int c) { 
c = a * b; 
cout << "\nNilai c DALAM fungsi perkalian " << c; 
}

Output:
Nilai c SEBELUM fungsi perkalian dipanggil : 0
Nilai c DALAM fungsi perkalian 300
Nilai c SETELAH fungsi perkalian dipanggil : 0

7. PASS BY REFERENCE

Melewatkan parameter dengaan rerefensi (pass by reference). Berbeda dengan pass by value yang tidak akan mempengaruhi nilai parameter setelah fungsi dijalankan, pass by reference akan mempengaruhi nilai setelah fungsi dijalankan. Untuk melewatkan parameter dengan referensi, tambahkan karakter ampersand (‘&’) di depan nama parameter. berikut adalah contoh sebelumnya yang telah diubah menjadi pass by reference:
Contoh 6:
#include <iostream.h>
#include <conio.h> 

void perkalian(int a, int b, int &c); 

void main() {
int a = 10, b = 30, c = 0; 
cout << "\nNilai c SEBELUM fungsi perkalian dipanggil : " << c; 
perkalian(a, b, c); 
cout << "\nNilai c SETELAH fungsi perkalian dipanggil : " << c; 
getch(); 
} 

void perkalian(int a, int b, int &c) { 
c = a * b;
cout << "\nNilai c DALAM fungsi perkalian " << c; 
}

Output:
Nilai c SEBELUM fungsi perkalian dipanggil : 0
Nilai c DALAM fungsi perkalian 300
Nilai c SETELAH fungsi perkalian dipanggil : 300

8. FUNGSI YANG MENGEMBALIKAN NILAI

Pada saat kita membuat fungsi, sering kali kita ingin agar ketika fungsi dipanggil akan melakukan proses dan mengembalikan nilai tertentu. kita bisa menggunakan keyword return dalam fungsi untuk mengembalikan nilai ketika fungsi tersebut dipanggil. sebagai contoh, perhatikan script berikut:
Contoh 7:
#include <iostream.h> 
#include <conio.h> 

int tambahkan(int a, int b); 
long kuadrat(long a); 

void main() { 
int a = 10, b = 30,
c = 0; a = kuadrat(a); 
b = kuadrat(b);
c = tambahkan(a, b); 
cout << "nilai c sekarang = " << c;
getch(); 
} 

int tambahkan(int a, int b) { 
return a + b;
} 

long kuadrat(long a) { 
return a * a; 
}
Output:
nilai c sekarang = 1000

9. LINGKUP VARIABEL

Lingkup variabel menentukan keberadaan suatu variabel tertentu dalam fungsi. Ada variabel yang hanya dikenal di suatu fungsi dan tidak dikenal pada fungsi lain. Namun ada juga variabel yang dapat diakses oleh semua fungsi.
a. Variabel Lokal
variabel lokal adalah variabel yang dideklarasikan di dalam fungsi dan hanya dikenali dalam fungsi yang bersangkutan. Variabel lokal bisa juga disebut dengan variabel otomatis. Perhatikan contoh berikut:
Contoh 8:
#include <iostream.h> 
#include <conio.h> 

void lokal(); 

void main() { 
int a = 25; 
cout << "\nNilai a dalam fungsi main = " << a; 
lokal();
cout << "\nNilai a dalam fungsi main = " << a; 
getch();
} 

void lokal() { 
int a=70; 
cout << "\nNilai a dalam fungsi lokal = " << a; 
}

Output:
Nilai a dalam fungsi main = 25
Nilai a dalam fungsi lokal = 70
Nilai a dalam fungsi main = 25

b. Variabel Eksternal

Variabel eksternal adalah variabel yang dideklarasikan di luar fungsi dan bersifat global sehingga dapat digunakan bersama-sama tanpa harus dideklarasian berulang-ulang. perhatikan contoh berikut:
Contoh 9:
#include <iostream.h>
#include <conio.h> 

int a = 77; 
void lokal();

void main() { 
a = 25; cout << "\nNilai a dalam fungsi main = " << a; 
lokal(); 
cout << "\nNilai a dalam fungsi main = " << a; 
getch(); 
} 

void lokal() { 
a+=7; 
cout << "\nNilai a dalam fungsi lokal = " << a; 
}

Output:
Nilai a dalam fungsi main = 25
Nilai a dalam fungsi lokal = 32
Nilai a dalam fungsi main = 32

c. Variabel Statis

Variabel statis dapat berupa variabel lokal ataupun variabel eksternal. variabel statis ini mempunyai sifat antara lain:
  • jika variabel statis bersifat lokal, maka variabel hanya dikenal oleh fungsi dimana variabel dideklarasikan.
  • jika variabel statis bersifat eksternal, maka variabel dapat dipergunakan oleh semua fungsi yang terletak pada file yang sama.
  • jika nilai variabel statis tidak diberikan, secara otomatis akan diberikan nilai nol.

Contoh 10:

#include <iostream.h> 
#include <conio.h> 

void saya_ingat(); 

void main(){ 
int mana = 50; 
clrscr(); 
saya_ingat(); 
saya_ingat(); 
saya_ingat(); 
cout << " main() : mana = " << mana << endl; 
getch(); 
} 

void saya_ingat() { 
static int mana = 77; mana ++; 
cout << " Saya_ingat () : mana = " << mana << endl; 
}

Output:
Saya_ingat () : mana = 78
Saya_ingat () : mana = 79
Saya_ingat () : mana = 80
main() : mana = 50

10. OVERLOADING FUNCTION

Fungsi overloading berarti mendefinisikan beberapa fungsi dengan nama yang sama tetapi dengan parameter yang berbeda.
Contoh 11:
#include <iostream.h> 
#include <conio.h> 

int kuadrat(int angka); 
long kuadrat(long angka); 
float kuadrat(float angka);

void main() { 
int a = 200; 
float b = 50.56; 
long c = 120; 
cout << a << " dikuadratkan menjadi " << kuadrat(a) << endl; 
cout << b << " dikuadratkan menjadi " << kuadrat(b) << endl; 
cout << c << " dikuadratkan menjadi " << kuadrat(c) << endl; 
getch(); 
} 

int kuadrat(int angka){ 
return (angka * angka);
} 

long kuadrat(long angka) { 
return (angka * angka); 
} 

float kuadrat(float angka) { 
return (angka * angka); 
}

Output:
200 dikuadratkan menjadi 40000
50.56 dikuadratkan menjadi 2556.31
120 dikuadratkan menjadi 14400

sumber:https://www.gatewan.com/2016/02/mengenal-fungsi-dalam-c.html

metode transfer data

METODE TRANSFER DATA

Dma Controller Diagram
Dma Controller Diagram

A. MASUKAN/KELUARAN TERPROGRAM (PROGRAMMED I/O)

Merupakan perangkat I/O komputer yang dikontrol oleh program. Contohnya adalah instruksi dalam bahasa mesin in, out, move. Ketika perangkat I/O menangani permintaan, maka register mengatur status perangkat.
Perangkat tidak dapat memberi tahu ke pemroses saat tugas telah selesai dilakukan. Pemroses harus selalu memeriksa register untuk status perangkat.
Software pengendali perangkat (driver) harus mentransfer data ke atau dari pengendali. Driver saling berkomuniksi dengan Driver Adapter untuk mengeksekusi perintah sampai operasi yang dilakukan selesai.
Berikut 3 kategori instruksi yang wajib ada di dalam Driver :
1. Pengendalian
  • Instruksi untuk mengendalikan operasi perangkat keras (main board)
  • Instruksi untuk mengaktifkan perangkat eksternal
  • Instruksi untuk memberitahu tindakan apa yang perlu dilakukan perangkat keras dan external (Reasoning).

Contoh: Unit DVD Drive di instruksikan untuk kembali ke posisi awal, menuju ke record berikutnya, atau tindakan lain.

2. Pengujian

Instruksi-instruksi untuk memeriksa status perangkat keras dan berkaitan dengan perangkat I/O.
3. Pembacaan / Penulisan
  • Instruksi-instruksi untuk membaca/menulis dari/ke perangkat keras
  • Instruksi untuk transfer data antar register atau perangkat eksternal.

Kelemahan: Cara ini sangat tidak efisien dikarenakan banyak sekali waktu yang terbuang hanya untuk menunggu status perangakt keras atau selesainya operasi perangkat I/O.

B. PERANGKAT BERKENDALIKAN INTERUPSI (INTERRUPT I/O)

Interupsi merupakan mekanisme kompleks untuk mengkoordinir pengalihan I/O. Konsep interupsi banyak digunakan dalam Sistem Operasi maupun Aplikasi Kontrol, dimana subroutine tertentu harus diatur dengan seksama, relatif terhadap peristiwa-peristiwa eksternal (tak terduga).
Berikut ini adalah mekanisme Interrupt I/O :
  1. Pemroses memberi instruksi ke perangkat I/O, lalu melanjutkan tugas lain.
  2. Perangkat I/O akan memberi instruksi untuk meminta layanan berikutnya, setelah status Ready untuk melakukan pertukaran data.
  3. Saat menerima interupsi perangkat keras, maka pemroses segera mendahulukan eksekusi untuk perangkat keras (transfer data).
Gambaran Proses :
Interupsi bisa terjadi apabila perangkat keras (hardware) atau perangkat lunak (software) minta “dilayani” olehprosesor. Apabila terjadi interupsi, maka prosesor menghentikan proses yang sedang dikerjakannya, kemudian beralih mengerjakan service routine interupsi tersebut. Setelah selesai, maka prosesor kembali melanjutkan proses yang tertunda.
Untuk memulai operasi I/O, CPU me-load register yang sesuai untuk device controller. Sebaliknya device controller memeriksa isi register untuk kemudian menentukan operasi apa yang harus dilakukan. Pada saat operasi I/O dijalankan, maka akan ada dua kemungkinan, yaitu synchronous I/O dan asynchronous I/O.
Pada synchronous I/O, kendali dikembalikan ke proses pengguna setelah proses I/O selesai dikerjakan.
Sedangkan pada asynchronous I/O, kendali dikembalikan ke proses pengguna tanpa menunggu proses I/O selesai. Sehingga proses I/O dan proses pengguna dapat dijalankan secara bersamaan.
Keunggulan: Pemroses tidak disibukan dengan menunggu/menjaga seluruh operasi maupun status perangkat I/O. Teknik ini lebih baik dibandingkan dengan Teknik I/O terprogram.

C. DMA (DIRECT MEMORY ACCESS)

Adalah suatu metode penanganan I/O dimana device controller langsung berhubungan dengan memori tanpa campur tangan CPU. Setelah menyetel buffers, pointers, dan counters untuk perangkat I/O, device controller mentransfer blok data langsung ke penyimpanan tanpa campur tangan CPU.
DMA digunakan untuk perangkat I/O dengan kecepatan tinggi. Hanya terdapat satu interupsi setiap blok, berbeda dengan perangkat yang mempunyai kecepatan rendah dimana interupsi terjadi untuk setiap byte (word).
Transfer DMA
Untuk memulai sebuah transfer DMA, host akan menuliskan sebuah DMA command block yang berisi pointer yang menunjuk ke sumber transfer, tujuan/destinasi transfer, dan jumlah byte yang akan ditransfer, ke memori.
CPU kemudian menuliskan alamat command block ini ke DMA controller, sehingga dapat segera mengoperasikan bus memori secara langsung dengan menempatkan alamat-alamat pada bus tersebut untuk melakukan transfer tanpa bantuan CPU.
Ada 3 langkah dalam transfer DMA :
  1. Prosesor menyiapkan DMA transfer, dengan cara menyediakan data-data dari device, operasi yang akan ditampilkan, alamat memori yang menjadi sumber dan tujuan data, dan banyaknya byte yang di transfer.
  2. DMA controller memulai operasi (menyiapkan bus, menyediakan alamat, menulis dan membaca data), sampai seluruh blok sudah di transfer.
  3. DMA controller meng-interupsi prosesor, selanjutnya akan ditentukan tindakan apa berikutnya.
Pada dasarnya, DMA mempunyai dua metode yang berbeda dalam mentransfer data;
  1. Metode pertama adalah HALT, disebut juga Burst Mode DMA, karena DMA controller memegang kontrol dari sistem bus dan mentransfer semua blok data ke atau dari memori pada single burst. Saat transfer masih dalam progress, sistem mikroprosessor di-set idle, tidak melakukan instruksi operasi untuk menjaga internal register. Tipe operasi DMA seperti ini ada pada kebanyakan komputer.
  2. Metode kedua, mengikut-sertakan DMA controller untuk memegang kontrol dari sistem bus untuk jangka waktu yang lebih pendek pada saat mikroprosessor sibuk dengan operasi internal dan tidak membutuhkan akses ke sistem bus. Metode DMA ini disebut Cycle Stealing Mode. Cycle Stealing DMA lebih kompleks untuk diimplementasikan dibandingkan HALT DMA, karena DMA controller harus mempunyai kecerdasan untuk memprediksi waktu terbukanya sistem Bus.
Handshaking
Proses handshaking antara DMA controller dengan device controller dilakukan melalui sepasang kabel yang disebut DMA-request dan DMA-acknowledge. Device controller mengirimkan sinyal melalui DMA-request, ketika akan mentransfer data sebanyak satu word. Kemudian hal ini akan mengakibatkan DMA controller memasukkan alamat-alamat yang dinginkan ke kabel alamat memori, dan mengirimkan sinyal melalui kabel DMA-acknowledge. Setelah diterima, device controller mengirimkan data yang dimaksud dan mematikan sinyal pada DMA-request. Hal ini berlangsung berulang-ulang sehingga disebut handshaking.
sumber:https://www.gatewan.com/2016/02/metode-transfer-data.html

Organisasi Perangkat Lunak

ORGANISASI PERANGKAT LUNAK

Uniform Interfacing for Device Drivers
(a) Without a standard driver interlace. (b) With a standard driver interface.

SUBSTANSI :Secara umum organisasi perangkat lunak sistem I/O terdiri atas lapisan:

  1. Lapisan Interrupt Handler, menangani terjadinya interupsi à dialihkan ke interupt handler
  2. Lapisan device driver, mengimplementasikan operasi dari masing-masing device controller
  3. Lapisan subsistem I/O atau kernel I/O, menyediakan antarmuka atau fungsi I/O bagi SO atau aplikasi
  4. Lapisan pustaka I/O aplikasi, mengimplementasikan pustaka pengaksesan I/O atau API (Application Programming Interface) bagi aplikasi untuk melakukan operasi I/O

Tujuan dibuatnya  perancangan manajemen perangkat lunak I/O adalah untuk hal-hal sebagai berikut:

  • Penamaan yang seragam (uniform naming). Nama berkas atau peralatan adalah string atau integer, tidak tergantung pada peralatan sama sekali.
  • Penanganan kesalahan (error handling). Umumnya penanganan kesalahan ditangani sedekat mungkin dengan perangkat keras.
  • Transfer sinkron vs asinkron Kebanyakan fisik I/O adalah asinkron. Pemroses mulai transfer dan mengabaikannya untuk melakukan kerja lain sampai interupsi tiba. Programprogram pemakai sangat lebih mudah ditulis jika operasi-operasi I/O berorientasi blok. Setelah perintah read, program kemudian secara otomatis ditunda sampai data tersedia di buffer.
  • Shareable vs dedicated Beberapa peralatan dapat dipakai bersama seperti disk, tapi ada juga peralatan yang harus hanya satu pemakai yang dibolehkan memakainya pada satu saat. Contohnya peralatan yang harus dedicated misalnya printer.

1. INTERRUPT HANDLER

Interupsi adalah suatu peristiwa yang menyebabkan eksekusi satu program ditunda dan program lain yang dieksekusi. Jika interrupt terjadi, maka program dihentikan dahulu untuk menjalankan rutin interrupt. Ketika program yang sedang berjalan tadi dihentikan, prosesor menyimpan nilai register yang berisi alamat program ke stack, dan mulai menjalankan rutin interrupt.
Interrupt Handlers
Interrupt Handlers
a. Mekanisme Dasar Interupsi
Ketika CPU mendeteksi bahwa sebuah controller telah mengirimkan sebuah sinyal ke interrupt request line (membangkitkan sebuah interupsi), CPU kemudian menjawab interupsi tersebut (juga disebut menangkap interupsi) dengan menyimpan beberapa informasi mengenai state terkini CPU, contohnya nilai instruksi pointer, dan memanggil interrupt handler agar handler tersebut dapat melayani controller atau alat yang mengirim interupsi tersebut.
b. Fitur Tambahan pada Komputer Modern
Pada arsitektur komputer modern, tiga fitur disediakan oleh CPU dan interrupt controller (pada perangkat keras) untuk dapat menangani interrupsi dengan lebih bagus. Fitur-fitur ini antara lain adalah kemampuan menghambat sebuah proses interrupt handling selama prosesi berada dalam critical state, efisiensi penanganan interupsi sehingga tidak perlu dilakukan polling untuk mencari device yang mengirimkan interupsi, dan fitur yang ketiga adalah adanya sebuah konsep multilevel interupsi sedemikian rupa sehingga terdapat prioritas dalam penanganan interupsi (diimplementasikan dengan interrupt priority level system).
c. Jenis-Jenis Interupsi
Dilihat dari cara kerja prosesor, tidak semua interupsi itu sama pentingnya bagi proses yang sedang dilaksanakan oleh kerja prosesor tsb. Kalau sampai interupsi yang kurang penting ikut menginterupsi kerja prosesor, maka pelaksanaan proses itu akan menjadi lama. Karena itu biasanya SO membagi interupsi ke dalam dua jenis, yaitu:
  1. Software, yaitu interrupt yang disebabkan oleh software, sering disebut dengan system call.
  2. Hardware, Terjadi karena adanya akse pada perangkat keras, seperti penekanan tombol keyboard atau menggerakkan mouse.
d. Interrupt Request Line
Pada peranti keras CPU terdapat kabel yang disebut interrupt request line, kebanyakan CPU memiliki dua macam interrupt request line, yaitu nonmaskable interrupt dan maskable interrupt. Maskable interrupt dapat dimatikan/ dihentikan oleh CPU sebelum pengeksekusian deretan critical instruction (critical instruction sequence) yang tidak boleh diinterupsi. Biasanya, interrupt jenis ini digunakan oleh device controller untuk meminta pelayanan CPU.
e. Interrupt Vector dan Interrupt Chaining
Sebuah mekanisme interupsi akan menerima alamat interrupt handling routine yang spesifik dari sebuah set, pada kebanyakan arsitektur komputer yang ada sekarang ini, alamat ini biasanya berupa sekumpulan bilangan yang menyatakan offset pada sebuah tabel (biasa disebut interrupt vector). Tabel ini menyimpan alamat-alamat interrupt handler spesifik di dalam memori. Keuntungan dari pemakaian vektor adalah untuk mengurangi kebutuhan akan sebuah interrupt handler yang harus mencari semua kemungkinan sumber interupsi untuk menemukan pengirim interupsi.
Akan tetapi, interrupt vector memiliki hambatan karena pada kenyataannya, komputer yang ada memiliki device (dan interrupt handler) yang lebih banyak dibandingkan dengan jumlah alamat pada interrupt vector. Karena itulah, digunakanlah teknik interrupt chaining dimana setiap elemen dari interrupt vector menunjuk/ merujuk pada elemen pertama dari sebuah daftar interrupt handler. Dengan teknik ini, overhead yang dihasilkan oleh besarnya ukuran tabel dan inefisiensi dari penggunaan sebuah interrupt handler (fitur pada CPU yang telah disebutkan sebelumnya) dapat dikurangi, sehingga keduanya menjadi kurang lebih seimbang.
f. Penyebab Interupsi
Interupsi dapat disebabkan berbagai hal, antara lain exception, page fault, interupsi yang dikirimkan oleh device controllers, dan system call Exception adalah suatu kondisi dimana terjadi sesuatu/ dari sebuah operasi didapat hasil tertentu yang dianggap khusus sehingga harus mendapat perhatian lebih, contoh nya pembagian dengan 0 (nol), pengaksesan alamat memori yang restricted atau bahkan tidak valid, dan lain-lain. System call adalah sebuah fungsi pada aplikasi (perangkat lunak) yang dapat mengeksekusikan instruksi khusus berupa software interrupt atau trap.
g. Kegunaan interupsi
  1. Pemulihan kesalahan. Komputer menggunakan bermacam-macam teknik untuk memastikan bahwa semua komponen perangkat keras beroperasi semestinya. Jika kesalahan terjadi, perangkat keras kontrol mendeteksi kesalahan dan memberi tahu CPU dengan mengajukan interupsi.
  2. Debuggin. Penggunaan penting lain dari interupsi adalah sebagai penolong dalam debugging program. Debugging  merupakan sebuah metode yang dilakukan oleh para pemrogram untuk mencari dan mengurangi bug , atau kerusakan di dalam sebuah perangkat keras  sehingga perangkat tersebut bekerja sesuai dengan harapan.
  3. Komunikasi Antarprogram. Perintah interupsi perangkat lunak digunakan oleh sistem operasi untuk berkomunikasi dengan dan mengontrol eksekusi program lain.

2. DEVICE DRIVER

Setiap device driver menangani satu tipe peralatan. Device driver bertugas menerima permintaan abstrak perangkat lunak device independent di atasnya dan melakukan layanan sesuai permintaan itu.
Mekanisme kerja device driver :
  1. Menerjemahkan perintah-perintah abstrak menjadi perintah-perintah konkret.
  2. Begitu telah dapat ditentukan perintah-perintah yang harus diberikan ke pengendali, device driver mulai menulis ke register-register pengendali peralatan.
  3. Setelah operasi selesai dilakukan peralatan, device driver memeriksa kesalahan-kesalahan yang terjadi.
  4. Jika semua berjalan baik, device driver melewatkan data ke perangkat lunak device independent.
  5. Device melaporkan informasi status sebagai pelaporan kesalahan ke pemanggil.
Device Drivers
Device Drivers

3. PERANGKAT LUNAK SISTEM OPERASI DEVICE INDEPENDENT

Fungsi utama perangkat lunak tingkat ini adalah membentuk fungsi-fungsi I/O yang berlaku untuk semua peralatan dan memberi interface seragam ke perangkat lunak tingkat pemakai.
Fungsi-fungsi yang biasa dilakukan antara lain:
  • Interface seragam untuk seluruh driver-driver
  • Penamaan peralatan
  • Proteksi peralatan
  • Memberi ukuran blok peralatan agar bersifat device independent
  • Melakukan buffering
  • Alokasi penyimpanan pada block devices
  • Alokasi pelepasan dedicated devices
  • Pelaporan kesalahan
Device-Independent IO Software
Device-Independent IO Software

Proteksi I/O

Pengguna bisa mengacaukan sistem operasi dengan melakukan instruksi I/O ilegal (mengakses lokasi memori untuk sistem operasi atau melepaskan diri dari prosesor). Untuk mencegahnya kita menganggap semua instruksi I/O sebagai priviledge instruction sehingga mereka tidak bisa mengerjakan instruksi I/O secara langsung ke memori tapi harus lewat sistem operasi terlebih dahulu. Proteksi I/O dikatakan selesai jika pengguna dapat dipastikan tidak akan menyentuh mode monitor. Jika hal ini terjadi proteksi I/O dapat dikompromikan.

4. INTERFACE APLIKASI I/O

Ketika suatu aplikasi ingin membuka data yang ada dalam suatu disk, sebenarnya aplikasi tersebut harus dapat membedakan jenis disk apa yang akan diaksesnya. Untuk mempermudah pengaksesan, sistem operasi melakukan standarisasi cara pengaksesan pada peralatan I/O. Pendekatan inilah yang dinamakan interface aplikasi I/O.
Interface aplikasi I/O melibatkan abstraksi, enkapsulasi, dan software layering. Abstraksi dilakukan dengan membagi-bagi detail peralatan-peralatan I/O ke dalam kelas-kelas yang lebih umum. Dengan adanya kelas-kelas yang umum ini, maka akan lebih mudah untuk membuat fungsi-fungsi standar (interface) untuk mengaksesnya. Lalu kemudian adanya device driver pada masing-masing peralatan I/O, berfungsi untuk enkapsulasi perbedaan-perbedaan yang ada dari masing-masing anggota kelas-kelas yang umum tadi. Device driver mengenkapsulasi tiap -tiap peralatan I/O ke dalam masing-masing 1 kelas yang umum tadi (interface standar). Tujuan dari adanya lapisan device driver ini adalah untuk menyembunyikan perbedaan-perbedaan yang ada pada device controller dari subsistem I/O pada kernel.
Karena hal ini, subsistem I/O dapat bersifat independen dari hardware. Karena subsistem I/O independen dari hardware maka hal ini akan sangat menguntungkan dari segi pengembangan hardware. Tidak perlu menunggu vendor sistem operasi untuk mengeluarkan support code untuk hardware-hardware baru yang akan dikeluarkan oleh vendor hardware.
Contoh IO Interface
Contoh IO Interface
a. Peralatan Block dan Karakter
Peralatan block diharapkan dapat memenuhi kebutuhan akses pada berbagai macam disk drive dan juga peralatan block lainnya. Block device diharapkan dapat memenuhi/mengerti perintah baca, tulis dan juga perintah pencarian data pada peralatan yang memiliki sifat random-access.
Keyboard adalah salah satu contoh alat yang dapat mengakses stream-karakter. System call dasar dari interface ini dapat membuat sebuah aplikasi mengerti tentang bagaimana cara untuk mengambil dan  menuliskan sebuah karakter. Kemudian pada pengembangan lanjutannya, kita dapat membuat library yang dapat mengakses data/pesan per-baris.
b. Peralatan Jaringan
Karena adanya perbedaan dalam kinerja dan pengalamatan dari jaringan I/O, maka biasanya sistem operasi memiliki interface I/O yang berbeda dari baca, tulis dan pencarian pada disk. Salah satu yang banyak digunakan pada sistem operasi adalah interface socket.
Socket berfungsi untuk menghubungkan komputer ke jaringan. System call pada socket interface dapat memudahkan suatu aplikasi untuk membuat local socket, dan menghubungkannya ke remote socket. Dengan menghubungkan komputer ke socket, maka komunikasi antar komputer dapat dilakukan.
c. Jam dan Timer
Adanya jam dan timer pada hardware komputer, setidaknya memiliki tiga fungsi, memberi informasi waktu saat ini, memberi informasi lamanya waktu sebuah proses, sebagai trigger untuk suatu operasi pada suatu waktu. Fungsi fungsi ini sering digunakan oleh sistem operasi. Sayangnya, system call untuk pemanggilan fungsi ini tidak di-standarisasi antar sistem operasi Hardware yang mengukur waktu dan melakukan operasi trigger dinamakan programmable interval timer. Dia dapat di set untuk menunggu waktu tertentu dan kemudian melakukan interupsi. Contoh penerapannya ada pada scheduler, dimana dia akan melakukan interupsi yang akan memberhentikan suatu proses pada akhir dari bagian waktunya.
Sistem operasi dapat mendukung lebih dari banyak timer request daripada banyaknya jumlah hardware timer. Dengan kondisi seperti ini, maka kernel atau device driver mengatur list dari interupsi dengan urutan yang duluan datang yang duluan dilayani.
d. Blocking dan Nonblocking I/O
Ketika suatu aplikasi menggunakan sebuah blocking system call, eksekusi aplikasi itu akan diberhentikan untuk sementara. aplikasi tersebut akan dipindahkan ke wait queue. Dan setelah system call tersebut selesai, aplikasi tersebut dikembalikan ke run queue, sehingga pengeksekusian aplikasi tersebut akan dilanjutkan. Physical action dari peralatan I/O biasanya bersifat asynchronous. Akan tetapi, banyak sistem operasi yang bersifat blocking, hal ini terjadi karena blocking application lebih mudah dimengerti dari pada nonblocking application.

5. KERNEL I/O SUBSYSTEM

Kernel menyediakan banyak service yang berhubungan dengan I/O. Pada bagian ini, kita akan mendeskripsikan beberapa service yang disediakan oleh kernel I/O subsystem, dan kita akan membahas bagaimana caranya membuat infrastruktur hardware dan device-driver. Service yang akan kita bahas adalah I/O scheduling, buffering, caching, spooling, reservasi device, error handling.
a. Scheduling
Untuk menjadualkan sebuah set permintaan I/O, kita harus menetukan urutan yang bagus untuk mengeksekusi permintaan tersebut. Scheduling dapat meningkatkan kemampuan sistem secara keseluruhan, dapat membagi device secara rata di antara proses-proses, dan dapat mengurangi waktu tunggu rata-rata untuk menyelesaikan I/O. Ini adalah contoh sederhana untuk menggambarkan definisi di atas. Jika sebuah arm disk terletak di dekat permulaan disk, dan ada tiga aplikasi yang memblokir panggilan untuk membaca untuk disk tersebut. Aplikasi 1 meminta sebuah blok dekat akhir disk, aplikasi 2 meminta blok yang dekat dengan awal, dan aplikasi 3 meminta bagian tengah dari disk. Sistem operasi dapat mengurangi jarak yang harus ditempuh oleh arm disk dengan melayani aplikasi tersebut dengan urutan 2, 3, 1. Pengaturan urutan pekerjaan kembali dengan cara ini merupakan inti dari I/O scheduling. Sistem operasi mengembangkan implementasi scheduling dengan menetapkan antrian permintaan untuk tiap device. Ketika sebuah aplikasi meminta sebuah blocking sistem I/O, permintaan tersebut dimasukkan ke dalam antrian untuk device tersebut. Scheduler I/O mengatur urutan antrian untuk meningkatkan efisiensi dari sistem dan waktu respon rata-rata yang harus dialami oleh aplikasi. Sistem operasi juga mencoba untuk bertindak secara adil, seperti tidak ada aplikasi yang menerima service yang buruk, atau dapat seperti memberi prioritas service untuk permintaan penting yang ditunda. Contohnya, pemintaan dari subsistem mungkin akan mendapatkan prioritas lebih tinggi daripada permintaan dari aplikasi. Beberapa algoritma scheduling untuk disk I/O akan dijelaskan ada bagian Disk Scheduling.
Satu cara untuk meningkatkan efisiensi I/O subsistem dari sebuah komputer adalah dengan mengatur operasi I/O. Cara lain adalah dengan menggunakan tempat penyimpanan pada memori utama atau pada disk, melalui teknik yang disebut buffering, caching, dan spooling.
b. Buffering
Buffer adalah area memori yang menyimpan data ketika mereka sedang dipindahkan antara dua device atau antara device dan aplikasi. Sedangkan Buffering merupakan proses melembutkan lonjakan-lonjakan kebutuhan pengaksesan masukan/keluaran. Buffering meningkatkan efisien sistem operasi dan kinerja proses. Buffering ada 2 macam:
1. Single buffering
Single buffering merupakan teknik paling sederhana. Ketika proses  memberi perintah untuk perangkat masukan/keluaran, sistem operasi menyediakan buffer memori utama milik sistem operasi untuk operasi.
2. Double buffering.
Peningkatan dapat dibuat dengan dua buffer sistem.Proses dapat ditransfer ke/dari satu buffer sementara sistem operasi mengosongkan (atau mengisi) buffer lain. Teknik ini disebut double buffering atau buffer swapping. Double buffering menjamin proses tidak menunggu operasi I/O. Peningkatan ini harus dibayar dengan peningkatan kompleksitas.
Buffering
(a) Unbuffered input. (b) Buffering in user space. (c) Buffering in the kernel followed by copying to user space. (d) Double buffering in the kernel.
Buffering dilakukan untuk tiga buah alasan. Alasan pertama adalah untuk men-cope dengan kesalahan yang terjadi karena perbedaan kecepatan antara produsen dengan konsumen dari sebuah stream data. Sebagai contoh, sebuah file sedang diterima melalui modem dan ditujukan ke media penyimpanan di hard disk. Kecepatan modem tersebut kira-kira hanyalah 1/1000 daripada hard disk. Jadi buffer dibuat di dalam memori utama untuk mengumpulkan jumlah byte yang diterima dari modem.
Ketika keseluruhan data di buffer sudah sampai, buffer tersebut dapat ditulis ke disk dengan operasi tunggal. Karena penulisan disk tidak terjadi dengan instan dan modem masih memerlukan tempat untuk menyimpan data yang berdatangan, maka dipakai 2 buah buffer. Setelah modem memenuhi buffer pertama, akan terjadi request untuk menulis di disk. Modem kemudian mulai memenuhi buffer kedua sementara buffer pertama dipakai untuk penulisan ke disk. Pada saat modem sudah memenuhi buffer kedua, penulisan ke disk dari buffer pertama seharusnya sudah selesai, jadi modem akan berganti kembali memenuhi buffer pertama dan buffer kedua dipakai untuk menulis. Metode double buffering ini membuat pasangan ganda antara produsen dan konsumen sekaligus mengurangi kebutuhan waktu di antara mereka.
double buffering
Networking may involve many copies of a packet.
Alasan kedua dari buffering adalah untuk menyesuaikan device-device yang mempunyai perbedaan dalam ukuran transfer data. Hal ini sangat umum terjadi pada jaringan komputer, dimana buffer dipakai secara luas untuk fragmentasi dan pengaturan kembali pesan-pesan yang diterima. Pada bagian pengirim, sebuah pesan yang besar akan dipecah ke paket-paket kecil. Paket-paket tersebut dikirim melalui jaringan, dan penerima akan meletakkan mereka di dalam buffer untuk disusun kembali.
Alasan ketiga untuk buffering adalah untuk mendukung copy semantics untuk aplikasi I/O. Sebuah contoh akan menjelaskan apa arti dari copy semantics. Jika ada sebuah aplikasi yang mempunyai buffer data yang ingin dituliskan ke disk. Aplikasi tersebut akan memanggil sistem penulisan, menyediakan pointer ke buffer, dan sebuah integer untuk menunjukkan ukuran bytes yang ingin ditulis. Setelah pemanggilan tersebut, apakah yang akan terjadi jika aplikasi tersebut merubah isi dari buffer, dengan copy semantics, keutuhan data yang ingin ditulis sama dengan data waktu aplikasi ini memanggil sistem untuk menulis, tidak tergantung dengan perubahan yang terjadi pada buffer.
Sebuah cara sederhana untuk sistem operasi untuk menjamin copy semantics adalah membiarkan sistem penulisan untuk mengkopi data aplikasi ke dalam buffer kernel sebelum mengembalikan kontrol kepada aplikasi. Jadi penulisan ke disk dilakukan pada buffer kernel, sehingga perubahan yang terjadi pada buffer aplikasi tidak akan membawa dampak apa-apa. Mengcopy data antara buffer kernel data aplikasi merupakan sesuatu yang umum pada sistem operasi, kecuali overhead yang terjadi karena operasi ini karena clean semantics. Kita dapat memperoleh efek yang sama yang lebih efisien dengan memanfaatkan virtual-memori mapping dan proteksi copy-on-wire dengan pintar.
c. Caching
Sebuah cache adalah daerah memori yang cepat yang berisikan data kopian. Akses ke sebuah kopian yang di-cached lebih efisien daripada akses ke data asli. Sebagai contoh, instruksi-instruksi dari proses yang sedang dijalankan disimpan ke dalam disk, dan ter-cached di dalam memori physical, dan kemudian dicopy lagi ke dalam cache secondary and primary dari CPU. Perbedaan antara sebuah buffer dan ache adalah buffer dapat menyimpan satu-satunya informasi datanya sedangkan sebuah cache secara definisi hanya menyimpan sebuah data dari sebuah tempat untuk dapat diakses lebih cepat.
Caching dan buffering adalah dua fungsi yang berbeda, tetapi terkadang sebuah daerah memori dapat digunakan untuk keduanya. sebagai contoh, untuk menghemat copy semantics dan membuat scheduling I/O menjadi efisien, sistem operasi menggunakan buffer pada memori utama untuk menyimpan data.
Buffer ini juga digunakan sebagai cache, untuk meningkatkan efisiensi I/O untuk file yang digunakan secara bersama-sama oleh beberapa aplikasi, atau yang sedang dibaca dan ditulis secara berulang-ulang.
Ketika kernel menerima sebuah permintaan file I/O, kernel tersebut mengakses buffer cacheuntuk melihat apakah daerah memori tersebut sudah tersedia dalam memori utama. Jika iya, sebuah physical disk I/O dapat dihindari atau tidak dipakai. penulisan disk juga terakumulasi ke dalam buffer cache selama beberapa detik, jadi transfer yang besar akan dikumpulkan untuk mengefisiensikan schedule penulisan. Cara ini akan menunda penulisan untuk meningkatkan efisiensi I/O akan dibahas pada bagian Remote File Access.
d. Spooling dan Reservasi Device
Sebuah spool adalah sebuah buffer yang menyimpan output untuk sebuah device, seperti printer, yang tidak dapat menerima interleaved data streams. Walau pun printer hanya dapat melayani satu pekerjaan pada waktu yang sama, beberapa aplikasi dapat meminta printer untuk mencetak, tanpa harus mendapatkan hasil output mereka tercetak secara bercampur.
Sistem operasi akan menyelesaikan masalah ini dengan meng-intercept semua output kepada printer. Tiap output aplikasi sudah di-spooled ke disk file yang berbeda. Ketika sebuah aplikasi selesai mengeprint, sistem spooling akan melanjutkan ke antrian berikutnya.
Di dalam beberapa sistem operasi, spooling ditangani oleh sebuah sistem proses daemon. Pada sistem operasi yang lain, sistem ini ditangani oleh in-kernel thread. Pada kedua kasus, sistem operasi menyediakan interfacekontrol yang membuat users and system administrator dapat menampilkan antrian tersebut, untuk mengenyahkan antrian-antrian yang tidak diinginkan sebelum mulai di-print.
Untuk beberapa device, seperti drive tapedan printer tidak dapat me-multiplex permintaan I/O dari beberapa aplikasi. Spooling merupakan salah satu cara untuk mengatasi masalah ini. Cara lain adalah dengan membagi koordinasi untuk multiple concurrent ini.
Beberapa sistem operasi menyediakan dukungan untuk akses device secara eksklusif, dengan mengalokasikan proses ke device idle dan membuang device yang sudah tidak diperlukan lagi. Sistem operasi lainnya memaksakan limit suatu file untuk menangani device ini. Banyak sistem operasi menyediakan fungsi yang membuat proses untuk menangani koordinat exclusive akses diantara mereka sendiri.
Layers of the I/O system and the main functions of each layer.
Layers of the I/O system and the main functions of each layer.
e. Error Handling
Sebuah sistem operasi yang menggunakan protected memory dapat menjaga banyak kemungkinan error akibat hardware mau pun aplikasi. Devices dan transfer I/O dapat gagal dalam banyak cara, bisa karena alasan transient, seperti overloaded pada network, mau pun alasan permanen yang seperti kerusakan yang terjadi pada disk controller. Sistem operasi seringkali dapat mengkompensasikan untuk kesalahan transient. Seperti, sebuah kesalahan baca pada disk akan mengakibatkan pembacaan ulang kembali dan sebuah kesalahan pengiriman pada network akan mengakibatkan pengiriman ulang apabila protokolnya diketahui. Akan tetapi untuk kesalahan permanent, sistem operasi pada umumnya tidak akan bisa mengembalikan situasi seperti semula.
Error Handling
(a) A disk track with a bad sector. (b) Substituting a spare for the bad sector. (c) Shifting all the sectors to bypass the bad one.
Sebuah ketentuan umum, yaitu sebuah sistem I/O akan mengembalikan satu bit informasi tentang status panggilan tersebut, yang akan menandakan apakah proses tersebut berhasil atau gagal. Sistem operasi pada UNIX menggunakan integer tambahan yang dinamakan errno untuk mengembalikan kode kesalahan sekitar 1 dari 100 nilai yang mengindikasikan sebab dari kesalahan tersebut. Akan tetapi, beberapa perangkat keras dapat menyediakan informasi kesalahan yang detail, walau pun banyak sistem operasi yang tidak mendukung fasilitas ini.
f. Kernel Data Structure
Kernel membutuhkan informasi state tentang penggunakan komponen I/O. Kernel menggunakan banyak struktur yang mirip untuk melacak koneksi jaringan, komunikasi karakter-device, dan aktivitas I/O lainnya.
UNIX menyediakan akses sistem file untuk beberapa entiti, seperti file user, raw devices, dan alamat tempat proses. Walau pun tiap entiti ini didukung sebuah operasi baca, semantics-nya berbeda untuk tiap entiti. Seperti untuk membaca file user, kernel perlu memeriksa buffer cache sebelum memutuskan apakah akan melaksanakan I/O disk. Untuk membaca sebuah raw disk, kernel perlu untuk memastikan bahwa ukuran permintaan adalah kelipatan dari ukuran sektor disk, dan masih terdapat di dalam batas sektor. Untuk memproses citra, cukup perlu untuk mengkopi data ke dalam memori. UNIX mengkapsulasikan perbedaan-perbedaan ini di dalam struktur yang uniform dengan menggunakan teknik object oriented.
Beberapa sistem operasi bahkan menggunakan metode object oriented secara lebih extensif. Sebagai contoh, Windows NT menggunakan implementasi message-passing untuk I/O. Sebuah permintaan I/O akan dikonversikan ke sebuah pesan yang dikirim melalui kernel kepada I/O manager dan kemudian ke device driver, yang masing-masing bisa mengubah isi pesan. Untuk output, isi message adalah data yang  akan ditulis. Untuk input, message berisikan buffer untuk menerima data. Pendekatan message-passing ini dapat menambah overhead, dengan perbandingan dengan teknik prosedural yang men-share struktur data, tetapi akan mensederhanakan struktur dan design dari sistem I/O tersebut dan menambah fleksibilitas.
Kesimpulannya, subsistem I/O mengkoordinasi kumpulan-kumpulan service yang banyak sekali, yang tersedia dari aplikasi mau pun bagian lain dari kernel. Subsistem I/O mengawasi:
  • Manajemen nama untuk file dan device.
  • Kontrol akses untuk file dan device.
  • Kontrol operasi, contoh: model yang tidak dapat dikenali.
  • Alokasi tempat sistem file.\
  • Alokasi device.
  • Buffering, caching, spooling.
  • I/O scheduling
  • Mengawasi status device, error handling, dan kesalahan dalam recovery.
  • Konfigurasi dan utilisasi driver device.
Client and servers in the M.I.T. X Window System.
Client and servers in the M.I.T. X Window System.

g. Penanganan Permintaan I/O

Di bagian sebelumnya, kita mendeskripsikan handshaking antara device driver dan device controller, tapi kita tidak menjelaskan bagaimana Sistem Operasi menyambungkan permintaan aplikasi untuk menyiapkan jaringan menuju sektor disk yang spesifik.
Sistem Operasi yang modern mendapatkan fleksibilitas yang signifikan dari tahapan-tahapan tabel lookup di jalur diantara permintaan dan physical device controller. Kita dapat mengenalkan device dan driver baru ke komputer tanpa harus meng-compile ulang kernelnya. Sebagai fakta, ada beberapa sistem operasi yang mampu untuk me-load device drivers yang diinginkan. Pada waktu boot, sistem mula-mula meminta bus piranti keras untuk menentukan device apa yang ada, kemudian sistem me-load ke dalam driver yang sesuai; baik sesegera mungkin, mau pun ketika diperlukan oleh sebuah permintaan I/O.
UNIX Sistem V mempunyai mekanisme yang menarik, yang disebut streams, yang membolehkan aplikasi untuk men-assemble pipeline dari kode driver secara dinamis. Sebuah stream adalah sebuah koneksi full duplex antara sebuah device driver dan sebuah proses user-level. Stream terdiri atas sebuah stream head yang merupakan antarmuka dengan user process, sebuah driver end yang mengontrol device, dan nol atau lebih stream modules diantara mereka. Modules dapat didorong ke stream untuk menambah fungsionalitas di sebuah layered fashion. Sebagai gambaran sederhana, sebuah proses dapat membuka sebuah alat port serial melalui sebuah stream, dan dapat mendorong ke sebuah modul untuk memegang edit input. Stream dapat digunakan untuk interproses dan komunikasi jaringan. Faktanya, di Sistem V, mekanisme soket diimplementasikan dengan stream.
Berikut dideskripsikan sebuah lifecycle yang tipikal dari sebuah permintaan pembacaan blok. Sebuah proses mengeluarkan sebuah blocking read system call ke sebuah file deskriptor dari berkas yang telah dibuka sebelumnya. Kode system-call di kernel mengecek parameter untuk kebenaran. Dalam kasus input, jika data telah siap di buffer cache, data akan dikembalikan ke proses dan permintaan I/O diselesaikan. Jika data tidak berada dalam buffer cache, sebuah physical I/O akan bekerja, sehingga proses akan dikeluarkan dari antrian jalan (run queue) dan diletakkan di antrian tunggu (wait queue) untuk alat, dan permintaan I/O pun dijadwalkan. Pada akhirnya, subsistem I/O mengirimkan permintaan ke device driver. Bergantung pada sistem operasi, permintaan dikirimkan melalui call subrutin atau melalui pesan in-kernel.
Device driver mengalokasikan ruang buffer pada kernel untuk menerima data, dan menjadwalkan I/O. Pada akhirnya, driver mengirim perintah ke device controller dengan menulis ke register device control. Device controller mengoperasikan piranti keras device untuk melakukan transfer data. Driver dapat menerima status dan data, atau dapat menyiapkan transfer DMA ke memori kernel. Kita mengasumsikan bahwa transfer diatur oleh sebuah DMA controller, yang meggunakan interupsi ketika transfer selesai.
Interrupt handler yang sesuai menerima interupsi melalui tabel vektor-interupsi, menyimpan sejumlah data yang dibutuhkan, menandai device driver, dan kembali dari interupsi. Device driver menerima tanda, menganalisa permintaan I/O mana yang telah diselesaikan, menganalisa status permintaan, dan menandai subsistem I/O kernel yang permintaannya telah terselesaikan. Kernel mentransfer data atau mengembalikan kode ke ruang alamat dari proses permintaan, dan memindahkan proses dari antrian tunggu kembali ke antrian siap. Proses tidak diblok ketika dipindahkan ke antrian siap. Ketika penjadwal (scheduler) mengembalikan proses ke CPU, proses meneruskan eksekusi pada penyelesaian dari system call.
h. Kinerja I/O


1. Pengaruh I/O pada Kinerja

I/O sangat berpengaruh pada kinerja sebuah sistem komputer. Hal ini dikarenakan I/O sangat menyita CPU dalam pengeksekusian device driver dan penjadwalan proses, demikian sehingga alih konteks yang dihasilkan membebani CPU dan cache perangkat keras. Selain itu, I/O juga memenuhi bus memori saat mengkopi data antara controller dan physical memory, serta antara buffer pada kernel dan application space data. Karena besarnya pengaruh I/O pada kinerja komputer inilah bidang pengembangan arsitektur komputer sangat memperhatikan masalah-masalah yang telah disebutkan diatas.
2. Cara Meningkatkan Efisiensi I/O
  • Menurunkan jumlah alih konteks.
  • Mengurangi jumlah pengkopian data ke memori ketika sedang dikirimkan antara device dan aplikasi.
  • Mengurangi frekuensi interupsi, dengan menggunakan ukuran transfer yang besar, smart controller, dan polling.
  • Meningkatkan concurrency dengan controller atau channel yang mendukung DMA.
  • Memindahkan kegiatan processing ke perangkat keras, sehingga operasi kepada device controller dapat berlangsung bersamaan dengan CPU.
  • Menyeimbangkan antara kinerja CPU, memory subsystem, bus, dan I/O.

3. Implementasi Fungsi I/O

Pada dasarnya kita mengimplementasikan algoritma I/O pada level aplikasi. Hal ini dikarenakan kode aplikasi sangat fleksible, dan bugs aplikasi tidak mudah menyebabkan sebuah sistem crash. Lebih lanjut, dengan mengembangkan kode pada level aplikasi, kita akan menghindari kebutuhan untuk reboot atau reload device driver setiap kali kita mengubah kode. Implementasi pada level aplikasi juga bisa sangat tidak efisien. Tetapi, karena overhead dari alih konteks dan karena aplikasi tidak bisa mengambil keuntungan dari struktur data kernel internal dan fungsionalitas dari kernel (misalnya, efisiensi dari kernel messaging, threading dan locking.
Pada saat algoritma pada level aplikasi telah membuktikan keuntungannya, kita mungkin akan mengimplementasikannya di kernel. Langkah ini bisa meningkatkan kinerja tetapi perkembangannya dari kerja jadi lebih menantang, karena besarnya kernel dari sistem operasi, dan kompleksnya sistem sebuah perangkat lunak. Lebih lanjut , kita harus men-debug keseluruhan dari implementasi in-kernel untuk menghindari korupsi sebuah data dan sistem crash.
Kita mungkin akan mendapatkan kinerja yang optimal dengan menggunakan implementasi yang special pada perangkat keras, selain dari device atau controller. Kerugian dari implementasi perangkat keras termasuk kesukaran dan biaya yang ditanggung dalam membuat kemajuan yang lebih baik dalam mengurangi bugs, perkembangan waktu yang maju dan fleksibilitas yang meningkat. Contohnya, RAID controller pada perangkat keras mungkin tidak akan menyediakan sebuah efek pada kernel untuk mempengaruhi urutan atau lokasi dari individual block reads dan write, meski pun kernel tersebut mempunyai informasi yang spesial mengenai workload yang dapat mengaktifkan kernel untuk meningkatkan kinerja dari I/O.
sumber:https://www.gatewan.com/2016/02/organisasi-perangkat-lunak.html