Kamis, 02 Desember 2010

Tugas pendahuluan modul 1

Apa yang dimaksud SHELL pada system operasi Linux ? apakah windows juga mempunyai SHELL ?
Sebutkan 20 perintah SHELL yang banyak digunakan untuk mengolah system operasi Linux !
Apakah fungsi dari perintah SUDO ?

Jawaban
Shell adalah “Command Executive” artinya program yang menunggu instruksi user, memeriksa sintaks dan menerjemahkan instruksi yang diberikan kemudian mengeksekusinya. Pada umumnya shell ditandai dengan command prompt, di Linux untuk user biasa biasanya tanda $ dan untuk super user biasanya tanda #. Shell ada bermacam-macam.
Windows juga memiliki Shell yang bernama Command Promp (CMD) dan fungsinya hampir sama seperti di linux
alias : Untuk membuat alias dan menampilkan alias yang sudah diset sebelumnya.

Contoh :


menampilkan alias yang sudah diset sebelumnya

[kave@client10~]$ alias

alias d=’dir’

alias ls=’/usr/bin/ls -l’

alias v=’vdir’

alias vdir=’/usr/bin/ls $LS_OPTIONS –format=long’



membuat alias baru yaitu dir yang fungsinya sama dengan ls

[kave@client10~]$ alias dir=’/usr/bin/ls -l’


cp: Copy, untuk melakukan proses copy file

Syntax : cp [options] file_sumber file_tujuan

Contoh : copy file dari direktori /data/mhs1/otomatis.sh ke /data/mhs2/

[kave@client10~]$ cp /data/mhs1/otomatis.sh /data/mhs2/


chmod: Untuk mengganti perijinan pada file atau direktori.

Syntax : chmod [options] file_atau_direktori

Contoh : Mengganti perijinan file /data/mhs1/otomatis.sh dari 664 menjadi 755

[kave@client10~]$ chmod 755 /data/mhs1/otomatis.sh


chown: Mengganti kepemilikan atas file atau direktori

Syntax : chown [options] username:groupname

Contoh : Mengganti kepemilikan file /data/otomatis.sh yang sebelumnya dimiliki oleh user yang bernama labcrew menjadi labcrew2

[kave@client10~]$ chown labcrew2:labcrew2 /data/otomatis.sh


chgrp: Untuk mengganti grup pemilik suatu file atau direktori

Syntax : chgrp [options] groupname

Contoh :

[kave@client10~]$ chgrp labcrew /data/otomatis.sh


clear: Untuk membersihkan tampilan layar monitor

Syntax : clear

Note : untuk melakukan clear dengan cepat, Anda dapat menggunakan kombinasi tombol CTRL + L


cat: Menampilkan isi dari suatu file

Syntax : cat nama_file

Contoh : menampilkan isi file /etc/issue.net

[kave@client10~]$ cat /etc/issue.net

Welcome to client10.dejavu.war.net.id. Unauthorized access is prohibited !


cd: Change Directory, untuk berpindah/berganti direktori.

Syntax : cd nama_direktori

Contoh : berganti ke direktori praktikum

[kave@client10~]# cd praktikum


cal: Menampilkan kalender.

Syntax : cal

Contoh :

[kave@client10~]$ cal

November 2006

Su Mo Tu We Th Fr Sa

1 2 3 4

5 6 7 8 9 10 11

12 13 14 15 16 17 18

19 20 21 22 23 24 25

26 27 28 29 30


date: Menampilkan informasi tanggal dan waktu saat ini.

Syntax : date

Contoh :

[kave@client10~]$ date

Thu Nov 16 23:15:35 UTC 2006


du: Menampilkan penggunaan kapasitas harddisk oleh suatu direktori.

Syntax : du [options]

Contoh : Menampilkan penggunaan kapasitas harddisk pada direktori /home/kave dengan option -h (human readable) agar lebih mudah dalam pembacaan karena hasil yang ditampilkan sudah dikonversi dalam bentuk KiloByte, MegaByte bahkan GigaByte (jika diperlukan).

[kave@client10~]$ du -h

12K ./.config/xfce4/xffm

36K ./.config/xfce4/desktop

12K ./.config/xfce4/panel

4.0K ./.config/xfce4/xfwm4

68K ./.config/xfce4/mcs_settings

..

..

20K ./.nvu/plstbxas.default/extensions

4.0K ./.nvu/plstbxas.default/chrome

1.6M ./.nvu/plstbxas.default

1.7M ./.nvu

233M .


df: Menampilkan penggunaan partisi harddisk secara keseluruhan. df –h

Syntax : df [options]

Contoh : df dengan option -h untuk menghasilkan tampilan yang sudah dikonversi dalam bentuk KiloByte, MegaByte bahkan GigaByte (jika diperlukan).

[kave@client10~]$ df -h

Filesystem Size Used Avail Use% Mounted on

/dev/hda6 3.7G 3.1G 434M 88% /

/dev/hda7 2.3G 281M 2.0G 13% /home


file : Untuk melihat tipe file.

Syntax : file nama_file

Contoh :

[kave@client10~]$ file index.html

index.html: HTML document text

[kave@client10~]$ file yakult_01.jpg

yakult_01.jpg: JPEG image data, JFIF standard 1.02

[kave@client10~]$ file sdat4866.exe

sdat4866.exe: MS-DOS executable (EXE), OS/2 or MS Windows

Dalam hal ini, perintah “file” akan menganalisa file yang diberikan, bukan berdasarkan pada extension suatu file. Sebagai contoh jika suatu file ber-ekstensi .doc tetapi sebenarnya adalah file gambar dalam format JPEG maka perintah “file” akan menemukan file tersebut dalam kondisi yang sebenarnya.

Contoh :

[kave@client10~]$ mv yakult_05.jpg yakult.doc

(perintah ini untuk merubah file yakult_05.jpg menjadi yakult.doc)

[kave@client10~]$ file yakult.doc

yakult.doc: JPEG image data, JFIF standard 1.01

(perintah “file” dapat membuktikan bahwa file yakult.doc sebenarnya adalah file gambar dalam format JPEG.)



grep: Untuk mencari suatu “string” atau “pattern” tertentu pada suatu file.

Syntax : grep PATTERN nama_file

Contoh : mencari PATTERN “center” pada file index.html

[kave@client10~]$ grep center index.html





VERSI KONVENSIONAL

VERSI BLOG


Perhatikan bahwa setiap baris di atas mengandung kata “center” sesuai dengan PATTERN yang diinginkan.



head: Secara default menampilkan 10 baris pertama pada suatu file. Jika ingin menampilkan jumlah baris yang berbeda dapat menggunakan option –n diikuti jumlah baris yang diinginkan.

Syntax : head [options] nama_file

Contoh : menampilkan 15 baris pertama pada file guitar.txt

[kave@client10~]$ head -n15 guitar.txt

To Her With Love Tab by Karas Flowers, http://www.Ultimate-Guitar.Com



To Her, With Love

Kara?s Flowers

The Fourth World



Tabbed by: Danielle Weitzman

Email: Jewelgirl04@aol.com



Tuning: Eb Ab Db Gb Bb eb



Intro



e|————————————————————-|


history: Menampilkan perintah-perintah yang telah digunakan sebelumnya. Note: Linux memiliki fasilitas untuk menyimpan perintah-perintah yang pernah digunakan.

Syntax : history

Contoh :

[kave@client10~]$ history

1 su -

2 su -

3 su -

.

.

.

225 grep center index.html

226 ls -l

227 cat ada

228 mv ada guitar.txt

229 head -n15 guitar.txt

230 history


init: Untuk mengganti run level. Note: Karena penggunaan run level adalah hal yang berpengaruh besar pada sistem, maka untuk melakukan ini harus menggunakan SUPER-USER atau yang memiliki kemampuan sama dengan root.

Syntax : init run_level


ls: Untuk menampilkan isi dari suatu direktori.

Syntax : ls [options] nama_file_atau_direktori

Contoh :

[kave@client10~]$ ls -l

total 1060

drwx—— 3 kave kave 4096 2006-11-16 22:40 Desktop/

drwxr-xr-x 2 kave kave 4096 2006-09-23 15:26 Pictures/

drwxr-xr-x 6 kave kave 4096 2004-05-23 15:31 RealPlayer8/

drwxr-xr-x 2 kave kave 4096 2006-09-02 11:31 Trash/

-rw-r–r– 1 kave kave 4132 2006-09-15 12:41 acne3.jpeg

-rw-r–r– 1 kave kave 1684 2006-10-02 13:09 dance.doc

-rw-r–r– 1 kave kave 12763 2006-09-21 13:59 geng\ 5l.png

drwxr-xr-x 9 kave kave 4096 2006-09-03 02:51 google-earth/

-rw-r–r– 1 kave kave 4415 2006-10-02 13:05 guitar.txt

-rw-r–r– 1 kave kave 38859 2006-09-30 13:43 iPING.odt

-rw-r–r– 1 kave kave 2162 2006-09-15 13:03 images.jpeg

-rw-r–r– 1 kave kave 1045 2006-09-27 21:33 index.html

-rw-r–r– 1 kave kave 38306 2006-10-14 12:38 lahiran1.odg

option -l berfungsi untuk menampilkan file dalam format long seperti yang terlihat pada contoh. Jika tidak menggunakan option -l maka hasilnya akan seperti di bawah ini :

[kave@client10~]$ ls

Desktop/ acne3.jpeg google-earth/ lahiran1.odg

Flash\ Disk@ dance.doc guitar.txt

Pictures/ dancedancelyrics.html iPING.odt mp3@

RealPlayer8/ floppy@ images.jpeg oleg.odt

Trash/ geng\ 5l.png index.html ovalmain.gif


less: Untuk menampilkan isi dari suatu file. Dengan perintah “less”, saat menampilkan suatu file maka file akan terbuka dan dapat di scroll-up & scroll-down. Untuk keluar dari tampilan “less” dapat dilakukan dengan menekan tombol ‘q’. Perintah less ini lebih cocok dikatakan sebagai fileviewer, karena dapat menampilkan file tetapi tidak dapat melakukan proses update/editing.

Syntax : less nama_file

Contoh : less index.html


man: Menampilkan halaman bantuan/manual (help-page) untuk perintah yang diminta. Linux memiliki kelengkapan dokumentasi yang sangat tepat untuk dijadikan referensi. Halaman bantuan/manual ini biasanya selalu disertakan pada masing-masing program/perintah dan yang bersifat sangat informatif. Untuk menampilkan halaman-halaman manual, sistem menggunakan program “less”, karena itu untuk keluar dari halaman manual dapat dilakukan dengan menekan tombol ‘q’.

Syntax : man nama_perintah

Contoh : menampilkan halaman manual dari perintah ‘ls’

[kave@client10~]$ man ls

LS(1) LS(1)

NAME

ls, dir, vdir – list directory contents

SYNOPSIS

ls [options] [file...]

dir [file...]

vdir [file...]

POSIX options: [-CFRacdilqrtu1] [--]


mkdir: Membuat direktori

Syntax : mkdir nama_direktori

Contoh :

[kave@client10~]$ mkdir praktikum

Tugas pendahuluan modul 2

1. Bagaimana mengubah semua file terakhir .html menjadi php? (coba gunakan berbagai bentuk perintah mv)!
2. Jelaskan dengan singkat shell lain yang tersedia di Linux selain Bash!




Jawaban

Perintah-perintah shell selain bash
Bourne Shell (sh)
sh adalah shell standar Unix yang dibuat tahun 1979 oleh Stephen Bourne dari AT&T dengan memakai bahasa pemrograman Algol. sh terkenal karena sederhana, compact, and cepat. Kelemahannya adalah kurang interkatif seperti tidak ada history, aliasing, dan job control. Default prompt shell sh adalah $ (dolar).


C Shell (csh)
csh memiliki feature yang lebih lengkap dibandingkan sh. Shel ini dibuat tahun 1970an oleh Bill Joy dari University of California at Berkeley dengan menggunakan bahasa C. Fitur yang terdapat dalam csh antara lain command-line history, aliasing, built-in arithmetic, filename completion, dan job control. Kelemahnnya adalah karena didesain untuk mesin skala besar dan memiliki banyak fitur maka shel ini cenderung lambat bila digunakan pada mesin kecil. Default prompt shell csh adalah % (persen).

Korn Shell (ksh)
Korn shell merupakan pengembangan dari bourne shell yang ditulis oleh David Korn dari AT&T pada pertengahan 1980an. Feature Korn shell antara lain editable history, aliases, functions, regular expression wildcards, built-in arithmetic, job control, coprocessing, dan special debugging. Default prompt shell ksh adalah $ (dolar).

Tugas pendahuluan modul 3

1. Apa manfaat dari karakter escape? Bagaimana menampilkan karakter ^, % dan ~?
2. Anda sudah mempelajari perulangan dan seleksi kondisi pada bahasa. Apa kegunaan keduanya? Buat sebuah program dalam bahasa C yang melibatkan kedua fitur ini, misalnya program tebak angka!
3. Apa yang dikeluarkan oleh perintah berikut:$ ls -ld {,usr,usr/local}/{bin,sbin,lib}

Jawab

1. Karakter escape merupakan karakter yang diawali oleh tanda '\' . Kegunaan dari

karakter escape adalah menyatakan suatu karakter khusus.
Contoh cara mencetak string "hanya sebuah test" (tanda kutip termasuk dicetak) :
echo " \"hanya sebuah test\""

Daftar katakter escape lainnya
Karakter escape Keterangan
\n Linefeed / baris baru
\t Tab Horizontal
\\ Backslash
\$ Tanda dollar
\" Petik ganda
dan lain-lain



Sebenarnya saya telah mencoba beberapa cara untuk menampilkan karakter ^, % dan ~ diantaranya sebagai berikut:
* adminlab@adminlab-desktop:~/Documents/Praktikum/Modul1$ echo "Mencoba menampilkan karakter ^,% dan ~"
dan hasil outputnya adalah:
Mencoba menampilkan karakter ^,% dan ~
* adminlab@adminlab-desktop:~/Documents/Praktikum/Modul1$ echo Mencoba menampilkan karakter ^,% dan ~
dan hasil outputnya adalah:
Mencoba menampilkan karakter ^,% dan /home/adminlab
karakter ~ dianggap sebagai perintah untuk menampilkan folder user yakni /home/adminlab
* adminlab@adminlab-desktop:~/Documents/Praktikum/Modul1$ echo Mencoba menampilkan karakter ^,% dan \~
dan hasil outputnya adalah:
Mencoba menampilkan karakter ^,% dan ~
* adminlab@adminlab-desktop:~/Documents/Praktikum/Modul1$ echo "~"
dan hasil outputnya adalah:
~

Jadi Sebenarnya untuk menampilkan karakter khusus bisa menggunakan karakter escape, dan beberapa ada yang bisa menggunakan "". Tapi Ada juga beberapa karakter khusus yang langsung bisa ditampilkan tanpa harus menggunakan karakter escape seperti contoh diatas karakter ^ dan %.
2. Fungsi percabangan berfungsi melakukan suatu aksi tertentu bila suatu syarat dipenuhi, sedangkan fungsi perulangan berfungsi melakukan perulangan terhadap suatu aksi hingga atau sampai suatu syarat terpenuhi.
Program Tebak angka dengan Bahasa C
#include
#include
#include
typedef enum{false = 0, true = 1}boolean;
int RandomIsi(int jarak);
main() {
int angka, Jawaban;
boolean ketemu;
printf("Game Tebak Angka!\n"); /*Judul Game*/
ketemu=false;
Jawaban=RandomIsi(100); /*buat angka acak antara 1-100*/
while(!ketemu) //Pengulangan
{ printf("Masukan angka tebakan = ");
scanf("%d", &angka); /*Membaca Jawaban angka dari user*/
if(angka==Jawaban) // Penyeleksian Kondisi Untuk Mengetahui kebenaran jawaban dari user
{ ketemu=true; //jika sama berarti jawaban benar
}else
{ if(angka { printf("Terlalu kecil\n"); //jika lebih kecil
}else
{ printf("Terlalu besar\n"); //jika lebih besar
}
}
}
if(ketemu)
{ printf("Tebakan anda benar!\n"); }
}
/*fungsi membuat angka acak*/
int RandomIsi(int jarak)
{ int RandomAngka; srand(time(NULL)); /*memakai fungsi time agar hasil angka acak berbeda-beda*/
RandomAngka=(rand()%jarak)+1;
return RandomAngka; }
3. perintah ls -ld berfungsi untuk menampilkan owner/user yang berhak mengakses file.
adminlab@adminlab-desktop:~/Documents/Praktikum/Modul1$ cd /usr
adminlab@adminlab-desktop:/usr$ ls -ld
drwxr-xr-x 12 root root 4096 2010-07-15 14:35 .
adminlab@adminlab-desktop:/usr$ cd /usr/local
adminlab@adminlab-desktop:/usr/local$ ls -ld
drwxr-xr-x 10 root root 4096 2010-07-02 13:08 .
adminlab@adminlab-desktop:/usr/local$ cd /bin
adminlab@adminlab-desktop:/bin$ ls -ld
drwxr-xr-x 2 root root 4096 2010-07-15 13:33 .
adminlab@adminlab-desktop:/bin$ cd /sbin/
adminlab@adminlab-desktop:/sbin$ ls -ld
drwxr-xr-x 2 root root 4096 2010-09-20 15:17 .
adminlab@adminlab-desktop:/sbin$ cd /lib/
adminlab@adminlab-desktop:/lib$ ls -ld
drwxr-xr-x 21 root root 12288 2010-09-20 15:17 .
adminlab@adminlab-desktop:/lib$ cd /home/adminlab/
adminlab@adminlab-desktop:~$ ls -ld
drwxr-xr-x 63 adminlab adminlab 12288 2010-10-24 12:30 .
adminlab@adminlab-desktop:~$

Tugas pendahuluan modul 4

Tugas Pendahuluan

1. Bagaimana memanggil perintah eksternal Linux dari dalam skrip shell?

2. Bagaimana cara mengetahui perintah apa saja yang disediakan oleh Linux?

Bagaimana kita dapat mengetahui suatu perintah termasuk perintah Linux atau

bawaan shellBash?


JAWAB


1. Cara memanggil perintah eksternal Linux dari dalam skrip shell adalah dengan menggunakan tanda backtick (`),Backtick menunjukkan bahwa teks yang diapitnya akan dieksekusi sebagai suatu perintah.Di dalam skrip shell,program eksternal sering di gunakan. Ada beberapa perintah builtin (echo, which dan test yang sudah umum). Ada banyak perintah lain yang berguna merupakan perintah Linux, bukan bawaan shell (Bash) seperti tr, grep, expr dan cut.

2. untuk mengetahui perintah-perintah apa saja yang disediakan oleh linux adalah dengan menggunakan perintah : $ man ls

Secara umum perintah-perintah Linux dan UNIX memiliki sintaks sbb : perintah [option…] [argumen…] Option merupakan pilihan yang dapat kita gunakan untuk memberikan hasil tertentu dari suatu perintah. Argumen umumnya merupakan sesuatu yang akan diproses oleh perintah, misalnya nama file atau nama direktori. Tanda [ ] merupakan simbol bahwa option dan argumen tidak harus selalu digunakan dalam menjalankan perintah. Tanda titik-titik menandakan bahwa baik option dan argumen dapat lebih dari satu. Seluruh perintah dalam Linux dan UNIX bersifat case sensitive, jadi perintah LS akan dianggap berbeda dengan ls.

Tugas pendahuluan modul 5

1. Apa perbedaan antara fungsi dan prosedur pada bahasa Pascal?


JAWABAN

1. Secara umum fungsi hampir sama dengan prosedur, dengan sedikit perubahan bahwa nama fungsi sekaligus berfungsi sebagai suatu peubah, sehingga dalam deklarasi fungsi harus dinyatakan tipe datanya.

2. Prosedur mempunyai struktur yang hampir sama dengan struktur program, yaitu terdiri dari nama prosedur, deklarasi-deklarasidan bagiam utama dari prosedur itu sendiri. Di dalam prosedur juga dimungkinkan ada
prosedur lain yang strukturnya sama. Bentuk ini dinamakan juga dengan prosedur tersarang (nested procedure). Prosedur diaktifkan menggunakan statemen prosedure (pemanggilan prosedur).

Kamis, 03 Juni 2010

SO pertemuan 4

Jelaskan apa yang dilakukan oleh kode C
pada slide No. 21
• Status waiting dinamakan pula blocked.
Terdapat pula status suspend,
blocked/suspend, dan ready/suspend.
Jelaskan 3 status terakhir tersebut!
• Jelaskan proses (trace) eksekusi program
dari sudut panjang processor! (pelajari
kembali konsep computer architecture).

1. yang dilakukan kode c adalah cara membuat proses baru
2. PENGHENTIAN PROSES
Suatu proses berhenti jika telah menyelesaikan pernyataan terakhir, dan
meminta pada sistem operasi untuk menghapusnya dengan menggunakan system call
exit. Proses mengembalikan semua data (output) ke parent proses melalui system call
wait. Kemudian proses dihapus dari list atau tabel sistem, dilanjutkan dengan
menghapus PCB.
Penghapusan proses ini akan menjadi sangat kompleks jika ternyata proses yang
akan dihentikan tersebut membuat proses-proses yang lain. Pada beberapa sistem,
proses-proses anak akan dihentikan secara otomatis jika proses induknya berhenti.
Namun, ada beberapa sistem yang menganggap bahwa proses anak ini terpisah dengan
induknya, sehingga proses anak tidak ikut dihentikan secara otomatis pada saat proses
induk dihentikan
B. Status Proses
Meskipun tiap-tiap proses terdiri dari suatu kesatuan yang terpisah namun
adakalanya proses-proses tersebut butuh untuk saling berinteraksi. Satu proses bisa
dibangkitkan dari output proses lainnya sebagai input.
Pada saat proses dieksekusi, akan terjadi perubahan status. Status proses
didefiniskan sebagai bagian dari aktivitas proses yang sedang berlangsung saat itu.
Gambar 3-1 menunjukkan diagram status proses. Status proses terdiri dari :
a. New: proses sedang dibuat.
b. Running: proses sedang dieksekusi.
c. Waiting: proses sedang menunggu beberapa event yang akan terjadi (seperti
menunggu untuk menyelesaikan I/O atau menerima sinyal).
d. Ready: proses menunggu jatah waktu dari CPU untuk diproses.
e. Terminated: proses telah selesai dieksekusi.
C.Informasi yang terdapat pada setiap proses meliputi :
a. Status Proses. New, ready, running, waiting dan terminated.
b. Program Counter. Menunjukkan alamat berikutnya yang akan dieksekusi oleh
proses tersebut.
c. CPU Registers. Register bervariasi tipe dan jumlahnya tergantung arsitektur
komputer yang bersangkutan. Register-register tersebut terdiri-atas: accumulator,
index register, stack pointer, dan register serbaguna dan beberapa informasi tentang
kode kondisi.
Selama Program Counter berjalan, status informasi harus disimpan pada saat terjadi
interrupt. Gambar 3-3 menunjukkan switching proses dari satu proses ke proses
berikutnya.
d. Informasi Penjadwalan CPU. Informasi tersebut berisi prioritas dari suatu proses,
pointer ke antrian penjadwalan, dan beberapa parameter penjadwalan yang lainnya.
e. Informasi Manajemen Memori. Informasi tersebut berisi nilai (basis) dan limit
register, page table, atau segment table tergantung pada sistem memory yang
digunakan oleh SO.
f. Informasi Accounting. Informasi tersebut berisi jumlah CPU dan real time yang
digunakan, time limits, account numbers, jumlah job atau proses, dll
g. Informasi Status I/O. Informasi tersebut berisi deretan I/O device (seperti tape
driver) yang dialokasikan untuk proses tersebut, deretan file yang dibuka, dll
D. Process Control Block (PCB)
Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB), juga
disebut sebuah control block. PCB berisikan banyak bagian dari informasi yang berhubungan dengan
sebuah proses yang spesifik, termasuk hal-hal di bawah ini:
•Status proses: status yang mungkin adalah new, ready, running, waiting, halted, dan seterusnya.
•Program counter: suatu penghitung yang mengindikasikan alamat dari instruksi selanjutnya yang
akan dieksekusi untuk proses tersebut.
•CPU register: Register bervariasi dalam jumlah dan tipenya, tergantung pada arsitektur komputer.
Register tersebut termasuk accumulator, index register, stack pointer, general-purposes register,
ditambah informasi condition-code. Bersama dengan program counter, keadaan/status informasi
harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja
dengan benar.
•Informasi manajemen memori: Informasi ini dapat termasuk suatu informasi sebagai nilai dari
dasar dan batas register, tabel page/halaman, atau tabel segmen tergantung pada sistem memori
yang digunakan oleh sistem operasi.
•Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu nyata yang digunakan,
batas waktu, jumlah account, jumlah job atau proses, dan banyak lagi
2. Definisi dari Proses, Thread, Mutual Exclution, Race Condition, Sinkronisasi, Deadlock, Starvation, Monitor, dan Semaphore!
PROSES
Definisi proses Secara tidak langsung, proses adalah program yang sedang dieksekusi. Menurut SilberSchatz, suatu proses adalah lebih dari sebuah kode program, yang terkadang disebut text section . Proses juga mencakup program counter , yaitu sebuah stack untuk menyimpan alamat dari instruksi yang akan dieksekusi selanjutnya dan register. Sebuah proses pada umumnya juga memiliki sebuah stack yang berisikan data-data yang dibutuhkan selama proses dieksekusi (seperti parameter method, alamat return dan variabel lokal), dan sebuah data section yang menyimpan variabel global. Sama halnya dengan SilberSchatz, Tanenbaum juga berpendapat bahwa proses adalah sebuah program yang dieksekusi yang mecakup program counter , register, dan variabel di dalamnya. termasuk
• Suatu program dalam pelaksanaan
• Sebuah contoh dari program yang berjalan pada komputer
• Entitas yang dapat ditugaskan dan dijalankan pada prosesor
• Sebuah unit aktivitas ditandai dengan pelaksanaan suatu urutan instruksi,keadaan saat ini, dan terkait set sumber daya sistem Juga dapat memikirkan suatu proses sebagai entitas yang terdiri dari sejumlah elemen.
THREAD
Thread adalah unit dasar dari penggunaan CPU, thread mengandung Thread ID, program counter , register set , dan stack . Sebuah Thread berbagi code section , data section , dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process . Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaan antara proses dengan thread tunggal dengan proses dengan thread yang banyak adalah proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu.
MUTUAL EXCLUSION
Adalah jaminan hanya satu proses yang mengakses sumber daya pada suatu interval waktu tertentu. Proses proses yang lain dilarang mengerjakan hal yang sama. Bagian program yang sedang mengakses memori atau sumber daya yang dipakai bersama disebut Critical Section/Region. Mutual Exclusion merupakan jaminan untuk mengatasi kondisi pacu agar tidak boleh 2 proses atau lebih memasuki Critical Section secara bersamaan. Kesuksesan proses – proses kongkuren memerlukan pendefinisian Critical Section dan memaksakan Mutual Exclusion di antara proses-proses kongkuren yang sedang berjalan. Pemaksaan Mutual Exclusion merupakan landasan pemrosesan kongkuren.

RACE CONDITON
Race Condition adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang terakhir selesai. Unutk mencegah race condition, proses-proses yang berjalan besamaan haus di disinkronisasi.
Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul. Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.
Bayangkan bahwa spooler direktori memiliki slot dengan jumlah yang sangat besar, diberi nomor 0, 1, 2, 3, 4,… masing-masing dapat memuat sebuah nama berkas. Juga bayangkan bahwa ada dua variabel bersama, out, penunjuk berkas berikutnya untuk dicetak, dan in, menunjuk slot kosong di direktori. Dua vaiabel tersebut dapat menamgami sebuah two-word berkas untuk semua proses. Dengan segera, slot 0, 1, 2, 3 kosong (berkas telah selesai dicetak), dan slot 4, 5, 6 sedang terisi (berisi nama dari berkas yang antre untuk dicetak). Lebih atau kurang secara besamaan, proses A dan B, mereka memutuskan untuk antre untuk sebuah berkas untuk dicetak.
SINKRONISASI
Koordinasi akses ke shared data, misalkan hanya satu proses yang dapat menggunakah shared var.
Contoh operasi terhadap var. “counter” harus dijamin di-eksekusi dalam satu kesatuan (atomik) :
counter := counter + 1;
counter := counter - 1;
Sinkronisasi merupakan “issue” penting dalam rancangan/implementasi OS (shared resources, data, dan multitasking).
DEADLOCK
eadlock adalah 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. Deadlock adalah masalah yang biasa terjadi ketika banyak proses yang membagi sebuah resource yang hanya boleh dirubah oleh satu proses saja dalam satu waktu. Di kehidupan nyata, deadlock dapat digambarkan dalam gambar berikut.Pada gambar diatas, deadlock dianalogikan sebagai dua antrian mobil yang akan menyeberangi jembatan. Dalam kasus diatas, antrian di sebelah kiri menunggu antrian kanan untuk mengosongkan jembatan (resource), begitu juga dengan antrian kanan. Akhirnya tidak terjadi kemajuan dalam kerja dua antrian tersebut.Misal ada proses A mempunyai resource X, proses B mempunyai resource Y. Kemudian kedua proses ini dijalankan bersama, proses A memerlukan resource Y dan proses B memerlukan resource X, tetapi kedua proses tidak akan memberikan resource yang dimiliki sebelum proses dirinya sendiri selesai dilakukan. Sehingga akan terjadi tunggu-menunggu.
STARVATION
Starvation adalah kondisi yang biasanya terjadi setelah deadlock. Proses yang kekurangan resource (karena terjadi deadlock) tidak akan pernah mendapat resource yang dibutuhkan sehingga mengalami starvation (kelaparan). Namun, starvation juga bisa terjadi tanpa deadlock. Hal ini ketika terdapat kesalahan dalam sistem sehingga terjadi ketimpangan dalam pembagian resouce. Satu proses selalu mendapat resource, sedangkan proses yang lain tidak pernah mendapatkannya. Ilustrasi starvation tanpa deadlock di dunia nyata dapat dilihat di bawah ini.Pada gambar diatas, pada antrian kanan terjadi starvation karena resource (jembatan) selalu dipakai oleh antrian kiri, dan antrian kanan tidak mendapatkan giliran.
MONITOR
Solusi sinkronisasi ini dikemukakan oleh Hoare pada tahun 1974. Monitor adalah kumpulan prosedur, variabel dan struktur data di satu modul atau paket khusus. Proses dapat memanggil prosedur-prosedur kapan pun diinginkan. Tapi proses tak dapat mengakses struktur data internal dalam monitor secara langsung. Hanya lewat prosedur-prosedur yang dideklarasikan minitor untuk mengakses struktur internal.
Properti-properti monitor adalah sebagai berikut:
i. Variabel-variabel data lokal, hanya dapat diakses oleh prosedur-prosedur dala monitor dan tidak oleh prosedur di luar monitor.
ii. Hanya satu proses yang dapat aktif di monitor pada satu saat. Kompilator harus mengimplementasi ini(mutual exclusion).
iii. Terdapat cara agar proses yang tidak dapat berlangsung di-blocked. Menambahkan variabel-variabel kondisi, dengan dua operasi, yaitu Wait dan Signal.
iv. Wait: Ketika prosedur monitor tidak dapat berkanjut (misal producer menemui buffer penuh) menyebabkan proses pemanggil diblocked dan mengizinkan proses lain masuk monitor.
v. Signal: Proses membangunkan partner-nya yang sedang diblocked dengan signal pada variabel kondisi yang sedang ditunggu partnernya.
vi. Versi Hoare: Setelah signal, membangunkan proses baru agar berjalan dan menunda proses lain.
vii. Versi Brinch Hansen: Setelah melakukan signal, proses segera keluar dari monitor.
Dengan memaksakan disiplin hanya satu proses pada satu saat yang berjalan pada monitor, monitor menyediakan fasilitas mutual exclusion. Variabel-variabel data dalam monitor hanya dapat diakses oleh satu proses pada satu saat. Struktur data bersama dapat dilindungi dengan menempatkannya dalam monitor. Jika data pada monitor merepresentasikan sumber daya, maka monitor menyediakan fasilitas mutual exclusion dalam mengakses sumber daya itu.
SEMAPHORE
Jika kita ingin dapat melakukan proses tulis lebih rumit kita membutuhkan sebuah bahasa untuk melakukannya. Kita akhirnya medefinisikan semaphore yang kita asumsikan sebagai sebuah operasi atomik.
Semaphore adalah pendekatan yang diajukan oleh Djikstra, dengan prinsip bahwa dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Seperti proses dapat dipaksa berhenti pada suatu saat, sampai proses mendapatkan penanda tertentu itu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan struktur penanda yang cocok untuk kebutuhan itu. Variabel khusus untuk penanda ini disebut semaphore.
Semaphore mempunyai dua sifat, yaitu:
i. Semaphore dapat diinisialisasi dengan nilai non-negatif.
ii. Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikan Djikstra adalah operasi P dan V.

Kamis, 22 April 2010

TUGAS SO3

DTrace adalah sebuah fasilitas perunut dinamis komprehensif yang tersedia di Sistem Operasi Solaris 10. Pemanfaatan fasilitas ini ditujukan kepada:
• Administrators System
• Teknisi Pendukung Layanan (Service Support Personnel)
• Pengembang Kernel
• Pengembang Program Applikasi
• DTrace dapat digunakan oleh root dan pengguna biasa yang diberi hak-khusus DTrace melalui fasilitas Role-based Access Control (RBAC) di Solaris 10.
Fitur-fitur DTrace
DTrace memiliki fitur-fitur berikut:
• Memungkinkan modifikasi dinamis terhadap sistem untuk mengumpulkan data-data tertentu
• Melakukan perunutan di sistem yang aktif
• Sangat aman karena tidak menimbulkan kegagalan fatal yang tak-terduga
• Memungkinkan perunutan terhadap program kernel dan program tingkat-pengguna
• Menjalankan fungsinya dengan beban-kerja rendah ketika perunutan terjadi dan beban-kerja nol ketika perunutan tidak dilakukan.
Kegagalan Transien
Fasilitas DTrace sangat berguna untuk menemukan penyebab utama kegagalan transien. Kegagalan transien adalah suatu perilaku yang tak-diharapkan tetapi tidak menyebabkan kegagalan fatal di sistem. Misalnya:
• Sebuah aplikasi terhenti dengan pesan kesalahan “file tidak ditemukan”
• Sebuah aplikasi tidak memberikan tanggapan apa-apa, terperangkap dalam sebuah loop di tingkat pengguna (userland level)
• Atau, kegagalan transien dipahami juga sebagai sebuah definisi operasi sistem yang “tidak seperti diharapkan”:
• “Kami berharap per CPU dapat mengakomodasi 100 pengguna, tetapi kenyataan hanya mendukung hingga 60 pengguna CPU.”
• “Setiap pagi antara pukul 9:30 dan 10:00, kinerja sistem menurun secara drastis”
• “Mengapa pewaktuan sistem “go way up” ketika saya menjalankan aplikasi ‘X’?”
DTrace dikembangkan untuk menyediakan metode yang lebih efisien dan efektif-biaya untuk mencari penyebab kegagaln transien. Selama ini telah tersedia utilitas-utilitas terfokus-proses untuk men-debug kegagalan transien seperti:
• truss(1)
• pstack(1)
• prstat(1M)
Sayangnya, utilitas-utilitas ini tidak dirancang untuk men-debug masalah-masalah sistemik
Utilitas seperti mdb(1) dan Solaris Crash Analysis Tool (Solaris CAT) dirangcang untuk analisa ***-kematian. Analisa ***-kematian (post-mortem analysis) dapat dilakukan untuk men-debug kegagalan transien dengan menginduksikan kegagalan fatal selama periode kegagalan transien. Sangat nyata, bahwa teknik ini memiliki kekurangan-kekurangan sebagai berikut:
• Memerlukan penginduksian kegagalan fatal yang hampir selalu memerlukan waktu-tanpa-layanan (downtine) yang lebih lama dibandingkan kegagalan transien-nya sendiri.
• Ini memerlukan pemecahan masalah yang dinamis dari snapshot statik status sistem.
Men-debug dengan Teknik-teknik yang Invasif
Utilitas-utilitas di atas tidak dapat menemukan penyebab utama kegagalan transien sehingga dibuat teknik-teknik yang lebih invasif. Ini memerlukan pengembangan instrumentasi khusus untuk program kernel dan program pengguna yang mengalami kegagalan. Teknik ini memerlukan fasilitas yang disebut Trace Normal Form (TNF) yang digunakan untuk mereproduksi masalah yang sama dengan menggunakan biner-biner ter-instrumentasi. Teknik ini dilakukan dengan:
• Menjalankan biner-biner ter-instrumentasi di lingkungan produksi
• Mereproduksi masalah transient di lingkungan pengembangan
Teknik seperti ini tidak banyak dipraktekan karena memerlukan waktu yang lama, besar kemungkinan mengalami kesalahan dan seringkali tidak efektif.
Kemampuan-kemampuan DTrace
Kerangka kerja DTrace memiliki sekitar 10000 titik-titik perunutan yang disebut probe. Ketika titik instrumentasi diaktifkan maka pengumpulan data-data di dalam kernel atau proses pengguna dapat dilakukan.
Sebuah contoh probe yang disediakan oleh kerangka-kerja DTrace adalah titik-masuk (entry) ke dalam setiap fungsi-fungsi kernel. Informasi yang dapat diperoleh ketika probe ini aktif adalah:
• Setiap argumen yang diberikan kepada fungsi tersebut
• Variable global yang ada di dalam Kernel
• Catatan waktu dalam nanosecond yang diperlukan ketika sebuah fungsi dipanggil
• Perunutan terhadap stack untuk mengindikasikan kode-kode apa yang dipanggil oleh fungsi ini
• Process yang sedang berjalan ketika fungsi ini dipanggil
• Thread yang membuat panggilan terhadap fungsi ini
Gunakan DTrace untuk mengeksplorasi terhadap semua aspek di dalam Solaris 10 OS sehingga bermanfaat untuk:
• Memahami bagaimana perangkat lunak tertentu bekerja
• Menentukan penyebab-utama masalah-masalah kinerja
• Mengamati semua lapisan fungsional perangkat lunak dari tingkat pengguna hingga kernel
• Melacak sumber dari perilaku tak-normal
DTrace dilengkapi dengan primitif-primitif manajemen data yang tangguh untuk menyingkirkan kebutuhan ***-pemprosesan data yang terkumpul. Data unwanted di pruned as cloase to the source as possible untuk mencegah beban-kerja akibat membangkitkan dan memfilter unwanted data. DTrace juga menyediakan mekanisme untuk merunut selama proses boot dan mendapatkan semua data perunutan dari kernel crash dump.
Arsitektur DTrace
DTrace membantu pemahaman kerja sistem perangkat lunak dengan kemampuannya untuk secara dinamis memodifikasi kernel dan proses pengguna untuk merekam data tambahan yang dispesifikasikan di lokasi tertentu.
Probe
Probe adalah sebuah lokasi program atau aktifitas – contoh, setiap tik pendetak sistem – dimana kepada probe DTrace dapat mengikatkan sebuah permintaan untuk melakukan sekumpulan aksi seperti merekam penelusuran stack, catatan waktu atau argumen sebuah fungsi.
Bagaimana Probe bekerja?
Probes mirip dengan sensor dapat-diprogram yang disisipkan di titik-titik strategis di dalam sistem operasi. DTrace berguna untuk memprogram sensor-sensor tertentu untuk merekam informasi yang diperlukan. Saat setiap probe memicu (fires), DTrace mengumpulkan data yang berasal dari probe dan menampilkannya ke pengguna. Jika tidak ada aksi dispesifikasikan, DTrace merekam kapan setiap probe memicu dan di CPU mana.
Penyedia (Providers)
Penyedie DTrace menyediakan sekitar 10000 berbagai tipe probe. Probe diimplementasikan oleh penyedia. Sebuah penyedia adalah modul kernel yang mengaktifkan probe agar memicu ketika diakses. Salah satu penyedia adalah penyedia fbt “funcation boundary. Penyedia ini menyediakan probe titik-masuk dan titik-balik untuk hampir semua fungsi di dalam modul kernel.
Bagaimana Probes diaktifkan ?
Probes dan aksi didefinisikan dengan menggunakan bahasa pemograman D. Bahasa D dibuat berbasiskan bahasa pemograman C. Biasanya program D disimpan di dalam file skrip berakhiran .d. Program D diteruskan kepada Konsumer DTrace. Konsumer DTrace generik utama adalah perintah dtrace(1M).
Program D yang dibuat oleh pengguna dikompilasi oleh Konsumer DTrace menjadi bentuk objek yang disebut D intermediate Format (DIT). DIT kemudian dikirim ke kerangka-kerja DTrace di dalam kernel untuk dieksekusi. Probe-probe yang terdapat di dalam program D kemudian di-enable dan penyedia bersangkutan melakukan instrumentasi yang diperlukan untuk memicu probe-probe tersebut.
Komponen-komponen DTrace
DTrace memiliki komponen-komponen berikut:
• Probe
• Penyedia
• Konsumer
• Bahasa pemograman D
Sebagian besar kerangka-kerja DTrace berada di dalam kernel.
Probe
Probe memiliki atribut-atribut berikut:
• Probe disediakan oleh sebuah penyedia
• Probe mengidentifikasikan nama modul dan fungsi yang menyatakan kemampuan instrumentasi probe tersebut
• Probe memiliki sebuah nama
Keempat atribut ini mendefinisikan sebuah 4-tuple yang secara unik mengidentifikasikan setiap probe:
provider:module:function:name
Selain itu, setiap probe juga memiliki identitas berupa bilangan bulat yang unik.
Penyedia
Penyedia merepresentasikan sebuah metodologi untuk melakukan instrumentasi terhadap sistem. Penyedia menyediakan probe bagi kerangka-kerja DTrace. Penyedia menerima informasi dari DTrace ketika sebuah probe diaktifkan (enable) dan mentransfer kontrol ke DTrace ketika probe yang aktif memicu.
Beberapa penyedia yang ditawarkan oleh DTrace terdiri dari:
• Penyedia syscall dapat secara dinamis merunut tititk-masuk dan titik-balik untuk setiap panggilan sistem (system call) Solaris.
• Penyedia sched dapat secara dinamis merunut aktifitas penjadwalan yang penting
• Penyedia sysinfo menyediakan probe-probe yang berhubungan dengan statistik “sys” di kernel.
• Penyedia io menyediakan probe-probe perunut yang berkaitan dengan input dan output (I/O) disk.
Bahasa Pemograman D
Bahasa pemograman D digunakan untuk menspesifikasikan probe yang diinginkan dan mengikatkan aksi ke probe tersebut. Spesifikasi probe dan aksinya ini dikonstruksikan di dalam skrip D. Sintak-sintak di dalam skrip D mirip dengan pasangan “pattern action” milik. Bahasa pemograman D banyak mengambil sintak-sintak dari bahasa pemograman C.
Meskipun tanpa pengetahuan tentang bahasa pemograman C ataupun awk(1), program D pada dasarnya cukup mudah dituliskan dan dipahami.
Fitur-fitr bahasa D antara lain:
• Menyediakan akses lengkap ke struktur data C Kernel, misalnya vnode_t
• Menyediakan akses lengkap ke variabel-variabel statik dan global kernel
• Menyediakan dukungan lengkapt terhadap operator-operator ANSI-C
• Mendukung tipe data strings sebagai tipe data built-in (tidak seperti C, yang menggunakan tipe char * atau char[ ] yang ambigu).
Sekilas Pandang DTrace
Utilitas dtrace menyediakan antarmuka generik ke semua layanan esensial yang disediakan oleh fasilitas DTrace facility, yaitu:
• Opsi untuk menampilkan himpunan probe dan penyedia yang dipublikasikan oleh DTrace
• Opsi untuk meng-enable probe secara langsung dengan menggunakan penspesifikasi deskripsi probe (provider, module, function, name)
• Opsi untuk menjalankan pengkompilasi D dan mengkompilasi satu atau lebih file program D atau program D dituliskan langsung di perintah baris
• Opsi untuk membangkitkan program perunut anonim
• Opsi untuk membangkitkan laporan stabilitas program
• Opsi untuk memodifikasi perunutan DTrace dan perilaku penyanggaan, dan meng-enable fitur-fitru pengkompilasi D tambahan
Sintaks umum contoh-contoh tersebut adalah:
dtrace -options provider:module:function:name {action}
Aksi DTrace
Aksi adalah pernyataan-pernyataan yang dapat diprogram oleh pengguna yang kemudian dieksekusi di dalam kernel oleh mesin virtual DTrace. Berikut ini adalah properti-properti aksi:
• Aksi dilakukan ketika probe memicu
• Aksi secara lengkap dapat diprogram dalam bahasa D
• Sebagian besar aksi merekam beberapa status spesifik di dalam sistem
• Sebagian aksi menggunakan ekspresi dalam bahasa D
Beberapa aksi dapat mengubah status sistem dengan cara yang telah terdefinisikan dengan baik
• Aksi seperti ini disebut aksi desktruktif
• Aksi destruktif tidak diizinkan secara default
Variabel-variabel Built-In DTrace
Berikut adalah beberapa variabel-varibel built-in D yang lazim dipergunakan:
• pid – Nomor ID proses
• execname – Nama file-tereksekusi (executable)
• timestamp – Selang waktu terhitung sejak boot dalam nanoseconds
• curthread – Pointer ke struktur kthread_t yang merepresentasikan thread
• probemod – Nama modul probe
• probefunc – Nama fungsi probe
• probename – Nama probe
Fungsi-fungsi Built-In DTrace
DTrace juga menyediakan banyak fungsi built-in untuk melakukan aksi. Contohnya fungsi trace ( ) yang merekam hasil ekspresi D ke dalam penyangga perunutan.
• trace(pid) merunut nomor ID proses
• trace(execname) merunut nama dari file-tereksekusi
• trace(probefunc) merunut nama fungsi sebuah probe
Menuliskan Skrip D
Program DTrace yang makin kompleks akan sulit jika dituliskan langsung di perintah baris. Perintah dtrace(1M) mendukung penggunaan skrip yang dispesifikasikan dengan opsi -s. Cara lain adalah dengan membuat file interpreter DTrace yang dapat dieksekusi langsung. File interpreter selalu diawali dengan baris:
#!/usr/sbin/dtrace -s
Contoh berikut adalah sebuah skrip yang merunut nama file-terksekusi pada saat terjadi titik-masuk setiap panggilan sistem:
# cat syscall.d
syscall:::entry
{
trace(execname);
}
Berdasarkan konvensi, skrip D diberikan akhiran .d suffix. Berikutnya skrip ini dapat dijalankan dengan cara berikut ini:
# dtrace -s sycall.d
Jika file syscall.d ditambahkan izin-akses eksekusi dan tambahkan baris pertama-nya pathname ke interpreter dtrace maka selanjutnya skrip ini dapat dieksekusi secara langsung:
#cat syscall.d
#!/usr/sbin/dtrace -s
syscall:entry
{
trace(execname);
}
# chmod +x syscall.d
# ./syscall.d
Aggregasi
Penggunaan aggregasi data akan lebih berguna daripada data-data individual dalam pemecahan pertanyaan yang berkaitan dengan kinerja. Contohnya, untuk mengetahui banyaknya page faults oleh sebuah process daripada terjadinya setiap individual page fault. Lebih bermanfaat untuk membuat tabel yang berisi nama proses dan jumlah total page faults setiap prosesnya.
Sintaks Aggregasi DTrace
Bentuk umum aggregasi DTrace adalah:
@name[ keys ] = aggfunc ( args );
• Variable-variable ini didefinisikan sebagai berikut:
• name – Name variabel aggregasi yang didahului oleh karakter @.
• keys – Kumpulan ekspresi D yang dipisahkan oleh simbol koma
• aggfunc – Salah satu fungsi-fungsi aggregasi DTrace
• args – Kumpulan argumen yang sesuai dengan fungsi aggregasi dipisahkan oleh simbol koma
Predikat
Program D terdiri dari sekumpulan klausa-klausa probe. Klausa probe memiliki bentuk umum sebagai berikut:
probe descriptions
/ predicate /
{
action statements
}
Predikat (predicate) adalah ekspresi D yang terletak diantara simbol garis-miring / /. Predikat dievaluasi saat probe memicu untuk menentukan apakah aksi-aksi terkaitnya akan dieksekusi. Jika ekspresi D dievaluasi dengan nilai nol maka berarti false; jika dievaluasi dengan nilai bukan-nol maka berarti true. Penggunaan predikat bersifat opsional. Predikat selalu ditempatkan diantara deskripsi probe dan pernyataan aksi.
Speculative Healing
Bagian ini menjelaskan sebuah fasilitas DTrace yang disebut perunutan spekulatif, yaitu kemampuan perunutan data sementara yang kemudian akan diteruskan ke penyangga perunutan atau dibuang. Di DTrace, mekanisme utama untuk menyaring perunutan data yang tidak diperlukan adalah dengan predikat. Predikat berguna ketika diketahui kapan sebuah probe memicu tanpa mempedulikan apakah kejadian probe-nya adalah kejadian yang sedang menjadi perhatian atau tidak.
Contoh, jika kejadian yang menjadi perhatian adalah aktifitas yang berkaitan dengan proses tertentu atau pendeskripsi file tertentu maka diketahui bahwa probe akan memicu jika probe ini terkait dengan proses atau pendeskripsi file yang sedang menjadi perhatian. Namun dalam situasi lain, bisa saja tidak diketahui pasti apakah sebuah kejadian probe menjadi perhatian atau tidak hingga beberapa lama setelah probe memicu.
Sebagai contoh, jika sebuah panggilan sistem secara tidak teratur mengalami kegagalan dengan kode kesalahan umum (misalnya, EIO atau EINVAL) maka pengamatan terhadap path kode yang menyebabkan kondisi kesalahan perlu dilakukan. Untuk menangkap path kode dapat dilakukan dengan meng-enable setiap probe – tetapi hanya panggilan sistem yang gagal yang dapat diisolasi dengan cara demikian predikat yang sesuai dapat dikonstruksikan.
Jika kegagalan-nya sporadis atau tak-menentu, dapat dipaksakan untuk melakukan perunutan terhadap semua kejadian yang mungkin menjadi perhatian dan kemudian melakukan ***-proses terhadap data untuk mem-filter kejadian yang tidak terkait dengan path kode yang gagal. Dalam kasus seperti ini, meskipun kejadian yang menjadi perhatian jumlah sedikit tetapi jumlah keseluruhan kejadian yang harus dirunut bisa sangat banyak, ini menjadikan ***-pemrosesan menjadi sangat menyulitkan.
Masalah seperti ini dapat diatasi dengan fasilitas perunutan spekulatif, dalam situasi seperti ini perunutan data sementara (tentative) dilakukan terhadap satu atau lebih lokasi probe kemudian membuat keputusan untuk mengkomitmen data ke penyangga prinsipal di lokasi probe yang lain. Hasilnya, data hasil perunutan hanya berisi keluaran dari kejadian yang menjadi perhatian, tidak diperlukan ***-pemrosesan dan beban-kerja DTrace menjadi kecil.
Fungsi-fungsi Spekulatif DTrace
• speculation: memberikan nilai-balik berupa identitas untuk penyangga spekulatif baru
• speculate: mengindikasikan bahwa klausa berikutnya akan dirunut ke penyangga spekulatif dengan identitas ID
• commit: mengkomitmen penyangga spekulatif terkait dengan ID
• discard: membuang penyangga spekulatif terkait dengan ID
Toolkit DTrace
Toolkit DTrace adalah sekumpulan skrip-skrip DTrace, dokumentasi, dan perintah-perintah baris yang dapat digunakan dengan segera untuk memanfaatkan DTrace tanpa perlu menuliskan skripnya dari awal. Version 0.96 dari toolkit ini terdiri dari lebih 100 scripts, dan dapat diunduh dari: http://www.opensolaris.org/os/community/dtrace/dtracetoolkit
Komponen-komponen utama toolkit DTrace adalah:
• Skrip-skrip – Terdapat beberapa skrip utama di direktori teratas. Skrip-skrip lain dikumpulkan di dalam sub-direktori seperti Disk dan FS. Direktori bin berisi link-link simbolik ke semua skrip yang ada.
• Halaman-halaman manual di direktori Man
• File-file contoh di direktori Docs/Examples
• Kumpulan perintah-perintah baris di file Docs/oneliners.txt
• Setelah mempelajari dasar-dasar DTrace, sekarang kita akan mencoba membuat sebuah program D sederhana untuk menunjukkan berapa kali sebuah fungsi dalam program kita dipanggil setiap detiknya, misalnya saat kita diminta untuk menghitung transaction per second untuk sebuah program.
• Untuk itu, kita akan memakai probe yang lumayan unik, yaitu dari provider pid. Probe ini memungkinkan kita untuk berhenti pada saat sebuah function dalam sebuah proses sedang dikerjakan. Penamaan probe-nya seperti: pid1234 dimana 1234 adalah PID yang akan di-trace.
• Berikut adalah contoh program D-nya:
• #pragma D option quiet

• BEGIN
• {
• start = timestamp;
• }

• pid$1::prosesHitung:return
• {
• @total["PROSES"] = count();
• }

• tick-1sec
• {
• printa(@total);
• clear(@total);
• }

• END
• {
• printa(@total);
• printf("total time: %d secs.\n", (timestamp - start) / 1000000000);
• }
• Program di atas menghitung berapa kali function dengan nama prosesHitung dipanggil selama satu detik, dan mencetaknya setiap detik. Pada contoh program di atas, kita tidak menyertakan PID langsung pada program, tetapi melalui sebuah argumen $1, sehingga kita dapat program D di atas dengan perintah seperti:
• dtrace -s namafile.d 1234
• Dimana namafile.d adalah nama file yang berisi program D dan 1234 adalah PID yang akan di-trace.


Tentang FreeBSD
FreeBSD adalah suatu sistem operasi yang bekerja layaknya UNIX tetapi bukan turunan dari UNIX. Pertama kali dikembangkan oleh Berkeley Software Distribution pada tahun 1993, dan pertama kali dirilis versi FreeBSD 2.0 pada Januari 1995. Clone dari FreeBSD yang diketahui sejak 2001 antara lain DragonFly, OpenBSD, NetBSD, dan Mac OSX.
Operating system ini dijuluki FreebSD karena software ini gratis untuk digunakan oleh siapapun termasuk untuk kepentingan komersial, source code yang tersedia dengan gratis, siapapun dapat meningkatkan performa FreeBSD ini atau menemukan bug untuk mensubmit source codenya, kata “free” dapat diartikan sebagai gratis, atau dapat digunakan sesuai keinginan user.
Versi FreeBSD
FreeBSD mempunyai dua versi ketika dirilis. Versi tersebut antara lain versi -CURRENT dan versi -STABLE. Versi -CURRENT adalah versi yang pertama kali dirilis, biasanya dipakai oleh para developer yang sudah mahir tentang cara kerja FreeBSD agar dapat menemukan berbagai bugs paska produksi. Setelah versi -CURRENT selesai diperbaiki, maka versi tersebut tadi akan menjadi versi -STABLE yang sudah siap digunakan bagi siapapun. Oleh karena itu bagi yang kurang familiar dan baru mencoba FreeBSD, agar menggunakan versi -CURRENT karena versi ini ditujukan oleh orang yang kapabel untuk mengindentifikasi masalah yang muncul di versi terbaru ini. Tujuan dari adanya versi -CURRENT dan -STABLE ini adalah untuk mengetest versi terakhir dari software ini, memberitahukan fixed bugs bagi para pengguna, dan meyakinkan pengguna dengan fitur-fitur terbaru dan masalah yang sudah diatasi dari versi -CURRENT. Selain perbedaan -CURRENT dan -STABLE tadi, pemberian nama dari versi -STABLE juga telah dibuat sedemikian rupa sehingga para pengguna tahu berapa kali perbaikan telah dilakukan.
Linux
Linux (diucapkan 'l?n?ks atau /'l?n?ks/)[1] adalah nama yang diberikan kepada sistem operasi komputer bertipe Unix. Linux merupakan salah satu contoh hasil pengembangan perangkat lunak bebas dan sumber terbuka utama. Seperti perangkat lunak bebas dan sumber terbuka lainnya pada umumnya, kode sumber Linux dapat dimodifikasi, digunakan dan didistribusikan kembali secara bebas oleh siapa saja.[2]

Nama "Linux" berasal dari nama kernelnya (kernel Linux), yang diperkenalkan tahun 1991 oleh Linus Torvalds. Sistemnya, peralatan sistem dan pustakanya umumnya berasal dari sistem operasi GNU, yang diumumkan tahun 1983 oleh Richard Stallman. Kontribusi GNU adalah dasar dari munculnya nama alternatif GNU/Linux.[3]

Linux telah lama dikenal untuk penggunaannya di server, dan didukung oleh perusahaan-perusahaan komputer ternama seperti Intel, Dell, Hewlett-Packard, IBM, Novell, Oracle Corporation, Red Hat, dan Sun Microsystems. Linux digunakan sebagai sistem operasi di berbagai macam jenis perangkat keras komputer, termasuk komputer desktop, superkomputer,[4], dan sistem benam seperti pembaca buku elektronik, sistem permainan video (PlayStation 2, PlayStation 3 dan XBox[5]), telepon genggam dan router. Para pengamat teknologi informatika beranggapan kesuksesan Linux dikarenakan Linux tidak bergantung kepada vendor (vendor independence), biaya operasional yang rendah, dan kompatibilitas yang tinggi dibandingkan versi UNIX tak bebas, serta faktor keamanan dan kestabilannya yang tinggi dibandingkan dengan sistem operasi lainnya seperti Microsoft Windows. Ciri-ciri ini juga menjadi bukti atas keunggulan model pengembangan perangkat lunak sumber terbuka (opensource software).

Sistem operasi Linux yang dikenal dengan istilah distribusi Linux (Linux distribution) atau distro Linux umumnya sudah termasuk perangkat-perangkat lunak pendukung seperti server web, bahasa pemrograman, basisdata, tampilan desktop (desktop environment) seperti GNOME,KDE dan Xfce juga memiliki paket aplikasi perkantoran (office suite) seperti OpenOffice.org, KOffice, Abiword, dan Gnumeric.

Pemrograman di Linux

Sebagian besar distribusi Linux mendukung banyak bahasa pemrograman. Koleksi peralatan untuk membangun aplikasi dan program-program sistem operasi yang umum terdapat di dalam GNU toolchain, yang terdiri atas GNU Compiler Collection (GCC) dan GNU build system. GCC menyediakan kompilator untuk Ada, C, C++, Java, dan Fortran. Kernel Linux sendiri ditulis untuk dapat dikompilasi oleh GCC. Kompilator tak bebas (proprietary) untuk Linux antara lain adalah Intel C++ Compiler dan IBM XL C/C++ Compiler.

Kebanyakan distribusi juga memiliki dukungan untuk Perl, Ruby, Python dan bahasa pemrograman dinamis lainnya. Contoh bahasa pemrograman yang tidak umum tetapi tetap mendapat dukungan di Linux antara lain adalah C# dengan proyek Mono yang disponsori oleh Novell, dan Scheme. Sejumlah Java Virtual Machine dan peralatan pengembang jalan di Linux termasuk Sun Microsystems JVM (HotSpot), dan J2SE RE IBM, serta proyek-proyek sumber terbuka lainnya seperti Kaffe. Dua kerangka kerja utama untuk pengembangan aplikasi grafis di Linux adalah GNOME dan KDE. Proyek-proyek ini berbasiskan GTK+ dan Qt. Keduanya mendukung beragam bahasa pemrograman. Untuk Integrated development environment terdapat Anjuta, Code::Blocks, Eclipse, KDevelop, Lazarus, MonoDevelop, NetBeans, dan Omnis Studio, sedangkan penyunting teks yang telah lama tersedia adalah Vim dan Emacs.[23]
Solaris
Solaris adalah Unix sistem operasi yang diperkenalkan oleh Sun Microsystems pada tahun 1992 sebagai pengganti SunOS. Solaris dikenal dengan skalabilitas, terutama pada SPARC sistem, dan banyak fitur inovatif yang berasal seperti DTrace dan ZFS. Solaris mendukung berbasis SPARC dan x86 berbasis workstation dan server dari Sun dan vendor lainnya, dengan upaya dilakukan untuk port ke platform tambahan.
Solaris disertifikasi terhadap Spesifikasi Single Unix. Meskipun secara historis dikembangkan sebagai perangkat lunak berpemilik, itu didukung pada sistem yang dibuat oleh semua vendor server utama, dan sebagian besar yang basis kode sekarang perangkat lunak open source melalui proyek OpenSolaris.
Unix
Unix atau UNIX adalah sebuah sistem operasi komputer yang diawali dari project Multics (Multiplexed Information and Computing Service) pada tahun 1965 yang dilakukan American Telephone and Telegraph AT&T, General Electric (GE), dan Institut Teknologi Massachusetts (MIT), dengan biaya dari Departemen Pertahanan Amerika (Departement of Defence Advenced Research Project, DARPA atau ARPA), UNIX didesain sebagai Sistem operasi yang portable, multi-tasking dan multi-user.
Sistem operasi Unix digunakan secara luas baik sebagai server atau workstation. Arsitektur Unix dan model client/server merupakan elemen yang paling penting dalam perkembangan internet dan mengubah proses komputasi secara terpusat dalam jaringan dari pada proses tunggal di komputer. Linux, merupakan sistem operasi yang diadopsi dari Unix dan tersedia secara bebas mendapat popularitas sebagai alternatif dari sistem operasi proprietary seperti Microsoft Windows
Pengguna lain dalam sistem operasi Linux diluar Owner dan Group
Selain identitas kepemilikan diatas, sebuah file juga mempunyai informasi untuk mengatur siapa yang berhak untuk membaca, menulis [mengubah] atau menjalankan file tersebut.
Model akses terhadap sebuah file dibedakan menjadi tiga yaitu Read [baca], Write [tulis] dan eXecute [eksekusi].
contoh :
al3x@TheMentor:~$ ls -la MyJava.java
-rwxrwxrwx 1 al3x al3x 0 2005-08-25 20:04 MyJava.java
al3x@TheMentor:~$
kolom pertama yang berisi -rwxrwxrwx
• 1 karakter awal [ "-" ] sebagai penanda antara file dan direktory
• 3 karakter berikutnya ["rwx"] menandakan akses permison buat user
• 3 karakter berikutnya ["rwx"] merupakan akses permision buat group
• 3 karakter berikutnya ["rwx"] menandakan akses permison buat other
kolom ke-3 dan ke-4 al3x al3x yang menandakan bahwa file tersebut adalah milik al3x dengan group al3x.
Angka 0 berikutnya menandakan ukuran dari file

Senin, 05 April 2010

tugas so3

System Components
∎ Process Management
∎ Main Memory Management
∎ Secondary-Storage Management
∎ I/O System Management
∎ File Management
∎ Support services:
∎ Protection System
∎ Networking
∎ Command-Interpreter System

Process Management
∎ Proses adalah sebuah program yang sedang
dijalankan (eksekusi).
∎ Suatu proses memerlukan resources pada saat
ekesekusi: CPU time, memory, files dan I/O devices
∎ Sistim operasi bertanggung jawab terhadap
aktifitas yang berhubungan dengan manajemen
proses:
∎ Process creation & deletion.
∎ Process suspension (block) & resumption.
∎ Mekanisme:
• Sinkronisasi antar proses
• Komunikasi antar proses

Main-Memory Management
∎ Memori sebagai tempat penyimpanan instruksi/data dari
program
∎ Storage yang cepat sehingga dapat mengimbangi kecepatan
eksekusi instruksi CPU
∎ Terdiri dari “array of words/bytes” yang besar
∎ Address digunakan untuk mengakses data (shared oleh CPU dan
I/O devices)
∎ Umumnya main memory bersifat “volatile” – tidak
permanent. Isinya akan hilang jika komputer di matikan.
∎ Manajement memori:
∎ Melacak pemakaian memori (siapa dan berapa besar?).
∎ Memilih program mana yang akan diload ke memori.
∎ Alokasi dan De-alokasi memori fisik untuk program

System Structure
∎ metode mengatur dan membangun OS
∎ Contoh: MS-DOS
∎ Saat dirancang kemampuan PC sangat minimal
• Prosesor: 8086 (10 MHz), Max. memory: 640 Kb
∎ MS-DOS – dibuat dengan menyediakan “fungsional”
dari OS sebanyak mungkin pada resources yang
sangat terbatas (memori)
∎ Tidak dalam bentuk modul => monolithic (satu
kesatuan):
• MS-DOS menjadi satu kesatuan besar tanpa batasan jelas –
fungsional dan interface
• Terdapat struktur yang sangat sederhana dan “proteksi” yang
longgar (single user system)

Virtual Machines
∎ Misalkan terdapat system program => control program
yang mengatur pemakaian resources hardware.
∎ Control program = trap system call + hardware acces.
∎ Control program memberikan fasilitas ke proses user
∎ Mendapatkan jatah CPU dan memori.
∎ Menyediakan interface “identik” dengan apa yang disediakan oleh
hardware => sharing devices untuk berbagai proses.
∎ Virtual machine => control program yang minimal
∎ VM memberikan ilusi multitasking: seolah-olah terdapat prosesor
dan memori ekslusif digunakan (virtual machine).
∎ VM memilah fungsi multitasking dan implementasi extended
machine (tergantung user proses) => flexible dan lebih mudah
untuk maintained (proteksi).

Kamis, 18 Maret 2010

tugas so

1. Cara kerja sistem komputer berbasis interupsi

Langkah-langkah mekanisme interrupt yang disebabkan perangkat masukan atau keluaran, yaitu:
1. Perangkat M/K mengirim sinyal interrupt.
Ada tiga kemungkinan penyebab perangkat M/K mengirimkan interrupt, yaitu:
a. Input Ready.
b. Output Complete.
c. Error.

2. Processor menerima sinyal interrupt.
Dalam pemeriksaan terjadinya interrupt, Processor tidak mengeksekusi instruksi-instruksi seperti pada polling, melainkan hanya semacam validasi bit pada interrupt-request line.

3. Penyimpanan informasi proses yang sedang dieksekusi.
Tujuan dari penyimpanan informasi proses adalah agar data dari proses yang akan ditunda ini tidak terganggu oleh eksekusi interrupt routine.

4. Processor mengidentifikasi penyebab interrupt.
Untuk mengidentifikasi penyebab interrupt, memori me-load rutin penanganan interrupt (jika belum ada di memori). Kemudian Processor mengeksekusi routine tersebut. Interrupt handler akan memeriksa satu-persatu perangkat M/K untuk mengetahui perangkat mana yang mengirim interrupt.

5. Processor mengeksekusi interrupt routine sampai return.
Setelah perangkat M/K yang mengirim interrupt ditemukan, Processor mengeksekusi interrupt routine yang sesuai dengan perangkat itu. interrupt routine akan dieksekusi sampai return.

6. Processor melanjutkan proses yang sebelumnya ditunda.
Setelah interrupt routine selesai dieksekusi, Processor akan kembali mengeksekusi proses yang sebelumnya ditunda. Proses yang sedang dieksekusi di-interrupt, akan dilakukan penyelamatan data context. Data context terdiri dari isi PC, isi register, status proses, dan informasi lain yang diperlukan agar proses yang di-interrupt dapat kembali dieksekusi bila interrupt telah selesai

2. POLLING
polling adalah ketika host mengalami looping yaitu membaca status register secara terus-menerus sampai status busy di-clear. Pada dasarnya polling dapat dikatakan efisien. Akan tetapi polling menjadi tidak efisien ketika setelah berulang-ulang melakukan looping, hanya menemukan sedikit device yang siap untuk men-service, karena CPU processing yang tersisa belum selesai.
VEKTOR INTERUPSI

Merupakan nomor awal dari memori-program yang menampung ISR untuk melayani permintaan interupsi tersebut. Vektor interupsi itu dipakai untuk melaksanakan inststuksi LCALL yang diaktipkan secara perangkat keras.

3. HIRARKI MEMORI
Hierarki Memori dalam arsitektur komputer adalah sebuah pedoman yang dilakukan oleh para perancang demi menyetarakan kapasitas, waktu akses, dan harga memori untuk tiap bitnya. Hirarki Memori secara umum yaitu hierarki memori tradisional dan hierarki memori kontemporer.
Gbr. Hirarki Memori Kontemporer
1. Register Prosesor . Ukurannya yang paling kecil tapi memiliki waktu akses yang paling cepat, umumnya hanya 1 siklus CPU saja.
2. Memori Cache. Mikroprosesor, yang disusun berdasarkan kedekatannya dengan prosesor (level-1, level-2, level-3, dan seterusnya). Memori cache mikroprosesor dikelaskan ke dalam tingkatan-tingkatannya sendiri:
1. level-1: memiliki ukuran paling kecil di antara semua cache, sekitar puluhan kilobyte saja. Kecepatannya paling cepat di antara semua cache.
2. level-2: memiliki ukuran yang lebih besar dibandingkan dengan cache level-1, yakni sekitar 64 kilobyte, 256 kilobyte, 512 kilobyte, 1024 kilobyte, atau lebih besar. Meski demikian, kecepatannya lebih lambat dibandingkan dengan level-1, dengan nilai latency kira-kira 2 kali hingga 10 kali. Cache level-2 ini bersifat opsional. Beberapa prosesor murah dan prosesor sebelum Intel Pentium tidak memiliki cache level-2.
3. level-3: memiliki ukuran yang lebih besar dibandingkan dengan cache level-2, yakni sekitar beberapa megabyte tapi agak lambat. Cache ini bersifat opsional.
3. Memori Utama. Memiliki akses yang jauh lebih lambat dibandingkan dengan memori cache, dengan waktu akses hingga beberapa ratus siklus CPU, tapi ukurannya mencapai satuan gigabyte. Waktu akses pun kadang-kadang tidak seragam, khususnya dalam kasus mesin-mesin Non-uniform memory access (NUMA).
4. Cache Memori, yang sebenarnya merupakan memori yang digunakan dalam memori utama untuk membantu kerja cakram magnetis.
5. Cakram Magnetis
6. Tape Magnetis.
7. Cakram Optik.

Kamis, 11 Maret 2010

so

Sistem Operasi
Definisi Sistem Operasi
Sistem Operasi didefinisikan sebagai sebuah program yang mengatur perangkat keras komputer, dengan menyediakan landasan untuk aplikasi yang berada di atasnya, serta bertindak sebagai penghubung antara para pengguna dengan perangkat keras. Sistem Operasi bertugas untuk mengendalikan (kontrol) serta mengkoordinasikan pengunaan perangkat keras untuk berbagai program aplikasi untuk bermacam-macam pengguna dan membuat penggunaan sumber-daya komputer menjadi efisien.

Sejarah Perkembangan Sistem Operasi

Sistem Operasi telah berkembang selama lebih dari 40 tahun dengan dua tujuan utama. Pertama, Sistem Operasi mencoba mengatur aktivitas-aktivitas komputasi untuk memastikan pendaya-gunaan yang baik dari sistem komputasi tersebut. Kedua, menyediakan lingkungan yang nyaman untuk pengembangan dan jalankan dari program.

Pada awalnya, sistem komputer digunakan dari depan konsol. Perangkat lunak seperti assembler, loader, linker dan kompilator meningkatkan kenyamanan dari sistem pemrograman, tapi juga memerlukan waktu set-up yang banyak. Untuk mengurangi waktu set-up tersebut, digunakan jasa operator dan menggabungkan tugas-tugas yang sama (sistem batch).

Sistem batch mengizinkan pengurutan tugas secara otomatis dengan menggunakan Sistem Operasi yang resident dan memberikan peningkatan yang cukup besar dalam utilisasi komputer. Komputer tidak perlu lagi menunggu operasi oleh pengguna. Tapi utilisasi CPU tetap saja rendah. Hal ini dikarenakan lambatnya kecepatan alat-alat untuk M/K relatif terhadap kecepatan CPU. Operasi off-line dari alat-alat yang lambat bertujuan untuk menggunakan beberapa sistem reader-to-tape dan tape-to-printer untuk satu CPU. Untuk meningkatkan keseluruhan kemampuan dari system komputer, para developer memperkenalkan konsep multiprogramming.


Hak Kekayaan Intelektual

''Hak atas Kekayaan Intelektual'' (HaKI) merupakan terjemahan atas istilah ''Intellectual Property Right'' (IPR). Istilah tersebut terdiri dari tiga kata kunci yaitu: ''Hak'', ''Kekayaan'' dan ''Intelektual'' HaKI merupakan hak-hak (wewenang/kekuasaan) untuk berbuat sesuatu atas Kekayaan Intelektual tersebut, yang diatur oleh norma-norma atau hukum-hukum yang berlaku.

Aneka Ragam HaKI

• Hak Cipta (Copyright).
• Paten (Patent).
• Merk Dagang (Trademark).
• Rahasia Dagang (Trade Secret).
• Service Mark.
• Desain Industri.
• Desain Tata Letak Sirkuit Terpadu.
• Indikasi Geografis.

HaKI Perangkat Lunak

• Perangkat Lunak Berpemilik : perangkat lunak yang tidak bebas atau pun semi-bebas
• Perangkat Komersial : perangkat lunak yang dikembangkan oleh kalangan bisnis untuk memperoleh keuntungan dari penggunaannya.
• Perangkat Lunak Semi-Bebas : perangkat lunak yang tidak bebas, tapi mengizinkan setiap orang untuk menggunakan, menyalin, mendistribusikan, dan memodifikasinya (termasuk distribusi dari versi yang telah dimodifikasi) untuk tujuan tertentu (Umpama nirlaba).
• Public Domain : perangkat lunak yang tanpa hak cipta.
• Freeware : tidak terdefinisi dengan jelas, tapi biasanya digunakan untuk paket-paket yang mengizinkan redistribusi tetapi bukan pemodifikasian (dan kode programnya tidak tersedia).
• Shareware : perangkat lunak yang mengizinkan orang-orang untuk meredistribusikan salinannya, tetapi mereka yang terus menggunakannya diminta untuk membayar biaya lisensi.
• Perangkat Lunak Bebas : perangkat lunak yang mengizinkan siapa pun untuk menggunakan, menyalin, dan mendistribusikan, baik dimodifikasi atau pun tidak, secara gratis atau pun dengan biaya.
• Copylefted/Non-Copylefted : perangkat lunak bebas yang ketentuan pendistribusinya tidak memperbolehkan untuk menambah batasan-batasan tambahan – jika mendistribusikan atau memodifikasi perangkat lunak tersebut.
• Perangkat Lunak Kode Terbuka : membuka kode sumber (source code) dari sebuah perangkat lunak.
• GNU General Public License : sebuah kumpulan ketentuan pendistribusian tertentu untuk meng-copyleft-kan sebuah program.


Perangkat lunak bebas ialah perihal kebebasan, bukan harga. Suatu perangkat lunak dapat dimasukkan dalam kategori perangkat lunak bebas bila setiap orang memiliki kebebasan tersebut. Kebebasan yang diberikan perangkat lunak bebas dijamin oleh copyleft, suatu cara yang dijamin oleh hukum untuk melindungi kebebasan para pengguna perangkat lunak bebas. Keuntungan yang diperoleh dari penggunaan perangkat lunak bebas adalah karena serbaguna dan efektif dalam keanekaragaman jenis aplikasi.