11-程序-執行緒相關概念
阿新 • • 發佈:2022-04-19
程序概念
Process: 執行中的程式的一個副本,是被載入記憶體的一個指令集合,是資源分配的單位 程序ID(Process ID,PID)號碼被用來標記各個程序 UID、GID、和SELinux語境決定對檔案系統的存取和訪問許可權 通常從執行程序的使用者來繼承 存在生命週期 程序建立: init:第一個程序,從 CentOS7 以後為systemd 程序:都由其父程序建立,fork(),父子關係,CoW:Copy On Write ,資料發生變化時建立子程序程序
程序是一個具有一定獨立功能的程式在一個數據集上的一次動態執行的過程,是作業系統進行資源分配和排程的一個獨立單位,是應用程式執行的載體。程序是一種抽象的概念,從來沒有統一的標準定義。 程序的組成程序一般由程式、資料集合和程序控制塊三部分組成。 程式用於描述程序要完成的功能,是控制程序執行的指令集; 資料集合是程式在執行時所需要的資料和工作區; 程式控制塊(Program Control Block,簡稱PCB),包含程序的描述資訊和控制資訊,是程序存在的唯一標誌。 程序具有的特徵: 動態性:程序是程式的一次執行過程,是臨時的,有生命期的,是動態產生,動態消亡的; 併發性:任何程序都可以同其他程序一起併發執行; 獨立性:程序是系統進行資源分配和排程的一個獨立單位; 結構性:程序由程式、資料和程序控制塊三部分組成。執行緒
程序和執行緒的區別
Redis server v=5.0.7 早期版本單執行緒
檢視是執行緒否為多執行緒
root@ubuntu2004:~# ps -ef|grep redis redis3769 1 0 00:19 ? 00:00:03 /usr/bin/redis-server 127.0.0.1:6379 top -Hp 3769
-H 顯示執行緒資訊 -p 指定pid
Threads: 4 total, 0 running, 4 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.5 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st MiB Mem : 3901.0 total, 3020.9 free, 299.8 used, 580.3 buff/cache MiB Swap: 3907.0 total, 3907.0 free, 0.0 used. 3362.8 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3769 redis 20 0 50188 4796 3488 S 0.0 0.1 0:02.92 redis-server 3770 redis 20 0 50188 4796 3488 S 0.0 0.1 0:00.00 redis-server 3771 redis 20 0 50188 4796 3488 S 0.0 0.1 0:00.00 redis-server 3772 redis 20 0 50188 4796 3488 S 0.0 0.1 0:00.00 redis-server
[root@centos7 ~]# grep -i th /proc/484/status
Threads: 1
[root@centos7 ~]# pstree -p systemd(1)─┬─ ├─fdfs_storaged(930)─┬─{fdfs_storaged}(1340) #帶{}的執行緒 ,公司員工,至少一個 │ ├─{fdfs_storaged}(1341) │ ├─{fdfs_storaged}(1342) │ ├─{fdfs_storaged}(1343) │ ├─{fdfs_storaged}(1344) │ ├─{fdfs_storaged}(1345) │ ├─{fdfs_storaged}(1346) │ └─{fdfs_storaged}(1347) ├─fdfs_trackerd(944)─┬─{fdfs_trackerd}(964) │ ├─{fdfs_trackerd}(965) │ ├─{fdfs_trackerd}(966) │ ├─{fdfs_trackerd}(967) │ ├─{fdfs_trackerd}(968) │ └─{fdfs_trackerd}(969) ├─nginx(945)─┬─nginx(947) │ └─nginx(948) ├─sshd(914)───sshd(1421)─┬─bash(1423) #程序和子程序 │ └─bash(1471)───pstree(1488)
├─redis-server(3769)─┬─{redis-server}(3770)
├─{redis-server}(3771)
└─{redis-server}(3772)
├─systemd-journal(484)
root@ubuntu2004:/proc/3769# grep -i Threads /proc/3769/status
Threads: 4 #redis 自己一個加剩餘三個執行緒
找到資源佔用高的程序的所在的磁碟檔案,可以刪掉臨時解決,再分析系統為什麼被黑掉
如果對檔案設定 i 屬性,那麼不允許對檔案進行刪除、改名,也不能新增和修改資料;防止 病毒
root@ubuntu2004:/proc/3769# ll exe lrwxrwxrwx 1 redis redis 0 Apr 19 00:20 exe -> /usr/bin/redis-check-rdb*
chattr -i /usr/bin/redis-check-rdb
rm -f /usr/bin/redis-check-rdb
chattr -i /usr/bin/redis-check-rdb
併發 基於時間片10ms 處理,人感覺不到
並行 基於cpu核數同時處理