Pages

Kamis, 18 Desember 2014

Paging & Segmentasi

Penggunaan partisi entah secara fixed-size ataupun variable-size sebenarnya tidak efisien dalam penggunaan memory;

Seandainya memori di partisi menjadi beberapa bagian dg ukuran yg sama besar, kemudian tiap proses dibagi ke dalam ukuran yg sama dg ukuran memori yg dibagi tadi. Proses yg dibagi itu, disebut pages, bisa ditempatkan di bagian memori yg terbagi tadi, yg disebut frames, atau page frames




Dalam me-maintain memory, Sistem Operasi memilike page table utk setiap cache. Page table menyediakan informasi tentang lokasi frame utk tiap page-nya proses.

Segmentasi
Segmentasi merupakan skema manajemen memori yang mendukung cara pandang seorang programmer terhadap memori. Ruang alamat logika merupakan sekumpulan dari segmen-segmen.Masing-masing segment mempunyai panjang dan nama. Alamat diartikan sebagai nama segmen dan offset dalam suatu segmen. Jadi jika seorang pengguna ingin menunjuk sebuah alamat dapat dilakukan dengan menunjuk nama segmen dan offsetnya. Untuk lebih menyederhanakan
implementasi, segmen-segmen diberi nomor yang digunakan sebagai pengganti nama segment.
Sehingga, alamat logika terdiri dari dua tupple: [segment-number, offset]. 

Memory Virtual

Beberapa sistem operasi memerlukan yang namanya virtual memory. Layaknya Linux yang membutuhkan swap, microsoft windows vista ataupun XP pun membutuhkan yang namanya virtual memory. Pengertian dari Virtual memory itu sendiri yakni memori sementara yang digunakan komputer untuk menjalankan berbagai program aplikasi ataupun menyimpan data yang membutuhkan memory yang lebih besar dari memory yang telah tersedia ( Memory fisik seperti RAM, baca disini untuk lebih lengkap ). Program ataupun data yang tidak muat dimasukan pada memory asli ( RAM ), akan disimpan ke dalam sebuah Pagging File. Pengertian Pagging fileialah data yang hanya disimpan sementara atau bisa disebut swap. Pada sistem operasi linux kita diharuskan untuk membuat dua partisi utama yaitu untuk system dan untuk swap. Virtual Memory ini Berbeda halnya dengan Memory fisik seperti RAM, karena ram merupakan komponen yang termasuk kedalam golongan hardware. Walapun dalam kenyatannya Virtual Memory ini disimpan di harddisk, tetapi kerjannya itu tidak tampak, artinya berjalan secara software namun disimpan dihardware. Data yang disimpan ini tidak dapat bertahan lama, dalam artian hanya saat di gunakan saja. Dan bila komputer dimatikan, data data yang tadinya ada di virtual memory akan hilang. Jadi Fungsi Virtual Memory ialah untuk mengoptimalkan kinerja dari komputer, dengan tambahan memory, maka kemungkinan terjadi crash sangat kecil sekali. Ukuran dari paging file biasanya berbeda - beda, kalau ukuran paging file linuxialah 2 kali lipat dari memory aslinya. Misalkan kita memakai memory berkapasitas 512 MB, maka ukuran paging filenya yaitu 1 GB. Walaupun tidak harus 2 GB, tapi untuk memaksimalkan kinerja maka sebaiknya 2 kali lipatnya. Dan untuk Ukuran Paging file Di windows XP dan Vista Yaitu 1,5 kali dari kapasitas aslinya. Misalkan kita menggunakan memory sebesar 1 GB, maka paging filenya sebesar 1,5 GB. Dalam Xp maupun Vista paging file ini dinamai dengan pagefile.sys bila anda ingin mencarinya, pasti tidak akan ketemu, karena file ini disembunyikan atau hidden files.

Kamis, 11 Desember 2014

Manajemen memori

Sebelum kita bicara tentang memori ada baiknya kita flashback sebentar. masih ingat dengan uniprogramming dan multiprogramming? apa perbedaannya?

Pada Uniprogramming hanya satu job yang diproses pada satu waktu dan semua resource sistem tersedia secara eksklusif sampai job terselesaikan, ini berarti memori dibagi jadi 2, untuk Kernel/OS dan program yang sedang dieksekusi. Untuk lebih jelasnya perhatikan ilustrasi berikut






Sedangkan di multiprogramming dimana beberapa job disimpan dalam memori dalam satu waktu; maka memori harus dibagi untuk setiap program yang ingin berjalan. Untuk lebih jelasnya perhatikan 





ada 5 hal yang harus diperhatikan dalam manajemen memori, yaitu:


1. Relokasi.
Adalah masalah penempatan proses sesuai alamat fisik sehubungan alamat partisi memori dimana proses ditempatkan. Proses dapat ditempatkan pada  partisi-partisi berbeda menurut keadaan sistem saat itu. Pengalamatan  fisik secara absolut untuk proses tidak dapat dilakukan.


2. Proteksi
OS yang bagus harus bisa memproteksi memori agar tidak sembarang program bisa mengakses alamat memori yang mungkin sedang digunakan oleh program lain. Hal ini bertujuan untuk menghindari race condition


3. Sharing
Meskipun memori untuk proses yang berbeda biasanya dilindungi dari satu sama lain, kadang-kadang perlu proses yang berbeda untuk dapat berbagi informasi dan akses yang sama karena itu bagian dari memori. Shared memory adalah salah satu teknik tercepat untuk Inter-proses komunikasi.

4. Logical Organization
Program sering diatur dalam modul. Beberapa modul ini dapat dibagi antara program yang berbeda, ada yang hanya membaca dan beberapa berisi data yang dapat diubah. Manajemen memori bertanggung jawab untuk menangani pengaturan alamat logika yang berbeda dari fisik ruang alamat linier. Salah satu cara untuk mengatur organisasi ini adalah segmentasi.

5. Physical Organization
 Memori biasanya dibagi menjadi cepat dan lambat penyimpanan utama penyimpanan sekunder. Memori manajemen pada sistem operasi bergerak menangani informasi antara kedua tingkat memori.


Memory Partion
Prinsip utama pada memory partition adalah membawa proses sebanyak2nya ke main memory agar dapat dieksekusi oleh prosesor

ada dua jenis partition, Fixed dan Dynamic

Fixed Partitioning

memori dibagi dalam sejumlahpartisi tetap dan setiap partisi berisi tepat satu proses. Jumlahpartisi terbatas pada tingkat multiprogramming. Digunakan oleh IBM OS/360 yang disebut Multiprogramming with a Fixed number of Task (MFT)

Dynamic Partitioning

MFT yang digeneralisasiyang disebut Multiprogramming with a Variable number of Tasks (MVT). Skema ini digunakan terutama pada lingkungan batch.


Rabu, 03 Desember 2014

FUSE?

FUSE merupakan singkatan dari Filesystem in Userspace. merupakan  mekanisme sistem operasi berbasis Unix yg mengijinkan non-privileged user membuat filesystem mereka sendiri tanpa perlu merubah kode kernel.  Hal ini bisa didapatkan dengan menjalankan kode filesystem pada userspace dimana FUSE hanya menyediakan "jembatan" ke interface kernel yg sebenarnya

Kegunaan FUSE:
1.  Dalam sebuah system file modern haruslah mampu mengimplementasikan berbagai berkas system yang berbeda dalam waktu yang bersamaan. Salah satu teknik untuk mengantisipasi hal tersebut adalah dengan menggunakan Virtual File System.
2.  VFS (Virtual File System) juga dapat mengenali data yang menggunakan File Sistem lain.
3.  Supaya berbagai system berkas yang berbeda bisa di akses oleh aplikasi computer dengan cara yang seragam.
gambaran FUSE



cara instalasi FUSE:





cara koding FUSE:

Deadlock , IPC, Shared Memory


Deadlock
Deadlock adalah suatu kondisi di mana sekumpulan proses tidak dapat berjalan kembali atau tidak adanya komunikasi antar proses. Definisi lainnya yaitu sekumpulan proses yang terblok yang tiap proses tersebut memegang sumber daya dan menunggu untuk mendapatkan sumber daya yang dipegang oleh proses di dalam kumpulan tersebut.




penyebab kemungkinan deadlock::
1. mutex
    hny 1 proses yg dpt menggunakan sumber daya pd 1 x wkt
2. hold-and-wait
    proses dpt menahan resource yg dialokasikan smbil menunggu resource lainnya dpt dipakai
3. no preemption
    tdk ada resource yg dpt dilepaskkan dr proses yg sedang menggunakannya

penyebab deadlock:
1. circular wait

    Proses-proses berada dalam lingkaran. Terjadi saling menunggu resource yang sedang digunakan oleh proses berikutnya dalam lingkaran tersebut.

pencegahan deadlock
1. pd mutex
    mutex hny utk write saja, proses lain msh bs d read
2. pd hold and wait
    smua resource yg dibutuhkan diminta sejak awal
3. pd no preemption
    proses melepaskan reource dn nanti memintanya kembali
4. pd circular wait
    membuat urutan pengaksesan resource


IPC: Shared memory






memori yang dapat dipakai bersama-sama oleh seluruh pemroses.

ada 2 cara membuat shared memory:
1. mmap<>
2. shmget<> >> lebih populer

metode IPC tercepat
tdk ada mekanisme utk menangani penulisan pd wkt yg bersamaan

langka2 membuat shared memory:
1. buat segment d memory <variable. dg shmget<>
2. mndftarkan segment k data space dr proses dg shmat<>
3. tulis/baca dr memory
4. detach segment dr data space dr proses dg shmdt<>

shmget<>
system call utk buat suatu segment shared mem
definisi:
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget<key_t key, size_t size, int shmflg>;

shmflg bs diisi dg:
IPC_CREATE, IPC_EXCL,permission


shmat<>
system call utk mendaftarkan segment shared memory k dlm data space dr suatu proses
definisi:
#include <sys/types.h>
#include <sys/shm.h
void shmat<int shmid, const void shmaddr, int shmflg>




shmdt<>
system call utk melepaskan shared memory
definisi:
int shmdt<const void pointer shmaddr>

shmctl<>
mengetahui atau merubah info tntg shared memory

int shmctl<parameter>
argumen cmd:...

program tambahan:
2 program utk elihat apa yg terjadi pd ipc
ipcs dan ipcrm