Kamis, 22 April 2010

TUGAS PERTEMUAN III

1. Pelajari perintah dtrace atau sejenis di Linux. Buat rangkumannya disertai 3 contoh :
Perintah dtrace di Linux

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.

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

Berikut ini adalah beberapa perintah DTrace yang umum digunakan:

Data Recording Actions:

* trace(expression) – mengevaluasi expression dan menampilkannya ke output buffer.
* tracemem(address, size_t nbytes) – men-copy isi memory sebanyak nbytes ke output buffer.
* printf(format,...) – men-format dan mencetak seperti layaknya di C.
* printa(aggregation), printa(string format, aggregation) – menampilkan hasil agregasi.
* stack(int nframes), stack()- menampilkan kernel stack trace ke output buffer.
* ustack(int nframes, int strsize), ustack(int nframes), ustack(void) – menampilkan user stack trace ke output buffer.
* jstack(int nframes, int strsize), jstack(int nframes), jstac(void) – alias untuk ustack tetapi menggunakan option jstackframes.

Destructive Actions: (untuk memakai action ini, kita harus memakai option -w saat memanggil DTrace)

* stop() – menghentikan proses yang men-fire probe bersangkutan.
* raise(int signal) – mengirimkan sinyal ke proses yang men-fire probe bersangkutan.
* copyout(void * buf, uintptr_t addr, size_t nbytes) – mencopy nbytes dari buf ke alamat yang ditentukan di addr.
* copyoutstr(string str, uintptr_t addr, size_t maxlen) – mencopy str ke alamat yang ditentukan di addr.
* system(string program, ...) – menjalankan program.

Kernel Destructive Actions: (Ini harus dipakai dengan hati-hati karena dapat merusak seluruh sistem operasi)

* breakpoint() – menyebabkan sistem berhenti dan menjalankan kernel debugger.
* panic() – memunculkan kernel panic.
* chill (int nanoseconds) – membuat DTrace berhenti bekerja selama beberapa nanoseconds. Ini dapat menyebabkan masalah pada scheduler seperti cron bila dipergunakan secara tidak benar.

Special Actions:

* exit(int status) – Berhenti melakukan tracing.

Subroutines:

* alloca(size_t size) – mengalokasikan memori sejumlah size.
* basename (char * str) – mendapatkan nama sebuah string tanpa prefix yang berakhir dengan “/.”
* bcopy(void *src, void *dest, size_t size) – men-copy memory sebesar size dari src ke dest.
* cleanpath(char *str) – menghapus bagian seperti “/./” dan menerjemahkan lokasi relatif seperti “/../”
* copyin(uintptr_t addr, size_t size) – men-copy sejumlah size bytes dari alamat addr ke DTrace scratch buffer.
* copyinstr(uintptr_t addr) – men-copy string ke DTrace scratch buffer.
* copyinto(uintptr_t addr, size_t size, void *dest) – mencopy dari alamat addr sebanyak size bytes ke alamat dest di DTrace scratch buffer.
* dirname(char *str) – mendapatkan lokasi direktori dari string yang berisi lokasi file.
* msgdsize(mblk_t *mp) – mengembalikan jumlah byte di data message yang di-point oleh mp.
* msgsize(mblk_t *mp) – mengembalikan total jumlah byte di data message yang di-point oleh mp.
* int mutex_owned(kmutex_t *mutext) – mengembalikan nilai bukan nol jika thread yang sedang berjalan memiliki kernel mutex yang ditentukan, atau nol jika kernel mutex saat ini tidak dimiliki oleh thread.
* int mutex_owner(kmutext_t *mutext) – mengembalikan pointer ke thread yang memiliki mutex yang ditentukan.
* mutex_type_adaptive(kmutex_t *mutex)- mengembalikan nilai bukan nol jika kernel mutex bertipe MUTEX_ADAPTIVE, dan sebaliknya.
* progenyof(pid_t pid) – mengembalikan nilai bukan nol jika proses yang sedang berjalan merupakan turunan dari proses yang memiliki PID yang ditentukan.
* rand() – mengembalikan nilai pseudo-random.
* rw_iswriter(krwlock_t *rwlock) - mengembalikan nilai bukan nol jika reader-writer lock tersebut dimiliki oleh writer atau sedang diminta oleh writer.
* rw_writer_held(krwlock_t *rwlock) – mengembalikan nilai bukan nol jika reader-writer lock tersebut dimiliki oleh writer.
* speculation() – mempersiapkan tempat di trace buffer untuk dipakai oleh speculate().
* strjoin(char *str1, char *str2) – menggabungkan str1 dan str2.
* strlen(string str) – mengembalikan jumlah karakter di str, tidak termasuk null byte.

Contoh pengunaan dtrace :

1.

dtrace -s namafile.d 1234 (Dimana namafile.d adalah file yangberisi program D)

2.

dtrace -s trace_read.d (menulis program kita dalam file trace_read.d)

3. ppriv -s A+dtrace_kernel,dtrace_proc,dtrace_user [PID](Digunakan untuk memberikan privilege di atas secara sementara pada sebuah PID shell)

2.Perbedaan Unix, Free BSD, Solaris dan Linux

1. Unix
Termasuk sistem operasi yang paling awal ada untuk komputer. Merupakan induk dari sistem operasi linux. Unix pertama kali dibuat di Bell Labs, sebuah unit riset dan pengembangan di bawah AT&T (dan sekarang di bawah Lucent) untuk komputer mini PDP dan VAX. Versi terakhir yang ditulis Bell Labs sendiri adalah versi ketujuh (V7), 1979. Sejak 1974 Universitas of California, Berkeley, menggunakan Unix, dan sejak 1977 juga mulai mengembangkan Unix-nya sendiri (BSD). Sepanjang sejarahnya, Unix telah dikembangkan oleh berbagai vendor dan telah hadir dalam berbagai rupa dan rasa. Tidak semuanya gratis, tidak semuanya saling kompatibel. Unix popular karena portabel—ditulis dalam bahasa tingkat tinggi C sejak 1973 dan bukan assembly, sehingga mudah dipindahkan antararsitektur komputer—serta memiliki konsep sederhana dan elegan.
2. Free BSD
FreeBSD adalah sebuah sistem operasi bertipe Unix bebas yang diturunkan dari UNIX AT&T lewat cabang Berkeley Software Distribution (BSD) yaitu sistem operasi 386BSD dan 4.4BSD. FreeBSD berjalan di atas sistem Intel x86 (IA-32) (termasuk Microsoft Xbox), DEC Alpha, Sun UltraSPARC, IA-64, AMD64, PowerPC dan arsitektur NEC PC-98. Dukungan untuk arsitektur ARM dan MIPS sedang dalam pengembangan. FreeBSD terkenal dengan sebutan “raksasa tak dikenal” diantara software operating system bebas. FreeBSD bukan merupakan tiruan Unix, tetapi berjalan seperti operating system Unix. FreeBSD bekerja dengan Unix-compliant internals dan sistem API. FreeBSD umumnya sebagai operating system yang dapat diandalkan dan kuat. Proyek pembangunan operating system FreeBSD dimulai pada tahun 1993 yang tumbuh dengan cepat. Banyak keunggulan yang bisa didapat dari operating system FreeBSD tersebut.
3. Solaris

Solaris adalah salah satu UNIX yang paling dikenal dunia. Solaris dibuat oleh Sun Microsystem. Solaris berjalan pada high−end hardware yang dapat mendukung puluhan processor, GB RAM, serta harddisk. Ia banyak digunakan sebagai platform oleh aplikasi enterprise, seperti Oracle. Solaris didesain untuk berjalan pada processor SPARC yang diproduksi oleh SUN. Karena SUN mengontrol sendiri hardware dan software, mereka dapat mengembangkan system dengan fitur2 menarik, seperti, hot-swappable RAM, mainboard, harddisk, CPU.
SUN OS merupakan sebuah versi UNIX yang digunakan dalam workstation-workstation Sun Microsystems yang dirilis pada tahun 1982. Setelah merilis SunOS versi 4, Sun Microsystems mengubah kode UNIX BSD yang sebelumnya mereka gunakan dengan kode UNIX System V, setelah mendapatkan lisensi dari pemegang lisensi UNIX waktu itu, AT&T. Perubahan ini menjadikan namanya berubah menjadi Solaris versi 2, dari yang seharusnya SunOS 5. Sehingga, secara tidak langsung, SunOS pun dianggap sebagai Solaris versi 1.x.
Istilah SunOS masih digunakan sebagai istilah yang merujuk kepada inti dari Solaris. Nomor versi inti SunOS dianggap sebagai versi Solaris 5.{nomor versi Solaris}. Sebagai contoh, Solaris 10, dapat disebut sebagai SunOS 5.10. Man page Solaris juga dinamai sebagai SunOS, meski istilah SunOS tidak lagi digunakan dalam dokumentasi marketing Sun Microsystems
4. Linux

Linux 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 siapapun.
Nama “Linux” berasal dari nama kernelnya (kernel Linux), yang dibuat 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.
Linux adalah sebuah kloning UNIX, ditulis benar-benar dari bawah lebih dari satu dekade lalu. Linux sama dengan BSD dalam banyak hal, namun BSD telah mempunyai budaya yang telah lama, serta lebih ramah terhadap dunia komersial. Linux mensyaratkan kepada pemakai komersial untuk memberikan feedback kembali ke linux, sementara BSD tidak mempunyai batasan seperti ini. Diantara pengguna UNIX, terdapat konflik persepsi antara kubu BSD dan LINUX. Namun jika anda menggali lebih dalam, sebaliknya, anda akan melihat bagaimana para developer berkomunikasi dan bekerjasama dengan ramah dan pikiran terbuka. Hanya sebagian kecil dari user maupun developer yang membuat friksi.

Dari keempat software operating system diatas, hampir seluruhnya merupakan pengembangan dari operating system Unix. Namun dari setiap operating system diatas memiliki kelebihan dan kekurangan masing-masing.

RANGKUMAN BAB 3 DAN 4

BAB IV

PROSES

Proses didefinisikan sebagai program yang sedang dieksekusi. Menurut Silberschatz proses tidak hanya sekedar suatu kode program (text section), melainkan meliputi beberapa aktivitas yang bersangkutan seperti program counter dan stack. Keterkaitan hubungan antara proses dengan sistem operasi terlihat dari cara sistem operasi menjalankan/mengeksekusi proses. Sistem operasi mengeksekusi proses dengan dua cara yaitu batch system yang mengeksekusi jobs dan time-shared system yang mengatur pengeksekusian program pengguna (user) atau tasks.

Diagram status Proses

Sebuah proses dapat memiliki tiga status utama yaitu:

  1. Running. Status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi
  2. Waiting. Status yang dimiliki pada saat proses menunggu suatu sebuah event seperti proses M/K.
  3. Ready. Status yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor

Terdapat dua status tambahan, yaitu saat pembentukan dan terminasi:

  1. New. Status yang dimiliki pada saat proses baru saja dibuat
  2. Terminated. Status yang dimiliki pada saat proses telah selesai dieksekusi.

Hanya satu proses yang dapat berjalan pada prosesor mana pun pada satu waktu. Namun, banyak
proses yang dapat berstatus Ready atau Waiting.

Ada tiga kemungkinan bila sebuah proses memiliki status Running:

  1. Jika program telah selesai dieksekusi maka status dari proses tersebut akan berubah menjadi Terminated.
  2. Jika waktu yang disediakan oleh OS untuk proses tersebut sudah habis maka akan terjadi interrupt dan proses tersebut kini berstatus Ready.
  3. Jika suatu event terjadi pada saat proses dieksekusi (seperti ada permintaan M/K) maka proses tersebut akan menunggu event tersebut selesai dan proses berstatus Waiting.

Process Control Block

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

  1. Status Proses. Status new, ready, running, waiting, halted, dan juga banyak lagi.
  2. Program Counter. Suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.
  3. 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 (lihat Gambar 10.3, Status Proses).
  4. Informasi manajemen memori. 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
  5. Informasi pencatatan. Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan,batas waktu, jumlah akun, jumlah job atau proses, dan banyak lagi.
  6. Informasi status M/K. Informasi termasuk daftar dari perangkat M/K yang di gunakan pada proses ini, suatu daftar berkas-berkas yang sedang diakses dan banyak lagi. PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yang satu dengan yang lain.

Terminasi Proses

Suatu proses diterminasi ketika proses tersebut telah selesai mengeksekusi perintah terakhir atau diterminasi dengan sengaja oleh proses lain, biasanya proses induk yang melakukan hal ini. Pada saat terminasi. Semua sumber-daya yang digunakan oleh proses akan dialokasikan kembali oleh sistem operasi agar dapat dimanfaatkan oleh proses lain. Suatu proses yang diterminasi karena selesai melakukan tugasnya, sistem operasi akan memanggil system call exit() sedangkan proses yang diterminasi dengan sengaja oleh proses lain melalui system call abort. Biasanya proses induk melakukan terminasi sengaja pada turunannya. Alasan terminasi tersebut seperti:

  1. Turunan melampaui penggunaan sumber-daya yang telah dialokasikan. Dalam keadaan ini, proses induk perlu mempunyai mekanisme untuk memeriksa status turunannya-nya.
  2. Task yang ditugaskan kepada turunan tidak lagi diperlukan.
  3. Proses induk selesai, dan sistem operasi tidak mengizinkan proses turunan untuk tetap berjalan.

Jadi, semua proses turunan akan berakhir pula. Hal ini yang disebut cascading termination.

PENJADWALAN

Penjadwalan CPU adalah pemilihan proses dari antrian ready untuk dapat dieksekusi. Penjadwalan CPU merupakan konsep dari multiprogramming, dimana CPU digunakan secara bergantian untuk proses yang berbeda. Suatu proses terdiri dari dua siklus yaitu Burst M/K dan Burst CPU yang dilakukan bergantian hingga proses selesai. Penjadwalan CPU secara garis besar dibagi menjadi 2, yaitu Penjadwalan Preemptive dan Penjadwalan Non Preemptive. Membuat penjadwalan yang Preemptive mempunyai keuntungan yaitu sistem lebih responsif daripada sistem yang memakai penjadwalan Non Preemptive. Penjadwalan CPU mungkin dijalankan ketika proses:

1. running ke waiting time

2. running ke ready state

3. waiting ke ready state

4. terminates

Proses 1 dan 4 adalah proses Non Preemptive, dimana proses tersebut tidak bisa di- interrupt, sedangkan 2 dan 3 adalah proses Preemptive, dimana proses boleh diinterrupt. Komponen yang lain dalam penjadwalan CPU adalah dispatcher, dispatcher adalah modul yang memberikan kendali CPU kepada proses. Waktu yang diperlukan oleh dispatcher untuk menghentikan suatu proses dan memulai proses yang lain disebut dengan dispatch latency. Jika dalam suatu proses Burst CPU jauh lebih besar daripada Burst M/K maka disebut CPU Bound. Demikian juga sebaliknya disebut dengn M/K Bound. Dalam menilai baik atau buruknya suatu algoritma penjadwalan kita bisa memakai beberapa kriteria, diantaranya CPU utilization, throughput, turnaround time, waiting time, dan response time.

Algoritma yang baik adalah yang mampu memaksimalkan CPU utilization dan throughput, dan meminimalkan turnaround time, waiting time, dan response time.

BAB III

PROSES

Pada 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.

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.
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. Process State
a. Running. Status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi
b. Waiting. Status yang dimiliki pada saat proses menunggu suatu sebuah event seperti proses M/K.
c. Ready. Status yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor.
d. New. Status yang dimiliki pada saat proses baru saja dibuat
e. Terminated. Status yang dimiliki pada saat proses telah selesai dieksekusi.
Hanya satu proses yang dapat berjalan pada prosesor mana pun pada satu waktu. Namun, banyak proses yang dapat berstatus Ready atau Waiting.


3. Blok Kontrol Proses
Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block(PCB) yang juga disebut sebuah 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. 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 (lihat Bagian V, Memori).
e. Informasi pencatatan. Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun, jumlah job atau proses, dan banyak lagi.
f. 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.
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.

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.
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. Scheduler (Penjadwal)
Satu proses berpindah di antara penjadwalan berbagai antri sepanjang ini seumur hidup. Sistem operasi harus dipilih, untuk menjadwalkan penggunaan, proses dari antri ini pada beberapa pertunjukan. Proses seleksi diselesaikan oleh
penjadwal yang sesuai.
3. Context Switch
Menukarkan CPU ke proses lain memerlukan penyelamatan status dari proses yang tua dan isi status tersimpan untuk proses baru. Tugas ini dikenal sebagai satu
tombol hubungan kalimat. Hubungan kalimat dari satu proses diwakili pada PCB dari satu proses; ini meliputi nilai dari daftar CPU, status proses, dan
informasi manajemen ingatan. Ketika satu tombol hubungan kalimat terjadi, daging buah selamatkan hubungan kalimat dari proses yang tua di dalamnya PCB dan mengisi hubungan kalimat tersimpan dari proses lagi menjadwalkan jalankan.

Operasi pada Proses
Proses pada sistem dapat melaksanakan secara bersamaan, dan mereka harus diciptakan dan terhapus dengan dinamis. Dengan demikian, sistem operasi harus menyediakan satu
mekanisme (atau fasilitas) untuk memproses ciptaan dan penghentian.

Cooperating Processes (Kerja sama proses)
Proses berbarengan melaksanakan pada sistem operasi mungkin yang manapun proses bebas tak terikat atau bekerjasama proses. Satu proses adalah bebas tak terikat kalau
ini tidak dapat mempengaruhi atau terpengaruh pelaksanaan proses yang lain pada sistem. Dengan jelas, apapun proses itu tidak berbagi apapun data (sementara atau gigih) dengan
lain proses adalah bebas tak terikat. Pada sisi lain, satu proses bekerjasama kalau ini dapat mempengaruhi atau terpengaruh pelaksanaan proses yang lain pada sistem.
Dengan jelas, apapun proses andil itu data dengan proses lain adalah satu kerjasama proses.
Kita mungkin mau menyediakan satu lingkungan yang mengijinkan bantuan kerjasama proses untuk beberapa alasan-alasan:
- Berbagi keterangan: Sejak beberapa pengguna mungkin tertarik pada yang sama potongan dari keterangan (sebagai contoh, satu file berbagi), kita harus menyediakan satu
lingkungan untuk mengijinkan akses berbarengan ke jenis ini dari sumber daya.
- Speedup perhitungan: Kalau kita menginginkan satu tugas tertentu untuk menjalankan lebih cepat, kita harus patahkan ini ke dalam subtasks, masing-masing sebesar wluch akan laksanakan di paralel dengan
lain-lain. Seperti itu speedup dapat dicapai hanya jika komputer yang punya beberapa memproses unsur (CPU seperti itu atau aku o alur).
- Satu Modularity: Kita mungkin mau membangun sistem pada satu pertunjukan modular, membagi fungsi sistem ke dalam proses terpisah atau susup.
- Kenyamanan: Bahkan perorangan pengguna mungkin punya banyak tugas pada yang mana untuk mengerjakan pada suatu waktu. Sebagai contoh, satu pengguna mungkin pemeriksaan naskah, cetak, dan
menyusun di paralel.

Interprocess Communication
IPC menyediakan satu mekanisme untuk mengijinkan proses untuk mengomunikasikan dan untuk padankan aksi mereka tanpa berbagi ruang alamat yang sama. IPC terutama
berguna pada satu lingkungan terdistribusi dimana proses komunikasi membolehkan bercokol pada komputer berbeda menghubungkan dengan satu jaringan. Satu contoh adalah satu
bercakap-cakap program terpakai pada Jaringan Internet Seluruh Dunia.
IPC adalah terbaik disediakan oleh satu pesan sistem lewat, dan sistem pesan dapat didefinisikan pada beberapa jalan. Di bagian ini, kita melihat kepada emisi berbeda ketika
mendisain sistem hantaran pesan.

Communication in Client – Server Systems (Komunikasi pada Klien-Sistem server)
Pertimbangkan satu pengguna yang memerlukan akses ke data menempatkan di beberapa server. Antara lain, satu pengguna mungkin berharap menemukan total angka dari baris, perkataan, dan karakter di
satu file menempatkan di server A. permintaan Ini ditangani oleh satu server remote satu, yang akses file, hitung hasil diinginkan, dan padahal kirim nyata
data kembali pengguna.