Kamis, 28 Mei 2015

UAS Manajemen Basis Data 2015

Haloo sobat2 sekalian :D kali ini penulis akan membahas mengenai Perancangan analisis dan Desain Database Pada Buana Finance..jadi ini ceritanya kita disuruh studi kasus gitu :v

untuk problemnya bisa dilihat di blog Bapak Fajar yaa, di link berikut:
http://fajarbaskoro.blogspot.com/2015/05/soal-uas-manajemen-basis-data-2015.html

Okee langsung saja




PERANCANGAN ANALISIS DAN DESAIN DATABASE AKTIF PADA BUANA FINANCE






Oleh : Johanes Andre Ridoean
NRP : 5113100021

Kelas : A

Dosen:
Fajar Baskoro,S.Kom.,M.Eng

Jurusan Teknik Infomatika - Fakultas Teknologi Informasi
Institut Teknologi Sepuluh Nopember (ITS)
Surabaya
2015




ABSTRAKSI

Buana Finance adalah suatu perusahaan yang bergerak di bidang keuangan.Buana Finance menyediakan jasa berupa leasing .Untuk melakukan sebuah leasing,konsumen perlu melakukan proses pendaftaran pada suatu perusahaan tersebut,sedangkan pada perusahaan,pihak perusahaan perlu melakukan pencatatan data seperti : Data nasabah,vendor penyedia mobil,bank sumber dana,credit marketing officer,dan sistem angsuran & pembayaran.Oleh karena itu dibutuhkan aplikasi database yang memampukan perusahaan dapat menganalisa informasi bagaimana kinjera penjualan,sehingga dapat menghasilkan output berupa informasi berapa besar laba yang diperoleh bahkan kerugian juga.

PENDAHULUAN
Leasing adalah kegiatan pembiayaan perusahaan dalam bentuk penyediaan barang – barang modal untuk digunakan oleh suatu perusahaan untuk jangka waktu tertentu. Dengan melakukan leasing perusahaan dapat memperoleh barang modal dengan jalan sewa beli untuk dapat lansung digunakan berproduksi, yang dapat diangsur setiap bulan, triwulan atau enam bulan sekali kepada pihak perusahaan.

Database adalah suatu susunan/kumpulan data operasional lengkap dari suatu organisasi atau perusahaan yang dikelola secara terintegrasi dengan menggunakan metode tertentu ,yang diolah memakai komputer,sehingga mampu menyediakan informasi optimal yang diperlukan pemakainya.

Pada Buana Finance,perusahaan membutuhkan suatu informasi agar mengetahui bagaimana kondisi gambaran perusahaan sebenarnya.Indikator yang dipakai adalah jika kinerja penjualan sedang menurun berarti perusahaan sedang dalam kondisi tidak sehat,begitu juga sebaliknya jika kinerja perusahaan naik berarti perusahaan dalam kondisi sehat.Untuk itu perusahaan memerlukan aplikasi database.Metode yang dipakai penulis adalah membuat dengan model desain database aktif.


TINJAUAN PUSTAKA

Database aktif / Active database adalah jenis sistem basis data yang dapat memperbaharui data secara otomatis apabila terjadi keadaan atau event tertentu dan dapat melakukan proses insert, update, dan delete dengan sendirinya tergantung dengan trigger yang memicunya. Trigger adalah blok PL/SQL atau prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event. Trigger merupakan store procedure yang dijalankan secara automatis saat user melakukan modifikasi data pada tabel. Modifikasi data yang dilakukan pada tabel yaitu berupa perintah INSERT, UPDATE, dan DELETE. INSERT , UPDATE dan DELETE bisa digabung jadi satu trigger yang dinamakan Multiple Trigger.

Tipe-tipe dari trigger :
  • Application trigger : diaktifkan pada saat terjadi event yang berhubungan dengan sebuah aplikasi
  • Database trigger : diaktifkan pada saat terjadi event yang berhubungan dengan data (seperti operasi DML) atau event yang berhubungan dengan sistem (semisal logon atau shutdown) yang terjadi pada sebuah skema atau database.
Trigger perlu dibuat pada saat :
  •  Membentuk sebuah aksi tertentu terhadap suatu event
  •  Memusatkan operasi global
Trigger tidak perlu dibuat, jika:
  • Fungsionalitas yang diperlukan suatu ada pada Oracle server/aplikasi database yang digunakan
  •  Duplikat atau sama dengan fungsi trigger yang lain

PEMBAHASAN DAN ANALISIS

Perancangan Sistem Database pada Buana Finance

        Penulis akan merancang dan mendesain database menggunakan aplikasi SQLYOG dengan server MYSQL


1) REPORT YANG DIHASILKAN

Pada aplikasi yang dibuat,output yang dihasilkan adalah informasi sebagai berikut :
  • Hasil Verifikasi dari pihak Buana Finance mengenai apakah permohonan Customer disetujui atau tidak.
  • Produk terlaris yang sering dibeli oleh konsumen (berdasarkan dari ID Produk yang sering dibeli)
  •  CMO yang paling produktif,dari laporan penjualan yang dihasilkan (yang terbanyak yang produktif)
2) METODOLOGI PENGGUNAAN TRIGGER

Pada aplikasi yang dirancang oleh penulis adalah menggunakan prinsip database aktif dengan perintah trigger.Trigger akan bekerja mengupdate data secara otomatis jika terjadi atribut pada tabel BUANA FINANCE mempunyai suatu nilai yang diset.Untuk langkah-langkah yang lebih mendetail sebagai berikut :

ALUR KERJA
  • Customer memilih barang dari vendor penyedia mobil/barang
  • Vendor memberi list kepada customer bekerja sama dengan leasing mana saja (dalam kasus ini pasti bekerja sama Buana Finance)
  • Buana Finance akan mengambil/meminta dana pada bank mereka bekerja sama
  • Leasing akan melakukan proses kepada customer pemohon(pengecekan data customer terhadap sejarah bank,survey ke tempat pemohon,dll).Dalam hal ini,bila semua memenuhi syarat,maka nilai status akan di set pada kolom pemohonan ,bernilai/berisi OK bila disetujui,NO bila ditolak,dan PENDING jika belum diproses
  •  Ketika status pemohon di dalam data Buana Finance OK,maka Validasi pemohon akan otomatis berubah (dengan menggunakan trigger) sesuai dengan apa yg ada pada kolom sebelumnya
3) DESAIN CDM( Conceptual Data Model )





DAFTAR TABEL


KINERJA SISTEM OLTP & OLAP

Sebelumnya kita harus tahu dulu mengenai OLTP dan OLAP.OLTP (Online Transaction Processing) adalah suatu sistem yang memproses suatu transaksi secara langsung(insert,update,delete) melalui komputer yang terhubung dalam jaringan database.Sedangkan OLAP (Online Analytical Processing Systems ) yaitu sistem yang dibuat untuk membantu dalam perencanaan, memecahkan masalah dan mendukung keputusan.

Pada aplkasi yang dibuat penulis,prinsip OLTP digunakan pada saat customer ingin menggunakan jasa dari Buana Finance ini.Customer akan di data oleh pihak dari CMO agar mengisi form aplikasi yang diperlukan untuk proses lebih lanjut.Tabel yang digunakan adalah sebagai berikutKINERJA SISTEM OLTP & OLAP

Sebelumnya kita harus tahu dulu mengenai OLTP dan OLAP.OLTP (Online Transaction Processing) adalah suatu sistem yang memproses suatu transaksi secara langsung(insert,update,delete) melalui komputer yang terhubung dalam jaringan database.Sedangkan OLAP (Online Analytical Processing Systems ) yaitu sistem yang dibuat untuk membantu dalam perencanaan, memecahkan masalah dan mendukung keputusan.

Pada aplkasi yang dibuat penulis,prinsip OLTP digunakan pada saat customer ingin menggunakan jasa dari Buana Finance ini.Customer akan di data oleh pihak dari CMO agar mengisi form aplikasi yang diperlukan untuk proses lebih lanjut.Tabel yang digunakan adalah sebagai berikut


Untuk tabel Customer : yang perlu diisi adalah Nama Customer,Produk (yang ingin dibeli dengan menggunakan jasa leasing),Alamat,No telepon,DP,dan Range Angsur saja.Pada atribut validasi,ID_customer akan diisi oleh pihak dari CMO.Sedangkan CMO mengajukan pada badan leasing dengan mengisi data pada tabel BUANA_FINANCE berdasarkan input dan perjanjian yang dilakukan dan perjanjian dengan customer.CMO akan mengisi ID_FINANCE,NAMA_FINANCE (yg adalah BUANA FINANCE) ID_CUSTOMER,didapat dari tabel Customer,Vendor (Pihak vendor produk yang bersangkutan),bank (dengan bank mana dan vendor mana leasing bekerja sama),ID_CMO (ID dari CMO yang melayani customer) dan Status (Default adalah 1 : Pending,yang artinya belum diproses).

Untuk Prinsip OLAP,dari kumpulan database yang sudah pernah diinputkan bisa menghasilkan sebuah informasi yang berguna bagi perusahaan.Misal pada desain database di atas adalah sebagai berikut :

Pada tabel-tabel di atas,bisa menghasilkan informasi yang berguna bagi perusahaan.Contoh Kasus :

1.Pada tabel produk.Dengan melihat hasil input an dari database selama 1-2 bulan ke depan,perusahaan akan mengetahui bahwa produk apa yang laris / dibutuhkan konsumen sehingga memerlukan jasa leasing.Dengan informasi demikian,Buana Finance bisa menambah ruang lingkup kerja sama dengan beberapa vendor yang menyediakan produk tersebut,sehingga customer mempunyai banyak pilihan vendor.

2.Pada tabel Buana Finance,bisa di lihat juga bagaimana kondisi perusahaan saat ini.Melalui tabel ini,bisa dilihat berapa jumlah customer rentang minggu,bulan,bahkan 2 bulan kedepan.Andaikata didapati informasi dari tabel tersebut 1 bulan hanya mendapatkan customer sebanyak 50 orang,sedangkan seharusnya perusahaan Finance mempunyai target 150 orang,berarti perusahaan dalam kondisi tidak sehat,perlu dibikin strategi dan inovasi baru untuk menarik customer.

3.Pada tabel Buana Finance lagi,bisa dilihat data-data customer yang dilayani oleh suatu CMO (Credit Marketing Officer).Misal dari data penjualan selama sebulan,siapa saja CMO yang melayani/mendapatkan customer paling banyak.Dari data tersebut,bisa mendapat reward sebagai karyawan teladan dan perusahaan dapat memberikan hadiah pada CMO yang bersangkutan.Dengan demikian,karyawan-karyawan akan semakin giat dalam bekerja.


4) PROTOTYPE IMPLEMENTASI

Berikut akan penulis sertakan syntax trigger pada penggunaan database aktif yang menghasilkan bahwa permohonan customer tentang leasing disetujui atau ditolak.Penulis membuat trigger menggunakan SQLYOG


SYNTAX :

DELIMITER $

USE `Finance`$ //nama connection

DROP TRIGGER /*!50032 IF EXISTS */ `autoupdate`$

CREATE


/*!50017 DEFINER = 'root'@'localhost' */

TRIGGER `autoupdate` AFTER UPDATE ON `BUANA_FINANCE`

FOR EACH ROW BEGIN

IF status.BUANA_FINANCE=0 THEN

UPDATE `CUSTOMER` SET Keterangan='Pending' WHERE id_customer=NEW.id_customer;

ELSE IF status.BUANA_FINANCE=1 THEN

UPDATE `CUSTOMER` SET Keterangan='Diterima' WHERE id_customer=NEW.id_customer;

ELSE status.BUANA_FINANCE=2 THEN

UPDATE `CUSTOMER` SET Keterangan='Ditolak' WHERE id_customer=NEW.id_customer;

END IF;

END;

$

DELIMITER ;


KESIMPULAN

Dengan adanya aplikasi database yang dirancang oleh penulis,diharapkan perusahaan Finance khususnya BUANA FINANCE dapat terbantu dengan informasi-informasi yang dihasilkan oleh aplikasi yang dirancang menggunakan prinsip database aktif.Informasi yang sudah dikelola oleh aplikasi memampukan agar perusahaan dapat meningkatkan mutu kualitas perusaahan baik dalam keuntungan,maupun pelayanan kepada customer untuk ke depannya. Perusahaan juga diharap mampu mengambil langkah-langkah dan menciptakan inovasi baru agar perusahaan terus menjadi badan penyedia jasa yang nomer 1 dan paling disukai oleh sebagian besar masyarakat.




DAFTAR PUSTAKA

https://rivaldiligia.wordpress.com/2012/03/30/pengertian-leasing/
http://duniadatabase.blogspot.com/2011/03/pengertian-database.html
http://www.haritsthinkso.com/2010/01/pengertian-trigger-pada-sql.html
http://mazhters.blogspot.com/2009/11/relasi-oltp-etl-business-intelligence.html



Kurang lebih seperti itu laporan saya :).Terima Kasih

Sabtu, 29 November 2014

FUSE (Code)

Haloo sobat2 sekalian :D .Sesuai postingan lalu,kali ini saya akan memberikan codingan FUSE.c

disini saya beri nama fusexmp.c.Kodingannya cukup panjang ._. tapi ini hanya sekedar template kok..Bisa dipahami :D

Untuk Codingannya sebagai berikutt


/*
  FUSE: Filesystem in Userspace
  Copyright (C) 2001-2007  Miklos Szeredi <miklos@szeredi.hu>
  Copyright (C) 2011       Sebastian Pipping <sebastian@pipping.org>

  This program can be distributed under the terms of the GNU GPL.
  See the file COPYING.

  gcc -Wall fusexmp.c `pkg-config fuse --cflags --libs` -o fusexmp
*/

#define FUSE_USE_VERSION 26

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#ifdef linux
/* For pread()/pwrite()/utimensat() */
#define _XOPEN_SOURCE 700
#endif

#include <fuse.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <dirent.h>
#include <errno.h>
#include <sys/time.h>
#ifdef HAVE_SETXATTR
#include <sys/xattr.h>
#endif

static int xmp_getattr(const char *path, struct stat *stbuf)
{
int res;

res = lstat(path, stbuf);
if (res == -1)
return -errno;

return 0;
}

static int xmp_access(const char *path, int mask)
{
int res;

res = access(path, mask);
if (res == -1)
return -errno;

return 0;
}

static int xmp_readlink(const char *path, char *buf, size_t size)
{
int res;

res = readlink(path, buf, size - 1);
if (res == -1)
return -errno;

buf[res] = '\0';
return 0;
}


static int xmp_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
      off_t offset, struct fuse_file_info *fi)
{
DIR *dp;
struct dirent *de;

(void) offset;
(void) fi;

dp = opendir(path);
if (dp == NULL)
return -errno;

while ((de = readdir(dp)) != NULL) {
struct stat st;
memset(&st, 0, sizeof(st));
st.st_ino = de->d_ino;
st.st_mode = de->d_type << 12;
if (filler(buf, de->d_name, &st, 0))
break;
}

closedir(dp);
return 0;
}

static int xmp_mknod(const char *path, mode_t mode, dev_t rdev)
{
int res;

/* On Linux this could just be 'mknod(path, mode, rdev)' but this
  is more portable */
if (S_ISREG(mode)) {
res = open(path, O_CREAT | O_EXCL | O_WRONLY, mode);
if (res >= 0)
res = close(res);
} else if (S_ISFIFO(mode))
res = mkfifo(path, mode);
else
res = mknod(path, mode, rdev);
if (res == -1)
return -errno;

return 0;
}

static int xmp_mkdir(const char *path, mode_t mode)
{
int res;

res = mkdir(path, mode);
if (res == -1)
return -errno;

return 0;
}

static int xmp_unlink(const char *path)
{
int res;

res = unlink(path);
if (res == -1)
return -errno;

return 0;
}

static int xmp_rmdir(const char *path)
{
int res;

res = rmdir(path);
if (res == -1)
return -errno;

return 0;
}

static int xmp_symlink(const char *from, const char *to)
{
int res;

res = symlink(from, to);
if (res == -1)
return -errno;

return 0;
}

static int xmp_rename(const char *from, const char *to)
{
int res;

res = rename(from, to);
if (res == -1)
return -errno;

return 0;
}

static int xmp_link(const char *from, const char *to)
{
int res;

res = link(from, to);
if (res == -1)
return -errno;

return 0;
}

static int xmp_chmod(const char *path, mode_t mode)
{
int res;

res = chmod(path, mode);
if (res == -1)
return -errno;

return 0;
}

static int xmp_chown(const char *path, uid_t uid, gid_t gid)
{
int res;

res = lchown(path, uid, gid);
if (res == -1)
return -errno;

return 0;
}

static int xmp_truncate(const char *path, off_t size)
{
int res;

res = truncate(path, size);
if (res == -1)
return -errno;

return 0;
}

#ifdef HAVE_UTIMENSAT
static int xmp_utimens(const char *path, const struct timespec ts[2])
{
int res;

/* don't use utime/utimes since they follow symlinks */
res = utimensat(0, path, ts, AT_SYMLINK_NOFOLLOW);
if (res == -1)
return -errno;

return 0;
}
#endif

static int xmp_open(const char *path, struct fuse_file_info *fi)
{
int res;

res = open(path, fi->flags);
if (res == -1)
return -errno;

close(res);
return 0;
}

static int xmp_read(const char *path, char *buf, size_t size, off_t offset,
   struct fuse_file_info *fi)
{
int fd;
int res;

(void) fi;
fd = open(path, O_RDONLY);
if (fd == -1)
return -errno;

res = pread(fd, buf, size, offset);
if (res == -1)
res = -errno;

close(fd);
return res;
}

static int xmp_write(const char *path, const char *buf, size_t size,
    off_t offset, struct fuse_file_info *fi)
{
int fd;
int res;

(void) fi;
fd = open(path, O_WRONLY);
if (fd == -1)
return -errno;

res = pwrite(fd, buf, size, offset);
if (res == -1)
res = -errno;

close(fd);
return res;
}

static int xmp_statfs(const char *path, struct statvfs *stbuf)
{
int res;

res = statvfs(path, stbuf);
if (res == -1)
return -errno;

return 0;
}

static int xmp_release(const char *path, struct fuse_file_info *fi)
{
/* Just a stub. This method is optional and can safely be left
  unimplemented */

(void) path;
(void) fi;
return 0;
}

static int xmp_fsync(const char *path, int isdatasync,
    struct fuse_file_info *fi)
{
/* Just a stub. This method is optional and can safely be left
  unimplemented */

(void) path;
(void) isdatasync;
(void) fi;
return 0;
}

#ifdef HAVE_POSIX_FALLOCATE
static int xmp_fallocate(const char *path, int mode,
off_t offset, off_t length, struct fuse_file_info *fi)
{
int fd;
int res;

(void) fi;

if (mode)
return -EOPNOTSUPP;

fd = open(path, O_WRONLY);
if (fd == -1)
return -errno;

res = -posix_fallocate(fd, offset, length);

close(fd);
return res;
}
#endif

#ifdef HAVE_SETXATTR
/* xattr operations are optional and can safely be left unimplemented */
static int xmp_setxattr(const char *path, const char *name, const char *value,
size_t size, int flags)
{
int res = lsetxattr(path, name, value, size, flags);
if (res == -1)
return -errno;
return 0;
}

static int xmp_getxattr(const char *path, const char *name, char *value,
size_t size)
{
int res = lgetxattr(path, name, value, size);
if (res == -1)
return -errno;
return res;
}

static int xmp_listxattr(const char *path, char *list, size_t size)
{
int res = llistxattr(path, list, size);
if (res == -1)
return -errno;
return res;
}

static int xmp_removexattr(const char *path, const char *name)
{
int res = lremovexattr(path, name);
if (res == -1)
return -errno;
return 0;
}
#endif /* HAVE_SETXATTR */

static struct fuse_operations xmp_oper = {
.getattr = xmp_getattr,
.access = xmp_access,
.readlink = xmp_readlink,
.readdir = xmp_readdir,
.mknod = xmp_mknod,
.mkdir = xmp_mkdir,
.symlink = xmp_symlink,
.unlink = xmp_unlink,
.rmdir = xmp_rmdir,
.rename = xmp_rename,
.link = xmp_link,
.chmod = xmp_chmod,
.chown = xmp_chown,
.truncate = xmp_truncate,
#ifdef HAVE_UTIMENSAT
.utimens = xmp_utimens,
#endif
.open = xmp_open,
.read = xmp_read,
.write = xmp_write,
.statfs = xmp_statfs,
.release = xmp_release,
.fsync = xmp_fsync,
#ifdef HAVE_POSIX_FALLOCATE
.fallocate = xmp_fallocate,
#endif
#ifdef HAVE_SETXATTR
.setxattr = xmp_setxattr,
.getxattr = xmp_getxattr,
.listxattr = xmp_listxattr,
.removexattr = xmp_removexattr,
#endif
};

int main(int argc, char *argv[])
{
umask(0);
return fuse_main(argc, argv, &xmp_oper, NULL);
}


Sekian dan Terima Kasih :))

Jumat, 28 November 2014

Instal Fuse

Halo Pembaca :D sesuai janji,kali ini saya akan memberikan tutorial menginstal FUSE pada linux kalian

Langkah Pertama :
1.  Download fuse dari http://fuse.sourceforge.net/ pada bagian Download stable release











2. Extract file tat.gz dan masuk ke direktori fuse






3.
 Lakukan instalasi fuse dengan cara:
[1] gunakan hak akses super user (sudo su)
[2] ketikkan perintah ./configure
[3] ketikkan perintah make
[4] ketikkan perintah make install


4.FUSE siap digunakan

Gimana :D Mudah kann? pada Postingan berikutnya saya akan memberikan Codenya Fuse
Sekian terima Kasih 

FUSE

Haloo Pembaca yang budiman :D apa kabar? Lama tidak memposting..
Kali ini saya akan membahas mengenai FUSE :D
apa itu fuse?





FUSE(FileSystem In UserSpace) /sistem berkas adalah struktur logika yang digunakan untuk mengendalikan akses terhadap data yang ada pada harddisk.
Terdapat berbagai jenis-jenisnya dan penggunaan algoritma yang berbeda. Semakin baru jenis dari sebuah File System, maka semakin bagus pula kualitas dari File System tersebut.



Macam-macam file system:
    NTFS
    EXT4
    FAT32
    JFS (Journal File System)
    Reiser FS
    dsb.


Bisa dibilang juga fuse ini adalah semacam membuat bayangan dari suatu direktori untuk mengakses isi / direktori file tertentu..sehingga memudahkan user untuk mengedit bahkan menghapus..Bisa juga untuk proteksi data yang tidak boleh diakses

Oke pada Postingan Berikutnya akan saya ajarkan bagaimana menginstal fuse :)
Sekian dan terima kasih

Minggu, 16 November 2014

Thread

Haloo semuanyaa,sekarang saya akan membahas mengenai apa itu thread :)

cacing?? @_@

Thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor

Keuntungan Thread

1.Tanggap: Multithreading mengizinkan program untuk berjalan terus walau pun pada bagian program tersebut di block atau sedang dalam keadaan menjalankan operasi yang lama/ panjang. Sebagai contoh, multithread web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.

2.Pembagian sumber daya: Secara default, thread membagi memori dan sumber daya dari proses. Keuntungan dari pembagian kode adalah aplikasi mempunyai perbedaan aktifitas thread dengan alokasi memori yang sama.
3.Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses adalah sangat mahal. Alternatifnya, karena thread membagi sumber daya dari proses, ini lebih ekonomis untuk membuat threads.
4.Pemberdayaan arsitektur multiprosesor: Keuntungann dari multithreading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara parallel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu

Ada tiga tipe dari model yang berhubungan dengan user dan kernel thread.
1.Model many to one: memetakan beberapa user level thread hanya ke satu buah kernel thread.
2.Model one to one: memetakan setiap user thread ke dalam satu kernel thread. Berakhir.
3.Model many to many: mengizinkan pengembang untuk membuat user thread sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu.

Okee sekilas mengenai thread :D,jumpa lagi pada postingan berikutnyaa

Proses

Haii2,kali ini sayaa akan membahas tentang proses :3

apa sih proses itu?dalam sistem operasi khususnyaa?




Add caption



Proses adalah keadaan ketika sebuah program sedang di eksekusi. Saat komputer berjalan, terdapat banyak proses yang berjalan secara bersamaan. Sebuah proses dibuat melalui system call create-process yang membentuk proses turunan ( child process) yang dilakukan oleh proses induk ( parent process). Proses turunan tersebut juga mampu membuat proses baru sehingga semua proses ini pada akhirnya membentuk pohon proses.


Pengelolaan Proses

Proses perlu dikelola karena dalam sebuah proses membutuhkan beberapa sumber daya untuk menyelesaikan tugasnya. Sumber daya tersebut dapat berupa CPU time, memori, berkas-berkas, dan perangkat-perangkat I/O.


Sistem operasi bertanggung jawab atas aktivitas-aktivitas yang berkaitan dengan managemen proses seperti:

• Pembuatan dan penghapusan proses pengguna dan sistem proses.
• Menunda atau melanjutkan proses.
• Menyediakan mekanisme untuk proses sinkronisasi.
• Menyediakan mekanisme untuk proses komunikasi.
• Menyediakan mekanisme untuk penanganan deadlock.

Perkembangan sistem komputer mendatang adalah menuju ke sistem multi- processing, multiprogramming, terdistribusi dan paralel yang mengharuskan adanya proses-proses yang berjalan bersama dalam waktu yang bersamaan. Hal demikian merupakan masalah yang perlu perhatian dari perancang sistem operasi. Kondisi dimana pada saat yang bersamaan terdapat lebih dari satu proses disebut dengan kongkurensi (proses-proses yang kongkuren).

Proses-proses yang mengalami kongkuren dapat berdiri sendiri (independen) atau dapat saling berinteraksi, sehingga membutuhkan sinkronisasi atau koordinasi proses yang baik.



sumber: http://sistem-operasi-universitas.blogspot.com/2011/10/pengertian-proses-dalam-sistem-operasi.html

Minggu, 02 November 2014

Client Server

Haloo2,postingan kali ini akan membahas mengenai client dan server ^^
Berikut ini saya akan mempost codingan beserta comment2 penjelasan membuat server dan client di C dengan memakai socket

berikut codingannya
Server

#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    int socket_desc , client_sock, c , read_size;/* deklarasi variabel yg diperlukan */
    struct sockaddr_in server, client;
    char client_message[2000];

    //create socket
    socket_desc = socket(AF_INET , SOCK_STREAM, 0); // inisialisasi
    if(socket_desc == -1) // klo buat server itu defaultnya 0, jadi klo misal -1 artinya socket nya ga bisa dibuat
    {
        printf("could not create socket");
    }
    puts("Socket Created"); // penanda pembuatan socket berhasil
    // prepare the sockaddr_in structure
    server.sin_family = AF_INET; // semua server.sin itu isi dari struct untuk alamt socket
    server.sin_addr.s_addr = INADDR_ANY;
    server.sin_port = htons( 8888 );
    // bind

    if(bind(socket_desc,(struct sockaddr *)&server, sizeof(server)) < 0) // binding intinya mengikat alamat dari client nya nanti
    { // defaultnya sama nilai 0, jika <0 berarti gagal
    // print the error message
    perror("bind failed. Error");
    return 1;
    }
    puts("bind done");
    // listen : nunggu command dari client, biasanya kita yg kasi server disuruh apa itu ditulis di client
    listen(socket_desc, 3);
    //accept and incoming connection

    puts("waiting for incoming connections . . .");
    c = sizeof(struct sockaddr_in);
    // accept connection from an incoming client
    client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c);
    if(client_sock < 0)
    {
    perror("accept failed");
    return 1;
    }
    puts("connection accepted");
    // receive message from client
    while( (read_size = recv(client_sock, client_message, 2000, 0)) > 0 )
    {
    //send the message back to client
    write(client_sock, client_message, strlen(client_message));
    }
    if(read_size == 0)
    {
    puts("Client disconnected");
    fflush(stdout);
    }
    else if(read_size == -1)
    {
    perror("recv failed");
    }
return 0;

}


Jalanin dulu nanti yang server ,baru jalanin yang client :)
nanti message yg ada di client akan dibalas sama persis oleh server (berdasarkan codingannya)

okehh sekian :)