Njs編譯
A. linux進程怎麼在r,s,t狀態之間切換
只有在該狀態的進程才可能在CPU上運行。同一時刻可能有多個進程處於可執行狀態,這些進程的task_struct結構(進程式控制制塊)被放入對應CPU的可執行隊列中(一個進程最多隻能出現在一個CPU的可執行隊列中)。進程調度器從各個CPU的可執行隊列中分別選擇一個進程在該CPU上運行。
正在CPU上執行的進程定義為RUNNING狀態、可執行但尚未被調度執行的進程定義為READY狀態,這兩種狀態統一為 TASK_RUNNING狀態。
S (TASK_INTERRUPTIBLE),可中斷的睡眠狀態。
處於這個狀態的進程,因為等待某某事件的發生(比如等待socket連接、等待信號量),而被掛起。這些進程的task_struct結構被放入對應事件的等待隊列中。當這些事件發生時(由外部中斷觸發、或由其他進程觸發),對應的等待隊列中的一個或多個進程將被喚醒。
進程列表中的絕大多數進程都處於TASK_INTERRUPTIBLE狀態。CPU就這么一兩個,進程動輒幾十上百個,如果不是絕大多數進程都在睡眠,CPU將會響應不過來。
D (TASK_UNINTERRUPTIBLE),不可中斷的睡眠狀態。
進程處於睡眠狀態,但是此刻進程是不可中斷的。不可中斷,指的並不是CPU不響應外部硬體的中斷,而是指進程不響應非同步信號。絕大多數情況下,進程處在睡眠狀態時,總是應該能夠響應非同步信號的。
而TASK_UNINTERRUPTIBLE狀態存在的意義在於,進程對某些硬體進行操作時(比如進程調用read系統調用對某個設備文件進行讀操作,而read系統調用最終執行到對應設備驅動的代碼,並與對應的物理設備進行交互),可能需要使用TASK_UNINTERRUPTIBLE狀態對進程進行保護,以避免進程與設備交互的過程被打斷,造成設備陷入不可控的狀態。這種情況下的TASK_UNINTERRUPTIBLE狀態總是非常短暫的,通過ps命令基本上不可能捕捉到。
linux系統中也存在容易捕捉的TASK_UNINTERRUPTIBLE狀態。執行vfork系統調用後,父進程將進入TASK_UNINTERRUPTIBLE狀態,直到子進程調用exit或exec。通過下面的代碼就能得到處於TASK_UNINTERRUPTIBLE狀態的進程:
#include <stdio.h>
#include <unistd.h>
void main()
{
if (!vfork());
sleep(100);
ruturn 0;
}
編譯運行,然後ps一下:
njs@njs:~/test$ ps -ax | grep a\.out
4371 pts/0 D+ 0:00 ./a.out
4372 pts/0 S+ 0:00 ./a.out
4374 pts/1 S+ 0:00 grep a.out
B. wordpress的footer.php被加密,求高手解密,即時加分
PHP的破解還是有點小麻煩的
說實話這段加密時什麼原理,用的是什麼技術我還真是不大明白…………
不過PHP現在最流行的加密技術是ZEND
zend加密還是可以破解的
有很多反編譯團隊 跟軟體