2024-2025-1 20241408陳燁南《計算機基礎與程式設計》第九周學習總結

yenai發表於2024-11-24

2024-2025-1 20241408陳燁南《計算機基礎與程式設計》第九周學習總結

這個作業屬於哪個課程 2024-2025-1-計算機基礎與程式設計
這個作業要求在哪裡 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK09
這個作業的目標 作業系統責任、記憶體與程序管理、分時系統、CPU排程、檔案、檔案系統、檔案保護、磁碟排程
作業正文 本部落格連結

教材學習內容總結

電腦科學概論(第七版)第10、11章總結

第10章:作業系統基礎

  1. 作業系統的概念與功能
    作業系統定義:作業系統是管理計算機硬體和軟體資源的程式,它提供使用者與計算機硬體之間的介面。作業系統的主要功能是資源管理(CPU、記憶體、外設等)和任務排程。
    作業系統的核心功能:
    程序管理:管理和排程計算機上的各個程序。
    記憶體管理:有效分配、回收記憶體,支援虛擬記憶體技術。
    檔案系統管理:管理儲存裝置中的檔案,提供檔案的存取、儲存與保護功能。
    裝置管理:管理計算機外部裝置的輸入輸出操作。
    使用者介面:為使用者提供與計算機互動的介面。
  2. 程序管理
    程序的定義:程序是程式的一個執行例項,每個程序都有獨立的記憶體空間和執行狀態。
    程序狀態:程序有不同的狀態,包括執行態、就緒態、阻塞態等。
    程序排程:作業系統根據特定的排程演算法來決定哪個程序在何時執行,常見的排程演算法有:
    先來先服務(FCFS)
    短作業優先(SJF)
    優先順序排程
    時間片輪轉(RR)
  3. 記憶體管理
    記憶體分配:作業系統負責分配記憶體給程序使用,常見的記憶體分配方式有:
    連續記憶體分配:為每個程序分配一個連續的記憶體塊。
    分頁系統:將記憶體劃分為固定大小的頁,程序使用頁來儲存資料。
    分段系統:將程序的記憶體劃分為若干段(如程式碼段、資料段等)。
    虛擬記憶體:透過硬碟空間模擬出比實體記憶體更大的記憶體空間,讓程式看起來可以使用比實際實體記憶體更多的記憶體。
  4. 檔案系統
    檔案的定義與管理:檔案是資料儲存的基本單位,作業系統需要管理檔案的建立、刪除、讀取和寫入。
    檔案的組織方式:作業系統為檔案提供目錄結構,檔案可以按照檔名進行組織,並支援對檔案進行許可權控制(如讀、寫、執行許可權)。
    檔案儲存:檔案通常儲存在硬碟或其他外部儲存裝置上,作業系統透過檔案系統來訪問和管理這些檔案。
  5. 輸入輸出管理
    輸入輸出裝置:包括鍵盤、滑鼠、顯示器、硬碟等外部裝置。
    緩衝區管理:作業系統為I/O操作提供緩衝區,以提高資料傳輸的效率。
    I/O排程:作業系統透過排程演算法最佳化I/O操作的順序,以減少等待時間,提高效能。

第11章:資料庫系統

  1. 資料庫系統概述
    資料庫的定義:資料庫是一個有組織的資料集合,透過資料庫管理系統(DBMS)進行管理,提供高效的資料儲存、查詢、更新和管理功能。
    資料庫管理系統(DBMS):DBMS是一種軟體,它用於管理資料庫中的資料,提供資料存取、管理、更新等功能,確保資料的完整性、一致性和安全性。
  2. 資料模型
    層次模型:資料以樹形結構組織,記錄間有父子關係,適用於層次化的資料儲存。
    網狀模型:資料以圖形結構組織,記錄間可以有多對多的關係,比層次模型更靈活。
    關係模型:資料以二維表格形式組織,每個表由行(記錄)和列(欄位)組成。關係模型是目前最常用的資料模型,關聯式資料庫管理系統(RDBMS)採用此模型。
  3. 關聯式資料庫
    表(Relation):資料庫中的基本儲存單位。每張表包含若干列(屬性)和行(記錄)。
    主鍵(Primary Key):用來唯一標識每條記錄的欄位,保證表中每條記錄的唯一性。
    外來鍵(Foreign Key):用於建立表之間聯絡的欄位,它指向另一表的主鍵。
    資料完整性:包括實體完整性、參照完整性和域完整性等,保證資料在儲存和操作過程中的正確性和一致性。
  4. SQL語言
    SQL的定義:SQL(結構化查詢語言)是一種用於訪問和運算元據庫的標準語言。
    資料查詢(SELECT):從資料庫中查詢資料,支援過濾、排序、聚合等操作。
    資料操作:包括插入(INSERT)、更新(UPDATE)和刪除(DELETE)資料。
    資料定義:包括建立、修改和刪除表(CREATE、ALTER、DROP)。
    資料控制:用於控制使用者許可權,管理資料庫安全性(如GRANT、REVOKE)。
  5. 資料庫設計
    實體-關係模型(ER圖):一種圖形化的資料庫設計工具,用來描述資料庫中的實體及其之間的關係。
    規範化:透過消除冗餘資料、避免更新異常等方式,將資料庫設計為符合一定規範的結構。常見的規範化正規化有:
    第一正規化(1NF):要求資料表中的每列都是原子性的。
    第二正規化(2NF):在1NF的基礎上,要求消除部分依賴。
    第三正規化(3NF):在2NF的基礎上,要求消除傳遞依賴。
    C語言程式設計第8章:指標和陣列
  6. 指標基礎
    指標的定義:指標是儲存記憶體地址的變數,指標變數的值是另一個變數的地址。透過指標可以訪問和操作該地址所指向的資料。
    指標運算:指標可以進行加法、減法操作,例如,指標加1表示指向下一個同型別資料的記憶體地址。
    指標型別:指標的型別必須與所指向的資料型別一致。
  7. 指標與陣列的關係
    陣列名作為指標:陣列名實際上是指向陣列首元素的指標。
    透過指標訪問陣列元素:可以透過指標運算來訪問陣列的元素。例如,*(arr + i)等同於arr[i]。
    二維陣列與指標:二維陣列的元素可以透過指標操作進行訪問。二維陣列可以視為指向指標的指標(如int arr[3][4]可以視為int *arr[3])。
  8. 指標與函式
    透過指標傳遞引數:使用指標可以傳遞變數的地址,使得函式能夠修改傳入的變數。
    指標作為函式返回值:函式可以返回指標,返回動態分配的記憶體地址等。
  9. 動態記憶體分配
    動態記憶體分配函式:
    malloc(size_t size):分配一塊指定大小的記憶體,返回該記憶體的指標。
    calloc(size_t num, size_t size):分配指定數量和大小的記憶體,並初始化為0。
    realloc(void *ptr, size_t size):調整已經分配記憶體的大小。
    free(void *ptr):釋放之前分配的記憶體。
  10. 多維陣列與指標
    多維陣列:多維陣列本質上是指向指標的指標。二維陣列可以透過指標進行遍歷和訪問。
    ..C語言程式設計第8章:指標和陣列

C語言程式與設計

  1. 指標基礎
    指標的定義:指標是儲存記憶體地址的變數,指標變數的值是另一個變數的地址。透過指標可以訪問和操作該地址所指向的資料。
    指標運算:指標可以進行加法、減法操作,例如,指標加1表示指向下一個同型別資料的記憶體地址。
    指標型別:指標的型別必須與所指向的資料型別一致。
  2. 指標與陣列的關係
    陣列名作為指標:陣列名實際上是指向陣列首元素的指標。
    透過指標訪問陣列元素:可以透過指標運算來訪問陣列的元素。例如,*(arr + i)等同於arr[i]。
    二維陣列與指標:二維陣列的元素可以透過指標操作進行訪問。二維陣列可以視為指向指標的指標(如int arr[3][4]可以視為int *arr[3])。
  3. 指標與函式
    透過指標傳遞引數:使用指標可以傳遞變數的地址,使得函式能夠修改傳入的變數。
    指標作為函式返回值:函式可以返回指標,返回動態分配的記憶體地址等。
  4. 動態記憶體分配
    動態記憶體分配函式:
    malloc(size_t size):分配一塊指定大小的記憶體,返回該記憶體的指標。
    calloc(size_t num, size_t size):分配指定數量和大小的記憶體,並初始化為0。
    realloc(void *ptr, size_t size):調整已經分配記憶體的大小。
    free(void *ptr):釋放之前分配的記憶體。
  5. 多維陣列與指標
    多維陣列:多維陣列本質上是指向指標的指標。二維陣列可以透過指標進行遍歷和訪問。
    ..C語言程式設計第8章:指標和陣列
  6. 指標基礎
    指標的定義:指標是儲存記憶體地址的變數,指標變數的值是另一個變數的地址。透過指標可以訪問和操作該地址所指向的資料。
    指標運算:指標可以進行加法、減法操作,例如,指標加1表示指向下一個同型別資料的記憶體地址。
    指標型別:指標的型別必須與所指向的資料型別一致。
  7. 指標與陣列的關係
    陣列名作為指標:陣列名實際上是指向陣列首元素的指標。
    透過指標訪問陣列元素:可以透過指標運算來訪問陣列的元素。例如,*(arr + i)等同於arr[i]。
    二維陣列與指標:二維陣列的元素可以透過指標操作進行訪問。二維陣列可以視為指向指標的指標(如int arr[3][4]可以視為int *arr[3])。
  8. 指標與函式
    透過指標傳遞引數:使用指標可以傳遞變數的地址,使得函式能夠修改傳入的變數。
    指標作為函式返回值:函式可以返回指標,返回動態分配的記憶體地址等。
  9. 動態記憶體分配
    動態記憶體分配函式:
    malloc(size_t size):分配一塊指定大小的記憶體,返回該記憶體的指標。
    calloc(size_t num, size_t size):分配指定數量和大小的記憶體,並初始化為0。
    realloc(void *ptr, size_t size):調整已經分配記憶體的大小。
    free(void *ptr):釋放之前分配的記憶體。
  10. 多維陣列與指標
    多維陣列:多維陣列本質上是指向指標的指標。二維陣列可以透過指標進行遍歷和訪問。

基於AI的學習

image

程式碼除錯中的問題和解決過程

問題1:字串沒有正確倒序輸出
症狀: 程式輸出的字串順序與預期相反,即從字串的開頭開始輸出。
原因: 迴圈的起始條件設定錯誤,應該是 i = length - 1 而不是 i = 0。
解決: 檢查迴圈的起始條件,並確保它是從字串的最後一個字元開始。
問題2:輸出包含字串末尾的空字元
症狀: 字串正確倒序輸出了,但是末尾多了一個空字元。
原因: 字串在C語言中以空字元 '\0' 結尾,迴圈沒有正確地排除這個空字元。
解決: 確保迴圈在遇到空字元之前停止。可以透過檢查 str[i] != '\0' 來實現,或者更簡單地,使用 length - 1 作為迴圈的上限,因為 strlen 函式返回的長度不包括空字元。

學習進度條

程式碼行數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 200/200 2/2 20/20
第二週 300/500 2/4 18/38
第三週 500/1000 3/7 22/60
第四周 300/1300 2/9 10/70
第五週 300/1600 2/11 10/80
第六週 300/1900 2/13 10/90
第七週 300/2200 2/15 10/100
第八週 300/2500 2/17 10/110
第九周 300/2800 2/19 10/120

相關文章