欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

易語言關(guān)于程序進程和線程的基礎(chǔ)知識

 更新時間:2018年12月04日 14:03:03   作者:三葉資源網(wǎng)  
今天小編就為大家分享一篇關(guān)于易語言關(guān)于程序進程和線程的基礎(chǔ)知識,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

程序是計算機指令的集合,它以文件的形式存儲在磁盤上。

進程:通常被定義為一個正在運行的程序的實例,是一個程序在其自身的地址空間中的一次執(zhí)行活動。

進程是資源申請、調(diào)度和獨立運行的單位,因此,它使用系統(tǒng)中的運行資源;而程序不能申請系統(tǒng)資源,不能被系統(tǒng)調(diào)度,也不能作為獨立運行的單位,因此,它不占用系統(tǒng)的運行資源。

進程由兩個部分組成:

  •  1、操作系統(tǒng)用來管理進程的內(nèi)核對象。內(nèi)核對象也是系統(tǒng)用來存放關(guān)于進程的統(tǒng)計信息的地方。
  •  2、地址空間。它包含所有可執(zhí)行模塊或DLL模塊的代碼和數(shù)據(jù)。它還包含動態(tài)內(nèi)存分配的空間。如線程堆棧和堆分配空間。

進程是不活動的。進程從來不執(zhí)行任何東西,它只是線程的容器。若要使進程完成某項操作,它必須擁有一個在它的環(huán)境中運行的線程,此線程負責(zé)執(zhí)行包含在進程的地址空間中的代碼。

單個進程可能包含若干個線程,這些線程都“同時” 執(zhí)行進程地址空間中的代碼。

每個進程至少擁有一個線程,來執(zhí)行進程的地址空間中的代碼。當創(chuàng)建一個進程時,操作系統(tǒng)會自動創(chuàng)建這個進程的第一個線程,稱為主線程。此后,該線程可以創(chuàng)建其他的線程。

進程地址空間

系統(tǒng)賦予每個進程獨立的虛擬地址空間。對于32位進程來說,這個地址空間是4GB。

每個進程有它自己的私有地址空間。進程A可能有一個存放在它的地址空間中的數(shù)據(jù)結(jié)構(gòu),地址是0x12345678,而進程B則有一個完全不同的數(shù)據(jù)結(jié)構(gòu)存放在它的地址空間中,地址是0x12345678。當進程A中運行的線程訪問地址為0x12345678的內(nèi)存時,這些線程訪問的是進程A的數(shù)據(jù)結(jié)構(gòu)。當進程B中運行的線程訪問地址為0x12345678的內(nèi)存時,這些線程訪問的是進程B的數(shù)據(jù)結(jié)構(gòu)。進程A中運行的線程不能訪問進程B的地址空間中的數(shù)據(jù)結(jié)構(gòu),反之亦然。

4GB是虛擬的地址空間,只是內(nèi)存地址的一個范圍。在你能成功地訪問數(shù)據(jù)而不會出現(xiàn)非法訪問之前,必須賦予物理存儲器,或者將物理存儲器映射到各個部分的地址空間。

4GB虛擬地址空間中,2GB是內(nèi)核方式分區(qū),供內(nèi)核代碼、設(shè)備驅(qū)動程序、設(shè)備I/O高速緩沖、非頁面內(nèi)存池的分配和進程頁面表等使用,而用戶方式分區(qū)使用的地址空間約為2GB,這個分區(qū)是進程的私有地址空間所在的地方。一個進程不能讀取、寫入、或者以任何方式訪問駐留在該分區(qū)中的另一個進程的數(shù)據(jù)。對于所有應(yīng)用程序來說,該分區(qū)是維護進程的大部分數(shù)據(jù)的地方。

線程由兩個部分組成:

  •  1、線程的內(nèi)核對象,操作系統(tǒng)用它來對線程實施管理。內(nèi)核對象也是系統(tǒng)用來存放線程統(tǒng)計信息的地方。
  •  2、線程堆棧,它用于維護線程在執(zhí)行代碼時需要的所有參數(shù)和局部變量。

當創(chuàng)建線程時,系統(tǒng)創(chuàng)建一個線程內(nèi)核對象。該線程內(nèi)核對象不是線程本身,而是操作系統(tǒng)用來管理線程的較小的數(shù)據(jù)結(jié)構(gòu)??梢詫⒕€程內(nèi)核對象視為由關(guān)于線程的統(tǒng)計信息組成的一個小型數(shù)據(jù)結(jié)構(gòu)。

線程總是在某個進程環(huán)境中創(chuàng)建。系統(tǒng)從進程的地址空間中分配內(nèi)存,供線程的堆棧使用。新線程運行的進程環(huán)境與創(chuàng)建線程的環(huán)境相同。因此,新線程可以訪問進程的內(nèi)核對象的所有句柄、進程中的所有內(nèi)存和在這個相同的進程中的所有其他線程的堆棧。這使得單個進程中的多個線程確實能夠非常容易地互相通信。

線程只有一個內(nèi)核對象和一個堆棧,保留的記錄很少,因此所需要的內(nèi)存也很少。

因為線程需要的開銷比進程少,因此在編程中經(jīng)常采用多線程來解決編程問題,而盡量避免創(chuàng)建新的進程。

操作系統(tǒng)為每一個運行線程安排一定的CPU時間 —— 時間片。系統(tǒng)通過一種循環(huán)的方式為線程提供時間片,線程在自己的時間內(nèi)運行,因時間片相當短,因此,給用戶的感覺,就好像線程是同時運行的一樣。

如果計算機擁有多個CPU,線程就能真正意義上同時運行了。

互斥對象

互斥對象(mutex)屬于內(nèi)核對象,它能夠確保線程擁有對單個資源的互斥訪問權(quán)。

互斥對象包含一個使用數(shù)量,一個線程ID和一個計數(shù)器。

ID用于標識系統(tǒng)中的哪個線程當前擁有互斥對象,計數(shù)器用于指明該線程擁有互斥對象的次數(shù)。事件對象

事件對象也屬于內(nèi)核對象,包含一個使用計數(shù),一個用于指明該事件是一個自動重置的事件還是一個人工重置的事件的布爾值,另一個用于指明該事件處于已通知狀態(tài)還是未通知狀態(tài)的布爾值。

有兩種不同類型的事件對象。一種是人工重置的事件,另一種是自動重置的事件。當人工重置的事件得到通知時,等待該事件的所有線程均變?yōu)榭烧{(diào)度線程。當一個自動重置的事件得到通知時,等待該事件的線程中只有一個線程變?yōu)榭烧{(diào)度線程。

關(guān)鍵代碼段

關(guān)鍵代碼段(臨界區(qū))工作在用戶方式下。

關(guān)鍵代碼段(臨界區(qū))是指一個小代碼段,在代碼能夠執(zhí)行前,它必須獨占對某些資源的訪問權(quán)。

線程死鎖

哲學(xué)家進餐的問題

線程1擁有了臨界區(qū)對象A,等待臨界區(qū)對象B的擁有權(quán),線程2擁有了臨界區(qū)對象B,等待臨界區(qū)對象A的擁有權(quán),就造成了死鎖?;コ鈱ο?、事件對象與關(guān)鍵代碼段的比較

互斥對象和事件對象屬于內(nèi)核對象,利用內(nèi)核對象進行線程同步,速度較慢,但利用互斥對象和事件對象這樣的內(nèi)核對象,可以在多個進程中的各個線程間進行同步。

關(guān)鍵代碼段是工作在用戶方式下,同步速度較快,但在使用關(guān)鍵代碼段時,很容易進入死鎖狀態(tài),因為在等待進入關(guān)鍵代碼段時無法設(shè)定超時值。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • 易語言API取文本長度圖文講解

    易語言API取文本長度圖文講解

    在本篇內(nèi)容里小編給大家分享了關(guān)于易語言API取文本長度圖文講解和知識點分享,需要的參考下。
    2018-12-12
  • 易語言制作QQ前臺全自動無限加好友的代碼

    易語言制作QQ前臺全自動無限加好友的代碼

    今天小編就為大家分享一篇關(guān)于易語言制作QQ前臺全自動無限加好友的代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 易語言編寫調(diào)用dll文件方法總結(jié)

    易語言編寫調(diào)用dll文件方法總結(jié)

    在本篇文章里我們給大家總結(jié)了易語言編寫調(diào)用dll文件方法,有興趣的朋友們可以參考學(xué)習(xí)下。
    2018-11-11
  • 易語言統(tǒng)計代碼行數(shù)與API的工具

    易語言統(tǒng)計代碼行數(shù)與API的工具

    今天小編就為大家分享一篇關(guān)于易語言統(tǒng)計代碼行數(shù)與API的工具,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 如何編譯下載的易語言源碼

    如何編譯下載的易語言源碼

    今天給大家分享的是關(guān)于易語言編譯源碼的相關(guān)知識點內(nèi)容,有需要的朋友們跟著操作下吧。
    2018-12-12
  • 易語言整數(shù)型參數(shù)傳遞詳解

    易語言整數(shù)型參數(shù)傳遞詳解

    在本文里小編給大家分享了關(guān)于易語言整數(shù)型參數(shù)傳遞的相關(guān)知識點內(nèi)容,需要的可以學(xué)習(xí)下。
    2018-12-12
  • 易語言制作編輯框輸入的字符以星號拼出的小程序

    易語言制作編輯框輸入的字符以星號拼出的小程序

    今天小編就為大家分享一篇關(guān)于易語言制作編輯框輸入的字符以星號拼出的小程序,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-11-11
  • 零基礎(chǔ)易語言入門教程(五)之邏輯型數(shù)據(jù)類型

    零基礎(chǔ)易語言入門教程(五)之邏輯型數(shù)據(jù)類型

    這篇文章主要介紹了零基礎(chǔ)易語言入門教程(五)之邏輯型數(shù)據(jù)類型的相關(guān)資料,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-05-05
  • 易語言取整命令使用講解

    易語言取整命令使用講解

    今天小編就為大家分享一篇關(guān)于易語言取整命令使用講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-11-11
  • 易語言在畫板中寫出指定文本當畫板中已滿會自動滾屏

    易語言在畫板中寫出指定文本當畫板中已滿會自動滾屏

    今天小編就為大家分享一篇關(guān)于易語言在畫板中寫出指定文本當畫板中已滿會自動滾屏,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-11-11

最新評論