che cosè esattamente la programmazione del sistema?

Non ho mai capito cosa significasse la programmazione di sistema. La solita definizione data è “… fare qualcosa di simile allOs o estendere le funzionalità dellOs …”.

Luso diretto dellAPI di Windows invece di alcune librerie per dire i / o file rende la programmazione di sistema? Stava scrivendo la programmazione del sistema operativo Android? Se scrivo qualcosa che esponga il kernel di Linux attraverso una console come unapp su Android, sto programmando il sistema? Se sto scrivendo un software per controllare una lavatrice, sto scrivendo la programmazione del sistema?

Sono un principiante nella programmazione e questo mi confonde a non finire. Si prega di spiegare il contrasto con la “programmazione dellapplicazione”.

Commenti

  • Questa definizione è cambiata e gli stessi programmatori di sistema don ‘ Oggi mi sembra di essere sicuro di una definizione unica. Questo problema di solito si verifica quando le persone discutono sul fatto che il linguaggio X sia conveniente per la programmazione di sistema …
  • @Denys S é guret – Ironico se nessuno può essere daccordo su che cosè la ” programmazione di sistema ” per iniziare.
  • Citazione da Perl Cookbook – Capitolo 16. Gestione dei processi e Comunicazione: ” Questo capitolo riguarda lavvio dei comandi e il collegamento di processi separati. Si tratta di gestire la loro creazione, comunicazione e morte definitiva. Si tratta di programmazione di sistemi. ”

Risposta

Io personalmente come la definizione da Wikipedia :

La programmazione di sistema (o programmazione di sistema) è la attività di programmazione software di sistema. La principale caratteristica distintiva della programmazione di sistemi rispetto alla programmazione di applicazioni è che la programmazione di applicazioni mira a produrre software che fornisce servizi allutente (ad es. Elaboratore di testi), mentre la programmazione di sistemi mira a produrre software che fornisce servizi allhardware del computer (ad es. Deframmentazione del disco ). Richiede un grado maggiore di conoscenza dellhardware.

Risposta

Ci sono diverse domande che puoi porci per fare pratica nel decidere questa domanda.

  • Il sistema è stato originariamente venduto senza questo programma? Angry Birds potrebbe essere una “Killer App” per uno smartphone (il motivo per cui qualcuno lo acquista), ma è ancora unapp separata di terze parti scritta molto tempo dopo lintroduzione del telefono. Scriverlo sarebbe stato programmare applicazioni. Ma il driver del display dello stesso smartphone è essenziale per utilizzarlo, quindi sarebbe stata la programmazione dei sistemi.
  • Riuscite a immaginare di portare il codice su unaltra piattaforma senza riscriverlo in gran parte? TeX e troff sono stati portati virtualmente su qualsiasi sistema con poche modifiche, quindi sono applicazioni, anche se si trovano verso la fine della catena di strumenti che le persone usano tipicamente. Il file system su cui TeX scrive il suo output, ad es. UFS o VFAT, è un caso limite. potresti eseguire il porting di un file system su un sistema operativo diverso se fosse assolutamente fantastico, ma di solito le persone si limitano a prendere in mano idee fantastiche e scrivere il proprio file system per il proprio sistema operativo. Ciò rende i file system software di sistema.
  • La funzionalità è implementata nel kernel o in 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 molti hanno parti sostanziali nello spazio utente.) I driver grafici 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 allhardware). Questa sarebbe la programmazione dei sistemi. Daltra parte, i giochi per computer che utilizzano lo stack di visualizzazione grafica sono applicazioni.

Per le vostre domande, scrivere il sistema operativo Android era sicuramente programmazione di sistemi. La scrittura di un programma che utilizza le chiamate API di Windows è la programmazione dellapplicazione. Non è così portabile come se si utilizzassero librerie multipiattaforma come SDL o OpenGL, ma in linea di principio può essere portato, è codice di terze parti e funziona nello spazio utente. Unapp console che espone lo stato del kernel Linux è un interessante esperimento mentale. Direi sicuramente che coinvolge la programmazione di sistemi, dal momento che dovresti sapere molto sulla struttura di Linux (nota che “Linux” è propriamente solo il kernel, non la distribuzione) per scrivere, e probabilmente anche per usarlo!

Risposta

In breve: scrivere software che estende o migliora il funzionamento di un sistema operativo, come driver, aggiornamenti di utilità di sistema al sistema operativo ” es o anche un sistema operativo nuovo di zecca “es.

Riguarda principalmente la gestione della memoria; Operazioni di I / O nel senso più ampio del termine come networking, accesso ai file e gestione dei dispositivi; gestione dei processi (multitasking, amministrazione dei processi, ecc.); utente < -> 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 è unapplicazione è programmazione di sistema.

Rispondi

Utilizzando direttamente lAPI di Windows era, a un certo punto, un modo comune per scrivere applicazioni per Windows. Quindi no, non è programmazione di sistema.

La programmazione di sistemi non è solo “vicina al sistema operativo”, è qualcosa di essenziale al funzionamento di base del sistema informatico. Quindi scrivere un sistema operativo è programmazione di sistemi. Scrivere driver video, driver di file system, driver di rete per quel sistema operativo è programmazione di sistemi. Scrivere un compilatore per una particolare combinazione di linguaggio / chipset è programmazione di sistemi.

Risposta

Normalmente, si riferisce a “cose di basso livello che gli utenti finali non tecnici” non sanno esistono o non “conoscono molto chiaramente che stanno usando o cosa fanno “.

Alcuni esempi che sarebbero spesso considerati programmazione di sistema:

  • sistemi operativi e driver
  • compilatori
  • emulatori un d virtualizzazione
  • creazione di una distribuzione, cioè la creazione di immagini di userland.

    Questo in particolare normalmente comporta la selezione della libreria standard C, il sistema di init e componenti di base userland come una shell.

La programmazione dei sistemi viene spesso eseguita in linguaggi di livello compilato inferiore senza garbage collection automatica come C o assembly, e tende ad accedere a chiamate di sistema meno comuni spesso tramite Interfacce POSIX C .

Sto mantenendo un tutorial pratico che copre diversi argomenti di programmazione del sistema qui .

Risposta

Quando definisco questo, eviterei del tutto i dettagli tecnici. Allora diventa facile.

Unapplicazione consente a un utente di fare qualcosa di utile con qualche pezzo di tecnologia. Quindi la programmazione dellapplicazione è mirata a fornire funzionalità a un utente, in modo abbastanza diretto.

La programmazione del sistema, daltra parte, getterebbe le basi per rendere possibile la programmazione delle applicazioni. Fornisce funzionalità al programmatore dellapplicazione piuttosto che allutente.

Questa definizione sarà valida, ma è una questione di prospettiva, contesto e ruoli. Per un programmatore di computer, gli strumenti di programmazione sono applicazioni. Per un utente finale sono prive di significato, appena fuori dal quadro.

Risposta

In breve, la programmazione del sistema rispetto a la programmazione dellapplicazione è che lSP gestisce il software del sistema operativo per lavorare con le risorse hardware e lAP gestisce lattività degli utenti finali.

Commenti

  • questo non ‘ sembra che non offra qualcosa di sostanziale sui punti fatti e spiegati nelle 4 risposte precedenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *