操作系统--初识操作系统

前言

直面挑战吧,诸君,共勉!

一丶什么是操作系统

操作系统(Operating System,简称OS)是做计算机资源管理的软件,目前常见的就是Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。
也就是说,它是控制和管理计算机软硬件资源,以尽量合理有效的方法组织多个用户共享多种资源的程序集合。

操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务

操作系统我们需要了解的主要就是两个作用

(1)管理下层的硬件设施:通过硬件的驱动程序来管理硬件
(2)管理进程

二丶 操作系统如何管理进程

<1>何为进程

如果说是从理论角度,那么进程就是一段正在运行的程序。从实际来看,那么进程就是一个数据结构。目的在于清晰地刻画动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。
那么,进程究竟是什么呢?

狭义来说:进程一段程序被执行的过程
广义来说:进程是一个有一定独立功能的程序在某个数据集合上的一次运行。它是操作系统分配资源的基本单位,也是基本的执行单位。

那么就再仔细一点,一段程序是怎样被执行的呢?
浅谈类加载过程
当他进入到JVM内存当中,他就是一个合格的进程了。
一个合格的进程主要包含三部分的信息:(1)进程控制块PCB (2)数据段(3)程序段

PCB:操作系统负责管理所有的进程,包括进程的创建和消亡丶进程状态的转换和资源分配回收
等等工作。而操作系统管理和控制进程的过程,全部都是需要借助进程控制块才可以完成。也就
是说,操作系统在创建每个进程的时候都会申请一块内存空间,用于储存丶管理和控制该进程所
需要的信息。一个PCB主要包括以下内容:
1>PID:操作系统为每个进程分配的一个身份标识,一个系统中的PID是唯一的
2>内存指针:用于标识进程占用的内存位置
3>资源清单:
	1.设备资源:打印机,键盘等
	2.文件资源:比如通过一个文件描述表,里面记录了可以使用的文件列表(类似数组的结构)
4>优先级
5>进程上下文:进程在时间片轮转调度的时候,切换出去的环境为上文,恢复执行时候的环境为
下文。
6>以及其他的一些调度信息
7>以及一些其他的调度信息
数据段:就是进程运行过程中的各种数据
程序段:就是程序的代码

<2>操作系统如何管理进程

操作系统管理进程一共是分为四个部分

1>进程控制
2>进程同步
3>进程通信
4>进程调度

以下知识点目前简略提一下,后面详谈。

1>进程控制

1. 进 程 创 建 \color{red}{1.进程创建} 1.

允许一个进程创建另外一个进程

(1)为新进程分配一个唯一的进程标识号,并申请一个空白的PCB(PCB是有限的)。若PCB申请失败则创建失败。
(2)为进程分配资源,为新进程的程序和数据、以及用户栈分配必要的内存空间(在PCB 中体现)。注意:这里如果资源不足(比如内存空间),并不是创建失败,而是处于”等待状态“,或称为“阻塞状态”,等待的是内存这个资源。
(3)初始化PCB,主要包括初始化标志信息、初始化处理机状态信息和初始化处理机控制信息,以及设置进程的优先级等。
(4)如果进程就绪队列能够接纳新进程,就将新进程插入到就绪队列,等待被调度运行。

2. 进 程 的 终 止 \color{red}{2.进程的终止} 2.

引起进程终止的事件主要有:正常结束,异常结束,外界干预。

正常结束,表示进程的任务已经完成和准备退出运行
异常结束,是指进程在运行时,发生了某种异常事件,使程序无法继续运行
外界干预是指进程应外界的请求而终止运行

操作系统终止进程的过程如下

1.根据被终止进程的标识符,检索PCB,从中读出该进程的状态。
2.若被终止进程处于执行状态,立即终止该进程的执行,将处理机资源分配给其他进程。
3.若该进程还有子进程,则应将其所有子进程终止。
4.将该进程所拥有的全部资源,或归还给其父进程或归还给操作系统。
5.将该PCB从所在队列(链表)中删除。

3. 进 程 的 阻 塞 和 唤 醒 \color{red}{3.进程的阻塞和唤醒} 3.

正在执行的进程,由于期待的某些事件未发生,则由系统自动执行阻塞原语(Block),使自己由运行状态变为阻塞状态。

阻塞原语的执行过程是:

1.找到将要被阻塞进程的标识号对应的PCB。
2.若该进程为运行状态,则保护其现场,将其状态转为阻塞状态,停止运行。
3.把该PCB插入到相应事件的等待队列中去。

当被阻塞进程所期待的事件出现时,如它所启动的I/O操作已完成或其所期待的数据已到达,则由有关进程(比如,提供数据的进程)调用唤醒原语(Wakeup),将等待该事件的进程唤醒。

唤醒原语的执行过程是:

1.在该事件的等待队列中找到相应进程的PCB。
2.将其从等待队列中移出,并置其状态为就绪状态。
3.把该PCB插入就绪队列中,等待调度程序调度。

4. 进 程 切 换 \color{red}{4.进程切换} 4.

进程切换是指处理机从一个进程的运行转到另一个进程上运行

进程切换的过程如下:

1.保存处理机上下文,包括程序计数器和其他寄存器。
2.更新PCB信息。
3.把进程的PCB移入相应的队列,如就绪、在某事件阻塞等队列。
4.选择另一个进程执行,并更新其PCB。
5.更新内存管理的数据结构。
6.恢复处理机上下文。

2>进程同步

进程同步一共有以下几种方法。

1. 信 号 量 \color{red}{1.信号量} 1.

允许同一个时刻有多个线程访问同一个资源,但是需要控制同一时刻访问此资源的线程数

2. 互 斥 量 \color{red}{2.互斥量} 2.

实际上是信号量的一种特殊情况,它只允许同一时刻只有一个线程访问同一个资源

3. 事 件 \color{red}{3.事件} 3.

通过通知和操作的方式来保证多线程同步,还可以方便实现多线程优先级的操作。

3>进程通信

进程间通信目的一般有共享数据,数据传输,消息通知,进程控制等。这里说一下几个比较常见的通信方式。

1. 管 道 \color{red}{1.管道} 1.
管道分为三种:

1.普通管道PIPE:只能单向传递,只能在父子进程间使用。
2.流管道S_PIPE:没有了上面第一种限制,可以双向传递。
3.命名管道NAME_PIPE:没了第二种限制,可以在不相干的进程间传递

2. 系 统 I P C \color{red}{2.系统IPC} 2.IPC

这里常见的就是消息队列,信号量,共享内存,事件等。

信号量:控允许同一个时刻有多个线程访问同一个资源,但是需要控制同一时刻访问此资源的线
程数
消息队列:就是消息的链表,存放在内核中并且由消息队列标识符标识
共享内存:映射一段可以被其他进程访问的内存,这段共享内存由一个进程创建可以让多个内存
访问(是最快的IPC方式)
事件:也叫信号,是一种相对来说复杂的通信方式,用于接收某个进程事件已经发生过了。

4>进程调度

进程调度方式一共有以下几种:

长程调度,中程调度,短程调度

其中主要的算法有:

1. 先 来 先 服 务 \color{red}{1.先来先服务} 1.

根据时间先后顺序来执行

2. 高 优 先 级 优 先 \color{red}{2.高优先级优先} 2.

优先级高的先执行,这里的优先级高指的是总优先级:

PCB中进程优先级信息+进程等待时间

3. 短 作 业 优 先 \color{red}{3.短作业优先} 3.

某个作业执行的剩余时间越短,就优先执行。但是这样某些耗时比较长的任务,可能就没有机会执行了(也叫做饥饿)。

4. 抢 占 式 调 度 \color{red}{4.抢占式调度} 4.

某个高优先级的进程加入,就可能暂停优先级低的任务,先执行优先级高的,这种调度方式更多的适用于实时性高的系统。

5. 非 抢 占 式 调 度 \color{red}{5.非抢占式调度} 5.

某个进程,必须执行完毕,由进程告诉操作系统,我执行完了,可以调度后续的进程,当然这种的也可以出现饥饿现象。这种的一般用于批处理操作系统当中,也就是说它不会关心某个任务是否先执行,他只关注总的执行效率。

6. 时 间 片 轮 转 调 度 算 法 \color{red}{6.时间片轮转调度算法} 6.

操作系统中,使用了一个就绪队列的数据结构,其中存放的就是要运行的进程。每次使用头结点的进程,来运行一段时间,再放回队尾。

<3>关于虚拟内存

1>虚拟内存是什么?

虚拟内存是计算机内存管理的一种技术,它让应用程序认为他拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分割成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。

2>虚拟内存的作用

1.进程独占性:隔绝进程间使用的内存,进程不使用公共的物理内存,否则进程1修改了某个变量,就可能导致进程2整个程序挂掉。
2.扩展内存容量:某个进程如进入阻塞/时间片轮转切换出去,有一些从硬盘中读取到内存的数据,所有进程占用的总的内存大小就可能超过物理内存;采取的方案,就是使用虚拟内存映射到硬盘。

3>虚拟内存工作原理

当进程开始运行的时候,我们会先把一部分程序装入内存当中,另一部分暂时留在外存;当要执行的执行不在内存时,由系统自动完成将它们调入内存的工作。当没有足够的内存时,系统自动选择部分内存(暂不执行)空间,将其中原有的内容交换到磁盘上,并且释放这些内存供其他进程使用。

这样做的结果使程序的运行丝毫不受影响,使程序在运行中感觉到拥有一个不受内存容量约束的、虚拟的、能够满足自己需求的存储器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值