% Linux Installation and Getting Started    -*- TeX -*-
% features.tex
% Copyright (c) 1992-1994 by Matt Welsh <mdw@metalab.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of ``Linux 
% Installation and Getting Started''. This file's use is covered by the 
% copyright for the entire document, in the file ``copyright.tex''.
%
% Copyright (c) 1998 by Specialized Systems Consultants Inc. 
% <ligs@ssc.com>


\section{Odlike sistema}
%\markboth{Uvod v Linux}{Odlike sistema}

Linux podpira lastnosti, ki jih najdete tudi v drugih izvedbah Unixa,
ima pa še veliko takšnih, ki jih drugje ne najdete.  V tem razdelku
bomo naredili kratek izlet v lastnosti jedra sistema Linux.

Linux je popolnoma večopravilen, večuporabniški operacijski sistem,
kot so tudi vse druge različice Unixa.  To pomeni, da se lahko hkrati
prijavi na en sam stroj tudi več uporabnikov in lahko hkrati izvajajo
več programov.

Sistem Linux je v veliki meri združljiv z različnimi standardi Unixa
(kolikor Unix sploh ima standarde) na nivoju izvorne kode, vključno s
standardi IEEE POSIX.1, Unix System V in Berkeley System Distribution
Unix.  Linux se je razvil s prenosljivostjo izvorne kode pred očmi in
zlahka najdete odlike, ki so skupne različnim platformam.  Večina na
Internetu dostopnega, prostega programja za Unix se na Linuxu prevede
>>naravnost iz škatle<<.  Dodatno je dostopna in prosto razširljiva še
vsa izvorna koda sistema Linux, vključno z jedrom, gonilniki naprav,
knjižnicami, uporabniškimi programi in razvojnimi orodji.

Druge posebne notranje odlike Linuxa vključujejo kontrolo opravil
POSIX (uporabljajo jih ukazne lupine, kot sta \texttt{csh} in
\texttt{bash}), psevdoterminale (naprave \texttt{pty}) in podporo
nacionalnim ali prirejenim gonilnikom tipkovnice, ki se lahko nalagajo
dinamično.  Linux podpira \textbf{navidezne konzole}, ki vam omogočajo
preklapljanje med prijavnimi sejami na isti sistemski konzoli.
Uporabnikom programa \texttt{screen} se bodo zdele navidezne konzole
Linuxa že znane.

Jedro lahko emulira ukaze koprocesorja 387 in sistemi brez
matematičnega koprocesorja lahko poganjajo programe, ki potrebujejo
matematiko plavajoče vejice.

Linux podpira različne datotečne sisteme za hrambo podatkov, kot je
datotečni sistem ext2, razvit posebej za Linux.  Podprti so tudi
datotečni sistemi sistemov Xenix in UNIX System V, kot tudi datotečni
sistemi Microsoft MS-DOS in Windows 95 VFAT na trdem disku ali
disketi.  Podprt je standardni datotečni sistem ISO 9660 za CD-ROM.
Več o datotečnih sistemih bomo spregovorili v
poglavjih~\ref{chap-install-num} in~\ref{chap-sysadm-num}.

Linux ponuja popolno izvedbo programja za omrežja TCP/IP.  Ta
vključuje gonilnike naprav za mnogo popularnih mrežnih kartic, SLIP
(Serial Line Internet Protocol) in PPP (Point-to-Point Protocol), ki
poskrbita za dostop do omrežja TCP/IP po serijski zvezi, ter PLIP
(Parallel Line Internet Protocol) in NFS (Network File System).
Podprt je tudi popoln nabor odjemalcev in strežnikov TCP/IP, vključno
s FTP, \texttt{telnet}, NNTP in SMTP.  Več o omrežnih zadevah bomo
povedali v poglavju~\ref{chap-networking}.

Jedro Linuxa je zasnovano tako, da uporablja lastnosti zaščitenega
načina procesorjev Intel 80386 ali boljših.  Linux posebej uporablja
vzorec upravljanja pomnilnika z deskriptorji v zaščitenem načinu
% (?) protected-mode, descriptor based, memory-management paradigm,
in druge napredne lastnosti.  Kdor je seznanjen s programiranjem
80386, ve, da je bil ta čip zasnovan za večopravilne sisteme, kot
je Unix.  Linux izkorišča to funkcionalnost.

Jedro podpira nalaganje strani izvedljivih datotek na zahtevo.
% demand-paged, loaded executables (Sredin seminar #922)
Z diska se v pomnilnik preberejo le tisti deli programa, ki se zares
uporabljajo.  Izvedljive datoteke si delijo tudi strani,
ki se prekopirajo ob pisanju. % copy-on-write pages (SrS #922)
Če hkrati teče več izvodov programa, si fizičen pomnilnik delijo,
kar zmanjša splošno porabo.

Linux podpira ostranjevanje na disk in s tem povečuje količino
dostopnega pomnilnika.  Disku lahko priredite do en gigabajt
\textbf{izmenjalnega prostora}\footnote{Izmenjalni prostor je
neustrezno poimenovan; ne izmenjujejo se celotni procesi, pač pa le
posamezne strani.  Seveda se dostikrat na disk začasno preselijo
celotni procesi, vendar to ni vselej res.} -- \textbf{swapa} -- do 8
particij, od katerih ima vsaka po 128~megabajtov.  Ko sistem potrebuje
več fizičnega pomnilnika, preseli nedejavne strani iz pomnilnika na
disk in vam s tem omogoči poganjanje večjih aplikacij in podporo več
uporabnikom.  Vendar izmenjevanje podatkov na disk ni nadomestek za
fizični RAM, ki je mnogo hitrejši.

Jedro Linuxa vsebuje izvedbo skupnega pomnilniškega prostora za
uporabniške programe in diskovni predpomnilnik.  Ves prosti pomnilnik
se uporablja za predpomnilnik, ki se ob poganjanju velikih programov
zmanjša.

Izvedljive datoteke uporabljajo dinamično povezane deljene knjižnice:
kodo iz ene same knjižnice na disku.  To je podobno mehanizmu deljenih
knjižnic, ki ga uporablja SunOS.  Izvedljive datoteke tako porabijo
manj prostora na disku, predvsem tiste, ki uporabljajo veliko
knjižničnih funkcij.  Obstajajo tudi statično povezane knjižnice za
objektno razhroščevanje in vzdrževanje >>samostojnih<< binarnih
datotek, kadar dinamične knjižnice niso nameščene.  Knjižnice se
dinamično povezujejo med tekom in programer lahko uporablja svoje
knjižnične podprograme namesto standardnih knjižničnih.

Jedro izdeluje posmrtne ostanke procesov (angl.\ core dumps) za lažje
razhroščevanje sesutih programov.  Posmrtni ostanek\index{posmrtni
ostanek} je izvedljiva datoteka, povezana s podporo razhroščevalniku,
ki razvijalcu pomaga ugotoviti, zakaj se je program sesul.
