Linux 的多線程編程的高效開發經驗

本文轉自:http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/index.html建議1:linux預設不支援遞迴鎖建議2:條件變數觸發時當沒有遇到等待的線程,則馬上又變為非觸發的。所以最好加一個等待線程個數的變數,進行判斷建議3:條件返回時的互斥鎖的解鎖問題建議3:pthread_cond_timedwait等待的時間是絕對時間建議4:回收線程資源:pthread_join 或 pthread_detach Linux

linux調度器(一)——概述

本次分析的kernel代碼為2.6.32-220。並且我們先不考慮SMP。當前linux的發送器由兩個調度器組成:主調度器,周期性調度器(兩者又統稱為核心調度器);並且每個調度器包括兩個內容:調度架構(其實質就是兩個函數架構)及調度器類。調度器類是實現了不同調度策略的執行個體,如 CFS、RT class。它們的關係如:圖 調度器的組成當前的核心支援兩種調度器類(sched_setscheduler系統調用可修改進程的策略):CFS(公平)、RT(即時);5種調度策略:SCHED_NORAML(

linux調度器(二)——CFS模型

本系列文章閱讀的core是:2.6.32-220這裡使用“模型”而不是“演算法”是因為這東西實在不好用演算法描述(但是它卻運行得很好,包括效能)。         核心思想:

linux調度器(三)——周期性調度器與CFS

註:這裡並沒有詳細分析到每個內建函式,如果要瞭解這些細節的話,可以看後面的OTHER CFS CLASS API及CFS主要的內建函式。    周期性調度器在調度架構上由scheduler_tick完成:在每一個cpu的刻度都觸發一次該函數調用,它更新執行隊列的時鐘及load,然後調用當前進程的調度器類的周期調度函數。update_rq_clock(rq); /* 更新執行隊列的時鐘rq->clock*/ update_cpu_load_active(rq); /*

linux伺服器自動對時

設定Crontab,讓郵件伺服器每天1點和網路中的時間伺服器自動對時:crontab -e0 1 * * * /usr/bin/rdate -s time-b.timefreq.bldrdoc.gov

Linux各種訊號

通過kill -l命令可以查看訊號對應的數字值 SIGHUP    終止進程    終端線路掛斷SIGINT    終止進程    中斷進程 Ctrl-CSIGQUIT   建立CORE檔案終止進程,並且產生core檔案SIGILL   建立CORE檔案      非法指令SIGTRAP  建立CORE檔案      跟蹤自陷SIGBUS   建立CORE檔案      匯流排錯誤SIGSEGV  建立CORE檔案      段非法錯誤SIGFPE  

Linux檔案系統學習(一)之相關概念

 參考文獻:《Linux核心設計與實現》http://www.ibm.com/developerworks/cn/linux/l-cn-vfs/http://www.ibm.com/developerworks/cn/linux/l-linux-filesystem/http://www.ibm.com/developerworks/cn/linux/l-cn-read/index.html 1. 重要概念“一切皆是檔案”是 Unix/Linux 的基本哲學之一。不僅普通的檔案,目錄、字元裝置、

linux調度器(四)——主調度器與CFS

       

linux調度器(七)——other cfs class api and functions

OTHER CFS CLASS APIset_curr_task_fair(rq):將cpu運行隊列裡的當前運行進程設定為cfs運行隊列裡當前啟動並執行進程(set_curr_task_fair),對於組調度則必須把它上級的se也設定為相應cfs_rq的當前運行進程。該介面主要用於修改某個進程的調度策略(__sched_setscheduler調度器類的運行隊列資訊也需要更新)或把一個進程從一個group遷移到另一個group的過程(__sched_move_task此時如果它是正在啟動並執行,

linux調度器(五)——進程管理與CFS

進程調度初始化         由於該過程涉及到進程的管理模組,這個模組的詳細過程我們將在以後的機會介紹,所以這裡,我們主要扣出與調度相關的內容。進程的建立核心入口為do_fork,首先我們簡單的看一下它的主要行為:圖 do_fork與CFS的互動        

linux調度器(八)——即時調度與SMP

即時調度器類即時調度類有兩類進程:迴圈進程SCHED_RR:迴圈進程有時間片,隨著進程的已耗用時間會減少。當時間片用完時又將其置為初值,並將進程置於隊列末尾。先進先出SCHED_FIFO:沒有時間片調度,運行後可執行任意長時間直到自己放棄CPU。實際上兩類進程在相同優先順序隊列上都是先進先出的,只是一個有時間片一個沒有時間片。   

linux調度器(九)——調度器的配置參數

調度器的配置參數/proc/sys/kernel/sched_min_granularity_ns(4000000ns):sysctl_sched_min_granularity,表示進程最少已耗用時間,防止頻繁的切換,對於互動系統(如案頭),該值可以設定得較小,這樣可以保證互動得到更快的響應(見周期調度器的check_preempt_tick過程)/proc/sys/kernel/sched_latency_ns(20000000ns):sysctl_sched_latency,表示一個運行隊

linux基本監控-vmstat

1.vmstatvmstat(Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,很多linux、unix會預設安裝。是核心線程、虛擬記憶體、磁碟、陷阱和 CPU 活動的統計資訊,不足是無法對某個進程深入分析。虛擬記憶體:系統中啟動並執行進程都需要使用記憶體,當記憶體不足時,核心會釋放某些進程所佔用但未使用的部分或所有實體記憶體,將其移到磁碟上,並將釋放的記憶體提供給需要使用的進程。文法:vmstat [ -f ] [ -i ] [ -s ] [ -I ] [ -t ]

linux升級監控-sysstat

1.安裝 ./configure make make install 二、sar 命令介紹 sar -h 用法: sar [ 選項 ] [ <時間間隔> [ <次數> ] ] 主選項和報告:         -b      I/O 和傳輸速率資訊狀況         -B      分頁狀況         -d      塊裝置狀況         -I { <中斷> | SUM | ALL | XALL }                 中斷資訊狀況  

在RedHat Linux 9下安裝DB2 v8.1

由於DB2的很多設定管理程式都是使用JAVA開發的,因此在安裝DB2之前必須JDK,而且請使用IBM的JDK,你可以到 http://www-106.ibm.com/developerworks/java/jdk/linux140/ 去下載,我機器上使用的是IBM JDK 1.4.1. 下載的JDK是一個RPM的檔案,運行 rpm -ivh IBMJava2-SDK-1.4.1-1.0.i386.rpm 將JDK預設安裝到/opt/IBMJava2-141目錄下。DB2

linux下如何儲存筆記本螢幕亮度設定(背光亮度)

原文地址:http://www.archlinuxchina.com/forum/thread-56-1-1.html本人使用的linux案頭版是 linux mint13 maya,膝上型電腦上使用。每次開機發現螢幕亮度都是最亮的,可以通過Fn+F6/F7來調節背光亮度,但重啟後還是會恢複到最大亮度。難道要每次開機之後都按Fn+F6/F7來調節亮度?一勞永逸的辦法不有木有?當然有了!1,cat /etc/default/acpi-support ,發現最後有這麼一段注釋:# Note: to

linux BASH基礎知識集錦

1,shell export 作用http://blog.sina.com.cn/s/blog_62945c360100ffvk.html 2,alias ls="ls --color=auto"     安裝了archlinux後,發現使用ls命令時,目錄和檔案並沒有以顏色區分開來,覺得很不方便,所以就到網上搜了一下,發現可以使用alias命令:在/etc/profile的末尾加入alias ls="ls --color=auto"就可以了。 3,linux/shell環境變數初探http:/

linux下產生隨機密碼的十種方法)

以下是十種產生隨機密碼的執行個體1,SHA+date+base64,密碼長度32date +%s | sha256sum | base64 | head -c 32 ; echo2,使用urandom,過濾掉其他符號,只留字母和數字,密碼長度32< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;3,使用openssl的隨機函數openssl rand -base64

linux禁止ping

ping命令是電腦之間進行相互檢測線路完好的一個應用程式,電腦間交流資料的傳輸沒有經過任何的加密處理,因此我們在用ping命令來檢測某一個伺服器時,可能在網際網路上存在某個非法分子,通過專門的駭客程式把在網路線路上傳輸的資訊中途竊取,並利用偷盜過來的資訊對指定的伺服器或者系統進行攻擊,為此我們有必要在Linux系統中禁止使用ping命令。在linux裡,如果要想使ping沒反應也就是用來忽略icmp包,因此我們可以在 Linux的命令列中輸入如下命令:echo 1 > /proc/sys/

總頁數: 4065 1 .... 313 314 315 316 317 .... 4065 Go to: 前往
Tags Index:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。