【操作系統考點匯集】操作系統考點匯集

關于操作系統可能考察的知識點

操作系統基本原理

什么是操作系統?

操作系統是指控制和管理整個計算機系統的硬件和軟件資源,并合理地組織調度計算機的工作和資源的分配,以提供給用戶和它軟件方便的接口和環境,是計算機系統中最基本的系統軟件,總結一下就是:

  1. 操作系統(Operating System,簡稱 OS)是管理計算機硬件與軟件資源的程序,是計算機系統的內核與基?,是計算機系統資源的總管理者:處理器管理【進程管理】、存儲器管理【內存管理】、文件管理、設備管理【IO管理】
  2. 操作系統本質上是運?在計算機上的軟件程序
  3. 操作系統為?戶提供?個與系統交互的操作界? ,向上層提供方便易用的服務
  4. 操作系統分內核與外殼(我們可以把外殼理解成圍繞著內核的應?程序,?內核就是能操作硬件的程序)

內核負責管理系統的進程、內存、設備驅動程序、?件和?絡系統等等,決定著系統的性能和穩定性。是連接應?程序和硬件的橋梁。 內核就是操作系統背后?盒的核?

操作系統的四大特性

操作系統的四大特性是:并發、共享、虛擬、異步

串行、并發和并行的區別是什么

并發是指兩個或多個事件在同一時間間隔內發生,在多道程序環境下,一段時間內宏觀上有多個程序在同時執行,而在同一時刻,單處理器環境下實際上只有一個程序在執行,故微觀上這些程序還是在分時的交替進行。操作系統的并發是通過分時得以實現的,和串行以及并行的概念區別

  • 串行順序做不同事的能力:先洗衣服,洗完后做飯。弱雞。
  • 并發交替做不同事的能力:一會兒洗衣服,一會兒做飯,交替執行,但快如閃電。洗衣服的是一個(cpu)做飯的是一個(cpu),所以多核的情況下會非常快,在同一個時間段內每個cpu各司其職團戰。并發的實質是一個物理CPU(也可以多個物理CPU) 在若干道程序之間多路復用,并發性是對有限物理資源強制行使多用戶共享以提高效率。
  • 并行同時做不同事的能力:左手洗衣服右手做飯,在同一時刻同時做兩件事。單兵王。并行性指兩個或兩個以上事件或活動在同一時刻發生。在多道程序環境下,并行性使多個程序同一時刻可在不同CPU上同時執行。

核心區別:并發關注的是資源充分利用(也就是不讓cpu閑下來),并行關注的是一個任務被分解給多個執行者同時做,縮短這個任務的完成時間(也就是盡快做完這件事),操作系統的并發性是指計算機系統中同時存在多個運行著的程序,因此它具有處理和調度多個程序同時執行的能力。在操作系統中,引入進程的目的是使程序能并發執行。并行則是同時間同時刻有幾個程序同時運行,有幾核就就幾個程序在并行。單核CPU只能并發多個程序,多核CPU可以并發也可以并行【4核CPU可以并行4個程序,程序大于核心時就需要用到并發性】

什么是用戶態和核心態

根據進程訪問資源的特點,我們可以把進程在系統上的運?分為兩個級別:

  1. ?戶態(user mode) : ?戶態運?的進程或可以直接讀取?戶程序的數據。
  2. 核心態(kernel mode):可以簡單的理解核心態運?的進程或程序?乎可以訪問計算機的任何資源,不受限制

用戶態和核心態的調用切換是需要CPU切換的,是會消耗資源的

什么是系統調用,系統調用流程

我們運?的程序基本都是運?在?戶態,如果我們調?操作系統提供的核心態級別的?功能,就需要系統調?了
在這里插入圖片描述
在我們運?的?戶程序中,凡是與共享資源有關的操作(如?件管理、進程控制、內存管理、文件管理等),都必須通過系統調??式向操作系統提出服務請求,并由操作系統代為完成。這些系統調?按功能?致可分為如下?類:

  • 設備管理。完成設備的請求或釋放,以及設備啟動等功能。
  • ?件管理。完成?件的讀、寫、創建及刪除等功能。
  • 進程控制。完成進程的創建、撤銷、阻塞及喚醒等功能。
  • 進程通信。完成進程之間的消息傳遞或信號傳遞等功能。
  • 內存管理。完成內存的分配、回收以及獲取作業占?內存區??及地址等功能。

這樣可以保證系統的穩定性和安全性。系統調用有以下流程:

  • 執行傳參指令,將系統調用需要參數傳遞,發現特權指令
  • 執行陷入指令,引發內中斷,因此轉入內中斷相應處理程序,也就是系統調用入口
  • CPU切換到核心態
  • 依據參數執行系統調用,執行特權指令,執行完成
  • CPU轉回用戶態

系統調用結束,可以看的出,這里用到了內中斷

操作系統進程管理

進程和線程的區別是什么

進程和線程的主要概念如下:

  • 進程,每個進程都有獨立的代碼和數據空間(進程上下文),進程間的切換會有較大的開銷,一個進程包含1–n個線程。進程是操作系統進行資源分配的單位,多進程是指操作系統能同時運行多個任務(程序)。
  • 線程,同一類線程共享代碼和數據空間【堆和方法區】,每個線程有獨立的運行棧【本地方法棧、虛擬機棧】和程序計數器(PC),線程切換開銷小。進程中獨立操作的執行單元。多線程是指在同一程序中有多個順序流在并發執行
  • 在引入線程的操作系統中,通常都是把進程作為分配資源的基本單位,而把線程作為獨立運行和獨立調度的基本單位

詳細區別和相同點歸納如下

  • 在狀態變化上:線程和進程一樣分為五個階段,創建、就緒、運行、阻塞、終止
  • 地址空間和其它資源:進程間相互獨立,同一進程的各線程間共享,某進程內的線程在其它進程不可見
  • 通信:進程間通信IPC,線程間可以直接讀寫進程數據段(如全局變量)來進行通信——需要進程同步和互斥手段的輔助,以保證數據的一致性。
  • 調度和切換:線程上下文切換比進程上下文切換要快得多
  • 在多線程操作系統中,進程不是一個可執行的實體,只是作為分配資源的基本單位,線程作為獨立運行和獨立調度的基本單位

線程和進程最?的不同在于基本上各進程是獨?的,?各線程則不?定,因為同?進程中的線程極有可能會相互影響

進程有哪幾種狀態,狀態如何轉換

進程有五種狀態:創建、就緒、運行、阻塞、終止

  • 創建狀態(new) :進程正在被創建,尚未到就緒狀態。
  • 就緒狀態(ready) :進程已處于準備運?狀態,即進程獲得了除了處理器之外的?切所需資源,?旦得到處理器資源(處理器分配的時間?)即可運?。
  • 運?狀態(running) :進程正在處理器上上運?(單核 CPU 下任意時刻只有?個進程處于運?狀態)。
  • 阻塞狀態(waiting) :?稱為等待狀態,進程正在等待某?事件?暫停運?如等待某資源為可?或等待 IO 操作完成。即使處理器空閑,該進程也不能運?。
  • 結束狀態(terminated) :進程正在從系統中消失。可能是進程正常結束或其他原因中斷退出運?

如下圖所示:

進程間的通信方式

進程間通信的IPC方式分為如下7種:

  • 管道/匿名管道(Pipes) :?于具有親緣關系的??進程間或者兄弟進程之間的通信。
  • 有名管道(Names Pipes) : 匿名管道由于沒有名字,只能?于親緣關系的進程間通信。為了克服這個缺點,提出了有名管道。有名管道嚴格遵循先進先出FIFO。有名管道以磁盤?件的?式存在,可以實現本機任意兩個進程通信
  • 信號(Signal) :信號是?種?較復雜的通信?式,?于通知接收進程某個事件已經發?
  • 消息隊列(Message Queuing) :消息隊列是消息的鏈表,具有特定的格式,存放在內存中并由消息隊列標識符標識。管道和消息隊列的通信數據都是先進先出的原則。與管道(?名管道:只存在于內存中的?件;有名管道:存在于實際的磁盤介質或者?件系統)不同的是消息隊列存放在內核中,只有在內核重啟(即,操作系統重啟)或者顯示地刪除?個消息隊列時,該消息隊列才會被真正的刪除。消息隊列可以實現消息的隨機查詢,消息不?定要以先進先出的次序讀取,也可以按消息的類型讀取.? FIFO 更有優勢。消息隊列克服了信號承載信息量少,管道只能承載?格式字節流以及緩沖區大小受限等缺點
  • 信號量(Semaphores) :信號量是?個計數器,?于多進程對共享數據的訪問,信號量的意圖在于進程間同步。這種通信?式主要?于解決與同步相關的問題并避免競爭條件。
  • 共享內存(Shared memory) :使得多個進程可以訪問同?塊內存空間,不同進程可以及時看到對?進程中對共享內存中數據的更新。這種?式需要依靠某種同步操作,如互斥鎖和信號量等。可以說這是最有?的進程間通信?式。
  • 套接字(Sockets) : 此?法主要?于在客戶端和服務器之間通過?絡進?通信。套接字是?持TCP/IP 的?絡通信的基本操作單元,可以看做是不同主機之間的進程進?雙向通信的端點,簡單的說就是通信的兩?的?種約定,?套接字中的相關函數來完成通信過程

操作系統中進程的調度算法有哪些

為了確定?先執?哪個進程以及最后執?哪個進程以實現最? CPU 利?率,計算機科學家已經定義了?些算法,它們是:

  • 先到先服務(FCFS)調度算法 : 從就緒隊列中選擇?個最先進?該隊列的進程為之分配資源,使它?即執?并?直執?到完成或發?某事件?被阻塞放棄占? CPU 時再重新調度。
  • 短作業優先(SJF)的調度算法 : 從就緒隊列中選出?個估計運?時間最短的進程為之分配資源,使它?即執?并?直執?到完成或發?某事件?被阻塞放棄占? CPU 時再重新調度。
  • 時間?輪轉調度算法 : 時間?輪轉調度是?種最古?,最簡單,最公平且使?最?的算法,?稱 RR(Round robin)調度。每個進程被分配?個時間段,稱作它的時間?,即該進程允許運?的時間。
    多級反饋隊列調度算法 :前?介紹的?種進程調度的算法都有?定的局限性。如短進程優先的調度算法,僅照顧了短進程?忽略了?進程 。多級反饋隊列調度算法既能使?優先級的作業得到響應?能使短作業(進程)迅速完成。因?它是?前被公認的?種較好的進程調度算法,UNIX 操作系統采取的便是這種調度算法。
    優先級調度為每個流程分配優先級,?先執?具有最?優先級的進程,依此類推。具有相同優先級的進程以 FCFS ?式執?。可以根據內存要求,時間要求或任何其他資源要求來確定優先級。

線程間的同步方式有哪些

線程同步是兩個或多個共享關鍵資源的線程的并發執?。應該同步線程以避免關鍵的資源使?沖突。操作系統?般有下?三種線程同步的?式:

  • 互斥量(Mutex):采?互斥對象機制,只有擁有互斥對象的線程才有訪問公共資源的權限。因為互斥對象只有?個,所以可以保證公共資源不會被多個線程同時訪問。?如 Java 中的synchronized 關鍵詞和各種 Lock 都是這種機制。
  • 信號量(Semphares) :它允許同?時刻多個線程訪問同?資源,但是需要控制同?時刻訪問此資源的最?線程數量、
  • 事件(Event) :Wait/Notify:通過通知操作的?式來保持多線程同步,還可以?便的實現多線程優先級的?較操作

操作系統存儲管理

分?機制和分段機制有哪些共同點和區別呢?

分?機制和分段機制的共同點 :

  • 分?機制和分段機制都是為了提?內存利?率,減少內存碎?
  • ?和段都是離散存儲的,所以兩者都是離散分配內存的?式。但是,每個?和段中的內存是連續的

分?機制和分段機制的區別:

  • ?的??是固定的,由操作系統決定;?段的??不固定,取決于我們當前運?的程序
  • 分?僅僅是為了滿?操作系統內存管理的需求,?段是邏輯信息的單位,在程序中可以體現為代碼段,數據段,能夠更好滿??戶的需要。

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

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

相關文章

Python土力學與基礎工程計算.PDF-鉆探泥漿制備

Python 求解代碼如下: 1. rho1 2.5 # 黏土密度,單位:t/m 2. rho2 1.0 # 泥漿密度,單位:t/m 3. rho3 1.0 # 水的密度,單位:t/m 4. V 1.0 # 泥漿容積,單位:…

神經網絡基礎-神經網絡補充概念-53-將batch norm擬合進神經網絡

代碼實現 import numpy as np import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, BatchNormalization, Activation from tensorflow.keras.optimizers import SGD# 生成隨機數據 np.random.seed(0) X np.…

【0基礎入門Python筆記】一、python 之基礎語法、基礎數據類型、復合數據類型及基本操作

一、python 之基礎語法、基礎數據類型、復合數據類型及基本操作 基礎語法規則基礎數據類型數字類型(Numbers)字符串類型(String)布爾類型(Boolean) 復合數據類型List(列表)Tuple&…

代碼隨想錄DAY62

這個移動0的問題還是比較重要的 因為涉及到一種思想&#xff1a;快慢指針&#xff01; class Solution { public: void moveZeroes(vector<int>& nums) { int slow0,fast0; for(;fast<nums.size();fast){ if(nums[fast]!0){ swap(nums[slow],nums[fast]); slow;…

Kafka 什么速度那么快

批量發送消息 Kafka 采用了批量發送消息的方式&#xff0c;通過將多條消息按照分區進行分組&#xff0c;然后每次發送一個消息集合&#xff0c;看似很平常的一個手段&#xff0c;其實它大大提升了 Kafka 的吞吐量。 消息壓縮 消息壓縮的目的是為了進一步減少網絡傳輸帶寬。而…

故障012:定時備份作業-6007懸案

故障012&#xff1a;定時備份作業-6007懸案 1. 問題描述2. 解決過程2.1 大膽推想2.2 找規律2.3 嘗試換掉AP2.4 檢查資源限制2.5 資源放寬SYSDBA 3. 精神感悟 DM技術交流QQ群&#xff1a;940124259 1. 問題描述 詭異的現象總是伴隨著隱藏的功能被打開&#xff0c;可能耽誤你很…

比ChatGPT更強的星火大模型V2版本發布!

初體驗 測試PPT生成 結果&#xff1a; 達到了我的預期&#xff0c;只需要微調就可以直接交付&#xff0c;這點比ChatGPT要強很多. 測試文檔問答 結果&#xff1a; 這點很新穎&#xff0c;現在類似這種文檔問答的AI平臺收費都貴的離譜&#xff0c;星火不但免費支持而且效果也…

opencv圖片換背景色

#include <iostream> #include<opencv2/opencv.hpp> //引入頭文件using namespace cv; //命名空間 using namespace std;//opencv這個機器視覺庫&#xff0c;它提供了很多功能&#xff0c;都是以函數的形式提供給我們 //我們只需要會調用函數即可in…

uniapp評論列表插件獲取

從評論列表&#xff0c;回復&#xff0c;點贊&#xff0c;刪除&#xff0c;留言板 - DCloud 插件市場里導入&#xff0c;并使用。 代碼樣式優化及接入如下&#xff1a; <template><view class"hb-comment"><!-- 閱讀數-start --><view v-if&q…

5.利用matlab完成 符號矩陣的轉置和 符號方陣的冪運算(matlab程序)

1.簡述 Matlab符號運算中的矩陣轉置 轉置向量或矩陣 B A. B transpose(A) 說明 B A. 返回 A 的非共軛轉置&#xff0c;即每個元素的行和列索引都會互換。如果 A 包含復數元素&#xff0c;則 A. 不會影響虛部符號。例如&#xff0c;如果 A(3,2) 是 12i 且 B A.&#xff0…

java中excel文件下載

1、System.getProperty(user.dir) 獲取的是啟動項目的容器位置 2、 Files.copy(sourceFile.toPath(), destinationFile.toPath(), StandardCopyOption.REPLACE_EXISTING); StandardCopyOption.REPLACE_EXISTING 來忽略文件已經存在的異常&#xff0c;如果存在就去覆蓋掉它Sta…

00-認識C++

2、認識C 2.1、例子 一個簡單的C例子 #include <iostream>int main() {using namespace std; //使用名稱空間cout << "Com up and C me some time.";cout << endl; //換行符&#xff0c;還可以cout<<"\n";cout <…

驅動DAY5

1.實現設備文件和設備的綁定&#xff0c;編寫LED驅動 2.復習競態的解決方法和阻塞IO實現 第一個任務 頭文件 #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;u…

【MySQL系列】表內容的基本操作(增刪查改)

「前言」文章內容大致是對MySQL表內容的基本操作&#xff0c;即增刪查改。 「歸屬專欄」MySQL 「主頁鏈接」個人主頁 「筆者」楓葉先生(fy) 目錄 一、MySQL表內容的增刪查改1.1 Create1.1.1 單行數據全列插入1.1.2 多行數據指定列插入1.1.3 插入否則更新1.1.4 數據替換 1.2 Ret…

MS Word表格寬度自適應

x.1 問題&#xff1a; 你的表格可能并沒有占滿整行&#xff0c;且右對齊&#xff0c;例如如下&#xff0c; x.2 解決方式 這個時候你想右對齊&#xff0c;你可以這么操作&#xff0c;點左上角的十字全選表格&#xff0c; 在布局里選擇自動對齊&#xff0c; 對齊方式選擇居中右…

git日常操作-案例

文章目錄 查看tag對應版本tag一個版本切換到指定tag查看遠程有那些分支 查看tag對應版本 要查看 Git 倉庫中標簽&#xff08;tag&#xff09;對應的版本&#xff0c;可以使用以下命令&#xff1a; git show <tag>將 替換為你要查看的標簽名稱。該命令將顯示與標簽對應的…

springBoot是如何實現自動裝配的

目錄 1 什么是自動裝配 2 Spring自動裝配原理 2.1 SpringBootConfiguration ?編輯 2.2 EnableAutoConfiguration 2.2.1 AutoConfigurationPackage 2.2.2 Import({AutoConfigurationImportSelector.class}) 2.3 ComponentScan 1 什么是自動裝配 自動裝配就是將官方寫好的的…

vue-cli前端工程化——創建vue-cli工程 router版本的創建 目錄結構 案例初步

目錄 引出創建vue-cli前端工程vue-cli是什么自動構建創建vue-cli項目選擇Vue的版本號 手動安裝進行選擇創建成功 手動創建router版多了一個router 運行測試bug解決 Vue項目結構main.jspackage.jsonvue.config.js Vue項目初步hello案例 總結 引出 1.vue-cli是啥&#xff0c;創建…

Redis Geo 數據類型在移動互聯網中的應用

Redis Geo 數據類型在移動互聯網中的應用 一、簡介1 Redis2 數據類型 二、Geo 數據類型1 Geo 數據類型2 Geo 數據類型的存儲方式3 Geo 數據類型的常用命令 三、Geo 數據類型應用場景1 附近的人和地點功能2 出租車實時定位3 物流配送服務 四、Redis Geo 數據優化策略1 降低查詢延…

android手勢事件

與手勢事件有關的方法 dispatchTouchEvent()&#xff1a;該方法將觸摸事件分發給相應的視圖或視圖組。onInterceptTouchEvent()&#xff1a;該方法用于判斷是否需要攔截觸摸事件&#xff0c;如果需要攔截&#xff0c;則返回 true&#xff0c;否則返回 false。onTouchEvent()&a…