計算機考研精煉 操作系統

第 14 章 操作系統概述

14.1 基本概念

14.1.1 操作系統的基本概念

????????如圖 14 - 1 所示,操作系統是計算機系統中的一個重要組成部分,它位于計算機硬件和用戶程序(用戶)之間,負責管理計算機的硬件資源,為用戶和應用程序提供一個統一的、友好的、安全的接口,使計算機能夠高效運行。
????????操作系統具有 4 個基本特征,包括并發性、共享性、虛擬性和異步性。并發性指的是操作系統可以在一段時間內處理多個任務。共享性指的是操作系統可以讓多個進程共享計算機中的各類資源。虛擬性指的是操作系統可以為每個進程提供一個虛擬的計算機環境,包括通過時分復用虛擬 CPU,通過空分復用虛擬內存等。異步性是指操作系統可以響應不同的事件并采取相應的措施,而不必等待前一個事件處理完成。這種事件可以是來自用戶的輸入、來自硬件設備的中斷、來自其他進程的信號等。例如,在一個多任務操作系統中,當一個進程被阻塞等待輸入時,操作系統可以切換到其他進程并繼續執行,而不必等待當前進程的輸入完成。當輸入完畢后,操作系統會再次切換回該進程并繼續執行。
????????顯然,如果要體現共享性,至少需要多個進程并發,而進程并發也必須共享資源,因此,虛擬性和異步性也需要依賴于并發性和共享性。由此可以說,并發性和共享性是操作系統最基本的兩個特征。

14.1.2 操作系統的發展歷程

????????操作系統的發展歷程可以追溯到 20 世紀 50 年代。最初的操作系統是批處理系統,隨后發展出分時系統、實時系統、分布式系統等多種類型的操作系統。現代操作系統一般具有多任務處理、多用戶支持、虛擬內存、文件系統、網絡支持等功能。批處理系統是過去 408 真題的重點,考生應該重點關注。由于近年 408 真題風格多變,與實時系統和分時系統相關的考題未必不會出現在未來的真題中。

14.1.3 程序運行環境

1. CPU 運行模式

????????CPU 運行模式分為內核模式和用戶模式兩種。內核模式下的程序可以訪問所有的系統資源,包括內核數據結構和硬件資源等;而用戶模式下的程序只能訪問受限的系統資源,不能直接訪問內核數據結構和硬件資源,必須通過系統調用等方式才能訪問這些資源。

2. 中斷和異常的處理

????????中斷和異常是操作系統處理外部事件的重要機制。中斷是由硬件設備發出的信號,表示設備已經完成了某個操作或發生了某個事件;異常則是由程序執行過程中遇到的錯誤或異常情況所觸發的事件。操作系統可以通過中斷和異常來響應外部事件,并采取相應的措施。
如圖 14 - 2 所示,中斷處理流程主要分為如下幾個步驟。
(1)測定是否有未響應的中斷信號。
(2)保護被中斷進程的 CPU 環境。
(3)轉入相應的中斷處理程序。
(4)中斷處理。
(5)恢復 CPU 的現場并退出中斷。

3. 系統調用

????????系統調用是程序訪問操作系統服務的一種機制。程序在用戶模式下通過系統調用向操作系統請求服務,例如讀 / 寫文件、創建進程、進程間通信等。系統調用是程序與操作系統之間的接口,操作系統根據系統調用提供相應的服務并返回結果。
圖 14 - 3 所示為系統調用的基本流程。
(1)應用程序通過系統調用向操作系統發起請求,這個過程需要傳遞系統調用參數。
(2)執行 trap 指令,使 CPU 從用戶模式轉為內核模式。
(3)操作系統在內核模式下執行系統服務。
(4)操作系統完成系統服務后,返回到用戶模式,繼續執行。

4. 程序的鏈接與裝入

????????程序的鏈接和裝入是指將程序中的模塊鏈接成一個可執行文件,并將可執行文件裝入內存中執行的過程。鏈接過程將程序中的各個模塊鏈接起來形成一個完整的程序,而裝入過程將可執行文件裝入內存中并分配相應的地址空間。程序的鏈接和裝入過程如圖 14 - 4 所示。

5. 程序運行時內存映像與地址空間

????????程序運行時,操作系統會為其分配一定的地址空間,包括代碼段、數據段和堆棧段等。代碼段存放程序的可執行代碼,數據段存放程序運行時所需的數據,堆棧段則用于存放程序的運行時棧。操作系統還會維護程序運行時的內存映像,包括代碼、數據、堆棧等的物理地址和虛擬地址的映射關系,以及頁面置換和內存保護等機制,以保證程序運行的安全性和穩定性。操作系統為每個進程分配獨立的虛擬地址空間,使每個進程都有自己獨立的地址空間,可以獨立地訪問內存中的數據。進程之間的地址空間是相互獨立的,每個進程只能訪問自己的地址空間,不能直接訪問其他進程的地址空間。

14.1.4 操作系統結構

????????根據應用場景的不同,操作系統可以設計成不同的結構,如圖 14 - 5 所示,宏內核和微內核就是兩種常見的結構。

1. 分層

????????分層式操作系統是一種將操作系統的不同功能劃分為多個層次的操作系統設計范式,每個層次負責一定的功能,層與層之間通過標準接口進行通信。分層式操作系統具有良好的模塊化結構和可擴展性,同時層次結構也有助于提高操作系統的可靠性和安全性。

2. 模塊化

????????模塊化操作系統是一種基于模塊化設計的操作系統,將操作系統的各個組件劃分為獨立的模塊,模塊之間通過標準接口進行通信。模塊化操作系統具有較好的可擴展性和可維護性,可以方便地添加新的功能模塊或替換已有的模塊,但由于模塊之間的耦合性較高,因此模塊化操作系統的性能和可靠性相對較差。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78928.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78928.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78928.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是基爾霍夫第一定律

基爾霍夫第一定律(Kirchhoffs First Law),也稱為基爾霍夫電流定律(Kirchhoffs Current Law,簡稱 KCL),是電路分析中最基礎的定律之一。它描述了電路中電流的守恒特性,適用于任何集總…

解決 RN Switch 組件在安卓端樣式很丑的問題

解決此種問題的方式有很多 可以導入原生庫react-native-switch 切圖 (會缺少動畫) 使用 js 組件 這里使用 js 繪制組件(原生體驗)解決此類問題 Switch.tsx import React, { useEffect, useRef, useState } from react; import { Animated, Pressabl…

【AI】【MCP】搭建私人王炸MCP自動化工作流

目錄 一、什么是MCP 二、MCP大集合 三、準備工作 3.1 安裝node.js 3.2 安裝vscode 3.3 安裝cline插件 3.3.1 安裝 3.3.2 配置Cline 四、配置MCP服務 4.1 Search-mcp服務 4.2 playwright-mcp 服務 前言:夢想組合,輕松辦公,告別手動&a…

Git 實操:如何使用交互式 Rebase 移除指定提交(真實案例分享)

在日常開發中,有時候我們提交了一些不想保留的記錄,比如測試代碼、錯誤的功能提交等。 ?? 在操作 4. 強制推送到遠程倉庫前的注意事項 強制推送(git push --force 或 git push -f)確實很強大但也危險,因為它會重寫…

11.Excel:函數

一 函數是什么 函數是定義好的公式。 單元格內輸入sum然后tab,框選要求和的范圍,然后回車鍵。 補充:公式。 公式以開頭,可以用于計算,返回數值。 分別點擊各個數值,中間用加號連接。這樣很不方便&#xff…

Springboot使用ThreadLocal提供線程局部變量,傳遞登錄用戶名

文章目錄 概述使用創建ThreadLocalUtil工具類在登錄攔截器中使用ThreadLocal存儲登錄用戶名在/userInfo接口中獲取登錄用戶名 注意事項參考視頻 概述 使用 創建ThreadLocalUtil工具類 utils/ThreadLocalUtil.java package org.example.utils;/*** ThreadLocal 工具類*/ Supp…

1399. 統計最大組的數目

1399. 統計最大組的數目 題目鏈接&#xff1a;1399. 統計最大組的數目 代碼如下&#xff1a; class Solution { public:int countLargestGroup(int n) {int res 0;unordered_map<int, int> um;int maxValue 0;for (int i 1;i < n;i) {string value to_string(i);…

VS Code 插件Git History Diff 使用

右上角 查看單個文件記錄

數學建模論文手的學習日常01

目錄 一.要寫的內容&#xff1a; 二.文章標題&#xff1a; 三.摘要&#xff08;非常非常非常重要&#xff09; 四、關鍵詞&#xff1a; 五、問題重述 六、模型假設 七、符號說明 八、模型的建立與求解 九、模型的分析與檢驗 十、模型的評價、改進與推廣 十一、參考…

深度學習: AI 體育領域

一、引言 在科技與體育深度融合的當下&#xff0c;AI 體育逐漸成為推動體育行業變革的重要力量。深度學習憑借其強大的數據分析與模式識別能力&#xff0c;為 AI 體育帶來了全新的發展機遇。從運動員動作分析到智能健身指導&#xff0c;從賽事預測到運動康復輔助&#xff0c;深…

在 Ubuntu24.04 LTS 上 Docker 部署英文版 n8n 和 部署中文版 n8n-i18n-chinese

一、n8n 簡介 n8n 是一個低代碼&#xff08;Low-Code&#xff09;工作流自動化平臺&#xff0c;可以幫助用戶以非常簡單的方式創建自動化流程&#xff0c;連接不同的應用程序和服務。n8n的設計理念是為了讓復雜的工作流變得簡單易用&#xff0c;同時也支持高度的自定義&#xf…

《系統分析師-第三階段—總結(八)》

背景 采用三遍讀書法進行閱讀&#xff0c;此階段是第三遍。 過程 本篇總結第15章的內容 第15章 總結 系統運行與維護&#xff0c;系統經過測試交付之后&#xff0c;進入運行維護階段&#xff0c;維護分為系統運行、故障維護、系統評價和系統相關的策略。 疑問&#xff1a;…

LeetCode 1295.統計位數為偶數的數字:模擬

【LetMeFly】1295.統計位數為偶數的數字&#xff1a;模擬 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/find-numbers-with-even-number-of-digits/ 給你一個整數數組 nums&#xff0c;請你返回其中位數為 偶數 的數字的個數。 示例 1&#xff1a; 輸入&#xff1…

DDD是什么?電商系統舉例

一、DDD的基本概念 領域驅動設計&#xff08;Domain-Driven Design&#xff0c;簡稱DDD&#xff09;是由Eric Evans提出的一種軟件開發方法論&#xff0c;旨在應對復雜業務系統的設計和實現。它的核心思想是將軟件的設計與業務領域緊密結合&#xff0c;通過深入理解業務需求&a…

K8S ConfigMap 快速開始

一、什么是 ConfigMap&#xff1f; ConfigMap 是 Kubernetes 中用于存儲非敏感配置數據的 API 對象&#xff0c;支持以鍵值對&#xff08;Key-Value&#xff09;或文件的形式存儲配置&#xff0c;允許將配置與鏡像解耦&#xff0c;實現配置的集中管理和動態更新。 二、主要用…

Prometheus使用Recoding Rules優化性能

通過PromQL可以實時對Prometheus中采集到的樣本數據進行查詢&#xff0c;聚合以及其它各種運算操作。而在某些PromQL較為復雜且計算量較大時&#xff0c;直接使用PromQL可能會導致Prometheus響應超時的情況。這時需要一種能夠類似于后臺批處理的機制能夠在后臺完成這些復雜運算…

C++ RAII 編程范式詳解

C RAII 編程范式詳解 一、RAII 核心概念 RAII&#xff08;Resource Acquisition Is Initialization&#xff0c;資源獲取即初始化&#xff09; 是 C 的核心編程范式&#xff0c;通過將資源生命周期與對象生命周期綁定實現安全、自動化的資源管理。 核心原則&#xff1a; 資源…

Rust 學習筆記:枚舉與模式匹配

Rust 學習筆記&#xff1a;枚舉與模式匹配 Rust 學習筆記&#xff1a;枚舉與模式匹配定義枚舉&#xff08;Enum&#xff09;枚舉變量Option 枚舉及其相對于 NULL 的優勢match 和枚舉與 Option\<T\> 匹配match 應該是詳盡的Catch-all 模式和 _ 占位符使用 if let 和 let e…

《WebGIS之Vue進階教程》(13)ref的實現

1 為什么需要ref 由于proxy只能代理引用類型數據(如: 對象, 數組, Set, Map...), 需要一種方式代理普通類型數據(String, Number, Boolean...) 設計ref主要是為了處理普通類型數據, 使普通類型數據也具有響應式 除此之外, 通過reactive代理的對象可能會出現響應丟失的情況. 使…

Redis 緩存并發問題深度解析:擊穿、雪崩與穿透防治指南

Redis-緩存并發 引言&#xff1a;緩存&#xff0c;高性能架構的基石與并發挑戰一、 緩存擊穿&#xff1a;熱點 Key 失效引發的“單點風暴”1.1 什么是緩存擊穿&#xff1f;1.2 緩存擊穿的風險1.3 緩存擊穿的解決方案1.3.1 互斥鎖&#xff08;Mutex Lock&#xff09;/ 分布式鎖 …