作業系統介於計算機硬體和軟體之間,本質也是乙個軟體,用來協調,管理和控制計算機和軟體的控制大軟體,由作業系統的核心以及系統呼叫兩部分組成,所處的位置如下:
作用:
隱藏醜陋複雜的硬體介面,提供良好的抽象介面
管理,排程程序,將多個程序變得有序
多道技術:
產生背景:針對單核,實現併發
空間上的復用:記憶體中同時又多道程式
時間上的復用:復用乙個cpu的時間片
強調:遇到io切,占用cpu時間過長也切,核心在於切之前將程序的狀態儲存下來,這樣才能保證下次切換回來時,能基於上次且走的位置繼續執行
1. 由硬體保護,不能被使用者修改
2. 作業系統是乙個大型,複雜,長壽的軟體
定義:正在進行的乙個過程或任務,負責執行任務的是cpu
程序與程式的區別:
程式僅只是一堆**,程序指的是程式執行過程
併發偽並行,即同時執行,單個cpu + 多道技術就可以實現併發(並行也屬於併發),我理解併發類似於物理上的串聯,但也有所不同
你是乙個cpu,你同時談了三個女朋友,每乙個都可以是乙個戀愛任務,你被這三個任務共享併發舉例要玩出併發戀愛的效果,
應該是你先跟女友1去看電影,看了一會說:不好,我要拉肚子,然後跑去跟第二個女友吃飯,吃了一會說:那啥,我
去趟洗手間,然後跑去跟女友3開了個房
並行同時執行,只有具備多個cpu才能實現並行,單核下,可以利用多道技術,多個核,每個核也都可以利用多道技術(多道技術是針對單核而言的)
假如有四個核,現有六個任務,這樣同一時間只能執行四個任務,分別被分配各了cpu1,cpu2,cpu3,cpu4,一旦任務1遇到i/o就被迫中斷執行,此時任務5就拿到cpu1的時間片區執行,這就是單核下的多道技術
而一旦任務1的i/o結束了,作業系統會重新呼叫它(需知程序的排程、分配給哪個cpu執行,由作業系統說了算),可能被分配給四個cpu中的任意乙個去執行
現代的計算機經常會在同一時間做很多件事,乙個使用者的pc,都可以同時執行多個任務,乙個任務即乙個程序
比如:
同步:在發出乙個功能呼叫時,在沒有得到結果之前,該呼叫就不會返回,大多數函式都是同步呼叫,但是我們在說同步,非同步的時候,特指那些需要其他部件協作或者需要一定時間完成的任務
非同步:和同步相對,當乙個非同步功能呼叫發出後,呼叫者不能立刻得到結果,當該非同步功能完成後,通過狀態,通知或**來通知呼叫者,不要用狀態來通知,若這樣則會造成呼叫者就需要每隔一定的時間檢查一次,效率就很低;要使用通知的方式,效率就會很高,因為非同步功能幾乎不需要額外的操作
阻塞:指呼叫結果返回之前,當前執行緒會被掛起(如遇到io操作),函式只有在得到結果後才會將阻塞的執行緒啟用,與同步呼叫是不同的,對於同步呼叫來說,很多時候當前執行緒還是啟用的,只是從邏輯上當前函式沒有返回而已
#非阻塞:舉例:#
#2. 阻塞呼叫:當socket工作在阻塞模式的時候,如果沒有資料的情況下呼叫recv函式,則當前執行緒就會被掛起,直到有資料為止。
與阻塞的概念相對應,指在不能立刻得到結果前,也會立刻返回,同時函式不會阻塞當前執行緒
總結:
#1. 同步與非同步針對的是函式/任務的呼叫方式:同步就是當乙個程序發起乙個函式(任務)呼叫的時候,一直等到函式(任務)完成,而程序繼續處於啟用狀態。而非同步情況下是當乙個程序發起乙個函式(任務)呼叫的時候,不會等函式返回,而是繼續往下執行當,函式返回的時候通過狀態、通知、事件等方式通知程序任務完成。
#2. 阻塞與非阻塞針對的是程序或執行緒:阻塞是當請求不能滿足的時候就將程序掛起,而非阻塞則不會阻塞當前程序
程序理論基礎(Day32)
背景知識 顧名思義,程序即乙個軟體正在進行的過程。程序是對正在執行程式的乙個抽象。程序的概念起源於作業系統,是作業系統最核心的概念,也是作業系統提供的最古老的也是最重要的抽象概念之一。作業系統的其他所有內容都是圍繞程序的概念展開的。所以想要真正了解程序,必須先了解作業系統 一 作業系統的作用 1 隱...
TCP IP理論基礎
一 tcp ip的分層模型 osi協議參考模型,它是基於國際標準化組織 iso 的建議發展起來的,它分為7個層次 應用層 表示層 會話層 傳輸層 網路層 資料鏈路層及物理層。這個7層的協議模型雖然規定得非常細緻和完善,但在實際中卻得不到廣泛的應用,其重要的原因之一就在於它過於複雜。但它仍是此後很多協...
TCP IP理論基礎
linux中網路棧的介紹一般分為四層的internet模型。分別為應用層 傳輸層 網際層和網路介面。tcp ip實際上是乙個協同工作的通訊家族,為網路資料通訊提供通路。為方便將tcp ip協議族大致上分為三部分 1.internet協議 ip 這一部分也稱為網路層。主要包括ip icmp和arp。其...