linux系統編程之進程(五):終端、作業控制與守護進程

一、終端的概念在UNIX系統中,使用者通過終端登入系統後得到一個Shell進程,這個終端成為Shell進程的控制終端(Controlling

linux系統編程之訊號(一):訊號基本概述

一、為了理解訊號,先從我們最熟悉的情境說起:1. 使用者輸入命令,在Shell下啟動一個前台進程。2. 使用者按下Ctrl-C,這個鍵盤輸入產生一個硬體中斷。3. 如果CPU當前正在執行這個進程的代碼,則該進程的使用者空間代碼暫停執行,CPU從使用者態切換到核心態處理硬體中斷。4. 終端驅動程式將Ctrl-C解釋成一個SIGINT訊號,記在該進程的PCB中(也可以說發送了一個SIGINT訊號給該進程)。5. 當某個時刻要從核心返回到該進程的使用者空間代碼繼續執行之前,首先處理PCB中記錄的訊號,

linux網路編程之posix 線程(三):posix 訊號量與互斥鎖 樣本生產者–消費者問題

一、posix 訊號量訊號量的概念參見這裡。前面也講過system v 訊號量,現在來說說posix 訊號量。system v 訊號量只能用於進程間同步,而posix 訊號量除了可以進程間同步,還可以線程間同步。system v 訊號量每次PV操作可以是N,但Posix 訊號量每次PV只能是1。除此之外,posix 訊號量還有命名和匿名之分(man 7 sem_overview):1、命名訊號量名字以/somename 形式分辨,只能有一個/ ,且總長不能超過NAME_MAX - 4(一般是25

linux網路編程之posix 線程(四):posix 條件變數與互斥鎖 樣本生產者–消費者問題

一、posix 條件變數一種線程間同步的情形:線程A需要等某個條件成立才能繼續往下執行,現在這個條件不成立,線程A就阻塞等待,而線程B在執行過程中使這個條件成立了,就喚醒線程A繼續執行。在pthread庫中通過條件變數(Condition Variable)來阻塞等待一個條件,或者喚醒等待這個條件的線程。Condition Variable用pthread_cond_t類型的變數表示,和Mutex的初始化和銷毀類似,pthread_cond_init函數初始化一個Condition

linux系統編程之進程(三):exec系列函數和system函數

一、exec替換進程映象在進程的建立上Unix採用了一個獨特的方法,它將進程建立與載入一個新進程映象分離。這樣的好處是有更多的餘地對兩種操作進行管理。當我們建立了一個進程之後,通常將子進程替換成新的進程映象,這可以用exec系列的函數來進行。當然,exec系列的函數也可以將當前進程替換掉。二、exec關聯函數組包含標頭檔<unistd.h>功能用exec函數可以把當前進程替換為一個新進程。exec名下是由多個關聯函數組成的一個完整系列,標頭檔<unistd.h>原型   

linux系統編程之基礎必備(五):Linux進程地址空間和虛擬記憶體

一、虛擬記憶體先來看一張圖(來自《Linux核心完全剖析》),如下:分段機制:即分成程式碼片段,資料區段,堆棧段。每個記憶體段都與一個特權級相關聯,即0~3,0具有最高特權級(核心),3則是最低特權級(使用者),每當程式試圖訪問(許可權又分為可讀、可寫和可執行)一個段時,當前特權級CPL就會與段的特權級進行比較,以確定是否有許可權訪問。每個特權級都有自己的程式棧,當程式從一個特權級切換到另一個特權級上執行時,堆棧段也隨之改換到新層級的堆棧中。段選擇符:每個段都有一個段選擇符。段選擇符指明段的大小

linux系統編程之檔案與I/O(五):檔案的核心結構file和實現重新導向

一、開啟檔案核心資料結構1、一個進程開啟兩個檔案檔案狀態標誌:讀、寫、追加、同步、非阻塞等2、一個進程兩次開啟同一檔案3、兩個進程開啟同一檔案樣本程式: C++ Code 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960/****************************************************

linux系統編程之進程(一):進程基本概述

一、什麼是進程從使用者的角度來看進程是程式的一次執行過程。從作業系統的核心來看,進程是作業系統分配的記憶體、CPU時間片等資源的基本單位。進程是資源分派的最小單位。每一個進程都有自己獨立的地址空間與執行狀態。像UNIX這樣的多任務作業系統能夠讓許多程式同時運行,每一個運行著的程式就構成了一個進程。二、進程資料結構進程的靜態描述:由三部分組成:PCB、有關程式段和該程式段對其進行操作的資料結構集。進程式控制制塊:用於描述進程情況及控制進程運行所需的全部資訊。程式碼片段:是進程中能被進程發送器在CP

linux下網卡網路流量監控工具

個人比較喜歡iftop,它能動態用簡單的ASC表徵圖識網卡當前流量首行是網路流量刻度,中間是與其它機器的流量,有個白底的bar直觀的標識流量變化,後三列資料分別表示:1. preceding 2 seconds 過去兩秒鐘的流量(traffic)2. around half that amount over the preceding 10s 過去十秒鐘流量的一半3. a fifth of that over the whole of the last 40s

linux系統編程之進程(二):fork函數相關總結

一、fork系統調用包含標頭檔 <sys/types.h> 和 <unistd.h>函數功能:建立一個子進程函數原型         pid_t

linux系統編程之訊號(四):訊號的捕捉與sigaction函數

一、核心如何?訊號的捕捉如果訊號的處理動作是使用者自訂函數,在訊號遞達時就調用這個函數,這稱為捕捉訊號。由於訊號處理函數的代碼是在使用者空間的,處理過程比較複雜,舉例如下:1. 使用者程式註冊了SIGQUIT訊號的處理函數sighandler。2. 當前正在執行main函數,這時發生中斷或異常切換到核心態。3. 在中斷處理完畢後要返回使用者態的main函數之前檢查到有訊號SIGQUIT遞達。4.

linux網路編程之TCP/IP基礎(二):利用ARP和ICMP協議解釋ping命令

一、MTU乙太網路和IEEE 802.3對資料幀的長度都有限制,其最大值分別是1500和1492位元組,將這個限制稱作傳輸單元最大值(MTU,Maximum Transmission

linux網路編程之socket(十四):基於UDP協議的網路程式

一、是典型的UDP用戶端/伺服器通訊過程下面依照通訊流程,我們來實現一個UDP回射客戶/伺服器 #include <sys/types.h> #include <sys/socket.h>  ssize_t send(int sockfd, const void *buf, size_t len, int flags); ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const

linux系統編程之基礎必備(七):read/write函數與(非)阻塞I/O的概念

一、read/write 函數read函數從開啟的裝置或檔案中讀取資料。#include <unistd.h>ssize_t read(int fd, void *buf, size_t

linux系統編程之檔案與I/O(四):檔案的屬性

一、讀取檔案中繼資料int stat(const char *path, struct stat *buf);int fstat(int fd, struct stat *buf);int lstat(const char *path, struct stat *buf); stat() stats the file pointed to by path and fills in buf.  lstat()  is  identical to stat(), except that if

linux網路編程之TCP/IP基礎(一):TCP/IP協議棧與資料包封裝

一、ISO/OSI參考模型OSI(open system interconnection)開放系統互聯模型是由ISO(International Organization for Standardization)國際標準組織定義的網路分層模型,共七層,如。物理層(Physical Layer):物理層定義了所有電子及物理裝置的規範,為上層的傳輸提供了一個物理介質,本層中資料轉送的單位為位元(bit)。屬於本層定義的規範有EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-

linux網路編程之TCP/IP基礎(三):IP資料報格式和IP地址路由

一、IP資料報格式IP資料報格式如下:版本IP協議版本號碼,長度為4位,IPv4此欄位值為4,IPv6此欄位值為6首部長度以32位的字為單位,該欄位長度為4位,最小值為5,即不帶任何選項的IP首部20個位元組;最大值為15,所以首部長度最大為60個位元組服務類型(TOS)長度為8位。此欄位包含3位的優先權(現已忽略),4位的服務類型子欄位和1位的保留位(必須置0)。4位的服務類型分別為最小延遲(D)、最大輸送量(T)、最高可靠性(R)、最小費用(F),如。總長度該欄位長度為16位,以位元組為單位

linux系統編程之管道(一):匿名管道和pipe函數

一、處理序間通訊每個進程各自有不同的使用者地址空間,任何一個進程的全域變數在另一個進程中都看不到,所以進程之間要交換資料必須通過核心,在核心中開闢一塊緩衝區,進程1把資料從使用者空間拷到核心緩衝區,進程2再從核心緩衝區把資料讀走,核心提供的這種機制稱為處理序間通訊(IPC,InterProcess Communication)。如所示。二、管道是一種最基本的IPC機制,由pipe函數建立:#include <unistd.h>int pipe(int

UNIX環境進階編程——Linux進程地址空間和虛擬記憶體

一、虛擬記憶體分段機制:即分成程式碼片段,資料區段,堆棧段。每個記憶體段都與一個特權級相關聯,即0~3,0具有最高特權級(核心),3則是最低特權級(使用者),每當程式試圖訪問(許可權又分為可讀、可寫和可執行)一個段時,當前特權級CPL就會與段的特權級進行比較,以確定是否有許可權訪問。每個特權級都有自己的程式棧,當程式從一個特權級切換到另一個特權級上執行時,堆棧段也隨之改換到新層級的堆棧中。段選擇符:每個段都有一個段選擇符。段選擇符指明段的大小、存取權限和段的特權級、段類型以及段的第一個位元組線上

關於linux的cfs調度器的宏觀理解

今天重讀了cfs調度器,使我忍不住再寫一篇關於cfs的文章,cfs調度器的已耗用時間是0(logN),而以前的調度器的已耗用時間是O(1),這是不是就是說cfs的效率比O(1)的更差呢?並不是那樣,我們知道cfs調度器下的運行隊列是基於紅/黑樹狀結構組織的,找出下一個進程就是截下左下角的節點,固定時間完成,所謂的O(logN)指的是插入時間,可是紅/黑樹狀結構的統計效能是不錯的,沒有多大機率真的用得了那麼多時間,因為紅節點和黑節點的特殊相片順序既保證了樹的一定程度的平衡,又不至於花太多的時間來維

總頁數: 3662 1 .... 527 528 529 530 531 .... 3662 Go to: 前往

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.