跳到主要內容

發表文章

[Fundamental] Operating System 作業系統

  電腦系統的四個組成要素:硬體設備、作業系統、應用程式、使用者,作業系統基於硬體而乘載應用程式,作業系統負責控制並協調分配(硬體)資源給各個應用 系統觀點 作業系統是電腦上的資源分配者,負責管理並有效且公平地分配資源,如:cpu 時間、記憶體空間、檔案儲存空間、I/O 裝置 作業系統是一個控制程式,在開機後持續執行,以管理軟、硬體資源 其 核心 (kernel) 是作業系統運作的基本元件 系統程式 是除了核心以外,幫助系統運作的程式,而其他解決使用者的問題皆稱為 應用程式 Startup 靴帶式程式 (bootstrap program) 存於 唯讀記憶體 (ROM) 或 可消除式唯讀記憶體(EEPROM) 通常稱為韌體 firmware 將作業系統核心 (kernel) 載入記憶體 執行第一個行程- init 協調事件之中斷 (interrupt) System Boot 藉由載入核心來開啟一部電腦的步驟就是 booting 系統 在大部份電腦系統之中,有一小段程式碼叫做靴帶式程式 bootstrap program 或叫做 bootstrap loader 有些電腦系統如 PC 把這個步驟分成兩個階段,先有一個非常簡單的 bootstrap loader 從 (EEP)ROM 載入一個更複雜的 loader,然後再由後者將 OS kernel 載入 loader 通常在 ROM 中因為不常需要改變,基本上與 HW 綁定;OS 則在 disk 中可以接受改變,不與 HW 綁定   從開機到 main() 的執行分三步完成(當執行到 main() 代表已完全進入 OS 接管):     第一步,啟動 BIOS,准備 實模式 下的  中斷向量表  和  中斷服務程序     第二步,從啟動盤加載 OS program 到 RAM,加載 OS program 的工作就是利用第一步中所准備的中斷服務程序實現的     第三步,為執行 32-bit 的 main() 函數做過度工作 啟動 BIOS (loader),准備 實模式 下的  中斷向量表  和  中斷服務...
最近的文章

[Job Hunting] System Design

A. Usage 1. find out the main usage scenarios 2. find out the side usage scenarios and group them into 3 categories-   a) need to be considered now.   b) will possibly happen in the future but not now.   c) more likely will never need B. Scale from the aspects of different practical resources-   a. processing resource: which might include CPU and RAM   b. network: not only mean something like LAN bandwidth. should be considered from the viewpoint of request/response processing flow. Its corresponding path. So this part may also include something like the data passing in two system module is through RAM or Ethernet cable or crossing Internet.   c. storage from the 3 aspects above, we will ask the questions below   1. how many request per second/day/week/month/year by average   2. how many request in peak situation   3. how long expected the current system last being workable   4. to serve each request, how mush correspo...

[Development] git

本篇介紹幾個 git 會用到的基本 command line 指令 安裝 on Mac OS [tested on macOS Catalina 10.15.1] (可以用 Brew 安裝,若尚未安裝 Brew:  https://brew.sh/index_zh-tw ) $ brew install git $ git --version git version 2.21.0 (Apple Git-122.2)   github 官網就有提供 GUI 的應用 ,想用 GUI 的直接去下載安裝就行了,也有簡單明瞭的教學,非常容易。另外也有好幾個第三方的好用 GUI 介面,Google 一下比較一下選自己喜歡的也行。   但以下還是用 command line 的方法來操作,因為這還是最 general 到哪都可以用的基本方法。因為實務上,比如 code 都放在公司的 server,你可能也是都要 ssh 到 sever 上去改 code,改完之後要上傳到 github。而公司的 server 就是一台 Linux 環境,很可能是沒有提供 GUI 讓你使用的,所以你就只能用 command line 的方式完成 git 的上傳。 Create Repo   去本地一個你想要放置 git 專案的地方,比如我想把我之後的 git code 都放在我 Mac local 的 /Users/chungchris/git $ cd /Users/chungchris/git $ git init   就會看到在此 git 目錄下產生一個隱藏的 .git 資料夾,這樣就完成了: (base) Chris-MBP:git chungchris$ ls -al total 0 drwxr-xr-x   3 chungchris   staff     96 11 21 11:01 . drwxr-xr-x+ 53 chungchris   staff   1696 11 21 10:45 .. drwxr-xr-x   9 chungchris   staff  ...

[Development] Deep Learning over Python 深度學習基於 Python 3/3

  用 Python 練習實作深度學習,主要包含 Tensorflow 以及 SVM,著重於實作範例,未深入涉及各 DL 演算法模型原理及其數學。 大綱 [Development] Deep Learning over Python 深度學習基於 Python 1/3 Basic Tools: 基於 python- numpy, matplotlib, scipy, Pandas [Development] Deep Learning over Python 深度學習基於 Python 2/3 Keras (基於 Tensorflow)  Tensorflow [Development] Deep Learning over Python 深度學習基於 Python 3/3 Support Vector Machine (SVM) 萬用分類機 Reinforcement Learning (RL) 強化學習 Reference: 本篇基於  Udemy 課程 "吳佳諺- Python 深度學習"  為架構出發衍生,其他引用資料個別在段落中標示 Support Vector Machine (SVM) 萬用分類機   SVM 就是用統計上風險最小化的方法,來產生一個分類的超平面 (hyperplane),也就是找到一個決策邊界 (decision boundary),該邊界可以讓「兩類」之間的邊界 margins 最大化。   SVM 是一個二元分類器,也就是只能做非黑即白的分類判斷。   如果資料只有二維,如在二維直線座標系中標記了許多點,若這些點概念上可以被分成兩類,我們就可以透過迴歸分析的幫助,找出一條線來最適當的把這兩類的點切分開來,這條線如果是直線,那就是一個一元一次方程式,如果是曲線那當然就是二次三次或更高。   而該怎麼找出最佳的一個切割面?SVM 的提議也很簡單,他假設如果存在一個 hyperplane,這個 hyperplane 距離所有 A/B 類節點的距離總和最長,那他就是一個最佳的分割面,這裡的距離的概念也就是 margin。簡單理解就是,處在兩個點的「最中間」位置的那條線就是這兩點的最佳切割線。  ...

[Development] Deep Learning over Python 深度學習基於 Python 2/3

  用 Python 練習實作深度學習,主要包含 Tensorflow 以及 SVM,著重於實作範例,未深入涉及各 DL 演算法模型原理及其數學。 大綱 [Development] Deep Learning over 深度學習基於 Python Python 1/3 Basic Tools: 基於 python- numpy, matplotlib, scipy, Pandas [ Development] Deep Learning over Python  深度學習基於 Python  2/3 Keras (基於 Tensorflow) , 使用 Sequential 模型(範例 實作 "MINST 手寫辨識") CNN (Convolutional Neural Networks) 卷積神經網路 (範例 實作 "MINST 手寫辨識") RNN (Recurrent Neural Networks) 遞歸(迴)神經網路 (範例 實作 "IMPb 評論辨識") Tensorflow 基礎應用 NN 基本作用原理 CNN (Convolutional Neural Networks) 卷積神經網路 (範例 實作 "MINST 手寫辨識") [Development] Deep Learning over Python 深度學習基於 Python 3/3 Support Vector Machine (SVM) 強化學習 Reinforcement Learning (RL) Reference: 本篇基於 Udemy 課程 "吳佳諺- Python 深度學習" 為架構出發衍生,其他引用資料個別在段落中標示 Keras Keras 是一个用 Python 编写的高级神经网络 API,它能够以  TensorFlow ,  CNTK , 或者  Theano  作为后端运行 Keras 的核心数据结构是  model ,一种组织网络层的方式。最简单的模型是  Sequential 顺序模型 ,它由多个网络层线性堆叠。对于更复杂的结构,你应该使用  Keras 函数式 API ,它允许构建任意的...