學期2024-2025-1學號20241306《計算機基礎與程式設計》第9周學習總結
作業資訊
這個作業屬於哪個課程 | 2024-2025-1-計算機基礎與程式設計(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP)) |
---|---|
這個作業要求在哪裡 | 2024-2025-1計算機基礎與程式設計第9周作業(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13276)) |
這個作業的目標 | 作業系統責任,記憶體與程序管理,分時系統,CPU排程,檔案、檔案系統,檔案保護,磁碟排程 |
作業正文 |
教材學習內容總結
1.作業系統責任
作業系統的責任主要包括以下幾個方面:
確保系統穩定性和安全性:透過廣泛的測試和除錯,以及設計詳盡的錯誤日誌記錄和監控機制,確保系統長時間執行不出現重大問題,同時設計並實現多層次的安全機制,保護使用者資料和隱私。
最佳化系統效能:透過高效的資源管理機制和效能監測與調優,提高系統的整體效能和資源利用率,確保使用者獲得良好的使用體驗。
管理硬體和軟體資源:作業系統負責管理計算機的硬體資源,提供使用者與計算機硬體之間的介面,協調各個程式的執行,實現對計算機的有效管理。
處理異常情況:作業系統還需負責處理硬體故障、軟體錯誤或安全問題等異常情況,以確保系統的穩定執行。
2.記憶體與程序管理
記憶體與程序管理是作業系統中的兩個核心功能,它們共同確保計算機系統的高效、穩定執行。
程序管理:
負責建立、排程、同步、通訊和終止程序。
透過系統呼叫建立新程序,併為其分配地址空間和建立程序控制塊。
使用排程演算法選擇合適的程序分配CPU時間片。
提供機制實現程序間的同步和通訊,以及互斥訪問共享資源。
記憶體管理:
負責為程序分配合適的記憶體空間,滿足其需求。
採用連續記憶體分配、分頁記憶體分配等方式。
確保記憶體分配、地址變換、儲存保護、儲存共享和儲存擴充等功能的實現。
透過動態分配方式,根據程序需要申請附加記憶體空間,提高記憶體利用率。
3.分時系統
分時系統是一種允許多個使用者同時互動使用同一臺計算機的作業系統。
定義與原理:
分時系統透過時間片輪轉的方式,將計算機的系統處理機時間與記憶體空間按一定的時間間隔,輪流切換給各終端使用者的程式使用。
每個使用者感覺就像獨佔計算機一樣,因為時間間隔很短。
特點:
可有效增加資源的使用率,提高系統效率。
使用者可以透過終端以互動方式使用計算機,對系統資源進行時間上的分享。
實現:
設立時間片,每個使用者程式執行一個時間片後被中斷,CPU轉向下一個使用者程式。
作業系統負責時間片的分配和排程,保證每個使用者都能獲得及時響應。
4.CPU排程
CPU排程是對CPU進行分配的過程,它是多道程式作業系統的基礎。以下是關於CPU排程的詳細解釋:
排程層次:
高階排程:從外存的後備佇列中挑選作業調入記憶體,並建立程序。
中級排程:提高記憶體利用率,將暫時不能執行的程序調至外存等待,待條件滿足時再調入記憶體。
低階排程:從就緒佇列中選擇一個程序,將CPU分配給它,是最基本且頻率最高的排程。
排程目的:
充分利用CPU資源,避免浪費。
確保多個程序能併發執行,提高系統效率。
排程演算法:
分時系統常採用時間片輪轉法。
其他演算法還包括最高優先權、先來先服務、隨機等。
排程時機:
程序主動或被動放棄CPU時。
如程序正常終止、時間片用完、有更高優先順序的程序進入就緒佇列等。
5.檔案、檔案系統
檔案和檔案系統是電腦科學中的基本概念,對於資料的儲存、組織和管理至關重要。
檔案:
是資料的集合,是計算機儲存資料的基本單位。
可以包含文字、影像、音訊、影片、程式程式碼等各種型別的資料。
內部結構通常具有層次性,包含記錄和資料項,便於資料的組織和管理。
檔案系統:
是作業系統中統一管理資訊資源的一種軟體。
負責管理檔案的儲存、檢索、更新,提供安全可靠的共享和保護手段。
支援檔案的建立、刪除、開啟、關閉、讀寫等操作。
提供對檔案儲存空間的管理,以及檔案的保護和保密措施。
檔案系統還負責為使用者建立檔案、控制檔案的存取,並在使用者不再使用時撤銷檔案。
6.檔案保護
檔案保護是確保檔案資料安全性和完整性的重要措施。以下是幾種常見的檔案保護方法:
設定密碼保護:為檔案設定開啟密碼,只有輸入正確的密碼才能訪問檔案內容。這種方法可以有效防止未經授權的訪問。
使用只讀模式:將檔案設定為只讀模式,他人可以開啟檔案檢視內容,但無法進行編輯。這有助於保護檔案不被意外修改。
加密檔案:透過加密技術保護檔案內容,即使檔案被非法獲取,也無法輕易讀取其中的資訊。
檔案隱藏與偽裝:透過修改檔案字尾或將其隱藏在壓縮檔案中,增加檔案被發現的難度,從而保護檔案安全。
7.磁碟排程
磁碟排程是作業系統中管理磁碟I/O請求的過程,旨在最佳化磁碟訪問效能和資源利用率。以下是關於磁碟排程的詳細解釋:
目的:
磁碟排程的主要目的是減少磁碟I/O操作的延遲,提高磁碟的訪問速度。
透過合理安排磁碟請求的執行順序,可以最佳化磁碟的旋轉和尋道時間,從而提高整體系統效能。
排程演算法:
先來先服務(FCFS):按請求到達的先後順序進行排程,簡單但可能不是最優。
最短尋道時間優先(SSTF):選擇距離磁頭當前位置最近的請求進行排程,以最小化尋道時間。
電梯演算法(SCAN):磁頭只沿一個方向移動,直到到達磁碟的一個端點,然後反向移動,同時處理在途中的請求。
迴圈掃描(C-SCAN):與SCAN類似,但磁頭在到達磁碟的一個端點後,會立即回到起點,並重新開始掃描。
效能考慮:
磁碟排程的效能受多種因素影響,包括磁碟的旋轉速度、尋道時間、I/O請求的到達模式等。
不同的排程演算法在不同的工作負載下可能表現出不同的效能。
實際應用:
在實際的作業系統中,磁碟排程演算法通常會結合其他最佳化技術,如快取、預取等,以進一步提高磁碟I/O效能。
磁碟排程也是資料庫系統、檔案系統等高層軟體中需要考慮的重要問題。
教材學習中的問題和解決過程(先問 AI)
- 問題1:陣列作函式引數需要注意什麼
- 問題1解決方案:
- 問題2:在C語言中,函式內如何獲取陣列大小
- 問題2解決方案:
- 問題3:比如在主函式里陣列的大小是由鍵盤輸入決定的,那麼陣列怎麼做函式引數才能遍歷
- 問題3解決方案:
如果在主函式中陣列的大小是由鍵盤輸入決定的,那麼陣列將是動態分配的,並且你需要將這個動態分配陣列的大小傳遞給將要處理陣列的函式。在C語言中,這通常透過傳遞一個指向陣列的指標和一個表示陣列大小的整數來實現。
以下是一個示例,展示瞭如何建立一個動態分配的陣列,並將其作為引數傳遞給一個函式進行遍歷:
Copy Code
include <stdio.h>
include <stdlib.h>
函式宣告,接收一個整數指標和一個整數大小
void traverseArray(int *arr, int size);
int main() {
int size;
printf("Enter the size of the array: ");
scanf("%d", &size);
// 動態分配陣列
int *arr = (int *)malloc(size * sizeof(int));
if (arr == NULL) {
fprintf(stderr, "Memory allocation failed\n");
return 1;
}
// 填充陣列(這裡只是簡單地賦值為0到size-1)
for (int i = 0; i < size; i++) {
arr[i] = i;
}
// 呼叫函式遍歷陣列
traverseArray(arr, size);
// 釋放動態分配的記憶體
free(arr);
return 0;
}
函式定義,接收一個整數指標和一個整數大小
void traverseArray(int *arr, int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
在這個示例中:
主函式main首先提示使用者輸入陣列的大小,並讀取這個值。
使用malloc函式動態分配一個整數陣列,大小為使用者輸入的值。
檢查malloc是否成功分配了記憶體。如果失敗,列印錯誤訊息並退出程式。
填充陣列,這裡只是簡單地將每個元素設定為其索引值。
呼叫traverseArray函式,將動態分配的陣列和陣列大小作為引數傳遞。
在traverseArray函式中,使用傳遞的大小來遍歷陣列,並列印每個元素。
最後,在main函式中釋放動態分配的記憶體,以避免記憶體洩漏。
基於AI的學習