Selamat Datang. Terima Kasih telah mengunjungi blog ini.

Sunday, 30 September 2012

Deskripsi Kontrol Proses, Proses State dan Proses Model

BAB II ISI

2.1.  Deskripsi Kontrol Proses

Setiap program yang berjalan disebut sebuah proses. Proses-proses ini mencakup semuanya, mulai dari Sistem X Window hingga program-program sistem (daemon) yang dijalankan ketika komputer di boot. Setiap proses berjalan dengan pengguna tertentu. Proses-proses yang dijalankan saat boot biasanya berjalan sebagai root atau nobody. Proses yang Anda jalankan akan berjalan sebagai Anda. Proses yang dijalankan pengguna lain akan berjalan sebagai pengguna tersebut.
Anda memiliki kontrol terhadap semua proses yang Anda jalankan. Pengguna root memiliki kontrol atas semua proses pada sistem, termasuk yang dijalankan oleh pengguna lain. Proses- proses dapat dikontrol dan dimonitor melalui beberapa program, dan juga beberapa perintah shell.

2.1.1.      Proses

Prosesor mengeksekusi program-program komputer. Prosesor adalah sebuah chip dalam sistem komputer yang menjalankan instruksi-instruksi program komputer. Dalam setiap detiknya prosesor dapat menjalankan jutaan instruksi.
Program adalah sederetan instruksi yang diberikan kepada suatu komputer. Sedangkan proses adalah suatu bagian dari program yang berada pada status tertentu dalam rangkaian eksekusinya. Di dalam bahasan Sistem Operasi, kita lebih sering membahas proses dibandingkan dengan program. Pada Sistem Operasi modern, pada satu saat tidak seluruh program dimuat dalam memori, tetapi hanya satu bagian saja dari
program tersebut. Sedangkan bagian lain dari program tersebut tetap beristirahat di media penyimpan disk. Hanya pada saat dibutuhkan saja, bagian dari program tersebut dimuat di memory dan dieksekusi oleh prosesor. Hal ini sangat menghemat pemakaian memori.
Beberapa sistem hanya menjalankan satu proses tunggal dalam satu waktu, sedangkan yang lainnya menjalankan multi-proses dalam satu waktu. Padahal sebagian besar sistem komputer hanya memiliki satu prosesor, dan sebuah prosesor hanya dapat menjalankan satu instruksi dalam satu waktu. Maka bagaimana sebuah sistem prosesor tunggal dapat menjalankan multi-proses? Sesungguhnya pada granularity yang sangat kecil, prosesor hanya menjalankan satu proses dalam satu waktu, kemudian secara cepat ia berpindah menjalankan proses lainnya, dan seterusnya. Sehingga bagi penglihatan dan perasaan pengguna manusia, seakan-akan prosesor menjalankan beberapa proses secara bersamaan.
Setiap proses dalam sebuah sistem operasi mendapatkan sebuah PCB (Process Control Block) yang memuat informasi tentang proses tersebut, yaitu: sebuah tanda pengenal proses (Process ID) yang unik dan menjadi nomor identitas, status proses, prioritas eksekusi proses dan informasi lokasi proses dalam memori. Prioritas proses merupakan suatu nilai atau besaran yang menunjukkan seberapa sering proses harus dijalankan oleh prosesor. Proses yang memiliki prioritas lebih tinggi, akan dijalankan lebih sering atau dieksekusi lebih dulu dibandingkan dengan proses yang berprioritas lebih rendah. Suatu sistem operasi dapat saja menentukan semua proses dengan prioritas yang sama, sehingga setiap proses memiliki kesempatan yang sama. Suatu sistem operasi dapat juga merubah nilai prioritas proses tertentu, agar proses tersebut akan dapat memiliki kesempatan lebih besar pada eksekusi berikutnya (misalnya: pada proses yang sudah sangat terlalu lama menunggu eksekusi, sistem operasi menaikkan nilai prioritasnya).
Awalnya sistem komputer hanya diperbolehkan menjalankan satu program dalam satu waktu. Program ini memiliki kontrol penuh terhadap sistem, dan memiliki akses ke semua sumber daya sistem.Kebutuhan ini menghasilkan gagasan dari sebuah proses, yang merupakan program dalam eksekusi.Proses adalah unit kerja dalam sistem time-sharing modern.
Sistem Operasi diharapkan semakin kompleks oleh penggunanya. Sebuah sistem karena terdiri dari kumpulan proses: Operasi-sistem proses mengeksekusi kode sistem, dan proses mengeksekusi kode pengguna. Semua proses ini berlangsung bersamaan dengan meggunakan CPU multiplexing. Dengan beralih CPU antara proses, sistem operasi dapat membuat komputer lebih produktif.

2.2.  Konsep Proses

Satu permasalahan diskusi kita tentang sistem operasi adalah pertanyaan tentang apa saja aktivitas CPU?? Sistem batch mengeksekusi pekerjaan dan berbagi waktu untuk program-program yang dijalankan oleh pengguna. Bahkan pengguna satu sistem operasi seperti Microsoft Windows dan Macintosh OS, pengguna dapat menjalankan beberapa program pada satu waktu, Misalnya: prosesor, web browser, dan e-mail paket sekaligus. Jika pengguna hanya dapat menjalankan satu program pada satu waktu, sistem operasi sangat memerlukan dukungan kegiatan internal diprogram sendiri, seperti manajemen memori. Itulah yang dinamakan Proses. Pekerjaan yang serupa dan dalam banyak hal. Sistem operasi dan terminologi teori yang dikembangkan ketika aktivitas utama sistem operasi disebut proses kerja.

2.2.1.      Proses

Proses adalah program dalam eksekusi. Proses lebih dari sekedar kode program yang kadang-kadang dikenal sebagai bagian teks. Seperti nilai dari program counter dan isi dari register prosesor. Selain itu, proses umumnya termasuk proses stack, yang berisi data temporer (seperti parameter metoda, alamat return dan variabel lokal), dan sebuah bagian data, yang berisi variabel global. Program bukanlah sebuah proses. Program adalah sebuah entitas pasif, seperti isi file yang disimpan pada disk, sedangkan proses adalah suatu entitas aktif, dengan sebuah program counter menentukan instruksi berikutnya untuk mengeksekusi dan seperangkat sumber daya yang terkait. Meskipun dua proses dapat dikaitkan dengan program yang sama, mereka tetap dianggap dua urutan eksekusi yang terpisah.

2.2.2.      Process State (status proses)








 
















Keterangan:
1.        Proses di blok untuk melayani input karena sumber daya yang diminta belum tersedia / meminta layanan I/O sehingga menunggu kejadian muncul.
2.        Penjadwalan mengambil proses lain.
3.        Penjadwalan mengambil proses ini (baru).
4.        Input telah tersedia.
Penjelasan Status (State)
Terdapat transisi di antara state-state selama siklus hidup proses, yaitu:
·       Proses yang baru diciptakan akan segera mempunyai status Ready.
·       Proses dengan status runningblocked karena sumber daya yang diminta belum tersedia atau meminta layanan perangkat masukan/keluaran sehingga menunggu kejadian muncul. Proses menunggu kejadian alokasi sumber daya atau selesainya layanan perangkat masukan/keluaran (event wait).
·       Proses dengan status runningready karena penjadwal memutuskan eksekusi proses lain karena jatah waktu untuk proses tersebut telah habis (time-out).
·       Proses dengan status blockedready saat sumber daya yang diminta/diperlukan telah tersedia atau layanan perangkat masukan/keluaran selesai (event occurs).
·       Proses dengan status readyrunning karena penjadwal memutuskan penggunaan pemroses untuk proses itu karena proses yang saat itu running berubah state (menjadi ready atau blocked) atau telah menyelesaikan sehingga disingkirkan dari sistem Proses menjadi mendapatkan jatah pemroses.

2.2.3.      Blok Kontrol Proses (PCB)

Setiap proses digambarkan dalam sistem operasi oleh sebuah Process Control Block (PCB) yang juga disebut sebuah control block. Control Block PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini:

a)        Status Proses.
Status new, ready, running, waiting, halted, dan juga banyak lagi.
b)        Program Counter.
Suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.
c)        CPU register.
Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator, register indeks, stack pointer, general-purposes register, ditambah code information pada kondisi apa pun. Beserta dengan program counter, keadaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya.
d)       Informasi manajemen memori.
e)        Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem operasi.
f)         Informasi pencatatan.
Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun, jumlah job atau proses, dan banyak lagi.
g)        Informasi status I / O.
Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini, daftar berkas-berkas yang sedang diakses dan banyak lagi.


2.2.4.      Threads

Proses merupakan sebuah program yang mengeksekusi thread tunggal. Kendali thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Banyak sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk mengeksekusi multi-threads. Misalnya user melakukan pekerjaan secara bersamaan yaitu mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama.



2.3.  Penjadwalan Proses

Tujuan dari multiprogramming adalah untuk menjalankan beberapa proses secara bersamaan, sehingga memaksimalkan penggunaan CPU. Waktu-berbagi untuk beralih antar proses CPU yang begitu cepat, menjadikan pengguna dapat berinteraksi baik dengan setiap program yang dijalankan. Sebuah sistem uniprocessor hanya dapat menjalankan satu proses. Jika ada proses yang lain, maka harus menunggu sampai CPU bebas dan dapat dijadwalkan kembali.

2.3.1.      Scheduling Queues (Penjadwalan Antrian)

Ketika sebuah proses memasuki sistem, proses itu diletakkan di dalam job queue . Pada antrian ini terdapat seluruh proses yang berada dalam sistem. Sedangkan proses yang berada pada memori utama, siap dan menunggu untuk mengeksekusi disimpan dalam sebuah daftar yang bernama ready queue . Antrian ini biasanya disimpan sebagai linked list. Header dari ready queue berisi pointer untuk PCB pertama dan PCB terakhir pada list. Setiap PCB memiliki pointer field yang menunjuk kepada PCB untuk proses selanjutnya dalam ready queue . Sistem operasi juga memiliki antrian lain. Ketika sebuah proses dialokasikan ke CPU, proses tersebut berjalan sebentar lalu berhenti, di-interupsi, atau menunggu suatu hal tertentu seperti selesainya suatu permintaan I/O. Dalam permintaan I/O, bisa saja yang diminta itu adalah tape drive, atau peralatan yang di- share secara bersama-sama, seperti disk. Karena ada banyak proses dalam sistem, disk bisa saja sibuk dengan permintaan I/O dari proses lainnya. Untuk itu proses tersebut mungkin harus menunggu disk tersebut. Daftar dari proses-proses yang menunggu peralatan I/O tertentu disebut dengan device queue. Tiap peralatan memiliki device queue-nya masing-masing.

2.3.2.      Schedulers

Sebuah proses berpindah antara berbagai penjadualan antrian selama umur hidupnya. Sistem operasi harus memilih, untuk keperluan penjadualan, memproses antrian-antrian ini dalam cara tertentu. Pemilihan proses dilaksanakan oleh penjadual yang tepat/ cocok. Dalam sistem batch, sering ada lebih banyak proses yang diserahkan daripada yang dapat dilaksanakan segera. Proses ini dipitakan/ disimpan pada suatu alat penyimpan masal (biasanya disk), dimana proses tersebut disimpan untuk eksekusi dilain waktu. Penjadualan long term, atau penjadual job, memilih proses dari pool ini dan mengisinya kedalam memori eksekusi.

2.3.3.      Context Switch

Mengganti CPU ke proses lain memerlukan penyimpanan suatu keadaan proses lama (state of old process) dan kemudian beralih ke proses yang baru. Tugas tersebut diketahui sebagai alih konteks (context switch). Alih konteks sebuah proses digambarkan dalam PCB suatu proses; termasuk nilai dari CPU register, status proses dan informasi managemen memori. Waktu context switch sangat begantung pada dukungan perangkat keras. Sebagai contoh, prosesor seperti UltraSPARC menyediakan beberapa set register. Sebuah proses context switch hanya memasukkan perubahan pointer ke set register yang ada saat itu. Tentu saja, jika proses aktif yang ada lebih banyak daripada proses yang ada pada set register, sistem menggunakan bantuan untuk meng-copy data register dari dan ke memori, sebagaimana sebelumnya. Semakin kompleks suatu sistem operasi, semakin banyak pekerjaan yang harus dilakukan selama context switch. Bisa dilihat pada Bab Memori, teknik managemen memori tingkat lanjut dapat mensyaratkan data tambahan untuk diganti dengan tiap data. Sebagai contoh, ruang alamat dari proses yang ada saat itu harus dijaga sebagai ruang alamat untuk proses yang akan dikerjakan berikutnya. Bagaimana ruang alamat dijaga, berapa banyak pekerjaan dibutuhkan untuk menjaganya, tergantung pada metode managemen memori dari sistem operasi. Akan kita lihat pada Bab Memori, context switch terkadang bisa menyebabkan bottleneck , dan programmer menggunakan struktur baru (threads) untuk menghindarinya kapan pun memungkinkan.




2.4.  Operasi pada Proses

2.4.1.      Proses Creation

Secara umum, suatu proses akan memerlukan sumber tertentu (waktu CPU, memori, berkas, perangkat I/O) untuk menyelesaikan tugasnya. Ketika suatu proses membuat sebuah subproses, sehingga subproses dapat mampu untuk memperoleh sumbernya secara langsung dari sistem operasi. Induk mungkin harus membatasi sumber diantara anaknya, atau induk dapat berbagi sebagian sumber (seperti memori berkas) diantara beberapa dari anaknya. Membatasi suatu anak proses menjadi subset sumber daya induknya mencegah proses apa pun dari pengisian sistem yang telalu banyak dengan menciptakan terlalu banyak subproses.

2.4.2.      Process Termination

Sebuah proses berakhir ketika proses tersebut selesai mengeksekusi pernyataan akhirnya dan meminta sistem operasi untuk menghapusnya dengan menggunakan sistem pemanggilan exit. Pada titik itu, proses tersebut dapat mengembalikan data (keluaran) pada induk prosesnya (melalui sistem pemanggilan wait)
Ada situasi tambahan tertentu ketika terminasi terjadi. Sebuah proses dapat menyebabkan terminasi dari proses lain melalui sistem pemanggilan yang tepat (contoh abort). Biasanya, sistem seperti itu dapat dipanggil hanya oleh induk proses tersebut yang akan diterminasi.


2.5.  Komunikasi antar Proses

2.5.1.      Proses Kooperatif

Proses yang bersifat simultan (concurrent) dijalankan pada sistem operasi dapat dibedakan menjadi 2 yaitu proses independent dan proses kooperatif.
Suatu proses dikatakan independen apabila proses tersebut tidak dapat terpengaruh atau dipengaruhi oleh proses lain yang sedang dijalankan pada sistem. Berarti, semua proses yang tidak membagi data apa pun (baik sementara/ tetap) dengan proses lain adalah independent. Sedangkan proses kooperatif adalah proses yang dapat dipengaruhi atau pun terpengaruhi oleh proses lain yang sedang dijalankan dalam sistem. Dengan kata lain, proses dikatakan kooperatif bila proses dapat membagi datanya dengan proses lain.

2.5.2.      Komunikasi Proses dalam Sistem

Cara lain untuk meningkatkan efek yang sama adalah untuk sistem operasi yaitu untuk menyediakan alat-alat proses kooperatif untuk berkomunikasi dengan yang lain lewat sebuah komunikasi dalam proses (IPC = Inter-Process Communication). IPC menyediakan sebuah mekanisme untuk mengizinkan proses-proses untuk berkomunikasi dan menyelaraskan aksi-aksi mereka tanpa berbagi ruang alamat yang sama. IPC adalah khusus digunakan dalam sebuah lingkungan yang terdistribusi dimana proses komunikasi tersebut mungkin saja tetap ada dalam komputer-komputer yang berbeda yang tersambung dalam sebuah jaringan. IPC adalah penyedia layanan terbaik dengan menggnakan sebuah sistem penyampaian pesan, dan sistem-sistem pesan dapat diberikan dalam banyak cara.

2.5.3.      Sinkronisasi

Komunikasi antara proses membutuhkan place by calls untuk mengirim dan menerima data primitive. Terdapat rancangan yang berbeda-beda dalam implementasi setiap primitive. Pengiriman pesan mungkin dapat diblok (blocking) atau tidak dapat dibloking (nonblocking) - juga dikenal dengan nama sinkron atau asinkron. Pengiriman yang diblok: Proses pengiriman di blok sampai pesan diterima oleh proses penerima (receiving process) atau oleh mailbox. Pengiriman yang tidak diblok: Proses pengiriman pesan dan mengkalkulasi operasi. Penerimaan yang diblok: Penerima mem blok samapai pesan tersedia. Penerimaan yang tidak diblok: Penerima mengembalikan pesan valid atau null.

2.5.4.      Buffering

Baik komunikasi itu langsung atau tak langsung, penukaran pesan oleh proses memerlukan antrian sementara. Pada dasarnya, terdapat tiga jalan dimana antrian tersebut diimplementasikan: Kapasitas nol: antrian mempunyai panjang maksimum 0, maka link tidak dapat mempunyai penungguan pesan (message waiting). Dalam kasus ini, pengirim harus memblok sampai penerima menerima pesan. Kapasitas terbatas: antrian mempunyai panjang yang telah ditentukan, paling banyak n pesan dapat dimasukkan. Jika antrian tidak penuh ketika pesan dikirimkan, pesan yang baru akan menimpa, dan pengirim pengirim dapat melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas. Jika link penuh, pengirim harus memblok sampai terdapat ruang pada antrian. Kapasitas tak terbatas: antrian mempunyai panjang yang tak terhingga, maka, semua pesan dapat menunggu disini. Pengirim tidak akan pernah di blok.


2.6.  Proses Model pada Sistem Operasi

2.6.1.      PROSES

Proses pada hakekatnya adalah eksekusi program pada sistem operasi. Sebuah proses akan membutuhkan sumber daya tertentu seperti waktu pemrosesan, memori, file, dan peralatan I/O untuk menyelesaikan tugasnya. Sumber daya ini dialokasikan untuk proses yang baru dibuat atau ketika sedang dieksekusi oleh CPU.
Proses adalah unit kerja dari sistem, atau bisa dikatakan sistem terdiri dari kumpulan proses. Pada sistem operasi terjadi dua model eksekusi proses, yaitu sistem kode yang dilakukan oleh sistem operasi, dan user kode atau program yang dijalankan oleh user. Semua proses ini dapat dieksekusi secara bersamaan. Proses tradisional hanya berisi thread tunggal pada saat eksekusi, sedangkan sistem operasi modern sekarang mendukung proses yang memiliki beberapa thread. Sistem operasi bertanggung jawab untuk aktivitas berikut di sehubungan dengan proses dan manajemen thread: penciptaan dan penghapusan baik proses pengguna dan proses sistem; penjadwalan proses; dan penyediaan mekanisme untuk sinkronisasi, komunikasi, dan kebuntuan penanganan untuk proses (dead lock).

2.6.2.      PROSES PADA LINUX

Sistem operasi Linux dikembang dengan mengadopsi prinsip-prinsip yang digunakan pada sistem operasi UNIX. pertama kali ditulis dan dikenalkan oleh Linus Torvald pada tahun 1991. Kernel linux pada saat awal dikenalkan sudah bisa menjalankan prosesor 80386, merupakan prosesor 32 bit pertama dari intel.

a)        Prinsip Desain Kernel Linux

Semenjak Linux mengadopsi UNIX, maka linux juga mempunyai desain multiuser, multitasking, dan bahkan kompatibel dengan set tool yang sudah dipunyai oleh UNIX.

b)       Komponen dari Linux System

Linux terdiri dari tiga bagian kode utama, yang secara umum implementasinya mengacu pada UNIX.
·       Kernel, yang secara penuh bertanggung jawab mengelola semua abstraksi dari sistem operasi, termasuk didalamnya adalah virtual memori dan proses.
·       System Library, menyediakan set fungsi standar yang memungkinkan aplikasi bisa berinteraksi dengan kernel. Fungsi ini mengimplementasikan fungsionalitas sistem operasi tanpa harus mempunyai akses kode perkode dari kernel.
·       System Utility, adalah program yang mempunyai tugas khusus untuk menangani hal tertentu berkaitan dengan sistem operasi. beberapa program hanya dipanggil sekali (biasanya pada saat awal sistem operasi dijalankan) untuk menginisialisasi beberapa aspek dari sistem, dan biasa disebut dengan istilah daemon dalam terminologi UNIX (bisa secara permanen dijalankan pada saat sistem operasi berjalan, digunakan untuk menangani proses seperti merespon pesan masuk pada jaringan, menangani operasi berkaitan dengan printer, menangani akunting atau log sistem operasi, etc.

c)        Management Process pada Linux

Proses pada Linux merupakan aktifitas permintaan user terhadap sistem operasi. Model proses pada Linux mirip dengan UNIX, dimana prinsip dasar keduanya menggunakan fungsi fork() dan exec(). fork() digunakan untuk membuat proses baru sedangkan exec() digunakan untuk memanggil program.
Kedua pendekatan diatas merupakan dua hal yang berbeda, dimana proses (child) bisa diciptakan tanpa membuka program baru, dan secara sederhana akan meneruskan program awal (parent) untuk mengeksekusi perintah yang sama pada program awal. Untuk membuat proses baru, bisa dengan mengetikan perintah langsung pada shell Linux. Proses yang dibuat bisa dalam mode foreground maupun background. Ketika proses dijalankan lewat shell secara default akan dijalankan dalam mode foreground dan proses akan bergantung dari proses shell, jika shel dimatikan, maka proses yang dijalankan tadi akan ikut mati. Kebalikan dari mode diatas adalah mode background, dimana proses dijalankan dibalik layar, dan tidak tergantung pada shell secara langsung, dan ketika shell dimatikan, proses tetap berjalan (ex: menjalankan perintah dengan diberi argumen &).

d)       Identitas Proses

Setiap proses yang dijalankan mempunyai beberapa item identitas, diantaranya:
·       Process Id (PID), tiap proses punya identitas unik yang digunakan untuk menentukan proses pada sistem operasi ketika aplikasi membuat system call untuk pensinyalan, modify, atau wait pada proses tertentu. Identitas tambahan proses berkaitan dengan group proses (berbentuk proses tree dimana terbentuk oleh perintah fork() single user) dan login session.
·       Credentials, tiap proses harus berkaitan dengan satu User ID dan satu atau beberapa Group ID untuk menunjukan hak akses terhadap sumber daya yang digunakan dalam proses.

e)        Process Environment

Pada sistem operasi Linux process environment terdiri dari dua komponen, argumen dan environment. Argumen adalah daftar opsi tambahan pada cli yang berkaitan dengan perilaku program ketika dijalankan, sedangkan environment adalah daftar parameter, baik berupa variabel, direktori home yang secara tekstual dibutuhkan oleh program.

Environment variable biasanya terdiri dari beberapa informasi seperti:
·       PATH, daftar lokasi direktori dimana file executable berada.
·       HOME, lokasi direktori home.
·       CPPLIBS, lokasi dimana library yang berkaitan dengan program disimpan.
·       HOSTNAME (*NIX) atau COMPUTERNAME (WIN32), digunakan untuk penamaan mesin.
·       USER (*NIX) atau USERNAME (WIN32), user yang digunakan pada saat login pada sistem operasi.







BAB III PENUTUP

3.1  Kesimpulan

Dengan membaca makalah ini, maka dapat disimpulkan :

1)        Proses adalah program dalam eksekusi. Proses lebih dari sekedar kode program yang kadang-kadang dikenal sebagai bagian teks. Seperti nilai dari program counter dan isi dari register prosesor.

2)        Mengetahui penjelasan tentang proses state.

3)        Mengtahui model dari eksekusi proses.


3.2  Saran

1)        Penjelasan mengenai Kontrol Proses, Proses State dan Proses Model harus dijabarkan lebih baik dan agar mudah dipahami.

No comments:

Post a Comment