SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
程式設計師的自我修養
     連結. 載入. 程式庫
Shu-Yu Fu (shuyufu@gmail.com)
第一篇 簡介

1. Chapter 1 溫故而知新
  a.    從Hello World說起
  b.    萬變不離其宗
  c.    站得高,望得遠
  d.    作業系統的功能
  e.    記憶體不夠麼辦
   f.   團結力量大
  g.    本章小結
從Hello World說起
#include <stdio.h>

int main ()
{
  printf ("Hello Worldn");
  return 0;
}

你知道這個Hello World從編譯、靜態鏈結到作業系統如何載
入程式、動態鏈結及執行階段程式庫和標準程式庫的實作
嗎?
萬變不離其宗

● CPU、記憶體、I/O控制晶片
匯流排【Bus】
PCI/ISA及南北橋設計的硬體架構
SMP與多核

● CPU幾乎已經達到實體限制,4GHz
● 對稱式多重處理,Symmetrical Multi-
  Processing
● CPU的數量和處理的速度並不成正比
● 將多個處理器合併在一起,以一個處理器的外
  包裝出售
站得高,望得遠
作業系統的功能

● 管理CPU、記憶體、I/O設備
● CPU
    ○ 多重程式,Multiprogramming
    ○ 分時系統,Time-Sharing System
    ○ 多工系統,Multi-tasking
      ■ 行程,Process
      ■ 先佔式,Preemptive
●   硬體驅動程式(Device Driver)
    ○ 讀檔
記憶體不夠怎麼辦

●   位址空間不隔離
●   記憶體使用效率低
●   程式執行的位址不確定
●   虛擬位址,Virtual Address
    ○ 分段
    ○ 分頁
分段
分頁

●   虛擬頁,Virtual Page
●   實體頁,Physical Page
●   磁碟頁,Disk Page
●   分頁錯誤(Page Fault)
●   MMU,Memory Management Unit
分頁(cont.)
團結力量大

● 緒程,Thread,有時稱為羽量級行程
  (Lightweight Process)
● 由緒程ID、PC、暫存器集合和堆疊組成
緒程的存取權限
緒程排程
緒程排程(cont.)

● 優先順序排程(Priority Schedule)
  ○ 緒程優先順序(Thread Priority)
● 輪轉法(Round Robin)
● 餓死(Starvation)
  ○ 使用者指定優先順序
  ○ 根據進入等待狀態的頻繁程度提升或降低優先順序
    ■ IO密集型緒程(IO Bound Thread)
    ■ CPU密集型緒程(CPU Bound Thread)
  ○ 長時間得不到執行而被提升優先順序
● 先佔(Preemption)
Linux的多緒程

● 無論緒程或行程都稱為任務(Task)
● 不同的Task之間可以共用記憶體空間。怎麼知
  道Task實際使用多少?
● 寫時複製(Copy-on-Write)
緒程安全

● void inc_x () { x++; }
● 原子(Atomic)操作,glib
● Semaphore《Glib Semaphores》
  ○ 可以被任意緒程獲取並釋放
● Mutex《類似binary semaphore》glib
  ○ 哪個緒程獲取了互斥器,哪個緒程就要負釋放這個鎖
    定
● Criticsl Section
● Read-Write Lock
  ○ Sema、Mutex、CS遇到偶爾寫入的情況,效能不彰
● Condition Variable
緒程安全(cont.)

 ● 可重入(Reentrant)
 ● 過度最佳化
   ○ volatile(C語言中volatile關鍵字)
●CPU動態排程換序,
   ○ 參考(《大话处理器》连载——微架构(19) 乱序执行
    总结)
  ○ barrier防止指令交換
多緒程內部情況
本章小結

● 有夠雜的

Weitere ähnliche Inhalte

Was ist angesagt?

Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveOpenCity Community
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on praticeKenny (netman)
 
互联网分布式系统架构分享-Qcon2011
互联网分布式系统架构分享-Qcon2011互联网分布式系统架构分享-Qcon2011
互联网分布式系统架构分享-Qcon2011Yiwei Ma
 
Qcon2011-54chen-互联网分步式构架分享
Qcon2011-54chen-互联网分步式构架分享Qcon2011-54chen-互联网分步式构架分享
Qcon2011-54chen-互联网分步式构架分享zhen chen
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Feng Yu
 
Proxmox VE 4.3 vs VMWare vSphere 6.1
Proxmox VE 4.3 vs VMWare vSphere 6.1Proxmox VE 4.3 vs VMWare vSphere 6.1
Proxmox VE 4.3 vs VMWare vSphere 6.1Chris Hsiang
 
StackOps step by-step guide
StackOps step by-step guideStackOps step by-step guide
StackOps step by-step guideslmagicbox
 
04 16 課程
04 16 課程04 16 課程
04 16 課程T客邦
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术Feng Yu
 
高性能数据库
高性能数据库高性能数据库
高性能数据库dhlzj
 
Ch8 file system management(2013 ncu-nos_nm)
Ch8   file system management(2013 ncu-nos_nm)Ch8   file system management(2013 ncu-nos_nm)
Ch8 file system management(2013 ncu-nos_nm)Kir Chou
 
Vim 实用技术,第 1 部分: 实用技巧
Vim 实用技术,第 1 部分: 实用技巧Vim 实用技术,第 1 部分: 实用技巧
Vim 实用技术,第 1 部分: 实用技巧King Hom
 
Redis 介绍 -田琪
Redis 介绍 -田琪Redis 介绍 -田琪
Redis 介绍 -田琪Shaoning Pan
 
南投替代役整理組數位典藏報告
南投替代役整理組數位典藏報告南投替代役整理組數位典藏報告
南投替代役整理組數位典藏報告Bo-Yi Wu
 
了解集群
了解集群了解集群
了解集群Feng Yu
 
Private Cloud vs Public Cloud Analysis
Private Cloud vs Public Cloud AnalysisPrivate Cloud vs Public Cloud Analysis
Private Cloud vs Public Cloud AnalysisChris Hsiang
 

Was ist angesagt? (20)

Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on pratice
 
互联网分布式系统架构分享-Qcon2011
互联网分布式系统架构分享-Qcon2011互联网分布式系统架构分享-Qcon2011
互联网分布式系统架构分享-Qcon2011
 
Qcon2011-54chen-互联网分步式构架分享
Qcon2011-54chen-互联网分步式构架分享Qcon2011-54chen-互联网分步式构架分享
Qcon2011-54chen-互联网分步式构架分享
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践
 
Proxmox VE 4.3 vs VMWare vSphere 6.1
Proxmox VE 4.3 vs VMWare vSphere 6.1Proxmox VE 4.3 vs VMWare vSphere 6.1
Proxmox VE 4.3 vs VMWare vSphere 6.1
 
StackOps step by-step guide
StackOps step by-step guideStackOps step by-step guide
StackOps step by-step guide
 
04 16 課程
04 16 課程04 16 課程
04 16 課程
 
Proxmox 5.0
Proxmox 5.0Proxmox 5.0
Proxmox 5.0
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术
 
PVE 4.1 HC 架構
PVE 4.1 HC 架構PVE 4.1 HC 架構
PVE 4.1 HC 架構
 
高性能数据库
高性能数据库高性能数据库
高性能数据库
 
Ch8 file system management(2013 ncu-nos_nm)
Ch8   file system management(2013 ncu-nos_nm)Ch8   file system management(2013 ncu-nos_nm)
Ch8 file system management(2013 ncu-nos_nm)
 
Vim 实用技术,第 1 部分: 实用技巧
Vim 实用技术,第 1 部分: 实用技巧Vim 实用技术,第 1 部分: 实用技巧
Vim 实用技术,第 1 部分: 实用技巧
 
Redis 介绍 -田琪
Redis 介绍 -田琪Redis 介绍 -田琪
Redis 介绍 -田琪
 
Virtualbox
VirtualboxVirtualbox
Virtualbox
 
Assembly Language Redhung ( x86 ) @ TDOH
Assembly Language Redhung ( x86 ) @ TDOHAssembly Language Redhung ( x86 ) @ TDOH
Assembly Language Redhung ( x86 ) @ TDOH
 
南投替代役整理組數位典藏報告
南投替代役整理組數位典藏報告南投替代役整理組數位典藏報告
南投替代役整理組數位典藏報告
 
了解集群
了解集群了解集群
了解集群
 
Private Cloud vs Public Cloud Analysis
Private Cloud vs Public Cloud AnalysisPrivate Cloud vs Public Cloud Analysis
Private Cloud vs Public Cloud Analysis
 

Andere mochten auch

TLPI - Chapter 44 Pipe and Fifos
TLPI - Chapter 44 Pipe and FifosTLPI - Chapter 44 Pipe and Fifos
TLPI - Chapter 44 Pipe and FifosShu-Yu Fu
 
程式設計師的自我修養 Chapter 10 記憶體
程式設計師的自我修養 Chapter 10 記憶體程式設計師的自我修養 Chapter 10 記憶體
程式設計師的自我修養 Chapter 10 記憶體Shu-Yu Fu
 
程式設計師的自我修養 Chapter 8
程式設計師的自我修養 Chapter 8程式設計師的自我修養 Chapter 8
程式設計師的自我修養 Chapter 8Shu-Yu Fu
 
程式設計師的自我修養 Chapter 3.4
程式設計師的自我修養 Chapter 3.4程式設計師的自我修養 Chapter 3.4
程式設計師的自我修養 Chapter 3.4Shu-Yu Fu
 
程式設計師的自我修養 Chapter 5
程式設計師的自我修養 Chapter 5程式設計師的自我修養 Chapter 5
程式設計師的自我修養 Chapter 5Shu-Yu Fu
 
Tlpi chapter 38 writing secure privileged programs
Tlpi   chapter 38 writing secure privileged programsTlpi   chapter 38 writing secure privileged programs
Tlpi chapter 38 writing secure privileged programsShu-Yu Fu
 
TLPI - 6 Process
TLPI - 6 ProcessTLPI - 6 Process
TLPI - 6 ProcessShu-Yu Fu
 
TLPI Chapter 14 File Systems
TLPI Chapter 14 File SystemsTLPI Chapter 14 File Systems
TLPI Chapter 14 File SystemsShu-Yu Fu
 
BT5攻防手法
BT5攻防手法BT5攻防手法
BT5攻防手法openblue
 
Happy Go Programming Part 1
Happy Go Programming Part 1Happy Go Programming Part 1
Happy Go Programming Part 1Lin Yo-An
 
TLPI - 7 Memory Allocation
TLPI - 7 Memory AllocationTLPI - 7 Memory Allocation
TLPI - 7 Memory AllocationShu-Yu Fu
 

Andere mochten auch (11)

TLPI - Chapter 44 Pipe and Fifos
TLPI - Chapter 44 Pipe and FifosTLPI - Chapter 44 Pipe and Fifos
TLPI - Chapter 44 Pipe and Fifos
 
程式設計師的自我修養 Chapter 10 記憶體
程式設計師的自我修養 Chapter 10 記憶體程式設計師的自我修養 Chapter 10 記憶體
程式設計師的自我修養 Chapter 10 記憶體
 
程式設計師的自我修養 Chapter 8
程式設計師的自我修養 Chapter 8程式設計師的自我修養 Chapter 8
程式設計師的自我修養 Chapter 8
 
程式設計師的自我修養 Chapter 3.4
程式設計師的自我修養 Chapter 3.4程式設計師的自我修養 Chapter 3.4
程式設計師的自我修養 Chapter 3.4
 
程式設計師的自我修養 Chapter 5
程式設計師的自我修養 Chapter 5程式設計師的自我修養 Chapter 5
程式設計師的自我修養 Chapter 5
 
Tlpi chapter 38 writing secure privileged programs
Tlpi   chapter 38 writing secure privileged programsTlpi   chapter 38 writing secure privileged programs
Tlpi chapter 38 writing secure privileged programs
 
TLPI - 6 Process
TLPI - 6 ProcessTLPI - 6 Process
TLPI - 6 Process
 
TLPI Chapter 14 File Systems
TLPI Chapter 14 File SystemsTLPI Chapter 14 File Systems
TLPI Chapter 14 File Systems
 
BT5攻防手法
BT5攻防手法BT5攻防手法
BT5攻防手法
 
Happy Go Programming Part 1
Happy Go Programming Part 1Happy Go Programming Part 1
Happy Go Programming Part 1
 
TLPI - 7 Memory Allocation
TLPI - 7 Memory AllocationTLPI - 7 Memory Allocation
TLPI - 7 Memory Allocation
 

Ähnlich wie 程式設計師的自我修養 Chapter 1

[students AI workshop] Pytorch
[students AI workshop]  Pytorch[students AI workshop]  Pytorch
[students AI workshop] PytorchTzu-Wei Huang
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版Jackson Tian
 
百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化tiantianli
 
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture][Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]思念 青青
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构isnull
 
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計Amigo 陳兆祥
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事Chieh (Jack) Yu
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向George Ang
 
Sheepdog内部实现机制
Sheepdog内部实现机制Sheepdog内部实现机制
Sheepdog内部实现机制Liu Yuan
 
「電腦硬體」教學示例與研討
「電腦硬體」教學示例與研討「電腦硬體」教學示例與研討
「電腦硬體」教學示例與研討David Tang
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网yang alex
 
作業系統祕笈(張逸)
作業系統祕笈(張逸)作業系統祕笈(張逸)
作業系統祕笈(張逸)逸 張
 
优酷 Web网站架构案例分析
优酷   Web网站架构案例分析优酷   Web网站架构案例分析
优酷 Web网站架构案例分析George Ang
 
Key value store
Key value storeKey value store
Key value storexuanhan863
 
Youku arch qcon2009_beijing
Youku arch qcon2009_beijingYouku arch qcon2009_beijing
Youku arch qcon2009_beijingdrewz lin
 
Python小团队不妨知道的技术
Python小团队不妨知道的技术Python小团队不妨知道的技术
Python小团队不妨知道的技术jie.wang
 

Ähnlich wie 程式設計師的自我修養 Chapter 1 (20)

Tcfsh bootcamp day2
 Tcfsh bootcamp day2 Tcfsh bootcamp day2
Tcfsh bootcamp day2
 
[students AI workshop] Pytorch
[students AI workshop]  Pytorch[students AI workshop]  Pytorch
[students AI workshop] Pytorch
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
 
百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化
 
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture][Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构
 
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向
 
Sheepdog内部实现机制
Sheepdog内部实现机制Sheepdog内部实现机制
Sheepdog内部实现机制
 
「電腦硬體」教學示例與研討
「電腦硬體」教學示例與研討「電腦硬體」教學示例與研討
「電腦硬體」教學示例與研討
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
 
作業系統祕笈(張逸)
作業系統祕笈(張逸)作業系統祕笈(張逸)
作業系統祕笈(張逸)
 
UCloud
UCloudUCloud
UCloud
 
优酷 Web网站架构案例分析
优酷   Web网站架构案例分析优酷   Web网站架构案例分析
优酷 Web网站架构案例分析
 
Key value store
Key value storeKey value store
Key value store
 
Youku arch qcon2009_beijing
Youku arch qcon2009_beijingYouku arch qcon2009_beijing
Youku arch qcon2009_beijing
 
作業系統概論
作業系統概論作業系統概論
作業系統概論
 
Python小团队不妨知道的技术
Python小团队不妨知道的技术Python小团队不妨知道的技术
Python小团队不妨知道的技术
 

程式設計師的自我修養 Chapter 1