1 / 86
文档名称:

Linux操作系统分析-.ppt

格式:ppt   大小:2,103KB   页数:86页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Linux操作系统分析-.ppt

上传人:落意心冢 2022/5/18 文件大小:2.05 MB

下载得到文件列表

Linux操作系统分析-.ppt

相关文档

文档介绍

文档介绍:Cute
Uintage style
Linux操作系统分析-
Add your text here and write down your opninon thank you add your text here
U
i
n
21
Linux Operating Systems Analysis
进程之间的亲属关系
程序创建的进程具有父子关系,在编程时往往需要引用这样的父子关系。进程描述符中有几个域用来表示这样的关系

22
Linux Operating Systems Analysis
等待队列
当要把除了TASK_RUNNING状态之外的进程组织在一起时,linux使用了等待队列
TASK_STOPPED和TASK_ZOMBIE不在专门的链表中
TASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE状态的进程再分成很多类,每一类对应一个特定的事件。在这种情况下,进程状态提供的信息满足不了快速检索,因此,内核引进了另外的进程链表,叫做等待队列
等待队列在内核中有很多用途,尤其是对中断处理、进程同步和定时用处很大

23
Linux Operating Systems Analysis
等待队列使得进程可以在事件上的条件等待,并且当等待的条件为真时,由内核唤醒它们
等待队列由循环链表实现
在等待队列上内核实现了一些操作函数
Add_wait_queue
remove_wait_queue

24
Linux Operating Systems Analysis
等待队列的链表

25
Linux Operating Systems Analysis
进程等待
等待一个特定事件的进程能调用下面几个函数中的任一个
sleep_on
sleep_on_timeout
interruptible_sleep_on
interruptible_sleep_on_timeout
进程等待由需要等待的进程自己进行(调用)

26
Linux Operating Systems Analysis
sleep_on

27
Linux Operating Systems Analysis
进程的唤醒
利用wake_up或者wake_up_interruptible等一系列的宏,都让插入等待队列中的进程进入TASK_RUNNING状态

28
Linux Operating Systems Analysis
进程切换(process switching)
为了控制进程的执行,内核必须有能力挂起正在CPU上执行的进程,并恢复以前挂起的某个进程的执行,这叫做进程切换,任务切换,上下文切换

29
Linux Operating Systems Analysis
进程上下文
包含了进程执行需要的所有信息
用户地址空间 包括程序代码,数据,用户堆栈等
控制信息 进程描述符,内核堆栈等
硬件上下文

30
Linux Operating Systems Analysis
硬件上下文
尽管每个进程可以有自己的地址空间,但所有的进程只能共享CPU的寄存器。
因此,在恢复一个进程执行之前,内核必须确保每个寄存器装入了挂起进程时的值。这样才能正确的恢复一个进程的执行
硬件上下文: 进程恢复执行前必须装入寄存器的一组数据
包括通用寄存器的值以及一些系统寄存器
通用寄存器如eax,ebx等
系统寄存器如eip,esp,cr3等等

31
Linux Operating Systems Analysis
在linux中
一个进程的硬件上下文主要保存在thread_struct中
其他信息放在内核态堆栈中

32
Linux Operating Systems Analysis
thread_struct

33
Linux Operating Systems Analysis
上下文切换
switch_to宏执行进程切换,schedule()函数调用这个宏一调度一个新的进程在CPU上运行
在schedule()中找到调用switch_to宏的位置
switch_to利用了prev和nex