自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

woshibendangao的专栏

不积跬步,无以至千里!

  • 博客(22)
  • 资源 (3)
  • 收藏
  • 关注

原创 Windows核心编程(十)异步设备I/O

1、设备IO与CPU速度甚至是内存访问相比较都是比较慢的,而且更不可预测。虽然如此,通过使用异步设备IO我们仍然能够创造出更高效的程序。同步IO时,发出IO请求的线程会被挂起。而异步IO时发出请求的线程不会被挂起,而是可以继续执行。异步IO请求传给了设备驱动程序,被加入到驱动程序的请求队列中,驱动程序负责实际的IO操作。当设备驱动程序完成了对队列中IO请求的处理,无论成功与否都必须通知应用程序

2014-03-31 21:39:03 853

原创 Windows核心编程(九)同步设备I/O

1、同步IO指线程在发起IO请求后会被挂起,IO完成后继续执行。异步IO指线程发起IO请求后并不会挂起而是继续执行。IO完毕后会得到设备的通知。而IO完成端口就是实现这种通知的很好的一种方式。线程是我们开发高性能、响应性好的一个必不可少的工具。这样在多处理器上就可以同时执行多个操作,从而提高吞吐量。当线程发出一个同步设备IO请求的时候,它会被临时挂起,直到设备完成IO请求为止。但线程阻塞会

2014-03-31 17:12:02 728

原创 Windows核心编程(八)用内核对象进行线程同步

1、在用户模式下进行线程同步的最大好处就是速度非常快。因此当需要使用线程同步时用户模式下的线程同步是首选。但是用户模式下的线程同步也存在缺点。如InterLocked系列函数只能对一个值进行操作。关键段虽然可以对一段代码进行操作,但是只能对同一个进程内的线程进行同步。为了解决上述问题,我们将会讨论使用内核对象进行线程同步。与用户模式下的速度快相比较,使用内核对象进行线程同步性能很低。原因就是:

2014-03-31 15:24:36 876

原创 Windows核心编程(七)用户模式下的线程同步

1、系统中的线程必须访问系统资源,如堆、串口、文件、窗口以及其他资源。如果一个线程独占了对某个资源的访问,其他线程就无法完成工作。我们也必须限制线程在任何时刻都能访问任何资源。比如在一个线程读内存时要限制其他线程对此块内存进行写入。线程之间的通信很重要,尤其是在以下两种情况下:1)需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性。2)一个线程需要通知其他线程某项任务已经

2014-03-30 15:57:29 983

原创 Windows核心编程(六)线程调度、优先级和关联性

1、每个线程都有一个上下文CONTEXT结构,保存在线程内核对象中。这个上下文反映了线程上一次执行时CPU寄存器的状态。大约每隔20ms windows就会查看所有当前存在的线程内核对象。并在可调度的线程内核对象中选择一个,将其保存在CONTEXT结构的值载入cpu寄存器。这被称为上下文切换。(Windows实际上会记录每个线程运行的次数)。大约又过20ms  windows将当前cpu寄

2014-03-30 13:48:30 1034

原创 Windows核心编程(五)线程基础

1、线程由两部分组成:线程内核对象:它是一个数据结构,操作系统用它来管理线程以及用它来存储线程的一些统计信息。线程栈:用于维护线程执行时所需的所有函数参数和局部变量。进程是有惰性的,进程从来不执行任何东西,它只是一个线程的容器。线程要在其进程的地址空间内执行代码和处理数据。位于同一个进程的线程共享进程的地址空间且它们共享进程句柄表。因为句柄表是针对进程的。进程需要很多的系统资源,而

2014-03-23 20:44:21 1028

原创 Windows核心编程(四)进程的创建与终止

1、进程是资源和分配的基本单位,而进程内核对象就是与进程相关联的一个数据结构。操作系统内核通过它管理进程,即进程控制块(PCB)。进程一般被定义为一个正在运行的程序的一个实例,它由两部分组成:1)内核对象,操作系统用它来管理进程。内核对象也是系统保存进程统计信息的地方。2)一个地址空间,其中包含所有可执行文件或DLL模块的代码和数据。此外,还包括动态内存分配,比如线程堆栈和堆的分配。

2014-03-23 14:31:13 2719

原创 Windows核心编程(三)内核对象

1、内核对象:通过API来创建,每个内核对象是一个数据结构,对应一块内存,由操作系统内核分配,并且只能由操作系统内核访问。在此数据结构中少数成员(如安全描述符和使用计数)是所有对象都有的,但其他大多数成员都是不同类型的对象特有的。例如,进程对象有一个进程ID、一个基本的优先级和一个退出代码;文件对象有一个字节偏移量、一个共享模式和一个打开模式。2、内核对象的数据结构只能由操作系统提供的

2014-03-22 20:40:15 1449

原创 Windows核心编程(二)字符和字符串处理

1、缓冲区溢出错误是处理字符串时的典型错误。2、一般情况下Unicode都是指UTF-16,即每个字符编码为两个字节。大部分的WindowsAPI都是直接对Unicode字符串进行操作,所传入的多字节字符串会先转换为Unicode后再拿来使用。3、C语言用char数据类型来表示一个8位ANSI字符。在VC中定义了一个内置的数据类型wchar_t,它表示一个16位的Unicode字符。定

2014-03-22 17:13:31 691

原创 Windows核心编程(一)错误处理

1、常见的Windows函数返回值数据类型:---VOID:这个函数不可能失败。极少数的Windows函数返回值为VOID。---BOOL:函数失败返回值为0,否则返回一个非0值。应避免测试返回值是否为TRUE。应该检查它是否不为FALSE。---HANDLE:函数失败返回值为NULL,否则,HANDLE将标识一个可以操纵的对象。某些函数会返回INVALID_HANDLE_VALUE的

2014-03-22 15:51:27 825

原创 计算机网络(5)应用层

1、应用层的具体内容就是规定应用进程在通信时所遵循的协议。应用层的许多协议都是基于客户服务器方式。客户是服务请求方,服务器是服务提供方。2、域名系统DNS:把机器名字转换为IP地址。IP地址的长度是固定的32位,域名的长度并不是。DNS是分布式系统,使大多数名字都在本地进行解析。域名服务器程序在专设的结点上运行。域名到IP地址的解析过程如下:当某一个应用进程需要把主机名解析为I

2014-03-21 21:09:05 919

原创 计算机网络(4)运输层

1、路由器的构成:路由器是一种具有多个输入输出端口的专用计算机,其任务是转发分组。工作在网络层。1)路由选择部分:即控制部分,核心构件是选择处理机。其任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。2)分组转发部分:由三部分构成:交换结构;一组输入端口;一组输出端口。(端口指硬件接口)交换结构:根据转发表对分组进行处

2014-03-21 19:05:50 1225

原创 计算机网络(3)网络层

1、网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接,每一个分组(IP数据报)独立发送,与其前后的分组无关(不进行编号)。所传送的分组可能出错、丢失、重复和失序,也不保证分组交付的时限。2、TCP/IP体系中的网络层常常称为网际层或IP层。与IP协议配套的还有:地址解析协议ARP。逆地址解析协议PARP。网际控制报文协议ICMP。网际组管理

2014-03-20 20:40:49 1149

原创 计算机网络(2)物理层、数据链路层

1、物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。数据在通信线路上一般是串行传输,即逐个比特按照时间顺序传输。一个数据通信系统分为三部分:源系统(或发送端):包括源点和发送器。传输系统。目的系统(接收端):包括接收器和终点。通信的目的是传送消息,数据是运送消息的实体,信号分为模拟信号和数字信号。信道:表示向某一个方向传送信息的媒体。2

2014-03-20 10:00:52 1724

原创 操作系统(10)文件系统管理

1、文件系统是操作系统中负责存取和管理信息的模块,采用统一的方法管理用户信息和系统信息的检索、存储、更新、共享和保护。有逻辑文件和物理文件之分。可实现”按名存取“,以及使用路径名、文件名、文件内位移来执行数据的读、写、修改、删除操作。2、

2014-03-19 17:23:01 2138

原创 操作系统(9)I/O系统管理

1、外部设备分为存储型设备和I/O型设备。设备管理通常使用I/O中断、缓冲区管理、通道、设备驱动调度等多种技术。操作系统将所有设备都定义为文件,将其统一在文件系统之下,赋予文件属性,对设备的操作就类似于对文件的操作。因此,设备管理功能有:设备中断处理,缓冲区管理,设备分配和去配,设备驱动调度,虚拟设备及其实现。2、通常把I/O设备及其接口线路、控制部件、通道和管理软件称为I/O系统,把计算

2014-03-18 15:43:30 2040

原创 操作系统(8)存储器管理

1、主存空间一般分为两部分:系统区——存放操作系统内核程序和数据结构等;用户区——存放应用程序和数据。存储器功能:分配和去分配:进程可请求对主存区的独占式使用。抽象和映射:主存器被抽象,使得进程认为分配给它的地址空间是一个大且连续地址锁组成的数组,同时建立抽象机制支持进程用逻辑地址来映射到物理主存单元,实现地址转换。隔离和共享:系统负责隔离已分配给进程的主存区,允许多个进程共享主存

2014-03-09 15:12:37 1501

原创 操作系统(7)进程间通信

1、信号量解决读者-写者问题:有两组并发进程:读者和写者,共享文件F,要求:1)允许多个读者同时对文件执行读操作。2)只允许一个写者对文件执行写操作。3)任何写者在完成写操作之前不允许其他读者或写者工作。4)写者在执行写操作之前,应让已有的写者和读者全部退出。单纯引入信号量不能解决此问题,必须引入计数器readcount对读进程计数,mutex是用于对计数器readcount操

2014-03-06 19:55:37 1063

原创 操作系统(6)同步、通信与死锁

1、并发进程:进程的并发性是指一组进程的执行在时间上是重叠的,所谓时间重叠是指一个进程执行第一条指令是在另一个进程执行完最后一条指令之前开始的。进程的交互必须是有控制的,否则会出现不正确的计算结果。并发进程的无关性是进程的执行与时间无关的一个充分条件。由于一个进程的执行速度通常无法为另一个进程所知,对于共享公共变量(资源)的并发进程来说,计算结果往往取决于这一组并发进程执行的相对速度。

2014-03-03 12:29:27 1298

原创 操作系统(5)处理器调度管理

1、高级调度:即作业调度。控制多道程序的道数,被选择进入主存的作业越多,每个作业所获得的CPU时间就越少。中级调度:即平衡调度。当主存资源紧缺时,会把暂时不能运行的进程换出主存,此时这个线程处于”挂起“状态,不参与低级调度。低级调度:即进程/线程调度。根据某种原则决定就绪队列中的哪个进程/内核级线程获得处理器,并将处理器让出给它使用。低级调度执行十分频繁,这部分代码要精心设计,并常驻主存。

2014-03-02 15:40:56 1849

原创 操作系统(4)线程及其实现

1、在windows中,处理器的调度对象是线程,作为系统调度和分派的基本单位,线程会被频繁地调度和切换。线程是进程中能够并发执行的实体,是进程的组成部分。线程的组成部分有:1)线程的唯一标识符及线程状态信息。2)未运行时所保存的线程上下文,可以把线程看作进程中一个独立的程序计数器。3)核心栈,在核心态工作时保存参数,在函数调用时的返回地址,等等。4)用于存放线程局部变量和用户栈

2014-03-02 13:44:36 953

原创 操作系统(3)进程及其实现

1、引入进程的目的:1)刻画系统的动态性,发挥系统的并发性。2)解决共享性,正确地描述程序的执行状态。

2014-03-02 10:35:20 1273

windows核心代码分析

windows开发核心代码分析,具有很好的参考价值,分享给大家!

2013-12-08

windows图形编程

很好的windows图形编程书,分享给大家。

2013-12-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除