Makalah Building H2o Problem
Makalah Building H2o Problem
Makalah ini disusun untuk memenuhi tugas dari mata kuliah Sistem Operasi
DOSEN PENGAMPU
Juanda Hakim Lubis, ST. M.Kom
DISUSUN OLEH
Almeranda Haryaveda 0701212141
Bintang Hutagalung 0701212149
Emir Syarif Machfudz 0701212049
Rara Fazira 0701212175
SEMESTER/KELAS
IV/IK-5
Puji dan syukur kami panjatkan kehadirat Allah SWT. Yang telah
melimpahkan rahmat dan karunia-Nya, sehingga kami dapat menyelesaikan
makalah yang berguna untuk memenuhi tugas mata kuliah Sistem Operasi. Selain
itu, makalah ini bertujuan untuk menambah wawasan mahasiswa tentang
bagaimana mengimplementasikan program building h20 ke praktek dengan
menggunakan komputer.
Makalah ini kami tulis dari hasil penyusunan data-data yang kami peroleh
dari website universitas, jurnal ilmiah dan e-book. Kami berharap dengan adanya
makalah ini dapat menyadarkan para mahasiswa untuk lebih maju, mempelajari dan
menerapkannya di dalam kehidupan sehari-hari. Dalam penyusunan makalah ini
kami menyadari bahwa makalah ini jauh dari kata sempurna, untuk itu bagi para
pembaca dimohon untuk memberikan saran dan kritik yang membangun motivasi
agar kedepannya lebih baik lagi dalam proses pembuatan makalah.
Kami selaku penulis mengucapkan terima kasih kepada Bapak Juanda
Hakim, ST. M.Kom selaku dosen mata kuliah Sistem Operasi, maupun kepada
pihak lain yang telah membaca dan memahami makalah ini dengan seksama.
Penulis
i
DAFTAR ISI
DAFTAR PUSTAKA........................................................................................... 17
ii
BAB I PENDAHULUAN
1
memanfaatkan teknologi hemat energi dalam pengolahan air dan penggunaan
energi di dalam bangunan. Ketiga, pendekatan ini dapat mengurangi dampak
lingkungan melalui pengurangan limbah cair yang dibuang ke sistem
pembuangan umum dan mengurangi dampak penurunan kualitas air tanah
Namun, implementasi Building H2O juga melibatkan tantangan. Salah
satunya adalah biaya implementasi yang mungkin lebih tinggi dibandingkan
dengan infrastruktur air tradisional. Selain itu, adopsi konsep ini juga
memerlukan perubahan paradigma dalam desain, konstruksi, dan
pengoperasian bangunan, serta dukungan pemerintah, industri, dan masyarakat
untuk mengatasi hambatan-hambatan tersebut. Dalam tulisan ini, kami akan
membahas konsep Building H2O secara mendalam dan menganalisis manfaat
serta tantangan dalam menerapkan pendekatan.
1.3 Tujuan
Adapun tujuan dari penulisan ini sebagai berikut:
1.3.1 Menjelaskan latar belakang tentang hydrogen dan oksigen!
1.3.2 Menjelaskan permasalahan Building H2O!
1.3.3 Menjabarkan penyelesian dari permasalahan Building H2O!
1.3.4 Mengetahui solusi dalam bentuk program dan semaphore dari
permasalahan Building H2O.
2
BAB II PEMBAHASAN
1
Wei C, Rao RR, Peng J, et al. Recommended Practices and Benchmark Activity for Hydrogen and
Oxygen Electrocatalysis in Water Splitting and Fuel Cells. Adv Mater. 2019;31(31):e1806296.
doi:10.1002/adma.201806296
3
hydrogen juga digunakan dalam proses hidrogenasi untuk mengubah
minyak nabati menjadi lemak padat seperti margarin.
Energi Terbarukan: Hydrogen juga dianggap sebagai sumber energi
terbarukan potensial. Produksi hydrogen dari sumber energi terbarukan
seperti matahari dan angin dapat menghasilkan bahan bakar yang dapat
disimpan dan digunakan saat dibutuhkan. Namun, tantangan utama adalah
efisiensi dan biaya produksi hydrogen dalam skala besar.
Salah satu aspek penting dari penggunaan hidrogen dalam Building 2.0
adalah sebagai bahan bakar alternatif. Hidrogen dapat digunakan dalam sel
bahan bakar untuk menghasilkan listrik dan panas, dengan hanya menghasilkan
air sebagai produk sampingan. Keuntungan utama dari menggunakan hidrogen
sebagai bahan bakar adalah bahwa tidak ada emisi karbon yang dihasilkan
selama proses pembakaran. Ini berarti bahwa menggunakan hidrogen sebagai
sumber energi dapat membantu mengurangi dampak lingkungan dan
mengurangi jejak karbon bangunan. Selain itu, hidrogen juga dapat digunakan
sebagai bahan baku dalam proses produksi industri yang berkelanjutan.
Misalnya, hidrogen dapat digunakan dalam produksi baja tanpa emisi karbon,
di mana hidrogen berfungsi sebagai agen reduksi untuk mengurangi bijih besi
menjadi logam baja. Ini merupakan langkah penting dalam menciptakan
industri baja yang lebih ramah lingkungan.
Namun, penggunaan hidrogen dalam Building 2.0 juga memiliki beberapa
tantangan. Salah satunya adalah masalah penyimpanan dan distribusi hidrogen
yang aman dan efisien. Hidrogen memiliki sifat yang sangat mudah terbakar
dan mudah terlepas, sehingga memerlukan sistem penyimpanan dan
penanganan khusus yang memenuhi standar keamanan yang ketat. Selain itu,
infrastruktur untuk distribusi hidrogen juga masih terbatas, sehingga perlu
pengembangan lebih lanjut untuk mendukung penggunaan hidrogen secara
luas dalam sektor bangunan.
4
Oksigen (O) adalah unsur kimia yang sangat penting bagi kehidupan di
Bumi. Secara kimiawi, oksigen adalah unsur nonlogam yang termasuk dalam
golongan 16 atau golongan oksigen dalam tabel periodik. Oksigen memiliki
nomor atom 8, yang berarti atomnya memiliki delapan elektron yang terdiri dari
dua elektron dalam kulit dalam dan enam elektron dalam kulit luar. Ini membuat
oksigen menjadi sangat reaktif secara kimia.
Oksigen ada dalam bentuk gas di atmosfer Bumi, membentuk sekitar 21%
dari volume atmosfer. Gas oksigen yang kita hirup sangat penting bagi semua
bentuk kehidupan yang bergantung pada respirasi aerobik, termasuk manusia,
hewan, dan sebagian besar mikroorganisme. Dalam proses respirasi aerobik,
oksigen digunakan oleh organisme untuk mengoksidasi atau membakar zat
makanan yang dikonsumsi dan menghasilkan energi yang diperlukan untuk
fungsi seluler. Selain peran vitalnya dalam respirasi aerobik, oksigen juga
memiliki berbagai aplikasi dalam industri dan ilmu pengetahuan
(Thomas GP, 2019)2. Beberapa penggunaan oksigen meliputi:
a. Industri dan Manufaktur: Oksigen digunakan dalam proses produksi logam,
seperti pembuatan baja dan besi tuang. Hal ini juga digunakan dalam proses
oksidasi dan pembakaran dalam industri kimia dan petrokimia. Oksigen
juga digunakan dalam pengelasan, pemotongan logam, dan penggunaan
oksigen terapeutik.
b. Perawatan Medis: Oksigen digunakan dalam perawatan medis untuk
menyediakan suplementasi oksigen kepada pasien dengan gangguan
pernapasan atau kondisi medis tertentu. Ini dapat dilakukan melalui
penggunaan tabung oksigen atau melalui ventilasi mekanik.
c. Aplikasi Ruang Angkasa: Oksigen sangat penting dalam industri ruang
angkasa, di mana ia digunakan sebagai oksidator dalam roket dan sistem
propulsi. Ini memungkinkan pembakaran bahan bakar yang efisien di
lingkungan yang kurang memiliki oksigen.
2
Thomas, G.P.. (2019, May 07). Oxygen (O) - Discovery, Occurrence, Production, Properties and
Applications of Oxygen. AZoM. Retrieved on June 07, 2023 from
https://www.azom.com/article.aspx?ArticleID=7931
4
d. Lingkungan dan Ekologi: Oksigen berperan penting dalam siklus oksigen di
lingkungan. Proses fotosintesis pada tumbuhan menghasilkan oksigen
sebagai produk sampingan, dan oksigen ini dilepaskan ke atmosfer. Oksigen
di air juga penting untuk kehidupan akuatik, termasuk organisme laut dan
perairan.
3
McCrory CCL, Jung S, Ferrer IM, Chatman SM, Peters JC, Jaramillo TF. Benchmarking hydrogen
evolving reaction and oxygen evolving reaction electrocatalysts for solar water splitting devices. J
Am Chem Soc. 2015;137(13):4347-4357. doi:10.1021/ja510442p
5
bersamaa. Ini adalah alat sinkronisasi yang mengontrol akses ke sumber daya
bersama dalam sistem konkuren. Semaphore adalah variabel yang digunakan
untuk memecahkan masalah bagian kritis dengan mengontrol akses ke sumber
daya bersama dalam sistem konkuren. Semaphore dapat diimplementasikan
dengan berbagai cara, seperti spinlock dasar, perluasan jumlah semaphore, dan
struktur rantai kunci. Implementasi perangkat keras dari manajemen semaphore
juga dapat dilakukan untuk meningkatkan kemampuan respons sistem operasi
waktu nyata (Lindkk, 2021)4.
Adapun implementasinya sebagai berikut:
a. Thread-thread tidak harus mengetahui thread lain dengan siapa mereka
berpasangan, tetapi mereka harus melewati barier dalam kelompok lengkap.
Contoh: Jika ada 4 thread, mereka harus membentuk dua pasang lengkap
untuk melintasi barrier.
b. Setiap kelompok harus terdiri dari satu thread oksigen dan dua thread
hidrogen. Contoh: Jika ada 3 thread, mereka harus membentuk satu
kelompok lengkap dengan satu thread oksigen dan dua thread hidrogen.
c. Kelas CyclicBarrier dari paket java.util.concurrent dapat digunakan untuk
mengelompokkan fungsi barier. Contoh: Dengan menggunakan
CyclicBarrier, kita dapat mengatur barier untuk menunggu hingga semua
thread siap sebelum melanjutkan.
d. Thread-thread harus disinkronkan untuk memastikan bahwa semua thread
dari satu molekul memanggil ikatan sebelum thread dari molekul
berikutnya. Contoh: Jika ada 2 molekul, setiap molekul harus
menyelesaikan ikatan sebelum molekul berikutnya melakukannya.
e. Jika sebuah thread oksigen tiba di barier ketika tidak ada thread hidrogen,
maka thread oksigen harus menunggu dua thread hidrogen. Jika sebuah
thread hidrogen tiba di barier ketika tidak ada thread lain, maka thread
hidrogen harus menunggu thread oksigen dan satu thread hidrogen lagi.
Contoh: Jika ada 2 thread oksigen dan 3 thread hidrogen, satu thread
4
Lin ZG, Ding H. Research on multithread programming method based on Java programming. 2021
3rd Int Conf Artif Intell Adv Manuf. Published online 2021.
6
hidrogen harus menunggu thread oksigen dan satu thread hidrogen lagi
sebelum mereka semua dapat melintasi barier.
f. Semaphore juga dapat digunakan untuk menyelesaikan masalah ini.
Contoh: Dengan menggunakan Semaphore, kita dapat mengontrol jumlah
izin yang tersedia untuk setiap jenis thread, sehingga memastikan
kelompok-kelompok lengkap terbentuk sebelum melintasi barier.
7
oksigen memiliki delapan elektron di kulit valensinya (2 elektron sendiri dan 6
elektron dari ikatan kovalen). Atom hidrogen juga memiliki dua elektron di
kulit valensinya (1 elektron sendiri dan 1 elektron dari ikatan kovalen) (Barati
Darband G, 2020)5.
2.4 Solusi Dalam Bentuk Program Bahasa C# Dan Program Semaphore Dari
Permasalahan Building H2O
1. Program C# (Solusi Pertama)
a. Program
using System;
using System.Collections.Generic;
// Membangun Air
BuildWater(chemicals);
}
5
Barati Darband G, Aliofkhazraei M, Hyun S, Shanmugam S. Pulse Electrodeposition of a
Superhydrophilic and Binder-Free Ni-Fe-P Nanostructure as Highly Active and Durable
Electrocatalyst for Both Hydrogen and Oxygen Evolution Reactions. ACS Appl Mater Interfaces.
2020;12(48):53719-53730. doi:10.1021/acsami.0c13648
8
{
// Hitung jumlah maksimal molekul air yang bisa
dibentuk
int waterCount = Math.Min(hydrogenCount / 2,
oxygenCount);
b. Hasil
Output dari program di atas adalah:
Penjelasan:
1) Pada awalnya, terdapat 2 molekul hidrogen (H2) dan 8 molekul
oksigen (O2), serta tidak ada molekul air (H2O).
9
2) Karena terdapat cukup reaktan, yaitu setidaknya 2 molekul hidrogen
dan 1 molekul oksigen, program dapat membangun 1 molekul air
(H2O).
3) Setelah reaksi terjadi, 1 molekul hidrogen digunakan (menjadi 0
molekul), 1 molekul oksigen digunakan (menjadi 7 molekul), dan 1
molekul air terbentuk.
4) Jumlah reaktan dan produk yang tersisa ditampilkan di layar.
c. Pembahasan
1) Baris 1 dan 2: mengimpor namespace yang diperlukan.
2) Baris 7 – 9: mendefinisikan konstanta untuk reaktan dan produk.
3) Baris 11 – 23: metode Main() adalah entry point program.
4) Baris 25: metode BuildWater() menerima parameter chemicals yang
berupa Dictionary<string, int> yang berisi jumlah reaktan yang
tersedia.
5) Baris 28: program memeriksa apakah ada cukup reaktan (hidrogen
dan oksigen) yang tersedia untuk bereaksi.
6) Baris 33: jika reaktan yang cukup tersedia, program memeriksa
apakah jumlah hidrogen minimal 2 dan jumlah oksigen minimal 1
untuk membentuk air.
7) Baris 37: program menghitung jumlah maksimal molekul air yang
bisa dibentuk berdasarkan jumlah hidrogen dan oksigen yang
tersedia.
8) Baris 39 – 41: program memperbarui jumlah reaktan setelah reaksi
terjadi.
9) Baris 43 – 47: program mencetak jumlah molekul air yang terbentuk,
serta jumlah hidrogen, oksigen, dan air yang tersisa setelah reaksi.
10
10) Baris 51: jika reaktan tidak cukup untuk membentuk air, program
mencetak pesan "Tidak Cukup Reaktan untuk membuat air".
11) Baris 57: jika reaktan tidak tersedia, program mencetak pesan
"Reaktan tidak ada".
12) Setelah mencetak pesan, program membaca baris masukan dari
pengguna menggunakan Console.ReadLine(). Ini dilakukan agar
program tidak langsung keluar setelah mencetak pesan dan tetap
menunggu masukan dari pengguna sebelum program berakhir.
2. Program Semaphore (Solusi Kedua)
a. Program
import java.util.concurrent.Semaphore;
class H2O {
private Semaphore hydrogen = new Semaphore(2);
private Semaphore oxygen = new Semaphore();
public H2O() {}
11
b. Hasil
Output dari program tersebut tidak disediakan, karena program
tersebut hanya mengimplementasikan kelas H2O yang digunakan untuk
mengatur dan sinkronisasi perilaku atom hidrogen dan oksigen. Untuk
menghasilkan output yang sesuai, Anda perlu menggunakan kode
tambahan untuk membuat instance dari kelas H2O, mengatur thread
yang menjalankan metode hydrogen dan oxygen, serta menentukan
tindakan yang dilakukan oleh metode releaseHydrogen dan
releaseOxygen.
c. Pembahasan
1) `import java.util.concurrent.Semaphore;` = Baris ini
mengimpor kelas Semaphore yang diperlukan untuk menggunakan
semafora dalam kode.
2) `class H2O { ... }` = Ini adalah deklarasi kelas H2O yang
mengelompokkan semua metode dan atribut terkait dalam satu
kesatuan.
3) `private Semaphore hydrogen = new Semaphore(2);` =
Ini adalah deklarasi variabel `hydrogen` yang bertipe Semaphore
dan memiliki inisialisasi awal dengan nilai 2. Semafora digunakan
untuk mengontrol akses ke atom hidrogen.
4) `private Semaphore oxygen = new Semaphore();` = Ini
adalah deklarasi variabel `oxygen` yang bertipe Semaphore tanpa
parameter inisialisasi. Semafora ini digunakan untuk mengontrol
akses ke atom oksigen.
5) `public H2O() {}` = Ini adalah konstruktor kelas H2O yang
tidak memiliki parameter. Konstruktor ini digunakan untuk
membuat objek H2O.
6) `public void hydrogen(Runnable releaseHydrogen)
throws InterruptedException { ... }`
a) Ini adalah metode `hydrogen` yang menerima objek
`releaseHydrogen` yang bertipe Runnable sebagai parameter.
12
Metode ini mengindikasikan perilaku proses hidrogen dalam
pembentukan air.
b) `hydrogen.acquire();` menunjukkan bahwa atom hidrogen
sedang menunggu untuk mendapatkan izin (permit) dari
semafora `hydrogen`. Jika permit tersedia, atom hidrogen dapat
melanjutkan.
c) `releaseHydrogen.run();` menjalankan tindakan yang
diimplementasikan dalam objek `releaseHydrogen`, yang
mengeluarkan atom hidrogen.
d) `finally { ... }` blok ini memastikan bahwa bagian yang ada di
dalamnya akan dieksekusi setelah blok try, terlepas dari apa pun
yang terjadi. Dalam hal ini, `if (hydrogen.availablePermits() ==
0)` memeriksa apakah semua atom hidrogen telah dibebaskan.
Jika ya, `oxygen.release()` membebaskan atom oksigen.
7) `public void oxygen(Runnable releaseOxygen) throws
InterruptedException { ... }`
a) Ini adalah metode `oxygen` yang menerima objek
`releaseOxygen` yang bertipe Runnable sebagai parameter.
Metode ini mengindikasikan perilaku proses oksigen dalam
pembentukan air.
b) `oxygen.acquire();` menunjukkan bahwa atom oksigen sedang
menunggu untuk mendapatkan izin (permit) dari semafora
`oxygen`. Jika permit tersedia, atom oksigen dapat melanjutkan.
c) `releaseOxygen.run();` menjalankan tindakan yang
diimplementasikan dalam objek `releaseOxygen`, yang
mengeluarkan atom oksigen.
d) `finally { ... }` blok ini memastikan bahwa bagian yang ada di
dalamnya akan dieksekusi setelah blok try, terlepas dari apa pun
yang terjadi. Dalam hal ini, `hydrogen.release(2)`
membebaskan dua atom hidrogen.
13
3. Program Semaphore dan Barrier (Solusi Ketiga)
a. Program
class H2O {
releaseHydrogen.run();
cb.await();
hydrogen.release();
}catch(Exception e){
releaseOxygen.run();
cb.await();
oxygen.release();
}catch(Exception e){
}
}
}
b. Hasil
1) Contoh Output 1:
H
H
O
2) Contoh Output 2:
14
H
O
H
3) Contoh Output 3:
O
H
H
15
mencetak HH, kemudian memanggil cb.await() (cb belum terpecah
karena cb masih memiliki 1 partisipan). Sekarang, tidak ada thread
lain yang dapat memperoleh izin pada semaphore hydrogen karena
izinnya adalah 0, dan cb hanya akan terpecah ketika satu thread lagi
memanggil cb.await(), yang berarti hanya thread oxygen yang dapat
memecahkan cb. Oleh karena itu, kita akan mencetak HHO.
2) OO - Dua thread pertama memanggil metode oxygen (Runnable
releaseOxygen), karena kita memiliki 1 izin pada semaphore
oxygen, satu thread akan mendapatkan akses ke oxygen dan thread
lainnya akan menunggu di oxygen.acquire(). Thread pertama yang
mendapatkan akses akan mencetak O dan menjalankan cb.await()
(mengurangi nilai partisipan menjadi 2). Thread ini tidak dapat
melanjutkan karena cyclic barrier. Thread lain untuk O sedang
menunggu di metode oxygen.acquire(), karena kita memiliki 1 izin.
Satu-satunya cara untuk memecahkan cb adalah ketika 2 thread
hydrogen dieksekusi. Dengan demikian, mencetak OHH. Thread
oxygen lainnya kemudian akan mendapatkan akses ke semaphore
dan akan mencetak satu batch H2O lagi.
3) OH / HO - Dua thread pertama adalah OH atau HO, eksekusi akan
campuran dari 2 skenario di atas. Salah satu mendapatkan akses ke
semaphore oxygen dan yang lainnya mendapatkan akses ke
semaphore hydrogen. Dengan demikian, mencetak OH atau HO dan
cb akan menunggu untuk diputuskan oleh satu thread H. Dengan
demikian, pada akhirnya akan mencetak OHH atau HOH.
Proses di atas akan diulang sampai masukan berakhir..
16
BAB III PENUTUP
3.1 Kesimpulan
Membangun H2O adalah masalah yang melibatkan pemrograman
bersamaan dan penggunaan semaphore. Tujuannya adalah mengelompokkan
dua jenis thread, yaitu hidrogen dan oksigen, untuk membentuk molekul air.
Dalam permasalahan ini, kami menggunakan bahasa pemrograman C# dan
solusi semaphore.
Pada program yang kami ciptakan, terdapat atom hidrogen dan oksigen.
Misalnya, dalam kasus ini, kami menginputkan dua atom hidrogen dan delapan
atom oksigen. Dari jumlah tersebut, akan terbentuk satu molekul air. Setelah
reaksi selesai, molekul air (H2O) terbentuk, dengan dua atom hidrogen (H) yang
terikat pada delapan atom oksigen (O).
Solusi menggunakan semaphore merupakan pendekatan untuk mengatasi
masalah ini dengan mengontrol akses thread ke sumber daya bersama. Dalam
hal ini, kami menggunakan dua semaphore, satu untuk hidrogen dan satu untuk
oksigen. Semaphore membantu mengatur jumlah thread yang dapat mengakses
sumber daya bersama secara bersamaan.
Dengan menggunakan pemrograman bersamaan dan semaphore, kita dapat
mengkoordinasikan dan mengatur thread hidrogen dan oksigen untuk
membentuk molekul air secara bersamaan, sehingga memastikan pembentukan
H2O terjadi dengan benar.
16
DAFTAR PUSTAKA
Wei C, Rao RR, Peng J, et al. Recommended Practices and Benchmark Activity for
Hydrogen and Oxygen Electrocatalysis in Water Splitting and Fuel Cells.
Adv Mater. 2019;31(31):e1806296. doi:10.1002/adma.201806296
Jin H, Wang J, Su D, Wei Z, Pang Z, Wang Y. In situ cobalt-cobalt oxide/N-doped
carbon hybrids as superior bifunctional electrocatalysts for hydrogen and
oxygen evolution. J Am Chem Soc. 2015;137(7):2688-2694.
doi:10.1021/ja5127165
McCrory CCL, Jung S, Ferrer IM, Chatman SM, Peters JC, Jaramillo TF.
Benchmarking hydrogen evolving reaction and oxygen evolving
reaction electrocatalysts for solar water splitting devices. J Am Chem Soc.
2015;137(13):4347-4357. doi:10.1021/ja510442p
Barati Darband G, Aliofkhazraei M, Hyun S, Shanmugam S. Pulse
Electrodeposition of a Superhydrophilic and Binder-Free Ni-Fe-
P Nanostructure as Highly Active and Durable Electrocatalyst for Both
Hydrogen and Oxygen Evolution Reactions. ACS Appl Mater Interfaces.
2020;12(48):53719-53730. doi:10.1021/acsami.0c13648
Lin ZG, Ding H. Research on multithread programming method based on Java
programming. 2021 3rd Int Conf Artif Intell Adv Manuf. Published online
2021.
Sun H, Yan Z, Liu F, Xu W, Cheng F, Chen J. Self-Supported Transition-Metal-
Based Electrocatalysts for Hydrogen and Oxygen Evolution. Adv Mater.
2020;32(3):e1806326. doi:10.1002/adma.201806326
Thomas, G.P.. (2019, May 07). Oxygen (O) - Discovery, Occurrence, Production,
Properties and Applications of Oxygen. AZoM. Retrieved on June 07, 2023
from https://www.azom.com/article.aspx?ArticleID=7931.
Scripps Institute. "Atmospheric Oxygen Research". Archived from the original on
July 25, 2017. Retrieved October 8, 2011.
IEA (2019), The Future of Hydrogen, IEA, Paris https://www.iea.org/reports/the-
future-of-hydrogen, License: CC BY 4.0
Palmer, David (13 November, 1997). "Hydrogen in the Universe". NASA. Diakses
tanggal 05-02-2008. Staff (2007). "Hydrogen Basics — Production"
"Hydrogen". Van Nostrand's Encyclopedia of Chemistry. Wylie-Interscience. 2005.
hlm. 797–799. ISBN 0-471-61525-0.
17