操作系统(三)进程

网友投稿 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 process​​​​2.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小时内删除侵权内容。

上一篇:使用ByteArrayOutputStream写入字符串方式
下一篇:dicom viewer开发流水帐(使用dcmtk qt 以及Open CV)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~