linux哪个符号标记子进程,基础知识普及:操做系统中的进程与线程!

1460000022943809

操做系统是管理计算机硬件和软件资源的计算机程序,它管理计算机的内存分配,决定资源供需关系、控制输入输出设备以及提供用户和系统交互的操做界面算法

简单的归纳一下,操做系统就是一个管理硬件、提供用户交互的软件系统shell

二. 操做系统的历程安全

1. 无操做系统时代:人工操做、cup等待人工操做、资源利用率低数据结构

2. 批处理系统时代:cpu无需等待人工操做、批量输入任务、资源利用率提高、多道程序设计并发

3. 分时系统时代:多用户共享、可调试程序、资源利用率大幅提高异步

三. 操做系统的基本功能spa

1. 对计算机资源的管理,如处理器资源的管理、IO设备的管理、存储器资源的管理操作系统

2. 实现了对计算机资源的抽象线程

3. 提供了用户与计算机之间的接口:如图形界面、shell终端等设计

四. 操做系统的相关概念

多道程序设计

概述:多道程序设计是指在计算机内存中同时存放多个程序,而这些个程序在操做系统的管理之下,相互交替运行,对多道程序的管理是操做系统的重要功能

意义:早期的批处理系统虽然能够批量输入任务,但一次只能处理一个任务,多道程序设计的出现使得批处理系统能够一次处理多个任务,大大的提升了资源的利用率

1. 并发性

概述:并发性分为并行和并发两种状况

并行:是指两个或多个事件能够在同一时刻发生

并发:是指两个或多个事件能够在同一时间间隔发生

2. 共享性

概述:共享性表现为操做系统中的资源可供多个并发的程序共同使用,这种共同使用的形式称之为资源共享

3. 虚拟性

概述:把一个物理实体转换为若干个逻辑实体,物理实体是真实存在的,而逻辑实体是虚拟的,这种虚拟化的技术 又分为时分复用技术和空分复用技术

时分复用技术:资源在时间上进行复用,不一样程序并发使用,例如:

虚拟处理器技术:就是借助多道程序技术为每一个程序创建进程,多个进程之间分时的使用处理器

虚拟设备技术:物理设备虚拟为多个逻辑设备,每一个程序占用一个逻辑设备,多个设备经过逻辑 设备并发访问

空分复用技术:用来实现虚拟磁盘、虚拟内存等

虚拟磁盘:一块物理磁盘虚拟为逻辑磁盘,如C、D、E等逻辑磁盘,这样每一个磁盘使用起来相对 独立、互不影响更加安全和方便

虚拟内存:在逻辑上扩大程序的存储容量,这样咱们就可使用比实际内存更大的容量,内存在 计算机的做用是无可替代的,全部的程序都须要加载到内存中才能执行,若是执行的 程序过大或者过多,就会致使内存不足。为了防止这样的状况,就有了虚拟内存的诞 生,在Windows系统中,使用一部分硬盘空间来充当内存使用,这部分空间即称为虚 拟内存

4. 异步性

概述:在多道程序的设计之下,容许多个程序并发执行,但因进程在使用资源时须要等待或者放弃,因此进程的执行并非连续的,而是以断断续续的方式进行的

例如:有三个程序A、B、C它们在交替的运行,并使用同一资源,目前是A正在使用资源,假设A使用完毕 后释放了该资源,B、C开始同时竞争这一资源,而咱们不知道谁最后竞争到了这一资源,这时进程 就是在以不可预知的形式在向前推动,咱们不知道程序什么时候执行、什么时候暂停、什么时候完成,最后就致使 了程序的异步性

进程和程序的区别:1. 程序是静止的而进程是动态的

2. 程序是永久存在的。进程是程序在数据集上的一次执行,是暂时的

3. 程序和进程并不是是一 一对应的。一个进程确定有与之对应的程序并且只有一个, 一个程序 可能没有与之对应的进程(这是由于程序还有被运行),也有可能有多个进程与之对应,这是 由于一个程序运行在不一样的数据集上就构成了不一样的进程

五. 进程与线程

1. 进程

概述:进程是系统进行资源分配和调度的基本单位,并做为程序独立运行的载体保证程序正常运行,使得操做系统的资源利用率大大提高

2. 进程的实体

概述:咱们用主存(内存分为主存(DRAM)和Cache(SRAM))中的进程形态来描述进程的实体,在主存中进程是一段连续存储的空间,这个空间咱们称为进程控制块(PCB)

进程控制块:1. PCB是用来描述和控制进程运行的通用数据结构

2. 记录进程当前状态和控制进程运行的所有信息

3. PCB是进程可以独立运行的基本单位

4. PCB是常在内存中的,它会被存放在内存中专门的PCB区域内,这是由于操做系统进行调度做业时 常常会访问到PCB

在控制块中存放着进程的一些重要信息,如:标识符、状态、优先级、程序计数器、内存指针、上下文数据、IO状态信息、记帐信息等

下面咱们对这些重要的信息作一个详细的描述:

标识符:一个进程惟一的标记,用来区别于其余进程

状态:说明进程当前的运行状态

优先级:进程执行的优先次序

程序计数器: 记录进程即将被执行的下一条指令的地址

内存指针:记录的是程序代码和进程数据相关的地址

上下文数据:记录的是进程执行时处理器存储的数据

IO状态信息:被进程IO操做所占用的文件列表

记帐信息:进程所使用的处理器时间等

3. 进程的类型

1)前台进程:是指用户能够在终端和进程相互交互的进程

2)后台进程:是指没有占用终端的进程,后台进程不须要和用户交互,在Linux系统中用 “&” 结尾的命令运行的 进程能够在后台运行

3)守护进程:是指在系统启动时启动,而且在系统关闭时结束的进程

4. 进程的标记

进程ID:进程ID是进程的惟一标记,每一个进程拥有不一样的ID。

ID为0的进程称为idle进程,是系统建立的第一个进程,idle进程的运行时间其实就是指系统的空闲时间 ID为1的进程称为init进程,它是0号进程的子进程,负责完成系统的初始化工做,而且init进程是全部用 户的起始进程

进程状态:如下的状态符号具体是体如今Linux系统中的

1460000022943808

5. 进程状态模型

概述:进程的状态模型分为五种,分别是建立、就绪、阻塞、执行和终止

下面咱们就来详细的说明一下这五大状态:

建立状态:进程分配到了PCB但其余资源还没有准备就绪时称为建立状态

就绪状态:当进程被分配到除CPU之外的全部必要资源后,此时的进程状态就称为就绪状态

阻塞状态:进程由于某种缘由如:IO操做,不能马上执行而放弃CPU使用权的状态称为阻塞状态

执行状态:当进程处在就绪状态并得到CPU的使用权后,就能够执行了,此时的状态就称为执行状态(在单核CPU中只能有一个进程是处在执行状态的)

终止状态: 进程执行完成由系统回收资源后的状态称为终止状态

6. 进程间的同步

1)进程同步

概述: 在多道程序设计下,多进程之间须要共同完成一项任务时,须要相互制约、互相合做、互相等待,使得各进程按必定的速度执行的过程称为进程间的同步。

2) 临界资源

概述:临界资源指的某些资源虽做为共享资源却没法同时被多个进程同时使用的资源,如:打印机

3)咱们为何须要进程间的同步?

在讨论这个问题以前,咱们先来看一个经典的问题:哲学家进餐问题

有五个哲学家,他们的生活方式是交替地进行思考和进餐,哲学家们共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五支筷子,平时哲学家进行思考,饥饿时便试图取其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐,该哲学家进餐完毕后,放下左右两只筷子又继续思考。

限制的条件

(1)只有拿到两只筷子时,哲学家才能吃饭。

(2)若是筷子已被别人拿走,则必须等别人吃完以后才能拿到筷子。

(3)任一哲学家在本身未拿到两只筷子吃完饭前,不会放下手中已经拿到的筷子

咱们描述一下哲学家们进餐的流程:

其中一个哲学家拿起左边的筷子,而后准备去拿右边的筷子,但发现右边的筷子已经被拿走了,他只能等待右边的筷子放回原位才能就餐,这时他不会放下左边的筷子,直到他拿到右边的筷子并就餐以后才会把筷子放回原位,这样看起来好像没什么问题。

如今咱们来讨论一种极端的状况:

这五个科学家同时拿起左手边的筷子,并在拿到右手边的筷子以前,不会放下已经拿到的左手边的筷子,而他们必需要有左右两只筷子才能够就餐,那么最终的结果是怎样的?我想你们都已经猜到了!

产生这种极端状况的根本缘由是:哲学家之间没有进行相互的沟通

咱们把这个问题引入到进程当中,就能够解释了咱们为何须要 进程之间的同步,它帮助咱们解决了在多个并发执行的进程之间如何对临界资源进行有效协调的问题

4)进程间同步的原则

空闲让进:当临界资源没有被占用时,这时能够容许一个进程使用该临界资源

忙则等待:当临界资源正在被某进程占用时,其余的进程必须等待该临界资源被释放才可使用

有限等待: 对等待访问的进程,应保证在有限的时间内能访问到临界资源

让权等待:当进程暂时不能访问到所须要的临界资源时,应主动的释放CPU资源

5) 进程间同步的方法

消息队列

共享存储

信号量

7. 进程调度

1)概述:是指计算机经过某种决策决定哪一个就绪程序能够得到CPU的使用权,它会保留原来进程的运行信息,而后选择新的进程并分配给它CPU的使用权

2)调度机制:(1)就绪队列的排队机制:就绪进程按照必定的方式进行排队,以便调度程序能够快速的找到就绪进 程

(2)选择运行进程的委派机制 :调度程序按照相应的策略选择就绪进程,并分配给它CPU使用权

(3)进程的上下文切换机制:保存当前进程的上下文环境到内存中,并把要执行的进程的上下文环境 加载到CPU中

问题:若当前的进程没有执行完,操做系统就执行进程的调度,那当前的进程会如何呢?

答:咱们先要了解一下在操做系统中进程的调度能够分为两类:抢占式调度和非抢占式调度

抢占式调度:操做系统容许调度程序以某种策略暂停当前正在运行的进程,把CPU资源分给其余的就绪进程

非抢占式调度:调度程序不会以任何形式抢占已经被某进程占用的CPU资源而分给其余的就绪进程,直到该进 程执行完毕或者遇到IO阻塞

对比:抢占式调度比非抢占式调度的系统开销大、但相对公平能够每一个就绪进程都能获得运行、适用于大部 分的场景

3)调度算法:(1)先来先服务调度算法:是指按照就绪队列中就绪进程的前后顺序进行调度

(2)短进程优先调度算法:是指调度程序优先选择运行时间可能最短的就绪进程,但若是就绪队 列中有须要运行时间比较长的就绪进程,那么这种算法对它是不友好的

(3)高优先权优先调度算法:是指调度程序优先选择权重比较高的就绪进程进行处理,这种算法 的好处是能够及时的处理一些比较紧急的任务,如:前台进程就要比后台进程的权重要高, 这是由于前台进程是须要和用户交互的进程

(4)时间片轮转调度算法:这是比较公平的算法,它是指按照先来先服务的原则给就绪队列中的每 个进程分配相同的运行时间来运行,以后无论当前正在运行的进程有没有执行完, 它都会把 CPU资源分配给下一个就绪进程,但它并不能保证对用户可以及时的响应

8. 死锁现象

1)概述:死锁是指两个或两个以上的进程由于竞争资源或由于彼此之间通讯时调度的顺序不当而形成的阻塞现象

2)产生的必要条件:(1)互斥条件 :是指一个进程对某资源的使用是排他性的,除非这个进程主动释放资源否 则其余的进程想使用此资源只能等待

(2)请求保持条件: 在互斥的条件之下,这个进程又请求了一个新的资源,刚好这个资源 已经被占用,这时此进程请求不到想要的资源但也不会释放已经占有 的资源,这就是请求保持条件

(3)不可剥夺条件: 进程正在使用的资源在未完成以前不能被强制剥夺,只能由自身释放

(4)环路等待条件:发生死锁现象时,必会存在进程与资源造成的等待环形链

3)避免死锁的方法:(1)系统规定进程运行以前,一次性申请好全部所需的资源,这样咱们就破坏了死锁产生 必要条件的第(2)条:请求保持条件

(2)当一个进程请求新的资源而得不到时,那么它必须释放已经占有的资源,这样咱们就 破坏了必要条件中的第(3)条:不可剥夺条件

(3)把资源按照线性排序,规定进程申请资源时只能按照所需的资源顺序来申请,这样就 破坏了第(4)条:环路等待条件

9. 线程

概述:1)线程是操做系统进行运行调度的最小单位。

2)操做系统对进程的调度实际上就是对进程里面线程的调度,它包含在进程当中,是进程中实际运行工做 的单位。

3)一个进程里面能够并发多个线程,每一个线程执行不一样的任务。

4)一个进程中的多个线程是共享进程资源的。

问题:线程之间须要同步吗?

答:同一个进程内的多个线程之间,由于也是存在竞争共享资源的问题,因此也是须要线程同步机制的

线程间同步的方法:

1)互斥量

2)读写锁

3)自旋锁

4)条件变量

10. 进程与线程对比

1460000022943810

(2)了解更多数据领域的优质课程:

1460000022890889

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值