Skip to content

Linux: Dunyoni boshqarayotgan tizim

Google qidiruvi, YouTube videolari, Telegram serverlari, bulutli xizmatlar, sun'iy intellekt klasterlari, bank tizimlari va hatto milliardlab Android telefonlar ortida Linux ishlaydi. Ko'pchilik Linuxni faqat dasturchilar ishlatadigan OT deb o'ylaydi. Aslida esa Linux hayotimizning deyarli har bir qismida mavjud. Smartfonlar, televizorlar, avtomobillar, routerlar, aqlli soatlar, kir yuvish mashinalari va boshqa ko'plab qurilmalar ichida Linux yoki Linux kerneliga asoslangan tizimlar ishlaydi. Linuxni o'rganishni keling tarixdan boshlaymiz.

1940 va 1950-yillarning dastlabki kompyuterlari bugungi kompyuterlarga umuman o'xshamas edi. Ular ekranlarga ega emas edi. Sichqoncha yo'q edi. Grafik interfeys yo'q edi. Hattoki klaviatura ham ko'p hollarda mavjud emas edi.

Birinchi kompyuter
ENIAC

Dasturchilar mashinaga buyruqlarni maxsus kartalar orqali berishardi. Bu kartalar "punch card" deb atalardi. Har bir kartada teshiklar bo'lib, ular ma'lum bir ma'noni ifodalar edi. Agar dasturda bitta xato bo'lsa, butun kartalar to'plamini qayta tayyorlash kerak bo'lardi.

Kompyuterlar juda qimmat bo'lgani uchun ulardan maksimal darajada foydalanish zarur edi. Bir universitet yoki tashkilotda bitta kompyuter bo'lishi mumkin edi va undan o'nlab, ba'zan yuzlab odamlar foydalanishga harakat qilardi.

Ammo muammo bor edi.

Kompyuter bir vaqtning o'zida faqat bitta ish bilan shug'ullanardi. Bir foydalanuvchi hisob-kitob qilayotgan paytda boshqalar kutishga majbur edi. Bir dastur ishlayotgan paytda qolganlar navbatda turardi. Bu esa qimmat hisoblash resurslarining katta qismi bekor ketayotganini anglatardi. 1960-yillarga kelib tadqiqotchilar yangi savolni o'rtaga tashlashdi: Nima uchun bitta kompyuterdan bir vaqtning o'zida bir nechta odam foydalana olmaydi? Bugungi kunda bu oddiy savoldek ko'rinadi. Chunki brauzeringiz ochiq, Telegram ishlayapti, musiqa eshitayapsiz, orqa fonda antivirus ishlayapti. OT o'nlab vazifalarni bir vaqtning o'zida bajaryapdi.

Ammo o'sha davrda bu g'oyani tasavur qilish ham qiyin edi. Aynan shu muammoni hal qilish uchun dasturiy loyihalardan biri boshlangan. MIT, Bell Labs va General Electric kompaniyasi birgalikda yangi OT yaratishga qaror qilishdi. Loyiha nomi Multics edi.

Multics — Multiplexed Information and Computing Service so'zlarining qisqartmasi edi u "umumiy hisoblash va axborot tizimi" degan ma'noni anglatardi.

Bugungi ko'z bilan qaralganda Multics hayratlanarli loyiha edi. Bugun biz uni Cloud computing deb ataymiz. Qizig'i shundaki, bu g'oya bulutli texnologiyalar ommalashishidan qariyb yarim asr oldin paydo bo'lgan edi. Multics loyihasi o'z davridan juda oldinda edi. Unda quyidagi g'oyalar bor edi:

  • Foydalanuvchilarni izolyatsiya qilish.
  • Xotirani himoyalash.
  • Ruxsatlar tizimi.
  • Fayl tizimi.
  • Ko'p vazifalilik.

Bugungi Linux va Unix tizimlarining ko'plab asosiy tushunchalari aslida Multics davrida paydo bo'lgan.

Loyiha rivojlangani sari katta muammolar paydo bo'lishni boshladi, loyiha juda murakkablashib ketdi. Har bir yangi imkoniyat yangi muammolarni keltirib chiqarardi. Har bir muammoni hal qilish esa tizimni yanada murakkablashtirardi. Muhandislar asta-sekin kod emas, murakkablik bilan kurasha boshladilar. Bell Labs tadqiqotchilaridan biri keyinchalik bu davrni eslab shunday degan:

Biz kelajak OTni yaratishga harakat qilayotgan edik, ammo ba'zan kelajak juda murakkab bo'lib chiqardi.

1969-yilga kelib Bell Labs loyihadan chiqishga qaror qildi. Bell Labs muhandislari Multicsdan juda muhim narsani olib chiqishgan edi. Ular OT qanday bo'lmasligi kerakligini bilib olishgandi. Ular murakkablikni chegarasi borligini, soddalikni esa qiymatini tushunishgandi. Aynan shu tushunchalar keyinchalik Unix falsafasining markaziga aylandi. Bell Labs laboratoriyalaridan birida Ken Thompson ismli muhandis ishlardi. U Multics ustida ishlaganlardan biri edi. Loyiha tugagach, u laboratoriyada qolgan eski uskunalar bilan shug'ullana boshladi. Burchakda foydalanilmayotgan kompyuter turardi. Bu PDP-7 edi.

Pdp7
PDP-7

Bugungi kun uchun bu nom deyarli hech narsani anglatmaydi. Ammo kompyuter tarixida PDP seriyasi juda muhim o'rin tutadi. PDP-7 zamonaviy standartlar bo'yicha qaralganda nihoyatda kuchsiz edi. Uning xotirasi bugungi telefon fon rasmi hajmidan ham kichik edi. Unda grafika deyarli yo'q edi. Disklar juda cheklangan edi. Hisoblash quvvati esa zamonaviy cho'ntak kalkulyatoridan ham past bo'lishi mumkin edi. Shunga qaramay, Ken Thompson unda imkoniyat ko'rdi.

Pdp7
Ken Thompson, 2019-yil

Ko'pchilik eski va keraksiz qurilma ko'rgan joyda u yangi g'oyalarni sinab ko'rish uchun imkoniyat ko'rdi. U Multicsdan o'rgangan saboqlarini esladi. Yangi tizim tushunarli, har bir qism aniq vazifaga ega bo'lishi, katta va murakkab bo'lmasligi kerak edi. Shu tariqa OTlar tarixidagi eng muhim loyihalardan biri boshlanadi. Ken Thompson va laboratoriyadagi hamkasblari ham buni bilishmas edi. Ammo PDP-7 ustida yozilayotgan kod kelajakda internetning katta qismini, milliardlab telefonlarni va dunyodagi eng kuchli superkompyuterlarni boshqaradigan texnologiyalar oilasiga asos solayotgan edi.

Unixning boshlanishi

1969-yil Bell Labs uchun g'alati davr edi. Bir necha yil davom etgan Multics loyihasi amalda yakunlangan edi. Ko'plab muhandislar boshqa loyihalarga o'tishgan, ayrimlari esa OTlar bo'yicha katta orzularidan voz kechishgan edi.

Ammo Ken Thompson boshqacha fikrlardi. U Multics muvaffaqiyatsizlikka uchradi deb hisoblamasdi. Aksincha, u loyiha juda muhim saboq bergan deb o'ylardi. Multics deyarli hamma narsani qila oladigan tizim bo'lishni xohlagan edi. Natijada uni tushunish ham, rivojlantirish ham qiyinlashib ketgandi. Ken Thompson esa buning teskarisini sinab ko'rmoqchi edi. U yangi OT yaratmoqchi bo'lsa, u kichik bo'lishi kerak degan fikrga keldi.

Tizimda ortiqcha narsalar bo'lmasligi har bir komponent aniq vazifaga ega bo'lishi kerak degan fikrni ilgari surdi. Lekin o'sha paytda bu faqat bitta muhandisning g'oyasi edi. Ken Thompson PDP-7 kompyuterida ishlashni boshladi. Dastlab uning maqsadi OT yaratish emas edi. U aslida o'zi yozgan Space Travel nomli o'yinni ishlatish uchun qulay muhit yaratmoqchi edi. Bugungi dasturchilar uchun bu kulgili tuyulishi mumkin ammo dunyoning eng mashhur OTlaridan biri qisman kompyuter o'yiniga bo'lgan qiziqish sabab boshlangandi.

Ken Thompson avval fayl tizimini yozdi. Keyin buyruqlar qatorini. So'ng dasturlarni ishga tushirish mexanizmini qo'shdi. Asta-sekin OT shakllana boshladi. Uning hamkasblari ham loyihaga qiziqa boshlashdi.

Hamkasblari Dennis Ritchie va Douglas McIlroy yangi tizim imkoniyatlarini ko'rib, unga yordam bera boshladilar. Yangi tizimning nomi ham qiziq tarixga ega. Multics nomi Multiplexed Information and Computing Service iborasidan olingan edi. Yangi tizim esa Multicsdan ancha sodda edi. Bell Labs muhandislaridan biri hazil tariqasida uni Unics deb atadi. Bu nom Multics so'ziga qarama-qarshi ma'noda ishlatilgan edi. Keyinchalik talaffuz va yozilish o'zgarib, Unix ko'rinishini oldi.

Unix rivojlanishi davomida mualliflari juda muhim qaror qabul qilishdi. Ular OT qanday ishlashi kerakligi haqida yangi falsafa o'ylashdi. Bu falsafa bugungi kunda ham Linux va Unix dunyosining asosini tashkil qiladi. Unixdan oldingi ko'plab tizimlar katta va monolit dasturlar yaratishga harakat qilardi. Agar biror vazifa bajarilishi kerak bo'lsa, odatda bitta katta dastur yozilardi. Unix muhandislari esa boshqacha yondashuvni tanladilar. Ular har bir dastur bitta vazifani mukammal bajarishi, murakkab ishlarni esa bir nechta kichik dasturlar hamkorlikda qilishi kerak degan g'oyani o'ylashgandi. Bu juda oddiy g'oya bo'lib ko'rinadi. Ammo aynan shu g'oya Unixni boshqa tizimlardan ajratib turadigan eng muhim xususiyatlardan biriga aylandi. Masalan, sizga fayl ichidan ma'lum matnlarni topish kerak bo'lsa, Unix bunga alohida dastur yaratdi. Bu dastur grep deb nomlandi. Fayllarni saralash uchun sort dasturini yozishdi, satrlarni hisoblash uchun wc va fayllarni ko'rsatish uchun cat dasturlarini yozishdi. Har bir dastur bitta ishni bajarardi. Lekin bu dasturlar bir-biri bilan ishlay olardi. Unixdagi eng katta g'oyalardan biri pipe mexanizmi bo'ldi. Pipe belgisi |. Bugungi Linux terminalida eng ko'p ishlatiladigan belgilaridan biri hisoblanadi. Uning g'oyasi juda sodda. Bitta dastur chiqargan natija boshqa dasturga uzatiladi.

Masalan:

cat logs.txt | grep error | sort

Bu buyruq uchta dasturdan foydalanadi. Birinchisi faylni o'qiydi. Ikkinchisi xatolarni topadi. Uchinchisi natijalarni saralaydi.

Hech biri murakkab emas. Ammo birgalikda juda kuchli tizim hosil qiladi. Unix muhandislari aynan shuni istashgan edi. Bu yondashuv bugungi microservice arxitekturasi, Docker konteynerlari va ko'plab zamonaviy tizimlarda ham uchraydi.

C dasturlash tiliga o'tish.

1970-yillar boshida Unix ichki loyiha sifatida rivojlanishda davom etdi. Usha davrda Unix assembler tilida yozilgan edi. Assembler juda tez ishlaydi. Lekin uni yozish va o'qish juda qiyin edi. Boshqa kompyuterga ko'chirish undan ham qiyin.

Agar yangi protsessor paydo bo'lsa, ko'pincha OTni deyarli boshidan yozish kerak bo'lardi. Bu esa rivojlanishni sekinlashtirardi. Dennis Ritchie bu muammoni hal qilish ustida ishlay boshladi. U avval BCPL va B tillaridan ilhomlanib yangi dasturlash tilini yaratdi. Bu til keyinchalik C deb nom oldi. Bugungi kunda C tili oddiy narsadek ko'rinadi. Ammo o'sha davrda bu juda katta qadam edi. C assemblerdan yuqori darajadagi til edi. Shu bilan birga apparat bilan ishlash imkoniyatlarini ham saqlab qolgan edi. Bu OT yozish uchun yaxshi til hisoblanardi.

1973-yilda Unixning katta qismi C tilida qayta yozildi. Agar bu qaror bo'lmaganida, ehtimol Unix hech qachon global platformaga aylanmagan bo'lardi. Endi Unix ma'lum bir kompyuter modeliga bog'lanib qolmagan edi. Uni boshqa protsessorlarga moslashtirish ancha osonlashdi.

Mashhurlik

Bir necha yil ichida Unix turli apparat platformalarida ishlay boshladi. Bu esa uning mashhurligini keskin oshirdi.

O'sha davrda AT&T kompaniyasi monopoliyaga qarshi qonunlar tufayli kompyuter mahsulotlarini faol sotish huquqiga ega emas edi. Natijada Unix tijorat mahsuloti sifatida sotilmadi. Buning o'rniga u universitetlarga va tadqiqot markazlariga deyarli xarajat narxida berildi. Talabalar Unix bilan ishlashni boshladilar. Professorlar Unix asosida kurslar yaratdilar. Tadqiqotchilar Unix kodini o'rganishdi. Dasturchilar Unixni o'zgartirishni boshlashdi. Bir necha yil ichida Unix akademik dunyoning sevimli OTiga aylandi. Keyinchalik Linuxning ommalashishiga ham aynan shu madaniyat katta ta'sir ko'rsatadi.

  • Ochiq kodni o'rganish.
  • Uni o'zgartirish.
  • Boshqalar bilan bo'lishish.
  • Yangi g'oyalarni sinash.

Bu qadriyatlar keyinchalik Unixdan Linuxga meros bo'lib o'tadi.

1970-yillarning oxiriga kelib Unix endi kichik laboratoriya loyihasi emas edi. U butun dunyo bo'ylab tarqalayotgan platformaga aylana boshlagandi.

Davomi bor...