Saya tidak pernah mengerti apa arti pemrograman sistem. Definisi yang biasa diberikan adalah "... melakukan sesuatu yang dekat dengan Os atau memperluas fitur Os ...".
Apakah menggunakan Windows API secara langsung daripada beberapa perpustakaan untuk mengatakan apakah file i / o membuatnya pemrograman sistem? Apakah menulis pemrograman sistem OS Android? Jika saya menulis sesuatu yang akan mengekspos kernel linux melalui konsol seperti aplikasi di Android apakah saya melakukan pemrograman sistem? Jika saya menulis perangkat lunak untuk mengontrol mesin cuci, apakah saya menulis pemrograman sistem?
Saya seorang pemula dalam pemrograman dan ini membingungkan saya tanpa akhir. Tolong jelaskan kontrasnya dengan "pemrograman aplikasi".
systems-programming
kentjh
sumber
sumber
Jawaban:
Saya pribadi suka definisi dari Wikipedia :
sumber
Ada beberapa pertanyaan yang bisa Anda tanyakan pada diri sendiri untuk mendapatkan latihan dalam memutuskan pertanyaan itu.
troff
telah porting ke hampir semua sistem dengan sedikit perubahan, sehingga mereka adalah aplikasi, meskipun mereka terletak di bagian bawah rantai alat yang biasanya digunakan orang. Sistem file tempat TeX menulis outputnya, misalnya UFS atau VFAT, adalah kasus batas. Anda dapat mem-port sistem file ke OS yang berbeda jika itu benar-benar hebat, tetapi biasanya orang hanya mengambil alih ide-ide luar biasa dan menulis sistem file mereka sendiri untuk OS mereka sendiri. Itu membuat sistem file sistem perangkat lunak.Untuk pertanyaan Anda, menulis OS Android jelas merupakan pemrograman sistem. Menulis program yang menggunakan panggilan Windows API adalah pemrograman aplikasi. Ini tidak portabel seperti jika Anda menggunakan pustaka lintas platform seperti SDL atau OpenGL, tetapi pada prinsipnya dapat diangkut, itu adalah kode pihak ketiga, dan itu berjalan di ruang pengguna. Aplikasi konsol yang memperlihatkan keadaan kernel Linux adalah eksperimen pemikiran yang menarik. Saya pasti akan mengatakan ini melibatkan pemrograman sistem, karena Anda harus tahu banyak tentang struktur Linux (perhatikan bahwa "Linux" hanya kernel, bukan distribusi) untuk ditulis, dan mungkin bahkan untuk menggunakannya!
sumber
Singkatnya: Menulis perangkat lunak yang memperluas atau meningkatkan fungsi suatu OS, seperti driver, pembaruan utilitas sistem untuk OS atau bahkan OS baru.
Sebagian besar melibatkan Manajemen Memori; Operasi I / O dalam arti luas seperti jaringan, akses file, dan manajemen perangkat; manajemen proses (multi tasking, proses administrasi, dll); pengguna <-> metode interaksi sistem (masuk dan keluar) dan administrasi pengguna. Pada dasarnya segala sesuatu yang merupakan bagian dari OS yang bukan aplikasi adalah pemrograman sistem.
sumber
Menggunakan Windows API secara langsung, pada satu titik, merupakan cara yang umum untuk menulis aplikasi untuk Windows. Jadi tidak, itu bukan pemrograman sistem.
Pemrograman sistem tidak hanya "dekat dengan OS" - itu adalah sesuatu yang penting untuk fungsi inti dari sistem komputer. Jadi menulis OS adalah pemrograman sistem. Menulis driver video, driver sistem file, driver jaringan untuk OS itu adalah pemrograman sistem. Menulis kompiler untuk kombinasi bahasa / chipset tertentu adalah pemrograman sistem.
sumber
Biasanya, ini mengacu pada "hal-hal tingkat rendah yang pengguna akhir non-teknis tidak tahu ada atau tidak tahu dengan jelas bahwa mereka menggunakan atau apa yang mereka lakukan".
Beberapa contoh yang sering dianggap pemrograman sistem:
pembuatan distribusi, yaitu pembuatan gambar userland.
Ini biasanya melibatkan pemilihan pustaka standar C, sistem init dan komponen-komponen dasar pengguna tanah seperti sebuah shell.
Sistem pemrograman sering dilakukan dalam bahasa tingkat rendah dikompilasi tanpa pengumpulan sampah otomatis seperti C atau perakitan, dan cenderung mengakses sistem yang kurang umum panggilan seringkali melalui antarmuka POSIX C .
Saya mengelola tutorial yang membahas beberapa topik pemrograman sistem di sini .
sumber
Saat mendefinisikan ini, saya akan menghindari semua detail teknis. Maka itu menjadi mudah.
Aplikasi memungkinkan pengguna untuk melakukan sesuatu yang bermanfaat dengan beberapa teknologi. Jadi pemrograman aplikasi ditargetkan untuk menyediakan fitur kepada pengguna, secara langsung.
Pemrograman sistem di sisi lain akan meletakkan dasar untuk membuat pemrograman aplikasi mungkin. Ini memberikan fitur ke programmer aplikasi daripada ke pengguna.
Definisi ini akan berlaku, tetapi ini adalah masalah perspektif dan konteks dan peran. Bagi seorang programmer komputer, alat pemrograman adalah aplikasi. Bagi seorang pengguna akhir mereka tidak ada artinya, hanya keluar dari gambar.
sumber
Singkatnya, Pemrograman sistem bila dibandingkan dengan pemrograman aplikasi adalah bahwa SP menangani perangkat lunak OS untuk bekerja dengan sumber daya perangkat keras dan AP menangani aktivitas pengguna akhir.
sumber