操作系統:一個老漢的無聲告白

来源:https://www.cnblogs.com/enochzzg/archive/2018/11/21/9997978.html
-Advertisement-
Play Games

老夫生於上世紀五十年代,作為八零後的大叔,九零後的老伯,同時也是你們動輒就要重裝的操作系統,我的學名是“電腦管理控製程序”,英譯“operating system”,小老弟們常喊我“OS”。雖說是老弟,目的卻都不怎麼單純,大部分人只想玩我,剩下一小撮人卻鐘愛探索我的身體,他們沉迷於當下,但真正願意... ...


老夫生於上世紀五十年代,作為八零後的大叔,九零後的老伯,同時也是你們動輒就要重裝的操作系統,我的學名是“電腦管理控製程序”,英譯“operating system”,小老弟們常喊我“OS”。雖說是老弟,目的卻都不怎麼單純,大部分人只想玩我,剩下一小撮人卻鐘愛探索我的身體,他們沉迷於當下,但真正願意瞭解我過去的所剩無幾。今兒個趁機會給你們介紹一下我的過去。  

人工操作

在我幼年時期,雖然跟我打交道的絕大部分都是精英程式員,但做的事還是很基礎的,想執行一段程式必須先把代碼寫到卡片上,塞到我身體里,打開開關,等我對數據進行計算,計算完畢後再把卡片卸下來,這才把控制權交給下一個人,這就叫做“人工操作方式”。但是很明顯,我的處理能力是有目共睹的,本來幾秒鐘就能處理完的作業,偏偏人工操作就等了幾分鐘,不僅我心急,後面排隊的人也很容易跟他乾架,可如果把浪費的時間用來處理其它作業,效率一定會蹭蹭的往上漲。  

單道批處理系統

為瞭解決等待人工操作的問題,絕頂聰明的我想到了一個好方法,首先準備一個磁帶作為存儲設備,程式員將作業聚在一起塞給我,然後我成批的將作業讀入磁帶,這時候程式員們就可以走開做別的事了。showtime!接下來只需依次將作業裝入記憶體,計算數據並輸出結果即可。因我引以為傲的處理能力自然而然的就省下了等待人工操作的時間。   雖然有了批量處理的能力,但還是有很大的缺陷,因為我一次只能執行一個作業,所以作業執行時是獨占我所有資源的。這意味著當我進行I/O時,我的CPU是無事可做的,非常浪費資源,如果讓空閑的CPU去處理其它作業,理論上就能做到同時處理兩個作業了。  

多道批處理系統

說乾就乾,接下來我進行了一些改造,目的就是“誰閑給誰活乾”——當一個作業在使用CPU時,另一個作業可以進行I/O,反之亦然。這樣不僅實現了多個作業的同時處理,還提高了老夫的資源利用率和吞吐能力。與此同時,我不再嚴格按照順序裝載作業,而是由我的作業調度程式負責分配作業的裝載,並由進程調度程式分配CPU,這樣權責分明,更有利於日後調度策略的優化和調整。   現在的作業已經不同以往,不再獨占全機,但它們卻面臨著共用CPU、記憶體、設備等問題。有共用就會有資源歸屬權的衝突,既然可預見到衝突就得提前預防,怎麼預防呢?這就需要有專門的模塊來管理規避由共用產生的衝突問題,比如CPU管理、記憶體管理、設備管理等,這些模塊是我的靈魂,也是以後主要圍繞的發展方向。   雖然比起單道時期的我性能得到極大提升,但人嘛畢竟是不知足的,機器也一樣。我的平均周轉時間還有很大的改善空間,周轉時間呢,是指從作業提交給系統到執行完畢所花費的時間,而平均周轉時間是指“所有作業的時間總和與作業總數的比值”,平均周轉時間越小意味著性能越高。減少該時間最有效的方式就是調整調度策略,讓所有作業儘可能快的執行完畢,調度策略相對複雜,以後的章節再給大家講解。除平均周轉時間外,與用戶交互能力的提升也是我的重中之重,現在的我只能同時與一個程式員進行交流,但這是遠遠不夠的,要和人類長期打交道,他們的滿意度才是我邁向成功的最高準則。  

分時操作系統

為解決人類強烈的交互欲望,努力修煉的我終於練就了一套絕世武功——時間片輪轉法。這是一套極強的掌法,用戶可以通過若幹個終端連接到我這裡,我按一定時間間隔輪流的為各個終端服務,由於我極快的處理速度,用戶完全無法感知我做了什麼手腳,以至於他們認為我只為他們本人服務,而現在每天打游戲的你仍然在走著我的套路/滑稽,正所謂“天下武功唯快不破”,而這種戲弄你們的感覺讓我奇爽無比。  

實時操作系統

如果說分時的我一定要有缺陷的話,那麼在某些場景下公平的分時就是我的缺陷。剛纔講到分時是用時間片輪轉法輪流的為每個用戶服務,雖能誆得了小白,但在高精尖領域不太適用,比如航空航天、海底探測,絲毫的處理延遲可能會導致無法輓回的後果,想要解決延遲,時間片就不能過於均衡,優先順序高的要先執行,但總執行優先順序高的又會導致低權重的一直得不到執行,或是兩個同樣高優先順序的作業因互搶資源發生死鎖,聽起來很複雜吧,但這就是調度策略的藝術之處。不過我一時半會也解釋不清楚,要不就先到這裡吧,我要關機了,以下是我為你們整理的思維導圖,拜拜。


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

-Advertisement-
Play Games
更多相關文章
  • 什麼是EF? ADO.NET Entity Framework 是一個對象-關係的映射架構。 它支持直接定義完全獨立於資料庫結構的實體類,並把它們映射到資料庫的表和關係上。 三種編程模型: 資料庫優先開發模式(Database First Development) 模型優先開發模式(Model Fi ...
  • " 【.NET Core項目實戰 統一認證平臺】開篇及目錄索引 " 上篇文章我介紹瞭如何在網關上增加自定義客戶端授權功能,從設計到編碼實現,一步一步詳細講解,相信大家也掌握了自定義中間件的開發技巧了,本篇我們將介紹如何實現自定義客戶端的限流功能,來進一步完善網關的基礎功能。 .netcore項目實戰 ...
  • ASP.NET -- WebForm -- Cookie的使用 Cookie是存在瀏覽器記憶體或磁碟上。 1. Test3.aspx文件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test3.aspx.cs" Inherits="T ...
  • Linux文件類型和Linux文件的文件名所代表的意義是兩個不同的概念。我們通過一般應用程式而創建的比如file.txt、file.tar.gz ,這些文件雖然要用不同的程式來打開,但放在Linux文件類型中衡量的話,大多是常規文件(也被稱為普通文件)。 一. 文件類型 Linux文件類型常見的有: ...
  • master資料庫已投入生產一段時間後,做主從複製的操作記錄 環境: master庫:172.18.237.13slave庫:172.18.237.14 mysql版本說明: master:mysql 5.6.33 slave:mysql 5.6.35 我到公司的時候已經裝了5.6.33版本,找了很 ...
  • 1.Linux修改管理員密碼:打開終端:1. 重啟 2.進入內核登陸系統點擊e3.進入系統救援界面,定位Linux16所在行,找到ro 後刪除,在此位置添加一條命令: 4.點擊Ctrl + x進入內核編輯界面5.輸入: 6.輸入: 來設置語言格式7.輸入: 後輸入2次密碼8.輸入: 讓密碼生效9.點 ...
  • 這是一篇介紹如何用樹莓派使用PN532的隨筆,介紹了具體的使用步驟。 首先介紹一下: ①、IC卡是非接觸式的智能卡,裡面一般是一個方形線圈和一個小晶元(用強光照著可以看到)。M1卡是IC卡的一種,一般水卡、公交卡都是這種。UID卡是M1的複製子卡,與M1完全相容。M1卡0扇區的內容可讀不可寫,UID ...
  • 恢復內容開始 1.使用yum安裝 2.創建倉庫 1.創建成功後在svn下麵多了幾個文件夾。 2.特別關註一下conf文件夾,這個是存放配置文件的 3.配置passwd 賬號密碼 4.配置authz 許可權 5.配置svnserve.conf 5.啟動與停止 6.連接測試 這裡使用TortoiseSVN ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...