Windows进程与线程数据结构
- 格式:pdf
- 大小:449.61 KB
- 文档页数:15
一、Windows进程通信简介一、Windows线程调度二、一、Windows进程通信简介Windows支持的三种内核同步对象支种核步象提供了互斥对象、信号量对象和事件对象等三种同步对象和相应的系统调用用于进程和线程同步都有一个用户指定的对象名称,不同进程 都有个用户指定的对象名称,不同进程中用同样的对象名称来创建或打开对象,从而获得该对象在本进程的句柄就是互斥信号量在 互斥对象(Mutex)就是互斥信号量,在一个时刻只能被一个线程使用包括它的相关API包括:CreateMutex、OpenMutex和ReleaseMutex–CreateMutex创建一个互斥对象,返回对象句柄–OpenMutex打开并返回一个已存在的互斥对象句柄,用于后续访问–ReleaseMutex释放对互斥对象的占用,使之成为可用就是资信号量取 信号量对象(Semaphore)就是资源信号量,取值的取值在0到指定最大值之间,用于限制并发访问的线程数它的相关API 包括:CreateSemaphore 、p OpenSemaphore 和ReleaseSemaphore –CreateSemaphore 创建一个信号量对象,在输入p 参数中指定最大值和初值,返回对象句柄–OpenSemaphore 返回一个已存在的信号量对象的句柄,用于后续访问–ReleaseSemaphore 释放对信号量对象的占用(E t)相当于“触发器”可用于通知 事件对象(Event)相当于“触发器”,可用于通知一个或多个线程某事件的出现包括它的相关的API包括:CreateEvent、OpenEvent、SetEvent、ResetEvent和PulseEvent–CreateEvent创建一个事件对象,返回对象句柄–OpenEvent返回一个已存在的事件对象的句柄,用于后续访问–SetEvent和PulseEvent设置指定事件对象为可用状态–ResetEvent设置指定事件对象为不可用状态对这种步对象提供两个统 对于这三种同步对象,Windows 提供了两个统一的等待操作:g j p jWaitForSingleObject和WaitForMultipleObjects–WaitForSingleObject可在指定的时间内等待指定对象为可用状态W itF M lti l Obj t–WaitForMultipleObjects可在指定的时间内等待多个对象为可用状态DWORD WaitForSingleObject( HANDLE hHandle, // 等待对象句柄DWORD dwMilliseconds// 以毫秒为单位的最长等待时间//);DWORD WaitForMultipleObjects( DWORD nCount, DWORD W itF M lti l Obj t(DWORD C t//对象句柄数组中的句柄数;CONST HANDLE*lpHandlesCONST HANDLE *lpHandles,// 指向对象句柄数组的指针,数组中可包括多种对象句柄;BOOL bWaitAll,BOOL bWaitAll// 等待标志:TRUE表示所有对象同时可用,FALSE表示至少一个对象可用;DWORD dwMilliseconds // 等待超时时限;);在创建时指定可否被子进程继承,另外还要对象另外还要把对象的句柄通过命令行参数传递给子进程(才能引用该对象)p可以将对象句能引用该对象)。
第4章线程管理与控制4.1 线程概念简介每个进程都拥有自己的数据段、代码段和堆栈段,这就造成了进程在进行切换等操作时都需要有比较复杂的上下文切换等动作。
为了进一步减少处理机的空转时间,支持多处理器以及减少上下文切换开销,进程在演化中出现了另一个概念——线程。
它是进程独立的一条运行路线,处理器调度的最小单元,也可以称为轻量级进程。
线程可以对进程的存空间和资源进行访问,并与同一进程中的其他线程共享。
因此,线程的上下文切换的开销比创建进程小很多。
同进程一样,线程也将相关的执行状态和存储变量放在线程控制块(TCB)。
一个进程可以有多个线程,也就是有多个线程控制块及堆栈寄存器,但却共享一个用户地址空间。
要注意的是,由于线程共享了进程的资源和地址空间,因此,任何线程对系统资源的操作都会给其他线程带来影响。
由此可知,多线程中的同步是非常重要的问题。
在多线程系统中,进程与进程的关系如图所示。
进程与线程关系4.2 Linu*多线程编程API与实验任务4.3.1 Linu*多线程编程API创建线程pthread_create()函数实际上就是确定调用该线程函数的入口点,在线程创建以后,就开始运行相关的线程函数,在该函数运行完之后,该线程也就退出了,这也是线程退出一种方法。
另一种退出线程的方法是使用函数pthread_e*it(),这是线程的主动行为。
这里要注意的是,在使用线程函数时,不能随意使用e*it()退出函数进行出错处理,由于e*it()的作用是使调用进程终止,往往一个进程包含多个线程,因此,在使用e*it()之后,该进程中的所有线程都终止了。
因此,在线程中就可以使用pthread_e*it()来代替进程中的e*it()。
由于一个进程中的多个线程是共享数据段的,因此通常在线程退出之后,退出线程所占用的资源并不会随着线程的终止而得到释放。
正如进程之间可以用wait()系统调用来同步终止并释放资源一样,线程之间也有类似机制,那就是pthread_join()函数。
XV6操作系统代码阅读⼼得(⼆):进程1. 进程的基本概念从抽象的意义来说,进程是指⼀个正在运⾏的程序的实例,⽽线程是⼀个CPU指令执⾏流的最⼩单位。
进程是操作系统资源分配的最⼩单位,线程是操作系统中调度的最⼩单位。
从实现的⾓度上讲,XV6系统中只实现了进程,并没有提供对线程的额外⽀持,⼀个⽤户进程永远只会有⼀个⽤户可见的执⾏流。
2. 进程管理的数据结构根据[1],进程管理的数据结构被叫做进程控制块(Process Control Block, PCB)。
⼀个进程的PCB必须存储以下两类信息:1. 操作系统管理运⾏的进程所需要信息,⽐如优先级、进程ID、进程上下⽂等2. ⼀个应⽤程序运⾏所需要的全部环境,⽐如虚拟内存的信息、打开的⽂件和IO设备的信息等。
XV6中进程相关的数据结构在XV6中,与进程有关的数据结构如下// Per-process statestruct proc {uint sz; // Size of process memory (bytes)pde_t* pgdir; // Page tablechar *kstack; // Bottom of kernel stack for this processenum procstate state; // Process stateint pid; // Process IDstruct proc *parent; // Parent processstruct trapframe *tf; // Trap frame for current syscallstruct context *context; // swtch() here to run processvoid *chan; // If non-zero, sleeping on chanint killed; // If non-zero, have been killedstruct file *ofile[NOFILE]; // Open filesstruct inode *cwd; // Current directorychar name[16]; // Process name (debugging)};与前述的两类信息的对应关系如下1. 操作系统管理进程有关的信息:内核栈kstack,进程的状态state,进程的pid,进程的⽗进程parent,进程的中断帧tf,进程的上下⽂context,与sleep和kill有关的chan和killed变量。
Windows常见进程分析向阳摘要: 进程概念的引入是为了使多个作业并发运行,在操作系统实现了多道程序设计以后为了提高的运行效率,系统允许同时有多个作业驻留内存,并发运算,这样计算机内就存在了竞争。
操作系统的进程管理模块,就是为了处理这种竞争而设计的。
管理和控制好程序的执行,组织和协调程序对处理机的争夺使用,最大限度地提高处理机的利用率,是计算机进程所需要解决的问题。
关键词:进程、操作系统一、进程概述1.进程概念进程是执行程序的机制,可以理解为程序对数据或请求的处理过程。
进程主要有以下几个方面组成:至少一个可执行的程序;一个独立的进程用户空间;系统资源(包括输入输出设备、文件等);一个执行栈区,包含运行现场信息【3】。
操作系统相关的进程管理和资源管理模块负责创建进程、为进程加载用户态运行程序、为进程分配资源、调度进程占用处理机、支持进程间通信等。
可以把操作系统看成支持进程并且对进程所用系统资源进行管理的系统。
2.进程控制块为了描述进程的运行变化情况,操作系统为每个进程定义了一个数据结构,叫进程控制块。
它包含了进程的描述信息和管理控制信息,是进程动态性的集中体现。
进程控制块包含三大类信息:进程标识信息、处理机状态信息、进程控制信息。
3.进程的状态为了便于管理,进程在从无到有直到完成运行而消亡的整个生命周期内,需要经历状态的转换,按不同的层次分为三态、五态和七态【2】。
通常进程主要出于五种状态,即运行状态、就绪状态、阻塞状态、创建状态和结束状态。
4.进程调度操作系统管理系统的有限资源,当有多个进程要使用这些资源时,鉴于资源的有限性,必须按照一定的原则选择进程来占用资源,即为调度【1】。
针对使用者占用不同资源调度有高级调度、中级调度和低级调度。
把CPU的调度分为三级有利于提高系统的资源利用率。
进程调度通常采用非抢先(或非剥夺)和抢先(剥夺)两种方式。
进程的调度对于有不同设计目的的系统,通常才有不同的算法,以尽可能减少作业进程的优先级调度法等待时间和转换时间,提高系统资源的利用率。
创建进程的过程分成六个阶段,发生于操作系统的三个部分中。
三个部分是:1,Windows客户端即某个应用进程的包括Kernel32.dll在内的动态连接库2,Windows的“执行体”、即内核(确切地说是内核的上层)3,以及Windows子系统的服务进程Csrss中。
六个阶段是:1. 打开目标映像文件。
2. 创建Windows的“执行体进程对象”,也就是内核中的“进程控制块”数据结构。
3. 创建该进程的初始(第一个)线程,包括其堆栈、上下文、以及“执行体线程对象”,即内核中的“线程控制块”数据结构。
4. 将新建进程通知Windows子系统。
5. 启动初始线程地运行(除非因为参数中的CREATE_SUSPENDED标志位为1而一创建便被挂起)。
6. 在新进程和线程的上下文中完成用户空间的初始化,包括装入所需的DLL,然后开始目标程序的运行。
BOOL WINAPI CreateProcess(__in LPCTSTR lpApplicationName,__in_out LPTSTR lpCommandLine,__in LPSECURITY_ATTRIBUTES lpProcessAttributes,__in LPSECURITY_ATTRIBUTES lpThreadAttributes,__in BOOL bInheritHandles,__in DWORD dwCreationFlags,__in LPVOID lpEnvironment,__in LPCTSTR lpCurrentDirectory,__in LPSTARTUPINFO lpStartupInfo,__out LPPROCESS_INFORMATION lpProcessInformation);在打开可执行映像之前执行一下步骤:看书上。
第一阶段:打开目标映像文件在Win32位API中,创建进程是由CreateProcess()完成的。
进程是计算机系统中的重要概念,它是指正在运行的程序在计算机系统中的活动过程。
在操作系统中,进程是程序的执行实例,每个进程都有自己的位置区域空间、程序计数器、寄存器集合和堆栈。
进程的结构、特征和基本状态对于理解计算机系统的运行机制具有重要意义。
一、进程的结构进程的结构由进程控制块(PCB)和进程位置区域空间组成。
1. 进程控制块(PCB)是操作系统中用来记录和管理进程信息的数据结构,它包含了进程的标识符、状态、优先级、程序计数器、寄存器值、进程调度信息等。
2. 进程位置区域空间是进程在逻辑位置区域空间中的映射,它包含了代码段、数据段、堆栈段等,每个进程都有自己独立的位置区域空间,互相独立。
二、进程的特征进程具有以下特征:1. 动态性:进程是动态产生、动态消亡的,它的生命周期由创建、就绪、运行和终止四个阶段组成。
2. 并发性:多个进程可以同时存在于计算机系统中,并发执行,提高了系统资源的利用率。
3. 独立性:每个进程都拥有独立的位置区域空间和资源,相互之间互不干扰。
4. 异步性:进程间的执行顺序是不确定的,它们的执行速度和执行顺序是随机的。
5. 拥有一定的执行状态:进程可以处于就绪、运行或阻塞三种基本状态之一。
三、进程的基本状态进程有三种基本状态,它们分别是就绪状态、运行状态和阻塞状态。
1. 就绪状态:进程已经准备好运行,只需要等待CPU的分配即可进行运行。
2. 运行状态:进程正在执行指令,占用CPU资源。
3. 阻塞状态:进程由于某些原因无法继续执行,如等待I/O操作、等待资源分配等。
进程的结构、特征和基本状态是操作系统中重要的概念,它们对于理解计算机系统的运行机制、提高系统资源的利用率具有重要意义。
对于进程的理解,需要深入了解进程的结构组成、特征和基本状态,进而对操作系统的相关知识有更深刻的认识和理解。
进程的管理是操作系统中非常重要的一部分,它涉及到资源分配、调度、同步、通信等方面,在计算机系统中起着至关重要的作用。
Searching for processes and threads in Microsoft Windows memory dumpsMicrosoft Windows内存转储中的进程与线程研究Abstract摘要Current tools to analyze memory dumps of systems running Microsoft Windows usually build on the concept of enumerating lists maintained by the kernel to keep track of processes, threads and other objects. Therefore they will frequently fail to detect objects that are already terminated or which have been hidden by Direct Kernel Object Manipulation techniques.现在用于分析运行Microsoft Windows的内存转储系统的工具,通常建立在被内核维护的、用于跟踪进程、线程以及其它对象的枚举列表概念之上。
因此,在探测那些已经被终止或者已经被直接内核对象操纵技术(DKOM)隐藏的对象时,它们经常失败。
This article analyzes the in-memory structures which represent processes and threads. It develops search patterns which will then be used to scan the whole memory dump for traces of said objects, independent from the aforementioned lists. As demonstrated by a proof-of-concept implementation this approach could reveal hidden and terminated processes and threads, under some circumstances even after the system under examination has been rebooted.本文分析了表示进程和线程的内存储结构。
北⼤操作系统⾼级课程-陈向群作业-XV6进程线程阅读代码:1.基本头⽂件:types.h param.hmemlayout.h defs.hx86.h asm.hmmu.h elf.h2.进程线程部分:vm.c proc.h proc.c swtch.S kalloc.c以及相关其他⽂件代码强调⼀下:由于内存管理部分还没有学到,所以请同学们遇到相关的代码和问题时,先将问题记录下来,到学过之后,再结合进程线程管理部分进⾏深⼊学习,最后要求对XV6有整体的理解。
请⼤家围绕如下⼀些问题阐述原理课的相关内容,以及XV6中是如何实现的。
1.什么是进程,什么是线程?操作系统的资源分配单位和调度单位分别是什么?XV6中的进程和线程分别是什么,都实现了吗?答:进程是在多道程序系统出现以后,为了描述系统内部各作业的活动规律⽽引进的概念。
进程有3个基本状态,运⾏状态、就绪状态和等待状态(或称阻塞状态);进程只能由⽗进程建⽴,系统中所有的进程形成⼀种进程树的层次体系;挂起命令可有进程⾃⼰和其他进程发出,但是解除挂起命令只能由其他进程发出。
进程是具有独⽴功能的程序关于某个数据集合上的⼀次运⾏活动,是系统进⾏资源分配和调度的独⽴单位。
线程可称为轻量级的进程,是操作系统可以运⾏调度的最⼩单位。
线程是进程内的⼀个相对独⽴的可执⾏的单元。
若把进程称为任务的话,那么线程则是应⽤中的⼀个⼦任务的执⾏。
不论操作系统中是否引⼊了线程,操作系统中资源分配的基本单位都是进程。
如果操作系统没有引⼊线程那么进程就是调度的基本单位。
线程并不独⽴拥有资源,它仅仅分配了⼀些运⾏必备的资源。
⼀个进程中的多个线程共同分享进程中的资源。
在引⼊了线程的操作系统中,线程就变成了调度的基本单位,进程中的部分线程阻塞并不代表该线程被阻塞。
xv6操作系统实现了⼀个基于进程(没有实现线程)的简单进程管理机制。
通过对proc.h ⽂件的阅读了解到xv6的进程中定义了⼀个context结构,⼀个枚举类型proc_state定义了UNUSED, EMBRYO, SLEEPING, RUNNABLE, RUNNING, ZOMBIE 这6种进程的状态,proc结构定义了进程控制块的内容,cpu结构定义了寄存器和栈指针。
windows 任务管理器各进程详解Win2000/XP 的任务管理器是一个非常有用的工具, 它能提供我们很多信息, 比如现在系统中运行的程序 (进程 ,但是面对那些文件可执行文件名我们可能有点茫然,不知道它们是做什么的,会不会有可疑进程 (病毒,木马等。
本文的目的就是提供一些常用的 Win2000/XP 中的进程名,并简单说明它们的用处。
在 W2K/XP中,同时按下 crtl+shift+Esc键,可以打开 Windows 任务管理器,单击“进程” , 可以看到很多正在运行的进程,仔细看看有很多奇怪的 EXE 文件在运行?下面这些并不是真正的服务,而是在不同情况下运行的程序或进程,很多还是必需的进程。
【 Csrss 】 :这是 Windows 的核心部份之一,全称为 Client Server Process。
我们不能结束该进程。
这个只有 4K 的进程经常消耗 3MB 到 6MB 左右的内存, 建议不要修改此进程, 让它运行好了。
【 Ctfmon 】 :这是安装了 WinXP(尤其是安装 ofice XP后,在桌面右下角显示的“语言栏” , 如果不希望它出现, 可通过下面的步骤取消:双击“控制面板” , “区域和语言设置” , 单击“语言”标签,单击“详细信息”按钮,打开“文字服务和输入语言”对话框,单击下面“首选项”的“语言栏”按钮,打开“语言栏设置”对话框,取消“在桌面上显示语言栏”的勾选即可。
不要小看这个细节,它会为你节省 1.5MB 到 4MB 的内存。
【 dovldr32】 :如果你有一个 Creative SBLive 系列的声卡,就可能击现这个进程,它占用大约 2.3MB 到 2.6MB 的内存。
有些奇怪的是, 当我从任务栏禁止了这个进程后, 通过 DVD 实验, 并没有发生任何错误。
但如果你将这个文件重新命名了,就会出现 windows 的文件保护警告窗口,而且 Creative Mixer 和 AudioHQ 程序加载出错。
计算机考研复试题库及答案一、操作系统1. 下面关于进程和线程的描述中,错误的是:答案:进程是操作系统分派资源的基本单位,线程是进程分派资源的基本单位。
2. 在Windows操作系统中,以下哪个命令用于查看当前正在运行的进程?答案:tasklist3. 下面哪条命令是Linux中用于创建新目录的?答案:mkdir二、数据结构与算法1. 下列选项中,时间复杂度最低的是:A. O(1)B. O(n)C. O(logn)D. O(nlogn)答案:A. O(1)2. 在一个有序数组中搜索一个特定的值,选择使用二分查找算法的时间复杂度是?答案:O(logn)3. 在以下排序算法中,哪个具有最坏情况时间复杂度为O(n^2)?A. 快速排序B. 归并排序C. 插入排序D. 堆排序答案:C. 插入排序三、计算机网络1. 下列关于HTTP和HTTPS协议的说法,哪个是正确的?答案:HTTPS是HTTP加密传输协议,通过SSL/TLS加密网络通信。
2. IP地址的分类中,192.168.0.1属于以下哪个分类?答案:私有IP地址3. HTTP协议是无状态的,这意味着服务器不会在多次请求之间保留任何信息。
要实现状态管理,HTTP协议使用以下哪种机制?答案:Cookie四、数据库1. SQL语句用于从关系数据库中选择数据的是?答案:SELECT2. 下面哪种数据库模型不属于非关系型数据库?A. 关系型模型B. 文档数据库模型C. 键值对模型D. 列族模型答案:A. 关系型模型3. 下面哪个SQL语句错误?A. SELECT * FROM students WHERE age>=18 AND age<=22B. SELECT * FROM students WHERE name LIKE '%Li%'C. SELECT * FROM students WHERE age BETWEEN 18 AND 22D. SELECT * FROM students WHERE name='Li' OR 'Wang'答案:D. SELECT * FROM students WHERE name='Li' OR 'Wang'五、计算机组成原理1. 下面哪个存储器属于易失性存储器?答案:DRAM2. 在计算机CPU中,下面哪个部件用于存储指令执行过程中的中间结果?答案:寄存器3. 下面对于计算机处理器的描述中,错误的是?答案:处理器的时钟频率越高,性能越低。
进程、线程、协程之概念理解+线程和进程各⾃有什么区别和优劣⼀、概念⾸先,根据图了解⼀下串⾏,并⾏和并发的基本概念: 1、进程 资源分配的基本单位进程(Process)是计算机中的程序关于某数据集合上的⼀次运⾏活动,是系统进⾏资源分配和调度的基本单位,是操作系统结构的基础。
在早期⾯向进程设计的计算机结构中,进程是程序的基本执⾏实体;在当代⾯向线程设计的计算机结构中,进程是线程的容器。
程序是指令、数据及其组织形式的描述,进程是程序的实体。
Linux系统函数fork()可在⽗进程中创建⼀个⼦进程,在⽗进程接到新请求时,复制出⼀个⼦进程来处理,即⽗进程监控请求,⼦进程处理,实现并发处理。
注意:必须是Linux系统,windows不能⽤fork。
组成进程是⼀个实体。
每⼀个进程都有它⾃⼰的地址空间,⼀般情况下,包括⽂本区域(text region)、数据区域(data region)和堆栈(stack region)。
⽂本区域存储处理器执⾏的代码;数据区域存储变量和进程执⾏期间使⽤的动态分配的内存;堆栈区域存储着活动过程调⽤的指令和本地变量。
特征动态性:进程的实质是程序在多道程序系统中的⼀次执⾏过程,进程是动态产⽣,动态消亡的。
并发性:任何进程都可以同其他进程⼀起并发执⾏独⽴性:进程是⼀个能独⽴运⾏的基本单位,同时也是系统分配资源和调度的独⽴单位;异步性:由于进程间的相互制约,使进程具有执⾏的间断性,即进程按各⾃独⽴的、不可预知的速度向前推进结构特征:进程由程序、数据和进程控制块三部分组成。
多个不同的进程可以包含相同的程序:⼀个程序在不同的数据集⾥就构成不同的进程,能得到不同的结果;但是执⾏过程中,程序不能发⽣改变。
进程的⼏种状态(1)run(运⾏状态):正在运⾏的进程或在等待队列中等待的进程,等待的进程只要以得到cpu就可以运⾏(2)Sleep(可中断休眠状态):相当于阻塞或在等待的状态(3)D(不可中断休眠状态):在磁盘上的进程(4)T(停⽌状态):这中状态⽆法直观的看见,因为是进程停⽌后就释放了资源,所以不会留在linux中(5)Z(僵⼫状态):⼦进程先与⽗进程结束,但⽗进程没有调⽤wait或waitpid来回收⼦进程的资源,所以⼦进程就成了僵⼫进程,如果⽗进程结束后任然没有回收⼦进程的资源,那么1号进程将回收 2、线程 CPU调度和分配的基本单位,程序执⾏的最⼩单位。
windows组成结构Windows操作系统是一种由微软公司开发的操作系统,广泛应用于个人计算机和企业服务器等领域。
它采用了层次化的结构组织,包括硬件抽象层、内核层、用户模式和应用程序等多个组成部分。
Windows操作系统的最底层是硬件抽象层(HAL)。
这一层负责处理与硬件设备的交互,包括处理器、内存、外设等。
它为上层的内核层提供了一个统一的接口,使得不同硬件设备可以通过相同的方式进行访问和控制。
在硬件抽象层之上是内核层(Kernel)。
内核是操作系统的核心部分,负责管理计算机的资源,包括进程管理、内存管理、文件系统、设备驱动等。
内核提供了一组系统调用接口,供上层的用户模式和应用程序使用。
同时,内核也负责处理中断和异常等低层次的操作。
用户模式是在内核层之上的一层抽象,它提供了一组API(应用程序接口),用于开发和运行应用程序。
用户模式包括图形用户界面(GUI)和命令行界面(CLI)两种形式。
GUI提供了直观的图形界面,用户可以通过鼠标和键盘进行操作;而CLI则提供了文本界面,用户可以通过命令输入和输出进行操作。
应用程序是在用户模式下运行的具体应用软件,包括办公软件、娱乐软件、开发工具等。
应用程序通过调用系统提供的API来实现与操作系统的交互。
在Windows操作系统中,应用程序可以运行在单个进程中,也可以通过多进程或多线程的方式来实现。
除此之外,Windows操作系统还包括了许多附加组件和服务,如网络服务、安全服务、图形系统等。
这些组件和服务为用户提供了更多的功能和便利,使得Windows操作系统成为了一个功能强大、易于使用的操作系统。
总结起来,Windows操作系统的结构主要包括硬件抽象层、内核层、用户模式和应用程序。
硬件抽象层负责处理与硬件设备的交互;内核层负责管理计算机的资源;用户模式提供了一组API,用于开发和运行应用程序;应用程序是具体的应用软件。
通过这种层次化的结构,Windows操作系统能够有效地管理和控制计算机的各个方面,提供稳定、高效的运行环境。
第一章1.操作系统设计目标:方便性、有效性、便于设计实现维护。
2.引入多道程序系统的原因:提高CPU的利用率。
特点:在主存同时存放多个作业,使之同时处于运行状态,共享系统中的各种资源。
3.操作系统基本功能:处理机管理、存储器管理、设备管理、文件管理。
4.批处理系统特点:吞吐量大、资源利用率高、无法交互、平均周转时间长。
分时系统特点:同时性、独立性、交互性、及时性。
实时系统特点:实时性、可靠性、确定性。
5.衡量OS的性能指标:资源利用率、吞吐量、周转时间。
6.对称多处理:操作系统和用户程序可安排在任何一个处理机上运行,各处理机共享主存和各种I/O设备。
7.操作系统的特性:并发性、共享性、虚拟性、异步性。
8.CPU工作状态:核心态(操作系统内核程序)、用户态(用户程序)。
用户态到核心态的转换由硬件完成。
核心态到用户态的转换由内核程序执行后完成。
9.系统调用:内核向用户提供的,用来运行系统内核子程序的接口。
特权指令执行时,CPU处于核心态。
10.用户与操作系统的接口:操作接口(命令语言或窗口界面)、编程接口(系统调用)。
第二、三章1.程序顺序执行的特点:串行性、封闭性、可再现性。
2.进程的四大特性:动态性、独立性、并发性、结构性。
3.进程控制块的组成部分:进程标识符、状态+调度+存储器管理信息、使用的资源信息、CPU现场保护区、记账信息、进程间家族关系、进程的链接指针。
4.进程基本状态:运行态、阻塞态、就绪态。
5.进程控制:是指系统使用一些具有特定功能的程序段来创建、撤消进程,以及完成进程各状态之间的转换。
6.进程调度的功能:记录系统中各进程的执行状况、选择就绪进程占有CPU、进行进程上下文的切换。
方式:非抢先/非剥夺方式(批处理)、抢先/剥夺方式(分时、实时)。
时机:①现行进程完成或错误终止;②提出I/O请求,等待I/O完成;③时间片用完或更高优先级进程就绪;④执行了某种原语操作。
7.进程调度的算法:先来先服务、最短作业优先、响应比高者优先、优先级调度法、轮转法、多级反馈队列轮转法。
《操作系统原理实验》
Windows进程与线程数据结构
主讲:黄伯虎
Windows 体系结构
简化的windows 结构图
Kernel: 由低层次的操作系统功能构成,比如线程调度、中断和异常分发、多处理器同步等。
提供了一些例程和基本对象。
执行体可以利用这些对象实现更高层次的功能。
Executive: 包含了基本的操作系统服务,包括内存管理、进程和线程管理、安全性、I/O 、网络和跨进程通信等。
Windows基本对象暴露给windows API的执行体对象
执行体对象:
指由执行体的各种组件(比如
进程管理器、内存管理器、
I/O子系统等)所实现的对
象。
用户可见。
内核对象:
指由Windows内核实现的一
组更为基本的对象。
内核对
象对用户而言是不可见的,
只能在执行体内部被创建和
使用。
Windows进程的组成(从最高抽象层次看)
一个私有的虚拟地址空间
一个可执行的程序:定义了代码和数据,并被映射到进程的虚拟地址空间。
一个已经打开句柄的列表:指向各种资源,比如信号量、文件,该进程的所有线程都可访问这些系统资源。
一个被称为访问令牌的安全环境:标识与该进程关联的用户、安全组和特权
一个被称为进程ID的唯一标识
至少一个执行线程
Windows进程的关键数据结构
执行体进程块(EPROCESS)
执行体进程对象的对象体,包括进程ID、父进程ID、程序名、进程优先级、内存管理信息、设备映像等。
核心进程块(KPROCESS)
内核进程对象的对象体,又称PCB,包括线程调度时需要的信息,如进程状态、线程时间片等。
进程环境块(PEB)
包括用户态代码需要和修改的信息。
Windows环境子系统核心态部件win32k.sys为每个进程建立的进程信息数据结构WIN32KPROCESS
Windows环境子系统进程csrss(用户态)为每个进程建立的进程信息数据结构
Process environment
block
Win32 process block
Handle table
Process address space
System address space
Process block (EPROCESS)
PCB
组成线程的基本部件
一组代表处理器状态的CPU寄存器中的内容
两个栈:一个用于当线程在内核模式下执行的时候,另一个用于线程在用户模式下执行的时候。
一个被称为线程局部存储区(TLS, Thread Local Storage)的私有存储区域:各个子系统、运行库和DLL都会用到该存储区域
一个被称为线程ID的唯一标识符
安全环境
Windows线程的关键数据结构
执行体线程块(ETHREAD)
执行体线程对象的对象体,包括:进程ID、起始执行地址、访问令牌、LPC消息、定时器信息、KTHREAD等。
核心线程块(KTHREAD)
内核线程对象的对象体,包括线程调度信息、同步信息、核心栈信息等。
线程环境块(TEB)
包括用户态代码需要和修改的信息。
Windows环境子系统核心态部件win32k.sys为每个线程建立的线程信息数据结构WIN32THREAD
Windows环境子系统进程csrss(用户态)为每个线程建立的线程信息数据结构
Thread environment
block
Thread block (ETHREAD)
...
Process address space
System address space
TCB Process environment
block
Win32 process block Handle table
Process block (EPROCESS)
PCB
Dispatcher Header
Processor Affinity Kernel Time User Time
Inwwap/Outswap List Entry
Process Spin Lock Resident Kernel Stack Count
Process Base Priority Default Thread Quantum
Process State Thread Seed Disable Boost Flag Process Page Directory
KTHREAD
. . .
KPROCESS
Windows 进程线程内部数据结构
EPEOCESS & KPROCESS
Quota Block
Exit Status Primary Access Token Process ID Parent Process ID
Exception Port Debugger Port
Handle Table
Process Environment Block
Create and Exit Time Next Process Block Image File Name Process Priority Class
Memory Management Information
EPROCESS
Kernel Process Block (or PCB)
Image Base Address Win32 Process Block EPROCESS
PEB
Quota Block
Exit Status Primary Access Token Process ID Parent Process ID
Exception Port Debugger Port
Handle Table
Process Environment Block
Create and Exit Time Next Process Block Image File Name Process Priority Class
Memory Management Information
EPROCESS
Kernel Process Block (or PCB)
Image Base Address Win32 Process Block EPROCESS
PEB
Image base address
Module list
Thread-local storage data
Code page data Critical section time-out Number of heaps Heap size info GDI shared handle table OS version no info Image version info Image process affinity mask
Process heap
Total User Time Total Kernel Time
Thread Scheduling Information
Synchronization Information List of Pending APCs Timer Block and Wait Blocks List of Objects Being Waiting On
System Service Table
TEB
KTHREAD
Thread Local Storage
Kernel Stack Information Dispatcher Header Trap Frame
ETHREAD & KTHREAD
ETHREAD
Create and Exit Time
Process ID
Thread Start Address
Impersonation Information LPC Message Information
EPROCESS
Access Token
KTHREAD Timer Information
Pending I/O Requests
TEB
Exception list
Stack base
Stack limit
Thread ID
Active RPC handle
LastError value Count of owned crit. sect.
Current locale
User32 client info
GDI32 info
OpenGL info
TLS array Subsyst. TIB Fiber info
PEB Winsock data
Windows进程线程模型
参考资料
Books
Mark E. Russinovich and David A. Solomon, Microsoft Windows Internals, 4th Edition, Microsoft Press, 2004.
Chapter 6 -Processes, Thread, and Jobs。