原创 二級空間配置器的原理剖析和簡單實現
首先來講一下頻繁地向系統申請小內存塊的缺點 用戶代碼與操作都是在用戶態,而操作系統是屬於內核態的,用戶在向系統申請空間的時候是通過操作系統來申請的,所以,每一次空間申請就會進行用戶態與內核態之間的切換,會大大降低效率。 系
原创 線程概念與線程創建
什麼是線程?爲什麼要有多線程? 一家公司需要生產某種產品,然後爲生產這種產品提供了各種原材料和幾層樓的資源。而這件產品是有很多個零件組成的,各個零件需要的材料可能是不同的,即,有些零件之間的製造是不相互影響的。現在要生產一種
原创 SGI一級空間配置器的簡單介紹與實現
SGI一級空間配置器原理的簡單介紹 SGI一級空間配置器裏邊提供給用戶使用的接口就只有三個,allocate 、deallocate 和 reallocate。allocate函數用於申請空間,用戶將需要的字節數傳給該函數,然
原创 paste的使用
paste的作用 用於將兩個文件進行文本合併的工具。它合併的方式比較特殊,比如說兩個文件的合併,不是將一個文件搬移到另一個文件的後邊,而是將文件並行展出,也就是說,它將一行分爲兩部分(兩列),前一列放第一個文件,後一列放第二個
原创 sort和uniq的常見選項及其使用
sortsort,見名知意,就是用來排序的。sort讀取每一行輸入,並按照指定的分隔符(默認爲空格)將每一行劃分成多個字段,這些字段就是排序的對象。同時,sort可以指定何種排序規則進行排序,默認使用當前字符集排序規則,還可以按照字典排序
原创 守護進程
守護進程的概念 守護進程(Daemon)是運行在後臺的一種特殊的進程,它獨立於控制終端並且週期性地執行某種任務或者等待處理某些發生的事件。守護進程不需要用戶輸入(即不需要從控制端接收數據)就能運行而且能夠爲用戶程序甚至整個系統
原创 關於網絡編程套接字的基礎知識
爲了方便後邊更好地理解網絡套接字編程,先介紹一些重要的概念。 IP地址 IP地址是在IP協議中用來標識網絡中不同主機的地址。它有兩個版本:IPv4 和 IPv6 IPv4:IP地址由4個字節(0~255)構成,共32位。 IPv6:IP地
原创 C語言中文件操作函數彙總
fopen函數 --- 打開一個文件流函數原型:FILE* fopen(const char *path, const char *mode);參數:參數path是需要打開文件的文件名,通常把它叫做文件的路徑, 參數
原创 熟悉編譯器gcc/g++
本文說是爲了熟悉gcc/g++編譯器,除此之外,還希望讀者能對源程序被執行起來的整個過程有更深刻的理解。gcc和g++的用法差不多,本文就以gcc爲例來講解一個源程序被執行起來首先要經過四個步驟:預編譯、編譯、彙編、鏈接。預編譯:1)、宏
原创 umask函數的作用
使用umask函數需要包含頭文件#include <sys/types.h>#include <srs/stat.h>mode_t umask(mode_t mask);//函數原型該函數爲進程設置文件模式屏蔽字,並返回以前的值。即在創建
原创 進程間的關係
進程間有什麼關係呢?我們都知道使用fork函數創建進程是一次調用兩次返回。父進程返回子進程的進程ID(非0),子進程返回0值。很顯然,使用fork創建出來的兩個進程是父子關係。那如果兩個進程都是同一個父進程創建出來的,它們是什麼關
原创 死鎖的四個必要條件和解決辦法
死鎖概念及產生原理 概念:多個併發進程因爭奪系統資源而產生相互等待的現象。 原理:當一組進程中的每個進程都在等待某個事件發生,而只有這組進程中的其他進程才能觸發該事件,這就稱這組進程發生了死鎖。 本質原因:
原创 基礎I/O----通過系統調用來操縱文件
簡單回憶一下兩個在C語言中用於文件的讀寫的函數 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); //用於從文件裏邊讀數據 ptr:用於存儲讀取數據
原创 UDP服務器的實現
先介紹一個重要的函數:socket(),socket()是用於創建一個套接字的。函數原型:參數:domain確定了通信的特性也包括地址格式,比如AF_INET就是IPV4協議,AF_INET6就是IPV6協議,AF_UNIX是UNIX域。
原创 多線程的同步與互斥
mutex互斥鎖實現互斥爲什麼需要互斥? 前邊已經說過了,線程是在進程內部的,即線程是共享進程的地址空間的。線程擁有僅屬於自己的一部分數據的:線程ID、一組寄存器(用於保存自己的上下文信息)、棧、errno、信號屏蔽字、