1、 顯示主頁的過程
2、 狀態碼
3、 各種協議與http之間的關係
4、http長連線 短連線
1、 周一至周五晚上 7 點—晚上10點
2、 週六上午 9 點-上午 11 點
3、 週日下午 3 點-下午 6 點
作業系統(operating system,簡稱 os)是管理計算機硬體與軟體資源的程式,是計算機系統的核心與基⽯;
作業系統本質上是運⾏在計算機上的軟體程式 ;
作業系統為⽤戶提供⼀個與系統互動的操作界⾯ ;
作業系統分核心與外殼(我們可以把外殼理解成圍繞著核心的應⽤程式,⽽核心就是能操作硬體的程式)。
根據程序訪問資源的特點,我們可以把程序在系統上的運⾏分為兩個級別:
1. ⽤戶態(user mode) :⽤戶態運⾏的程序或可以直接讀取⽤戶程式的資料。
**2. 系統態(kernel mode)?*可以簡單的理解系統態運⾏的程序或程式⼏乎可以訪問計算機的任何資源,不受限制。
說了⽤戶態和系統態之後,那麼什麼是系統調⽤呢?
我們運⾏的程式基本都是運⾏在⽤戶態,如果我們調⽤作業系統提供的系統態級別的⼦功能咋辦呢?那
就需要系統調⽤了!
也就是說在我們運⾏的⽤戶程式中,凡是與系統態級別的資源有關的操作(如⽂件管理、程序控制、內
存管理等),都必須通過系統調⽤⽅式向作業系統提出服務請求,並由作業系統代為完成。
這些系統調⽤按功能⼤致可分為如下⼏類:
**裝置管理。**完成裝置的請求或釋放,以及裝置啟動等功能。
**⽂件管理。**完成⽂件的讀、寫、建立及刪除等功能。
**程序控制。**完成程序的建立、撤銷、阻塞及喚醒等功能。
**程序通訊。**完成程序之間的訊息傳遞或訊號傳遞等功能。
**記憶體管理。**完成記憶體的分配、**以及獲取作業佔⽤記憶體區⼤⼩及位址等功能。
**從上圖可以看出:**⼀個程序中可以有多個執行緒,多個執行緒共享程序的堆和⽅法區 (jdk1.8 之後的元空間)資源,但是每個執行緒有⾃⼰的程式計數器、虛擬機器棧 和 本地⽅法棧。
總結: 執行緒是程序劃分成的更⼩的運⾏單位,⼀個程序在其執⾏的過程中可以產⽣多個執行緒。執行緒和程序最⼤的不同在於基本上各程序是獨⽴的,⽽各執行緒則不⼀定,因為同⼀程序中的執行緒極有可能會相互影響。執行緒執⾏開銷⼩,但不利於資源的管理和保護;⽽程序正相反。
我 :我們⼀般把程序⼤致分為 5 種狀態,這⼀點和執行緒很像!
**1、建立狀態(new) :**程序正在被建立,尚未到就緒狀態。
**2、就緒狀態(ready) :**程序已處於準備運⾏狀態,即程序獲得了除了處理器之外的⼀切所需資源,⼀旦得到處理器資源(處理器分配的時間⽚)即可運⾏。
**3、運⾏狀態(running) :**程序正在處理器上上運⾏(單核 cpu 下任意時刻只有⼀個程序處於運⾏狀態)。
**4、阻塞狀態(waiting) :**⼜稱為等待狀態,程序正在等待某⼀事件⽽暫停運⾏如等待某資源為可⽤或等待 io 操作完成。即使處理器空閒,該程序也不能運⾏。
**5、結束狀態(terminated) :**程序正在從系統中消失。可能是程序正常結束或其他原因中斷退出運⾏。
**1. 管道/匿名管道(pipes) :**⽤於具有親緣關係的⽗⼦程序間或者兄弟程序之間的通訊。
2. 有名管道(names pipes) :匿名管道由於沒有名字,只能⽤於親緣關係的程序間通訊。為了克服這個缺點,提出了有名管道。有名管道嚴格遵循先進先出(first in first out)。有名管道以磁碟⽂件的⽅式存在,可以實現本機任意兩個程序通訊。
**3. 訊號(signal) :**訊號是⼀種⽐較複雜的通訊⽅式,⽤於通知接收程序某個事件已經發⽣;
**4. 訊息佇列(message queuing) :**訊息佇列是訊息的鍊錶,具有特定的格式,存放在記憶體中並由訊息佇列識別符號標識。管道和訊息佇列的通訊資料都是先進先出的原則。與管道(⽆名管道:只存在於記憶體中的⽂件;命名管道:存在於實際的磁碟介質或者⽂件系統)不同的是訊息佇列存放在核心中,只有在核心重啟(即,作業系統重啟)或者顯示地刪除⼀個訊息佇列時,該訊息佇列才會被真正的刪除。訊息佇列可以實現訊息的隨機查詢,訊息不⼀定要以先進先出的次序讀取,也可以按訊息的型別讀取.⽐ fifo 更有優勢。訊息佇列克服了訊號承載資訊量少,管道只能承載⽆格式字 節流以及緩衝區⼤⼩受限等缺。
**5. 訊號量(semaphores) :**訊號量是⼀個計數器,⽤於多程序對共享資料的訪問,訊號量的意圖在於程序間同步。這種通訊⽅式主要⽤於解決與同步相關的問題並避免競爭條件。
**6. 共享記憶體(shared memory) :**使得多個程序可以訪問同⼀塊記憶體空間,不同程序可以及時看到對⽅程序中對共享記憶體中資料的更新。這種⽅式需要依靠某種同步操作,如互斥鎖和訊號量等。可以說這是最有⽤的程序間通訊⽅式。
7. 套接字(sockets) :此⽅法主要⽤於在客戶端和伺服器之間通過⽹絡進⾏通訊。套接字是⽀持tcp/ip 的⽹絡通訊的基本操作單元,可以看做是不同主機之間的程序進⾏雙向通訊的端點,簡單的說就是通訊的兩⽅的⼀種約定,⽤套接字中的相關函式來完成通訊過程。
1、先到先服務(fcfs)排程演算法 :從就緒佇列中選擇⼀個最先進⼊該佇列的程序為之分配資源,使它⽴即執⾏並⼀直執⾏到完成或發⽣某事件⽽被阻塞放棄佔⽤ cpu 時再重新排程。
2、短作業優先(sjf)的排程演算法 :從就緒佇列中選出⼀個估計運⾏時間最短的程序為之分配資源,使它⽴即執⾏並⼀直執⾏到完成或發⽣某事件⽽被阻塞放棄佔⽤ cpu 時再重新排程。
3、時間⽚輪轉排程演算法 :時間⽚輪轉排程是⼀種最古⽼,最簡單,最公平且使⽤最⼴的演算法,⼜稱 rr(round robin)排程。每個程序被分配⼀個時間段,稱作它的時間⽚,即該程序允許運⾏的時間。
**4、多級反饋佇列排程演算法 :**前⾯介紹的⼏種程序排程的演算法都有⼀定的侷限性。如短程序優先的排程演算法,僅照顧了短程序⽽忽略了⻓程序 。多級反饋佇列排程演算法既能使⾼優先順序的作業得到響應⼜能使短作業(程序)迅速完成。,因⽽它是⽬前被公認的⼀種較好的程序排程演算法,unix 作業系統採取的便是這種排程演算法。
5、優先順序排程 :為每個流程分配優先順序,⾸先執⾏具有最⾼優先順序的程序,依此類推。具有相同優先順序的程序以 fcfs ⽅式執⾏。可以根據記憶體要求,時間要求或任何其他資源要求來確定優先順序
作業系統(1)
共享 共享和併發是作業系統的兩個最基本的特徵,二者互為存在條件 虛擬 虛擬是指把乙個物理上的實體變為若干個邏輯上的對應物。物理實體是實際存在的,而邏輯上對應物是使用者感受到的。例如 時分復用技術 非同步 在多道程式環境下,允許多個程式併發執行,單由於資源有限,程序的執行不是一貫到底的,而是走走停停,...
作業系統1
作業系統定義 作業系統是一組控制和管理計算機硬體和軟體資源,合理地對各類作業進行排程,以及方便使用者使用計算機的程式的集合。作業系統的目標 方便性 使計算機系統更易於使用。有效性 利用率和吞吐量。可擴充性 能方便地增加新的功能和模組,並能修改老的模組。開放性 使其與其他的系統之間能彼此相容 方便地實...
作業系統1
死鎖 兩個或兩個以上併發程序,如果每個程序持有某種資源,而又等待著別的程序釋放它或它們現在保持著的資源,否則就不能向前推進。此時,每個程序都占用了一定的資源,但又都不能向前推進。這種現象稱為死鎖 所有程序的申請都未得到滿足,都在等待別的程序釋放 死鎖產生的必要條件 必須具備四個必要條件才會發生死鎖 ...