博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
操作系统--进程
阅读量:4931 次
发布时间:2019-06-11

本文共 1597 字,大约阅读时间需要 5 分钟。

  • 进程的定义
    •   进程控制块PCB:作用:用来描述进程的基本情况和活动过程,进而控制和管理进程。
      •   组成:由程序段,数据段,pcb组成
      •   创建进程:创建进程中的PCB;撤销进程:撤销进程中的PCB
    •   进程定义:具有独立功能的程序在一个数据集合上运行的过程,他是系统进行资源分配盘和调度的一个独立单位。
    • 进程和程序的不同
      •   并发性:进程拥有,程序没有。
      •   动态性:进程是动态的,程序是静态的。
      •   独立性和异步性。
  • 进程基本状态和转换
    •                          图2-1  五种进程状态的转换
      就绪状态 -> 运行状态:处于就绪状态的进程被调度后,获得处理机资源(分派处理机时间片),于是进程由就绪状态转换为运行状态。
      运行状态 -> 就绪状态:处于运行状态的进程在时间片用完后,不得不让出处理机,从而进程由运行状态转换为就绪状态。此外,在可剥夺的操作系统中,当有更高优先级的进程就 、 绪时,调度程度将正执行的进程转换为就绪状态,让更高优先级的进程执行。
      运行状态 -> 阻塞状态:当进程请求某一资源(如外设)的使用和分配或等待某一事件的发生(如I/O操作的完成)时,它就从运行状态转换为阻塞状态。进程以系统调用的形式请求操作系统提供服务,这是一种特殊的、由运行用户态程序调用操作系统内核过程的形式。
      阻塞状态 -> 就绪状态:当进程等待的事件到来时,如I/O操作结束或中断结束时,中断处理程序必须把相应进程的状态由阻塞状态转换为就绪状态。
    • 进程的创建和终止
      •   创建过程:申请空白的PCB,填写信息-->为进程分配运行时所需的资源-->进程变为就绪状态,插入就绪队列
      •   终止过程:等待操作系统善后处理-->将PCB清零,空间返还系统。
  • 进程同步
    •   基本概念:
      •   临界资源:许多硬件资源(打印机,磁带机),进程之间采取互斥方式实现对这种资源的共享。
      •   临界区:无论是硬件临界资源还是软件临界资源,进程都必须互斥的对它进行访问。把在每个进程中访问临界资源的那段代码称为临界区。(所以每次想要访问临界区的资源的时候,必须确保它没有被人访问)
      •   同步机制遵循的规则:①:空闲让进②:忙则等待③:有限等待④:让权等待。
  • 进程通信
    •   进程通信类型:
      •   共享存储器系统:共享某些数据结构或者共享某个存储区。这里面分为:共享数据结构(生产者消费者问题),共享存储区(划分一块内存,用于共享,由进程直接管理)
      •   管道通信系统:由一个读进程和一个写进程实现共享。发送进程以字符流的形式将数据送入管道,接收进程从管道接收数据,利用管道进行通信。
      •   消息传递系统:①直接通信方式:利用os直接将消息发送出去。②间接通信方式:发送和接收进程通过中间实体(邮箱)的方式进行发送和接收。这个方法不借用任何共享存储或数据结构。
      •   客户-服务机系统:
  • 线程
    •   线程:作为调度和分派的基本单位。
    •   进程和线程的比较
      •   调度的基本单位:进程是独立调度和分配的基本单位,能独立运行,切换代价大;线程作为调度和分配的基本单位,能独立运行,切换代价小;进程的切换回导致线程的切换,而同一个进程中线程的切换对进程没有影响,但是不同进程中的线程相互切换会导致进程切换。
      •   并发性:进程间可以并发执行,多个线程也能并发执行,一个进程的所有线程也能并发执行。
      •   拥有资源:进程可以拥有资源,作为系统中拥有资源的一个基本单位(PCB);线程不拥有系统资源,只有本有够自己运行的资源。线程允许多个线程共享该进程的所有的资源。
      •   进程的系统开销大,独立性高,线程开销小,独立性比较差。
  • 线程的实现方式
    •   内核支持线程:无论系统进程还是用户进程都是在操作系统内核下运行的。
    •   用户级线程:在用户空间中实现的,用户级线程和内核无关。

 

转载于:https://www.cnblogs.com/Kobe10/p/5666439.html

你可能感兴趣的文章
PEInfo编程思路讲解03 - 工具篇03|解密系列
查看>>
2014.6.23
查看>>
发送 一个无序广播
查看>>
一块GPU就能训练语义分割网络,百度PaddlePaddle是如何优化的?
查看>>
struts2 重定向
查看>>
[大数加法]Add Binary
查看>>
Responsive设计的十个基本技巧(转)
查看>>
使用MVC的Ajax.BeginForm方法实现异步验证
查看>>
行为型模式之模板模式
查看>>
go学习笔记-常见命令
查看>>
go学习笔记-类型转换(Type Conversion)
查看>>
[shell编程]一个简单的脚本
查看>>
js浮点数运算需要注意的问题
查看>>
锋利的jQuery读书笔记---jQuery中Ajax--load方法
查看>>
@Controller和@RestController的区别(转)
查看>>
day029socketserver模块实现并发,线程、 ftp上传或下载,打印进度条
查看>>
专注就要勇于对其它1000个好主意说“不”
查看>>
nfc相关
查看>>
Python爬虫基础(四)Requests库的使用
查看>>
linux ls和 ll 命令
查看>>