2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Tietojenkäsittelyn tarve on laajalle levinnyt ihmiskunnan historiassa, ja sen kehitys on yleensä käynyt läpi kehitysprosessin yleisistä laskentatyökaluista mekaanisiin tietokoneisiin nykypäivän elektronisiin tietokoneisiin.
Ihmiskunnan tarve tietojenkäsittelyyn saa meidät jatkuvasti keksimään ja parantamaan tietokoneita. Nykyinen aikakausi on "elektronisten tietokoneiden" aikakautta, ja kehityssuunta on: nopeampi, vakaampi ja pienempi.
Suositeltavat kirjat: "Tietokoneiden lyhyt historia"
Kohta 1
Nykyaikaiset tietokoneet, useimmat noudattavatVon Neumannin arkkitehtuuri
John von Neumann (28. joulukuuta 1903 - 8. helmikuuta 1957), unkarilais-amerikkalainen matemaatikko ja tietojenkäsittelytieteilijä
Tiedemies, fyysikko ja yksi 1900-luvun tärkeimmistä matemaatikoista. Von Neumann on matematiikan tohtori Budapestin yliopistosta. Hän on yksi monipuolisimmista tieteenaloista nykyaikaisten tietokoneiden, peliteorian, ydinaseiden ja biologisten aseiden alalla nykyaikaisten tietokoneiden isä" ja "peliteorian isä".
Seuraavaksi käytämme prosessia alusta alkaen CPU:n rakentamiseen askel askeleelta Voimme käyttää tätä prosessia ymmärtääksemme tietokoneen pääkomponenttien, kuten CPU:n ja muistin, toimintaperiaatteet.
Elektroninen kytkin – mekaaninen rele
Sähköisten kytkimien avulla voimme toteuttaa 1-bittisiä (bittisiä) näennäisesti turhia logiikkatoimintoja, mutta ainakin se toimii, eikö?
Opimme lisää kuinka käyttää elektronisia kytkimiä todella hyödyllisten logiikkakomponenttien yhdistämiseen.
Tulevien tyhjiöputkien ja transistoreiden ydin on suorittaa samanlainen työ, mutta fyysiset periaatteet ovat monimutkaisempia, joten emme vie sinua syvällisen selityksen läpi.
Seuraavaksi opimme käyttämään elektronisia kytkimiä hyödyllisten komponenttien rakentamiseen - 1 bitin peruslogiikkaoperaatioita voidaan toteuttaa.
ALU on tietokoneiden aritmeettisten ja loogisten operaatioiden ydinkomponentti ja tietokoneen matemaattiset aivot. Seuraavaksi käytämme yllä rakennettuja logiikkaportteja oman ALU:n suorittamiseen, sen työskentelytavan oppimiseen ja ymmärtämiseen. parantaa ymmärrystämme modernista Tietokoneperiaatteiden kulmakivistä.
Aritmeettinen yksikkö on vastuussa kaikista tietokoneen digitaalisista operaatioista, kuten neljästä aritmeettisesta operaatiosta koko prosessia ja muita toimintoja en selitä enää.
Tässä vaiheessa olemme luoneet 8-bittisen summaimen tyhjästä. Aritmeettisen yksikön operaatiot ovat tietysti paljon enemmän kuin nämä. Jatkamalla loogisten porttien yhdistämistä, aritmeettinen yksikkö voi suorittaa yhteen-, vähennys-, kerto-, jako- ja vielä enemmän aritmeettisia operaatioita, mutta yhteenlasku riittää esittelyksi. Itse asiassa kertojien ja jakajien tekemisen vaikeus on suurempi kuin summainten ja vähennyslaskijoiden tekeminen. Jos olet kiinnostunut, voit yrittää oppia lisää.
Logiikkayksiköitä käytetään pääasiassa loogisten operaatioiden suorittamiseen. Perusoperaatiot ovat AND-, OR- ja NOT-operaatiot, mutta ne eivät ole vain yksibittisten lukujen vertailua.
经过我们的努力,通过基本的逻辑门电路,我们⼀步步地做出了⼀个 8 位(bits) ALU,甚至比 Intel 74181 还要强大,Intel 74181 只是⼀个 4 位(bits) ALU(😀)。当然现代的计算机中的 ALU 部件非常强大,复杂度远远超过了我们的想象,32 位 甚至 64 位基本已经普及全球了。但无论如何,再复杂的ALU 也是芯片工程师像我们这样,一层又一层, 一步又一步地将其抽象出来的。ALU 是第⼀次将人类历史上的数学和逻辑学学科有机地结合起来,可以视为人类智慧发展的现代巅峰.
ALU ei yksin riitä. Emme voi tarjota ALU:lle tallennuskomponentteja, joten käytämme gate-piirejä selittämään lyhyesti tallennustilan tuotantoa. Huomaa, että vaikka se ei näy kuvassa selvästi, näiden tallennusvaatimusten on oltava päällä eli nämä varastot ovat haihtuvia (haihtuvia)
Piilotamme joitain toteutustietoja keskelle, ja lopullinen vaikutus on: kun poisto-rivi on asetettu, syöte on 1 ja 1 tallennetaan, kun tulo on 0, kun aktivointirivi ei ole paikallaan , kirjoitus on virheellinen.
Voimme käyttää ovien lukkoja tarvitsemamme rekisterien ja muistin rakentamiseen.
Muistin rakentaminen on tätä hieman monimutkaisempaa, mutta perusperiaatteet ovat samat. Tällä tavalla rakennettua muistia kutsutaan RAM-muistiksi (Random Access Memory) ja se voi tukea O(1)-aikamonimutkaisuutta päästäkseen tietoihin missä tahansa. Tämä tarkoittaa, että taulukon alaindeksin käyttötoimintomme on O(1).
laitteistotuki.
Meillä on nyt ALU ja tallennustila, mutta tämä ei vielä riitä saamaan tietokoneemme toimimaan Tarvitsemme komponentin ohjaamaan ALU:ta suorittamaan millaisia laskelmia, ja tämä komponentti on ohjausyksikkö (CU).
Kohta 2
Yllä olevan kuvan laatikoiden lukumäärää voidaan pitää ytimien lukumääränä Kuten kuvasta näkyy, kyseessä on kuusitoistaytiminen prosessori.
Varhaisilla prosessoreilla oli vain yksi ydin laskentayksikön olevan pieni (CPU:n valmistusprosessi, kuten 5nm, jne.) Tällä hetkellä klassinen mekaniikka muuttuu pätemättömäksi ja alkaa tulla kvanttimekaniikan alalle.
Tällä hetkellä ehdotetaan moniytimisen käsitettä.
Prosessorin laskentanopeutta kuvataan taajuudella, joka voidaan ymmärtää yksinkertaisesti niin, kuinka monta käskyä voidaan suorittaa yhdessä sekunnissa (ei tiukkaa). Esimerkiksi yllä oleva nopeus voidaan ymmärtää CPU:n laskelmina noin 3,4 miljardia kertaa sekunnissa .
Prosessorin taajuus muuttuu dynaamisesti työmäärän mukaan Kun taajuus kasvaa, se kuluttaa enemmän virtaa ja tuottaa enemmän lämpöä. Suojellakseen CPU:ta ylikuumenemisen aiheuttamalta palamiselta se vähentää taajuutta automaattisesti.
Kohta 3
Esittelemme ensin tarvitsemamme ohjeet.
Ns. käsky eli käsky, joka ohjaa suorittimen suorittamaan työtä, koostuu pääasiassa operaatiokoodista + operandista.
Operaatiokoodia käytetään osoittamaan, mikä toiminto on suoritettava, ja operandi on data, jota tällä käskyllä ohjataan, joka voi olla muistiosoite tai rekisterinumero jne.
Ohje itsessään on myös numero, joka on tallennettu tietylle muistialueelle binäärimuodossa.
Ohjelmointikielillä kirjoittamamme ohjelmat on lopulta käännettävä "CPU:ssa suoritetuiksi binäärikäskyiksi. Ohjeet ovat suorittimen suorittamien tehtävien perusyksikkö".
Ohjeet ovat myös konekielisiä (binäärikieliä) ja konekielellä ja konekielellä vastaavuus.
Eri prosessorit tukevat erilaisia ohjeita mikrotasolla, kuten x86-käskyjä ja käsivarsiohjeita, mikä aiheuttaa yhteensopivuusongelmia.
Mitä ohjeita CPU voi suorittaa, voidaan katsoa määrätyiksi, kun CPU alun perin suunniteltiin Yllä olevassa kuvassa on joitain yksinkertaistettuja ohjeita.
8-bittinen käsky voidaan jakaa kahteen osaan.
Ensimmäiset 4 bittiä ovat toimintakoodi (opcode), joka osoittaa, mitä käsky tekee.
Viimeiset 4 bittiä ovat operandeja (samankaltaisia kuin parametreja)
Yllä olevan taulukon rekisterinimi AB on kuvitteellinen. Varsinaisen CPU-rekisterin nimi on muodossa: eax, ebx, esp, ebp...)
CPU:ssa on erityinen rekisteri, "ohjelmalaskuri" (järjestelmä asettaa sen automaattisesti, kun exe on ladattu muistiin), joka tallentaa muistipaikan, josta käsky suoritetaan samalla Aika, kun käsky suoritetaan, "Ohjelmalaskurin" arvo päivitetään oletusarvoisesti +1:n automaattinen lisäys (suorittaa käskyt järjestyksessä). kuten (if, while, for, funktiokutsu...), se tulee asetetaan toiseen arvoon.
Jaamme ohjeiden suorittamisen kolmeen vaiheeseen:
1) Ohjeiden nouto, prosessori lukee käskysisällön muistista CPU:hun (lukuohjeiden tallentamiseen on erityiset rekisterit).
2) Analysoi käsky ja tunnista sen toiminta, vastaavat funktiot ja operandit
3) Suorita ohjeet
Jokaisen käskyn suorittamisen tulee käydä läpi edellä mainitut kolme vaihetta, ja tehtävän suorittaminen edellyttää useiden yllä olevien käskyjen suorittamista. Esimerkiksi lisäysprosessi voi vaatia kolme yllä olevaa käskyä, mikä näyttää erittäin hankalalta, mutta prosessorin laskennan vuoksi erittäin nopea (yllä mainitut toiminnot voidaan suorittaa yli miljardi kertaa yhdessä sekunnissa), eikä se vie tietokoneelta paljon aikaa.
Ns. ohjelma on joukko ohjeita ja tietoja, joita tämä käskysarja käsittelee. Suppeassa merkityksessä ohjelma näyttää meille yleensä tiedostojoukona.
Ohjelma = käsky + käskyn käsittelemä data.
Tämä on mielenkiintoinen pikku tarina, jota on levitetty aiemmin, mutta se ei tietenkään ole totta.Mutta varhaisimmat tietokoneet vaativat todella ohjelmointia
Ohjelmoitu 0:lla ja 1:llä (Σ(っ°Д °;)っ)
Alla olevassa kuvassa on Altair 8800 -tietokone, yksi varhaisimmista mikrotietokoneista. Käyttäjän tulee ohjata kytkintä ja syöttää ohjelma tietokoneeseen pala kerrallaan.
Jos kaikkien tietokoneen käyttäjien on käytettävä binääriohjelmointia, kaikki tulevat hulluiksi. Tämä on liian korkea kynnys. Joten ohjelmointikielet syntyivät.
Ohjelmoinnin tehokkuuden parantamiseksi luotiin ensin kokoonpanokielen konsepti. Itse asiassa kokoonpanokieli ja konekieli (eli ohjeet) ovat suoraan yksi-yhteen vastaavuudessa. On vain niin, että suhteessa numeroihin 0 ja 1 on keksitty joitain symboleja auttamaan ihmisiä muistamaan ja ymmärtämään ne. on se, mitä näet yllä, on samanlaista kuin LOAD_A, LOAD_B jne. Kun ohjelmoijat ovat saaneet ohjelmoinnin valmiiksi, heidän on käytettävä assembleria kääntämään kokoonpanokieli konekieleksi.
Vaikka kokoonpano pienentää ohjelmoijan muistikustannuksia, se vaatii silti ohjelman hallitsemaan kaiken tietokonelaitteiston tuntemuksen. Koska tietokonevalmistajien määrä kasvaa, kerralla kirjoitetut ohjelmat sopivat usein vain yhdelle tietokonetyypille. Tämä ei vielä riitä, joten kehittyneemmät kielet suojaavat laitteiston yksityiskohtia ja antavat ohjelmoijille mahdollisuuden ajatella liiketoimintaansa korkeammalla tasolla. Tässä otamme esimerkkinä C-kielen Kun ohjelmoija on kirjoittanut ohjelman, hänen on käytettävä kääntäjää ja linkkeriä kääntääkseen ohjelman kokoonpanokieleksi ja sitten kääntääkseen sen lopulliseksi konekieleksi.
Kapseloinnin idean avulla ohjelmoinnin oppiminen on helpompaa ja helpompaa. On kuitenkin hyvät ja huonot puolensa Korkea abstraktioaste saa monet ohjelmoijat pitämään tietokonetta mustana laatikkona eivätkä täysin ymmärrä, miten heidän omat ohjelmansa toimivat. Toivon, ettei meistä kukaan tule sellaiseksi.
Käyttämämme Java-kieli on hieman edistyneempi kuin C-kieli, mutta abstraktien perusperiaatteiden välillä ei ole paljon eroa, joten emme käsittele sitä toistaiseksi.
Huomautus: Lausunto korkealla kielellä vastaa usein monia ohjeita.
Kohta 4
Käyttöjärjestelmä on yhteinen nimi ohjelmistojoukolle, joka hallitsee tietokoneen resursseja. Tällä hetkellä yleisiä käyttöjärjestelmiä ovat: Windows-sarja, Unix-sarja, Linux-sarja, OSX-sarja, Android-sarja, iOS-sarja, Hongmeng jne.
Eri järjestelmissä toimivat ohjelmat ovat erilaisia (ohjelmat eivät ole yhteensopivia eri kpi:n vuoksi)
Käyttöjärjestelmällä on kaksi perustoimintoa:
1) Estä laitteiston väärinkäyttö spatio-temporaalisten sovellusten avulla ja anna sovelluksen kutsua sitä suorittamaan erilaisia toimintoja.
2) Tarjoa sovelluksille yksinkertaiset ja johdonmukaiset mekanismit monimutkaisten ja usein hyvin erilaisten matalan tason laitteistojen ohjaamiseksi.
Käyttöjärjestelmä tekee pääasiassa seuraavat kaksi asiaa:
1) Hallitse erilaisia laitteita Tietokoneet voivat käyttää monia laitteita, kuten koodiskannereita, lääketieteellisiä laitteita, B-ultraäänilaitteita...
2) Tarjoa ohjelmistolle vakaa toimintaympäristö. Nykyaikaisten käyttöjärjestelmien on suoritettava useita ohjelmia samanaikaisesti .
Kun jokainen sovellus toimii nykyaikaisessa käyttöjärjestelmässä, käyttöjärjestelmä tarjoaa abstraktion, ikään kuin vain tämä ohjelma olisi käynnissä järjestelmässä, ja tämä ohjelma käyttää kaikkia laitteistoresursseja. Tämä illuusio saavutetaan abstraktimalla prosessin käsite, joka on luultavasti yksi tietojenkäsittelytieteen tärkeimmistä ja menestyneimmistä käsitteistä.
Prosessi on käyttöjärjestelmän abstraktio käynnissä olevasta ohjelmasta. Toisin sanoen prosessia voidaan pitää ohjelman käynnissä olevana prosessina, ja samalla käyttöjärjestelmän sisällä prosessi on resurssien allokoinnin perusyksikkö käyttöjärjestelmän toimesta.
Kohta 5
Prosessit ovat joitain sovelluksia, joita suoritetaan tietokoneissamme (Kun puhutaan sovelluksesta, on olemassa kaksi tilaa. Kun se ei ole käynnissä, se on kiintolevyllä oleva exe-tiedosto; kun se on käynnissä, exe on käynnissä. ladataan muistiin ja suoritin suorittaa ohjeet.
Prosessi on käyttöjärjestelmän resurssien allokoinnin perusyksikkö.
Kohta 6
Koska järjestelmässä on monia prosesseja, niitä on hallittava
1) Kuvaus ilmaisee prosessin erilaisia attribuutteja rakenteiden/luokkien kautta (valtavirran järjestelmät toteutetaan C/C++:n kautta)
2) Organisaatio yhdistää yllä olevat useat rakenteet (kuvaukset) tietorakenteen kautta ja suorittaa edelleen erilaisia lisäyksiä, poistoja, muutoksia ja tarkistuksia...
Esimerkiksi Linux-käyttöjärjestelmä käyttää "PCB"-nimistä rakennetta kuvaamaan prosessitietoja (PCB tarkoittaa prosessinohjauslohkoa. Yksinkertaisesti sanottuna edellä mainitut useat PCB:t on yhdistetty toisiinsa linkitetyn luettelon kautta prosessin luomiseksi). -click exe , ohjelman suorittaminen) vastaa PCB-rakenteen luomista. Prosessin tuhoaminen tarkoittaa piirilevyn poistamista yhteysluettelosta ja PCB-rakenteen vapauttamista .
PCB on erittäin monimutkainen rakenne, joka sisältää monia attribuutteja.
1.PID-prosessin tunniste
Samanaikaisesti PID on ainutlaatuinen koneen useiden prosessien joukossa, eikä sitä toisteta. Monet järjestelmän sisäiset toiminnot löytävät vastaavan prosessin PID:n kautta.
2. Muistiosoitin (joukko)
Kuvaa alueen, jolle prosessista riippuvat käskyt ja tiedot tallennetaan
Kun käyttöjärjestelmä suorittaa exe-tiedoston, se lukee exe-tiedoston ohjeet ja tiedot ja lataa ne muistiin (muistiosoite).
Sivulta katsottuna se osoittaa, että prosessin suorittaminen vaatii tiettyjä muistiresursseja.
3. Tiedoston kuvaustaulukko (sekvenssitaulukko/taulukko)
Kuvaa prosessin avaamat tiedostot, jotka vastaavat kiintolevyllä olevia tietoja
Kun tiedosto avataan prosessin aikana, kohde lisätään järjestystaulukkoon lukemisen helpottamiseksi.
Seuraavat asiat määrittävät yhdessä prosessin ajoituksen, joka liittyy kiinteästi päivittäiseen kehitykseemme.
Kohta 7
Avain käyttöjärjestelmän prosessien ajoitukseenAikajakomultipleksointi
Nykyiset käyttöjärjestelmät ovat kaikki "monitehtäväjärjestelmiä", jotka voivat suorittaa useita prosesseja samanaikaisesti. Aiempia käyttöjärjestelmiä kutsuttiin "yhden tehtävän järjestelmiksi" ja ne pystyivät ajamaan vain yhtä prosessia samanaikaisesti.
Aikajakoisen multipleksoinnin ymmärtäminen: Tietyllä hetkellä CPU suorittaa prosessia 1, toimii jonkin aikaa, CPU ajaa prosessia 2 ja ajaa prosessia 3 jonkin ajan kuluttua... Koska suorittimen laskentanopeus ja kytkentänopeus ovat erittäin nopeita, se ei ole havaittavissa paljaalla silmällä Seisominen Ihmisen näkökulmasta se vastaa samanaikaista teloitusta, "samaaikaista toteutusta".
Rinnakkaissuoritus: Nyt moniytimisillä prosessoreilla jokainen ydin ja ytimien välillä voi myös suorittaa erilaisia prosesseja samanaikaisesti mikroskooppisella tasolla.
Samanaikaisuuden tai samanaikaisuuden aikatauluttaa käyttöjärjestelmän ydin, eivätkä ohjelmoijat/tavalliset käyttäjät pysty havaitsemaan sitä. Siksi rinnakkaisuutta ja samanaikaisuutta kutsutaan yleensä yhteisesti "samanaikaisuudeksi", ja vastaavia ohjelmointitekniikoita kutsutaan myös "samanaikaiseksi ohjelmoimiseksi".
4. Prosessin tila
Valmis tila: Prosessi voidaan ajastaa CPU:lle suorittamaan ohjeita milloin tahansa
Estetty tila: Prosessia ei voida ajastaa suorittamaan käskyjä CPU:ssa. Syy siihen, miksi se on estetty, on, että sen on suoritettava joitain muita toimintoja, kuten IO-toimintoja (kiintolevyjen lukeminen ja kirjoittaminen tai verkkokorttien lukeminen ja kirjoittaminen). skannaussyöttö), kun käyttäjän syöte vaaditaan, prosessi siirtyy estotilaan).
Yllä olevat kaksi ovat prosessin kaksi päätilaa. On myös muita tiloja, joten en mene liian yksityiskohtiin.
5. Prosessin prioriteetti
Prioriteetti on kirjaimellisesti prosessien järjestys.
6. Prosessin konteksti
Aikajakoinen multipleksointi Kun prosessi on suoritettu jonkin aikaa, se ajoitetaan takaisin CPU:lle edellisen suorituksen välitulokset (erilaiset CPU-rekisterin arvo) tallennetaan seuraavaa käyttöä varten.
7. Prosessin kirjanpitotiedot
Prioriteettien tuella eri prosessien kuluttamat resurssit voivat muuttua yhä erilaisemmiksi...
Yllä olevia attribuutteja käytetään tukemaan ajoitusprosessin samanaikaista suorittamista.
Käyttöjärjestelmä allokoi muistiresursseja spatiaalisen mallin avulla - eri prosessit käyttävät muistin eri alueita häiritsemättä toisiaan.
Kuten edellä mainittiin, prosessi on käyttöjärjestelmän pienin resurssien allokointiyksikkö, mikä tarkoittaa, että jokainen prosessi ei voi tuntea toistensa olemassaoloa. Tämä on käyttöjärjestelmän alkuperäinen tarkoitus abstrakti prosessin käsite, joka saa aikaan prosessi Heillä on "eristys" toisistaan.
Nykyaikaiset sovellukset eivät kuitenkaan usein pysty täyttämään monimutkaista liiketoimintaa itsenäisesti. Ne edellyttävät aina prosessin ja prosessin yhteistyötä sovelluksen tarkoituksen saavuttamiseksi. Prosessien välisen viestinnän tarve tuli esiin historiallisella hetkellä.
Javassa on tällä hetkellä vain yksi pääprosessien välinen viestintämenetelmä, verkon kautta (socket)
Verkko on suhteellisen erityinen IPC-mekanismi. Sen lisäksi, että se tukee kahden prosessin välistä viestintää samassa isännässä, se tukee myös viestintää eri isännissä olevien prosessien välillä.