Time of Update: 2018-12-03
Linux核心2.4版中去掉了老版本核心中的靜態定時器機制,而只留下動態定時器。相應地在timer_bh()函數中也不再通過run_old_timers()函數來運行老式的靜態定時器。動態定時器與靜態定時器這二個概念是相對於Linux核心定時器機制的可擴充功能而言的,動態定時器是指核心的定時器隊列是可以動態變化的,然而就定時器本身而言,二者並無本質的區別。考慮到靜態定時器機制的能力有限,因此Linux核心2.4版中完全去掉了以前的靜態定時器機制。 7.6.1
Time of Update: 2018-12-03
作業系統要實現多進程,進程調度必不可少。有人說,進程調度是作業系統中最為重要的一個部分。我覺得這種說法說得太絕對了一點,就像很多人動輒就說"某某函數比某某函數效率高XX倍"一樣,脫離了實際環境,這些結論是比較片面的。 而進程調度究竟有多重要呢?
Time of Update: 2018-12-03
作為Linux下的程式開發人員,大家一定都遇到過Makefile,用make命令來編譯自己寫的程式確實是很方便。一般情況下,大家都是手工寫一個簡單Makefile,如果要想寫出一個符合自由軟體慣例的Makefile就不那麼容易了。 在本文中,將給大家介紹如何使用 autoconf和automake兩個工具來協助我們自動地產生符合自由軟體慣例的Makefile,這樣就可以象常見的GNU程式一樣,只要使用“./configure”,“make”,“make
Time of Update: 2018-12-03
使用log4j的時候,在WIN系統的時候正常顯示中文,但是發布到linux系統的時候中文就顯示成亂碼了由於log4j設定檔中沒有設定編碼格式(encoding),所以log4j就使用系統預設編碼。導致亂碼。解決方案是設定編碼格式UTF-8,方法為(有時改成UTF-8還是會亂碼,需要設定成GBK,這可能跟你輸入的字元的編碼有關):log4j.appender.logfile.encoding=UTF-8 #### file log #####log4j.appender.logfile=org.
Time of Update: 2018-12-03
最近在核心頻繁使用了自旋鎖,自旋鎖如果使用不當,極易引起死結,在此總結一下。自旋鎖是一個互斥裝置,它只有兩個值:“鎖定”和“解鎖”。它通常實現為某個整數值中的某個位。希望獲得某個特定鎖得代碼測試相關的位。如果鎖可用,則“鎖定”被設定,而代碼繼續進入臨界區;相反,如果鎖被其他人獲得,則代碼進入忙迴圈(而不是休眠,這也是自旋鎖和一般鎖的區別)並重複檢查這個鎖,直到該鎖可用為止,這就是自旋的過程。“測試並設定位”的操作必須是原子的,這樣,即使多個線程在給定時間自旋,也只有一個線程可獲得該鎖。自旋鎖最初
Time of Update: 2018-12-03
要關閉linux的防火牆,在System->Administration->Firewall and SELinux下,選擇Firewall的Disable,確定後,再查,卻發現,仍然是Enable。1) 重啟後生效:開啟: chkconfig iptables on關閉: chkconfig iptables off2) 即時生效,重啟後失效:開啟: service iptables start關閉: service iptables
Time of Update: 2018-12-03
Linux 串口編程的一些問題解決 Linux下串口編程的文章網上是滿天飛,但大都是出自一篇文章,而且寫的都是些基本的操作,像控制RTS/CTS等串口引腳狀態,接收發送位元據等,都沒有很好的說明,我在使用中遇到了些問題,寫出來,希望能對大家有所協助,少走彎路,呵呵! 我使用的作業系統是Redhat9,gcc版本是3.2.2 其實在linux下對串口的設定主要是通過termios這個結構體實現的,但是這個結構體卻沒有提供控制RTS或獲得CTS等串口引腳狀態的介面,可以通過ioctl系統調用來獲得/
Time of Update: 2018-12-03
Linux下的UDP協議編程劉 暢,彭楚武 (湖南大學電氣與資訊工程學院,湖南長沙 410082) 摘 要:介紹UDP協議,並提供一個適用於用戶端和伺服器端的執行個體子程式。 關鍵詞:Linux;UDP協議;TCP/IP協議;程式設計 UDP Protocol Program Based on LinuxLIU Chang, PENG Chuwu(School of Electrical Engineering, Hunan University,
Time of Update: 2018-12-03
Linux核心原始碼的閱讀和工具介紹 01-7-27 上午 09:38:07--------------------------------------------------------------- 隨著linux的逐步普及,現在有不少人對於Linux的安裝及設定已經比較熟悉了。與Linux 的蓬勃發展相適應,想深入瞭解Linux的也越來越多。而要想深入瞭解Linux,就需要閱讀和分析linux核心的原始碼。 Linux
Time of Update: 2018-12-03
開發板型號:友善的micro2440(帶7寸屏--嘿嘿很爽的!) bootload:vivi 系統:linux(開發板內建的,應該是2.6.29) 參考文章:http://www.100ask.net/showtopic.aspx?forumid=2&topicid=15&go=next http://www.linuxforum.net/forum/showflat.php?Cat=&Board=embedded&Number=606916&page=&
Time of Update: 2018-12-03
索引:1.建立線程pthread_create2.等待線程結束pthread_join3.分離線程pthread_detach4.建立線程鍵pthread_key_create5.刪除線程鍵pthread_key_delete6.設定線程資料pthread_setspecific7.擷取線程資料pthread_getspecific8.擷取線程標示符pthread_self9.比較線程pthread_equal10.一次執行pthread_once11.出讓執行權sched_yield12.修改
Time of Update: 2018-12-03
本問分析基於Linux 0.11核心,轉載請標明出處http://blog.csdn.net/yming0221/archive/2011/06/06/6528490.aspxcopy_mem(int nr, struct task_struct *p)函數是為進程設定段基址,限長,並複製頁表。下面是其代碼// 設定新任務的代碼和資料區段基址、限長並複製頁表。// nr 為新任務號;p 是新任務資料結構的指標。int copy_mem (int nr, struct task_struct
Time of Update: 2018-12-03
windows靜態庫檔案就是.lib檔案,動態庫檔案就是.dll檔案。內容一樣,都是將函數封裝在一起編譯後供自己或他人調用。好處在於編譯後的庫檔案看不到原始碼,可保密;同時不會因為不小心修改了函數而出問題,便於維護。 兩種庫的區別在於靜態庫被調用時直接載入到記憶體,而動態庫再是在需要的時候載入到記憶體,不使用的時候再從記憶體釋放。 unix系統的靜態庫檔案和動態庫檔案尾碼分別是.a和.so
Time of Update: 2018-12-03
本文分析基於Linux 0.11核心,轉載請表明出處http://blog.csdn.net/yming0221/archive/2011/06/05/6527337.aspx Linux在move_to_user_mode()之後,進程0通過fork()產生子進程實際就是進程1(init進程)。其中fork()是通過內嵌彙編的形式給出#define _syscall0(type,name) /type name(void) /{ /long __res; /__asm__ volatile
Time of Update: 2018-12-03
Linux是一個多使用者多任務的作業系統。多使用者是指多個使用者可以在同一時間使用電腦系統;多任務是指Linux可以同時執行幾個任務,它可以在還未執行完一個任務時又執行另一項任務。進程是Linux系統中一個重要的概念,Linux系統中一個重要特點就是可以同時啟動多個進程。根據作業系統的定義:進程是系統資源管理的最小單位。現在,多進程技術已經被許多作業系統所支援,包括Windows/NT/2000和 Linux。在作業系統設計上。
Time of Update: 2018-12-03
感覺關於linux系統基礎方面的知識越來越模糊。好些東西知道大概是怎麼回事。但是要說就說不清楚了。現在再整理一下。一、進程標識1) 什麼是進程ID每個進程都會有一個唯一非負整數的ID,就稱為進程ID,因為其具有唯一性,常用來做其它標識符的部分以保證唯一性。2) 特殊的進程IDl 0 調度進程ID,也稱為交換進程,它是核心的一部分。也被稱為系統進程l 1 inid進程,在自舉過程結束時由核心調用;i n i
Time of Update: 2018-12-03
Linux的I/O多路轉接模型: 在這種模型下,如果請求的I/O操作阻塞,它不是真正阻塞I/O,而是讓其中一個函數等待,在這期間,I/O還能進行其他動作。select()和poll()就屬於這種模型。 select()函數說明標頭檔#include<sys/types.h>#include<sys/time.h>#include<unistd.h>原型int select(int numfds,fd_set *readfds,fd_set
Time of Update: 2018-12-03
我這裡說的ioctl函數是在驅動程式裡的,因為我不知道還有沒有別的場合用到了ioctl,所以就規定了我們討論的範圍。為什麼要寫篇文章呢,是因為我前一陣子被ioctl給搞混了,這幾天才弄明白它,於是在這裡清理一下頭腦。一、 什麼是ioctl。ioctl是裝置驅動程式中對裝置的I/O通道進行管理的函數。所謂對I/O通道進行管理,就是對裝置的一些特性進行控制,例如串口的傳輸傳輸速率、馬達的轉速等等。它的調用個數如下:int ioctl(int fd, ind cmd,
Time of Update: 2018-12-03
#include<pthread.h>建立線程[原型]:int pthread_create((pthread_t * thread,pthread_attr_t * attr, void*(*start_routine)(void*),void *arg))[參數] thread: 線程標識符attr: 線程屬性設定start_routine:線程函數的起始地址arg:傳遞給start_routine的參數[返回]0:成功 -1:出錯[原型]void
Time of Update: 2018-12-03
在 Linux 上實現基於 Socket 的多進程即時通訊周欣 (jones_zhou@yahoo.com.cn), 軟體工程師簡介: 套介面(Socket)為目前 Linux 上最為廣泛使用的一種的處理序間通訊機制。但是它不能直接用來多進程之間的相互即時通訊。本文提出一個基於 Socket 的多進程之間通訊的實現方法,並給出樣本程式的實現和說明。本文的標籤: linux, socket, 上實現基於, 在, 的多進程即時通訊標記本文!發布日期: 2005 年 3 月 01 日 層級: 初級