操作系统相关知识总结
操作系统相关的常见知识点总结
线程状态
- 新建(new)状态:当一个线程被创建后,就处于新建状态,此时系统已经为该线程分配了资源,但尚未开始执行线程的代码
- 就绪(runnable)状态:当线程开始执行时,进入就绪状态。此时该线程准备好运行,等调度器分配时间片即可开始执行
- 运行(running)状态:当线程获得CPU时间片后,进入运行状态,开始执行线程的代码
- 阻塞(blocked)状态:线程在执行过程中,可能由于某些原因如等待I/O操作,获取不到锁等而暂时放弃CPU的使用权,进入阻塞状态,当等待的条件满足时,线程重新进入就绪状态,等待CPU重新分配时间片
- 终止(terminated)状态:线程执行完毕后,或者出现异常导致线程异常终止,线程将进入终止状态
进程和线程的区别
- 资源分配:进程是操作系统中资源分配的基本单位,每个进程都有独立的内存空间,代码,数据和文件等资源,不同的进程之间不能共享这些资源;线程是进程中的执行单元,多个线程共享进程的内存空间,代码和数据资源
- 调度方式:进程是操作系统中的调度单位,调度器在进程之间切换,实现多任务的并发执行;线程是进程中的调度单位,调度器在线程之间切换,实现单个进程内多线程的并发执行
- 系统开销:由于进程是独立的资源分配单位,所以进程切换的开销比较大,需要保存和恢复进程的所有状态信息;线程是共享进程的资源,线程切换的开销相对较小,只需要保存和恢复部分状态信息
- 安全性:进程之间的资源是独立的,进程之间不会相互干扰,所以进程在安全性上比较可靠;线程共享进程的资源,多个线程之间会相互干扰,需要通过同步机制来保证安全性
- 并发性:多进程之间的资源是独立的,所以不需要使用同步机制,可以实现真正的并发执行;线程共享进程资源,需要使用同步机制来保证线程安全,这影响多线程的并发性能
调度算法
- 先来先服务算法(FCFS):按照作业到达的顺序,先到先得,适用于作业执行时间较长的场景
- 短作业优先算法:按照作业的执行时间,短作业优先,适用于作业的执行时间较短的场景
- 优先级调度算法:按照作业的优先级进行调度,高优先级先执行,适用于紧急任务优先执行的场景
- 时间片轮转算法:为每个进程分配一个时间片,在时间片到期时,将该进程挂起,执行下一个进程,适用于交互式系统和多用户系统
- 多级反馈队列算法:将作业分成多个队列,每个队列有不同的时间片大小和优先级,进程在队列之间转换,适用于复杂的多用户系统
- 最短剩余时间调度算法:在短作业优先算法的基础上,考虑每个进程的剩余执行时间,选择最短的进程执行,适用于交互式系统和多用户系统
- 最高响应比算法:根据作业的等待时间和执行时间的比值,选择最高响应比的作业执行,适用于优先级较高的多用户系统
进程间通信
进程间通信是指不同的进程之间进行数据交换和协调工作的机制,进程间通信的方式有:
- 管道:半双工的通信方式,只能实现单项数据传输,通常用于有亲缘关系的进程间通信
- 命名管道:是一种特殊的文件,可以实现不同进程之间的通信
- 信号量:信号量是一种计数器,用于控制多个进程对共享资源的访问,通常用于异步通信
- 消息队列:消息队列是一种消息传递机制,用于不同进程之间传递数据,通常用于异步通信
- 共享内存:共享内存是一种内存映射机制,多个进程可以映射同一快物理内存,从而实现共享数据
- 套接字:套接字是一种通用的进程间通信方式,可以在不同主机之间进行通信,常用于网络编程
不同的I/O方式
- 同步IO:同步IO是指发起IO操作后,必须等待IO操作完成后才能进行下一步操作,期间会一直占用CPU时间。其优点是简单可靠,但对于CPU利用率较低
- 异步IO:异步IO是指发起IO操作后,不需要等待IO操作完成就可以进行下一步操作,期间不会占用CPU时间。其优点是高效,可以提高CPU利用率,但实现较复杂
- 直接IO:直接IO是指数据传输时不需要借助用户空间和内核空间之间的缓冲区,数据直接从磁盘等设备传输到内存中。其优点是可以减少数据拷贝次数,提高效率。
- 缓冲IO:缓冲IO是指数据传输时需要借助用户空间和内核空间之间的缓冲区,数据先从磁盘等设备传输到缓冲区,再从缓冲区传输到内存中。其优点是可以减少IO次数,提高效率
发布于