tam olarak sistem programlama nedir?


26

Sistem programlamanın ne anlama geldiğini asla anlamadım. Verilen genel tanım, "... Os'a yakın bir şey yapmak veya Os özelliklerini genişletmek ..." şeklindedir.

Söylemek için bazı kütüphaneler yerine doğrudan Windows API kullanıyor mu, bunu sistem programlaması yapıyor mu? Android işletim sistemi sistem programlama mı yazıyordu? Eğer Linux çekirdek uygulaması Android'de bir konsol gibi bir konsol aracılığıyla ortaya çıkaracak bir şey yazarsam sistem programlaması yapıyorum? Bir çamaşır makinesini kontrol etmek için yazılım yazıyorsam, sistem programlaması yazıyor muyum?

Programlamaya yeni başlıyorum ve bu beni hiç şaşırtmadı. Lütfen "uygulama programlaması" ile karşılaştırmayı açıklayınız.


2
Bu tanım değişti ve sistem programcılarının kendileri bugün benzersiz bir tanımdan emin görünmüyorlar. Bu sorun genellikle insanlar X dilinin sistem programlaması için uygun olup olmadığını
tartıştıklarında ortaya çıkar

@Denys Séguret - Kimse "sistem programlamasının" neyle başlayacağı konusunda hemfikir değilse, ironik.
John

Yanıtlar:


19

Şahsen Vikipedi'deki tanımı beğendim :

Sistem programlama (veya sistem programlama), programlama sistemi yazılımının aktivitesidir. Sistem programlamanın uygulama programlamasına kıyasla ayırt edici özelliği, uygulama programlamasının kullanıcıya hizmet sağlayan yazılım üretmeyi amaçlamasıdır (örneğin, kelime işlemcisi), sistem programlama ise bilgisayar donanımına hizmet veren yazılım üretmeyi amaçlamaktadır (örneğin disk birleştirici) ). Daha fazla donanım bilinci gerektirir.


12

Bu soruyu kararlaştırırken alıştırmalar yapmak için kendinize sorabileceğiniz birkaç soru var.

  • Sistem başlangıçta bu program olmadan satıldı mı? Angry Birds bir akıllı telefon için bir "Katil Uygulaması" olabilir (birinin neden satın almasının nedeni), ancak telefonun tanıtılmasından çok sonra yazılmış ayrı bir üçüncü taraf uygulaması. Yazma, uygulama programlaması olurdu. Ancak aynı akıllı telefonun ekran sürücüsü, onu kullanmak için çok önemlidir, bu nedenle sistem programlaması olurdu.
  • Kodu büyük ölçüde yeniden yazmadan, kodu başka bir platforma taşımayı hayal edebiliyor musunuz? TeX ve troffneredeyse hiç değişiklik yapılmayan hemen hemen her sisteme taşındı, bu yüzden insanlar, tipik olarak kullandıkları alet zincirinin altına yerleştirilmiş olsalar bile, uygulamalardır. TeX'in çıktısını yazdığı dosya sistemi, örneğin UFS veya VFAT, sınırda olan bir durumdur. Sen olabilir tamamen harika olsaydı farklı bir işletim sistemine bağlantı noktası dosya sistemini, ancak genellikle insanlar sadece müthiş fikirleri devralmak ve kendi işletim sistemi için kendi dosya sistemi yazın. Bu dosya sistemleri sistem yazılımı yapar.
  • İşlevsellik çekirdekte veya ayrı ikili dosyalarda mı uygulanmaktadır? (Dosya sistemleri burada da orta bir zemine sahiptir. Birçok dosya sisteminin pek çok kısmı aslında çekirdek koddur, ancak çoğunun kullanıcı alanında önemli kısımları vardır.) Grafik ekran sürücüleri prensip olarak takılabilir harici bileşenler olabilir, ancak genellikle uygulanırlar. Çekirdekte veya en azından çekirdeğe (hatta donanıma) doğrudan erişim hakkına sahip. Sistem programlaması olurdu. Öte yandan, grafik ekran yığınını kullanan bilgisayar oyunları uygulamalardır.

Sorularınıza, Android işletim sistemi yazma kesinlikle sistem programlama oldu. Windows API çağrıları kullanan bir program yazmak, uygulama programlamasıdır. SDL veya OpenGL gibi platformlar arası kütüphaneler kullanıyormuşsunuz gibi taşınabilir değildir, ancak prensip olarak taşınabilir, üçüncü taraf kodudur ve kullanıcı alanında çalışır. Linux çekirdeğinin durumunu ortaya çıkaran bir konsol uygulaması ilginç bir düşünce deneyidir. Bunu kesinlikle sistem programlamayı içerdiğini söyleyebilirim, çünkü Linux'un yapısı hakkında çok şey bilmek zorunda kalacaksınız (“Linux” un sadece çekirdeği, dağıtımı değil, sadece çekirdeği olduğunu unutmayın) ve muhtemelen onu bile kullanmalısınız!


4

Kısacası: Sürücüler gibi sistem işletim sisteminin çalışmasını genişleten veya geliştiren yazılımlar, işletim sistemlerinde yapılan güncellemeler ve hatta yeni işletim sistemleri gibi.

Çoğunlukla Bellek Yönetimi'ni içerir; Ağ, dosya erişimi ve cihaz yönetimi gibi kelimenin en geniş anlamında I / O işlemleri; süreç yönetimi (çoklu görev, süreç yönetimi, vb.); kullanıcı <-> sistem etkileşimi yöntemleri (hem giriş hem çıkış) ve kullanıcı yönetimi. Temel olarak, bir uygulama olmayan işletim sisteminin bir parçası olan her şey sistem programlamasıdır.


3

Windows API'yi doğrudan kullanmak, bir noktada, Windows için uygulamalar yazmak için yaygın bir yoluydu. Yani hayır, bu sistem programlama değil.

Sistem programlaması sadece "işletim sistemine yakın" değil, aynı zamanda bilgisayar sisteminin temel işleyişi için de önemli bir şeydir. Yani bir işletim sistemi yazmak sistem programlamasıdır. Video sürücüleri yazma, dosya sistemi sürücüleri, bu işletim sistemi için ağ sürücüleri sistem programlamadır. Belirli bir dil / yonga seti birleşimi için derleyici yazmak, sistem programlamasıdır.


1

Normal olarak, "teknik olmayan son kullanıcıların bilmediği veya kullandıklarını veya ne yaptıklarını açıkça bilmedikleri düşük seviyeli şeyler" anlamına gelir.

Genellikle sistem programlaması olarak kabul edilecek bazı örnekler:

  • işletim sistemleri ve sürücüler
  • derleyiciler
  • emülatörleri ve sanallaştırma
  • dağıtım oluşturma, yani kullanıcı imajlarının yaratılması.

    Bu özellikle normal olarak C standart kütüphanesini, init sistemini ve kabuk gibi temel kullanıcı bileşenlerini seçmeyi içerir.

Sistem programlama genellikle C veya montaj gibi otomatik çöp toplama işlemi olmadan düşük derlenmiş seviyeli dillerde yapılır ve POSIX C arayüzleri üzerinden daha az yaygın sistem çağrılarına erişme eğilimindedir .

Burada birkaç sistem programlama konusunu kapsayan bir eğitim tutacağım .


0

Bunu tanımlarken, tüm teknik detaylardan tamamen uzak dururum. Sonra kolay olur.

Bir uygulama, kullanıcının bir parça teknoloji ile faydalı bir şey yapmasını sağlar. Bu nedenle, uygulama programlaması bir kullanıcıya oldukça doğrudan bir özellik sunmayı hedeflemektedir.

Öte yandan sistem programlaması, uygulama programlamasını mümkün kılmak için temel hazırlar. Kullanıcıya değil uygulama programcısına özellikler sunar.

Bu tanım tutacaktır, ancak bu perspektif, bağlam ve rol meselesidir. Bir bilgisayar programcısı için, programlama araçları uygulamalardır. Bir son kullanıcı için onlar sadece resim dışında, anlamsız.


-3

Kısacası, sistem programlaması, uygulama programlamasına kıyasla, SP'nin işletim sistemi yazılımını donanım kaynakları ile çalışmak üzere kullandığı ve AP'nin son kullanıcıların faaliyetlerini gerçekleştirdiği şeklindedir.


4
bu, önceki 4
cevapta
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.