МИНИКС 3

## Түүх
UNIX системийн эрт үед (Version 6) АT&T лицензийн дагуу эх код (source code)-ыг өргөн хэрэглэж мөн судалж байсан. Австралийн Шинэ Өмнөд Уэльсийн их сургуулийн багш Жон Лайонс UNIX дээр алхам алхмаар ажиллах гарын авлага гаргасан байдаг. AT&T-ийн зөвшөөрлөөр энэ гарын авлагыг ихэнх их  сургууль үйлдлийн системийн хичээл дээр ашигладаг байжээ. 

UNIX version 7 гарснаар UNIX нь их үнэтэй арилжааны том бүтээгдэхүүн болсон байсан учраас их сургуулийн үйлдлийн системийн хичээл дээр ашиглахыг хориглож, мөн эх кодыг нийтэд тараахгүй байх лиценз гарчээ.

Тиймээс ихэнхи их сургууль UNIX-ийг судлахаа больж, зөвхөн онолын хичээл л үзэх болов. Харамсалтай нь зөвхөн онолын материал судалснаар практик дээр үйлдлийн систем гэж юу болохыг сайн мэдэхгүй байсан. Энэ байдлыг засахын тулд Таненбаум UNIX төстэй үйлдлийн систем бичиж эхэлсэн ба дизайны хувьд UNIX-ээс эрс өөр байсан. Энэ системд AT&T-ийн нэг ч код ороогүй ба бүгдийг нь эхнээс нь бичсэнээр ямар ч лицензийн хязгаарлалтад орохгүйгээр чөлөөтэй татаж авч судлах боломжтой болгожээ. Ингэснээр оюутнууд жинхэнэ үйлдлийн систем яаж ажилладаг болон ямар бүтэцтэй байдгийг судлах бололцоотой болсон. MINIX гэдэг нь mini-UNIX гэдэг нэрнээс гаралтай ба маш энгийн бүтэцтэй авсаархан систем юм. MINIX нь UNIX-ыг бодвол 10-н жилээр залуу бөгөөд илүү модульчлагдсан бүтэцтэй. Жишээ нь файлын систем нь цөмийн нэг хэсэг нь биш харин тусдаа хэрэглэгчийн горимд ажилладаг модуль юм. Өөр нэг ялгаатай тал нь гэвэл маш найдвартай ажиллагаатай үйлдлийн систем боловсруулах зорилготой байсан. Мөн MINIX-ийн кодыг бусдад ойлгуулахын тулд хэдэн мянган тайлбар оруулж өгсөн байхад BSD/UNIX болон GNU/LINUX-д тийм байдаггүй.

MINIX-ийг UNIX version 7-той зохицож ажилладаг байхаар боловсруулж байжээ. Version 7-г UNIX-ийн хамгийн сайн хувилбар гэж мэргэжилтнүүд үздэг. POSIX (Portable Operating System based on UNIX) стандарт гарснаар MINIX-ийн хөгжилд их хувьд нэмэр оруулсан. Одоо MINIX нь POSIX стандарт дээр тулгуурласан систем бөгөөд POSIX стандартын ямарч хэрэглээний програмыг ажиллуулах боломжтой болсон. MINIX нь UNIX шиг C хэл дээр бичигдсэн бөгөөд төрөл бүрийн архитектуртай компьютерт суурилуулахад амархан. Эхний хувилбар IBM PC компьютерт зориулагджээ. Дараа нь системийг Atari, Amiga, Macintosh, SPARC зэрэг компьютер дээр суурилуулсан. MINIX-ийн нэг гол философи бол - “Аливаа нэгэн зүйл бага байх тусамаа сайхан”. MINIX- ийн анхны хувилбар нь хатуу диск ашигладаггүй байсан нь тэр үеийн оюутнуудын хөрөнгө мөнгөний төсөвт  нийцэж байсан байна. 1980-аад онд хатуу диск их үнэтэй байсан тул уян диск их ашигладаг байжээ. Яваандаа системийн функц болон хэмжээ өссөнөөр хатуу диск хэрэгтэй болов. Гэхдээ MINIX-ийн философи одоо ч гэсэн алдагдаагүй бөгөөд 30 мегабайт диск дээр ч ажиллах боломжтой. Гэтэл одооны UNIX системүүд 200 мегабайт дээр ажилладаг байна.

Энгийн хэрэглэгч MINIX болон UNIX хоёрын ялгааг олж харахгүй. UNIX системд байдаг cat, grep, ls, make зэрэг програмууд MINIX-д байдаг бөгөөд эдгээр програмыг мөн эхнээс шинээр оюутнууд бичсэн байдаг. Энд GNU/LINUX болон MINIX хоёрын хоорондох холбоог дурдах хэрэгтэй байх. MINIX үйлдлийн систем бий болсны дараа USENET дээр түүний мэдээний групп буюу одоогоор форум бий болсон байна. Хэдхэн долоо хоногийн дотор 40 гаруй мянган хүн бүртгүүлсэн байлаг. Тэдгээр хүмүүсийн ихэнхи нь системд шинэ боломжуудыг нэмэх санал оруулж байхад зарим нь ямар ч үр ашиггүйгээр системийг аль болох томсгох санал оруулж байв. Өдөр бүр хэдэн 100-н хүмүүс зөвлөгөө өгч байв. Энэ системийг зохиогч энэхүү байдалд дүгнэлт өгч улмаар эсэргүүцэж, системийг оюутнуудад ойлгогдохоор жижиг хэмжээтэй байлгах нь зүйтэй гэж үзэж байжээ. Яг энэ үед Финланд Улсын Хельсинкийн Их Сургуулийн оюутан Линус Торвальдс өөрийнхөө MINIX-тэй төстэй үйлдлийн системийг бичсэн байдаг. Ингээд GNU/LINUX үйлдлийн систем төрсөн түүхтэй.

## MINIX 3 үйлдлийн системийн тухай
MINIX 1 анхны хувилбар 1987 онд бий болсон байдаг. MINIX нь сургалтанд хэрэглэдэг үйлдлийн систем боловч 2005 онд Таненбаум хамтран зүтгэгчидээ цуглуулан шинэ найдвартай ажиллагаатай үйлдлийн систем бичихээр шийджээ. MINIX 3 нь түүхийн хувьд авч үзвэл MINIX 1 болон MINIX 2 (1997 онд гарсан POSIX стандартын систем)-той холбоотой боловч тэс өөр шинэ систем юм. 

Судалгаанаас авч үзэхэд хэрэглээний програм нь 1000 мөр кодонд 6-16 алдаа агуулдаг бол драйвер програм нь үйлдлийн системээс 3-7 дахин илүү алдаатай байдаг байна. Үйлдлийн системийн нийт 70% нь драйвер програм байдаг учраас алдааны эх үүсвэр болж байна. Жишээ нь Windows XP дээр гарч байгаа алдааны 85% нь драйверын төхөөрөмжөөс болж байна. Үйлдлийн системийн найдвартай ажиллагааг хангахын тулд драйвер програмуудыг хамааралгүй ажиллуулах асуудал тулгарч байна. MINIX3 систем бий болох гол шалтгаан нь драйверт гарч байгаа алдаанаас үл хамааран системийг найдвартай ажилуулах явдал байсан.

Алдааг тусгаарлах механизмыг ашигласнаар MINIX 3-ийн найдвартай ажиллагааг хангаж болно. MINIX3-д цөмийн горимд нь 4000 мөр код ажилладаг байхад бусад үйлдлийн системд хэдэн сая мөрөөс тогтсон гүйцэтгэх програм цөмийн горимд ажилладаг. Энэ кодонд тасалдал боловсруулагч, процессыг төлөвлөх, процесс хоорондын хамааралтай үйлдлийг гүйцэтгэхэд зориулсан функциуд орсон байдаг. 
Үйлдлийн системийн үлдсэн хэсэг нь хэрэглэгчийн горимд процессуудын цуглуулга байдлаар ажиллах ба процесс бүр MMU (Memory Management Unit-Санах ойг удирдах төхөөрөмжийн)-ийн тусламжтай төхөөрөмжийн түвшинд хамгаалагдсан байдаг. Эдгээр процесс нь супер хэрэглэгчийн эрхээр ажиллах эрхгүй. 

Дахин амилуулах сервер (ReIncarnation Server) гэж нэрлэгдэх эдгээр процессын нэг нь бусад бүх процессынхоо хүснэгтийг хадгалж байдаг бөгөөд хэрэв эдгээр процессын аль нэг буруу ажиллах эсвэл эвдрэх тохиолдолд дахин амилуулах сервер нь түүнийг шинэ хуулбараар сольдог. Ихэнх алдаа гэнэт гарч ирдэг учраас эвдэрсэн компонентуудыг дахин сэргээж ажиллуулснаар компьютерыг дахин унтрааж асаах шаардлагагүй болно. Энэ шинж чанарыг өөрийгөө сэргээх гэдэг ба орчин үеийн системүүдэд байдаггүй.

MINIX 3-ийн бүтэц нь олон түвшнээс тогтох байгууламжаас тогтдог. Хамгийн доор нь микро цөм байрлах ба ойролцоогоор 3000 мөр код нь C, 800 мөр код нь ассемблер хэлээр бичигдсэн цөмийн горимд ажиллана. Түүний дээд талд хэрэглэгчийн горимд ажиллаж байгаа драйвер бүр нь тусдаа нэг процесс болон ажиллаж байгаа драйверуудын давхарга байна. Дараа нь серверуудын түвшин орно. Үүнд дахин амилуулах сервер (ReIncarnation Server), файлын сервер (File Server), процессуудыг удирдагч (Process Manager), X сервер (X Server), өгөгдөл хадгалах (data store) гэх мэт. Түүний дараагийн давхарга нь хэрэглэгчийн процессуудаас тогтоно. MINIX 3 системийн дотоод бүтэц нь бусад UNIX төрлийн системүүдээс эрс ялгаатай боловч POSIX интерфейс стандарттай програмуудыг дэмждэг учраас  UNIX-д зориулсан програмуудыг портлох амархан байдаг.

Бүрэлдэхүүн хэсгүүд нь хоорондоо тодорхой урттай мэдээг дамжуулах байдлаар харилцан ажилладаг байна. Жишээ нь хэрэглэгчийн процесс файлын сервер руу мэдээ дамжуулж файлтай ажиллах хүсэлт тавина. Хэрэв өөрийн кеш дотор ямар нэгэн блок байхгүй бол дискийн драйверын процессд блокыг хүлээж авах тухай мэдээг дамжуулна. Процесс хооронд дамжиж байгаа энэ мэдээ нь тодорхой хугацааг шаарддагч гэсэн(3GHz Pentium 4-т ойролцоогоор 500 нано секунд) системийн бүтээмжид сөрөгөөр нөлөөлөхгүй. Системийг цуглуулахад 120 компиляц шаардлагатай бөгөөд үүнд 10-хан секунд л шаардагдана.

## MINIX 3 хэрэглээний програмууд 
MINIX 3 дээр ажиллаж байгаа хэрэглэгчид эхэлж UNIX систем дээр ажиллаж байгаа юм шиг санагддаг боловч түүн шиг нүсэр биш юм. X Windows System болон ойролцоогоор 600 UNIX стандарт програмыг агуулдаг. 
* Командын процессорууд (shells): ash, bash, pdksh, rsh
* Редакторууд: emacs, nvi, vim, elvis, elle, mined, sed, ed, ex
* Програмчлалын хэлнүүд: cc, gcc, g++, bison, flex, perl, python, yacc
* Програмчлалын хэрэгслүүд: cdiff, mak, patch, tar, touch
* Сүлжээний хэрэгслүүд: ssh, telnet, ftp, lynx, mail, rlogin, wget, pine
* Файлын утилит програмууд: cat, cp, bzip2, compress, mv, dd, uue, GNU utilities
* Текст утилит програмууд: grep, head, paste, prep, sort, spell, tail
* Администраторын хэрэгслүүд: adduser, cron, fdisk, mknod, mount, cvs, rcs
* Тоглоом: dungeon, nethack

Одоогийн байдлаар хэрэглэгчийн шинэ интерфейстэй болсон байгаа.

## MINIX3 системийг ямар салбарт ашиглах боломжтой вэ? 
# Найдвартай ажиллагааг шаардсан хэрэглээний програмуудад зориулж.
# Гуравдагч орны хүүхдүүдэд зориулсан хямд үнэтэй, хүчин чадал бага нөүтбүүкд зориулж.
# Embedded systems (жишээ нь, видео камер, DVD-төхөөрөмж, гар утас гэх мэт)
# Сургалтанд (их дээд сургуулийн үйлдлийн системийн хичээл)

## Гадны холбоос
Ангилал:Үйлдлийн систем