首页 > 系统相关 >复习笔记|第十五章 Windows进程和线程管理《操作系统原理教程》

复习笔记|第十五章 Windows进程和线程管理《操作系统原理教程》

时间:2023-08-07 14:13:33浏览次数:41  
标签:状态 优先级 复习 Windows 32 线程 进程 就绪

参考教材:《操作系统原理教程(第4版)》刘美华 翟岩龙著

大纲问题回答(精简版)

1. 管理进程和线程的数据结构:

执行体进程块EPROCESS、执行体线程块ETHREAD、内核进程块KPROCESS、 内核线程块KTHREAD。

struct EPROCESS{ P285
    KPROCESS PCB; 内核进程块
    ObjectTable; 进程的句柄表
    PageDirectoryPte; 页目录页面的页表项32位
    ImageFileName; 进程的可执行映像文件名
    SectionObject; 指向可执行映像文件的区域对象
    SectionBaseAddress; 该区域的基地址
    PhysicalVadRoot; 物理VAD树的根
    WorkingSetPage; 进程工作集页面
    Peb; 位于进程私有地址空间的环境块
    Win32Process; 指向由Windows子系统管理的进程区域,此值不为空,说明是GUI进程。
    PriorityClass; 进程的优先级
    ThreadListHead; 线程链表
    ActiveProcessLock; 所有活动进程连接在一起
……
} 
struct KPROCESS{
    DISPATCHER_Header; 调度程序对象
    DirectoryTableBase; 页目录表的物理地址
    BasePriority; 基本优先级
…… 
}
struct ETHREAD
{
    KTHREAD TCB;
    StartAddress; 
    线程的起始地址
    ……
}
struct KTHREAD {
    1. 核心栈的栈指针
    2. 与调度和同步有关的信息(优先级、时间片、当前的状态、等待块列表等)
    3. 与本线程有关的APC列表
}

2. 创建进程:

CreateProcess( );创建线程:CreateThread( )
CreateProcess主要流程
① 打开可执行文件 (.exe),创建一个区域对象,建立可执行文件与虚拟内存之间的映射关系。
② 创建执行体进程对象EPROCESS。
③ 创建一个主线程。
④ 通知Win32子系统,对新进程和线程进行一系列初始化。
⑤ 完成地址空间的初始化,开始执行程序。

3. 线程的7种状态,及其解释。

◆就绪,备用,运行,等待,传输,终止,初始化状态
①就绪状态(ready)。 表明线程可以被调度执行,线程在就绪队列中排队。
②备用状态(standby)。 处于备用状态的线程已经被选中,作为下一一个要运行的线程,已选择好执行的处理机,正等待描述表切换,以便进入运行状态。
③运行状态(running)。 处于系统中的每个处理机,只能有一个线程可以处于运行状态。④等待状态(waiting)。线程等待某个事件或者等待某个对象成为有信号状态。
⑤传输状态(transition)。 传输状态类似于就绪状态,但线程在等待时,它的核心栈被调到外存。当线程核心栈被调回主存时,线程变为就绪状态。
⑥终止状态( terminated)。线程执行完成时进入终止状态。
⑦初始化状态( initialized)。正在创建过程中的线程状态。

4. 线程调度:基于优先级的抢先式的多处理机调度系统。线程调度程序的数据结构:32个就绪线程队列、32位线程就绪队列位图、32位处理机空闲位图。

◼ 基于优先级的抢先式的多处理器调度系统,优先级相同时按时间片轮转。
◼ 线程调度时,不考虑线程属于哪个进程。

◼ 32个就绪队列。每个优先级对应一个。
◼ 32位掩码的就绪位图。每一位指示一个优先级就绪队列中是否有线程等待运行。
◼ 32位掩码的空闲位图。每一位指示一个处理机是否处于空闲状态。

5. 线程优先级的提升时机。

❖ 系统会提升线程的优先级,以改善性能。
1. I/O操作完成后的线程。
2. 信号量或事件等待结束的线程。
3. 前台进程中的线程完成一个等待操作。
4. 由于窗口活动而唤醒GUI线程。
5. 线程处于就绪状态超过一定时间,仍未能进入运行状态(处理器饥饿)。

大纲问题回答

1. 管理进程和线程的数据结构:(2)

执行体进程块EPROCESS、执行体线程块ETHREAD、内核进程块KPROCESS、 内核线程块KTHREAD
eprocess, ethread, kprocess, kthread

struct EPROCESS{ P285
    KPROCESS PCB; 内核进程块
    ObjectTable; 进程的句柄表
    PageDirectoryPte; 页目录页面的页表项32位
    ImageFileName; 进程的可执行映像文件名
    SectionObject; 指向可执行映像文件的区域对象
    SectionBaseAddress; 该区域的基地址
    PhysicalVadRoot; 物理VAD树的根
    WorkingSetPage; 进程工作集页面
    Peb; 位于进程私有地址空间的环境块
    Win32Process; 指向由Windows子系统管理的进
    程区域,此值不为空,说明是GUI进程。
    PriorityClass; 进程的优先级
    ThreadListHead; 线程链表
    ActiveProcessLock; 所有活动进程连接在一起
……
} 
struct KPROCESS{
    DISPATCHER_Header; 调度程序对象
    DirectoryTableBase; 页目录表的物理地址
    BasePriority; 基本优先级
…… 
}
struct ETHREAD
{
    KTHREAD TCB;
    StartAddress; 
    线程的起始地址
    ……
}
struct KTHREAD {
    1. 核心栈的栈指针
    2. 与调度和同步有关的信息(优先级、时间片、当前的状态、等待块列表等)
    3. 与本线程有关的APC列表
}

2. 创建进程:(1)

CreateProcess( );创建线程:CreateThread( )
CreateProcess主要流程
① 打开可执行文件 (.exe),创建一个区域对象,建立可执行文件与虚拟内存之间的映射关系。
② 创建执行体进程对象EPROCESS。
③ 创建一个主线程。
④ 通知Win32子系统,对新进程和线程进行一系列初始化。
⑤ 完成地址空间的初始化,开始执行程序。

3. 线程的7种状态,及其解释。(2)

◆就绪,备用,运行,等待,传输,终止,初始化状态
就绪状态(ready)。 已具备所有运行的条件,只是未选好处理机;
备用状态(standby)。 已选好处理机,等待描述表切换以运行;
运行状态(running)
等待状态(waiting)。线程等待某个事件或者等待某个对象成为有信号状态。
传输状态(transition)核心栈被调到外存的就绪状态;
终止状态( terminated)。线程执行完成时进入终止状态。
初始化状态( initialized)。正在创建过程中的线程状态。
注:多了备用状态和传输状态,等待状态类似于阻塞态

4. 线程调度:基于优先级的抢先式的多处理机调度系统。线程调度程序的数据结构:32个就绪线程队列、32位线程就绪队列位图、32位处理机空闲位图。(5)

基于优先级的抢先式多处理机调度系统,优先级相同时按时间片轮转
◼ 线程调度时,不考虑线程属于哪个进程。

32个就绪队列。每个优先级对应一个。
32位掩码的就绪位图。每一位指示一个优先级就绪队列中是否有线程等待运行。
32位掩码的空闲位图。每一位指示一个处理机是否处于空闲状态。

5. 线程优先级的提升时机。(1)

❖ 系统会提升线程的优先级,以改善性能。
1. I/O操作完成后的线程。
2. 信号量或事件等待结束的线程。
3. 前台进程中的线程完成一个等待操作。
4. 由于窗口活动而唤醒GUI线程。
5. 线程处于就绪状态超过一定时间,仍未能进入运行状态(处理器饥饿)
注:I/O,信号量,等待,窗口,饥饿

标签:状态,优先级,复习,Windows,32,线程,进程,就绪
From: https://www.cnblogs.com/JinyuLi/p/17611281.html

相关文章

  • 复习笔记|第十六章 Windows存储器管理《操作系统原理教程》
    参考教材:《操作系统原理教程(第4版)》刘美华翟岩龙著大纲问题回答(精简版)1.两种数据结构:虚拟地址描述符VAD、区域对象,这两种结构各有什么作用?◆P304◼Windows系统采用一棵由虚拟地址描述符(VAD)构成的平衡二叉树来管理进程私有地址空间。一个进程的一组VAD结构构成一棵自平衡二......
  • 复习笔记|第十七章 Windows文件系统《操作系统原理教程》
    参考教材:《操作系统原理教程(第4版)》刘美华翟岩龙著大纲问题回答(精简版)1.Windows所支持的文件系统类型有哪些?❖支持FAT12、FAT16和FAT32文件系统。12、16和32分别为描述磁盘块簇地址使用的位数。NTFS.sys,使用64位的簇编号。❖现在主要使用NTFS(支持最大文件256TB)和FAT64(最大......
  • 复习笔记|第四章 存储器管理《操作系统原理教程》
    参考教材:《操作系统原理教程(第4版)》刘美华翟岩龙著大纲问题回答(精简版)1.存储器管理的功能。名字空间、地址空间、存储空间、逻辑地址、物理地址。(1)存储器分配:解决多进程共享主存的问题(2)地址转换或重定位:研究各种地址变换方法及相应的地址变换机构。(3)存储器保护:防止故障程序......
  • 复习笔记|第五章 文件系统《操作系统原理教程》
    参考教材:《操作系统原理教程(第4版)》刘美华翟岩龙著大纲问题回答(精简版)1.什么是文件和文件系统?文件系统的主要功能。UNIX系统如何对文件进行分类?它有什么好处?⚫文件是存储在外部存储器上的具有符号名的相关信息的集合。⚫文件系统:OS中管理文件的软件机构。包括管理文件所......
  • 微服务项目线程池参数的合理设置
    一:线程池参数简介ThreadPoolExecutor类可设置的参数主要有:corePoolSize:核心线程1.核心线程会一直存活,及时没有任务需要执行2.当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理3.设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭queueCapacity:任......
  • Python创建线程
    importthreading,timedeffn1(x,y,z): whileTrue: print("I'mdoingsport.") print('args:%s%s%s'%(x,y,z)) time.sleep(1)deffn2(a,b,c): whileTrue: print("I'msinging.") time.sleep(1)if......
  • 面试官:线程是如何通讯的?
    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。在Java中,线程等待和通知的实现手段有以下几种方式:Object类下的wait()、notify()和notifyAll()方法;Condition类下的await()、signal()和signalAll()方法;LockSupp......
  • windows应用程序icon缓存、查看图标、icon制作方法
    windows程序图标缓存在vs中替换c++程序的图标后,需要重新编译,但是很多情况下都不会刷新,还是看到老的图标,只能重启电脑才能看到新的图标。通过ChatGPT得到相关的回答如下:如果在Windows上更换了可执行文件(.exe)的图标,但是在图标文件已经更改的情况下仍然显示旧的图标,可能是因......
  • Windows11使用docker desktop安装kafka&zookeeper集群
    docker-compose安装zookeeper集群参考文章:http://t.csdn.cn/TtTYIhttps://blog.csdn.net/u010416101/article/details/122803105?spm=1001.2014.3001.5501准备工作:​ 在开始新建集群之前,新建好文件夹,用来挂载kafka、zookeeper数据,如下:zookeeper文件夹D:\soft\docker\zookee......
  • Oracle 11g Windows迁移至linux方案
    1.前言根据迁移规范要求,特编写xxx数据库迁移至linux环境操作方案。2.方案描述2.1环境描述源库数据量为20T,操作系统为WindowsServer200864bit,数据库版本为oracle11.2.0.1,目标库操作系统为Linuxredhat7.6,数据库版本为11.2.0.4。详细信息如下:源端数据库:业务系统  数据库 I......