System för kollaps

Postad 2019-10-20 av Karl Pettersson. Taggar: datavetenskap

Vi har under flera decennier vant oss med att kunna få alltmer kapacitet hos datorhårdvara till allt lägre priser. Dock kan vi kanske inte räkna med att det skall fortsätta på det viset länge till. I vissa avseenden, som processorernas klockfrekvens, har det redan skett en uppbromsning. Vissa har även funnit det klokt att förbereda sig för en framtid med kraftigt försämrad tillgång till kraftfull hårdvara. Ett aktuellt exempel på detta är Collapse OS (Dupras 2019a), ett operativsystem byggt för att köras på Zilog Z80, en 8-bitars processor från 1976, som användes i persondatorer i slutet av 1970-talet och början av 1980-talet och sedan fortsatt att vara populär i inbäddade system. Systemets skapare, Virgil Dupras, förklarar att han väntar sig att vår komplexa distributionskedja för att bygga modern elektronik kommer att kollapsa senast 2030, och att vi behöver ett system som vi, när vi kört slut på modernare datorer och inte kan tillverka nya, kan använda på improviserade maskiner, som vi fått löda ihop i frånvaro av modern elektronikindustri (Dupras 2019b). Därför har systemet gjorts för att även vara kapabelt att assemblera sig självt utan att vara beroende av andra datorer. Det har stöd för olika typer av in- och utenheter och har en editor byggd efter Unix ed.

Det har blivit en del diskussion om systemet (Hacker News 2019; Reddit 2019), som kastar visst ljus över vilka förutsättningar som skall vara uppfyllda för att det skall vara någon nytta med ett system som Collapse OS. En rimlig sammanfattning av dessa diskussioner är nog att en sådan Guldlockkatastrof, som en kommentator på Hacker News kallar den, skall uppfylla följande villkor.

  1. Det är brist på fungerande datorer med mer avancerad arkitektur än Z80.
  2. Det är brist på tekniska resurser för att reparera och tillverka datorer med mer avancerad arkitektur än Z80.
  3. Det finns inte tillgång till andra operativsystem som är lämpliga att driva system baserade på Z80.
  4. Det finns god tillgång till Z80-processorer.
  5. Det finns god tillgång till resurser för att bygga, reparera och köra system baserade på Z80-processorer (elektricitet, verktyg etc.).

Hur trolig är en situation där premisserna (1)–(5) är uppfyllda tillsammans? Premiss (4) verkar relativt okontroversiell, då Z80 använts i en väldig massa olika system de senaste 40 åren. Premiss (5) är beroende av en rad faktorer relaterade till kollapsens omfattning, som inte har specifikt med elektronik att göra. I det följande skall jag koncentrera mig på premisserna (1)–(3). Om vår moderna elektronikindustri klappar ihop inom ett årtionde, som Dupras tänker sig, innebär det inte att våra laptops och smartphones blir oanvändbara över en natt. Men när hårdvaran börjar gå sönder, kommer dess komplexitet göra att det blir svårt både att reparera den och att ersätta den med ny hårdvara av samma typ. Det kan också vara så att modern hårdvara har ganska kort livslängd, bl.a. till följd av hög värmeutveckling. I så fall kan vi börja nedgradera till äldre 32- och 64-bitars system, som ställts av till följd av utvecklingen mot allt mer krävande mjukvara.

Nu finns det gott om fritt tillgänglig mjukvara, som går att använda med litet äldre hårdvara. Exempelvis har vi äldre eller nedbantade Linuxdistributioner och äldre versioner av andra Unixliknande system, som de olika BSD-varianterna.1 Som exemplifieras av Drake (2014), vilket jag tog upp i förra inlägget, är de kommandoradsverktyg som finns där kraftfulla och effektiva, om de används rätt. En stor del av de operativsystemkärnor som är viktiga idag kom i sina första versioner under några få år på 1990-talet: Linux (1991), Plan 9 (kan inte sägas vara vanligt som system men är den kontext som gett oss sådant som UTF-8, 1992) NetBSD (1993), Windows NT (1993), FreeBSD (1993), OpenBSD (1995), XNU (kärnan i Apples system, 1996). Under denna tid kännetecknades en modern persondator av 32-bitars arkitektur, med processorer som Intel 80386/80486, eller Motorola 68030/68040, och alla de ovannämnda systemen har initialt haft stöd för sådana arkitekturer. Men dessa processorer är också mycket mer komplexa än Z80 (en 80386DX har 275 000 transistorer, jämfört med 8500 i en Z80 (Wikipedia 2019c)), vilket är Dupras huvudskäl att inte förlita sig på dem. Om vi inte längre har tillgång till 32-bitars datorer, kommer det drastiskt att försämra våra möjligheter att köra någorlunda moderna operativsystem med drägliga prestanda.2

Så, när vi inte ens har kvar några 386:or att använda, är premisserna (1)–(3) uppfyllda? Ja, det finns fortfarande enklare arkitekturer mer avancerade än Z80, som äldre typer av x86 (mestadels 16 bitar) och 68k (hybrid 16/32 bitar), och en del personer på Hacker News (2019) och Reddit (2019) är inne på att det skulle vara mer fruktbart att inrikta sig på sådana arkitekturer. Även om premisserna (1)–(2) är uppfyllda, och vi inte har något mer avancerat än Z80, är premiss (3) något tveksam. CP/M var ett vanligt förekommande operativsystem för Z80, och dess kod har nu släppts. Kanske vore det ett alternativ att utgå från detta i stället för att bygga ett nytt system (Dupras 2019c). Det finns också nyare fria operativsystem för Z80, som Fuzix, men de verkar, enligt vad Dupras säger i diskussiontrådarna, fallera på att de inte kan assemblera sig själva på ett Z80-system. Om vi sedan har tillgång till 16-bitars arkitekturer blir det än mer tveksamt om det finns behov att utveckla ett nytt system. Även om moderna Unixliknande system som sagt inte är praktiska i sammanhanget, är t.ex. V7 Unix numera också fritt, och det portades till tidiga x86- och 68k-arkitekturer (Wikipedia 2019b). Det krävs nog ganska speciella omständigheter för att vi inte ens skall kunna få igång tillverkning eller underhåll av sådana system, samtidigt som premiss (5) fortfarande är uppfylld.

Det är också så att brist i premisserna är något relativt: vi kan hamna i en situation där vi har tillgång till mer avancerade arkitekturer än Z80, fast de är mer eller mindre sällsynta och dyrbara. I sådana fall kan vi ha användning för Z80 (det är i princip inte så annorlunda från situationen idag, där 8-bitars arkitekturer fortsatt att användas i inbäddade system, där kraftfullare processorer vore onödiga). Men då kanske vi ändå kan använda andra datorer för att programmera Z80-datorer och kommer inte att ha så stort behov av ett självassemblerande operativsystem som kan köras direkt på dessa.

Referenser

Drake, Adam. 2014. ”Command-line Tools can be 235x Faster than your Hadoop Cluster”. https://adamdrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html.
Dupras, Virgil. 2019a. Collapse OS – Bootstrap post-collapse technology. https://collapseos.org/.
———. 2019b. Collapse OS – Bootstrap post-collapse technology. https://collapseos.org/why.html.
———. 2019c. Comparison between Collapse OS and CP/M. https://github.com/hsoft/collapseos/issues/52.
Grinberg, Dmitry. 2012. ”Linux on an 8-bit micro?” http://dmitry.gr/?r=05.Projects&proj=07.%20Linux%20on%208bit.
Hacker News. 2019. Collapse OS. https://news.ycombinator.com/item?id=21182628.
Reddit. 2019. Collapse OS. https://old.reddit.com/r/collapse/comments/dejmvz/collapse_os_bootstrap_postcollapse_technology/.
Wikipedia. 2019b. Version 7 Unix. https://en.wikipedia.org/w/index.php?title=Version_7_Unix&oldid=920988846.
———. 2019a. Year 2038 problem. https://en.wikipedia.org/w/index.php?title=Year_2038_problem&oldid=921087137.
———. 2019c. Transistor count. https://en.wikipedia.org/w/index.php?title=Transistor_count&oldid=922114334.

  1. Vi måste dock hitta sätt att hantera sådant som datum efter 19 januari 2038 med dessa system (Wikipedia 2019a) – om kollapsen sker under det kommande decenniet är det kanske just kring 2038 det börjar bli brist på 64-bitars system. Det kan bli lättare att hitta 32-bitars BSD-system än 32-bitars Linuxsystem som både har modesta hårdvaraukrav och klarar av dessa datum.↩︎

  2. Om vi kan programmera en arkitektur med ett Turingfullständigt språk, kan vi i princip skapa en emulator för en annan arkitektur, men problemet blir drägliga prestanda. Grinberg (2012) demonstrerar att det är möjligt att köra Linux (Ubuntu) på ett 8-bitars system med hjälp av en egenutvecklad emulator för ARM32, men det tar nästan en arbetsdag att starta upp systemet och komma till textbaserad inloggning.↩︎