操作系统-课堂笔记-线程(南航)

文章目录

  • 线程
    • 回顾
    • 为何引入线程?
    • 线程简介
    • 多线程的实现方式
      • 内核级
      • 用户级
      • 用户级线程VS内核级线程
    • 再谈用户级线程与内核级线程
      • 多对一实现
      • 一对一
      • 多对多实现
    • 多线程编程实例
        • 课外充电站

线程

之前我们都是以进程为单位进行探究的,其实现代操作系统调度单位都是线程。

我们之前以进程为单位进行探究有助于简化问题,帮助我们建立知识体系,下面我们介绍线程。

回顾

先回顾下我们进程部分讲的内容:

  • 进程的概念
    • 进程的内存抽象
    • 进程的状态及转移
    • PCB与进程切换
    • 进程的创建与终止
  • 进程通信
    • 进程通信的原因
    • 消息传递、共享内存、管道

进程在操作系统如何表示?
操作系统-课堂笔记-线程(南航)_第1张图片

进程是如何调度的?

  • 分时操作系统,时间片的概念,时钟中断来临时触发调度程序

PCB中有哪些内容?PCB需要管理什么?

  • 先不谈进程管理,除进程管理外,需要记录和内存相关的一些内容
  • 要记录该进程中打开的文件
  • 进程相关的:进程号、父进程号等信息
    操作系统-课堂笔记-线程(南航)_第2张图片

为何引入线程?

先回顾下创建进程:

  • 创建一个进程需要搞一个新的PCB出来,即创建进程花费的时间和PCB的大小是有关的。
  • 新的进程不仅仅需要创建PCB,还需要分配独立的地址空间
  • 先看一段代码:
    //大段程序
    int pid=fork();
    if(pid==0){
    //子进程的代码
    }
    //大段代码
    
  • 上面代码在执行fork之后:为子进程创建了新的PCB,然后将父进程的所有代码复制一份给子进程。
  • 这里引出问题:子进程和父进程代码执行的区别仅仅在于if(pid==0)这一个地方,那么没有必要将所有代码全复制叭~ 所以线程出现了

总结下为何需要线程,因为进程有如下缺点:

  • 空间缺陷:PCB占用空间太大
  • 时间缺陷:PCB大导致创建新进程所消耗的时间变长。而且进程之间传递数据需要内核介入(进程通信机制)。

将进程概念中的执行进一步分离:

  • 进程的含义覆盖了:地址空间、权限、资源等

你可能感兴趣的:(Linux,南航-操作系统-课堂笔记,Linux,操作系统,计算机底层原理,多线程,用户级线程)