2.1 进程与线程——操作系统笔记


1. 进程

进程是能独立运行、独立获得资源的基本单位

(1) 进程的组成

  • 进程控制块PCB(Process Control Block):
    1. 进程描述信息:进程标识符PID、用户标识符UID
    2. 进程控制和管理信息:CPU磁盘网络使用情况、进程状态(运行、阻塞…)
    3. 资源分配清单:正在使用的文件、内存区域、I/O设备
    4. 处理机相关信息:寄存器的值
  • 程序段: 程序的代码(指令序列)
  • 数据段: 运行过程中产生的数据

(2) 进程的异步性

(3) 进程状态

  • 进程的五态
    在这里插入图片描述
  • 进程的状态转换图
    在这里插入图片描述
  • 进程的组织
    1. 链接方式:按照进程状态将PCB分为多个队列,操作系统有指向各个队列的指针
    2. 索引方式:根据进程状态不同,建立几张索引表,操作系统有指向各个索引表的指针

(4) 进程通讯

  • 共享存储

    1. 基于数据结构的共享:只能存放长度为10的数组,速度慢、限制多,是一种低级通信方式。
    2. 基于存储区的共享:在内存画出一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。速度更快,是一种高级通信方式。
  • 消息传递

    消息头、消息体组成

    1. 直接通信方式
    2. 简介通信方式
  • 管道通信:

    “管道”其实就是在内存中开辟一个大小固定的缓冲区。
    在这里插入图片描述

    1. 管道只能采用半双工通信,如果要双向同时通信,则需要设置两个管道。
    2. 各进程要互斥地访问管道。
    3. 数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞
    4. 如果没写满,就不允许读。如果没读空,就不允许写
    5. 数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况。

2. 线程

线程是程序执行的最小单位

(1) 线程的基本介绍

  • 引入线程之后的变化
    在这里插入图片描述
  • 线程的属性

    线程是处理机调度的单位
    多CPU计算机中,各个线程可以占用不同的CPU
    每个线程都有一个线程ID、线程控制块(TCB)
    线程也有就绪、阻塞、运行三种基本状态
    线程几乎不拥有系统资源
    同一进程的不同线程间共享进程的资源
    由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预
    同一进程中的线程切换,不会引起进程切换
    不同进程中的线程切换,会引起进程切换
    切换同进程内的线程,系统开销很小
    切换进程,系统开销较大

(2) 线程的实现

  • 线程的实现
    1. 用户级线程ULT(用线程库实现,在操作系统层面上还是一个进程)
    2. 内核级线程KLT(操作系统支持)
  • 多线程模型
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值