Tugas OFFClass 3
Rangkuman LINUX
PA01
Muhamad Nugroho Purnomo
1501143286
Tubagus Miftah Farid Azhar
1501164795
Yosua Gunawan
1501158256
Proses Managemen pada LINUX
Manajemen Proses Linux adalah salah satu hal yang sangat penting yang harus dikuasai oleh seorang Teknisi Komputer. Kenapa? Karena selain kita mengetahui proses di Windows, kita harus tahu proses di Linux dan dengan penguasaan manajemen prose ini kita bisa mengetahui proses apa saja yang running pada setiap user. Atau dalam suatu jaringan juga kita bisa
melakukan controlling terhadap proses setiap client.
Dalam Manajemen proses beberapa hal penting yang harus dikuasai, yaitu : 1. Mengetahui proses yang terjadi Linux
2. Dapat melakukan proses controlling terhadap proses di Linux
3. Menghentikan proses yang tidak dibutuhkan dan mengurangi performa Linux
TIPE PROSES
Terdapat beberapa tipe proses yang dikenal dalam OS berbasis Linux pada umumnya, antara lain:
1. Interactive : proses yang dimulai (dan dikontrol oleh) shell[i][i][i]. Bisa tampak di luar (foreground) ataupun hanya di dalam (background).
2. Batch : proses yang tidak berhubungan dengan terminal, tetapi menunggu untuk dieksekusi secara berurutan (sekuensial).
3. Daemon : proses yang dimulai ketika Linux booting dan berjalan secara background. Proses ini menunggu permintaan dari proses lainnya, bila tidak ada request, maka berada dalam keadaan ‘idle’.
Dalam Linux, sifat-sifat proses dibagi menjadi tiga bagian, yakni: Identitas Proses, Lingkungan, dan Konteks.
IDENTITAS PROSES
Identitas proses memuat beberapa hal penting berikut:
Mandat (Credentials) → setiap proses harus memiliki sebuah user ID dan satu atau lebih group ID yang menentukan hak proses untuk mengakses sumber daya sistem dan file.
Personality → tidak ditemukan dalam sistem UNIX, namun dalam Linux setiap proses memiliki sebuah pengenal pribadi (personality) yang dapat (sedikit) mengubah system call tertentu secara semantic. Terutama digunakan oleh library emulation agar system call dapat kompatibel dengan bentuk tertentu UNIX.
Status Proses yang dikenali dalam Linux
1. Task Running : Proses yang siap untuk dieksekusi CPU
2. Task Interruptable : Proses yang menunggu sebuah kondisi. Interupsi, Sinyal dan aktifitas lain akan membangunkan proses.
3. Task Uninterruptable : Proses yang sedang sleep, dan tidak dapat di interrupt oleh signal.
4. Task Stopped : Proses yang dihentikan
5. Task Zombie : Proses telah berhenti, namun masih memiliki struktur data
ditask_struct di task vektor dan masih memegang sumber daya yang tidak digunakan lagi.
Setiap proses diberi nomor khusus sebagai identifikasi yang disebut process identification atau PID berupa angka integer unik.
Jika proses selesai (Terminated) maka semua sumber daya yang digunakan termasuk PID dibebaskan kembali.
Proses dibuat menggunakan system call fork() yang sering disebut forking proses System call fork() mengkopi proses pemanggil sehingga akan terdapat 2 proses yaitu :
1. Proses pemanggil disebut PARENT
2. Proses hasil kopian disebut CHILD
Proses CHILD identik dengan proses PARENT-nya tetapi memiliki PID yang berbeda.
Setelah proses baru (child) berhasil dibuat eksekusi dilanjutkan secara normal di masing –masing proses pada aris setelah pemanggilan system call fork().
Proses pemanggil (PARENT) dapat melakukan forking proses lebih dari satu kali sehingga memungkinkan terdapat banyak proses CHILD yang dieksekusi.
Proses CHILD dapat melakukan forking proses seperti halnya PARENT sehingga dapat terbentuk struktur pohon proses.
Sedangkan pada proses penghentian pada OS linux, 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.
Parent dapat menghentikan eksekusi proses child dengan menggunakan system call abort. Proses anak dihentikan parent karena beberapa alasan, antara lain :
Tugas child tidak dibutuhkan lebih lanjut
Parent berhenti, karena system operasi tidak mengijinkan child untuk melanjutkan jika parent berhenti dan terminasi dilanjutkan
Memory Management pada LINUX
Memory Fisik
Bagian ini menjelaskan bagaimana linux menangani memori dalam sistem. Memori managemen merupakan salah satu bagian terpenting dalam sistem operasi. Karena adanya keterbatasan memori, diperlukan suatu strategi dalam menangani masalah ini. Jalan keluarnya adalah dengan menggunakan memori virtual. Dengan memori virtual, memori tampak lebih besar daripada ukuran yang sebenarnya.
Dengan memori virtual kita dapat:
1. Ruang alamat yang besar
Sistem operasi membuat memori terlihat lebih besar daripada ukuran memori sebenarnya. Memori virtual bisa beberapa kali lebih besar daripada memori fisiknya.
2. Pembagian memori fisik yang adil
Managemen memori membuat pembagian yang adil dalam pengalokasian memori antara proses-proses.
3. Perlindungan
Memori managemen menjamin setiap proses dalam sistem terlindung dari proses-proses lainnya. Dengan demikian, program yang crash tidak akan mempengaruhi proses lain dalam sistem tersebut.
4. Penggunaan memori virtual bersama
Memori virtual mengizinkan dua buah proses berbagi memori diantara
keduanya, contohnya dalam shared library. Kode library dapat berada di satu tempat, dan tidak dikopi pada dua program yang berbeda.
Memori fisik dan memori virtual dibagi menjadi bagian-bagian yang
disebut page. Page ini memiliki ukuran yang sama besar. Tiap page ini punya nomor yang unik, yaitu Page Frame Number (PFN). Untuk setiap instruksi dalam program, CPU melakukan
mapping dari alamat virtual ke memori fisik yang sebenarnya.
Penerjemahan alamat di antara virtual dan memori fisik dilakukan oleh CPU menggunakan tabel page untuk proses x dan proses y. Ini menunjukkan virtial PFN 0 dari proses x dimap ke memori fisik PFN 1. Setiap anggota tabel page mengandung informasi berikut ini:
1. Virtual PFN
2. PFN fisik
3. informasi akses page dari page tersebut
Untuk menerjemahkan alamat virtual ke alamat fisik, pertama-tama CPU harus
menangani alamat virtual PFN dan offsetnya di virtual page. CPU mencari tabel page proses dan mancari anggota yang sesuai degan virtual PFN. Ini memberikan PFN fisik yang dicari. CPU kemudian mengambil PFN fisik dan mengalikannya dengan besar page untuk mendapat alamat basis page tersebut di dalam memori fisik. Terakhir, CPU menambahkan offset ke instruksi atau data yang dibutuhkan. Dengan cara ini, memori virtual dapat dimap ke page fisik dengan urutan yang teracak.
Demand Paging
Cara untuk menghemat memori fisik adalah dengan hanya meload page virtual yang sedang digunakan oleh program yang sedang dieksekusi. Tehnik dimana hanya
Ketika proses mencoba mengakses alamat virtual yang tidak ada di dalam memori, CPU tidak dapat menemukan anggota tabel page. Contohnya, dalam gambar, tidak ada anggota tabel page untuk proses x untuk virtual PFN 2 dan jika proses x ingin membaca alamat dari virtual PFN 2, CPU tidak dapat menterjemahkan alamat ke alamat fisik. Saat ini CPU bergantung pada sistem operasi untuk menangani masalah ini. CPU menginformasikan kepada sistem operasi bahwa page fault telah terjadi, dan sistem operasi membuat proses menunggu selama sistem operasi menagani masalah ini.
CPU harus membawa page yang benar ke memori dari image di disk. Akses disk membutuhkan waktu yang sangat lama dan proses harus menunggu sampai page selesai diambil. Jika ada proses lain yang dapat dijalankan, maka sistem operai akan memilihnya untuk kemudian dijalankan. Page yang diambil kemudian dituliskan di dalam page fisik yang masih kosong dan anggota dari virtual PFN ditambahkan dalam tabelpage proses. Proses kemudian dimulai lagi pada tempat dimana page fault terjadi. Saat ini terjadi pengaksesan memori virtual, CPU membuat penerjemahan dan kemudian proses dijalankan kembali.
Demand paging terjadi saat sistem sedang sibuk atau saat image pertama kali diload ke memori. Mekanisme ini berarti sebuah proses dapat mengeksekusi image dimana hanya sebagian dari image tersebut terdapat dalam memori fisik.
Swaping
Jika memori fisik tiba-tiba habis dan proses ingin memindahkan sebuah page ke memori, sistem operasi harus memutuskan apa yang harus dilakukan. Sistem operasi harus adil dalam mambagi page fisik dalam sistem diantara proses yang ada, bisa juga sistem operasi menghapus satu atau lebih page dari memori untuk membuat ruang untuk page baru yang dibawa ke memori. Cara page virtual dipilih dari memori fisik berpengaruh pada efisiensi sistem.
Linux menggunakan tehnik page aging agar adil dalam memilih page yang akan dihapus dari sistem. Ini berarti setiap page memiliki usia sesuai dengan berapa sering page itu diakses. Semakin sering sebuah pagediakses, semakin muda page tersebut. Page yang tua adalah kandidat untuk diswap.
Pengaksesan Memori Virtual Bersama
Memori virtual mempermudah proses untuk berbagi memori saat semua akses ke memori menggunakan tabel page. Proses yang akan berbagi memori virtual yang
sama, page fisik yang sama direference oleh banyak proses. Tabel page untuk setiap proses mengandung anggota page table yang mempunyai PFN fisik yang sama.
Desainer dari CPU dan sistem operasi berusaha meningkatkan kinerja dari sistem. Disamping membuat prosesor, memori semakin cepat, jalan terbaik adalah manggunakan cache. Berikut ini adalah beberapa cache dalam managemen memori di linux:
1. Page Cache
Digunakan untuk meningkatkan akses ke image dan data dalam disk. Saat dibaca dari disk, page dicache di page cache. Jika page ini tidak dibutuhkan lagi pada suatu saat, tetapi dibutuhkan lagi pada saat yang lain, page ini dapat segera diambil dari page cache.
2. Buffer Cache
Page mungkin mengandung buffer data yang sedang digunakan oleh kernel, device driver dan lain-lain. Buffer cache tampak seperti daftar buffer. Contohnya, device driver membutuhkan buffer 256 bytes, adalah lebih cepat untuk mengambil buffer dari buffer cache daripada mengalokasikan page fisik lalu kemudian memecahnya menjadi 256 bytes buffer-buffer.
3. Swap Cache
Hanya page yang telah ditulis ditempatkan dalam swap file. Selama page ini tidak mengalami perubahan setelah ditulis ke dalam swap file, maka saat berikutnya page di swap out tidak perlu menuliskan kembali jika page telah ada di swap file. Di sistem yang sering mengalami swap, ini dapat menghemat akses disk yang tidak perlu.
Salah satu implementasi yang umum dari hardware cache adalah di CPU, cache dari anggota tabel page. Dalam hal ini, CPU tidak secara langsung membaca tabel page, tetap mencache terjemahan page yang dibutuhkan.
Load dan Eksekusi Program
1. Penempatan program dalam memori
Linux membuat tabel-tabel fungsi untuk loading program, memberikan
2. Linking statis dan linking dinamis
a. Linking statis:
librari-librari yang digunakan oleh program ditaruh secara langsung dalam file binari yang dapat dieksekusi. Kerugian dari linking statis adalah setiap program harus mengandung kopi library sistem yang umum.
b. Linking dinamis:
hanya sekali meload librari sistem menuju memori. Linking dinamis lebih efisien dalam hal memori fisik dan ruang disk.
Manajemen File pada LINUX
Membuat file baru
Gunakan perintah touch namafilebaru. contoh dibawah adalah perintah untuk membuat file kosong dengan nama belajarlinux.txt
candra@candra-ubuntu:~/demo$ touch belajarlinux.txt
candra@candra-ubuntu:~/demo$ ls
belajarlinux.txt
Menghapus file
Gunakan perintah rm nama file
rm belajarlinux.txt
Merename atau memindah file
Perintahnya sama dengan perintah untuk memindah atua merename folder, yaitu menggunakan perintah mv.
Mengosongkan isi file
perintah ini sangat bermanfaat untuk mengkosongkan file log yang ada di /var/log/. misalkan kita ingin mengosongkan access.log dari apache webserver, maka perintahnya seperti ini.
cat /dev/null>/var/log/apache2/access.log
Pembagian File
Pada umunya, ada dua macam file yang berada pada struktur file, yaitu file direktori dan file biasa. File biasa menyimpan data, sedang file direktori meyimpan nama file yang terdapat pada direktori tersebut. Sebagian besar file, hanya merupakan file biasa yang disebut file regular yang berisi data biasa sebagai contoh file text, file executable, atau program, input atau output dari program dan lainnya. Selain file biasa ada file-file khusus seperti berikut :
Directories: file yang berisi daftar dari file lain.
Special files: mekanisme yang digunakan untuk input dan output. Sebagian besar terdapat pada direktori /dev.
Links: Sistem untuk membuat file atau direktori dapat terlihat di banayk bagian dari pohon file sistem.
(Domain) sockets: Jenis file khusus, mirip dengan soket TCP/IP, yang menyediakan jaringan antar proses yang terproteksi oleh file system's access control.
Named pipes: berfungsi kurang lebih seperti soket dan membentuk jalur untuk proses komunikasi.
Absolute Paths
Sebuah Path absolute di awali dari direktori root ( / ), dan nama direktori yang akan di masuki berada di dalamnya, misalnya perintah ls yang sebenarnya berada pada direktori:
/bin/ls
Jadi untuk menjalankan perintah ls dengan menggunakan absolute path yakni dengan cara:
[josh@slashsmart josh]$ /bin/ls
[josh@slashsmart josh]$ ls /usr/share/doc/ Relative Paths
Untuk memasuki suatu direktori kita tidak harus memulai dari direktori root ( / )atau dengan katalain kita menggunakan relative path.Jadi tergantung dari direktori dimana kita berada saat itu.
Misalnya :
[josh@slashsmart josh]$ cd / [josh@slashsmart /]$ cd usr [josh@slashsmart usr]$ cd share [josh@slashsmart share]$
I\O Pada LINUX
Proses I/OSebuah proses memerlukan Input dan Ouput.
Intruksi (command) yang diberikan pada Linux melalui Shell disebut sebagai eksekusi program yang selanjuutnya disebut proses.
Setiap kali intruksi diberikan, maka Linux kernel akan menciptakan sebuah proses dengan memberikan nomor PID (Proses Identity). Proses dalam Linux selalu membutuhkan Input dan menghasilkan suatu output.
Dalam konteks Linux input/output adalah:
Keyboard (input) Layar (output) Files
Struktur data kernel
FILE DESCRIPTOR
Linux berkomunikasi dengan file melalui file descriptor yang direpresentasikan melalui angka yang dimulai dari 0, 1, 2 dan seterusnya.
Tiga buah file descriptor standar yang lalu diciptakan oleh proses adalah :
0 = keyboard (standar input) 1 = layar (standar output) Output
(Monitor)
2 = layar (standar error) Input(keyboard)
1
0 2
Linux tidak membedakan antara peralatan hardware dan file,Linux memenipulasi peralatan hardware sama dengan file.
PEMBELOKAN (REDIRECTION)
Pembelokan dilakukan untuk standard input, output dan error, yaitu untuk mengalihkan file descriptor dari 0, 1 dan 2. Simbol untuk pembelokan adalah :
0< atau < pengganti standard input atau > pengganti standard output
PIPA (PIPELINE)
Mekanisme pipa digunakan sebagai alat komunikasi antar proses.
Input ==> Proses1 ==> Output = Input ==> Proses2 => Output
Proses 1 menghasilkan output yang selanjutnya digunakan sebagai input oleh Proses 2.
Hubungan output input ini dinamakan pipa, yang menghubngkan Proses 1 dengan Proses2 dan dinyatakan dengan symbol “|”.
FILTER
Filter adalah utilitas Linux yang dapat memproses standard input (dari keyboard) dan menampilkan hasilnya pada standard output (layar). Contoh filter adalah cat, sort, grep, pr, head, tail, paste dan lainnya.
Pada sebuah rangkaian pipa :
P1 | P2 | P3 ……. | Pn-1 | Pn
Maka P2 sampai dengan P mutlak harus utilitas Linux yang berfungsi sebagai filter. P1 (awal) dan Pn n-1 (terakhir) boleh tidak filter. Utilitas yang bukan filter misalnya who, ls, ps, lp, lpr, mail dan lainnya. Beberapa perintah Linux yang digunakan untuk proses penyaringan antara lain :
Perintah grep
Digunakan untuk menyaring masukannya da n menampilkan baris-baris yang hanya mengandung pola yang ditentukan. Pola ini disebut regular expression.
Perintah wc
Digunakan untuk menghitung jumlah baris, kata dan karakter dari baris-baris masukan yang diberikan kepadanya. Untuk mengetahui berapa baris gunakan option –l, untuk mengetahui berapa kata, gunakan option –w dan untuk mengetahui berapa karakter, gunakan option –c. Jika salah satu option tidak digunakan, maka tampilannya adalah jumlah baris, jumlah kata dan jumlah karakter.
Perintah sort
Digunakan untuk mengurutkan masukannya berdasarkan urutan nomor ASCII dari karakter.
Perintah cut
Digunakan untuk mengambil kolom tertentu dari baris-baris masukannya, yang ditentukan pada option –c.
Perintah uniq