Archive | Operating System RSS feed for this section

Organisasi Sistem Komputer

3 Jun

Menurut Wikipedia, sebuah sistem komputer adalah suatu jaringan elektronik yang terdiri dari perangkat lunak dan perangkat keras yang melakukan tugas tertentu, yakni menerima input, memproses input, menyimpan perintah-perintah, dan menyediakan output dalam bentuk informasi. Selain itu dapat pula diartikan sebagai elemen-elemen yang terkait untuk menjalankan suatu aktivitas dengan menggunakan komputer.

Perkembangan teknologi komputer yang begitu pesat membuat segala hal yang berhubungan dengan perangkat keras dan perangkat lunak yang tadinya diserahkan kepada pengguna komputer beralih diserahkan kepada sebuah sistem komputer yang disebut dengan nama sistem operasi. Sistem ini melakukan pengaturan dan organisasi antara perangkat keras dan perangkat lunak sehingga dapat memudahkan pengguna komputer dalam hal manajemen sumber daya dan proteksi dari segala ancaman dari perangkat keras dan perangkat lunak itu sendiri sehingga dihasilkan sebuah sistem komputer yang stabil dan aman. Sebuah sistem operasi harus dapat mengatur penggunaan segala macam sumber daya perangkat keras yang dibutuhkan oleh sistem agar tidak terjadi hal-hal yang tidak diinginkan. Selain itu, seiring dengan semakin banyaknya program dan aplikasi komputer serta berbagai macam perangkat keras yang ada membuat sebuah sistem operasi harus bekerja dengan pintar mengatur mana yang harus didahulukan agar tercipta efisensi dalam memanajemen sumber dayanya. Hal ini dikarenakan, apabila pengaturan yang dilakukan tidak dapat berjalan lancar maka dapat dipastikan akan terjadi kegagalan proteksi pada perangkat keras sehingga menghancurkan organisasi sistem komputer yang telah dibangun.

Sebuah sistem operasi yang baik harus menyediakan proteksi terhadap sistem dengan maksimal sehingga bila ada suatu program yang tidak bekerja atau terjadi kegagalan dalam bekerja, sering disebut ‘crash’, tidak mengganggu kinerja sistem operasi ataupun program-program lain yang sedang bekerja pada sistem operasi tersebut. Selain itu, sebuah sistem operasi juga harus memastikan operasi-operasi yang benar dari sebuah organisasi sistem komputer, mengatur penggunaan perangkat lunak secara aman dan efisien, serta membuat sebuah sistem komputer dapat digunakan dengan baik.

Dalam pengorganisasian sebuah sistem komputer, tidak ada suatu standar khusus atau ketentuan khusus dalam merancang struktur sistem komputer tersebut. Akan tetapi, untuk mempermudah pemahaman tentang organisasi sistem komputer maka para ahli telah memberikan pengetahuan-pengetahuan umum apa saja yang harus kita ketahui tentangnya, yakni paling tidak sebuah organisasi sistem komputer haruslah memiliki processor, media penyimpanan data atau memori, serta perangkat masukan dan keluaran atau input/output (I/O).

Secara umum sebuah sistem komputer terdiri dari central processing unit atau sering kita dengar sebagai CPU dan sejumlah perangkat pengendali, baik masukan maupun keluaran (perangkat I/O) yang terhubung melalui sebuah bus yang menyediakan akses ke memori untuk keberlangsungan berjalannya sistem tersebut. Secara umum, perangkat pengendali atau sering disebut device controller bertanggung jawab atas sebuah perangkat keras atau hardware secara spesifik. Setiap device tersebut dan CPU dapat berjalan secara bersamaan untuk mendapatkan akses ke memori. Dan untuk menanggulangi kemungkinan masalah yang dapat terjadi, yakni masalah sinkronisasi, maka dibutuhkan sebuah pengontrol memori atau disebut juga memory controller sehingga akses memori dalam organisasi sistem komputer tersebut menjadi sinkron.

Media penyimpanan data atau sering kita dengar dengan memori memiliki dasar penyusunan berdasarkan tingkat kecepatan, besar kapasitas, dan sifat volatilitasnya. Media penyimpanan tersebut juga harus dilindungi oleh sistem operasi dari modifikasi oleh pengguna. Media penyimpanan tersebut terdiri dari register, cache, random access memory atau RAM, extension memory, magnetic disk, optical disk, dan magnetic tapes. Mulai dari register sampai manetic tapes tingkat kecepatan proses datanya semakin lambat, tetapi memiliki besar kapasitas yang semakin besar. Tingkat kecepatan memori yang tinggi sangat berpengaruh terhadap harga beli memori tersebut. Sifat volatilitas memori maksudnya adalah apakah data-data yang tersimpan dalam memori tersebut bertahan ketika ada atau tidaknya aliran listrik. Seperti pada RAM, memori yang ada adalah bersifat volatile, yakni sangat terpengaruh akan adanya aliran listrik, jadi ketika aliran listrik berhenti maka data yang tersimpan di dalamnya pun terhapus, sementara itu pada magnetic disk seperti hard disk, memorinya bersifat non-volatile, jadi tidak bergantung dari ada atau tidaknya listrik yang mengalir, data yang tersimpan di dalamnya akan tetap ada selama belum dihapus oleh pemiliknya.

Register adalah tempat penyimpanan beberapa buah data yang kapasitasnya kecil dan bersifat volatile yang akan diolah langsung di processor dan memiliki kecepatan akses yang sangat tinggi. Register sendiri berada di dalam processor dengan jumlah yang sangat terbatas karena fungsinya sebagai tempat perhitungan dan komputasi data. Selain register, ada pula yang disebut dengan cache memory, yakni adalah tempat untuk menyimpan data yang juga bersifat volatile atau sementara dan berkecepatan tinggi yang kapasitasnya kecil dan digunakan untuk meningkatkan kecepatan pengambilan atau penyimpanan data di memori oleh processor. Pada awalnya cache memory berada di luar processor dan dapat ditambahkan, tetapi seiring berjalannya waktu dan juga penurunan tingkat biaya produksi maka cache memory pada perkembangannya sudah ditanam di processor untuk meningkatkan kinerjanya dan didesain berdasarkan desain memori statik.

Random access memory atau sering disebut dengan RAM juga merupakan media penyimpanan data yang bersifat volatile dan dapat diakses langsung oleh processor sehingga processor dapat secara langsung mengetahui alamat data yang ada di memori. Dari perkembangannya, RAM sekarang mengalami penurunan harga dan memiliki tingkat kecepatan dan kapasitas yang tinggi, bahkan melebihi cache memory. Register, cache memory, dan RAM adalah memori primer atau memori utama pada sebuah organisasi sistem komputer.

Media penyimpanan utama atau memori utama adalah satu-satunya tempat penyimpanan yang dapat diakses secara langsung oleh processor, merupakan suatu array dari word atau byte, yang mempunyai ukuran ratusan sampai jutaan ribu. Setiap word memiliki alamatnya sendiri. Memori utama adalah tempat penyimpanan yang volatile, dimana isinya hilang bila sumber energinya, yakni energi listrik dimatikan. Kebanyakan sistem komputer menyediakan secondary penyimpanan sebagai perluasan dari memori utama. Syarat utama dari penyimpanan sekunder ialah dapat menyimpan data dalam jumlah besar secara permanen.

Media penyimpanan sekunder yang paling umum adalah magnetic disk, yang menyediakan penyimpanan untuk program maupun data. Magnetic disk adalah alat penyimpanan data yang non-volatile yang juga menyediakan akses secara random. Tape magnetik digunakan terutama untuk backup, penyimpanan informasi yang jarang digunakan, dan sebagai media pemindahan informasi dari satu sistem ke sistem yang lain.

Perangkat masukan atau input device adalah alat-alat yang digunakan untuk menerima perintah dari pengguna komputer ke suatu sistem komputer, sementara perangkat keluaran atau output device adalah alat-alat yang digunakan untuk menampilkan atau menyampaikan informasi kepada pengguna komputer. Perangkat masukan contohnya adalah keyboard, mouse, dan scanner, sementara perangkat keluaran contohnya adalah monitor, printer, speaker.

Dengan demikian dapat kita simpulkan bahwa sebuah organisasi sistem komputer paling tidak memiliki tiga bagian, yakni adanya tempat memproses data atau CPU, adanya media penyimpanan data atau memory, dan adanya perangkat masukan dan keluaran, atau perangkat I/O. Selain itu, manajemen yang ada pada sebuah sistem komputer diatur oleh sebuah sistem operasi yang bertindak memanajemen sumber daya dan proteksi dari segala ancaman sehingga dihasilkan sebuah sistem komputer yang stabil dan aman.

Solusi: Implementasi Thread Pada Perhitungan Matriks (Sistem Operasi)

28 May

Tujuan
• Mahasiswa memahami konsep pembuatan thread pada lingkungan UNIX
• Mahasiswa mampu memanfaatkan API Posix Thread untuk membuat dan mengatur thread
• Meningkatkan kemampuan pemrograman bahasa C

Deskripsi
Thread adalah unit terkecil dari proses yang dapat dieksekusi oleh CPU. Satu proses dapat terdiri dari beberapa
thread. Pada lingkungan UNIX, thread dapat dibuat dan diatur dengan menggunakan API Posix Thread. Pada
tugas kedua ini Anda diminta untuk membuat program perkalian matriks yang ada pada buku Operating Systems
Concepts 8th Edition, halaman 178 atau buku Operating Systems Concepts Essential, halaman 170. Program yang
dibuat adalah dengan menggunakan bahasa C dan API Posix Thread.

Solusi dalam C


#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define M 3
#define K 2
#define N 3

void *runner (void *param);

int A [M][K] = { {1,4}, {2,5}, {3,6} }; // Array ukuran M*K (3 baris 2 kolom)
int B [K][N] = { {8,7,6}, {5,4,3} }; // Array ukuran K*N (2 baris 3 kolom)
int C [M][N]; // Array ukuran M*N (3 baris 3 kolom)

/* Structure untuk mem-passing data ke thread */
struct v
{
 int i; // Menunjukkan baris
 int j; // Menunjukkan kolom
};

int main()
{
 pthread_t tid [M*N]; // Array of thread bernama tid dengan size M*N = 3*3 = 9
 int i; // Menunjukkan baris
 int j; // Menunjukkan kolom
 int indeks; // Menunjukkan indeks pada array of thread

 for (i = 0; i < M; i++)
 {
 for (j = 0; j < N; j++)
 {
 struct v *data = (struct v*) malloc (sizeof (struct v)); // Membuat objek structure v bernama data
 // dengan mengalokasikan memori sebesar size dari structure v
 data -> i = i; // Mengeset nilai i pada objek structure v bernama data dengan nilai i
 data -> j = j; // Mengeset nilai j pada objek structure v bernama data dengan nilai j
 pthread_create (&tid[indeks++], NULL, runner, (void *) data); // Membuat thread pada array of thread tid pada indeks ke-indeks
 // dengan memanggil fungsi runner dengan parameter data
 }
 }

 for (indeks = 0; indeks < M*N; indeks++)
 {
 pthread_join (tid[indeks], NULL); // Menggabungkan thread-thread yang ada
 }

 /* Mencetak hasil perkalian 2 Matriks */
 printf ("Hasil:\n");
 for (i = 0; i < M; i++)
 {
 for (j = 0; j < N; j++)
 {
 printf ("%d", C[i][j]); // Output matriks C baris i kolom j
 }
 printf ("\n");
 }
}

/* Fungsi untuk melakukan perkalian 2 matriks */
void *runner (void *param)
{
 struct v *par = (struct v*) param; // Mengeset objek structure v bernama par dengan param
 int h; // Variabel looping
 int i = par -> i; // Mengeset nilai i dengan nilai i pada par
 int j = par -> j; // Mengeset nilai j dengan nilai j pada par
 int hasil = 0; // Menunjukkan hasil perhitungan matriks

 for (h = 0; h < K; h++)
 {
 hasil += A[i][h] * B[h][j]; // Hasil didefiniskan dengan menambahkan semua hasil perkalian baris i kolom h dengan baris h kolom j
 C[i][j] = hasil; // Mengeset nilai matriks C pada baris i dan kolom j dengan hasil
 }
}