原创 Linux進程上下文切換過程context_switch詳解--Linux進程的管理與調度(二十一)

1 前景回顧1.1 Linux的調度器組成2個調度器可以用兩種方法來激活調度一種是直接的, 比如進程打算睡眠或出於其他原因放棄CPU另一種是通過週期性的機制, 以固定的頻率運行, 不時的檢測是否有必要因此當前linux的調度程序由兩個調度器

原创 內核線程的進程描述符task_struct中的mm和active_mm

task_struct進程描述符中包含兩個跟進程地址空間相關的字段mm, active_mm,struct task_struct { // ... struct mm_struct *mm; struct mm_s

原创 Linux用戶搶佔和內核搶佔詳解(概念, 實現和觸發時機)--Linux進程的管理與調度(二十)

1 非搶佔式和可搶佔式內核爲了簡化問題,我使用嵌入式實時系統uC/OS作爲例子首先要指出的是,uC/OS只有內核態,沒有用戶態,這和Linux不一樣多任務系統中, 內核負責管理各個任務, 或者說爲每個任務分配CPU時間, 並且負責任務之間的

原创 Linux進程核心調度器之主調度器schedule--Linux進程的管理與調度(十九)

主調度器在內核中的許多地方, 如果要將CPU分配給與當前活動進程不同的另一個進程, 都會直接調用主調度器函數schedule, 從系統調用返回後, 內核也會檢查當前進程是否設置了重調度標誌TLF_NEDD_RESCHED例如, 前述的週期性

原创 Linux核心調度器之週期性調度器scheduler_tick--Linux進程的管理與調度(十八)

我們前面提到linux有兩種方法激活調度器:核心調度器和 週期調度器一種是直接的, 比如進程打算睡眠或出於其他原因放棄CPU另一種是通過週期性的機制, 以固定的頻率運行, 不時的檢測是否有必要因而內核提供了兩個調度器主調度器,週期性調度器

原创 Linux進程調度器的設計--Linux進程的管理與調度(十七)

1 前景回顧1.1 進程調度內存中保存了對每個進程的唯一描述, 並通過若干結構與其他進程連接起來.調度器面對的情形就是這樣, 其任務是在程序之間共享CPU時間, 創造並行執行的錯覺, 該任務分爲兩個不同的部分, 其中一個涉及調度策略, 另外

原创 【底層原理】深入理解Cache (下)

得到了我的PC的cache參數如下: L1 Cache : 32KB , 8路組相連,linesize爲 64Byte 64個組L2 Cache:256KB 8路組相連,linesize爲 64Byte 512個組L3 Cache: 3M

原创 Linux內存描述之內存節點node--Linux內存管理(二)

1 內存節點node1.1 爲什麼要用node來描述內存這點前面是說的很明白了, NUMA結構下, 每個處理器CPU與一個本地內存直接相連, 而不同處理器之前則通過總線進行進一步的連接, 因此相對於任何一個CPU訪問本地內存的速度比訪問遠程

原创 linux內核調試技巧之一 dump_stack【轉】

在內核中代碼調用過程難以跟蹤,上下文關係複雜,確實讓人頭痛調用dump_stack()就會打印當前cpu的堆棧的調用函數了。如此,一目瞭然的就能看到當前上下文環境,調用關係了假設:遇到uvc_probe_video這麼一個函數,不知道它最終

原创 Linux進程調度策略的發展和演變--Linux進程的管理與調度(十六)

1 前言1.1 進程調度內存中保存了對每個進程的唯一描述, 並通過若干結構與其他進程連接起來.調度器面對的情形就是這樣, 其任務是在程序之間共享CPU時間, 創造並行執行的錯覺, 該任務分爲兩個不同的部分, 其中一個涉及調度策略, 另外一個

原创 【audio】耳機插拔 線控按鍵識別流程【轉】

耳機插拔/線控按鍵識別流程耳機插拔/線控按鍵識別流程1.文檔概述本文以msm8909平臺,android N爲例,介紹了通用情況下,耳機插拔的流程步驟,以及對耳機類型的識別邏輯。以方便在項目工作中經常會遇到耳機不被識別,或者識別後不能正常工

原创 系統休眠(System Suspend)和設備中斷處理

一、設備IRQ的suspend和resume本小節主要解決這樣一個問題:在系統休眠過程中,如何suspend設備中斷(IRQ)?在從休眠中喚醒的過程中,如何resume設備IRQ?一般而言,在系統suspend過程的後期,各個設備的IRQ