①.記憶體管理
程式的邏輯位址劃分為固定大小的頁(page)
實體地址劃分為同樣大小的幀(frame)
頁表 邏輯位址與實體地址的對映
二分段機制:滿足**的一些邏輯需求
資料共享,資料保護,動態鏈結
通過段表實現邏輯位址與實體地址的對映關係
每個段內部是連續記憶體分配,段和段之間是離散分配
三分段與分頁區別
頁處於記憶體利用率的角度提出的離散分配機制
段處於使用者角度,用於資料保護,資料隔離等用途的管理機制
頁的大小是固定的,作業系統決定;段大小不確定,使用者程式決定
四虛擬記憶體:通過把一部分暫時不用的記憶體資訊放到硬碟上
區域性性原理:程式執行的時候只有部分必要的資訊轉入記憶體
記憶體中暫時不需要的內容放到硬碟上
系統似乎提供了比實際記憶體大得多的容量,稱之為虛擬記憶體
四.記憶體抖動
記憶體抖動(thrashing)一般是記憶體分配演算法不好,記憶體太小或者程式的演算法不佳引起的頁面頻繁地從記憶體調入/調出的行為。
[即本質是頻繁的頁排程行為]
頻繁的頁排程,程序不斷產生活頁中斷
置換乙個頁,又不斷再次需要這個頁
執行程式太多,頁面替換策略不好,終止程序或者增加物理記憶體
②.程序的三種基本狀態:
1>就緒( ready)狀態:當程序已分配到除cpu以外的所有必要的資源,只要獲得處理機便可立即執行,這時的程序狀態稱為就緒狀態。
2>執行( running)狀態:當程序已獲得處理機,其程式正在處理機上執行,此時的程序狀態稱為執行狀態。
3>阻塞( blocked)狀態:正在執行的程序,由於等待某個事件發生而無法執行時,便放棄處理機而處於阻塞狀態。引起程序阻塞的事件可以有多種,例如,等待i/o完成、申請緩衝區不能滿足、等待信件(訊號)等。
③python操作
一python哪些操作是執行緒安全的?
◆乙個操作可以在多執行緒環境中安全使用,獲取正確的結果
◆執行緒安全的操作好比執行緒是順序執行而不是併發執行的
i +=1
◆一般如果涉及到寫操作需要考慮如何讓多個執行緒安全訪問資料
二如何保證執行緒安全:
互斥量(鎖):通過互斥機制防止多個執行緒同時訪問公共資源
訊號量:控制同一時刻多個執行緒訪問同乙個資源的執行緒數
事件(訊號):通過通知的方式保持多個執行緒同步
三程序間通訊的方式
共享記憶體,訊號量,套接字:最常用,web應用
四python中如何使用多執行緒
theading模組
◆threading.thread類用來建立執行緒
◆start()方法啟動執行緒
◆可以用join()等待執行緒結束
五python中如何使用多程序
python有gil,可以用多程序實現cpu密集程式
◆ multiprocessing多程序模組
◆ multiprocessing.process類實現多程序
◆ 一般用在cpu密集程式裡,避免gil的影響
④.記憶體洩露
一般我們常說的記憶體洩漏是指堆記憶體的洩漏。堆記憶體是指程式從堆中分配的,大小任意的(記憶體塊的大小可以在程式執行期決定),使用完後必須顯式釋放的記憶體。應用程式一般使用malloc,realloc,new等函式從堆中分配到一塊記憶體,使用完後,程式必須負責相應的呼叫free或delete釋放該記憶體塊,否則,這塊記憶體就不能被再次使用,我們就說這塊記憶體洩漏了。
⑤為什麼linux刪除操作比介面化操作快
1.影象介面化操作的程序切換
2 快取管理機制
3 磁碟
作業系統基本概念
一.程序的基本狀態 1.初始態 2.就緒態 3.執行態 4.等待態 5.終止 相互轉換關係如下 二.執行緒和程序區別 程序 是作業系統分配資源的最小單位 執行緒 是排程的基本單元,共享所在程序的檔案資料 有自己的棧和程式計數器 一般對於許多相同或相似的任務,傾向於將他們設計為多執行緒模型。因為程序占...
作業系統 基本概念
本文為自己學習 unix環境高階程式設計 而來的學習記錄 我的學習方 是將此書作為工具書來使用,當實際工作中遇到相關的問題針對性地學習知識圓點。基礎概念從嚴格意義上說,可講作業系統定義為一種軟體,它控制計算機硬體資源,提供程式執行環境。系統呼叫 共用函式庫 shell 應用程式 unix系統登陸 a...
作業系統基本概念
1 桌面作業系統 macos linux 2 伺服器作業系統 windows server 3 嵌入式作業系統 linux 4 移動裝置作業系統 iosandroid 基於linux 1965 年之前的時候,電腦並不像現在一樣普遍,它可不是一般人能碰的起的,除非是軍事或者學院的研究機構,而且當時大型...