計算機核心理論

2022-09-14 09:57:09 字數 4208 閱讀 6523

import socket

udp_sk = socket.socket(type=socket.sock_dgraw)

udp_sk.bind(('127.0.0.1', 9900))

msg, adder = udp_sk.recvfrom(1024)

udp_sk.sendto(b'hi', addr)

udp_sk.close()

import socket

ip_port = (('127.0.01', 9900))

udp_sk = socket.socket(type=socket.sock_dgraw)

udp_sk.sendto(b'hello', ip_port)

back.msg, addr = udp_sk.recvfrom(1024)

print(back.decode('utf-8'), addr)

時間伺服器的實現原理

1.內部小電容供電

2.遠端時間同步

"""學習併發程式設計其實就是在學習作業系統的發展史(底層邏輯)"""

1.穿孔卡片時代

cpu的利用率極低

2.聯機批處理系統

將多個程式設計師的程式一次性錄入磁帶中 之後交由輸入機輸入並由cpu執行

3.離線批處理系統

現代計算機的雛形(遠端輸入 高速磁帶 主機)

# 前提:單核cpu

多道技術

切換+儲存狀態

"""cpu工作機制

1.當某個程式進入io狀態的時候 作業系統會自動剝奪該程式的cpu執行許可權

2.當某個程式長時間占用cpu的時候 作業系統也會剝奪該程式的cpu執行許可權

"""並行與併發(******)

並行:多個程式同時執行

併發:多個程式只要看起來像同時執行即可

# 問:單核cpu能否實現並行

肯定不能,但是可以實現併發

# 問:12306可以同一時間支援幾個億的使用者買票 問是並行還是併發

肯定是併發(高併發)

星軌:微博能夠支援八個星軌

# 程序與程式的區別

程式:一堆**

程序:正在執行的程式

# 單核情況下的程序排程

程序排程演算法演變

1,fcfs 先來先服務

對短作業不友好

2,短作業優先排程演算法

對長作業不友好

3,時間片輪轉法+多級反饋佇列

先分配給新的多個程序相同的時間片

之後根據程序消耗的時間片多少分類別

# 程序三狀態圖

就緒態 執行態 阻塞態

程序要想進入執行必須先經過就緒態

# 同步與非同步

用於描述任務的提交方式

同步:提交任務之後原地等待任務的返回結果 期間不做任何事

# 阻塞與非阻塞

用於描述任務的執行狀態

阻塞:阻塞態

非阻塞: 就緒態 執行態

五,建立程序

# **層面建立程序

from multiprocessing import process

import time

import os

def test(name):

print(os.getpid()) # 獲取程序號

print(os.getppid()) # 獲取父程序號

print('%s正在執行' % name)

time.sleep(3)

print('%s已經結束' % name)

if __name__ == '__main__':

p = process(target=test, args=('jason',)) # 生成乙個程序物件

p.start() # 告訴作業系統開設乙個新的程序 非同步提交

print(os.getpid())

print('主')

"""在windows中開設程序類似於匯入模組

從上往下再次執行**

一定需要在__main__判斷語句內執行開設程序的**

在linux中是直接將**完整的複製乙份執行

不需要在__main__判斷語句內執行

"""class myprocess(process):

def __init__(self, name):

super().__init__()

self.name = name

def run(self):

print('%s正在執行' % self.name)

time.sleep(3)

print('%s已經結束' % self.name)

if __name__ == '__main__':

p = myprocess('jason')

p.start()

print('主')

print('主程序')

# 程序間資料是相互隔離的

from multiprocessing import process

money = 100

def test():

global money

money = 999

if __name__ == '__main__':

p = process(target=test)

p.start()

# 先確保子程序執行完畢了 再列印

1.current_process檢視程序號

2.os.getpid() 檢視程序號 os.getppid() 檢視父程序程序號

3.程序的名字,p.name直接預設就有,也可以在例項化程序物件的時候通過關鍵字形式傳入name=''

3.p.terminate() 殺死子程序

4.p.is_alive() 判斷程序是否存活 3,4結合看不出結果,因為作業系統需要反應時間。主程序睡0.1即可看出效果

計算機理論

作業系統跟計算機硬體是很大的關聯性,所以了解計算機理論對於學習 linux是有好處的。以下內容均摘自鳥哥的私房菜一書 計算機其實是 輸入指令與資料,經過 處理器和邏輯單元運算處理 後,產生或儲存成有用的資訊。簡單來說只要你有輸出裝置和輸入裝置,並且輸入資料讓機器產生資訊,這就可以叫做計算機了。計算機...

16 計算機理論

1.簡單語言 遞增語句 increment statement 遞減語句 decrement statement 迴圈語句 loop statement 三種語句可以組成 各種巨集 marco 巨集再組合。2.圖靈機 turing machine 磁帶tape b和1 讀寫頭 read write ...

計算機基礎理論

計算機分為硬體系統和軟體系統 硬體系統五大基本構成 運算器 控制器 儲存器 輸入裝置 輸出裝置 運算器 控制器 cpu 輸入裝置 儲存器 cpu 儲存器 輸出裝置cpu 處理器 計算機的核心 為什麼把cpu看成是計算機的核心,因為cpu裡包含很多指令集,可以yoga這些指令做一些操作。是cpu用來計...