大數據開發面試筆試資料收集

大數據開發筆試題

 

鎖產生的原因及四個必要條件

https://blog.csdn.net/u014419806/article/details/52856589

 

. 什麼是死鎖?

     如果一個進程集合裏面的每個進程都在等待這個集合中的其他一個進程(包括自身)才能繼續往下執行,若無外力他們將無法推進,這種情況就是死鎖,處於死鎖狀態的進程稱爲死鎖進程

. 死鎖產生的原因?

1.因競爭資源發生死鎖 現象:系統中供多個進程共享的資源的數目不足以滿足全部進程的需要時,就會引起對諸資源的競爭而發生死鎖現象

1)可剝奪資源和不可剝奪資源:可剝奪資源是指某進程在獲得該類資源時,該資源同樣可以被其他進程或系統剝奪,不可剝奪資源是指當系統把該類資源分配給某個進程時,不能強制收回,只能在該進程使用完成後自動釋放  

2)競爭不可剝奪資源:系統中不可剝奪資源的數目不足以滿足諸進程運行的要求,則發生在運行進程中,不同的進程因爭奪這些資源陷入僵局。

舉例說明:  資源A,B 進程C,D

資源A,B都是不可剝奪資源:一個進程申請了之後,不能強制收回,只能進程結束之後自動釋放。內存就是可剝奪資源

進程C申請了資源A,進程D申請了資源B

接下來C的操作用到資源BD的資源用到資源A。但是C,D都得不到接下來的資源,那麼就引發了死鎖。

3)競爭臨時資源

2.進程推進順序不當發生死鎖

 

. 產生死鎖的四個必要條件?

1)互斥條件:進程對所分配到的資源不允許其他進程進行訪問,若其他進程訪問該資源,只能等待,直至佔有該資源的進程使用完成後釋放該資源

2)請求和保持條件:進程獲得一定的資源之後,又對其他資源發出請求,但是該資源可能被其他進程佔有,此事請求阻塞,但又對自己獲得的資源保持不放

3)不可剝奪條件:是指進程已獲得的資源,在未完成使用之前,不可被剝奪,只能在使用完後自己釋放

4)環路等待條件:是指進程發生死鎖後,必然存在一個進程--資源之間的環形鏈

 

. 處理死鎖的基本方法

1.預防死鎖:通過設置一些限制條件,去破壞產生死鎖的必要條件

2.避免死鎖:在資源分配過程中,使用某種方法避免系統進入不安全的狀態,從而避免發生死鎖

3.檢測死鎖:允許死鎖的發生,但是通過系統的檢測之後,採取一些措施,將死鎖清除掉

4.解除死鎖:該方法與檢測死鎖配合使用

Linux進程間的通信方式和原理【轉

https://blog.csdn.net/biqioso/article/details/80025726

進程的概

  • 進程是操作系統的概念,每當我們執行一個程序時,對於操作系統來講就創建了一個進程,程中,伴隨着源的分配和放。可以認爲進程是一個程序的一次程。

進程通信的概

  • 是相互獨立的,一般而言是不能相互訪問的。但很多情況下需要互相通信,來完成系的某功能。程通與內核及其它程之的互相通信來協調的行

進程通信的應用場

  • 數據傳輸:一個進程需要將它的數據發送給另一個進程,發送的數據量在一個字節到幾兆字節之間。
  • 共享數據:多個進程想要操作共享數據,一個進程對共享數據的修改,別的進程應該立刻看到。
  • 通知事件:一個進程需要向另一個或一組進程發送消息,通知它(它們)發生了某種事件(如進程終止時要通知父進程)。
  • 資源共享:多個進程之間共享同樣的資源。爲了作到這一點,需要內核提供鎖和同步機制。
  • 進程控制:有些進程希望完全控制另一個進程的執行(如Debug進程),此時控制進程希望能夠攔截另一個進程的所有陷入和異常,並能夠及時知道它的狀態改變。

進程通信的方

管道( pipe )

管道包括三種:

  • 普通管道PIPE 通常有兩種限制,一是,只能傳輸;二是只能在父子或者兄弟使用.
  • 流管道s_pipe: 去除了第一種限制,爲半雙工,只能在父子或兄弟進程間使用,可以雙向傳輸.
  • 命名管道:name_pipe:去除了第二種限制,可以在多並不相關的程之間進行通.

數據倉庫的架構與設計

 

https://blog.csdn.net/trigl/article/details/68944434

ETL

https://www.cnblogs.com/yjd_hycf_space/p/7772722.html

Kafka基本使用介紹

https://blog.csdn.net/wing_93/article/details/78513782

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章