线程基础 我们运行一个exe,就是一个进程实例,系统中有很多个进程。每一个进程都有自己的内存地址空间,每个进程相当于一个独立的边界,有自己的独占的资源,进程之间不能共享代码和数据空间。 每一个进程有一个或多个线程,进程内多个线程可以共享所属进程的资源和数据,线程是操作系统调度的基本单元。线程是由操作 ...
分类:
编程语言 时间:
2020-08-10 18:32:48
阅读次数:
78
1. 概述 上篇文章xenomai内核解析--同步互斥机制(一)--优先级倒置讲到,对于所有内核对象: xnregistry:保存内核对象,提供内核对象存储和快速检索。 xnsynch:资源抽象,提供线程与资源的同步互斥管理机制。 举个应用例子,有两个xenoami任务,使用semaphore做互斥 ...
分类:
其他好文 时间:
2020-07-23 09:18:45
阅读次数:
70
Nucleus-SE迁移:未实现的设施和兼容性 Nucleus SE migration: Unimplemented facilities and compatibility Nucleus SE的一个关键设计要求是与Mentor的旗舰实时操作系统产品Nucleus RTOS高度兼容。Nucleu ...
分类:
其他好文 时间:
2020-07-10 20:41:55
阅读次数:
46
应用程序计时器 Application timers 应用程序计时器是内核对象,为任务提供简单的方法来计时事件,或者更常见的是,定期执行活动。介绍了Nucleus SE中计时功能的所有细节——准确性、中断处理等。 Using Timers 应用程序计时器可以配置为一次性的-即,它们被启动,然后,在指 ...
分类:
其他好文 时间:
2020-07-10 17:13:41
阅读次数:
105
26.2 线程开销 内存占用 线程内核对象 拥有线程描述属性与线程上下文,线程上下文占用的内存空间为 x86 架构 占用 700 字节、x64 架构 1240 字节 、ARM 架构 350 字节。 线程环境块(TEB) TEB 消耗一个内存页,占用 4KB内存。 用户模式栈。 用户模式栈存储传递给方 ...
分类:
编程语言 时间:
2020-07-10 13:18:37
阅读次数:
74
首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数 ...
分类:
其他好文 时间:
2020-05-22 12:32:09
阅读次数:
48
进程关闭过程: 1)关闭进程内的所有线程(终止遗留线程) 2)释放所有的用户对象和GDI对象,关闭所有内核对象(引用计数-1,当减为0的时候销毁内核对象) 3)进程的推出代码从STILL_ACTIVE变为传给ExitProcess或TerminateProcess的代码 4)进程的内核对象变为已触发 ...
分类:
系统相关 时间:
2020-03-10 12:02:02
阅读次数:
92
Windows被设计成一个抢占式的操作系统,用某种算法来确定哪些线程应该在何时被调度和运行多长时间。每隔20ms左右,Windows就要查看当前所有线程的内核对象,找到可以被调度的一个,将它加载到CPU寄存器中。这个操作成为上下文切换。Windows实际上保存了一个记录,说明每个线程获得了多少次运行 ...
分类:
编程语言 时间:
2020-02-29 00:23:38
阅读次数:
81
线程也是有两部分组成的: 线程的内核对象,操作系统用来管理线程和统计线程信息的地方。 线程堆栈,用于维护现场在执行代码的时候用到的所有函数参数和局部变量。 进程是线程的容器,如果进程中有一个以上的线程,这些线程将共享进程的地址空间,操作空间中的数据,执行相同的代码,对相同的数据操作,甚至内核对象句柄 ...
分类:
编程语言 时间:
2020-02-25 17:35:08
阅读次数:
82
内核对象是个比较难理解的概念,问题的根源就在于即使是《核心编程》书中也没有说清楚它的定义,只是不停地举例和描述它的性质,还有如何使用。 盲人摸象,难见全貌。只能尽可能列举它的性质,注意使用了。 引用计数(书中的说法是使用计数)就是内核对象的一个很关键的性质。由于内核对象的拥有者是内核而不是进程,所以 ...