操作系统真象还原第九章

9.1 实现内核线程

9.1.1 执行流

多任务操作系统采用了一种称为多道程序设计的方式,使处理器在所有任务之间来回切换。

任务调度器是操作系统中用于把任务轮流调度上处理器运行的一个软件模块。

调度器在内核中维护一个任务表(也称进程表、线程表或调度表),然后按照一定的算法,从任务表中选择一个任务,然后把该任务放到处理器上运行,当任务运行的时间片到期后,再从任务表中找另外一个任务放到处理器上运行。

执行流是独立的,它的独立性体现在每个执行流都有自己的栈、一套自己的寄存器映像和内存资源。

9.1.2 线程到底是什么

在线程中调用函数是让所运行的函数能够以调度单元的身份独立上处理器运行,当函数可以独立运行时,就会有更大的好处,就是可以让程序中的多个函数(执行流)以并行的方式运行。

9.1.3 进程与线程的关系、区别简述

线程:具有能动性、执行力、独立的代码块

进程:进程=线程+资源

9.1.4 进程、线程的状态

在这里插入图片描述

9.1.5 进程的身份证 ---- PCB

操作系统为每个进程提供了一个 PCB,即进程控制块。

在这里插入图片描述

9.1.6 实现线程的两种方式 ---- 内核或用户进程

在这里插入图片描述

  • 在用户空间中实现线程
    • 可移植性强
    • 调度算法由用户自己实现
    • 将线程的寄存器映像装载到 CPU 时,可以在用户空间完成,不需要陷入内核态,免去了进入内核时的入栈及出栈操作
    • 如果某个线程出现阻塞,操作系统会将整个进程挂起
    • 每个线程执行的时间片非常短暂,再加上进程内线程调度器维护线程表、运行调度算法的时间片消耗,反而抵消了内部调度带来的提速
  • 在内核空间中实现线程
    • 相比在用户空间中实现线程,内核提供的线程相当于让进程多占了处理器资源
    • 当进程中的某一线程阻塞后,其它线程不受影响

9.2 在内核空间实现线程

9.2.1 简单的 PCB 及线程栈的实现

ABI 是 Application Binary Interface,即应用程序二进制接口。API 是 Application Programming Interface,即应用程序可编程接口,不过这是库函数和操作系统的系统调用之间的接口。ABI 与此不同,ABI 规定的是更加底层的一套规则,属于编译方面的约定,比如参数如何传递,返回值如何存储,系统调用的实现方式,目标文件格式或数据类型等。只要操作系统和应用程序都遵守同一套 ABI 规则,编译好的应用程序可以无需修改直接在另一套操作系统上运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值