经济观察
运营管理

进程管理源码

进程管理源码

计算机操作系统进程管理实验代码。

唯一的办法就是植入代码,把你的代码植入到像EXPLORER这样的进程中。

步骤:申请内存,写代码,启动线程。

这个实现起来比较困难,一般都是用注入dll,各种钩子与注入方法实现需要仔细去找资料学习。

如果想用什么快照来解决的话,那你也必须要HOOK住快照函数,这样做还不如我说的植入代码呢,因为你的HOOK很容易被别人还原,自然你的进程就无法隐藏了。

请问任务管理器里面的进程描述是在代码哪里定义的? win32 编程

我觉得任务管理器中的描述,你先通过进程找到相应的可执行文件,然后获取可执行文件的描述信息。

.NET框架下有个FileVersionInfo 类,它有个属性FileDescription ,貌似可以获取到文件的描述,你可以试下,我没试过。

不过应该可行 WIN32下,有个函数VerQueryValue 用来取得文件描述使用该函数前还要用到GetFileVersionInfo具体用法查MSDN吧

windows文件保护使用使用任务管理器的进程代码

错误或者警告先做到没有编译错误,之后在编译器的提示下解决编译器的警告,因为编译器的警告往往指出了潜在的危险学一门开发语言,语法本身是基础,但是比较简单。

然而要提高,就要涉及到应用,这种提高往往是跨越性的,一定程度上也代表了菜鸟和大师的区别语法学习完成之后,建议你选择一款编译器,比如Visual C++,C++ Builder,Intel C++,GCC(MinGW)等然后基于指定编译器尝试写算法或者软件,或者找一些数据结构和算法的书,写写代码,出现了问题,你就会清楚下一步该怎么办了!比如:实现一些经典数据结构,比如树,图,查找等,你会有什么思路?写个常规病毒的专杀工具,你会使用什么思路,什么算法?写个简单的进程管理器,你会有什么思路,什么算法?建议性的提示,或许对你有些帮助!

如何判断一个开源软件源码里的核心代码

在阅读源码之前,还应知道Linux内核源码的整体分布情况。

现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成。

Linux内核源码的各个目录大致与此相对应,其组成如下(假设相对于Linux-2.4.23目录): 1.arch目录包括了所有和体系结构相关的核心代码。

它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录。

PC机一般都基于此目录。

2.include目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux子目录下。

3.init目录包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。

这是研究核心如何工作的好起点。

4.mm目录包含了所有的内存管理代码。

与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下。

5.drivers目录中是系统中所有的设备驱动程序。

它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound。

6.ipc目录包含了核心进程间的通信代码。

7.modules目录存放了已建好的、可动态加载的模块。

8.fs目录存放Linux支持的文件系统代码。

不同的文件系统有不同的子目录对应,如ext3文件系统对应的就是ext3子目录。

Kernel内核管理的核心代码放在这里。

同时与处理器结构相关代码都放在arch/*/kernel目录下。

9.net目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面。

10.lib目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下。

11.scripts目录包含用于配置核心的脚本文件。

12.documentation目录下是一些文档,是对每个目录作用的具体说明。

一般在每个目录下都有一个.depend文件和一个Makefile文件。

这两个文件都是编译时使用的辅助文件。

仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮助。

另外有的目录下还有Readme文件,它是对该目录下文件的一些说明,同样有利于对内核源码的理解。

在阅读方法或顺序上,有纵向与横向之分。

所谓纵向就是顺着程序的执行顺序逐步进行;所谓横向,就是按模块进行。

它们经常结合在一起进行。

对于Linux启动的代码可顺着Linux的启动顺序一步步来阅读;对于像内存管理部分,可以单独拿出来进行阅读分析。

实际上这是一个反复的过程,不可能读一遍就理解。

有关进程创建和进程调度的原代码,向各位高手求助

(国防科工委指挥技术学院北京101407) (版权归原作者所有) 摘要 文章介绍了作者在过击5年中在微内核技术上所做的工作.由于集成电路、计算机网络、分布式处理、多机并行处理、容错等技术的迅速发展,面向单处理机,采用内核不可抢占技术的Unix操作系统已经很难适应硬件技术的发展.为了适应以上技术的发展,Unix操作系统的内核越做越大,越做越复杂.完全丧失了其初始设计目标:系统短小精悍,容易理解.卡内基梅隆大学在美国国防部、国家科学基金的资助下,于1986年推出了一个基于微内核结构的操作系统Math.口:随后.斯坦福大学等研究机构纷纷发表了他们在这个领域所做的工作, 各个大大发一分时时彩公司纷纷推出了基于微内核结构的操作系统、D 微内核技术已成为新一代操作系统体系结构的研究热点. 基于微内核结构的操作系统和传统操作系统相}匕,具有以下特点:① 内核精巧.通常内核只由任务管理、虚存管理和进程间通信3个部分组成.传统操作系统内核中的许多部分都被移出内核.采取服务器方式实现;② 面向多处理机和分布式系统.基于微内核的操作系统,在内核中引入了多处理机调度和管理机制,并引入了细粒度并发机制—— 线程,使得多个处理机可以在同一个任务中并行地执行;③ 基于客户/服务器体系结构.在微内核结构的操作系统中,任务间通信机制—— 消息机制是系统的基础,操作系统的各种功能都以服务器方式实现,向用户提供服务.用户对服务器的请求是以消息传递的方式传给服务器的. “八五”期间,耪们在国家“八五攻关项目的支持下,对操作系统微内核技术进行了探入研究,在微内核系统调度技术、存储管理技术、计时模型、微内核系统扩展技术及微内核操作系统原型系统构造方面取得了一些研究成果.本文将介绍这些研究成果. 正文 1 微内核系统调度技术 与传统的操作系统内核相比,微内核调度系统中最突出的特征是增加了处理机和处理机集及线程的管理,并且向用户提供了灵活的手段来控翩自己的程序在处理机上的运行.这{羊,微内核系统就能很好地支持多处理机体系结构.同时,线程为用户提供了细粒度的并行处理机制,使得同一个用户任务中的不同线程可以同时在多个处理机上运行. 与进程相比,线程中所带的资源很少,因此,创建线程和撤消线程的开销就比进程小.线程也称为“轻进程.在系统调度中,线程的切换开销也比进程步,但是不同任务中的线程切换会引起任务的切换,在这种情况下,线程和进程的调度开销就变成一样了.为了优化系统效率,减步由于线程切换而弓I起的任务切换,在调度算法中加入了以下代码: IF (所选中的线程和当前运行的城程属于同一十任务) THEN 不做任务切换} ELSE进行任务切换操作} 显然,这种方法在某种情况下会对系统性能有所帮助,但是这种方法在很大程度上属于一种“被动的,或者说是一种“碰运气”的方法.另外,单纯以线程为主的调度算法对用户任务有失公平性,以线程为主的调度算法是完全参照传统操作系统中的调度算法设计而成的.当线程投入运行时,系统为它分配周定大小的时间片,系统中线程按时间片轮转.这样,就产生了公平性问题:如果一个任务中有两个线程,那么,从理论上讲,它将比只用一个线程实现的任务多获得近1倍的处理机时间.在传统的进程调度系统中,一个用户可以通过创建多个进程来获得更多的处理机调度机会,但是,它是建立在增加了创建进程和进程间通讯的系统开销代价的基础上的相比之下,创建线程的开销非常小,同一任务间的线程之闭通讯开销也很小为了解决上述问题,我们提出并实现了一种将传统的任务和新的线程调度机翩相结合的方法:以任务为单位分配时间片(这样可以保证调度的公平性),在线程调度时,当一个线程不是由于任务时间片用完的原因而放弃处理机时,只要系统中没有高优先级线程,就从本任务中选取线程,从而使得由线程切换而引起的任务切换操作开销达到最小. 从目前的发展来看,用户任务的并行粒度越来越小,即用户任务中的线程越来越多,而每个线程所执行的操作会越来越步.因此,使用线程+任务的方法可以有效地减少单纯的以线程为主的系统调度所引起的系统开销. 2 微内核虚拟存储管理技术 微内核虚拟存储管理系统弓『入了存储对象(Memory Object)的概念,将物理内存看成外部存储对象的(如磁盘)高速缓存(Cache),实现了虚拟存储器写时拷贝(Copy onWrite)技术,引入了lazy evaluation技术.定义了虚拟存储器和硬件存储管理机制的接口(Pmap),实现了与机器无关的虚拟存储系统. 虚拟存储器写时拷贝算法是微内核虚拟存储管理系统的核心算法.它的弓f入使得虚拟存储器管理的效率大大提高了一步.但是,它的实现依赖于硬件存储管理机制的页面保护机制,对于一个具有写时拷贝共享属性的存储区,其页面保护被设置成写保护.多个用户可以共享的方式对它进行读操作,但是,当用户试图对这块区域进行写操作时,将产生写保护故障,页面故障管理程序将为用户进程复制物理页面.从而达到写时拷贝的目的. 在I386体系结构下,只有用户态页面允许写保护,在其他机器状态下,硬件存取机制将绕过页面...

创建一个线程,为什么代码运行产生了多个轻量级进程

要了解二者的区别与联系,首先得对进程与线程有一个宏观上的了解。

进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。

每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。

进程空间的大小只与处理机的位数有关,一个16位长处理机的进程空间大小为216,而32位处理机的进程空间大小为232。

进程至少有5种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。

线程,在网络或多用户环境下,一个服务器通常需要接收大量且不确定数量用户的并发请求,为每一个请求都创建一个进程显然是行不通的,——无论是从系统资源开销方面或是响应用户请求的效率方面来看。

因此,操作系统中线程的概念便被引进了。

线程,是进程的一部分,一个没有线程的进程可以被看作是单线程的。

线程有时又被称为轻权进程或轻量级进程,也是CPU调度的一个基本单位。

说到这里,我们对进程与线程都有了一个大体上的印象,现在开始说说二者大致的区别。

进程的执行过程是线状的,尽管中间会发生中断或暂停,但该进程所拥有的资源只为该线状执行过程服务。

一旦发生进程上下文切换,这些资源都是要被保护起来的。

这是进程宏观上的执行过程。

而进程又可有单线程进程与多线程进程两种。

我们知道,进程有一个进程控制块PCB,相关程序段和该程序段对其进行操作的数据结构集这三部分,单线程进程的执行过程在宏观上是线性的,微观上也只有单一的执行过程;而多线程进程在宏观上的执行过程同样为线性的,但微观上却可以有多个执行操作(线程),如不同代码片段以及相关的数据结构集。

线程的改变只代表了CPU执行过程的改变,而没有发生进程所拥有的资源变化。

出了CPU之外,计算机内的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。

与进程控制表和PCB相似,每个线程也有自己的线程控制表TCB,而这个TCB中所保存的线程状态信息则要比PCB表少得多,这些信息主要是相关指针用堆栈(系统栈和用户栈),寄存器中的状态数据。

进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在;反之,线程是进程的一部分,没有自己的地址空间,与进程内的其他线程一起共享分配给该进程的所有资源。

线程可以有效地提高系统的执行效率,但并不是在所有计算机系统中都是适用的,如某些很少做进程调度和切换的实时系统。

使用线程的好处是有多个任务需要处理机处理时,减少处理机的切换时间;而且,线程的创建和结束所需要的系统开销也比进程的创建和结束要小得多。

最适用使用线程的系统是多处理机系统和网络系统或分布式系统。

----------------------------------1.线程的执行特性。

线程只有3个基本状态:就绪,执行,阻塞。

线程存在5种基本操作来切换线程的状态:派生,阻塞,激活,调度,结束。

2.进程通信。

单机系统中进程通信有4种形式:主从式,会话式,消息或邮箱机制,共享存储区方式。

主从式典型例子:终端控制进程和终端进程。

会话式典型例子:用户进程与磁盘管理进程之间的通信。

转载请注明出处大发一分时时彩 » 进程管理源码