2017年5月31日 星期三

[公開課閒聊] 計算機概論第六講 Operating systems - 台大 于天立

Ped隨手摘

  1. 作業系統組成部分
    1. file manager
    2. device drivers  驅動程式
    3. memory manger
      1. 包含主記憶體與虛擬記憶體
      2. 當主記憶體不足時會將一些暫時用不到的資料先存到硬碟中
    4. scheduler 
    5. dispatcher
  2. linux
    1. 指的只是 kernel 其實不包含 GUI 之類的東西
    2. made by GNU
  3. MacOS
    1. base on BSD
  4. boot strapping (booting) 含意: 不求人
    1. boot loader 會去把在 ROM 中的作業系統載入到主記憶體中後再將控制權交給作業系統
    2. BIOS可以和 boot loader 溝通
  5. process
    1. process state
      1. program counter 程式跑到第幾行
      2. general purpose register  register進行的動作
      3. associated memory cell 記憶體位置
    2. process table
      1. 記憶體位置
      2. 優先順序
      3. waiting / ready

2017年5月29日 星期一

[公開課閒聊] 計算機概論第五講 Data manipulation & operating systems - 台大 于天立

Ped隨手摘


  1. pipelining
    1. 不同行為用到的電路是不同的,此技術是讓不同行為可以同時進行 ex.fetch、decode、execute 同時跑
  2. parallel 平行運算
    1. 名詞解釋
      1. MIMD (mutiple instruction mutiple data) 多個指令對多個動作 ex.pipelining  
      2. SIMD(single instruction mutiple data) 此種方式常用在多媒體上,比如一個指令讓所有像素亮度調高
  3. distributed 分散式系統
    1. 不同電腦間利用網路同時進行處理不同任務
  4. 平行與分散  常見的議題
    1. data dependency 接下來的計算依賴前一步計算的結果
    2. load balancing 工作平均分配
    3. synchronization  同步
    4. reliability 可靠性
  5. 多核心 CPU 因為資料 可進行平行運算的比例與不同核心間溝通的時間造成多核心運算加速有個極限
  6. 作業系統最大的目的
    1. 讓系統可以最大化的使用運算資源,平順的切換不同任務的進行
  7. 作業系統類別
    1. real-time  即時反應
    2. time-sharing and mutitasking  使用者可同時執行多個任務,系統切分每個任務可占用的執行時間
    3. multiprocessor 使用多核心平行進行多個任務
  8. user 僅能透過 shell 與 kernel 溝通 包含文字與圖形介面


2017年5月27日 星期六

[公開課閒聊] 計算機概論第四講 Data manipulation - 台大 于天立

Ped隨手摘

  1. 電腦的結構
    1. Registers (暫存器)
      1. 通常用 SRAM
      2. 常見的有
        1. program counter
          1. 程式在記憶體中目前執行到的位置
        2. instruction register
          1. 從記憶體中取出現在正要執行的指令
    2. Bus (連接記憶體和CPU)
    3. Motherboard (主機板)
    4. CPU
    5. Main Memory
  2. CPU
    1. ALU   Arithmetic/logic unit  算數/邏輯運算元
    2. Control unit 
  3. Machine Instructions (機械指令/機械碼)
    1. 利用指令集操作CPU
    2. 組合語言(assembly)和機械指令原則上是一對一的對應
    3. 大概會有的指令
      1. LOAD 從記憶體取出資料
      2. STORE 把資料放回主記憶體
      3. I/O  輸入輸出
      4. 加減乘除
      5. SHIFT
        1. logic shift 移動方向的最後一個bit補零
        2. Arithmetic shift 第一個位(正負數) 永遠不動
      6. ROTATE
        1. 移出去的bit捕到領一個方向
      7. 流程控制
        1. JUMP 類似 goto 分為有無條件的JUMP
        2. HALT (停止流程
    4. 現在的主流是 CISC (complex instruction set computing)
  4. 詳細解釋 Machine Instruction
    1. op-code
      1. 告訴CPU要執行甚麼動作
    2. Operand
      1. 運算元指定對某個記憶體定址執行 op-code 指定要進行的行為
      2. 用以表達記憶體位置的bytes數會影響能使用的主記憶體大小 (ex.32位元最多能插 4G )
    3. 機械碼範例: 356C
      1. 3:store  5:register位置  6C:主記憶體位置
      2. 白話: 把register 位置 5 的資料寫入主記憶體 6C 的位置 
      3. 組合語言會轉成較易表示的格式: ex. STORE 5, 6C
  5. 高階語言 to Machine Instruction流程範例
    1. 寫好的C語言 compile to Object 檔
    2. Object 再和 libary link 成為一個 binary(可執行檔)
    3. compile 的方式會影響到效能因為有各種翻法
  6.  Machine cycle
    1. 組成動作
      1. fetch 從主記憶體中將指令取至register
      2. decode 解碼讓CPU知道指令的意思
      3. execute 
    2. clock  ex.3GHz 就是一秒可以跑 3*1000000000 次 machine cycle 
  7. I/O 與 CPU 間溝通至 bus 前還有一層 controller 會稍微暫存指令以免太頻繁佔據通道流量
  8. 與其他設備通訊
    1. DMA direct memory access
      1. 周邊裝置需要存取主記憶體前只需要通過一次CPU的授權
    2. 握手 Hand shaking
      1. 收到訊息後回傳通知對方已收到
      2. 比較嚴格的會先告知對方我要送訊息, 對方允許後才開始傳送
    3. 平行 / 序列 傳輸
      1. 不一定平行傳輸比較快
    4. 傳輸單位
      1. bps (bit per second) 注意不是 byte

2017年5月6日 星期六

[公開課閒聊] 計算機概論第三講 Data Storage - 台大 于天立

Ped隨手摘


  1. 二進位小數轉成十進位其實常有誤差存在,十進位常常不是二的倍數
  2. 壓縮
    1. 非失真壓縮
      1. Run-length : 一連串相同的位元在紀錄時就只記連續幾位 ex.11111 連續5bits 為1
      2. Frequency-dependent : 常用的碼用比較少位元數代表;少用的用比較長的位元數表示
        1. Huffman code
          1. 固定長度編碼接收端比較好分割,但會比較占空間。
            1. ex.A=00;B=01;C=10
          2. 利用二元樹依出現頻率由短至長編碼有機會會更省空間
            1. ex.A出現9次;B出現3次;C出現2次;D出現1次  A=0;B=10;C=110;D=111
      3. dictionary : 將常用的 pattern 用一組較短位元數紀錄他,跟frequecy有點關係
        1. LZW
          1. 不用把字典傳給接收端,因為接收端可用和傳送端同樣的演算法進行解碼
    2. 失真壓縮
      1. relative/difference : 只記錄有改變的地方
        1. ex.影像、聲音
    3. 如果原始資料重複的pattern (redundancy) 很少,反而可能會壓大
    4. Communication errors
      1. 壓縮過的資料如果有遺失會導致解碼錯誤
      2. error detection  : 可發現傳送的資料有誤,但無法回復
        1. check code
          1. 身分證字號
          2. ISBN
        2. parity bits
          1. ex.多傳一個 bit 讓資料永遠為奇數,但同時錯兩個 bit 時就沒救了 XD
          2. RAID (磁碟陣列)  
      3. error-correcting code (ECC)
        1. repetition code
          1. 多傳幾次ex.傳三次 010 因為 0 比較多所以回復成 0
          2. ex.(7,4)Hamming Code
            1. 發生錯誤時根據 Hamming distance 還原成最近的

2017年5月3日 星期三

[公開課閒聊] 計算機概論第二講 Data Storage - 台大 于天立

Ped隨手摘


  1. 聲音怎麼紀錄
    1. sampling rate
      1. bps(bit per second) 每秒鐘用多少 bits 紀錄聲音檔取決於兩個參數
        1. 取樣率
        2. 紀錄震幅用的 bits 數
    2. MIDI
      1. 由音效卡由設定好的聲音再現不同的音效卡呈現出來可能不同
  2. 整數
    1. Overflow
      1. 兩個正數加起來變一個負數或兩個負數加起來變一個正數
        1. 由於記憶體不足導致計算結果無法表達
  3. 小數
    1. fixed-point
      1. 直接換算
        1. ex.101.101 = 5又5分之8
    2. floating-point
      1. 正負 sign
      2. 指數 exponent
      3. 假數 mantissa
      4. ex.11010101 = 1(負sign) 101(1指數) 0101(.0101假數) = -(1/4+1/16)x2的一次方 = -5/8
      5. 所以轉換成十進位除不盡或記憶體不足的時候會有誤差 => Truncation Error


2017年5月2日 星期二

[公開課閒聊] 計算機概論第一講 Data Storage - 台大 于天立

Ped隨手摘
  1. 為什麼用 2 進位?
    1. 方便對應 true false
    2. 電器常用電壓作為辨別,比較好判斷 (ex.五伏電壓)
  2. 為什麼用 16 進位?
    1. 較2進位方便人類表達
    2. 2的倍數易於轉換2進位
  3. 記憶體位置本身也是以2進位表示,記憶體位置中擺著以 cell 為單位的資料,資料至少以8bits(1byte)為單位
    1. 以1D的方式排列 
    2. 現在幾乎都是隨機存取 
      1. 可直接取得目標記憶體位置的資料
  4. 主記憶體如DDR等技術都是持續供電以奈米等級的小電容紀錄01,增加容量的方式就是讓電容越排越密,越來越小
  5. 硬碟則是用磁性紀錄因為一個檔案會分開存在硬碟的不同位置,將不同位置的資料組合回一個檔案供讀取是buffer常被拿來用做的事,他會一次讀一堆資料後再整理出我們要的丟出來
  6. 各式各樣如何用二進位記錄資料說明:
    1. 文字
      1. Unicode、ASCII
    2. 圖片
      1. BMP、SVG
    3. 數字
      1. 直接從換算成2進位