操作系统&进程

Posted ohana!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统&进程相关的知识,希望对你有一定的参考价值。

目录

一,操作系统

1.概念

2.操作系统管理进程

3.操作系统运行/启动一个进程

4.操作系统调度进程及算法

二,进程

1.概念

2.进程执行表现的特性

3.虚拟地址空间

4.进程间的通信


一,操作系统

1.概念

  • 操作系统是一组做计算机资源管理的软件的统称。
  • 目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、android系列、ios系列、鸿蒙等

2.操作系统管理进程

1)操作系统管理下层的硬件设备——通过硬件的驱动程序来进行管理的

2)操作系统管理上层的进程——任务管理器中可以看到

3)进程是系统分配资源的最小单位(基本单位)

3.操作系统运行/启动一个进程

1)操作系统运行一个进程首先要分配一些系统资源(硬盘,内存,网络等等)

2)进程启动需要先创建一个pcb(Process Control Block,进程控制块又叫Task)

3)操作系统管理进程,就是在一个数据结构中(常见如双向链表),存储每个进程的pcb

4)pcb包括

  1. pid:操作系统为每个进程分配的一个身份标识,一个系统中的pid是唯一的
  2. 内存指针:用于标识进程占用的内存中的位置
  3. 资源清单:设备资源(打印机,键盘等)&文件资源(通过一个文件描述表,里面记录了可以使用的文件列表(类似数组结构),所在的索引也叫文件描述符)
  4. 优先级的调度信息
  5. 其他一些调度信息(执行了/等待了多久,执行了那些代码)
  6. 进程上下文(进程在时间片轮转调度的时候,切换出去时的环境(运行指令需要的变量等)为上文,恢复执行时的环境为下文)

4.操作系统调度进程及算法

1)先来先服务:根据时间先后顺序来执行

2)高优先级优先:优先级的高的先执行(指的是总的优先级:进程优先级信息+进程等待时间)

3)短作业优先:某个作业的(一组任务)的剩余时间越短,就优先执行,但是存在一些缺陷:某些耗时长的任务,就没机会执行了(也叫饥饿)

4)抢占式:某个高优先级的进程加入,就可能暂停优先级低的任务,先执行高的(Java中的多线程就是使用抢占式)更多的适用一些实时性高的系统执行的进程,需要及时反馈执行结果

5)非抢占式:某个进程必须执行完毕,由进程告诉操作系统执行是否执行结束,可以调度后续的进程(也可能出现进程饥饿的现象)

6)时间片轮转调度算法:最主要的现象(整个电脑中,进程数远超过了cpu核心数还是在执行)

  • 在操作系统中,使用了一个就绪队列的数据结构,其中就是存放要运行的进程
  • 每次使用头结点的进程,来运行一段时间,再放回到队尾(这段时间叫做这次运行的时间片,这个时间片的大小,是由操作系统计算出来的)

二,进程

1.概念

  • 进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程

2.进程执行表现的特性

1)并发:一个cpu以时间片轮转调度的方式依次执行多个进程(人的感知是“同时执行”)

2)并行:多个cpu在一个时间点上,是同时执行多个进程的

多个程序的代码执行,既存在并发,也存在并行

表现特征:单个程序代码的执行顺序,是顺序的,多个程序的代码之间,就可能是无序的 

3.虚拟地址空间

4.进程间的通信

由于虚拟内存隔离了进程使用的内存,需要共享数据,就需要采取通信的方式

方式1:文件

方式2:网络(socket)

以上是关于操作系统&进程的主要内容,如果未能解决你的问题,请参考以下文章

daemon函数的原理及使用详解

Linux网络编程--进程间通信

Python多进程multiprocessing

操作系统—进程

Linux进程线程源码浅析

Linux进程线程源码浅析