Rabu, 24 September 2014

Sistem input/output (I/O)

Sistem input/output (I/O)
I/O Sistem Operasi
I/O System merupakan bagian untuk menangani inputan dan outputan dari DCS. Inputan dan outputan tersebut bisa analog atau digital. Inputan/outputan digital seperti sinyal-sinyal ON/OFF atau Start/Stop. Kebanyakan dari pengukuran proses dan outputan terkontrol merupakan jenis analog.
Pengertian Input
Input adalah semua data dan perintah yang dimasukkan ke dalam memori komputer untuk selanjutnya diproses lebih lanjut oleh prosesor. Sebuah perangkat input adalah komponen piranti keras yang memungkinkan user atau pengguna memasukkan data ke dalam komputer, atau bisa juga disebut sebagai unit luar yang digunakan untuk memasukkan data dari luar ke dalam mikroprosesor.
Pengertian Output
Output adalah data yang telah diproses menjadi bentuk yang dapat digunakan. Artinya komputer memproses data-data yang diinputkan menjadi sebuah informasi. Yang disebut sebagai perangkat output adalah semua komponen piranti keras yang menyampaikan informasi kepada orang-orang yang menggunakannya.
I/O system terdiri dari beberapa bagain penting yaitu:
a.    I/O Hardware
b.    Application I/O Interface
c.    Kernel I/O Subsystem
d.    I/O Requests to Hardware Operations
e.    Streams
f.    Performance
A.I/O Hardware
   Secara umum, I/O Hardware terdapat beberapa jenis seperti device penyimpanan
   (disk,tape),   
   transmission device (network card, modem), dan human-interface device (screen, keyboard,mouse). Device tersebut dikendalikan oleh instruksi I/O. Alamat-alamat yang dimiliki device akan digunakan oleh direct I/O instruction dan memory-mapped I/O. Beberapa konsep yang umum digunakan ialah port, bus (daisy chain/ shared direct access), dan controller  (host adapter).
  • Port adalah koneksi yang digunakan oleh device untuk berkomunikasi dengan mesin.
  • Bus adalah koneksi yang menghubungkan beberapa device menggunakan kabel-kabel.
  • Controller adalah alat-alat elektronik yang berfungsi untuk mengoperasikan port, bus, dan device.
B.Application I/O Interface
   Merupakan suatu mekanisme untuk mempermudah pengaksesan, sehingga sistem operasi melakukan standarisasi cara pengaksesan peralatan I/O.
   Interface aplikasi I/O melibatkan abstraksi, enkapsulasi, dan software layering. Device driver mengenkapsulasi tiap-tiap peralatan I/O ke dalam masing-masing 1 kelas yang umum (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. Beberapa hal yang berhubungan dengan Application I/O Interface adalah:
1.Peralatan Block dan Karakter:
  • Perangkat Block termasuk disk drive
  • Perintah termasuk baca, tulis dan cari
  • Raw I/O atau akses file-sistem
  • Pemetaan memori untuk pengaksesan file
  • Perangkat karakter termasuk keyboad, mouse dan serial port
  • Perintahnya seperti get, put
  • Library layered  dalam proses pengeditan
2.Peralatan Jaringan
   Adanya perbedaan pengalamatan dari jaringan I/O, maka 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.
3.Jam dan Timer
   Jam dan timer pada hardware komputer, memiliki tiga fungsi :
  • memberi informasi waktu saat ini
  • memberi informasi lamanya waktu sebuah proses
  • sebagai trigger untuk suatu operasi pada suatu waktu. 
   Fungsi ini sering digunakan oleh sistem operasi. Akan tetapi, system call untuk pemanggilan fungsi  ini tidak di-standarisasi antar sistem operasi. Hardware yang mengukur waktu dan melakukan operasi trigger dinamakan programmable interval timer yang dapat di set untuk menunggu waktu tertentu dan kemudian melakukan interupsi.
C.Kernel I/O subsystems
   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, pooling, reservasi device, error handling.
1.I/O 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.
2. Buffering
   Buffer adalah area memori yang menyimpan data ketika mereka sedang dipindahkan antara dua device atau antara device dan aplikasi. 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.
3. 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.
4.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.
5.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.
6.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.
D.I/O Requests to Hardware Operations
   Salah satu contohnya adalah:
a. Ilustrasi membuka sebuah
–  Device mana tempat file yang akan dibuka
–  Menerjemahkan _nama_ ke dalam device yang dimaksud
–  Membaca secara fisik file yang hendak dibuka
–  Data sudah siap untuk diakses
–  Mengembalikan kontrol pada proses
b.Ilustrasi lain pada waktu boot
   Sistem mula-mula meminta bus piranti keras untuk menentukan device apa yang ada.
 E.Streams
   I/O stream adalah suatu mekanisme pengiriman data secara bertahap dan terus menerus melalui suatu aliran data (dua arah).Biasa digunakan dalam network protocol dan menggunakan  message passingdalam men-transferdata Stream terdiri atas :
  • sebuah stream head yang merupakan antarmuka dengan user process,
  • sebuah driver end yang mengontrol device,
  • dan nol atau lebih stream modules 

F.Performance
   Faktor utama dalam performa sistem : 
  • Permintaan CPU untuk menjalankan device driver, kode kernel I/O
  • Keadaan/state untuk melayani interrupt 
  • Copy data
  • Network traffic khususnya pada beban kinerja 

Improving Perfomance:
  • 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.

Rabu, 23 April 2014

ALGORITMA DAN PEMOGRAMAN I

ALGORITMA

Algoritma adalah urutan aksi-aksi yang dinyatakan dengan jelas dan tidak rancu
untuk memecahkan suatu masalah dalam rentang waktu tertentu. Setiap aksi harus dapat
dikerjakan dan mempunyai efek tertentu.
Algoritma dapat dituliskan dengan banyak cara, mulai dari menggunakan bahasa
alami yang digunakan sehari-hari, simbol grafik bagan alir, sampai menggunakan bahasa
pemograman seperti bahasa C atau C++.

C & C++

Berbicara tentang C++ biasanya tidak lepas dari C, sebagai bahasa pendahulunya.
Pencipta C adalah Brian W. Kerninghan dan Dennis M. Ritchie pada sekitar tahun 1972,
dan sekitar satu dekade setelahnya diciptakanlah C++, oleh Bjarne Stroustrup dari
Laboratorium Bell, AT&T, pada tahun 1983. C++ cukup kompatibel dengan bahasa
pendahulunya C. Pada mulanya C++ disebut “ a better C “. Nama C++ sendiri diberikan
oleh Rick Mascitti pada tahun 1983, yang berasal dari operator increment pada bahasa C.
Keistimewaan yang sangat berari dari C++ ini adalah karena bahasa ini mendukung
pemrograman yang berorientasi objek ( OOP / Object Oriented Programming).

LANGKAH-LANGKAHMENULISKAN PROGRAM DALAM TURBO C++
Langkah-langkahnya :
  1. Bukalah software Turbo C++, akan terlihat tampilan awal Turbo C++  sebagai berikut :















2. Tulis source code program bahasa C++.
      Source code C++ dapat ditulis pada text editor Turbo C++.

3. Kompile file dengan (ALT + C atau pilih submenu Compile)
    Kompile file dijalankan Untuk mengubah source code menjadi sebuah program, kita gunakan compiler.      Setelah source code tercompile, terbentuklah sebuah file objek dengan ekstension “ .obj “. File “ .obj “ ini belum merupakan sebuah program executable.

4. Jalankan Program dengan (CTRL+F9 atau pilih submenu Run)
Setelah kita kompile file yang berisi source code, maka sebagai hasil kompilasi tersebut kita akan mendapatkan suatu file yang bisa dijalankan (executable file). Menjalankan program yang kita buat berarti menjalankan file hasil proses kompilasi tersebut.

5. Untuk menyimpan pilih menu Save As

PENGENALAN C++

Setiap program C++ mempunyai bentuk umum seperti di bawah, yaitu:
# prepocessor directive
void main()
{
// Batang Tubuh Program Utama
}

Penjelasan :

1. Include
Adalah salah satu pengarah prepocessor directive yang tersedia pada C++. Preprocessor selalu dijalankan terlebih dahulu pada saat proses kompilasi terjadi. Bentuk
umumnya :
# include <nama_file>
tidak diakhiri dengan tanda semicolon, karena bentuk tersebut bukanlah suatu bentuk pernyataan, tetapi merupakan prepocessor directive. Baris tersebut menginstrusikan kepada kompiler yang menyisipkan file lain dalam hal ini file yang berakhiran .h(file header) yaitu file yang berisi sebagai deklarasi contohnya:

- # include <iostream.h> : diperlukan pada program yang melibatkan objek cout
- # include <conio.h> : diperlukan bila melibatkan clrscr(),yaitu perintah untuk membersihkan layar.
- # include <iomanip.h> : diperlukan bila melibatkan setw() yang bermanfaat untuk mengatur lebar dari suatu tampilan data.
- # include <math.h> : diperlukan pada program yang menggunkan operasi sqrt () yang bermanfaat untuk operasi matematika kuadrat.

2.Fungsi main ()
Fungsi ini menjadi awal dan akhir eksekusi program C++. main adalah nama judul fungsi. Melihat bentuk seperti itu dapat kita ambil kesimpulan bahwa batang tubuh program utama berada didalam fungsi main( ). Berarti dalam setiap pembuatan program utama, maka dapat dipastikan seorang pemrogram menggunakan minimal sebuah fungsi. Pembahasan lebih lanjut mengenai fungsi akan diterangkan kemudian. Yang sekarang
coba ditekankan adalah kita menuliskan program utama kita didalam sebuah fungsi main().

3. Komentar
Komentar tidak pernah dicompile oleh compiler. Dalam C++ terdapat 2 jenis komentar, yaitu:

Jenis 1 : /* Komentar anda diletakkan di dalam ini
                  Bisa mengapit lebih dari satu baris */
Jenis 2 : // Komentar anda diletakkan disini ( hanya bisa perbaris )

4.Tanda Semicolon
Tanda semicolon “ ; ” digunakan untuk mengakhiri sebuah pernyataan. Setiap pernyataan harus diakhiri dengan sebuah tanda semicolon.

5. Mengenal cout(dibaca : C out)
Pernyataan cout merupakan sebuah objek di dalam C++, yang digunakan untuk mengarahkan data ke dalam standar output (cetak pada layar)
Contoh :
Tanda “ << “ merupakan sebuah operator yang disebut operator “penyisipan/peletakan”

VARIABEL, TIPE DATA

3.1 VARIABEL
Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai tertentu di dalam proses program. Berbeda dengan konstanta yang nilainya selalu tetap, nilai dari suatu variable bisa diubah-ubah sesuai kebutuhan. Untuk memperoleh nilai dari suatu variable digunakan pernyataan penugasan (assignment statement), yang mempunyai sintaks sebagai berikut :

variable = ekspresi ;
Nama dari suatu variable dapat ditentukan sendiri oleh pemrogram dengan aturan sebagai berikut :

1. Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf. Bahasa C ++ bersifat case-sensitive artinya huruf besar dan kecil dianggap berbeda. Jadi antara nim, NIM dan Nim dianggap berbeda.

2. Tidak boleh mengandung spasi.

3. Tidak boleh mengandung symbol-simbol khusus, kecuali garis bawah (underscore). Yang termasuk symbol khusus yang tidak diperbolehkan antara lain
: $, ?, %, #, !, &, *, (, ), -, +, =dsb.

4. Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai.
Contoh penamaan variabel yang benar :
NIM, a, x, nama_mhs, f3098, f4, nilai, budi, dsb.
Contoh penamaan variable yang salah :
%nilai_mahasiswa, 80mahasiswa, rata-rata, ada spasi, penting!, dsb

DEKLARASI

Deklarasi diperlukan bila kita akan menggunakan pengenal (identifier) dalam program. Identifier dapat berupa variable, konstanta dan fungsi.

DEKLARASI VARIABEL

Bentuk umumnya :
Nama_tipe nama_variabel ;
Contoh :

int x; // Deklarasi x bertipe integer
char y, huruf, nim[10]; // Deklarasi variable bertipe char
float nilai; // Deklarasi variable bertipe float
double beta; // Deklarasi variable bertipe double
int array[5][4]; // Deklarasi array bertipe integer

DEKLARASI KONSTANTA 

a. Menggunakan keyword const
Contoh : const float PI = 3.14152965;
Berbeda dengan variable, konstanta bernama tidak dapat diubah jika telah diinisialisasi
b. Menggunakan #define
Contoh : #define PI 3.14152965
Keuntungan menggunakan #define apabila dibandingkan dengan const adalah kecepatan kompilasi, karena sebelum kompilasi dilaksanakan, kompiler pertama kali mencari symbol #define (oleh sebab itu mengapa # dikatakan prepocessor directive) dan mengganti semua Phi dengan nilai 3.14152965.

Senin, 21 April 2014

Pemrograman Pascal



Sejarah Pascal
o  Pascal merupakan bahasa tingkat tinggi (high level language) yang orientasinya pada segala tujuan, dirancang oleh Professor Niklaus Wirth dari Technical University di Zurich, Switzerland. Nama pascal diambil sebagai penghargaan terhadap Blaise Pascal, ahli matematika dan philosopi terkenal abad  dari perancis.
o  Pascal digunakan untuk membuat suatu program terstruktur.
Struktur Pascal
Program namaprogram { nama  program}
Uses                                      { mendefinisikan hardware }
Type                                      { tipe variabel }
Const                                    { konstanta }     
Var                                         { variabel }
Begin                                     {awal program}
                Statemen;           {pernyataan-pernyataan}
End.                                       {akhir program}

Input dan Output
o  Input : Read dan Readln
                Read = menerima inputan dari keyboard tanpa ganti baris
                Readln = menerima inputan dari keyboard dengan ganti baris
o  Output : Write dan Writeln
                Write = mencetak teks tanpa ganti baris
                Writeln = mencetak teks dengan ganti baris

Tipe Data
        o  Menentukan jenis nilai atau data yang disimpan dalam variabel/konstanta.
         o  Tipe data terbagi atas : Dasar dan Bentukan
         o  Tipe data Dasar : Tipe data yang tidak terbentuk dari tipe data lain.
         o  Tipe data Bentukan : Tipe data yang dibentuk dari tipe data lain.





Tipe Data Dasar
o  Char àmenyimpan 1 huruf atau karakter
o  String à menyimpan lebih 1 huruf atau gabungan dengan angka.
o  Integer à menyimpan bilangan bulat
o  Real à menyimpan bilangan pecahan
o  Boolean à menyimpan benar atau salah


Tipe Data integer

Tipe
Jangkauan nilai
Byte
0 .. 255
Word
0 .. 65535
Shortint
-128 .. 127
Integer
-32768 .. 32767
Longint
-2147483648 .. 2147483647


Tipe Data Bentukan
o  Array
o  Record
o  Set
o  File Text
o  Pointer
Variabel
o  Variabel adalah parameter yang digunakan untuk menyimpan data yang bersifat sementara.
                Contoh
                Var
                                A : real;
                                Nama: string;
Konstanta
o  Konstanta adalah parameter yang digunakan untuk menyimpan data yang bersifat tetap.
                Contoh
                Const
                                A = 100;
                                Nama =’Amir’;
Pengenal
Nama yang digunakan dalam pemrograman pascal disebut pengenal (Identifier). Pengenal dapat didefinisikan sendiri (dibuat sendiri). Pengenal dapat berbentuk sebagai pengenal program, pengenal variabel, pengenal konstanta, pengenal prosedur, pengenal fungsi, dan sebagainya.

Aturan Pengenal
o  karakter pertama harus berupa huruf, kedua boleh huruf atau angka. Huruf besar dan huruf kecil diangkap sama.
o  Tidak boleh mengandung blank karakter atau spasi.
o  Tidak boleh mengandung symbol-simbol khusus, kecuali garis bawah
o  Tidak boleh menggunakan kata – kata cadangan (reseved words ) karena sudah di definisikan oleh pascal untuk maksud tertentu.