35 作業系統和程序模組

2022-05-09 23:14:14 字數 3135 閱讀 3184

一、作業系統的發展

沒有作業系統———傳孔卡片

批處理系統———序列,速度快

聯機批處理,讀磁帶的時候速度快

離線批處理,讀磁帶和cpu工作併發

多道程式系統———並行

作業系統的各種管理功能

時空的復用:空間隔離開來,cpu看起來可以處理多個任務

分時系統———更好的實現了並行

缺點:讓cpu的工作效率下降了

實時系統———對乙個任務實時響應

優點:快

缺點:能處理的任務更少

通用作業系統

兼具多個作業系統的特性

二、作業系統的功能

封裝了對硬體的操作過程,給應用層序提供好用的介面

對多個作業進行排程管理來分配硬體資源

三、程序與程式

程式:就是一堆**

程序:執行當中的程式。程序是作業系統資源分配的最小單位

為什麼要引入程序的概念?

為了隔離資源

程序是怎麼被排程的呢?

先來先服務演算法:(fcfs)

短作業優先演算法

時間片輪演算法

多級反饋轉演算法

程序的狀態:就緒、執行、阻塞

程序的建立和結束:

建立程序有很多方式———就是讓乙個程式執行起來

所有的程序都是被程序建立出來的

父程序與子程序:程序1建立了程序2,那麼程序1就是父程序,程序2就是子程序

1、在學習程序之前首先認識一下如何看到程序:

os.getpid() 獲取當前python執行的程式的程序號 (pid:process  id :程序id )  

os.getppid()  獲取當錢python執行的程式的父程序號(ppid:parents process id  父程序id )  

關於multiprocess模組——綜合的、多元的 程序模組(包):python中建立程序用來替我做事。

import

osfrom multiprocessing import process #

匯入程序模組

import

time

deffunc():

time.sleep(2)

print('

子程序號%d

'%os.getpid())

if__name__ =='

__main__':

p=process(target=func)

p.start()

#啟動子程序

print('

第一次主程序號%d

'%os.getpid())

p.join() #阻塞

print('

第二次主程序號%d

'%os.getpid())

有兩種情況:

1、沒有p.join()  :這種情況下不阻塞,執行主程式,呼叫子程序。子程序和父程序是非同步執行。

建立程序物件 傳要執行的函式 以及引數

程序物件.start()

主程序和子程序就是非同步執行

如果主程序中的**已經結束了,子程序還沒結束,主程序會等待子程序

p.join 就是主程序會阻塞在join的位置,等待p程序結束

windows作業系統中 建立程序的語句一定要放在if

__name__ == '

__main__

':條件語句下面

2、有p.join():主程序阻塞在join的位置,等待p程序的結束(非同步阻塞)

2、開啟多個子程序 

import

osimport

time

from multiprocessing import

process

deffunc(i):

time.sleep(3)

print('

%d :子程序%d幹的事,父程序%d幹的事

'%(i,os.getpid(),os.getppid()))

if__name__=='

__main__':

p_lst=

for i in range(10):

p=process(target=func,args=(i,)) #

例項化,呼叫執行緒類,傳引數

p.start() #

啟動執行緒(類似傳達一下訊息

for p in

p_lst:

p.join() #阻塞

print('

-------主程序-------

')

建立乙個執行緒,然後啟動(物件名.start),它會在未知的時間裡建立執行緒,所以至於它是不是在主線程之前還是之後啟動都不能確定。如果想要主線程在所有執行緒後等待,那麼需要預先建立乙個空列表,然後把所有啟動的子執行緒放入列表中,對列表中的子執行緒總體進行迴圈阻塞後,啟動主線程。

3、另一種開啟多程序的方法

import

osfrom multiprocessing import

process

class myprocess(process): #

必須建立乙個類,必須繼承process方法

def run(self): #

必須實現run方法

print('

子程序%d

'%os.getpid())

self.walk()

defwalk(self):

print('

子程序walk%d

'%os.getpid())

if__name__ =='

__main__':

p=myprocess() #

先例項化乙個物件

p.start() #

啟動子程序

p.join()

print('

主程序%d

'%os.getpid()) #

主程序

作業系統和程序

一.作業系統 1.什麼是作業系統 作業系統就是乙個協調,管理和控制計算機硬體資源和軟體資源的控制程式.在計算機硬體和使用者介面程式之間 2.作業系統的作用 1.為應用程式提供如何使用硬體資源的抽象 2.管理硬體資源 二.作業系統發展史 第一代 1940 1955 手工操作 穿孔卡片 第二代 1955...

作業系統 程序和程式

馮諾依曼體系 輸入裝置 鍵盤 滑鼠 掃瞄器 寫字板等。儲存器 記憶體。處理器 cpu 含有運算器和控制器等 輸出裝置 顯示器 印表機等。硬碟 在開啟硬碟中的檔案時,硬碟屬於輸入裝置 硬碟中資料的輸入到儲存器中,再在cpu中執行 在硬碟中新建乙個檔案,然後往硬碟中輸入資料,此時硬碟就是乙個輸出裝置。注...

作業系統 程序和執行緒

從處理機只能執行單一程式,到處理機可以通過不停的切換所執行的程式,達到看似同時處理多個程序的過程,經歷了很長一段時間。從單道程式設計到多道程式設計,主要解決了在執行過程中需要頻繁等待資源或者i o操作的問題,因為這類操作通常都是很耗時間的 相對於cpu的快速執行來說 進而提高了整個cpu執行的效率和...