Järjestelmien ohjelmointi - Systems programming
Järjestelmien ohjelmointi tai järjestelmän ohjelmointi on tietokonejärjestelmien ohjelmoinnin toimintaa . Ensisijainen erottava ominaispiirre järjestelmien ohjelmoinnin verrattuna ohjelmointirajapinta on, että sovellus ohjelmointi pyrkii tuottamaan ohjelmisto, joka tarjoaa palveluja käyttäjälle suoraan (esim sana prosessori ), kun taas järjestelmän ohjelmointi tavoitteena on tuottaa ohjelmisto ja ohjelmisto alustat , jotka tarjoavat palveluja muita ohjelmia, ovat suorituskyvyn rajoittamia tai molempia (esim. käyttöjärjestelmät , laskennalliset tieteelliset sovellukset, pelimoottorit , teollisuusautomaatio ja ohjelmistot palvelusovelluksina ).
Järjestelmien ohjelmointi vaatii suurta tietoisuutta laitteistosta. Sen tavoitteena on käyttää käytettävissä olevia resursseja tehokkaasti joko siksi, että ohjelmisto itsessään on suorituskyvyn kannalta kriittinen tai koska pienetkin tehokkuusparannukset muuttavat suoraan huomattavaksi ajan tai rahan säästöksi.
Yleiskatsaus
Seuraavat ominaisuudet luonnehtivat järjestelmien ohjelmointia:
- Ohjelmoija voi tehdä oletuksia laitteisto ja muut ominaisuudet, joka ohjelma toimii, ja usein hyödyntää nämä ominaisuudet, esimerkiksi käyttämällä algoritmia , jonka tiedetään olevan tehokas, kun sitä käytetään tietyn laitteiston.
- Yleensä käytetään matalan tason ohjelmointikieltä tai ohjelmointikielen murretta, jotta:
- Ohjelmat voivat toimia resurssirajoitteisissa ympäristöissä
- Ohjelmat voivat olla tehokkaita pienillä ajonaikaisilla lisäkustannuksilla, mahdollisesti niillä on joko pieni ajonaikainen kirjasto tai ei ollenkaan
- Ohjelmat voivat käyttää suoraa ja "raakaa" ohjausta muistin käyttöoikeuksiin ja ohjauskulkuun
- Ohjelmoija voi kirjoittaa ohjelman osia suoraan kokoonpanokielellä
- Usein järjestelmäohjelmia ei voida suorittaa virheenkorjaimessa . Ohjelman suorittamista simuloidussa ympäristössä voidaan joskus käyttää tämän ongelman vähentämiseen.
Järjestelmien ohjelmointi eroaa riittävästi sovellusohjelmoinnista, joten ohjelmoijat ovat erikoistuneet yhteen tai toiseen.
Järjestelmäohjelmoinnissa on usein rajoitettu ohjelmointimahdollisuus. Käyttö Automaattisen roskienkeräyksen ei ole yleistä, ja virheenkorjaus on joskus vaikea tehdä. Ajonaikaisen , jos saatavilla lainkaan, on yleensä paljon vähemmän tehokas, ja tekee vähemmän virheiden tarkistus. Näiden rajoitusten vuoksi seurantaa ja kirjaamista käytetään usein; käyttöjärjestelmissä voi olla erittäin kehittyneitä kirjaamisalijärjestelmiä.
Tiettyjen osien toteuttaminen käyttöjärjestelmissä ja verkostoituminen edellyttää järjestelmien ohjelmointia, esimerkiksi haun ( virtuaalimuisti ) tai laiteohjaimen käyttöönottoa käyttöjärjestelmälle.
Historia
Alunperin järjestelmäohjelmoijat kirjoittivat aina kokoonpanokielellä . Kokeet laitteisto tukea korkean tason kielellä vuonna 1960 johti näitä kieliä PL / S , Bliss , BCPL , ja laajennettu ALGOL varten Burroughs suuriin järjestelmiin . Forthilla on myös sovelluksia järjestelmän kieleksi. C: stä tuli kaikkialla läsnä 1970 -luvulla Unixin kasvun myötä . Viime aikoina C ++: n osajoukolle, nimeltään Embedded C ++, on ollut käyttöä, esimerkiksi sitä käytetään macOS : n I/O Kit -ohjaimissa .
Vaihtoehtoinen käyttö
Historiallisista syistä jotkut organisaatiot käyttävät termiä järjestelmäohjelmoija kuvaamaan työtehtävää, jota kutsutaan tarkemmin järjestelmänvalvojaksi . Tämä pätee erityisesti organisaatioihin, joiden tietokoneresursseja ovat historiallisesti hallinneet keskusyksiköt , vaikka termiä käytetään jopa kuvaamaan työtehtäviä, joihin ei liity keskusyksiköitä. Tämä käyttö johtui siitä, että IBM: n keskusyksiköiden hallintaan liittyi usein mukautetun kokoonpanokoodin ( IBM: n Basic Assembly Language (BAL)) kirjoittaminen, joka integroitiin käyttöjärjestelmään , kuten OS/MVS , DOS/VSE tai VM/CMS . Joidenkin IBM -ohjelmistotuotteiden asiakasohjelmointihenkilöstön koodit ovat olleet merkittäviä. Tämäntyyppinen ohjelmointi on vähitellen harvinaisempaa, mutta termi järjestelmäohjelmoija on edelleen tosiasiallinen virkanimi henkilöstölle, joka hallinnoi suoraan IBM: n keskusyksiköitä.