Minggu, 24 September 2017

Teknik komunikasi I/O

Teknik komunikasi I/O terbagi 3 yaitu:

1. Programmed I/O
Pada saat prosesor mengeksikusi sebuah program dan menjumpai instruksi yang berkaitan dengan modul I/O, prosesor akan mengeksekusi instruksi yang berkaitan ke modul I/O yang bersangkutan. Pada programmed I/O, modul I/O yang bersangkutan akan melakukan aksi yang diminta dan menyetel bit yang sesuai di dalam register status I/O. Secara khusus modul I/O tidak menginterupsi prosesor. Jadi pemeriksaan status modul I/O secara periodik samapai operasi selesai adalah tanggung jawab prosesor. Software I/O ditulis sedemikian rupa sehingga prosesor mengeksekusi instruksi-instruksi yang memberinya control langsung terhadap operasi I/O.
Set instruksi meliputi instruksi I/O dengan katefori:
a. Perintah control
Perintah ini digunkan untuk mengaktivasi perangkat peripheral dan memberitahukan tugas yang diperintahkan padanya.
b. Perintah test
Perintah ini digunakan CPU untuk menguji berbagai kondisi status modul I/O dan peripheralnya. CPU perlu mengetahui perangkat peripheralnya dalam keadaan aktif dan siap digunakan, juga untuk mengetahui operasi – operasi I/O yang dijalankan serta mendeteksi kesalahannya.
c. Perintah read
Perintah pada modul I/O untuk mengambil suatu paket data kemudian menaruh dalam buffer internal. Proses selanjutnya paket data dikirim melalui bus data setelah terjadi sinkronisasi data maupun kecepatan transfernya.
d. Perintah write
Perintah ini kebalikan dari read. CPU memerintahkan modul I/O untuk mengambil data dari bus data untuk diberikan pada perangkat peripheral tujuan data tersebut.





2. Interrupt-driven I/O
Cara kerja teknik interupsi di sisi modul I/O adalah prosesor menerbitkan perintah I/O ke modul dan melanjutkan pekerjaan lainnya. Setelah itu, setelah itu modul I/O akan menginterupsi prosesor untuk meminta layanan saat modul itu telah siap saling bertukar data dengan prosesor.
Interupt-driven I/O lebih efisien jika dibandingkan dengan programmed I/O karena CPU melakukan multitasking beberapa perintah sekaligus sehingga tidak akan membuang waktu. Akan tetapi, interrupt-driven I/O masih menghabiskan waktu prosesor, karena setiap word data yang berangkat dari memori ke modul I/O atau sebaliknya harus melalui prosesor.

Programmed I/O dan interrupt-driven I/O memiliki kelemahan yaitu masih memerlukan intervensi aktif prosesor dalam memindahkan data. Dengan demikian, kedua bentuk I/O tersebut tidak dapat menghindar dari dua kesulitan sebagai berikut:
a.  Kecepatan transfer I/O dibatasi oleh kecepatan prosesor dalam memeriksa dan melayani perangkat,
b.  Prosesor terikat oleh kegiatan transfer I/O.
Sejumlah instruksi harus dieksekusi bagi setiap perpindahanI/O. Apabila terdapat data yang bervolume besar, maka diperlukan sebuah teknik yang lebih efisien yaitu Direct Memory Access (DMA).

3. Direct Memory Access (DMA)
Cara kerja teknik DMA adalah CPU akan mendelegasikan kerja I/O kepada DMA, CPU hanya akan terlibat pada awal proses untuk memberikan instruksi lengkap pada DMA dan akhir proses saja. Dengan demikian CPU dapat menjalankan proses lainnya tanpa banyak terganggu dengan interupsi. Keunggulan DMA adalah penghematan waktu pemrosesan dan peningkatan kinerja I/O.
Pada saat akan membaca atau menulis suatu blok data, prosesor mengeluarkan perintah ke modul DMA dengan cara mengirimkan informasi seperti berikut:
  • Apakah read atau write yang diminta.
  • Alamat perangkat I/O yang terlibat.
  • Lokasi awal dalam memori yang akan dibaca atau ditulis.
  • Jumlah word yang akan dibaca atau ditulis.

Penjelasan Interrupt

Interrupt adalah sinyal dari peralatan luar atau permintaan dari program untuk melaksanakan suatu tugas khusus. Jika interrupt terjadi, maka program dihentikan terlebih dahulu untuk menjalankan rutin interrupt, setelah selesai maka aliran program akan kembali ke pernyataan program sebelum terjadinya interupsi.

Contoh Interrupt misalnya prosesor mentransfer data ke printer. Setelah setiap proses WRITE, prosesor akan pause dan tetap idle sampai printer jalan. Panjang waktu pause dapat dimanfaatkan untuk siklus instruksi lainnya yang tidak melibatkan memori.



Fungsi interupsi adalah sebagai berikut :
1. Interupsi memindahkan pengendalian kepada interrupt service routine melalui interrupt vektor yang berisi alamat dari semua service routine.
2. Arsitektur interrupt harus menyimpan alamat intruksi yang di interrupt.
3. Interrupt yang datang berikutnya dibatalkan ketika interrupt lain sedang diproses untuk mencegah hilangnya suatu interrupt.
4. Trap adalah software generated interrupt yang disebabkan oleh kesalahan atau karena permintaan user.
5. Suatu sistem operasi dikendalikan oleh interrupt.

Tujuan Interupsi :
· Secara umum untuk manajemen pengeksekusian routine intruksi agar efektif dan efisien antar CPU dan modul – modul I/O maupun memori.
· Setiap komponen komputer dapat menjalankan tugasnya secara bersamaan, tetapi kendali terletak pada CPU disamping itu kecepatan eksekusi masing – masing modul berbeda.
· Dapat sebagai sinkronisasi kerja antar modul.


Proses Interrupt:
Jenis-jenis interrupt:
  • Software. Interrupt yang disebabkan oleh software sering disebut dengan system call. Misalnya suatu program ingin mencetak hasil ke printer.
  • Hardware. Terjadi karena adanya aksi pada perangkat keras seperti penekanan tombol keyboard atau menggerakan mouse.
Penyebab terjadinya interupsi :
1. Program
Diakibatkan adanya beberapa kondisi yang terjadi, hasil dari suatu eksekusi.
Contoh: arithmetic overflow, devision by zero, pengeksekusian secara illegal, penggunaan memori yang berlebihan.
2. Timer
Disebabkan oleh timer di dalam prosesor. Hal ini memungkinkan sistem operasi menjalankan fungsi-fungsi tertentu secara regular.          
3. I/O
Disebabkan oleh I/O Controller, baik sebagai tanda bahwa suatu operasi telah selesai, maupun memberi tanda adanya kondisi error. Interrupt I/O ada dua macam, interrupt pendek dan interrupt panjang.
4. Hardware Failure
Disebabkan olch kesalahan hardware, scperti power failure (kegagalan daya) atau memory parity error.
5. Menangani exception, Exception adalah suatu kondisi dimana terjadi sesuatu, atau dari sebuah operasi didapatkan hasil tertentu yang dianggap khusus sehingga harus mendapat perhatian lebih, contohnya, pembagian dengan nol, pengaksesan alamat memori yang restricted atau tidak valid, dll.
6. Mengatur virtual memory paging.
7. Menangani perangkat lunak interupsi.
8. Menangani alur kontrol kernel.

Siklus proses dengan interrupt:
  1. Pada saat komputer dijalankan (boot), komputer menjalankan program inisial (bootstrap program).
  2. Bootstrap mengalokasi sistem operasi pada memory.
  3. Sistem operasi menunggu event berupa interrupt atau trap.

Sabtu, 09 September 2017

Pengertian Jaringan Komputer

Jaringan komputer adalah sebuah sistem yang terdiri dari dua atau lebih komputer yang saling terhubung satu sama lain melalui media transmisi atau media komunikasi sehingga dapat saling berbagi data, aplikasi maupun berbagi perangkat keras komputer. Informasi dan data bergerak melalui kabel-kabel atau tanpa kabel sehingga memungkinkan pengguna jaringan komputer dapat saling bertukar dokumen dan data, mencetak pada printer yang sama dan bersama-sama menggunakan hardware/software yang terhubung dengan jaringan.

Setiap komputer, printer atau periferal yang terhubung dengan jaringan disebut node.
Sebuah jaringan komputer dapat memiliki dua, puluhan, ribuan atau bahkan jutaan node. Masing-masing nodes berfungsi sebagai stasiun kerja (workstations). Salah satu nodes sebagai media jasa atau server, yaitu yang mengatur fungsi tertentu dari nodes lainnya. Pada dasarnya teknologi jaringan komputer itu sendiri merupakan perpaduan anatara tenologi komputer dan juga teknologi komunikasi.

Istilah jaringan komputer sendiri juga dapat diartikan sebagai kumpulan sejumlah terminal komunikasi yang terdiri dari dua komputer atau lebih yang saling terhubung. Tujuan dibangunnya jaringan komputer adalah agar informasi/ data yang dibawa pengirim (transmitter) dapat sampai kepada penerima (receiver) dengan tepat dan akurat.

Jaringan komputer memungkinkan penggunanya dapat melakukan komunikasi satu sama lain dengan mudah. Selain itu, peran jaringan komputer sangat diperlukan untuk mengintegrasi data antar komputer-komputer client sehingga diperolehlah suatu data yang relevan.

Rabu, 26 Juli 2017

UAS Arsip

program uasarsip;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
filestr: text;
c: array [1..100] of string ;
z,x:string;

poschar, p: integer;
zs,huruf: string;
awalspasi: boolean;


nc: integer;
k,cs: string;

m,n:integer;

begin
  { TODO -oUser -cConsole Main : Insert code here }

readln (x);
writeln;

{algoritma mengambil kalimat}
awalspasi:= false;
p:= length (x);
poschar:= 1;
while poschar <= p do
  begin
    huruf:= copy (x, poschar, 1);
    if huruf=' ' then zs:= ''
    else
     if huruf='/' then
       if awalspasi = false then
       begin
         z:= zs;
         awalspasi:= true;
       end
        else z:= z + ' '+ zs
     else
     zs:=zs +huruf;
  poschar:=poschar+1;
  end;
writeln (z);

{algoritma memasukkan tiap kata ke dalam array}
nc:=1;
p:= length (z);
poschar:= 1;
while poschar <= p do
  begin
    k:= copy (z, poschar, 1);
    if k=' ' then
     begin
       c[nc]:=cs;
       cs:='';
       nc:=nc+1
     end
     else
      cs:= cs+k;
  poschar:=poschar+1;
  end;
c[nc]:=cs;

for i:= 1 to nc do
writeln (c[i]);
assign (filestr, 'c:/data/uasoutput.txt');
rewrite (filestr);
writeln(filestr, z);
for i:= 1 to nc do
begin
writeln (filestr,c[i]);
end;
close (filestr);

writeln;

readln;
end.

Selasa, 18 Juli 2017

Algoritma 2 Contoh SOAL Pemrograman

program SoalUas2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var

filestr: text;
x,z:string;
jumlaha: array [1..700] of integer;
poschar,p: integer;
zs,huruf: string;
hurchar:char;
awalspasi: boolean;
ask,m:integer;

begin
  { TODO -oUser -cConsole Main : Insert code here }
assign (filestr,'c:/data/input.txt');
reset (filestr);
while not eof(filestr) do
begin
  readln (filestr, x);
  writeln (x);
end;
close (filestr);

writeln;

awalspasi:= false;
p:= length (x);
poschar:= 1;
while poschar <= p do
  begin
    huruf:= copy (x, poschar, 1);
    if huruf=' ' then zs:= ''
    else
     if huruf='/' then
       if awalspasi = false then
       begin
         z:= zs;
         awalspasi:= true;
       end
        else z:= z + ' '+ zs
      else
      zs:=zs +huruf;
  poschar:=poschar+1;
  end;
writeln (z);

assign (filestr,'c:/data/output.txt');
rewrite (filestr);
writeln(filestr, z);
close (filestr);

writeln;

p:= length (z);
for poschar:= 1 to p do
begin
  hurchar:= z[poschar];
  for m:= 32 to 126 do
  begin
    ask:= ord(hurchar);
    if m=ask then jumlaha[ask]:= jumlaha[ask]+1;
  end;
end;


for m:= 32 to 126 do
  begin
    if jumlaha[m]>0 then
    writeln (chr(m),' ',jumlaha[m]);
  end;


readln;


end.




Algoritma 1 Contoh SOAL Pemrograman

program soalUAS;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
filestr: text;
a: array [1..100] of string ;
jumlaha: array [1..100] of integer;
ketemu,poschar,p: integer;
zs,huruf: string;
awalspasi: boolean;
i,j:integer;
nilaicari:string;
z,x:string;

begin
  { TODO -oUser -cConsole Main : Insert code here }
assign (filestr,'c:/data/input.txt');
reset (filestr);
while not eof(filestr) do
begin
  readln (filestr, x);
  writeln (x);
end;
close (filestr);

writeln;

awalspasi:= false;
p:= length (x);
poschar:= 1;
while poschar <= p do
  begin
    huruf:= copy (x, poschar, 1);
    if huruf=' ' then zs:= ''
    else
     if huruf='/' then
       if awalspasi = false then
       begin
         z:= zs;
         awalspasi:= true;
       end
        else z:= z + ' '+ zs
      else
      zs:=zs +huruf;
  poschar:=poschar+1;
  end;
writeln (z);

assign (filestr,'c:/data/output.txt');
rewrite (filestr);
writeln(filestr, z);
close (filestr);

writeln;

p:= length (z);
poschar:= 2;
i:=2;

huruf:= copy (z, 1, 1);
a[1]:= huruf;
jumlaha[1]:= 1;
while poschar <=p do
begin
    huruf:= copy (z, poschar, 1);   {poschar +1}
    nilaicari:= huruf;
    j:=i-1;
  ketemu:=0;
  repeat
    begin
        if nilaicari = a[j] then
    begin
            jumlaha[j]:= jumlaha[j]+1;
      ketemu:=1;
    end;
        j:=j-1;
  end;
    until ((ketemu=1) or (j=0)) ;

  if ketemu=0 then
  begin
        a[i]:= nilaicari;
        jumlaha[i]:= 1;
        i:= i+1;

  end;
  poschar:= poschar +1;

end;



for j:= 1 to i-1 do
writeln (a[j],' ',jumlaha[j]);
readln;


end.




Senin, 10 Juli 2017

Algoritma Kombinasi Bilangan Bulat

Tuliskan algoritma untuk menampilkaan semua solusi bilangan bulat tidak negatif dari persamaan berikut:
x+y+z = 25
yang dalam hal ini, x>= 0, y>=0 dan z>=0

jawab:

var
x,y,z: integer;


begin
for x:= 0 to 5 do
    for y:= 0 to 5 do
        for z:= 0 to 5 do
         if x+y+z = 5 then
          writeln (x,' ',y,' ',z);

readln;
end.


Kamis, 06 Juli 2017

Algoritma Menghitung Jarak Tanggal Menggunakan Pascal

program jaraktanggal;

{$APPTYPE CONSOLE}

uses
  SysUtils;
type tanggal = record
                hh: integer;
                bb: integer;
                tt: integer;
               end;

var
tanggal1: tanggal;
tanggal2: tanggal;
Rtanggal: tanggal;
begin
  { TODO -oUser -cConsole Main : Insert code here }
write ('masukkan tanggal pertama berdasarkan hari-bulan-tahun: ');
read (tanggal1.hh); read(tanggal1.bb); read(tanggal1.tt);
write ('masukkan tanggal kedua berdasarkan hari-bulan-tahun: ');
read (tanggal2.hh); read(tanggal2.bb); readln(tanggal2.tt);

if tanggal2.hh>tanggal1.hh then
  Rtanggal.hh:= tanggal2.hh-tanggal1.hh
  else
  begin
    tanggal2.hh:=tanggal2.hh+ 30;
    rtanggal.hh:= tanggal2.hh-tanggal1.hh;
    tanggal2.bb:=tanggal2.bb-1
  end;

if tanggal2.bb> tanggal1.bb then
 rtanggal.bb:= tanggal2.bb-tanggal1.bb
 else
   begin
   rtanggal.bb:= tanggal2.bb+12-tanggal1.bb;
    tanggal2.tt:=tanggal2.tt-1;
    end;

Rtanggal.tt:= tanggal2.tt - tanggal1.tt;
writeln ('jarak tanggal pertama dengan kedua adalah, ', Rtanggal.hh,'-', Rtanggal.bb, '-', Rtanggal.tt);
readln;
end.


Rabu, 05 Juli 2017

konversi ke hari menggunkan Pascal

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type hari = record
            jj: real;
            mm: real;
            dd: real;
            end;
var
h: hari;
konv: real;

begin
  { TODO -oUser -cConsole Main : Insert code here }
write ('jam: '); readln (h.jj);
write ('menit: '); readln (h.mm);
write ('deik: '); readln (h.dd);
konv:= (h.jj/24) + (h.mm/24*1/60) + (h.dd/24*1/60*1/60);
writeln (konv:2:2);
readln;
end.

Rabu, 21 Juni 2017

Penjelasan dan Contoh Soal Teorema Bayes

A. Pengertian Teorema Bayes
Teorema Bayes dikemukakan oleh seorang pendeta Presbyterian Inggris pada tahun 1763 yang bernama Thomas Bayes. Teorema Bayes ini kemudian disepurnakan oleh Laplace. Teorema Bayes digunakan untuk menghitung probabilitas terjadinya suatu peistiwa berdasarkan pengaruh yang didapat dari hasil observasi.

Teorema ini menerangkan hubungan antara probabilitas terjadinya peristiwa A dengan syarat peristiwa B telah terjadi dan probabilitas terjadinya peristiwa B dengan syarat peristiwa A telah terjadi.Teorema ini didasarkan pada prinsip bahwa tambahan informasi dapat memperbaiki probabilitas.

B. Teorema Bayes
Misalkan {B1, B2,...,Bn} suatu himpunan  kejadian  yang  merupakan  suatu  sekatan  runag  sampel S dengan P(Bi) ≠ 0 untuk i = 1, 2,...n. Dan misalkan A suatu kejadian sembarang dalam S dengan P(A) ≠ 0.












C. Contoh Soal
Suatu mata kuliah teori probabilitas  diikuti oleh 50 mahasiswa tahun ke 1, 15 mahasiswa tahun ke 2 dan 10 mahasiswa tahun ke 3. Diketauhi mahasiswa yang mendapatkan nilai A adalah 10 orang dari mahsiswa tahun ke 1, 8 orang dari mahasiswa tahun ke 2 dan 5 orang mahasiswa tahun ke 3. Bila seorang mahasiswa dipilih secara acak ,berapakah peluang dia:
a. Mendapatkan nilai A
b. Mahasiswa tahun ke 1 bila diketauhi dia mendapatkan A

Diketahui
1. Jumlah mahasiswa yang mengikuti mata kuliah teori proababilitas adalah 75 orang
2. P(M1), atau peluang mahasiswa adalah mahasiswa tahun ke-1 yaitu 50/75
3. P(M2), atau peluang mahasiswa adalah mahasiswa tahun ke-2 yaitu 15/75
4. P(M3), atau peluang mahasiswa adalah mahasiswa tahun ke-3 yaitu 10/75
5. P(A|M1) atau peluang mahasiswa tahun ke-1 yang mendapatkan nilai A sebesa 10/50
6. P(A|M2) atau peluang mahasiswa tahun ke-2 yang mendapatkan nulai A yaitu 8/15
7. P(A|M3) atau peluang mahasiswa tahun ke-3 yang mendapatkan nulai A yaitu 5/10

a.  P(A)= ∑ P(Mi)xP(A|Mi)
    = (P(M1)xP(A|M1) + P(M2)xP(A|M2) + P(M3)xP(A|M3))
    =(50/75X10/50 + 15/75X8/15 + 10/75X5/10)
    =23/75
b. Mahasiswa tahun ke 1 bila diketauhi dia mendapatkan A
P(M1|A)    = (P(M1) x P(A|M1))/P(A)
    =(50/75 x 10/50)/(23/75)
    =10/23

Rabu, 14 Juni 2017

SOAL 1 dan SOAL 2 UAS ALPRO SMT2

var
a,b,c: array [0..100] of string;
filestr: text;
o,x,p,h,q,i,j,n:integer;
nbaris, poschar: integer;
cs,bs,k,temp: string ;
spasi: boolean;

begin
  { TODO -oUser -cConsole Main : Insert code here }
{algoritma baca teks soal}
assign (filestr,'c:/data/nimsaudarainput.txt');
reset (filestr);
nbaris:=0;
while not eof(filestr) do
begin
  readln (filestr, a[nbaris]);
  writeln (a[nbaris]);
  nbaris:=nbaris+1;
end;
close (filestr);

{algoritma mengolah teks menjadi frasa kata}
for x:= 0 to nbaris-2 do
begin
  spasi:= false;
  p:= length (a[x]);
  poschar:= 1;
  while poschar < p do
  begin
    k:= copy (a[x], poschar, 1);
    if k=' ' then bs:= ''
    else
     if k='/' then
       if spasi=false then
       begin
         b[x]:= bs;
         spasi:=true;
       end
        else b[x]:= b[x] + ' '+ bs
     else
      bs:=bs +k;
  poschar:=poschar+1;
  end;
writeln (b[x]);
end;

{algoritma menyimpan frasa kata ke array b}
assign (filestr,'c:/data/nimsaudaraoutput1.txt');
rewrite (filestr);
for x:=0 to nbaris do
begin
  writeln(filestr, b[x]);
end;
close (filestr);

{algoritma menyimpan kata ke array c}
q:=0;
for x:= 0 to nbaris-2 do
begin
  p:= length (b[x]);
  poschar:= 1;
  while poschar <= p do
  begin
    k:= copy (b[x], poschar, 1);
    if k=' ' then
     begin
       c[q]:=cs;
       cs:='';
       q:=q+1
     end
     else
      begin
      cs:= cs+k;
      c[q]:=cs;
      end;
   poschar:=poschar+1;
  end;
  c[q]:=cs;
  q:=q+1;
  cs:='';
end;

{algoritma membaca array c}
for x:= 0 to q-1 do
writeln ('c[',x,']: ', c[x]);

writeln;

{algoritma mengurut kata di array c}
for i:= 2 to q do
 for j:= 1 to q-i do
  if c[j]> c[j+1] then
  begin
   temp:= c[j+1];
   c[j+1]:= c[j];
   c[j]:=temp;
  end;

 {algoritma membaca array c setelah diurutkan}
for  x:= 0 to q-1 do
begin
  writeln ('c[',x,']: ', c[x]);
end;


readln;
end.

Lihat Juga

Mengenal Keempat Tipe Kecerdasan Buatan (AI)

Kecerdasan Buatan (AI) telah menjadi topik utama dalam banyak diskusi teknologi dan inovasi saat ini. Namun, bagaimana kita mendefinisikan d...

Halaman