- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 《Windows核心编程》第8章 用户模式下的线程同步
在以下两种基本情况下,线程之间需要相互通信:l 需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性。l 一个线程需要通知其他线程某项任务已经完成。原子访问指的是一个线程在访问某个资源的同时能够保证没有其他线程会在同一时刻访问同一资源。Interlocked系列的函数会以原子方式来操控一个值。比如如果想以原子方式给一个值加1,可以使用InterlockedIncrement函数。注意,必须确保传给这些函数的变量地址是经过对齐的,否则这些函数可能会失败。(C运行库提供了一个
2010-12-18 23:40:00
709
原创 《Windows核心编程》第5章 作业
Windows提供了一个作业(Job)内核对象,它允许将进程组合在一起并创建一个"沙箱"来限制进程能够做什么。最好将作业对象想象成一个进程容器。但是,创建只包含一个进程的作业也是非常有用,因为这样可以对进程施加平时不能施加的限制。通过给函数BOOL IsProcessInJob (HANDLE ProcessHandle,HANDLE JobHandle,PBOOL Result);的第二个参数传递NULL,可以验证某个进程是否在一个现有的作业控制之下运行。如果进程已与一个作业关联,那么就无法将
2010-12-18 15:09:00
999
1
原创 《Windows核心编程》第4章 进程
进程通常被定义成一个正在运行的程序的一个实例。它由两部分构成:1)一个内核对象,操作系统用它来管理进程;2)一个地址空间,其中含所有可执行文件或DLL模块的代码和数据。一个进程可以有一个或多个线程,所有线程都在进程的地址空间中执行其代码。每个进程至少要有一个线程来执行进程地址空间包含的代码。当系统创建进程的时候,会自动为进程创建第一个线程,称之为主线程。对于所有要运行的线程,操作系统会轮流为每个线程调度 CPU时间。它会采取轮询方式为每个线程都分配可运行的时间片。对于多CPU的系统而言,
2010-12-17 23:41:00
945
原创 获取提升类型和判断进程是否以管理员身份运行
在任务管理器的例子中,任务管理器在进程选项卡的底部要么显示一个盾牌图标,要么显示一个复选框,具体取决于它是如何生成的。由此带来两个问题:如何判断应用程序是否是以管理员身份运行;如何判断它是以提升的权限来启动的,还是正在使用筛选的令牌运行。下面的GetProcessElevation函数能返回提升类型和一个指出进程是否正在以管理员身份运行的布尔值。具体代码如下:#include // for IsUserAnAdmin.BOOL GetProcessElevation(TOKEN_ELEVA
2010-12-17 23:33:00
1073
原创 《Windows核心编程》第3章 内核对象
Windows系统创建和处理的内核对象有:访问令牌对象、事件对象、文件对象、文件映射对象、I/O完成端口对象、作业对象、邮件槽对象、互斥对象、管道对象、进程对象、信号量对象、线程对象、可等待的计时器对象以及线程池工厂对象等等。利用Sysinternals提供的免费工具WinObj可以查看一个包含所有内核对象类型的列表。每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由操作系统内核访问。该内存块是一个数据结构,其成员维护着与对象相关的信息。少数成员(如安全描述符和使用计数等)是所有对象共有的,但
2010-12-16 01:08:00
833
原创 《Windows核心编程》第2章 Unicode
应用软件可以从各种不同的函数中获得特定国家的信息,并可观察控制面板的设置,以确定用户的首选项。软件的本地化要解决的真正问题,实际上就是如何来处理不同的字符集。有些文字和书写规则(比如中文)的字符集中的符号太多了,因此单字节(它提供的符号最多不能超过256个)是根本不够使用。为此出现了双字节字符集(DBCS),以支持这些文字和书写规则。在双字节字符集中,字符串中的每个字符可以包含一个字节或包含两个字节。Unicode提供了一种简单而又一致的表示字符串的方法。Unicode字符串中的所有字符都是
2010-12-16 01:02:00
918
原创 《Windows核心编程》第1章 对程序错误的处理
当调用一个Windows函数时,它首先要检验传递给它的的各个参数的有效性,然后再设法执行任务。如果传递了一个无效参数,或者由于某种原因无法执行这项操作,那么操作系统就会返回一个值,指明该函数在某种程度上运行失败了。一个Windows函数返回的错误代码对了解该函数为什么会运行失败常常很有用。MicroSoft公司编译了一个所有可能的错误代码的列表,并且为每个错误代码分配了一个32位的号码。当一个Windows函数检测到一个错误时,它会使用一个称为线程本地存储器(thread-local storage
2010-12-14 23:08:00
729
转载 常用进程调度算法的分析与评价
转载:《计算机与信息技术》文章:常用进程调度算法的分析与评价(王俊祥 重庆文理学院 数学与计算机科学系) 摘 要 本文详细地讨论了四种常用进程调度算法的基本思想,并对其进行了分析和评价。 关键词 进程调度算法,分析,评价1 引言 进程调度是系统内部的低级调度,进程调度的策略通常有先来先服务算法、时间片轮转算法、最高优先权优先调度算法、最短进程优先调度算法等。衡量进程调度性能通常需要从定性和定量两个方面来综合考虑。2 进程调度算法评价依据 进程调度性能
2010-12-10 15:42:00
3318
原创 Ubuntu系统下GTK安装
GTK的安装#这将安装gcc/g++/gdb/make 等基本编程工具sudo apt-get install build-essential#这将安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件sudo apt-get install gnome-core-devel#用于在编译GTK程序时自动找出头文件及库文件位置sudo apt-get install pkg-config#这将安装 devhelp GTK文档查看程序sudo apt-
2010-12-07 02:05:00
1564
1
原创 主机与VMware的Linux虚拟机之间共享交换文件
搭建环境:主机系统 :Windows7 UltimateVM软件 :VMware Workstation 7.1.3虚拟机系统 :Linux Ubuntu 10.10操作步骤:1)在主机上新建一个共享路径,用于将来和虚拟机之间进行共享文件如:L:/ShareFolder4VM在VMware中选择虚拟机,右键Virtual Machine Settings,选中Options,选择Shared Folders,在右边界面中配置共享文件夹,Host path选择之前新建
2010-12-06 21:37:00
3157
转载 C++各大有名库的介绍
在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。C++各大有名库的介绍——C++标准库标准库中提供了C++程序的基本设施。虽然C++标准库随着C++标准折腾了许多年,直到标准的出台才正式定型
2010-12-05 23:48:00
587
转载 C++中单例模式对象的释放控制
单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出等。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显得很不优雅。《设计模式》一书中给出了一种很不错的实现,定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有静态方法获取该实例。如下面的类定义:class CSingleton:{public
2010-12-05 19:08:00
600
WinDjViewchs
2010-12-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人