操作系统也不过如此

1.进程的定义

1.1为什么要有进程这个定义

  • 在多道系统的情况下程序的执行是属于并发执行,此事他们将失去封闭性,并且具有间断性,以及运行结果的不可再现行,为了能使程序能够并发的执行,可以对并发执行的程序进行控制和描述,顺水推舟的引入了进程的概念。、

1.2 那进程和普通程序的区别在哪里呢?

  • 区别在进程比程序多了PCB进程控制块来控制进程。
  • 所以一个进程是由:PCB,程序段,数据段三部分构成。

1.3进程的几种状态

  • 就绪
  • 执行
  • 阻塞
  • 挂起

1.4 区别一下进程阻塞和挂起的区别吧

  • 阻塞:是因为进程暂时因为某种事件的干涉放弃cpu的使用权,等阻塞原因消失后才能重新运行;但这时候进程还在内存里等待,看是否能重新获取cpu的使用权。
  • 挂起: 可以被定义为暂时淘汰出内存的进程,懂得都懂计算机资源是有效的;这时候进程已经被调出内存,放在外存里面了。

2.进程的通信

2.1进程通信的概念

我的理解:一个进程想获取另一个进程的数据他们就带通信吧,一个进程又看不见另一个进程里面的东西,所有就需要操作系统的内核来帮忙,这时候操作系统的内核里面会开辟一个缓冲区,进程1把自己的数据拷贝到内核的缓冲区里面,进程2再从内核的缓冲区里面把数据拿出来。

网解:每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)

img

2.2 进程通信的7种方式

https://www.jianshu.com/p/c1015f5ffa74

1 管道/匿名管道

  • 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道。

  • 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);

  • 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。

  • 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。

    img

管道的实质:
管道的实质是一个内核缓冲区,进程以先进先出的方式从缓冲区存取数据,管道一端的进程顺序的将数据写入缓冲区,另一端的进程则顺序的读出数据。
该缓冲区可以看做是一个循环队列,读和写的位置都是自动增长的,不能随意改变,一个数据只能被读一次,读出来以后在缓冲区就不复存在了。
当缓冲区读空或者写满时,有一定的规则控制相应的读进程或者写进程进入等待队列,当空的缓冲区有新数据写入或者满的缓冲区有数据读出来时,就唤醒等待队列中的进程继续读写。

管道的局限:
管道的主要局限性正体现在它的特点上:

  • 只支持单向数据流;

  • 只能用于具有亲缘关系的进程之间;

  • 没有名字;

  • 管道的缓冲区是有限的(管道制存在于内存中,在管道创建时,为缓冲区分配一个页面大小);

  • 管道所传送的是无格式字节流,这就要求管道的读出方和写入方必须事先约定好数据的格式,比如多少字节算作一个消息(或命令、或记录)等等;

    1. 管道/匿名管道(Pipes) :用于具有亲缘关系的父子进程间或者兄弟进程之间的通信。
    2. 有名管道(Names Pipes) : 匿名管道由于没有名字,只能用于亲缘关系的进程间通信。为了克服这个缺点,提出了有名管道。有名管道严格遵循先进先出(first in first out)。有名管道以磁盘文件的方式存在,可以实现本机任意两个进程通信。
    3. 信号(Signal) :信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生;
    4. 消息队列(Message Queuing) :消息队列是消息的链表,具有特定的格式,存放在内存中并由消息队列标识符标识。管道和消息队列的通信数据都是先进先出的原则。与管道(无名管道:只存在于内存中的文件;命名管道:存在于实际的磁盘介质或者文件系统)不同的是消息队列存放在内核中,只有在内核重启(即,操作系统重启)或者显示地删除一个消息队列时,该消息队列才会被真正的删除。消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取.比 FIFO 更有优势。消息队列克服了信号承载信息量少,管道只能承载无格式字 节流以及缓冲区大小受限等缺。
    5. 信号量(Semaphores) :信号量是一个计数器,用于多进程对共享数据的访问,信号量的意图在于进程间同步。这种通信方式主要用于解决与同步相关的问题并避免竞争条件。
    6. 共享内存(Shared memory) :使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等。可以说这是最有用的进程间通信方式。
    7. 套接字(Sockets) : 此方法主要用于在客户端和服务器之间通过网络进行通信。套接字是支持 TCP/IP 的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。

3.死锁

3.1 死锁的概念

多个线程因为抢占资源从而产生的互相等待的现象

3.2 死锁产生的四个条件

  1. 互斥:资源被只能被一个线程所获取,不能被其他线程所共享
  2. 占有且等待:线程a获取自己部分所需的资源后,另一部分无法获取;线程a就一直等待
  3. 非抢占:资源非抢占,只有在持有资源的进程完成任务后资源才会被释放
  4. 循环等待:有一组等待进程 {P0, P1,..., Pn}P0 等待的资源被 P1 占有,P1 等待的资源被 P2 占有,…,Pn-1 等待的资源被 Pn 占有,Pn 等待的资源被 P0 占有。

只有同时满足以上条件死锁才会出现。

3.3 解决死锁的方法

从条件入手

  1. 破坏“占有且等待的条件”:让一个进程一次获取自己所需要的全部资源
  2. 破坏“非抢占条件”:如果一个进程提出获取新资源的请求被拒绝,那么就让他释放自己所有的资源。
  3. 破坏“循环等待条件”:可以通过定义资源类型的线性顺序来预防,可将每个资源编号,当一个进程占有编号为i的资源时,那么它下一次申请资源只能申请编号大于i的资源。如图所示:

img

4 .页面置换算法

  • 最佳置换算法(OPT):置换最久不能被访问的页面。
  • 先进先出算法(FIFO):置换最早出现的页面。
  • 最近未被使用算法(LRW):置换最近最久未被使用的页面。

5.IO控制方式

  • 轮询的可编程的io方式
  • 可中断的可编程io方式
  • DMA方式
  • 通道控制方式

6.假脱机spooling

目的:解决cpu的高速性和io设备低速之间的矛盾。

例题:

SPOOLing技术的主要目的是()

  • 提高CPU和外设交换信息的速度
    
  • 提高独占设备的利用率
    
  • 减轻用户编程负担
    
  • 提供主、辅存接口
    

    正确答案:提高独占设备的利用率

6.1 spooling的组成

  • 输入进程和输出进程
  • 输入井和输出井
  • 输入缓冲区和输出缓冲区
  • 井管理程序

6.2spooling的优点

  • 缓和的高速的cpu和低速的io设备间的不匹配矛盾
  • 减少了cpu的中断频率
  • 提高了cpu和io设备的并行性

7. 磁盘调度算法

  • 先来先服务算法
  • 最短寻道算法
  • 电梯调度算法

8. 进程调度的两种方式

  • 抢占式和非抢占式

8.1 几种典型的调度算法

  • 先来先服务:进来一个调度一个,按顺序。
  • 短作业优先:先把运行时间最短的进程给执行了。–可能会出现饥饿现象。
  • 优先级算法:等下待时间越长优先级越高
  • 最高响应比:综合等待时间和运行时间的一个调度算法。

9. 进程控制

9.1 进程控制的作用

控制进程啊。–创建新进程,终止已完成的进程,将因发生异常而无法继续运行的进程给阻塞了,负责进程中的状态转化。

9.2 内核是个啥?

  • 内核一个名词,名词就是对一种事物的一个代指。内核顾名思义就是操作系统中最里面的那一部分。
  • 为了提升操作系统的效率,操作系统最里面的那部分模块一定是和硬件密切联系的部分。
  • 所以内核就是最靠近硬件那部分的操作系统。

9.3 内核的作用

支撑功能

  • 中断处理
  • 时钟管理
  • 原语操作

10 缓冲

10.1 为什么引入缓冲

  • 缓和cpu和io设备速度不匹配的矛盾
  • 减少cpu的中断频率
  • 解决数据粒度不匹配的问题
  • 提高cpu和设备之间的并行性

10.2 缓冲区的工作方式

  • 收容输入
  • 提取输入
  • 收容输出
  • 提取输出
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值