操作系統間史-多道技術

来源:https://www.cnblogs.com/yangyuanhu/archive/2019/07/01/11112763.html
-Advertisement-
Play Games

多進程的實現原理 多道技術 操作系統介紹 下圖是操作系統在整個電腦中所在的位置: 位於應用軟體和硬體設備之間,本質上也是一個軟體, 由系統內核(管理所有硬體資源)與系統介面(提供給程式員使用的介面)組成 操作系統是為方便用戶操作電腦而提供的一個運行在硬體之上的軟體 操作系統的兩個核心作用 1.為 ...


多進程的實現原理-多道技術

操作系統介紹

下圖是操作系統在整個電腦中所在的位置:

image-20181228060338147

位於應用軟體和硬體設備之間,本質上也是一個軟體,

由系統內核(管理所有硬體資源)與系統介面(提供給程式員使用的介面)組成

操作系統是為方便用戶操作電腦而提供的一個運行在硬體之上的軟體

操作系統的兩個核心作用

1.為用戶屏蔽了複雜繁瑣的硬體介面,為應用程式提供了,清晰易用的系統介面

有了這些介面以後程式員不用再直接與硬體打交道了

例子:有了操作系統後我們就可以使用資源管理器來操作硬碟上的數據,而不用操心,磁頭的移動啊,數據的讀寫等等

2.操作系統將應用程式對硬體資源的競爭變成有序的使用

例子:所有軟體 qq啊 微信啊 吃雞啊都共用一套硬體設備 假設現有三個程式都在使用印表機,如果不能妥善管理競爭問題,可能一個程式列印了一半圖片後,另一個程式搶到了印表機執行權於是列印了一半文本,導致兩個程式的任務都沒能完成,操作系統的任務就是將這些無序的操作變得有序

操作系統與應用程式的區別

二者的區別不在於的地位,它們都是軟體,而操作系統可以看做一款特殊的軟體

1.操作系統是是受保護的:無法被用戶修改(應用軟體如qq不屬於操作系統可以隨便卸載)

2.大型:linux或widows源代碼都在五百萬行以上,這僅僅是內核,不包括用戶程式,如GUI,庫以及基本應用軟體(如windows Explorer等),很容易就能達到這個數量的10倍或者20倍之多

3.長壽:由於操作系統源碼量巨大,編寫是非常耗時耗力的,一旦完成,操作系統所有者便不會輕易的放棄重寫,二是在原有基礎上改進,基本上可以把windows95/98/Me看出一個操作系統

操作系統發展歷史:

多道技術出現在第三代操作系統中,是為瞭解決前兩代操作系統存在的種種問題而出現,那麼前兩代操作系統都有哪些問題呢?一起來看看操作系統的發展歷史:

第一代電腦(1940~1955):真空管和穿孔卡片

第一代電腦的產生背景:

第一代之前人類是想用機械取代人力,第一代電腦的產生是電腦由機械時代進入電子時代的標誌,從Babbage失敗之後一直到第二次世界大戰,數字電腦的建造幾乎沒有什麼進展,第二次世界大戰刺激了有關電腦研究的爆炸性進展。

lowa州立大學的john Atanasoff教授和他的學生Clifford Berry建造了據認為是第一臺可工作的數字電腦。該機器使用300個真空管。大約在同時,Konrad Zuse在柏林用繼電器構建了Z3電腦,英格蘭布萊切利園的一個小組在1944年構建了Colossus,Howard Aiken在哈佛大學建造了Mark 1,賓夕法尼亞大學的William Mauchley和他的學生J.Presper Eckert建造了ENIAC。這些機器有的是二進位的,有的使用真空管,有的是可編程的,但都非常原始,甚至需要花費數秒鐘時間才能完成最簡單的運算。

在這個時期,同一個小組裡的工程師們,設計、建造、編程、操作及維護同一臺機器,所有的程式設計是用純粹的機器語言編寫的,甚至更糟糕,需要通過成千上萬根電纜接到插件板上連成電路來控制機器的基本功能。沒有程式設計語言(彙編也沒有),操作系統則是從來都沒聽說過。使用機器的過程更加原始,詳見下‘工作過程’

特點:
沒有操作系統的概念
所有的程式設計都是直接操控硬體

工作過程:
程式員在牆上的機時表預約一段時間,然後程式員拿著他的插件版到機房裡,將自己的插件板街道電腦里,這幾個小時內他獨享整個電腦資源,後面的一批人都得等著(兩萬多個真空管經常會有被燒壞的情況出現)。

後來出現了穿孔卡片,可以將程式寫在卡片上,然後讀入機而不用插件板

優點:

程式員在申請的時間段內獨享整個資源,可以即時地調試自己的程式(有bug可以立刻處理)

缺點:

浪費電腦資源,一個時間段內只有一個人用。
註意:同一時刻只有一個程式在記憶體中,被cpu調用執行,比方說10個程式的執行,是串列的

第二代電腦(1955~1965):晶體管和批處理系統

第二代電腦的產生背景:

由於當時的電腦非常昂貴,自認很自然的想辦法較少機時的浪費。通常採用的方法就是批處理系統。

特點:
設計人員、生產人員、操作人員、程式人員和維護人員直接有了明確的分工,電腦被鎖在專用空調房間中,由專業操作人員運行,這便是‘大型機’。

有了操作系統的概念

有了程式設計語言:FORTRAN語言或彙編語言,寫到紙上,然後穿孔打成卡片,再將卡片盒帶到輸入室,交給操作員,然後喝著咖啡等待輸出介面

工作過程:

1036857-20170118153002781-1203239513

1036857-20170118153032921-860551349

第二代如何解決第一代的問題/缺點:
1.把一堆人的輸入攢成一大波輸入,
2.然後順序計算(這是有問題的,但是第二代計算也沒有解決)
3.把一堆人的輸出攢成一大波輸出

現代操作系統的前身:(見圖)

優點:批處理,節省了機時

缺點:1.整個流程需要人參與控制,將磁帶搬來搬去(中間倆小人)

2.計算的過程仍然是順序計算-》串列

3.程式員原來獨享一段時間的電腦,現在必須被統一規划到一批作業中,等待結果和重新調試的過程都需要等同批次的其他程式都運作完才可以(這極大的影響了程式的開發效率,無法及時調試程式)

第三代電腦(1965~1980):集成電路晶元和多道程式設計

第三代電腦的產生背景:

20世紀60年代初期,大多數電腦廠商都有兩條完全不相容的生產線。

一條是面向字的:大型的科學電腦,如IBM 7094,見上圖,主要用於科學計算和工程計算

另外一條是面向字元的:商用電腦,如IBM 1401,見上圖,主要用於銀行和保險公司從事磁帶歸檔和列印服務

開發和維護完全不同的產品是昂貴的,同時不同的用戶對電腦的用途不同。

IBM公司試圖通過引入system/360系列來同時滿足科學計算和商業計算,360系列低檔機與1401相當,高檔機比7094功能強很多,不同的性能賣不同的價格

360是第一個採用了(小規模)晶元(集成電路)的主流機型,與採用晶體管的第二代電腦相比,性價比有了很大的提高。這些電腦的後代仍在大型的電腦中心裡使用,此乃現在伺服器的前身,這些伺服器每秒處理不小於千次的請求。

如何解決第二代電腦的問題1:
卡片被拿到機房後能夠很快的將作業從卡片讀入磁碟,於是任何時刻當一個作業結束時,操作系統就能將一個作業從磁帶讀出,裝進空出來的記憶體區域運行,這種技術叫做
同時的外部設備聯機操作:SPOOLING,該技術同時用於輸出。當採用了這種技術後,就不在需要IBM1401機了,也不必將磁帶搬來搬去了(中間倆小人不再需要)

如何解決第二代電腦的問題2:

第三代電腦的操作系統廣泛應用了第二代電腦的操作系統沒有的關鍵技術:多道技術

cpu在執行一個任務的過程中,若需要操作硬碟,則發送操作硬碟的指令,指令一旦發出,硬碟上的機械手臂滑動讀取數據到記憶體中,這一段時間,cpu需要等待,時間可能很短,但對於cpu來說已經很長很長,長到可以讓cpu做很多其他的任務,如果我們讓cpu在這段時間內切換到去做其他的任務,這樣cpu不就充分利用了嗎。這正是多道技術產生的技術背景

多道技術:

多道技術中的多道指的是多個程式,多道技術的實現是為瞭解決多個程式競爭或者說共用同一個資源(比如cpu)的有序調度問題,解決方式即多路復用,多路復用分為時間上的復用和空間上的復用。

空間上的復用:將記憶體分為幾部分,每個部分放入一個程式,這樣,同一時間記憶體中就有了多道程式。

1036857-20170313010137401-1096621807

時間上的復用:當一個程式在等待I/O時,另一個程式可以使用cpu,如果記憶體中可以同時存放足夠多的作業,則cpu的利用率可以接近100%,類似於我們小學數學所學的統籌方法。(操作系統採用了多道技術後,可以控制進程的切換,或者說進程之間去爭搶cpu的執行許可權。這種切換不僅會在一個進程遇到io時進行,一個進程占用cpu時間過長也會切換,或者說被操作系統奪走cpu的執行許可權)

空間上的復用最大的問題是:程式之間的記憶體必須分割,這種分割需要在硬體層面實現,由操作系統控制。如果記憶體彼此不分割,則一個程式可以訪問另外一個程式的記憶體,

首先喪失的是安全性,比如你的qq程式可以訪問操作系統的記憶體,這意味著你的qq可以拿到操作系統的所有許可權。

其次喪失的是穩定性,某個程式崩潰時有可能把別的程式的記憶體也給回收了,比方說把操作系統的記憶體給回收了,則操作系統崩潰。

多道技術案例:

生活中我們進程會同時做多個任務,但是本質上一個人是不可能同時做執行多個任務的,

例1:吃飯和打游戲,同時執行,本質上是在兩個任務之間切換執行,吃一口飯然後打打游戲,打會兒游戲再吃一口飯;

例2:做飯和洗衣服,如果沒有多道技術,在電飯煲做飯的時候我們就只能等著,假設洗米花費5分鐘,煮飯花費40分鐘,相當於40分鐘是被浪費的時間。那就可以在煮飯的等待過程中去洗衣服,假設把衣服裝進洗衣機花費5分鐘,洗衣服花費40分鐘,那麼總耗時為 5(洗米)+5(裝衣服)+40(最長等待時間) 大大提高了工作效率

多道技術也是在不同任務間切換執行,由於電腦的切換速度非常快,所以用戶是沒有任何感覺的,看起來就像是兩個任務都在執行,但是另一個問題是,僅僅是切換還不行,還需要在切換前保存當前狀態,切換回來時恢復狀態,這些切換和保存都是需要花費時間的!在上述案例中由於任務過程中出現了等待即IO操作所以進行了切換,而對於一些不會出現IO操作的程式而言,切換不僅不能提高效率,反而會降低效率

例如:做一百道乘法題和做一百道除法題,兩個任務都是計算任務是不需要等待的,此時的切換反而降低了運行效率!

第三代電腦的操作系統仍然是批處理

許多程式員懷念第一代獨享的電腦,可以即時調試自己的程式。為了滿足程式員們很快可以得到響應,出現了分時操作系統

如何解決第二代電腦的問題3:

分時操作系統:
多個聯機終端+多道技術

20個客戶端同時載入到記憶體,有17在思考,3個在運行,cpu就採用多道的方式處理記憶體中的這3個程式,由於客戶提交的一般都是簡短的指令而且很少有耗時長的,索引電腦能夠為許多用戶提供快速的互動式服務,所有的用戶都以為自己獨享了電腦資源

CTTS:麻省理工(MIT)在一臺改裝過的7094機上開發成功的,CTSS相容分時系統,第三代電腦廣泛採用了必須的保護硬體(程式之間的記憶體彼此隔離)之後,分時系統才開始流行

MIT,貝爾實驗室和通用電氣在CTTS成功研製後決定開發能夠同時支持上百終端的MULTICS(其設計者著眼於建造滿足波士頓地區所有用戶計算需求的一臺機器),很明顯真是要上天啊,最後摔死了。

後來一位參加過MULTICS研製的貝爾實驗室電腦科學家Ken Thompson開發了一個簡易的,單用戶版本的MULTICS,這就是後來的UNIX系統。基於它衍生了很多其他的Unix版本,為了使程式能在任何版本的unix上運行,IEEE提出了一個unix標準,即posix(可移植的操作系統介面Portable Operating System Interface)

後來,在1987年,出現了一個UNIX的小型克隆,即minix,用於教學使用。芬蘭學生Linus Torvalds基於它編寫了Linux

第四代電腦(1980~至今):個人電腦

第四代也就是我們常見的操作系統,大多是具備圖形化界面的,例如:Windows,macOS ,CentOS等

由於採用了IC設計,電腦的體積下降,性能增長,並且成本以及可以被普通消費者接受,而第三代操作系統大都需要進行專業的學習才能使用,於是各個大佬公司開始開發那種不需要專業學習也可以快速上手的操作系統,即上述操作系統!

它們都是用了GUI 圖形化用戶介面,用戶只需要通過滑鼠點擊拖拽界面上的元素即可完成大部分操作


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近跟一個運維人員學了點新東西,感覺以前沒怎麼註意,但現在感覺很有用,特來記錄一下。 linux使用==ll==命令列出列表的時候,前面總是有一堆drwxr xr x ,這些代表什麼意思從來還沒有去在意過,只是找到自己的目錄然後一頓操作完事。但是這次在tomcat下部署項目的時候怎麼都不能啟動,後來 ...
  • 本文主要介紹ZooKeeper的快速部署安裝,更多信息請參考 "ZooKeeper" 概述 ZooKeeper 是一個分散式的,開放源碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括 ...
  • 一、安裝編譯工具及庫文件 二、首先要安裝 PCRE PCRE 作用是讓 Nginx 支持 Rewrite 功能。 1、下載 PCRE 安裝包,下載地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz ...
  • 鏈接:https://pan.baidu.com/s/1lnL3T8tc3ps2dp1zah1ZEA提取碼:wo5y Xshell 是一款強大的 SSH 客戶端 ,支持多種遠程協議,提供了很多功能與高級性能,中文界面也讓你輕鬆管理遠程伺服器。Xshell Plus 綠色版由NoCmd發佈! Xshe ...
  • 本文轉自: http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html https://www.cnblogs.com/Jtianlin/p/4330723.html 簡介 用簡單的話來定義tcpdump,就是:dump the ...
  • 線程池和連接池 線程池的原理: 來看一下線程池究竟是怎麼一回事?其實線程池的原理很簡單,類似於操作系統中的緩衝區的概念,它的流程如下:先啟動若幹數量的線程,並讓這些線程都處於睡眠狀態,當客戶端有一個新請求時,就會喚醒線程池中的某一個睡眠線程,讓它來處理客戶端的這個請求,當處理完這個請求後,線程又處於 ...
  • 回到目錄 和前面介紹二極體的PN結的工作原理一樣,BJT的量子級工作機制也非常複雜,一般教科書上為了幫助學習者能快速理解,也都是用一種簡化模型的方法來介紹BJT的工作機理,一般只需大致瞭解即可。只要記住關鍵的一點:BJT本質上是一種流控電流源(CCCS)。它可以用一個較小的基極電流控制一個較大的集電 ...
  • 一 RBAC 1.1 RBAC授權 基於角色的訪問控制(RBAC)是一種基於個人用戶的角色來管理對電腦或網路資源的訪問的方法。 RBAC使用rbac.authorization.k8s.io API組來推動授權決策,允許管理員通過Kubernetes API動態配置策略。 使用--authoriz ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...