微前端架构如何改变企业的开发模式与效率提升
604
2022-11-16
操作系统(三)进程
进程和线程的区别是老八股文了。这里要好好学习。
文章目录
1 进程综述
1.1 历史变化的角度
1.1.1 进程1.1.2 线程1.1.3 协程
1.2 三者区别1.3 多线程与多进程1.4 进程
2 进程
2.1 概念2.2 内存中的进程2.3 进程控制块(PCB process control block)2.4 进程状态2.5 CPU进程切换
2.5.1 上下文切换
2.6 Ready Queue And Various I/O Device Queues
2.6.1 进程在队列间的迁移(看pdf的图对应)2.7 调度器(scheduler)2.7.1 IO绑定和CPU绑定
2.8 进程操作
2.8.1 进程创建2.8.2 进程终止2.8.3 合作进程和独立进程Cooperating Processes independent process2.8.4 Client-Server Systems 通信
1 进程综述
1.1 历史变化的角度
1.1.1 进程
我之前是做单片机的嘛,所以从我的经历来说。一开始是程序员直接录入裸机程序跑,那时候你的程序在cpu上需要直接跟周围IO设备交互,不需要经过io控制器。 后来逐步提取了公共程序,比如汇编器,以及简单的执行库。 类似DOS这种操作系统出现,多个程序要执行,那么这个时候,进程就是“执行或者可供调用的程序实体,负责管理对应程序的执行资源,比如CPU周期,内存,IO。
1.1.2 线程
后来大家发现进程之间通信起来,共享资源太重了,希望有轻量级的“进程”有独立的执行栈,但是共享代码跟数据段,甚至整个内存空间。方便快速的通信,于是有了线程的需求,这时候进程内部有了至少一个执行线程(),而同时对于内核调度,其实所有线程都会对接真正的CPU资源,这个负责执行的,就是所谓的内核线程,
1.1.3 协程
1.2 三者区别
进程是一个程序的被分配的资源,线程是cpu调度和执行的对象。 linus都说过这两个没有严格意义上的区别。 感觉实际使用的时候线程主要是为了省内存,协程省操作系统的调度开销
1.3 多线程与多进程
linux里的多线程,就是共享同一段内存的多个进程。
1.4 进程
一个进程可以被认为是一个正在执行的程序。一个进程将需要某些资源来完成它的任务,例如CPU的哪些周期给这个进程、内存、文件和I/O设备。这些资源是在进程创建或执行时分配给它的。
在大多数系统中,进程是工作单元。系统由一组进程组成:操作系统进程执行系统代码,用户进程执行用户代码。所有这些进程都可以并发执行。
尽管传统上一个进程在运行时只包含一个控制线程,但大多数现代操作系统现在支持具有多个线程的进程。
操作系统负责进程和线程管理的几个重要方面:创建和删除用户和系统进程;进程的调度;以及同步、通信和死锁处理机制的提供。
2 进程
2.1 概念
job VS process VS task: 一个task组成多个job,某些情况下,task和process是一样的。
进程就是内存中执行的一个程序。启动new、就绪ready、运行run、等待wait和终止terminate五个步骤。 程序是磁盘上的一个可执行文件,当程序进入内存后,程序成为了一个进程。多个用户运行同一个程序,一个程序就成为了多个进程。
2.2 内存中的进程
2.3 进程控制块(PCB process control block)
进程控制块(Processing Control Block),是操作系统核心中一种数据结构,主要表示进程状态。 或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。
2.4 进程状态
这里可以跟随PPT的图片变化理解整个过程。
2.5 CPU进程切换
2.5.1 上下文切换
上下文切换是需要时间的,这断时间内,操作系统没干有意义的工作。时间和硬件有关系。这个时间是日常开销,无法省略。
2.6 Ready Queue And Various I/O Device Queues
现在的操作系统都是多线程,同时在内存中,等待cpu的调用。
ready queue: 放在内存中准备被cpu执行的进程队列
Process scheduler : 从队列中选择进程交给cpu
Device queue / IO queue: 准备使用io设备的进程队列
2.6.1 进程在队列间的迁移(看pdf的图对应)
2.7 调度器(scheduler)
Short-term scheduler (or CPU scheduler) – selects which process should be executed next and allocates CPU
Sometimes the only scheduler in a systemShort-term scheduler is invoked frequently (milliseconds) -> (must be fast)
Long-term scheduler (or job scheduler) – selects which processes should be brought into the ready queue
Long-term scheduler is invoked infrequently (seconds, minutes) (may beslow)The long-term scheduler controls the degree of multiprogramming
Medium-term scheduler can be added if degree of multiple programming needs to decrease
Remove process from memory, store on disk, bring back in from disk tocontinue execution: swapping
2.7.1 IO绑定和CPU绑定
进程还可以分类为:
I/O bound:进程会发出更多的I/O请求,(所以该进程的执行时间更受限于IO,所以叫IO绑定)CPU 绑定:进程更多去进行计算
2.8 进程操作
父进程创建子进程,形成进程树。
2.8.1 进程创建
2.8.2 进程终止
进程自己通过exit()终止 父进程通过abort()终止子进程 Cascading Termination: 父进程终止,操作系统令所有子进程都终止。 父进程通过wait()等待子进程终止
orphan 进程:父进程终止,子进程还存在 zombie 进程:父进程没有使用wait()进程,不知道子进程已经终止
2.8.3 合作进程和独立进程Cooperating Processes independent process
合作进程需要进程间的通信interprocess communication (IPC)
共享内存是被用户进程所控制的,而不是操作系统。 生产者: 消费者:信息传递: 直接通信:经常是2个进程1个连接,双向的通信,互相发 间接通信:通过邮箱,许多进程可以有一个连接
2.8.4 Client-Server Systems 通信
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~