进程的基本概念

什么是进程

简单来说, 一个运行起来的程序就是一个进程 !

进程是操作系统进行资源分配的基本单位 .

例如 : 当我们去打开QQ , 于是就在系统中形成了一个进程 .

通过任务管理器 , 可以看到这么多的进程在运行.

进程管理

进程多了 , 自然就要进行管理 .

所谓的管理 , 可以分为两步 :

1 . 描述一个进程 : 使用 结构体 / 类 , 把一个进程有那些信息表示出来.( 结构体 也可以称为 PCB (process control block))

2 . 组织这些进程 : 使用 一定的数据结构, 把这些 结构体/对象 放到一起.

进程中结构体有那些重要的属性 ?

1 . pid : 每个进程都有的一个唯一身份标识

2 . 内存指针 : 当前这个进程使用的内存是哪个部分.(进程运行的时候, 使用了那些内存上的资源)

3 . 文件描述符表 : 文件指的是 硬盘上存储的数据 , 进程每打开一个文件 , 就会产生一个 "文件描述符"(标识了这个被打开的文件) 一个进程可能打开很多文件 , 对应了一组文件描述符, 把这些文件描述符放到一个顺序表这样的结构里 , 就构成了 文件描述符表.(进程运行时,使用了那些硬盘上的资源)

4 . 进程调度 

  1) 进程状态 :

      进程的状态主要分为两个 : 就绪态和阻塞态 , 就绪态 : 表示该进程随时可以上cpu执行.

                                                                             阻塞态 : 该进程暂时无法上cpu执行.

  2) 进程的优先级

       进程之间的调度存在优先调度的情况 .

  3) 进程的上下文

       上下文, 就是描述了当前进程执行到哪了. 因为进程在离开cpu的时候就要把当前运行的中间结果 进行" 存档 " , 当下次进程回来 cpu 上 , 再恢复之前的 "存档" , 从上次的结果继续往后执行 .

  4) 进程的记账信息

       记账信息 : 统计了每个进程 在cpu 上执行了多久了 , 可以作为调度的参考依据 .

如何组织这些进程

操作系统使用双向链表这样的结构来组织 pcb

创建一个进程, 就是创建一个 链表的节点.

销毁一个进程, 就是把链表的节点给删除了.

遍历进程列表 , 就是在遍历链表.

并行 与 并发

程序要想运行 , 就离不开 cpu .而cpu 一时间能运行的进程数是有限的 , 因此就有了 并行与并发.

CPU 有一个核心数 , 我的这个电脑同时只能让8个进程工作 .

但是这有 100多个进程, 计算机是怎么样来运行的呢? 

并行 : 同一时间 , 两个核心 , 同时执行两个进程 , 此时这两个进程就是并行执行的 .

并发 : 一个核心, 但是有三个任务 , 它的流程是 : 先执行进程1, 执行一会儿后 , 再去执行进程2,

执行一会儿之后, 再去执行进程3. 注意!  因为cpu运算的速度非常快 , 宏观上看起来 进程 1 2 3就好像是在" 同时 "运行 .

因此说 只有 8个核心 , 也是可以完成100多个进程工作的. 通过 并行 + 并发的方式来完成. 具体是使用并行还是并发 , 完全是由操作系统自身控制的.

进程与线程

创建一个进程 / 销毁一个进程 / 调度一个进程 , 它们的成本都是很高的 , 原因就体现在资源分配上 .

资源分配往往是一个很耗时的操作.

因此说 进程是比较 "重量的" 速度慢/消耗资源多.

线程则是更轻量的进程.是因为一个进程可以包括多个线程 , 而多个线程都是一个独立的可以调度执行的" 执行流 " , (这些执行流之间本事就是并发的). 同时这些线程共用一份进程的系统资源. 也就是说 , 对于线程而言 , 系统资源是已经分配好了的 , 创建线程就省下了分配资源的开销 .

区别 : 

1 . 进程包含线程

2 . 进程有自己独立的内存空间和文件描述符表, 同一个进程中的多个线程之间共享同一份地址空间和文件描述符表.

3 . 进程是操作系统资源分配的基本单位 , 线程是操作系统调度执行的基本单位 .

4 . 进程之间具有独立性 , 一个进程挂了, 不会影响到别的进程 . 同一个进程中的多个线程之间 , 一个线程挂了 , 可能会把整个进程带走 , 影响到其他线程的 .

End....

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值