作業系統簡史

2021-10-06 07:54:29 字數 2094 閱讀 2912

作業系統(operating system,os)是管理計算機硬體與軟體資源的電腦程式。作業系統需要處理如管理與配置記憶體、決定系統資源供需的優先次序、控制輸入裝置與輸出裝置、操作網路與管理檔案系統等基本事務。作業系統也提供乙個讓使用者與系統互動的操作介面。

一開始,作業系統並不像現在的作業系統,它只是一些庫,甚至可以說是一堆函式。它們的作用只是為了讓程式設計師可以遠離對類似於低階i/o處理的重複**,而是讓os這個庫來為程式設計師提供介面,進而減少程式設計師的工作。當時,在那些古老的大型機系統上,一次有乙個操作員來控制執行乙個程式,這個操作員做的工作就是當今的作業系統做的大多數事情,例如分配「你」的工作的執行順序。這種方式可以稱為「批處理」,先將準備工作做好,然後分批執行。

在對庫作業系統的使用中,程式設計師們漸漸發現了庫作業系統與其他普通庫的不同,庫作業系統可以控制裝置的執行,而不再是單純的被人所控制才能執行。於是系統呼叫(system call)的概念誕生,這是atlas計算系統率先採用的。不再只是將作業系統作為乙個簡單的庫,而是只通過建立乙個過程呼叫(procedure call)來訪問它。系統呼叫和過程呼叫之間的關鍵區別是:系統呼叫將空值轉移到os中,同時提高硬體特權級別(hardware privilege level)。使用者應用程式以所謂的使用者模式(user mode)執行,這意味著硬體限制了應用程式的功能。例如:使用者的應用程式不能發起對磁碟的i/o請求,不能訪問任何物理記憶體頁,在發起系統呼叫時,硬體將控制轉交給os,由os取訪問系統的硬體,當os完成應用程式請求的服務後,再通過特殊的指令將控制權交還給應用程式,回到應用程式交出控制權的地方繼續進行。

作業系統的真正興起是在小型機時代,在當時出現的如dec的pdp系列等經典機器讓計算機變得便捷,不再是大型組織的專屬,而是每個小型組織甚至個人可以擁有屬於自己的計算機。這時人們希望計算機可以不是一次執行只能執行一到程式,而是希望cpu可以同時執行多個程式(同時是指將多個程式載入到記憶體然後不停的切換,模擬出多程式同時執行的假象),這樣可以大大提高cpu利用率。因為在cpu只執行單道程式時,會因為i/o的阻塞導致浪費大量時間。

這一需求使得is不得不出現在人們眼前並承擔其比之前更加複雜的工作,要在支援多道程式的重疊執行的情況下,支援記憶體保護等問題,因為沒有人希望自己程式的記憶體可以被另一道程式所訪問,這也就是os的併發性。後來出現的乙個主要進展是貝爾實驗室引入的unix作業系統。unix從很多當時的作業系統取到了精華 ,然後不斷的優化自己,貝爾實驗室又將unix傳送給了世界各地的人們,使得後續更多的人參與到了作業系統中來。

unix在作業系統的歷史中的重要性舉足輕重。最初的unix的基礎是統一的原則,即構建小而強大的程式,這些程式連線在一起形成更大的工作流。在輸入命令的地方,shell提供了管道(pipe)之類的原語來支援這種元程式設計。並且unix對開發人員極為友好,為當時的c語言提供了編譯器,使得程式設計師更容易的進行程式設計開發,,這使得unix在開發人員中快速的流行起來。而作為乙個開源軟體,也使得使用其的大量開發者對其原始碼的擴充套件與維護產生了極大地興趣。其用c語言編寫的小核心很容易被其他人了解並擴充套件,為其不斷新增新的功能。比較有名的例如bill joy領導的伯克利創業團隊發布的berkeley syetems distribution(bsd),這個發行版有先進的虛擬記憶體、檔案系統與網路子系統。雖然後來由於公司試圖維護其所有權來獲取利潤,unix的傳播速度開始變緩,但很多公司都在基於unix的基礎上為自己創造了變種,例如ibm的aix,hp的hpux等等。更後來,乙個名為linus torvalds的芬蘭黑客決定編寫他自己的unix,他借鑑了unix的背後思想與原則,但是沒有使用原始碼,在世界各地人物的幫助下創造出了linux,並一直免費執行使用。

當今,個人計算機pc已經變得極為普遍,然而在個人計算初初興起時,作業系統卻發生了一次巨大的倒退,因為早期作業系統忘記了小型機的教訓。例如:dos,它並沒有把記憶體保護看做一件重要的事,導致dos中執行的惡意程式可以在記憶體中寫滿各種亂七八糟的東西;第一代macos,採取合作的方式進行作業排程,這種情況下乙個無限迴圈的執行緒就會占用整個作業系統,最終導致系統崩潰只能重啟。類似的問題在pc早期的作業系統中比比皆是,直到後來人們逐漸吸取教訓開始進步。例如macos的核心是unix,包括了人們期望從這樣乙個成熟系統中獲得的所有功能。windows也吸收了許多偉大的思想,特別是自windowsnt開始,是作業系統的一次巨大飛躍。如今在作業系統開發鼎盛時期出現的好思想已經遍布全世界,人們也在不斷的擴充套件這些好思想,來為使用者和程式提供更多功能,讓現代系統更加完善。

作業系統 作業系統介面

介面表現為函式呼叫,由作業系統提供,連線作業系統和應用軟體。出於安全性考慮,應用程式不能直接在記憶體中任意訪問 將核心程式和使用者程式隔離 通過比較訪問資料段cpl和rpl的特權級和當前段dpl的特權級之間的關係 應用程式呼叫庫函式printf printf呼叫庫中的write函式 write將函式...

作業系統(作業系統引論)

方便性 方便使用者進行操作計算機 有效性提高系統資源的利用率 提高系統的吞吐量,加速程式的執行 可擴充性 方便地增添新的模組和功能,以及對原有的功能模組進行修改 開放性能夠遵循世界標準規範 os作為使用者和計算機硬體系統之間的介面 使用者能夠通過作業系統來使用計算機系統 os作為計算機資源的管理者 ...

作業系統 作業系統 一 作業系統概述

好好學習,天天向上本文已收錄至我的github倉庫daydayup 歡迎star 之前一直沒有系統地學過作業系統,感覺自己在平時的學習過程中對於某些概念理解得一塌糊塗,比如中斷 記憶體 程序和執行緒等。所以打算系統的學習一下作業系統。一開始我是在b站看哈工大的李治軍老師講的,但是一上來就開始從彙編 ...