Operaciumo

[eta|300px|La [labortablo de Ubuntu, Linukso-operaciumo de Canonical Ltd]]
eta|Pozicio de operaciumo en funkcianta komputilo.
En komputado, **operaciumo** aŭ **mastrumsistemo** aŭ **mastrumilo** ( aŭ *OS*), estas speciala programaro, sen kiu ne eblas uzi plispecifajn programarojn. Ĝi oficas kiel "bazo", al kiu aliaj programaroj apogiĝas, kiuj do devos esti projektataj por tiu operacio, alie ili ne estos rekonataj. Tiel operaciumo estas nemalhavebla komponanto por ĉiuj komputoraj sistemoj. Laŭ pli serioza difino, operaciumo estas aro de subrutinoj kaj strukturo de datumoj respondecaj pri la kontrolo kaj administrado de komputilaj aparataroj kaj de programaroj, kiuj estas rulataj sur la komputilo.

La dominanta ĝeneralcela operaciumo por personaj komputiloj estas Microsoft Windows kun merkatparto de ĉirkaŭ 74.99%. macOS de Apple Inc. estas duaranga (14.84%), kaj la variaĵoj de Linux estas kolektive en la tria rango (2.81%). Ĉe la sektoro de porteblaj aparatoj (inklude saĝtelefonojn kaj tabulkomputilojn), la merkatparto de Android estis de 70.82% en la jaro 2020. Laŭ la datumoj de la tria kvarono de 2016, la merkatparto de Android ĉe saĝtelefono estas dominanta per 87.5 procento kun kreskindico de 10.3 procento jare, sekvita de iOS de Apple kun 12.1 procento kun jara malpliiĝo en la merkatparto de 5.2 procento, dum aliaj operaciumaj sistemoj atingas nur ĝuste al 0.3 procento. Linuksaj distribuaĵoj estas dominantaj en la sektoroj de serviloj kaj komputilegoj.

## Difino kaj celo 
Operaciumo estas malfacile difinebla, sed ĝi estas nomata "la tavolo de programaro kiu administras la resursojn de komputilo por ĝiaj uzantoj kaj iliaj aplikaĵoj". Operaciumoj inkluzivas la programaron kiu ĉiam funkcias, nomatan kerno — sed povas inkluzivi ankaŭ alian programaron. La ​​du aliaj specoj de programoj kiuj povas funkcii sur komputilo estas sistemaj programoj — kiuj estas asociitaj kun la operaciumo, sed eble ne estas parto de la kerno — kaj aplikaĵoj — ĉia alia programaro.

Estas tri ĉefaj celoj kiujn operaciumo plenumas:
* Operaciumoj asignas rimedojn inter malsamaj aplikaĵoj, decidante kiam ili ricevos tempon aŭ spacon de la centra procesoro (CPU) en memorilo. Ĉe modernaj personaj komputiloj, uzantoj ofte volas ruligi plurajn aplikaĵojn samtempe. Por certigi, ke unu programo ne povas monopoligi la limigitajn aparatarajn rimedojn de la komputilo, la operaciumo donas al ĉiu aplikaĵo parton de la rimedo, ĉu en tempo (CPU) ĉu en spaco (memorilo). La operaciumo ankaŭ devas izoli aplikaĵojn unu de la alia por protekti ilin kontraŭ eraroj kaj sekurecaj vundeblecoj en la kodo de alia aplikaĵo, sed ebligi komunikadojn inter malsamaj aplikaĵoj.
* Operaciumoj provizas interfacon kiu abstraktas la detalojn de aliro al aparataro (kiel fizika memorilo) por faciligi aferojn por programistoj. Virtualigo ankaŭ ebligas al la operaciumo maski limigitajn aparatarajn rimedojn; ekzemple, virtuala memorilo povas provizi al programo la iluzion de preskaŭ senlima memorilo kiu superas la faktan memoron de la komputilo.
* Operaciumoj provizas komunajn servojn, kiel ekzemple interfacon por aliri retajn kaj diskajn aparatojn. Tio ebligas, ke aplikaĵo funkciu en malsama aparataro sen devi esti reskribita. Kiujn servojn inkluzivi en operaciumo multe varias, kaj tiu funkcio konsistigas la grandan plimulton de kodo por la plej multaj operaciumoj.

## Funkciado
Krome, la operaciumo disponigas la necesan infrastrukturon por ruli la operaciajn aplikaĵojn, kiu okazas kiam la komputilo estas ŝaltita, ekde startigo.

Kutime, operaciumo antaŭaranĝas por la uzanto grafikan aŭ tekstan interfacon por atingi la aparataron (diskoj, memoro, I/O) de la sistemo. En sistemoj kun pluruzanto-reĝimo, tia atingo dependas de la rajtoj de ĉiu unuopa uzanto. Tia atingo dependas, en sistemoj kiuj funkcias en pluruzanta reĝimo, kiu estras la rajtoj de ĉiu uzanto.

La ĉefa tasko de la operaciumo estas permesi al la uzanto, homa aŭ ne, rekte interagi kun la maŝino. Por tion fari la operaciumo disponigas tri interfacojn:

# Uzantinterfaco 
# Interfaco por aparataro kaj periferia aparataro per la pelilo.
# Aplikprograma interfaco (API).

Estas tri ĉefaj funkcioj de la operaciumo:

# Asigno de rimedoj de la aparataro. 
# Tempa planado kaj koordinado de la operacioj de aparataj komponantoj kaj programaj komponantoj 
# Establi komunan infrastrukturon kaj fakorganizitan kadron de interfaco kaj servoj por la uzanto kaj la programarpakaĵoj

## Strukturo 
Ĝenerale moderna operaciumo strukturiĝas en kelkaj defaŭltaj partoj:
* La kerno: grupo de fundamentaj funkcioj, strikte ligitaj inter ili kaj kun la aparataro, kiuj estas rulataj kun la plej grandaj rajtoj, la kerna reĝimo; la kerno havigas la bazajn funkciojn por ĉiuj aliaj partoj de la operaciumo, kiuj plenumas proprajn funkciojn per servoj oferataj de la operaciumo. La kerno, laŭ la tipo de operaciumo, povas enhavi aliajn partojn (*klasika* kerno, unupeca aŭ modula) aŭ plenumi nur bazajn funkciojn, delegante plejeble multe funkciojn al objektoj/eksteraj kondukantoj (mikrokerno);
* La administrilo de dosiersistemo: ĝi plenumas petojn por akiri al amasmemoriloj. Ĝi estas uzata kiam oni akiras al dosiero en disko kaj konservas trakon de malfermitaj dosieroj kaj de permesoj por akiri al dosieroj. ;
* Sistemo de virtuala memoro, kiu disponigas petatan memoron de programaroj kaj de operaciumo mem, konservas en amasmemorilo la zonojn de memoro momente ne uzatajn de programarojn kaj garantias, ke la permutitaj paĝoj estas reenmetitaj en memoro, se petitaj;
* Planilo, kiu skandas la tempon de plenumo de pluraj procezoj kaj garantias, ke ĉiu procezo estas rulata dum petita tempo;
* Bufro, kiu ricevas de programaroj la presotajn datumojn kaj ĝi presas ilin laŭ ordo, tiel ke programaroj povas daŭrigi sen atendi, ke presado terminas;
* Grafika interfaco (Ŝelo) kiu permesas homojn interagi kun maŝino.

### Virtuala memoro
Virtuala memoro estas la nomo de teknologio uzata en komputiloj. Komputiloj funkciigas programon. Tiu programo bezonos komputilan memoron por funkcii, kaj efektivigi kion ĝi bezonas fari. Plej multaj komputiloj uzataj hodiaŭ povas fari pli ol unu agon samtempe, ili funkciigas pli ol unu programaro. Tio estas konata kiel plurtaska sistemo.

En tiu kazo, ĉiuj programoj aŭ programaroj kiuj funkcias samtempe en la komputilo partigas ties rimedojn. Komputilo ne havas pli da procesoroj aŭ da ĉefmemoro nur tial ke pli multe da programoj funkcias en ĝi.

Virtuala memoro estas la ideo, ke la programaro *vidas* *blokon de memoro* de difinita grando. La programaro povas uzi tiun memoron kiam ĝi vidas, ke ĝi taŭgas. Tiu bloko de memoro estas *virtuala* en la senco, ke ĝi devenas de malsamaj lokoj. Iuj povas esti en la ĉefmemoro de la komputilo, sed iuj ankaŭ povas esti sur la disko. La procesoro havas specialan eron, nomitan Aritmetika kaj logika unuo, kiu faras kelkajn el la transiroj inter programara memoro kaj sistem-rimedoj. Ankaŭ modernaj operaciumoj faras parton de la laboro.

### Programplenumado
La operaciumo provizas interfacon inter aplikaĵoprogramo kaj la komputila aparataro, tiel ke aplikaĵoprogramo povas interagadi kun la aparataro nur obeante regulojn kaj procedurojn programitajn en la operaciumon. La operaciumo estas ankaŭ aro da servoj, kiuj simpligas la disvolvon kaj plenumon de aplikaĵprogramoj. Plenumi aplikaĵoprogramon tipe implikas la kreadon de procezo fare de la kerno de la operaciumo, kiu asignas memorspacon kaj aliajn rimedojn, establas prioritaton por la procezo en plurtaskaj sistemoj, ŝarĝas duuman kodon de la programo en la memorilon, kaj iniciatas la plenumon de la aplikaĵoprogramo, kiu poste interagas kun la uzanto kaj kun aparataraj aparatoj. Tamen, en iuj sistemoj aplikaĵo povas peti, ke la operaciumo plenumu alian aplikaĵon ene de la sama procezo, ĉu kiel subrutino ĉu en aparta fadeno, ekz., la funkcioj *LINK* kaj *ATTACH* de OS/360 kaj posteuloj.

### Interrompoj
Interrompo (ankaŭ konata kiel *aborto*, *escepto*, *eraro*, *signalo*, aŭ *kaptilo*) provizas efikan manieron por ke plej multaj operaciumoj reagu al la medio. Interrompoj kaŭzas, ke la centra proceza unuo (CPU) havas ŝanĝon de kontrolfluo for de la nuntempe kuranta programo al interrompilo, ankaŭ konata kiel *interrompa serva rutino* (ISR). 
Interrompa serva rutino povas kaŭzi, ke la centra procezilo (CPU) havu kuntekstan ŝanĝon. Modernaj procesoroj provizas instrukciojn (ekz. SYSENTER) por alvoki elektitajn kernservojn sen interrompoj. La detaloj pri kiel komputilo prilaboras interrompon varias de arkitekturo al arkitekturo, kaj la detaloj pri kiel interrompaj servaj rutinoj kondutas varias de operaciumo al operaciumo. 
Tamen, pluraj interrompaj funkcioj estas oftaj. specialigitan (nur la absolute necesaj pecoj de kodo estas eltiritaj el bibliotekoj kaj ligitaj kune)), ununuran adresspacon, maŝinan bildon, kiu povas esti deplojita en nubajn aŭ enigitajn mediojn.

La kodo de la operaciumo kaj la aplikaĵa kodo ne estas plenumataj en apartaj protektaj domajnoj (ekzistas nur ununura aplikaĵo funkcianta, almenaŭ koncepte, do ne necesas malhelpi interferon inter aplikaĵoj) kaj la operaciumaj servoj estas alireblaj per simplaj bibliotekaj vokoj (eble enliniigante ilin surbaze de kompililaj sojloj), sen la kutima ŝarĝo de kuntekstaj ŝaltiloj, simile al enigitaj kaj realtempaj operaciumoj. Notu, ke ĉi tiu ŝarĝo ne estas nekonsiderinda: al la rekta kosto de reĝimŝanĝo necesas aldoni la nerektan poluadon de gravaj procesoraj strukturoj (kiel CPU-kaŝmemoroj, la instrukcia dukto, ktp.), kiu influas kaj uzantreĝiman kaj kernareĝiman rezulton.

## Historio
 uzata de la operaciumo por komuniki kun la funkciigilo.]]
La unuaj komputiloj fine de la 1940-aj kaj 1950-aj jaroj estis rekte programitaj aŭ per ŝtopiltabuloj aŭ per maŝinkodo enigita en mediojn kiel trukartoj, sen programlingvoj aŭ operaciumoj. Post la enkonduko de la transistoro meze de la 1950-aj jaroj, oni komencis konstrui ĉefkomputilojn. Ĉi tiuj ankoraŭ bezonis profesiajn funkciigilojn (operatorojn) kiuj permane faris tion, kion moderna operaciumo farus, kiel ekzemple plani funkciigindajn programojn, sed ĉefkomputiloj ankoraŭ havis rudimentajn operaciumojn kiel *Fortran Monitor System* (FMS) kaj *IBSYS*. En la 1960-aj jaroj, IBM lanĉis la unuan serion de interkongruaj komputiloj (System/360). Ĉiuj ili funkciigis la saman operaciumon — OS/360 — kiu konsistis el milionoj da linioj de asembla lingvo kun miloj da cimoj. OS/360 ankaŭ estis la unua populara operaciumo kiu subtenis plurprogramadon, tiel ke la CPU povus esti uzata por unu tasko dum alia atendis enigon/eligon (E/E). Teni plurajn taskojn en memorilo necesigis memordividon kaj protektojn kontraŭ unu tasko aliranta la memoron asignitan al alia.

Ĉirkaŭ la sama tempo, teleksiloj komencis esti uzataj kiel terminaloj, por ke pluraj uzantoj povu samtempe aliri la komputilon. La operaciumo MULTICS celis permesi al centoj da uzantoj aliri grandan komputilon. Malgraŭ sia limigita adopto, ĝi povas esti konsiderata la antaŭulo de nuba komputado. La operaciumo Unikso originis kiel disvolviĝo de MULTICS por ununura uzanto. Ĉar la fontkodo de Unikso estis havebla, ĝi fariĝis la bazo de aliaj, nekongruaj operaciumoj, el kiuj la plej sukcesaj estis System V de AT&T kaj *Berkeley Software Distribution* (BSD) de la Universitato de Kalifornio. Por pliigi kongruecon, la IEEE publikigis la normon POSIX por aplikaĵaj programaj interfacoj (API-oj) de operaciumoj, kiu estas subtenata de la plej multaj UNIX-sistemoj. Minikso estis simpligita versio de Unikso, disvolvita en 1987 por edukaj uzoj, kiu inspiris la komerce haveblan, liberan programaron Linukson. Ekde 2008, Minikso estas uzata en regiloj de la plej multaj Intel-mikroĉipoj, dum Linukso estas vaste uzata en datumcentroj kaj Android-poŝtelefonoj.

### Mikrokomputiloj
 de la operaciumo MS-DOS.]]
 de Macintosh.]]
La invento de grandskala integriĝo ebligis la produktadon de personaj komputiloj (komence nomataj *mikrokomputiloj*) ekde ĉirkaŭ 1980. Dum ĉirkaŭ kvin jaroj, la CP/M (Kontrolprogramo por Mikrokomputiloj) estis la plej populara operaciumo por mikrokomputiloj. Poste, IBM aĉetis la DOS (*Disk Operating System*) de Microsoft. Post modifoj petitaj de IBM, la rezulta sistemo nomiĝis MS-DOS (*MicroSoft Disk Operating System*) kaj estis vaste uzata sur IBM-mikrokomputiloj. Pli postaj versioj pliigis sian sofistikecon, parte pruntante funkciojn de UNIX.

La Makintoŝo de Apple estis la unua populara komputilo kiu uzis grafikan uzantinterfacon (GUI). La GUI pruviĝis multe pli uzanto-amika ol la nur-teksta komandlinia interfaco, kiun pli fruaj operaciumoj uzis. Post la sukceso de Makintoŝo, MS-DOS estis ĝisdatigita per GUI fako nomata Vindozo. Vindozo poste estis reskribita kiel memstara operaciumo, pruntante tiom da funkcioj de alia (VAX VMS), ke granda jura kompromiso estis pagita. En la dudekunua jarcento, Vindozo daŭre estas populara sur personaj komputiloj, sed havas malpli da merkatpartopreno de serviloj. Uniks-operaciumoj, precipe Linukso, estas la plej popularaj ĉe entreprenaj sistemoj kaj serviloj, sed ankaŭ estas uzataj en porteblaj aparatoj kaj multaj aliaj komputilaj sistemoj.

Ĉe porteblaj aparatoj, la operaciumo Symbian komence superregis, anstataŭita de BlackBerry OS (enkondukita en 2002) kaj iOS por iFonoj (ekde 2007). Poste, la malfermfonteca operaciumo Android (enkondukita en 2008), kun Linuksa kerno kaj C-biblioteko (Bionic) parte bazita sur BSD-kodo, fariĝis plej populara.

## Bontenado 
Operaciumoj foje detektas sekurecajn vundeblecojn, kiuj povas damaĝi la uzanton, lian verkon kaj datumojn. Ĉi tiuj vundeblecoj povas esti protektitaj instalante sekurecajn flikaĵojn provizitajn de la fabrikanto de la operaciumo.

## Operaciumoj por labortablaj kaj porteblaj komputiloj 
* Microsoft Windows
* macOS
* GNU/Linux
* FreeBSD
* NetBSD
* OpenBSD
** LibertyBSD
* FreeDOS
* Windows
* Mac OS
* Unix
* Solaris
* FreeBSD
* OpenBSD
* Chrome OS (GNU/Linux)
* Debian GNU/Linux (GNU/Linux)
* Gentoo Linux (GNU/Linux)
* SUSE Linux (GNU/Linux)
* Red Hat Enterprise Linux (GNU/Linux)
* Ubuntu Linux (GNU/Linux)
* HP-UX
* BeOS
* Kali Linux (GNU/Linux)
* Mandriva (GNU/Linux)

## Operaciumoj por porteblaj aparatoj 
* iOS
* Android
* Windows Phone
* Firefox OS
* Ubuntu Phone OS

## Operaciumoj por saĝhorloĝoj 
* Android
* WearOS 
* OpenWatch 

## Realtempaj operaciumoj 
Realtempa operaciumo estas speciala ĝenro de operaciumo, kapablaj garantii respondon en fiksita tempo (milisekundoj aŭ mikrosekundoj) al ĉiu ekstera okazo. Ĉi tiu rekvizito influas en la strukturo de la sistemo: realtempaj sistemoj uzas ofte la *polling*-teĥniko anstataŭ ol interrompo por administri la aparatojn keaj ne havas virtualan memoron. La realtempaj sistemoj troviĝas ofte en industria aŭ muzika kadroj aŭ kie respondo de sistemo en maksimuma tempo antaŭfiksita necesas.

## Notoj
## Bibliografio 
### En angla
* 
* 
* 
* 
* 
* O'Brien, J. A., & Marakas, G. M.(2011). *Management Information Systems*. 10e. McGraw-Hill Irwin.
* 
* 

### En hispana
* Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg (2006). *Fundamentos de sistemas operativos* (7a eldono). McGraw-Hill. ISBN 84-481-4641-7.
* Stallings, William (2005). *Sistemas operativos: aspectos internos y principios de diseño* (5a eldono). Pearson Prentice Hall. ISBN 978-84-205-4462-5.
* Tanenbaum, Andrew S. (2009). *Sistemas operativos modernos* (3a eldono). Pearson Prentice Hall. ISBN 978-607-442-046-3.

### En itala
*  *Architettura dei Sistemi di Elaborazione, volume 1 - Fondamenti!, firmware, architetture parallele.* F. Baiardi, A. Tomasi e Marco Vanneschi, 1988, Franco Angeli Edizioni, ISBN 88-204-2746-X.
*  *Architettura dei Sistemi di Elaborazione, volume 2 - Sistemi operativi, multiprocessore e distribuiti.* F. Baiardi, A. Tomasi, Marco Vanneschi, 1987, Franco Angeli Edizioni, ISBN 88-204-2746-X.
*  * Sistemi operativi - Concetti ed esempi.* A. Silberschatz, P. Galvin, G. Gagne, 2006, Pearson Education Italia, ISBN 88-7192-233-6.