che cos'è esattamente la programmazione di sistema?

22

Non ho mai capito cosa significasse la programmazione di sistema. La solita definizione data è "... fare qualcosa vicino agli Os o estendere le funzioni di Os ...".

Usa direttamente l'API di Windows piuttosto che alcune librerie per dire che il file i / o rende la programmazione di sistema? Stavo scrivendo la programmazione del sistema operativo Android? Se scrivo qualcosa che potrebbe esporre il kernel di Linux attraverso una console come l'app su Android sto facendo programmazione di sistema? Se scrivo software per controllare una lavatrice sto scrivendo la programmazione del sistema?

Sono un principiante nella programmazione e questo mi confonde a non finire. Per favore, spiegalo in contrasto con "application programming".

    
posta kentjh 05.06.2012 - 15:13
fonte

5 risposte

14

Personalmente apprezzo la definizione da Wikipedia :

System programming (or systems programming) is the activity of programming system software. The primary distinguishing characteristic of systems programming when compared to application programming is that application programming aims to produce software which provides services to the user (e.g. word processor), whereas systems programming aims to produce software which provides services to the computer hardware (e.g. disk defragmenter). It requires a greater degree of hardware awareness.

    
risposta data 05.06.2012 - 16:47
fonte
10

Ci sono diverse domande che puoi pormi per ottenere pratica nel decidere questa domanda.

  • Il sistema era originariamente venduto senza questo programma? Angry Birds può essere una "Killer App" per uno smartphone (il motivo per cui qualcuno lo compra), ma è ancora un'app separata di terze parti scritta molto tempo dopo l'introduzione del telefono. La scrittura sarebbe stata la programmazione delle applicazioni. Ma il driver dello schermo dello stesso smartphone è essenziale per utilizzarlo, quindi sarebbe stata la programmazione dei sistemi.
  • Puoi immaginare di portare il codice su un'altra piattaforma senza riscriverlo in gran parte? TeX e troff sono stati convertiti in praticamente tutti i sistemi con poche modifiche, quindi sono applicazioni, anche se si trovano nella parte inferiore della catena di strumenti che le persone utilizzano abitualmente. Il file system su cui TeX scrive il proprio output, ad es. UFS o VFAT, è un caso limite. potrebbe portare un file system su un sistema operativo diverso se fosse davvero fantastico, ma di solito le persone prendono semplicemente le idee fantastiche e scrivono il proprio file system per il proprio sistema operativo. Ciò rende il software per i file system.
  • La funzionalità è implementata nel kernel o in file binari separati? (Anche qui i file system occupano una via di mezzo: molte parti di molti file system sono in effetti codice del kernel, ma molte hanno parti sostanziali nello spazio utente.) I driver di visualizzazione grafica possono in linea di principio essere componenti esterni collegabili, ma sono spesso implementati nel kernel o almeno con accesso diretto privilegiato al kernel (o anche all'hardware). Sarebbe la programmazione dei sistemi. D'altra parte, i giochi per computer che utilizzano lo stack di visualizzazione grafica sono applicazioni.

Per le tue domande, scrivere il sistema operativo Android era sicuramente la programmazione dei sistemi. La scrittura di un programma che utilizza le chiamate API di Windows è la programmazione dell'applicazione. Non è così portatile come sarebbe se si usassero librerie multipiattaforma come SDL o OpenGL, ma in linea di principio può essere portato, è un codice di terze parti e viene eseguito nello spazio utente. Un'app console che espone lo stato del kernel Linux è un interessante esperimento mentale. Direi sicuramente che coinvolge la programmazione dei sistemi, dal momento che dovresti sapere molto sulla struttura di Linux (nota che "Linux" è correttamente solo il kernel, non la distribuzione) da scrivere, e probabilmente anche usarlo!

    
risposta data 05.06.2012 - 15:31
fonte
3

L'utilizzo diretto dell'API di Windows era, a un certo punto, un modo comune per scrivere applicazioni per Windows. Quindi no, non è la programmazione dei sistemi.

La programmazione dei sistemi non è solo "vicina al sistema operativo": è qualcosa di essenziale per il funzionamento principale del sistema informatico. Quindi scrivere un sistema operativo è la programmazione dei sistemi. La scrittura dei driver video, i driver del filesystem, i driver di rete per quel SO è la programmazione dei sistemi. Scrivere un compilatore per una particolare combinazione di lingua / chipset è la programmazione dei sistemi.

    
risposta data 05.06.2012 - 15:59
fonte
3

In breve: software di scrittura che estende o migliora il funzionamento di un sistema operativo, come driver, aggiornamenti di utilità di sistema per sistemi operativi o persino nuovi sistemi operativi.

Coinvolge principalmente la gestione della memoria; Operazioni di I / O nel senso più ampio della parola come rete, accesso ai file e gestione dei dispositivi; gestione dei processi (multi tasking, process administration, ecc.); user < - > metodi di interazione del sistema (sia in entrata che in uscita) e amministrazione degli utenti. Fondamentalmente tutto ciò che fa parte del sistema operativo che non è un'applicazione è la programmazione dei sistemi.

    
risposta data 05.06.2012 - 16:51
fonte
-3

In breve, la programmazione del sistema rispetto alla programmazione delle applicazioni è che l'SP gestisce il software del sistema operativo per lavorare con le risorse hardware e l'AP gestisce l'attività degli utenti finali.

    
risposta data 12.09.2016 - 17:03
fonte

Leggi altre domande sui tag