牛客網選擇題之并發

  1. 在分時操作系統中,進程調度采用()算法
    時間片輪轉
  2. 某系統中有 3 個并發進程,都需要同類資源 4 個,試問該系統不會發生死鎖的最少資源數是:9
    有n個進程,共享的同類資源數為m,則避免死鎖的最少資源數是n .(m-1)+1。
    3個進程需要各需要占用3個資源,因此當有9個資源時,剛好夠分別分給這3個進程,但是這3個進程都還需要第4個資源,因此至少需要10個資源,才不會使其陷入死鎖。有n個進程,共享的同類資源數為m,則避免死鎖的最少資源數是n *(m-1)+1。3個進程需要各需要占用3個資源,因此當有9個資源時,剛好夠分別分給這3個進程,但是這3個進程都還需要第4個資源,因此至少需要10個資源,才不會使其陷入死鎖。
  3. 假設下面的函數foo會被多線程調用,那么讓i、j、k三個變量哪些因為線程間共享訪問需要加鎖保護.()
int i = 0;
void foo()
{static int j = 0;int k = 0;i++; j++; k++;
}

多線程調用時要進行保護時,主要是針對全局變量和靜態變量的,函數內的局部變量不會受到影響。
這里i是全局變量,j是局部靜態變量,所以 要進行保護。
4. 一個全局變量tally,兩個線程并發執行(代碼段都是ThreadProc),問兩個線程都結束后,tally取值范圍為 [50,100]

int tally=0;//全局變量void ThreadProc(){for(int i=1;i<=50;i++)tally+=1;
}
  1. 多個線程可同時操作一個數據,為了保證該數據的準確性,可將操作該數據的部分改為:
    同步

  2. 下列關于輪詢任務調度和可搶占式調度區別描述錯誤的是?
    搶占式調度優點是其簡潔性,它無需記錄當前所有連接的狀態
    輪詢調度不利于后面的請求及時得到響應
    搶占式調度有利于后面的高優先級的任務也能及時得到響應
    搶占式調度實現相對較復雜且可能出現低優先級的任務長期得不到調度

  3. 下面關于并行和并發的區別,說法錯誤的是?
    并發計算是一種程序計算的形式,在系統中,至少有兩個以上的計算在同時運作,計算結果可能同時發生
    并行計算指許多指令得以同時進行的計算模式。在同時進行的前提下,可以將計算的過程分解成小部份,之后以并發方式來加以解決
    并行是同時發生的多個并發事件,并發事件之間一定要同一時刻發生
    并發是邏輯上的同時發生(simultaneous),而并行是物理上的同時發生

  4. 下列哪種操作可能帶來死鎖?
    lock(m1) lock(m2) unlock(m1) unlock(m2)
    lock(m1) lock(m2) unlock(m2) lock(m2) unlock(m1) unlock(m2)
    lock(m1) lock(m2) unlock(m1) lock(m1) unlock(m2) unlock(m1)
    lock(m1) lock(m2) unlock(m1) unlock(m2) lock(m1) unlock(m1)

假設有兩個線程,線程1執行到lock(m1),lock(m2),unlock(m1),此時線程1持有鎖m2,想要獲取鎖m1;線程2執行到lock(m1),此時線程2持有鎖m1,想要獲取鎖m2。兩個線程都拿著對方想要得到的鎖,造成死鎖。

  1. 列關于多線程,多進程,多任務的區別與關系描述正確的有?
    線程是指進程內的一條執行線路,或者說是進程中可執行代碼的單獨單元,它是操作系統的基本調度單元。
    一個進程至少有一個線程,即主線程,也可以有多個線程協同工作。
    進程從主線程開始執行,進而可以創建一個或多個附加線程來執行該進程內的并發任務,這就是基于線程的多任務

    上述描述都是錯誤的

10.輪詢任務調度與搶占式任務調度的區別?

搶占式調度優點是其簡潔性,它無需記錄當前所有連接的狀態,所以它是一種無狀態調度
輪詢調度優點是其簡潔性,它無需記錄當前所有連接的狀態,所以它是一種無狀態調度
輪詢調度實現相對較復雜
搶占式調度實現相對較復雜

11.有兩個線程,最初 n=0,一個線程執行 n++; n++; 另一個執行 n+=2; 問,最后可能的 n 值?
1
2
3
4

第一種可能情況:現在假設兩個線程沒有并行順序執行的那么結果顯然是 4。
第二種可能情況:再假設現在第一個n++ 已經執行完了 但是結果還沒有寫回內存 這個時候 n+=2 已經全部執行完 2 寫進了內存 結束 然后回到n++的寫回操作 這個時候內存就從2被改回1了,后面再來一次n++ 結果就為2。
第三種可能情況:第n+=2 先讀取n的值到寄存器 即0入寄存器 這個時候被中斷 第一個n++開始執行 并直到結束 內存被改成了1 ,然后 n+=2 繼續執行 結束后內存變為2 第二個n++再執行 結果就是3了
12.數據庫以及線程發生死鎖的原理是什么?
資源分配不當
進程運行推進的順序不合適
系統資源不足
進程過多
13.同步機制應該遵循哪些基本準則?
空閑讓進
忙則等待
有限等待
讓權等待
14.關于進程和線程,下面說法正確的是?
線程是資源分配和擁有的單位
線程和進程都可并發執行
在linux系統中,線程是處理器調度的基本單位
線程的粒度小于進程,通常多線程比多進程并發性更高

不同的線程共享相同的棧空間
15.兩個線程并發執行以下代碼,假設a是全局變量,初始為1,那么以下輸出______是可能的?(都有可能)
3 2
2 3
3 3
2 2

16.產生系統死鎖的原因是由于()
進程釋放資源
一個進程進入死循環
多個進程競爭,資源出現循環等待
多個進程競爭共享型設備

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

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

相關文章

牛客網選擇題之linux

1.在RHEL5系統中&#xff0c;小王希望將他執行的ls命令的輸出結果保存在當前目錄下文件output.ls中&#xff0c;以供日后進行分析和使用&#xff0c;但要求不覆蓋原文件的內容&#xff0c;他應該使用的命令是&#xff08; &#xff09; ls>>output.ls > …

C++ STL容器之 list 初步

#include <iostream> #include<algorithm> #include <string> #include <list> using namespace std;//3.6.4.1 list構造函數 //list<T> lstT;//list采用采用模板類實現,對象的默認構造形式&#xff1a; //list(beg, end);//構造函數將[beg, end…

C++ STL容器值set

/* 3.7.2 set常用API 3.7.2.1 set構造函數 set<T> st;//set默認構造函數&#xff1a; mulitset<T> mst; //multiset默認構造函數: set(const set& st);//拷貝構造函數 3.7.2.2 set賦值操作 set & operator(const set & st);//重載等號操作符 swap(st)…

C++ STL容器之map 簡單使用

3.8.2.1 map構造函數 map<T1, T2> mapTT;//map默認構造函數: map(const map &mp);//拷貝構造函數3.8.2.2 map賦值操作 map& operator(const map &mp);//重載等號操作符 swap(mp);//交換兩個集合容器3.8.2.3 map大小操作 size();//返回容器中元素的數目 empty…

Manacher算法圖解

看了好久的Manacher算法&#xff0c;覺得還是要自己畫一遍&#xff0c;自己把代碼寫一遍才能理解 下面分享一下&#xff0c;如果有錯&#xff0c;希望指正 簡陋版本的&#xff0c;但是他基本只是做到了求取最長回文字符串&#xff0c;嚴格來說它并不是Manacher’s Algorithm-…

Flink 客戶端操作命令及可視化工具

Flink提供了豐富的客戶端操作來提交任務和與任務進行交互。下面主要從Flink命令行、Scala Shell、SQL Client、Restful API和 Web五個方面進行整理。 在Flink安裝目錄的bin目錄下可以看到flink&#xff0c;start-scala-shell.sh和sql-client.sh等文件&#xff0c;這些都是客戶…

ySQL挑戰搭建一個簡易的成績管理系統的數據庫

文章為自己搜索網上資源&#xff0c;再在這里進行整理&#xff0c;所以標注為轉載 [實驗步驟](https://www.shiyanlou.com/courses/reports/1347700) 總結做實驗注意事項&#xff1a; 1.添加主鍵 2.主鍵和外鍵的關系 3.注意自增的書寫添加 mysql 如何修改、添加、刪除表主鍵…

網絡之DNS協議圖解

DNS是計算機域名系統 (Domain Name System) 域名系統采用類似目錄樹的等級結構。 域名服務器是指保存有該網絡中所有主機的域名和對應IP地址&#xff0c;并具有將域名轉換為IP地址功能的服務器。 域名服務器為客戶機/服務器模式中的服務器方&#xff0c;它主要有兩種形式&am…

C++ 謂詞,

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <vector> #include <algorithm> using namespace std;class GreaterThen20 { public:bool operator()(int val){return val > 20;} };//一元謂詞 void test01() {vector<int>v;v.push…

網絡之ARP

地址解析協議&#xff0c;即ARP&#xff08;Address Resolution Protocol&#xff09;&#xff0c;是根據IP地址獲取物理地址的一個TCP/IP協議。 主機發送信息時將包含目標IP地址的ARP請求廣播到網絡上的所有主機&#xff0c;并接收返回消息&#xff0c;以此確定目標的物理地址…

C++ 內建函數對象

STL內建了一些函數對象。分為:算數類函數對象,關系運算類函數對象&#xff0c;邏輯運算類仿函數。這些仿函數所產生的對象&#xff0c;用法和一般函數完全相同&#xff0c;當然我們還可以產生無名的臨時對象來履行函數功能。使用內建函數對象&#xff0c;需要引入頭文件 functi…

網絡之ICMP協議

ICMP 主要功能&#xff1a; 確認IP包是否成功送達目標地址通知在發送過程當中IP包被廢棄的具體原因改善網絡設置等 在IP通信中如果某個IP包因為某種原因未到達目標地址&#xff0c;那么這個原因由ICMP通知。 過程&#xff08;圖解TCP/IP&#xff09; ICMP類型 常見的&am…

C++ 常用算法之遍歷

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <algorithm> #include <vector> #include <functional> using namespace std;/* 遍歷算法 遍歷容器元素 param beg 開始迭代器 param end 結束迭代器 param _callback 函數回調或者函數…

網絡之NAT協議

由來&#xff1a; 2011年2月3日中國農歷新年&#xff0c; IANA對外宣布&#xff1a;IPv4地址空間最后5個地址塊已經被分配給下屬的5個地區委員會。2011年4月15日&#xff0c;亞太區委員會APNIC對外宣布&#xff0c;除了個別保留地址外&#xff0c;本區域所有的IPv4地址基本耗盡…

C++ 常用查找算法

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <algorithm> using namespace std; #include <vector> #include <string> #include <functional> /* find算法 查找元素 param beg 容器開始迭代器 param end 容器結束迭代器 para…

CentOS7卸載并安裝mysql教程

MySQL安裝 先卸載其他 刪除Mysql yum remove mysql mysql-server mysql-libs mysql-server;find / -name mysql 將找到的相關東西delete掉(rm -rf /var/lib/mysql)&#xff1b;rpm -qa|grep mysql(查詢出來的東東yum remove掉) rm /etc/my.cnf查看是否還有mysql軟件&#x…

C++ 常用排序算法

#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #include <algorithm> #include <vector> #include <functional> #include <ctime> /* merge算法 容器元素合并&#xff0c;并存儲到另一容器中 這兩個容器 必須也是…

排序穩定性的意義

首先&#xff0c;為什么會有排序算法穩定性的說法&#xff1f;只要能排好不就可以了嗎&#xff1f; 看例子 第1行是數字2 記作 1 2 第2行是數字4 記作 2 4 第3行是數字2 記作 3 2 排序后的結果&#xff08;如果看不懂命令的意思&#xff0c;參照這個博客&#xff09; 那么引入…

C++ 常用拷貝和替換算法

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <vector> #include <algorithm> #include <iterator> using namespace std;/* copy算法 將容器內指定范圍的元素拷貝到另一容器中 param beg 容器開始迭代器 param end 容器結束迭代器 p…

防火墻的基礎知識入門

文章目錄防火墻基于實現方式&#xff0c;防火墻的發展分為四個階段:Linux 環境中主要的防火墻形式TCP wrappers~~詳解~~ 粗解Tcp wrappers的認識它的基本過程是這樣的&#xff1a;iptable攻擊和防御DDOS 攻擊常見的可能受到 DDOS 攻擊體現的癥狀有&#xff1a;而常見的 DDOS 攻…