Showing posts with label Pemprograman. Show all posts
Showing posts with label Pemprograman. Show all posts

Perbedaan Antara Aplikasi Monolitik dan Microservice

7:56 AM Add Comment

 

Aplikasi monolitik dan microservice adalah dua pendekatan arsitektur perangkat lunak yang berbeda dalam pengembangan aplikasi. Kedua jenis aplikasi memiliki kelebihan dan kekurangan masing-masing, dan pilihan antara keduanya tergantung pada kebutuhan bisnis dan teknis yang spesifik.


1. Aplikasi Monolitik

Aplikasi Monolitik

Aplikasi monolitik adalah aplikasi yang dibangun sebagai satu kesatuan besar dan biasanya berjalan dalam satu proses. Ini berarti bahwa semua komponen dan fungsionalitas aplikasi tersebut saling terhubung satu sama lain dalam satu kode basis. Ini adalah pendekatan arsitektur yang paling umum digunakan sejak lama dan masih digunakan hingga saat ini.


Keuntungan dari aplikasi monolitik adalah mudah dipahami dan dikelola, serta lebih mudah diimplementasikan. Hal ini karena kode basis hanya terdiri dari satu aplikasi, sehingga mudah untuk mengembangkan, menguji, dan memperbaiki masalah. Selain itu, deployment aplikasi monolitik juga lebih mudah karena hanya memerlukan satu mesin server.


Namun, kelemahan dari aplikasi monolitik adalah sulit untuk mengembangkan dan memelihara karena ukuran yang besar. Karena semua fitur dan fungsi terintegrasi satu sama lain, maka perubahan pada satu bagian dapat mempengaruhi seluruh aplikasi. Selain itu, sulit untuk meningkatkan skalabilitas aplikasi secara horizontal karena setiap kali harus menambahkan mesin server baru.

Baca juga Perbedaan Asynchronous dan Synchronous


2. Microservice

Aplikasi Microservice

Microservice adalah aplikasi yang terdiri dari beberapa bagian kecil atau modul independen, yang dikenal sebagai layanan. Setiap layanan terpisah dan menjalankan fungsionalitasnya sendiri. Layanan ini biasanya dibangun dengan teknologi yang berbeda dan menggunakan API untuk berkomunikasi satu sama lain.


Keuntungan dari aplikasi microservice adalah mudah untuk dikembangkan dan dipelihara karena setiap layanan dapat diimplementasikan, diuji, dan dikembangkan secara independen. Hal ini juga memungkinkan tim pengembang untuk fokus pada area tertentu dan membuat perubahan tanpa mempengaruhi layanan lainnya. Selain itu, aplikasi microservice juga lebih mudah diintegrasikan dengan teknologi baru dan memungkinkan untuk meningkatkan skalabilitas aplikasi secara horizontal.


Namun, kelemahan dari aplikasi microservice adalah sulit untuk dikonfigurasi dan diimplementasikan karena terdiri dari beberapa layanan yang harus dihubungkan satu sama lain dengan benar. Selain itu, diperlukan tim yang terampil untuk mengelola dan mengembangkan layanan aplikasi microservice.

Baca juga Apa saja yang dipelajari di Teknik Informatika


Kesimpulan

Kedua pendekatan arsitektur memiliki kelebihan dan kekurangan masing-masing. Jika bisnis Anda membutuhkan aplikasi yang mudah dipahami, mudah dikelola, dan tidak memerlukan skala yang tinggi, aplikasi monolitik bisa menjadi pilihan yang tepat. Namun, jika Anda memerlukan aplikasi yang dapat dengan mudah ditingkatkan skalabilitasnya dan mudah diintegrasikan dengan teknologi baru, aplikasi microservice mungkin lebih cocok. 


Penting untuk mempertimbangkan antara kebutuhan bisnis dan teknis Anda ketika memilih pendekatan arsitektur perangkat lunak. Beberapa faktor yang harus dipertimbangkan antara lain kompleksitas aplikasi, kecepatan pengembangan, waktu pemasaran, kemampuan untuk mengelola dan memelihara aplikasi, dan kemampuan untuk meningkatkan skalabilitas aplikasi.


Jika Anda memutuskan untuk menggunakan arsitektur microservice, ada beberapa praktik terbaik yang harus diperhatikan. Pastikan setiap layanan dikembangkan dan diuji dengan baik sebelum diintegrasikan dengan layanan lainnya. Hal ini dapat membantu mengurangi risiko kesalahan dan meningkatkan kemampuan untuk mengembangkan dan memelihara aplikasi.


Selain itu, pastikan untuk menggunakan teknologi dan alat yang tepat untuk memudahkan manajemen dan pemantauan layanan, seperti Kubernetes atau Docker. Ini dapat membantu mempercepat pengembangan dan memudahkan manajemen layanan aplikasi.


Kesimpulannya, baik aplikasi monolitik maupun microservice memiliki kelebihan dan kekurangan masing-masing. Pilih pendekatan arsitektur yang sesuai dengan kebutuhan bisnis dan teknis Anda, dan pastikan untuk mengikuti praktik terbaik yang tepat untuk memudahkan pengembangan, manajemen, dan pemeliharaan aplikasi.

SISTEM PENGELOLAAN DATA RUMAH SAKIT BERBASIS JAVA CLI

5:59 PM Add Comment

Rumah sakit merupakan salah satu sarana pelayanan kesehatan dengan memberdayakan berbagai kesatuan personel terlatih dan terdidik dalam menghadapi dan menangani masalah medik untuk pemulihan dan pemeliharaan kesehatan yang baik. Teknologi informasi memiliki peran penting dalam pelayanan kesehatan saat ini. Dimana kualitas pengolahan informasi merupakan faktor penting bagi keberhasilan institusi pelayanan kesehatan. 

Sistem informasi yang baik dapat mendukung alur kerja klinis dengan berbagai cara yang akan memberikan kontribusi untuk perawatan pasien yang lebih baik. Sistem informasi mempunyai 3 peranan penting dalam mendukung proses pelayanan kesehatan, yaitu: mendukung proses dan operasi pelayanan kesehatan, mendukung pengambilan keputusan staf dan manajamen serta mendukung berbagai strategi untuk keunggulan kompetitif.

Sistem pengelolaan data rumah sakit (SPDRS) dapat dicirikan dengan fungsinya melalui informasi dan jenis layanan yang ditawarkan. Untuk mendukung perawatan pasien dan administrasinya, SPDRS mendukung penyediaan informasi, terutama tentang pasien, dalam cara yang benar, relevan dan terbarukan, mudah diakses oleh orang yang tepat pada tempat/lokasi yang berbeda dan dalam format yang dapat digunakan. Transaksi data pelayanan dikumpulkan, disimpan, diproses, dan didokumentasikan untuk menghasilkan informasi tentang kualitas perawatan pasien dan tentang kinerja rumah sakit serta biaya. Ini mengisyaratkan bahwa sistem informasi rumah sakit harus mampumengkomunikasikan data berkualitas tinggi antara berbagai unit di rumah sakit.

Baca juga Sejarah Singkat Java

Analisis

Perancangan kebutuhan aplikasi pengolahan data Rumah Sakit ini dapat memudahkan Administrator rumah sakit. Aplikasi ini memiliki berbagai fungsi yang digunakan untuk mendukung kemudahan pengelolaan data
Aplikasi yang akan dibuat terdiri dari :
  1. Aplikasi ini dapat mengolah data Pasien
  2. Aplikasi ini dapat mengelolah data Transaksi


Adapun analisis context diagram untuk memperlihatkan ekternal entity yang berinteraksi dengan sistem informasi. Eksternal entity diilustrasikan sebagai segiempat, sedangkan lingkaran di tengah merupakan proses sebagai pusat sistem informasi. Untuk lebih jelasnya mengenai context diagram dapat dilihat pada gambar dibawah ini.

Context diagram sistem rumah sakit

No.

Proses

Masukan

Keluaran

Logika proses

1

Pendaftaran Pasien

Input Nama_ lengkap,jenis_ kelamin, alamat,no_tlp,keluhan

 

Informasi data pendaftar

Begin

Read (nama_lengkap)

Read (Jenis_kelamin)

Read (Alamat)

Read (no_tlp)

Read (keluhan)

If data==valid then

Save data

End if

End

2.

Info Pasien

 

Informasi data_pasien

Begin

While data_pasien

Write (data_pasien)

End while

End

3.

Info kamar

 

Informasi data_kamar

Begin

While data_kamar

Write (data_kamar)

End while

End

4.

Transaksi

Input no_pasien, kelas_kamar, hari_rawat, pengantian_inpus,jumlah uang

Informasi data_pasien, data_kamar, data_transaksi

Begin

Read (no_pasien)

Read (kelas_kamar)

Read (hari_rawat)

Read (pengantian_inpus)

Write (data_pasien)

Write (data_kamar)

Write (data_transaksi)

Read(jumlah_bayar)

If(jumlah_bayar > data_transaksi)

    Kembalian=jumlah_bayar-data_transaksi

Write(kembalian)

End if

Write ( “Terimakasih”)

End

Baca juga Set dan Get pada Java

Implementasi

Adapun untuk script aplikasinya adalah sebagai berikut :

package RumahSakit;


import java.util.ArrayList;

import java.util.Arrays;

import java.util.Scanner;


public class RumahSakit{

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        Scanner tiga = new Scanner (System.in);

        Scanner satu = new Scanner (System.in);

        Scanner dua = new Scanner (System.in);

        char balik;

        String kamar    [] = {"VIP A","VIP B","KELAS 1","KELAS 2","KELAS 3"};

        int tarif_kamar [] = {1475000,1275000,785000,650000,275000};

        String nama     [] = {};

        String jk       [] = {};

        String alamat   [] = {};

        String hp       [] = {};

        String keluhan  [] = {};

        String status   [] = {};

        String penyakit;

        int jum = 1;

        

        do{

            

            System.out.println("\n--------------- Aplikasi Rumah Sakit Umum ---------------");

            System.out.println(" Menu Utama : ");

            System.out.println("1. Pendaftaran pasien ");

            System.out.println("2. Info Pasien ");

            System.out.println("3. Info Kamar ");

            System.out.println("4. Pembayaran ");

            System.out.println("5. Selesai");

            System.out.print("\nSilahkan pilih menu utama yang ada : ");

            int menu = input.nextInt();

                      

           

            if (menu==1) {     

                

                    System.out.println("---------------------------------------------------------");

                    System.out.println("Pendaftaran Pasien ");

                    System.out.println("---------------------------------------------------------");

                    System.out.println("Silahkan isi data dibawah ini : ");  

                    System.out.println("\nNo. Pasien            : "+(jum));

                

                    System.out.print("Nama Lengkap          : ");

                    String in_nama = tiga.nextLine();

                    ArrayList<String> myList = new ArrayList<>(Arrays.asList(nama));

                    myList.add(in_nama);

                    nama = myList.toArray(nama);

                

                    System.out.print("Jenis Kelamin         : ");

                    String in_jk = satu.nextLine();

                    ArrayList<String> myjk = new ArrayList<>(Arrays.asList(jk));

                    myjk.add(in_jk);

                    jk = myjk.toArray(jk);

                

                    System.out.print("Alamat                : ");

                    String in_alamat = satu.nextLine();

                    ArrayList<String> myalamat = new ArrayList<>(Arrays.asList(alamat));

                    myalamat.add(in_alamat);

                    alamat = myalamat.toArray(alamat);

                

                    System.out.print("No Handphone          : ");

                    String in_hp = dua.nextLine();

                    ArrayList<String> myhp = new ArrayList<>(Arrays.asList(hp));

                    myhp.add(in_hp);

                    hp = myhp.toArray(hp);

         

                    System.out.println("1. Sesak Nafas");

                    System.out.println("2. Kencing Manis");

                    System.out.println("3. Stroke");

                    System.out.print("Keluhan               : ");

                    int in_keluh = tiga.nextInt();

                    if (in_keluh==1) {

                        penyakit="Sesak Nafas";

                        ArrayList<String> mykeluh = new ArrayList<>(Arrays.asList(keluhan));

                        mykeluh.add(penyakit);

                        keluhan = mykeluh.toArray(keluhan);

                    } else if (in_keluh==2) {

                        penyakit="Kencing Manis";

                        ArrayList<String> mykeluh = new ArrayList<>(Arrays.asList(keluhan));

                        mykeluh.add(penyakit);

                        keluhan = mykeluh.toArray(keluhan);

                    } else if (in_keluh==3){

                        penyakit="Stroke";

                        ArrayList<String> mykeluh = new ArrayList<>(Arrays.asList(keluhan));

                        mykeluh.add(penyakit);

                        keluhan = mykeluh.toArray(keluhan);

                    }

                    

                    ArrayList<String> array_status = new ArrayList<>(Arrays.asList(status));

                    array_status.add("Belum Dibayar");

                    status = array_status.toArray(status);

                    System.out.println("---------------------------------------------------------");

            

                jum+=1;   

            

            } else if (menu==2){

                System.out.println("---------------------------------------------------------");

                System.out.println("Data Pasien ");

                System.out.println("---------------------------------------------------------");

                for (int i = 0; i < nama.length ; i++) {

                    System.out.println("Nomor Pasien        : " + (i+1));

                    System.out.println("Nama                : " + nama  [i]);

                    System.out.println("Jenis Kelamin       : " + jk    [i]);

                    System.out.println("Alamat              : " + alamat[i]);

                    System.out.println("No. Handphone       : " + hp    [i]);

                    System.out.println("Keluhan             : " + keluhan[i]);

                    System.out.println("Status Pembayaran   : " + status[i]);

                    System.out.println("--------------------------------------------------------");

                }

            } else if (menu==3){

                System.out.println("---------------------------------------------------------");

                System.out.println("Info Tipe Kamar & Tarif");

                System.out.println("---------------------------------------------------------");

                for (int i = 0; i < kamar.length ; i++) {

                    System.out.println((i+1)+". "+ kamar[i]+ "\t Tarif : Rp."+ tarif_kamar[i]);

                }

                System.out.println("---------------------------------------------------------");

            

            } else if (menu==4){

                int pelayanan = 50000;

                System.out.println("---------------------------------------------------------");

                System.out.println("Pembayaran ");

                System.out.println("---------------------------------------------------------");

                System.out.print("Masukkan No. Pasien       : ");

                int info = input.nextInt();

                System.out.println("Tipe kamar pasien          ");

                for (int i = 0; i < kamar.length; i++) {

                    System.out.println((i+1)+". "+kamar[i]);

                }

                System.out.print("Ketik nomor tipe kamar ---> ");

                int tipekamar = input.nextInt();

                System.out.print("Berapa hari pasien dirawat: ");

                int hari = input.nextInt();

                System.out.print("Banyak penggantian infus  : ");

                int infus = input.nextInt();

           

                System.out.println("\n------------- Bukti Transaksi Rumah Sakit --------------");

                System.out.println("No. Pasien              : " + info);

                System.out.println("Nama Pasien             : " + nama[info-1]);

                System.out.println("Jenis Kelamin           : " + jk[info-1]);

                System.out.println("Alamat                  : " + alamat[info-1]);

                System.out.println("Tipe Kamar              : " + kamar[tipekamar-1]);

                System.out.println("Biaya Kamar             : " + "Rp." + (tarif_kamar[tipekamar-1]*hari));

                System.out.println("Biaya Infus             : " + "Rp." + (infus*75000));

                System.out.println("Biaya Pelayanan         : " + "Rp." + pelayanan);

                System.out.println("Total Biaya             : " + "Rp." + ((tarif_kamar[tipekamar-1]*hari)+(infus*75000)+(pelayanan)));

                System.out.println("---------------------------------------------------------");

                System.out.print("Masukkan jumlah uang anda : Rp.");

                int bayar = input.nextInt();

                    if(bayar < (tarif_kamar[tipekamar-1]*hari)+(infus*75000)+(pelayanan)){

                        System.out.println("\nNominal uang anda kurang dari total biaya yang ada");

                        System.out.println("Silahkan ambil kembali uang anda & melakukan pembayaran ulang");

                        System.out.println("---------------------- Terima Kasih ---------------------");

                        status[info-1] = "Belum lunas";

                    } else if (bayar == (tarif_kamar[tipekamar-1]*hari)+(infus*75000)+(pelayanan)) {

                        System.out.println("\n---------------------- Terima Kasih ---------------------");

                        status[info-1] = "Lunas";

                    } else if (bayar > (tarif_kamar[tipekamar-1]*hari)+(infus*75000)+(pelayanan)){

                        System.out.println("\nKembalian anda sebesar Rp." + (bayar - (tarif_kamar[tipekamar-1]*hari)+(infus*75000)+(pelayanan)));

                        System.out.println("\n---------------------- Terima Kasih ---------------------");

                        status[info-1] = "Lunas";

                    }   

                

            } else if (menu==5){

                break;

            }

            

            System.out.print("Kembali ke menu utama (y/t): ");

            balik = input.next().charAt(0);

        } while(balik == 'y');

    }

}


Hasil dan tampilan aplikasi

Tampilan Awal

Tampilan Pendaftaran Pasien

Tampilan Infomasi Pasien

Tampilan Informasi Kamar

Tampilan Transaksi
Baca juga Constructor pada java

Kesimpulan

Perancangan Sistem Pengolahan rumah sakit ini merupakan pengembangan dari sistem yang sedang berjalan dan diperbaiki dengan sistem yang telah selesai dibangun yaitu menggunakan bahasa pemprograman java dan berbasis console. Dengan menggunakan aplikasi yang setelah selesai dibangun menggunakan console ini memeliki berbagai kelebihan yaitu kompatibel di berbagai device baik windows, linux, mac os, android, dll, karena menggunakan console sebagai pratformnya. Selain itu size yang terbilang sangat kecil bisa mempercat dan mempermudah proses penginputan data, sehingga tercapainya efisiensi.



APA ITU METODE MUTUAL EXCLUSION ?

9:53 PM Add Comment

MUTUAL EXCLUSION

 

Pengertian Mutual Exclusion 

Pada system komputer terdapat sumber daya yang tidak dapat dipakai bersama pada saat yang bersamaan seperti pada penggunaan printer, Sumber daya seperti hanya dapat menjalankan satu proses pada suatu saat, sumber daya ini disebut sumber daya kritis. Program yang menggunakan sumber daya kritis disebut sedang memasuki critical region / section.

mutual exclusion adalah suatu metode untuk menjamin hanya satu proses saja yang berjalan dalam suatu critical region / section. Mutual exclusion juga dapat diartikan sebagai jaminan hanya sebuah proses yang mengakses sumber daya pada suatu interval waktu tertentu. Proses proses yang lain dilarang mengerjakan hal yang sama. Mutual exclusion merupakan solusi bagi masalah pada critical region / section.

Ilustrasi Mutual Exclusion

Misalnya ada  jaringan komputer sebuah Bank, dimana server untuk penyimpanan datanya terpusat:

  • Seorang nasabah dapat melakukan penyimpanan maupun penarikan dari cabang mana saja dan kapan saja termasuk pengambilan lewat ATM.
  • Sehingga jika ingin data tepat, ketika ada salah satu nasabah melakukan transaksi, record nasabah bersangkutan harus dikunci supaya record tersebut tidak dapat akses oleh orang lain. 
  • Setelah transaksi selesai, record tempat data nasabah disimpan, record baru dibuka kembali. Ini adalah salah satu contoh penjaminan bahwa satu sumber daya hanya bisa dipakai oleh satu proses.

Baca juga pengertian segmentasi dan kombinasi paging-segmentasi

Pemaksaan atau pelanggaran mutual exclusion dapat menyebabkan deadlock dan startvation.

Deadlock

Deadlock merupakan suatu kondisi dimana dua proses atau lebih saling menunggu proses yang lain untuk melepaskan resource yang sedang dipakai. Karena beberapa proses itu saling menunggu, maka tidak terjadi kemajuan dalam kerja proses-proses tersebut.

Contoh Deadlock dalam kehidupan sehari - hari

Contoh Deadlock dalam kehidupan sehari - hari


kejadian deadlock pada dunia nyata, yaitu pada lalu lintas di jembatan. Dapat dilihat bahwa kedua mobil yang berada di tengah-tengah jembatan tidak dapat maju dan hanya menunggu. Penyelesaian dari masalah tersebut adalah salah satu dari mobil tersebut mundur, sehingga mobil yang lain dapat maju. 

Mobil pada kasus ini adalah proses, sedangkan jembatan adalah sumber daya. Kedua mobil berebut untuk menggunakan sumber daya, namun karena sumber daya tersebut hanya dapat digunakan oleh satu proses saja, maka terjadilah deadlock. Kondisi tersebut bila terjadi dalam waktu yang lama dapat menyebabkan terjadinya starvation

Startvation 

kondisi yang biasanya terjadi setelah deadlock. Proses yang kekuranganresource (karena terjadi deadlock) tidak akan pernah mendapat resource yang dibutuhkan sehingga mengalami starvation (kelaparan).

Contoh Startvation

Tiga proses : P1, P2, P3 

P1,P2,P3 memerlukan pengaksesan sumber daya R secara periodik 

Skenario berikut dapat terjadi : 

  • P1 diberi sumberdaya R, P2 dan P3 blocked menunggu sumber daya R 
  • Ketika P1 keluar dari critical section, P2 dan P3 diijinkan mengakses R 
  • Asumsi P3 diberi hak akses, kemudian setelah selesai hak akses kembali diberikan ke P1 yang saat itu kembali membutuhkan sumberdaya R. 
  • Jika pemberian hak akses terus-menerus antara P1 dan P3, maka P2 tidak pernah memperoleh pengaksesan sumberdaya R, meski tidak ada deadlock. Pada situasi ini P2 mengalami startvation

Baca juga Manajemen memori dan pemartisian statis dan dinamis

Critical Section

Critical region/section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama diakses. Mutual exclusion sangat bermanfaat sebagai cara untuk menjamin hanya ada 1 proses aja yang mengakses sumberdaya pada interval waktu tertentu

Solusi dari masalah critical section harus memenuhi tiga syarat berikut:

  • mutual exclusion
  • terjadi kemajuan(progress)
  • ada batas waktu tunggu (bounded waiting)



Konsep konkurensi dan contohnya

2:00 AM Add Comment

 

Apa itu Konkurensi ?

Konkurensi merupakan landasan umum perancangan sistem operasi. Proses-proses disebut konkuren, jika proses-proses berada pada saat yang sama.

Metode Multitasking

Konsep multitasking

Multitasking adalah sebuah metode dimana banyak pekerjaan (proses) diolah dengan menggunakan sumber daya CPU yang sama dalam waktu yang hampir bersamaan.

Metode Multiprosessing

Konsep multiprosessing



Multiprosessing adalah kemampuan pemprosesan komputer yang dilakukan secara serentak. Hail ini dimungkinkan dengan menggunakan dua CPU atau lebih dalam sebuah sistem komputer.

Metode Multiprogramming

Multiprogramming kegiatan menjalankan beberapa program pada memori pada satu waktu dan CPU digunakan secara bergantian.


Masalah yang harus diselesaikan konkurensi

Beberapa masalah yang harus diselesaikan:

  • Mutual Exclusion
  • Sinkronisasi
  • Deadlock
  • Startvation

Prinsip - prinsip konkurensi 

Konkurensi meliputi hal-hal sebagai berikut :
  • Alokasi waktu pemroses untuk proses-proses
  • Pemakaian bersama dan persaingan untuk mendapatkan sumber daya
  • Komunikasi antarproses
  • Sinkronisasi aktivitas banyak proses.
Konkurensi dapat muncul pada konteks berbeda, antara lain:
  • Banyak aplikasi (multiple application).
  • Aplikasi terstruktur.
  • Struktur sistem operasi.
  • Untuk Strukturisasi Satu Proses.

Interaksi antar proses 

Pada sistem dengan banyak proses (konkuren),terdapat 2 katagori interaksi, yaitu:

Proses-proses Saling Tidak Peduli (Independen).

Proses-proses ini tidak dimaksudkan untuk bekerja untuk mencapai tujuan tertentu. Pada multiprogramming dengan proses-proses independen, dapat berupa batch atau sesi interaktif, atau campuran keduanya.

Proses-proses Saling Mempedulikan Secara Tidak Langsung.

Proses-proses tidak perlu saling mempedulikan identitas proses-proses lain, tapi sama-sama mengakses objek tertentu, seperti buffer masukan atau keluaran. Proses-proses itu perlu bekerja sama (cooperation) dalam memakai bersama objek tertentu.

Kesulitan yang ditimbulkan konkurensi

Masalah yang dihadapi proses-proses kongkurensi pada multiprogramming dan multiprocessing serupa, yaitu: kecepatan eksekusi proses-proses di sistem tidak dapat diprediksi. Beberapa kemungkinan yang terjadi tidak dapat diprediksi seperti:

Kecepatan proses pada sistem tergantung padabeberapa hal, antara lain:
  • Aktivitas proses-proses lain
  • Cara sistem operasi menangani interupsi
  • Kebijaksanaan penjadwalan yang dilakukan oleh sistem operasi.

Beberapa kesulitan yang dapat muncul, di antaranya adalah:
  • Pemakaian bersama sumber daya global.
  • Pengelolaan alokasi sumber daya agar optimal.
  • Pencarian kesalahan pemrograman.
Proses-proses konkuren mengharuskan beberapa hal yang harus ditangani, antara lain:
  1. Sistem operasi harus mengetahui proses-proses yang aktif
  2. Sistem operasi harus mengalokasikan dan mendealokasikan beragam sumber daya untuk tiap prosesaktif. Sumber daya yang harus dikelola, antara lain: Waktu Pemroses, Memori, Berkas Berkas, Perangkat I/O.
  3. Sistem operasi harus memproteksi data dan sumber daya fisik masing-masing proses dari gangguan proses-proses lain.
  4. Hasil-hasil proses harus independen terhadap kecepatan relatif proses-proses lain dimana eksekusi dilakukan.

Pokok penyelesaian masalah konkurensi

Pada dasarnya penyelesaian masalah kongkurensiterbagi menjadi 2, yaitu:
  • Mengasumsikan adanya memori yang digunakan bersama.
  • Tidak mengasumsikan adanya memori yang digunakanbersama.
Adanya memori bersama lebih memudahkan penyelesaian masalah kongkurensi. Metode memori bersama dapat dipakai untuk singleprocessor ataupun multiprocessor yang mempunyai memori bersama. Penyelesaian ini tidak dapat digunakan untuk multiprocessor tanpa memori bersama atau untuk sistem tersebar.

Penutup

Jadi itulah pembahasan mengenai konkurensi. Semoga bermanfaat, jika ada yang ditanyakan jangan sungkan bertanya dikolom komentar. Terimakaish.


Tipe Instruksi dasar pada bahasa Assembly

10:00 PM Add Comment
Pada kesempatan kali ini admin akan menjelaskan mengenai Tipe Instruksi pada pemrograman bahasa Assembly. Pada pertemuan sebelumnya Admin sudah pernah menjelaskan tentang jenis register pada bahasa Assembly. Jika ada yang belum mengetahui kalian dapat mengunjungi link ini Jenis Register pada bahasaAssembly? 

Bahasa Assembly


Sebelum masuk ke materi saya ingin menunjukan perintah apa saja yang dapat kita gunakan untuk mengoprasikan pada Debug CMD di bahasa Assembly. Berikut ini merupakan perintahnya :

Perintah –Perintah Debug
A : Merakit intruksi simbolik (kode mesin)
D : menampilkan isi suatu daerah memori
E : memasukan data ke memori yang dimulai pad lokasi tertentu
G : run executable program ke memori
N : menamai program
P : eksekusi sekumpulan intruksi yang terkait
Q : quit
R : menampilkan isi satu atau lebih register
T : trace isi sebuah intruksi
U : unassembled kode mesin ke kode simbolik
W : menulis program ke disk


Instruksi Bahasa Assembly

Secara fisik, kerja dari sebuah komputer dapat dijelaskan sebagai siklus pembacaan instruksi yang tersimpan di dalam memori. komputer menentukan alamat dari memori program yang akan dibaca, dan melakukan proses baca data di memori.

Data yang dibaca diinterprestasikan sebagai instruksi. Alamat instruksi disimpan oleh komputer di register, yang dikenal sebagai program counter. Instruksi ini misalnya program aritmatika yang melibatkan 2 register. Dalam bahasa Assembly mempunyai 3 tipe intruksi dasar yaitu : mnemonic, operan1 dan 2 serta komentar


Tipe Instruksi Dasar Bahasa Assembly

Mnemonic atau opcode ialah kode yang akan melakukan aksi terhadap operand.

Operand ialah data yang diproses oleh opcode. Sebuah opcode bisa membutuhkan 1 ,2 atau lebih operand, kadang juga tidak perlu operand.

Sedangkan komentar dapat kita berikan dengan menggunakan tanda titik koma (;). Berikut contoh jumlah operand yang berbeda beda dalam suatu assembly :

CJNE R0,#22H, Tasmi ;dibutuhkan 3 buah operand
MOVX @DPTR, A ;dibutuhkan 2 buah operand
RR A ;1 buah operand
NOP ; tidak memerlukan operand

Semua instruksi tersebut dapat dibagi menjadi lima kelompok menurut fungsinya, yaitu:

Baca Juga : Konsep bilangan dasar pada bahasa pemrograman Assembly

§  Instruksi Pemindahan Data
§  Instruksi Aritmatika
§  Instruksi Logika dan Manipulasi Bit
§  Instruksi Percabangan
§  Instruksi Stack, I/O, dan Kontrol.

---------------------------------------------------------------------------------------

Oke, mungkin penjelasan dari admin cukup sampai disini saja, tidak lupa juga Admin mengucapkan Terimakasih banyak kepada kalian semua yang telah mengunjungi website Jutsu Coding, semoga artikel ini dapat bermanfaat bagi kalian semua yang sedang mencari materi tentang Tipe Instruksi dasar pada bahasa Assembly. Selebihnya kami mohon maaf bila ada kesalahan kata atau ejaan yang kurang tepat.

Terakhir jangan lupa juga untuk selalu support Jutsu coding dan follow juga Fansfage Facebook dan Instagram Jutsu Coding untuk mendapatkan informasi terkini seputar Teknologi Informasi. 

Mengenal Register dan Jenisnya dalam bahasa Pemrograman Assembly

10:00 PM Add Comment

Pada kesempatan kali ini admin akan sedikit menjelaskan mengenai Register dan Jenis Register pada pemrograman bahasa Assembler. Sebelumnya Admin sudah pernah menjelaskan tentang jenis bilangan pada bahasa Assembler. Jika ada yang belum mengetahui kalian dapat mengunjungi link ini Jenis bilangan pada bahasa Assembler? 

Register dalam assembly


PENGERTIAN REGISTER
Dalam pemrograman dengan bahasa Assembly, mau tidak mau anda harus berhubungan dengan apa yang dinamakan sebagai Register. Lalu apakah yang dimaksudkan dengan register itu sebenarnya ?. .

Register merupakan sebagian memori dari mikroprosesor yang dapat diakses dengan kecepatan yang sangat tinggi. Dalam melakukan pekerjaannya mikroprosesor selalu menggunakan register-register sebagai perantaranya, jadi register dapat diibaratkan sebagai kaki dan tangannya mikroprosesor.

JENIS-JENIS REGISTER
Register yang digunakan oleh mikroprosesor dibagi menjadi 5 bagian dengan tugasnya yang berbeda-beda pula, yaitu :

Segmen Register.
Register yang termasuk dalam kelompok ini terdiri atas register CS,DS,ES dan SS yang masing-masingnya merupakan register 16 bit. Register-register dalam kelompok ini secara umum digunakan untuk menunjukkan alamat dari suatu segmen. Register CS(Code Segment) digunakan untuk menunjukkan tempat dari segmen yang sedang aktif, sedangkan register SS(Stack Segment) menunjukkan letak dari segmen yang digunakan oleh stack. Kedua register ini sebaiknya tidak sembarang diubah karena akan menyebabkan kekacauan pada program anda nantinya. Register DS(Data Segment) biasanya digunakan untuk menunjukkan tempat segmen dimana data-data pada program disimpan. Umumnya isi dari register ini tidak perlu diubah kecuali pada program residen. Register ES(Extra Segment), sesuai dengan namanya adalah suatu register bonus yang tidak mempunyai suatu tugas khusus. Register ES ini biasanya digunakan untuk menunjukkan suatu alamat di memory, misalkan alamat memory video. Pada prosesor 80386 terdapat tambahan register segment 16 bit, yaitu FS<Extra Segment> dan GS<Extra Segment>.

Pointer dan Index Register.
Register yang termasuk dalam kelompok ini adalah register SP,BP,SI dan DI yang masing-masing terdiri atas 16 bit. Register- register dalam kelompok 16 ini secara umum digunakan sebagai penunjuk atau pointer terhadap suatu lokasi di memory. Register SP(Stack Pointer) yang berpasangan dengan register segment SS(SS:SP) digunakan untuk mununjukkan alamat dari stack, sedangkan register BP(Base Pointer)yang berpasangan dengan register SS(SS:BP) mencatat suatu alamat di memory tempat data.

Baca Juga : Apa itu LSP TIK?

  
Register SI(Source Index) dan register DI(Destination Index) biasanya digunakan pada operasi string dengan mengakses secara langsung pada alamat di memory yang ditunjukkan oleh kedua register ini. Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu ESP,EBP,ESI dan EDI.

General Purpose Register.
Register yang termasuk dalam kelompok ini adalah register AX,BX,CX dan DX yang masing-masing terdiri atas 16 bit. Register- register 16 bit dari kelompok ini mempunyai suatu ciri khas, yaitu dapat dipisah menjadi 2 bagian dimana masingmasing bagian terdiri atas 8 bit, seperti pada gambar berikut. Akhiran H menunjukkan High sedangkan akhiran L menunjukkan Low.

            + A X + + B X + + C X + + D X +
            +-+--+--+-+ +-+--+--+-+ +-+--+--+-+ +-+--+--+-+
             | AH | AL | | BH | BL | | CH | CL | | DH | DL |
             +----+----+ +----+----+ +----+----+ +----+----+

Secara umum register-register dalam kelompok ini dapat digunakan untuk berbagai keperluan, walaupun demikian ada pula penggunaan khusus dari masing-masing, register ini yaitu :

􀂾 Register AX, secara khusus digunakan pada operasi aritmatika terutama dalam operasi pembagian dan pengurangan.


􀂾 Register BX, biasanya digunakan untuk menunjukkan suatu alamat offset dari suatu segmen.

􀂾 Register CX, digunakan secara khusus pada operasi looping dimana register ini menentukan berapa banyaknya looping yang akan terjadi.

􀂾 Register DX, digunakan untuk menampung sisa hasil pembagian 16 bit. Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu EAX,EBX,ECX dan EDX.

Baca Juga : Apa itu Bahasa Assembly?

Index Pointer Register
Register IP berpasangan dengan CS(CS:IP) menunjukkan alamat dimemory tempat dari intruksi(perintah) selanjutnya yang akan dieksekusi. Register IP juga merupakan register 16 bit. Pada prosesor 80386 digunakan register EIP yang merupakan register 32 bit.

Flags Register.
Sesuai dengan namanya Flags(Bendera) register ini menunjukkan kondisi dari suatu keadaan< ya atau tidak >. Karena setiap keadaan dapat digunakan 1 bit saja, maka sesuai dengan jumlah bitnya, Flags register ini mampu memcatat sampai 16 keadaan. Adapun flag yang terdapat pada mikroprosesor 8088 keatas adalah :

- OF <OverFlow Flag>. Jika terjadi OverFlow pada operasi aritmatika, bit ini
akan bernilai 1.

- SF <Sign Flag>. Jika digunakan bilangan bertanda bit ini akan bernilai 1

- ZF <Zero Flag>. Jika hasil operasi menghasilkan nol, bit ini akan bernilai 1.

- CF <Carry Flag>. Jika terjadi borrow pada operasi pengurangan atau carry
pada penjumlahan, bit ini akan bernilai 1.

- PF <Parity Flag>. Digunakan untuk menunjukkan paritas bilangan. Bit ini
akan bernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap.
- DF <Direction Flag>. Digunakan pada operasi string untuk menunjukkan arah
proses.

- IF <Interrupt Enable Flag>. CPU akan mengabaikan interupsi yang terjadi
jika bit ini 0.

- TF <Trap Flag>. Digunakan terutama untuk Debugging, dengan operasi step
by step.

- AF <Auxiliary Flag>. Digunakan oleh operasi BCD, seperti pada perintah
AAA.

- NT <Nested Task>. Digunakan pada prosesor 80286 dan 80386 untuk
menjaga jalannya interupsi yang terjadi secara beruntun.

- IOPL <I/O Protection level>. Flag ini terdiri atas 2 bit dan digunakan pada
prosesor 80286 dan 80386 untuk mode proteksi.

- PE <Protection Enable>. Digunakan untuk mengaktifkan mode proteksi. flag
ini akan bernilai 1 pada mode proteksi dan 0 pada mode real.

- MP <Monitor Coprosesor>. Digunakan bersama flag TS untuk menangani
terjadinya intruksi WAIT.

- EM <Emulate Coprosesor>. Flag ini digunakan untuk mensimulasikan
coprosesor 80287 atau 80387.

Baca Juga : Apa itu Cybercrime?


- TS <Task Switched>. Flag ini tersedia pada 80286 keatas.

- ET <Extension Type>. Flag ini digunakan untuk menentukan jenis coprosesor
80287 atau 80387.

- RF <Resume Flag>. Register ini hanya terdapat pada prosesor 80386 keatas.

- VF <Virtual 8086 Mode>. Bila flag ini bernilai 1 pada saat mode proteksi,
mikroprosesor akan memungkinkan dijalankannya aplikasi mode real pada
mode proteksi. Register ini hanya terdapat pada 80386 keatas.

---------------------------------------------------------------------------------------

Oke, mungkin penjelasan dari admin cukup sampai disini saja, tidak lupa juga Admin mengucapkan Terimakasih banyak kepada kalian semua yang telah mengunjungi website Jutsu Coding, semoga artikel ini dapat bermanfaat bagi kalian semua yang sedang mencari materi tentang Register dalam pemrograman dengan bahasa assembler. Selebihnya kami mohon maaf bila ada kesalahan kata atau ejaan yang kurang tepat.

Terakhir jangan lupa juga untuk selalu support Jutsu coding dan follow juga Fansfage Facebook dan Instagram Jutsu Coding untuk mendapatkan informasi terkini seputar Teknologi Informasi.