Proses Management pada Linux. docx
Tugas OFFClass 3
Rangkuman LINUX
PA01
Muhamad Nugroho Purnomo
1501143286
Tubagus Miftah Farid Azhar
1501164795
Yosua Gunawan
1501158256
Deka Putra Mahardika
1501142674
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:
Process ID (PID) → pengenal unik untuk proses; digunakan untuk menentukan
proses-proses mana yang dibawa ke dalam OS saat suatu aplikasi membuat system
call untuk mengirim sinyal, mengubah, atau menunggu proses lainnya. PID adalah 32-bit
bilangan yang mengidentifikasikan setiap proses dengan unik. Linux membatasi PID
sekitar 0-32767 untuk menjamin kompatibilitas dengan sistem UNIX tradisional.
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.
5.
Task Stopped : Proses yang dihentikan
Task Zombie : Proses telah berhenti, namun masih memiliki struktur data
ditask_struct di task vektor dan masih memegang sumber daya yang tidak digunakan lagi.
Konsep pembuatan proses pada sistem operasi linux :
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 :
Child mengalokasikan sumber daya melampaui batas
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 Virtual
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
meload page virtual ke memori hanya ketika program dijalankan disebut demand paging.
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.
Efisiensi
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
kesempatan kepada setiap fungsi untuk meload file yang diberikan saat sistem call exec
dijalankan. Pertama-tama file binari dari pageditempatkan pada memori virtual. Hanya
pada saat program mencoba mengakses page yang telah diberikan terjadi page fault,
maka page akan diload ke memori fisik.
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
Gunakan perintah cat /dev/null> namafile.txt
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
Kita juga dapat menggunakan ls untuk menampilkan file file pada sebuah direktori
dengan absolute path:
[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/O
Sebuah 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
Peralatan I/O lainnya (misallnya Network)
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 “|”.
Proses1 | Proses2
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
Digunakan untuk menghilangkan baris-baris berurutan yang mengalami duplikasi,
biasanya digabungkan dalam pipeline dengan sort.
Rangkuman LINUX
PA01
Muhamad Nugroho Purnomo
1501143286
Tubagus Miftah Farid Azhar
1501164795
Yosua Gunawan
1501158256
Deka Putra Mahardika
1501142674
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:
Process ID (PID) → pengenal unik untuk proses; digunakan untuk menentukan
proses-proses mana yang dibawa ke dalam OS saat suatu aplikasi membuat system
call untuk mengirim sinyal, mengubah, atau menunggu proses lainnya. PID adalah 32-bit
bilangan yang mengidentifikasikan setiap proses dengan unik. Linux membatasi PID
sekitar 0-32767 untuk menjamin kompatibilitas dengan sistem UNIX tradisional.
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.
5.
Task Stopped : Proses yang dihentikan
Task Zombie : Proses telah berhenti, namun masih memiliki struktur data
ditask_struct di task vektor dan masih memegang sumber daya yang tidak digunakan lagi.
Konsep pembuatan proses pada sistem operasi linux :
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 :
Child mengalokasikan sumber daya melampaui batas
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 Virtual
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
meload page virtual ke memori hanya ketika program dijalankan disebut demand paging.
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.
Efisiensi
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
kesempatan kepada setiap fungsi untuk meload file yang diberikan saat sistem call exec
dijalankan. Pertama-tama file binari dari pageditempatkan pada memori virtual. Hanya
pada saat program mencoba mengakses page yang telah diberikan terjadi page fault,
maka page akan diload ke memori fisik.
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
Gunakan perintah cat /dev/null> namafile.txt
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
Kita juga dapat menggunakan ls untuk menampilkan file file pada sebuah direktori
dengan absolute path:
[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/O
Sebuah 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
Peralatan I/O lainnya (misallnya Network)
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 “|”.
Proses1 | Proses2
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
Digunakan untuk menghilangkan baris-baris berurutan yang mengalami duplikasi,
biasanya digabungkan dalam pipeline dengan sort.