--- title: Operating System --- # Operating System by CrazyFire > Operating System by CrazyFire > 讓我們來淺談作業系統,並且瞭解這對電腦發展的龐大影響吧~ > [課程講義](https://slides.com/crazyfire221/operating-system/fullscreen) > [課程影片連結](https://youtu.be/1WIRrz9AfWI) > [sli.do 連結](https://app.sli.do/event/ruxhaia7/live/questions)(連結已關閉) > [課後問券](https://forms.gle/PBw9qkvaj4GNN8sW9) ## Computer - 過去的電腦非常陽春,目標很單純。例如圖靈機只是為了破解密碼。 - 人類思考的是增加速度,不太需要解決什麼問題,作業系統沒那麼必要。 - 第一台計算機:利用插卡、拔卡,做出不同圖案的織布機。 ### 組成 - 輸入 : 鍵盤、滑鼠、觸控螢幕 - 主機 : 鎖在桌子裡面的那台黑黑的 - 輸出 : 螢幕、投影機、耳機 ### 五大單元 - 輸入單元 - 輸出單元 - 控制單元 - 邏輯運算單元 - 主記憶體 ### Machine Code - 由0、1組成 - 利用電流的有跟無(高電位、低電位) - 非常不直觀!! - 如果一個問題出現,就要研讀這堆由0/1組成的code(?)實在太麻煩啦>< ### Small Game - 十進位 to 二進位 - $10_{10} -> (?)_2$ - $10_{10} -> 1010_2$ ## Why Need Operating System - 不再是單一目標,各種功能加入。 - 記錄資訊的需求出現 (儲存裝置) - Computer System:應用程式(殼程式)、系統呼叫、核心、硬體(由上層到下層) ### Kernel - 提取硬體資源給使用者操作 - 主要功能 - 控管硬體 - 提供控制管道 - 如果停止或破壞,系統將無法正常使用 #### Key of OS Kernel - 系統呼叫介面(System call interface) - 程序管理(Process control) - 記憶體管理(Memory management) - 檔案系統管理(Filesystem management) - 裝置的驅動(Device drivers) ### System Call - 呼叫 Kernel 的介面 - 取得硬體資源操作的方式  - 如果直接去用kernel可能會崩壞(? - 用 System Call 會有相關的保護方式 ### OS & Application - Easy to program - Any place can use - Any hardware is allow ### Virtual Machine - 虛擬化管理系統(Hypervisor)在 Host OS 跟 Guest OS 之間 #### How to use VM (使用教學) - 本堂課請到 Z: 裡面找到 Nisra/2020 Enlightened/Operation System 的資料夾並且複製到自己電腦上(桌面...) - 打開資料夾後 開啟下面那個 Virtual Box並安裝 - 安裝完後並且打開,點擊上方的匯入 - 找到你拉下來的那個資料夾裡面的 ubuntu 匯入 - 接著就可以開啟 ubuntu 了 - 密碼是: `nisra` - 或是上網下載 ubuntu ## Linux ### 起源 - 1969 Unix 出現 (利用低階語言 ex:組合語言...) - 1971 C 語言 - 1973 利用 C 重寫的 Unix (第三版) - 1983 GNU 計畫 - 為了讓每人都能用一套免費,沒有限制的作業系統 - 1987 Minix - 1991 Linux ~~終於出現了~~ ### Why Linux? - 開源 - 穩定性、高效性 - Linux的安全性 - 基於 Unix 創造 [類 UNIX 系統家族](https://bit.ly/1IQYFj0) ### Linux眾多發行版 - 掛載GUI [Linux 發行版排行榜](https://distrowatch.com/) ### Ubuntu - 本次介紹版本: 18.04 - 以桌面應用為主的 Linux 發行版 - 對於 Linux 新手比較友善 - 剛剛提到的Docker是解決所有東西都在電腦上這個問題 #### 指令 - `date` : 查詢時間 - date --help - `cal`:查詢日期 - `man` 想查詢的指令 - 如果不知道指令是做啥的可以用 man 來查詢 - ex: man date 查詢 date 這個指令是做啥的 - `curl cheat.sh/<command>` - `clear` : 清理畫面 #### 目錄結構 - /bin 系統執行檔 - /boot 開機需要用到的檔案 - /dev 裝置檔案 - /etc 設定檔 - /home 家目錄 - /lib 函式庫 - /media 可移除裝置掛載處 - /mnt 額外裝置掛載處 - /opt 第三方軟體放置處 - /root root 家目錄 - /sbin 系統執行檔 - /srv 服務資料目錄 - /tmp 暫存目錄 - /lost+found 檔案系統出錯放置檔案 - /proc 系統程序資訊 - /sys 系統資訊 - /usr 系統程式資源 - /var 系統資訊、記錄、暫存檔案 ##### 目錄結構相關指令 - `cd <parameter>`:進入 - cd /:根目錄 - cd ~:家目錄 - `ls <Mparameter>` - `echo <parameter>` - `echo "Hello World"` -> Hello World - `echo ${LANG}` -> en_US.UTF-8 - `mkdir <folderName>`: 創建空資料夾 - `rmdir <folderName>`:刪除空資料夾 - `touch <fileName>`:新增空檔案 - `rm <folderName/fileName>` - `rm -rf /` -> 危險勿試,可以砍掉重來>< - `pwd`:顯現現在的目錄位置 - `cp <from> <to>` :複製檔案 - (同目錄下) - `cp hello1.c hello2.c` 在當前資料夾複製 `hello1.c` 並且貼上這個檔案並重新命名為 `hello2.c` - (不同目錄下) - `cp ./test1/hello1.c ./test2/abc` 在 `test1` 這個資料夾複製 `hello1.c` 並貼上到 `test2` 資料夾裡的 `abc` 資料夾 - `mv <from> <to>` :移動檔案 - `find <position> -name <file>` - 在檔案中做尋找 - 找不到有可能是因為權限不足 - `who` - 查在線使用者有誰 - `whoami` - 用來確認你目前的身分的指令 #### 路徑觀念 - 絕對路徑 ( 從根目錄開始 ): - /home/nisra/ - 相對路徑 ( 非根目錄開始 ) : - ../happytime/game.txt - / 為根目錄 - . 代表當前目錄 - .. 上一層 ### Linux 檔案權限 - User / owner / 檔案擁有者 / 使用者 : 就是檔案所屬人 - Group / 群組 : 這個檔案附屬於哪一個群組團隊 - Others / 其他人 : 不是 user 也沒有加入 group 的帳號,就是其他人 #### 檔案權限介紹 drwxrwxr-x - d 代表目錄或是檔案 - rwx(左) 擁有者權限 - rwx(右) 同群組權限 - r-x 其他使用者權限 - rw-rw-r-- 1 nisra nisra 100 Aug 9 10:31 output.txt - 1 檔案連結數量 - nisra(左) 檔案擁有者 - nisra(右) 檔案所在群組 - 100 檔案容量 - Aug 9 10:31 最後一次修改時間 #### Advanced Packaging Tools(apt) - 是 Debian 及其衍生的 Linux 軟體包管理器 - APT 可以自動下載,組態安裝二進位或者原始碼格式的軟體包 - `sudo` - 提取權限 > 打密碼時密碼不會出現 - `sudo apt upgrade` 更新指令包 #### VIM 文字編輯器 - install ``` sudo apt install vim //安裝 vim vim //測試是否安裝 vim ``` - Vim (Vi IMproved) - 從 VI 發展出來的一個文字編輯器 - 協定中包含一些慈善條款,用來幫助烏干達的兒童 ##### Why use VIM - Everywhere - Unix,linux,macOS - Fast - Edit text like a wizard without leaving keyboard - Customizeble - Vim's has a +25 year of plugins ##### VIM 各種模式 - common mode - 可以移動游標 - (上下左右) - 刪除字元或整列(d) - 複製貼上(y, p)等等動作 - 按下`:`進入command-line mode - 按下`i,o,a,R`進到編輯模式 - insert mode - 可輸入各種字元 - 按下Esc回到common mode - command-line mode - 離開 - 顯示行號 - 按下Esc回到指令模式 - 游標控制 - 上: `k` - 下: `j` - 左: `h` - 右: `l` - Vim 指令列 - `q` 不儲存離開 - `q!` 強制退出 - `w` 存檔 - `wq` 存檔+離開 - Vim 移動單行 - `0` 到行首 - `$` 到行末 - `^`or`_`到行開頭 - `g_-` 到行結尾 - ##### VIM 世界難題 - 如何離開VIM --- ###### tags: `Enlightened` `NISRA` `2020` <style> .navbar-brand::after { content: " × NISRA"; } </style>
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up