初识操作系统进程线程

17 篇文章 0 订阅

回顾

TCP/IP
应用层:将网络中的包转换成应用程序需要的数据
传输层:端口号/UDP/TCP

  1. 确认应答(核心)
  2. 超时重传(默认500ms)
  3. 连接管理(三次握手/四次挥手)
  4. 滑动窗口(快重传)
  5. 流量控制
  6. 拥塞控制(慢启动)
  7. 延迟应答
  8. 捎带应答
  9. 面向数据流(粘包半包问题)
  10. 异常情况处理

IP协议
MTU MSS关系
MTU(1500)=MSS+传输层头部大小+网络层的报头大小

操作系统

硬件组成:冯诺依曼体系结构/普林斯顿体系结构

输入设备:键盘/麦克风
存储:内存/磁盘
输出设备:显示器/音响
CPU

CPU和输入设备/输出设备 不能直接交互,必须依靠中间的存储部分(内存)

内存 VS 磁盘

内存磁盘
读写速度:纳秒读写速度:微秒
价格相对昂贵价格相对便宜
数据不能持久化(重启后无)可以持久化

OS:管理

一个执行任务就是一个进程
注:可执行任务(.exe)不是进程

PID 进程号,是进程的身份ID,重启之后,进程号会改变(随机)

PCB(进程管理模块)(描述,组织)

管理类型:管理软件,管理硬件
职责管理:对外管理(用户部分),对内管理(内核)

进程:

是操作系统分配资源的最小单位

内核部分产生一个由双向链表组成的PCB(进程管理模块)

进程属性:

  1. PID(主键ID,身份标识)
  2. 状态信息(新建,就绪,运行,阻塞,终止
  3. 优先级(优先级越高,CPU权重越大)
  4. 记账信息(记录进程运行次数,防止CPU资源分配不均)
  5. 一组指针(需要使用的资源)
  6. 上下文信息(当分配到CPU资源时,执行,没有CPU资源后,暂时保存当前状态,等待下一次执行,这个过程叫上下文)

程序运行:

并发:只有一个资源,轮流执行
从宏观的角度看是同时进行的,从微观角度看是轮流执行的

并行:所有的应用一起运行
从宏观和微观看都是同时进行的

内核态,用户态:

一般的操作系统(如Windows、Linux)对执行权限进行分级:用户态和内核态。

操作系统内核作为直接控制硬件设备的底层软件,权限最高,称为内核态
用户程序的权限最低,称为用户态

最早的并发编程是多进程并发编程
多个进程不能共享资源的

线程

线程:系统调度资源的最小单位
(对比:进程:是操作系统分配资源的最小单位

线程是进程执行的最小单位,也是线程执行的实际单位
一个进程中最好包含一个线程,线程必须依附在进程当中

进程就好比工厂,线程就好比一个流水线

线程占用系统资源更少,时间更短

进程不可以共享资源,线程可以共享资源

线程可以共享的资源:

  1. 打开的文件
  2. 内存(使用new创建的对象)

线程不可共享的资源:

  1. 上下文
  2. 记账信息
  3. 状态
  4. 线程栈信息
  5. 优先级

注意:

线程的数量不是越多越好

当线程的数量达到某个合适的值是最好的,如果有大量的线程,会出现线程之间争抢和CPU的过度调度问题了,而CPU调度是需要消耗系统资源的

那多少线程是最好的?

  • 要看具体的场景
  • 密集计算的CPU任务,IO(文件读写)型任务,
  • 计算型:线程的数量=CPU数量是最好的
  • IO型:理论上,线程数量越多越好

进程 --> 线程(轻量级的进程)–> 协程(轻量级的线程)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值