PsSetCreateProcessNotifyRoutinePsSetCreateProcessNotifyRoutine添加或者移除一个驱动支持的回调例程(也可以成为函数)。 当一个进程被创建或者删除时,一系列的例程将会被调用。PS:相当于把例程加入到一个链表中,当进程被创建或者删除时,所有的例程都会被调用(应该是这个意思) NTSTATUSPsSetCreateProcessNotifyRoutine(IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine, 例程函数的入口地址,IN BOOLEAN Remove FALSE时...
IO多路复用: 通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。 Linux中的 select,poll,epoll 都是IO多路复用的机制。 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组中就绪的文件描述符便会被内核修改标志位,使得进程可以获得这些文件描述符 ...
计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。3.进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。4.一个车间里,可以有很多工人。他们协同完成一个任务。5.线程就好比车间里的工人。...
【zombie】如何查看并杀死僵尸进程?赏金Micheal关注 2019.03.31 19:40:15字数 1,016阅读 4,373僵尸进程定义 In UNIX System terminology, a process that has terminated,but whose parent has not yet waited for it is called a zombie. 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid), 那么它将变成一个僵尸进程. 在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安...
进程概念内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等 Process: 运行中的程序的一个副本,是被载入内存的一个指令集合? 进程ID(Process ID,PID)号码被用来标记各个进程? UID、GID、和SELinux语境决定对文件系统的存取和访问权限? 通常从执行进程的用户来继承? 存在生命周期 task struct:Linux内核存储进程信息的数据结构格式 task list:多个任务的的task struct组成的链表 进程创建:? init:第...
数据库版本: SQL> select * from v$version; BANNER Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionPL/SQL Release 11.2.0.1.0 - ProductionCORE 11.2.0.1.0 ProductionTNS for Linux: Version 11.2.0.1.0 - ProductionNLSRTL Version 11.2.0.1.0 - Production crsctl start crs执行后挂起,[root@ractest1 ~]# ps -ef|grep gridroot 6117 5445 0 16:00 pts/1 00:00:00 /oracl...
1. 多个进程使用CPU的图像 进程控制块(process control block, PCB)2. 多进程图像从启动开始到关机结束 用户使用计算机就是启用了一堆进程, 用户管理计算机就是管理了这一堆进程3. 多进程如何组织? 多个进程对应的PCB放在不同的队列中,用状态转移推进4. 多进程的组织:PCB+状态+队列 进程状态转移:就绪-->运行、运行-->就绪、运行-->等待、等待-->就绪5. 多进程如何交替?交替的三个部分:队列操作+调度+切换 调度切换6. 多进...
#include <stdio.h> #include <unistd.h> #include <stdlib.h> int main(){ while(1){ printf("[test@localhost]$"); fflush(stdout); char buf[1024]={0}; //%[^\n] 获取字符串直到遇到\n //%*c 将一个字符从缓冲区中取出 if(scanf("%[^\n]%*c",buf)!=1){ #include <stdlib.h> int main(){ while(1){ printf("[test@localhost]$"); fflush(stdout); char buf[1024]={0}; //%[^\n] 获取字符串直到遇到\n //%c 将一个字符从缓...
什么是进程 进程的定义是:指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。 通俗直白的讲:进程是系统中正在运行的一个程序,程序一旦运行就是进程。 查看进程 在Windows系统中,打开QQ程序这个软件,系统就会创建一个进程,通过任务栏管理器可以方便直观的查看。如下图所示:在Linux操作系统中,执行ps -aux指令,下图所示。进程特征 动态性:进程的实质是...
#Enable the async interface set target-async 1 #If using the CLI, pagination breaks non-stop set pagination off #Finall, turn it on set non-stop on gdb支持的命里有两种类型:前台的(同步的)和后台(异步 )的。区别很简单,同步的在输出提示符之前会等待程序report一些线程已经终止的信息,异步则是直接返回。所以我们需要set target-async 1。set pagination off不要出现 Type <return> to cont...
孤儿进程、僵尸进程、守护进程的概念 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程所收养,并由init进程对它们完成状态收集工作。僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。守护进程:守护进程就是在后台运行,不与任何...
1.线程与进程的基本概念:进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。(进程是资源分配的最小单位)线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位) 使用多线程无非是期望程序能够更快地完成任务,这样并发编程就必须完成两件事情:线程同步及线程通信。 线程同步指的是:控制...
#include <iostream> #include <Windows.h> #include <TlHelp32.h> #include <locale.h> using namespace std;// 遍历系统的进程模块 BOOL TraverseProcessModules(DWORD dwPid) {HANDLE hModuleSnap = INVALID_HANDLE_VALUE;MODULEENTRY32 me32 = { sizeof(MODULEENTRY32) };// 创建一个快照句柄hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPid);if (hModuleSnap == INVALID_HANDLE_VALUE)return FALSE;// 通过...
那时候总会问自己,这次写的驱动,用Windbg调试过吗? 写SsdtHook,手动找过吗?写ObjectHook知道对象结构吗?用FS寄存器获取信息?为什么能获取那么多的信息?,_kpcr与他有什么关系?要从那次学习双进程守护说起,也算小半年以前的事情了。不懂互斥体、不懂事件、信号量等机制,你就说用互斥体、事件写双进程守护?科普:当年自学操作系统的时候不懂,慢慢的也就懂了。穿孔器、纸卡带的年代只有程序,为了解决人与CPU的交互效率低...
我们在Windows上写的程序,会被保存成.h或者,c的文件。会让人以为这是某种有特殊格式的文件,但是这些文件只是普通的文本文件,因此在Linux上,我们用Vim来创建并编辑一个文件就可以了。如何通过写代码使用系统调用创建一个进程: .安装开发套件 yum -y groupinstall "Development Tools" 写程序 .c文件 编译成二进制文件,即项目执行计划书在 linux 下面,二进制的程序也要有严格的格式,这个格式我们称为 ELF(Executeable and Li...