日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux基础第一章 概述

發(fā)布時間:2025/3/19 linux 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux基础第一章 概述 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

第一章 概述

1.1 前言

本章討論系統(tǒng)的概念,從硬件、操作系統(tǒng)角度更加深刻的理解計算機系統(tǒng),并快速瀏覽Linux系統(tǒng)提供的服務。

1.2 系統(tǒng)組成

1.3 操作系統(tǒng)和應用程序

操作系統(tǒng)這個詞語有二意性,有時候指內(nèi)核,有時候指內(nèi)核和系統(tǒng)工具軟件的組合。

操作系統(tǒng)是管理系統(tǒng)硬件的軟件。操作系統(tǒng)是直接運行在裸機之上。其他應用軟件運行在操作系統(tǒng)之上。

操作系統(tǒng)本身提供操作接口,支持用戶通過該接口來操作 系統(tǒng),但是系統(tǒng)本身提供的功能,不足于完成用戶需求時,則需要開發(fā)應用程序來拓展系統(tǒng)功能。

發(fā)行版:
不同的公司使用Linux內(nèi)核,加上自己開發(fā)的系統(tǒng)工具軟件,一起發(fā)布的Linux操作系統(tǒng)版本。

1.4 啟動和登陸

配置文件:
/etc/profile:系統(tǒng)啟動時被執(zhí)行
~/.bashrc:用戶登陸時會調(diào)用

1.5 文件

文件是一個重要的概念,一般定義為信息的集合。計算機做為信息處理的機器,文件是計算機處理的對象。

在Unix和Linux系統(tǒng)中,泛化了文件的概念,設備也被抽象成文件對象來進行操作。

數(shù)據(jù)的集合叫做文件。
IT行業(yè)處理信息:轉(zhuǎn)換,傳輸,存儲

1.6 程序、進程

1.7 錯誤處理

系統(tǒng)調(diào)用在一般情況下返回整數(shù),并且0表示成功,小于0表示失敗。當系統(tǒng)調(diào)用返回失敗時,可以通過errno獲得錯誤嘛,通過strerror獲取錯誤解釋,或者直接通過perror在標準錯誤文件中,輸出錯誤信息。

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
// 通過open返回的整數(shù),在linux中有個特別的名字
// 叫文件描述符 file description 簡稱fd

int fd = open("a.txt", O_WRONLY|O_CREAT|O_EXCL, 0777);
if(fd < 0)//表示文件打開失敗
{
perror("open");
return 0;
}

// 把指針放到文件開頭
lseek(fd, 0, SEEK_SET);

// 對文件進行操作
write(fd, "hello", 5);

// 關閉文件,如果不關閉,內(nèi)存會泄漏
// 當進程退出時,未關閉的文件會自動關閉
close(fd);

}

1.8 用戶、組、文件權限

Linux是多用戶系統(tǒng),支持多個用戶同時登陸系統(tǒng)。
為了安全起見,需要對系統(tǒng)的權限加于規(guī)范。

1.9 信號

信號是進程通信的一種手段,某個進程收到信號,該信號可能來自內(nèi)核、來自其它進程或者來自用戶操作。例如:當用戶按下ctrl+c時,其實是給前臺進程發(fā)送了一個信號。

1.10 系統(tǒng)調(diào)用和庫函數(shù)

學習Linux系統(tǒng)開發(fā)接口時,程序員也需要學習一般常用的第三方庫,來拓展程序員的編程能力。


User Space和Kernel Space是操作系統(tǒng)編程中常用的概念,表示當前的代碼在用戶空間還是內(nèi)核空間運行,對于不同的運行空間,CPU對內(nèi)存的處理方式稍有不同,在講進程虛擬地址空間時再涉及該概念。

系統(tǒng)調(diào)用指操作系統(tǒng)內(nèi)核提供的功能,它提供了接口給用戶空間代碼調(diào)用。比如open/read/write/close等,都是屬于Linux系統(tǒng)操作接口,而fopen/fread/fwrite/fclose是屬于C標準提供的接口,在Linux下,fopen其實底層調(diào)用了open。

配置文件:
/etc/profile:系統(tǒng)啟動時被執(zhí)行
~/.bashrc:用戶登陸時會調(diào)用

文件操作

頭文件:sys/types.h ?sys/stat.h ?fcntl.h ?:int fd=open(“文件路徑”,mode); ?mode決定了對文件的操作方式 ??第三個參數(shù)可有可無,對文件權限進行處理, ??因umask存在,創(chuàng)建文件權限要與上000 000 010的反,導致用戶權限開始不能有寫的權限

mode選項

解釋

O_RDONLY

讀方式打開(與后面?zhèn)z個互斥)

O_WRONLY

寫方式打開

O_RDWR

讀寫方式打開

O_CREAT

創(chuàng)建文件,如果文件存在,直接打開

O_TRUNC

截斷

O_APPEND

追加

O_EXCL

O_CREAT一起用,如果文件存在則失敗

函數(shù):

perror:對某種錯誤信息進行打印

open/creat:打開文件/創(chuàng)建文件
read:讀文件
write:寫文件
close:關閉文件
lseek:定位文件讀寫位置
fcntl:修改文件屬性
sysconf:讀取系統(tǒng)配置
dup/dup2:復制文件描述符
sync/fsync/fsyncdata:同步文件數(shù)據(jù)
mmap/munmap:文件映射
mkstemp:得到臨時文件路徑

命令

touch:修改文件的訪問時間,創(chuàng)建文件
cat:訪問文件內(nèi)容
vim:編輯
ulimit:顯示一些限制信息(文件描述符最大值、棧的空間尺寸)
umask:文件創(chuàng)建的權限掩碼
getconf:對應sysconf

dd:可以拷貝塊設備,但是要sudo權限 ?例 ?dd if=位置 of=文件名 ?bs=一次多少k cout=拷貝次數(shù)

Wc:計算文件的行數(shù) ?單詞個數(shù) 字節(jié)數(shù)

unlink:刪除軟鏈接

?

信號

是控制進程通信的一種方式,效率高,成本低

信號處理方式:掩蓋、忽略、默認處理

掩碼:延遲信號的處理 ?運用信號集合 ??

掩蓋不可靠信號,多次發(fā)送,只處理一次 ??掩蓋:可靠信號 ?處理多次

進程

fork()創(chuàng)建

線程

鼠標鍵盤都是只讀的字符文件夾設備,所以可以運用函數(shù)進行監(jiān)控 ?一般在/dev/input/mic 文件下面 ?注意權限問題 ?鼠標鍵盤讀取數(shù)據(jù),是倆個進程,注意進程的阻塞問題 ?可以運用字進程和父進程進行處理

線程的創(chuàng)建?

?pthread_created(1234) //1:線程的id ?2:線程的的屬性 ?3:新線程的函數(shù)名字, 4:新線程的屬性 ???要鏈接 ?-lpthread ?庫 ??

注意子線程是依附主線程的,主線程結(jié)束,子線程無法運行 ? ? 這個?pthread_exit(0)主線程結(jié)束,子線程沒有退出例外

?

運用pthread_equal ?判斷線程是否相等,先等返回0 ?不相等返回非零值

pthread_jion(1,&ret) ?阻塞調(diào)用 1:線程id ?ret:線程返回值

?

pthread_t tid = pthread_self() ?得到當前運行進程的id

進程和線程的區(qū)別:

進程:分配資源的單位??線程:調(diào)度的單位?????多線程可以共享全局變量

避免倆個線程同時操作全局變量,第一個線程運用了鎖,后面的線程在外面等,等待解鎖后,后面的線程在進來

死鎖

連續(xù)倆次加鎖,加鎖后,沒有解鎖,又繼續(xù)加鎖,會導致死鎖。 運用循環(huán)鎖,可以重復加鎖 ? 通過定義鎖的屬性,變?yōu)檠h(huán)鎖 ?例:pthread_mutexattr_t attr; ?pthread_mutexattr_init(&attr); ?pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);pthread_mutex_init(&mutex,&attr)

加鎖后,忘記解鎖,也會出現(xiàn)死鎖 ?C++中運用析構(gòu)函數(shù),可以避免忘記解鎖,定義一個類

?

讀寫鎖

pthread_rwlock_t mutex;

pthread_rwlock_init(&mutex, NULL);

讀/寫鎖定pthread_rwlock_rd/wrlock(&mutex);

解鎖:pthread_rwlock_unlock(&mutex);

?

守護進程

守護進程不和終端關聯(lián),注意此進程只能有一個,創(chuàng)建文件記錄,判斷此程序是否開啟

編程規(guī)則:

umask=0

調(diào)用fork,讓父進程退出。 ???讓父進程變?yōu)?/span>init, ?如果父進程不退出,用倆次fork()

調(diào)用setuid創(chuàng)建新會話 ?setsid

重設當前目錄/根目錄 ????chdir ???????

關閉不需要的文件描述符 ???運用循環(huán)關閉所有文件描述符

高級IO

一個進程就是一段指令

IO復用技術

select的運用

運用文件描述符集合 ?運用fd_set創(chuàng)建文件描述符集合 ?文件接口相對較小,跨平臺運用

FD_SET12) 將文件描述符放入文件描述符集合 ?1:文件描述符 ?2:集合名字

epoll的運用

epollfd ?創(chuàng)建文件描述符集合

epol_ctl將文件描述加入集合中

非阻塞IO

?

管道

一邊讀,一邊寫

匿名管道 ?pipe()創(chuàng)建管道

?

?

mmap ?可以實現(xiàn)有親子關系進程的文件共享 ?效率低,數(shù)據(jù)寫入內(nèi)存,在從內(nèi)存中讀取數(shù)據(jù) ?運用shm_open實現(xiàn)文件共享也可以

文件內(nèi)存共享,無法進行通信

?

通過鎖,讓進程共享內(nèi)存進行通信 ?pthread_mutex_init ?需要將鎖放在共享內(nèi)存中 ?

?

fork ?+ ?exec 讓進程有不同的功能

?

轉(zhuǎn)載于:https://www.cnblogs.com/w-x-me/p/6394115.html

總結(jié)

以上是生活随笔為你收集整理的Linux基础第一章 概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。