Kun assembly kohtaa web-palvelimet: Matka puhtaaseen systeemiajoitukseen

Kun assembly kohtaa web-palvelimet: Matka puhtaaseen systeemiajoitukseen

Tou 08, 2026 assembly language systems programming web servers arm64 low-level programming http kernel syscalls developer education

Kun kokoonpano kohtaa web-palvelimet: Matka syvälle systeemiahdistukseen

Kuvittele, että teet makkaraa alusta alkaen – ilman valmiita aineksia tai koneita. Vain raaka liha ja veitsi. Tällainen on ymawky: toimiva staattinen HTTP-palvelin, kirjoitettu pelkällä ARM64-kokoonpanolla macOS:lle. Ei libc:tä, ei ylimääräisiä kerroksia. Puhdasta voimaa.

Miksi ihmeessä tällainen projekti?

Ei, kukaan ei korvaa nginx:iä tällä. Silti web-palvelimen rakentaminen nollasta paljastaa, miten asiat todella toimivat. Kehittäjä tuli matalan tason maailmasta ja huomasi: en oikeastaan tiedä, miten web-palvelimet toimivat.

Mitä riskejä on? Mitä ongelmia pitää ratkaista? Mitä piilotetaan Pythonin tai C:n mukavuuksien taakse? Konttien aikakaudella on arvokasta tietää, mitä tapahtuu metallin tasolla.

Kokoonpanon raaka kauneus

Kokoonpano on rajalla konekoodin ja ihmismielen välillä. Kirjoitat mov x16, #5, ja numero 5 menee suoraan rekisteriin x16. Se vastaa Darwinin open()-syskallia.

Haasteet:

  • Ei automaattista muistinhallintaa
  • Merkkijonot ovat pelkkiä tavuja ilman työturvallisuutta
  • Rakenne-elementit vaativat manuaalisia offset-laskuja – yksi virhe, ja saat roskaa
  • Jokainen virhe pitää tarkistaa lipuista
  • Pieni kirjoitusvirhe kaataa kaiken ilman varoituksia

Edut:

  • Näet jokaisen prosessorikäskyn
  • Ei piilotettuja kuluja tai yllättäviä varauksia
  • Taatusti tiedät, mitä rauta tekee
  • Suorituskyky on läpinäkyvää

HTTP-pyörre syntyy byte byteltä. Opit viallisista syötteistä, koodauksista ja turvaongelmista, joita frameworkit hoitavat hiljaa.

Raakasyksalut ilman turvavöitä

C-ohjelmat käyttävät libc:tä kernelin ja koodin välissä. Ymawky ohittaa sen:

mov x16, #5           ; SYS_open
adrp x0, filename@PAGE
add x0, x0, filename@PAGEOFF
mov x1, #0x0         ; O_RDONLY
svc #0x80            ; kutsu kernel
b.cs open_failed     ; tarkista carry-lippu

Asetat argumentit rekistereihin, kutsut kernelin svc:llä ja tarkistat tuloksen lippujen kautta. Ei poikkeuskäsittelyä – pelkkää rehellistä tarkistusta.

Palvelimen rakenne

Ymawky käyttää perinteistä fork-on-request-mallia:

  1. Luo soketti ja sido porttiin
  2. Kuuntele yhteyksiä
  3. Jokaiselle yhteydelle fork() uusi prosessi
  4. Käsittele pyyntö siinä prosessissa

Miksi fork?

  • Muistieristys pyyntöjen välillä
  • Yksinkertainen koodi
  • Helppo virheiden käsittely

Haitat:

  • Paljon muistia (kukin fork kopioi prosessin)
  • Heikko rinnakkaisuus verrattuna nginx:iin
  • Kontekstinvaihdot hidastavat kuormassa
  • Ei sovi tuhansiin samanaikaisiin yhteyksiin

Tehokkuus kärsii, mutta ymmärrys kasvaa. Siinä pointti.

Mitä pyynnön käsittelyssä tapahtuu

Frameworkit hoitavat nämä automaattisesti. Kokoonpanossa jokainen on oma taistelunsa:

  • Pyyntötyypin tunnistus: GET, POST jne. raakabyteistä
  • Polun poiminta HTTP-riviltä
  • URL-dekoodaus: %20 tilalle välilyönti
  • Polkuhyppelyn esto: ei ../etc/passwd
  • Otsikoiden purku
  • Range-pyynnöt suurille tiedostoille
  • Hakemistolistaus HTML:llä
  • Omaiset virhesivut 404:lle

Tarvitset rekisterien hallintaa, merkkijonokikkailua ja virheiden tarkistusta joka askeleella.

Miksi tämä kiinnostaa nykydelppureita

Et ehkä ikinä kirjoita kokoonpanoa. Älä tee tuotantopalvelinta sillä. Mutta ymawky opettaa: jokainen abstraktio piilottaa monimutkaisuutta.

Frameworkin HTTP-käsittely nojaa jonkun syvään osaamiseen. Kun ymmärrät ongelmat itse, olet parempi insinööri.

Kuten leipominen alusta: et jauha viljaa joka päivä, mutta tiedät, mitä jauhopussi sisältää.

Yhteys NameOceaniin

NameOceanissa käsittelemme koko pinon: DNS:ää, domain-hallintaa ja pilveä. Kernel-tason systeemitieto, protokollat ilman kerroksia ja raakasyksalut auttavat pareissa päätöksissä.

Olipa kyse cloud hostingista, DNS-asetuksista tai SSL-käsittelystä byte-tasolla – systeemiajattelu ratkaisee. Siksi opettelemme, miten asiat todella toimivat.

Lopputulos

Ymawky ei syrjäytä nginx:iä. Mutta se muistuttaa: epäkäytännölliset projektit opettavat eniten. Se nöyryyttää – paljon työtä on työkalujen takana – ja selkeyttää – näet raudan toiminnan suoraan.

Jos mietit, mitä web-palvelimessasi tapahtuu, ymawky on armoton mutta valaiseva vastaus.

Read in other languages:

RU BG EL CS UZ TR SV RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN