計算機通信

一.進程和線程的區別?

1. 進程是資源分配的最小單位, 線程是cpu進行調度的最小單位。

2. 一個進程可以看做一個運行的程序, 一個進程中可以包含多個線程, 線程在進程內執行。

3. 多進程是指操作系統能同時運行多個任務(程序),多線程是指在同一程序中有多個順序流在執行。

4. 進程擁有自己的內存空間。線程使用進程的內存空間,和該進程的其他線程共享這個空間。

5. 線程可以控制同一進程的其他線程。進程無法控制兄弟進程,只能控制其子進程。

6. 線程可以使用 wait(),notify(),notifyAll()等方法直接與其他線程(同一進程)通信, 進程需要使用“進程間通信”(IPC)來與操作系統中的其他進程通信。

7. 在創建或撤消進程時,由于系統都要為之分配和回收資源,導致系統的開銷明顯大于創建或撤消線程時的開銷。

二. 什么是線程的上下文

1. 某一時間點CPU寄存器和程序計數器的內容,被稱為上下文。

2. 寄存器是CPU內部的少量速度很快的閃存。

3. 程序計數器是一個專用的寄存器,被用來表示指令序列中CPU正在執行的位置。

三.什么會引起線程的上下文切換

1. 當前線程任務正常完成,CPU調度下一個任務

2. 當前任務被掛起,比如用了sleep方法,wait方法,yeild方法等,讓出了CPU

3. 多個任務搶占鎖資源,當前任務沒搶到,就會被調度器掛起,然后調度器會執行下一個任務

4. 當前任務執行I/O等會引起阻塞的操作,調度器會掛起這個任務,然后執行下一個任務

四. Java 進程間的幾種通信方式

1. 管道(pipe): 管道是一種半雙工的通信方式,數據只能單向流動,而且只能在具有親緣關系的進程間使用。進程的親緣關系通常是指父子進程關系。

2. 有名管道 (named pipe): 有名管道也是半雙工的通信方式,但是它允許無親緣關系進程間的通信

3. 信號量(semophore): 信號量是一個計數器,可以用來控制多個進程對共享資源的訪問。它常作為一種鎖機制,防止某進程正在訪問共享資源時,其他進程也訪問該資源。因此,主要作為進程間以及同一進程內不同線程之間的同步手段。

4. 消息隊列(message queue): 消息隊列是由消息的鏈表,存放在內核中并由消息隊列標識符標識。消息隊列克服了信號傳遞信息少、管道只能承載無格式字節流以及緩沖區大 小受限等缺點

5. 信號 (sinal): 信號是一種比較復雜的通信方式,用于通知接收進程某個事件已經發生

6. 共享內存(shared memory): 共享內存就是映射一段能被其他進程所訪問的內存,這段共享內存由一個進程創建,但多個進程都可以訪問。共享內存是最快的 IPC 方式,它是針對其他進程間通信方式運行效率低而專門設計的。它往往與其他通信機制,如信號量配合使用,來實現進程間的同步和通信

7. 套接字(socket):套解口也是一種進程間通信機制,與其他通信機制不同的是,它可用于不同及其間的進程通信。

五.信號量與信號的區別?

1. 信號:(signal)是一種處理異步事件的方式。信號是比較復雜的通信方式,用于通知接受進程有某種事件發生,除了用于進程外,還可以發送信號給進程本身。

2. 信號量:(Semaphore)進程間通信處理同步互斥的機制。是在多線程環境下使用的一種設施, 它負責協調各個線程, 以保證它們能夠正確、合理的使用公共資源。

3. 簡單地說,信號就是一種異步通信,通知進程某種事件的發生;信號量是進程/線程同步與互斥的一種機制,保證進程/線程間之間的有序執行或對公共資源的有序訪問。

六.select、poll、epoll 區別有哪些?

1. select:它僅僅知道了,有 I/O 事件發生了,卻并不知道是哪那幾個流(可能有一個,多個, 甚至全部),我們只能無差別輪詢所有流,找出能讀出數據,或者寫入數據的流,對他們進行操作。所以 select 具有 O(n)的無差別輪詢復雜度,同時處理的流越多,無差別輪詢時間就越長。

2. poll:poll 本質上和 select 沒有區別,它將用戶傳入的數組拷貝到內核空間,然后查詢每個 fd 對應的設備狀態,但是它沒有最大連接數的限制,原因是它是基于鏈表來存儲的.

3. epoll:epoll 可以理解為 event poll,不同于忙輪詢和無差別輪詢,epoll 會把哪個流發生了怎樣的 I/O 事件通知我們。所以我們說 epoll 實際上是事件驅動(每個事件關聯上 fd)的,此時我們對這些流的操作都是有意義的。(復雜度降低到了 O(1)),通過紅黑樹和雙鏈表數據結構,并結合回調機制,造就了 epoll 的高效,epoll_create(),epoll_ctl()和 epoll_wait()系統調用。

七.select 和 epoll 的底層結構是什么原理

1. select: 支持阻塞操作的設備驅動通常會實現一組自身的等待隊列如讀/寫等待隊列用于支持上層(用戶層)所需的 BLOCK 或 NONBLOCK 操作。當應用程序通過設備驅動訪問該設備時 (默認為 BLOCK 操作),若該設備當前沒有數據可讀或寫,則將該用戶進程插入到該設備驅動對應的讀/寫等待隊列讓其睡眠一段時間,等到有數據可讀/寫時再將該進程喚醒。 select 就是巧妙的利用等待隊列機制讓用戶進程適當在沒有資源可讀/寫時睡眠,有資源可讀/寫時喚醒。

2. epoll: epoll由三個系統調用組成,分別是 epoll_create,epoll_ctl 和 epoll_wait。 epoll_create 用于創建和初始化一些內部使用的數據結構;epoll_ctl 用于添加,刪除或者修改指定的 fd 及其期待的事件,epoll_wait 就是用于等待任何先前指定的 fd 事件。

八.當你用瀏覽器打開一個鏈接的時候,計算機做了哪些工作步驟?

1. 域名解析

2. 發起 TCP 的 3 次握手

3. 建立 TCP 連接后發起 http 請求

4. 服務器響應 http 請求

5. 瀏覽器得到 html 代碼

6. 瀏覽器解析 html 代碼,并請求 html 代碼中的資源(如 js、css、圖片等)

7. 瀏覽器對頁面進行渲染呈現給用戶 。

九.UDP 協議和 TCP 協議的區別?

1. TCP 基于連接,UDP 基于無連接

2. TCP 要求系統資源較多,UDP 較少

3. UDP 程序結構較簡單

4. TCP 保證數據正確性,UDP 可能丟包

5. TCP 保證數據順序,UDP 不保證

十.父進程如果宕掉,子進程會怎樣?

1. 如果父進程是會話首進程,那么父進程退出后,子進程也會退出;

2. 如果父進程不是會話首 進程,那么父進程退出后,子進程不會退出,而它的一個或多個子進程還在運行,那么這些子 進程就成為孤兒進程。

十一. 孤兒進程和僵尸進程有什么區別?

1. 孤兒進程:父進程結束了,而它的一個或多個子進程還在運行,那么這些子進程就成為孤兒進 程(father died)。子進程的資源由 init 進程(進程號 PID = 1)回收。

2. 僵尸進程:子進程退出了,但是父進程沒有用 wait 或 waitpid 去獲取子進程的狀態信息, 那么子進程的進程描述符仍然保存在系統中,這種進程稱為僵死進程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11097.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11097.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11097.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據挖掘原理與應用------分類預測

在數據挖掘和機器學習領域,TPR(True Positive Rate)是指在實際為陽性的情況下,模型正確預測為陽性的比例。TPR也被稱為靈敏度(Sensitivity)或召回率(Recall)。它是評估分類模型性能的…

【Linux】探索 Linux du 命令:管理磁盤空間的利器

給我一個擁抱 給我肩膀靠靠 你真的不需要 對我那么好 思念就像毒藥 讓人受不了的煎熬 我會迷戀上癮賴在你懷抱 🎵 陶鈺玉《深夜地下鐵》 在 Linux 系統管理中,磁盤空間管理是一項基礎而重要的任務。du(disk usage&#…

如何解決IntelliJ IDEA中pom.xml依賴項引發的安全漏洞黃線警告問題

背景 在開發過程中,當我們在pom.xml文件中添加依賴項時,經常會發現IntelliJ IDEA報出黃色警告線條,提示存在潛在的安全漏洞。警告的具體展現形式如下: 解決方案 首先,打開設置菜單界面,接著選擇編輯器選…

vue3土味情話pinia可以持久保存再次修改App樣式

我是不是你最疼愛的人-失去愛的城市 <template><div class"talk"><button click"getLoveTalk">土味情話</button><ul><li v-for"talk in talkStore.talkList" :key"talk.id">{{ talk.title }}<…

用 Supabase CLI 進行本地開發環境搭建

文章目錄 &#xff08;零&#xff09;前言&#xff08;一&#xff09;Supabase CLI&#xff08;1.1&#xff09;安裝 Scoop&#xff08;1.2&#xff09;用 Scoop 安裝 Supabase CLI &#xff08;二&#xff09;本地項目環境&#xff08;2.1&#xff09;初始化項目&#xff08;2…

基于gin框架的文件上傳(逐行解析)

基于gin框架的文件上傳(逐行解析)記錄一下使用gin框架完成一個文件上傳的功能&#xff0c;一下是實現該功能的代碼&#xff0c;適合小白&#xff0c;代碼都有逐行解釋&#xff01; app.go: package routerimport ("chat/service""github.com/gin-gonic/gin&qu…

網絡工程師練習題

網絡工程師練習題 網橋怎樣知道網絡端口連接了那些網站?如果從端口收到一個數據幀,則將其源地址記入該端口的數據庫當網橋連接的局域網出現環路時怎么辦?運行生成樹協議阻塞一部分端口。使用IEEE 802.1q協議,最多可以配置4094個VLAN。VLAN中繼協議(VTP)有不同的工作模式,…

C++異常詳解

文章目錄 前言一、回顧C語言二、異常的概念三、異常的使用1.異常的拋出和捕獲2.異常的重新捕獲 三.異常安全與異常規范1.異常安全2.異常規范 四.自定義異常體系五.C標準庫的異常體系六.異常優缺點練習題總結 前言 在本篇文章中&#xff0c;我們將會詳細介紹一下有關C異常的講解…

微服務架構:注冊中心 Eureka、ZooKeeper、Consul、Nacos的選型對比詳解

微服務架構&#xff08;Microservices Architecture&#xff09;是一種基于服務拆分的分布式架構模式&#xff0c;旨在將復雜的單體應用程序拆分為一組更小、更獨立的服務單元。這些服務單元可以獨立開發、測試、部署&#xff0c;并使用不同的技術棧和編程語言。它們通過輕量級…

[華為OD] C卷 dfs 特殊加密算法 100

題目&#xff1a; 有一種特殊的加密算法&#xff0c;明文為一段數字串&#xff0c;經過密碼本查找轉換&#xff0c;生成另一段密文數字串。 規則如下 1?明文為一段數字串由0-9組成 2.密碼本為數字0-9組成的二維數組 3?需要按明文串的數字順序在密碼本里找到同樣的數字串…

PUBG非升級實用槍皮-部分盤點

藏匿處的黑貨箱武器需要耗費高額成本才能升級 對于像我這樣的日常休閑玩家來說是一筆不小的&#xff08;巨大的&#xff01;&#xff09;負擔 其實有許多普通非升級槍皮也是不錯的選擇 今天就來盤點一下我自己日常在用的普通皮 來看看你是不是也在用一樣的 &#xff08;僅是盤點…

【OceanBase診斷調優】—— 租戶資源統計項及其查詢方法

本文主要介紹 OceanBase 數據庫中租戶資源統計項及其查詢方法。 適用版本 OceanBase 數據庫 V4.1.x、V4.2.x 版本。 CPU 資源統計項 邏輯 CPU 使用率&#xff08;線程處理請求的時間占比&#xff09;。 通過虛擬表 __all_virtual_sysstat 在 SYS 系統租戶下&#xff0c;查看…

AtCoder Beginner Contest 308 A題 New Scheme

A題&#xff1a;New Scheme 標簽&#xff1a;模擬 題意&#xff1a;給定 8 8 8個數的序列&#xff0c;詢問這些數是否滿足以下條件&#xff1a; 在 100 100 100到 675 675 675之間且能被 25 25 25整除序列是單調非遞減的 題解&#xff1a;按題意模擬判斷就好了。 代碼&#…

09.zabbix自定義模塊并使用

zabbix自定義模塊并使用 根據tcp的11中狀態獲取值&#xff0c;進行批量配置監控項 [rootyunlong66 ~]# cat /etc/zabbix/zabbix_agentd.d/tcp.conf UserParameterESTABLISHED,netstat -antp |grep -c ESTABLISHED UserParameterSYN_SENT,netstat -antp |grep -c SYN_SENT Use…

Obsidian/Typora設置圖床

在obsidian中默認圖片是保存在本地的&#xff0c;但是在要導出文檔上傳到網上時&#xff0c;由于圖片保存在本地&#xff0c;會出現無法加載圖片的問題。 這里引用的一段話&#xff1a; 這里使用picgo-core和gitee實現圖床功能&#xff0c; 參考1&#xff1a; Ubuntu下PicGO配…

Github學習

1.Git與Github 區別: Git是一個分布式版本控制系統&#xff0c;簡單的說就是一個軟件&#xff0c;用于記錄一個或若干個文件內容變化&#xff0c;以便將來查閱特點版本修訂情況的軟件。 Github是一個為用戶提高Git服務的網站&#xff0c;簡單說就是一個可以放代碼的地方。Gi…

C語言 | Leetcode C語言題解之第85題最大矩形

題目&#xff1a; 題解&#xff1a; int maximalRectangle(char** matrix, int matrixSize, int* matrixColSize) {int m matrixSize;if (m 0) {return 0;}int n matrixColSize[0];int left[m][n];memset(left, 0, sizeof(left));for (int i 0; i < m; i) {for (int j …

SeetaFace6人臉活體檢測C++代碼實現Demo

SeetaFace6包含人臉識別的基本能力&#xff1a;人臉檢測、關鍵點定位、人臉識別&#xff0c;同時增加了活體檢測、質量評估、年齡性別估計&#xff0c;并且順應實際應用需求&#xff0c;開放口罩檢測以及口罩佩戴場景下的人臉識別模型。 官網地址&#xff1a;https://github.co…

【補充】圖神經網絡前傳——DeepWalk

論文閱讀 論文&#xff1a;https://arxiv.org/pdf/1403.6652 參考&#xff1a;【論文逐句精讀】DeepWalk&#xff0c;隨機游走實現圖向量嵌入&#xff0c;自然語言處理與圖的首次融合_隨機游走圖嵌入-CSDN博客 abstract DeepWalk是干什么的&#xff1a;在一個網絡中學習頂點…

【Mac】Ghost Buster Pro(蘋果電腦內存清理專家) v3.2.5安裝教程

軟件介紹 Ghost Buster pro是一款針對Mac系統的電腦清理和優化工具&#xff0c;可以幫助用戶清理系統垃圾、修復注冊表錯誤、卸載不需要的軟件、管理啟動項等&#xff0c;從而提高系統性能和穩定性。 安裝教程 1.打開鏡像包&#xff0c;拖動「Ghost Buster Pro」到應用程序中…