操作系统(第三周 第二堂)

简介: 操作系统(第三周 第二堂)



回顾

前一篇文章的重点在于操作系统的结构,从简单结构到UNIX结构(对程序功能进行分级,彼此不能跨域访问),最后到微内核结构(减轻内核的内存,将服务包装起来作为驱动程序等)

现代计算机多采用微内核结构,所以我们电脑在安装操作系统后,很多的驱动程序(音频、USB接口等驱动)需要自己去下载安装,否则便不能使用

进程管理(process)

进程理解(总结)

1、进程可以看作执行的程序,进程也就是程序的一种

2、进程就是操作系统对象,是程序运行的实例。程序只是被动的实体,如存在磁盘上的exe文件

3、进程执行需要分配其对应程序所需要的资源,如:内存、CPU、文件等

4、程序的运行必须保证顺序性,单通道程序靠硬件实现顺序执行,并发程序靠进程来保证顺序链的实现

5、利用shell去运行自己所写的程序实际上就是创建shell进程的子进程,运行程序

6、程序写好保存后只是存储在硬盘中的代码,只有运行后才会创建进程,才是平常所说的跑起来

7、进程创建后也存储在内存当中

进程

程序到进程

一张图说明一个程序是如何变为一个进程的:

从图中可以清楚地看到进程创建后会放到内存中

内存中的进程

当运行一个程序时,我们就在内存中保存这样一个进程作为程序的实例(程序运行实际的载体)

其中:

1、堆栈(stack):存储程序运行中的临时数据、函数参数和局部变量

2、堆(heap):存储程序运行中动态分配的内存

3、数据:存储程序运行中的全局变量

4、文本段:存储程序代码(二进制文件)

5、堆和堆栈中间的空白:堆和堆栈共享的空间,在程序运行后才会填充上

进程状态

进程在运行时会不停切换状态,用以实现多程序的并行

状态类型

新的(new):进程正在创建(还没创建成功)

运行(running):指令正在执行

等待(waiting):进程等待发生某个事件(如等待I/O指令完成)

就绪(ready):进程等待分配处理器(等待CPU处理)

终止(terminated):进程已经完成执行

状态转移

1、允许:允许一个程序,shell程序调用系统调用驱动,对程序进行检查,检查允许后建一个新的进程

2、调度器调度:在CPU空闲后会通知内核,内核在多个ready中选择一个调转到CPU执行

3、中断:一个进程正在运行过程中,此时另一个之前运行的进程的特定事件(输入输出事件)完成后,外设会发送中断信号给内核。内核在收到中断后,会在正常running程序的一个时钟周期后将其转为ready状态,先去执行之前运行的进程(中断优先!!)

4、I/O或事件等待:一个进程在运行中遇到I/O或特定事件则会进入等待状态,进入该状态之前会对现场进行保存

5、I/O或事件完成:当一个等待中的进程完成了I/O或特定事件则会发送中断信号给内核,同时由内核将其状态修改为ready

6、退出:进程运行完成后由运行变为终止状态

状态的修改必须由内核完成

进程控制块

为什么需要PCB?

进程存在内存中,内核为了方便自己对多个进程进行统一的调度和管理,会为多个进程创建目录,这个目录中放置的就是一个又一个进程的进程控制块(自己的类比,仅方便理解)

每创建一个进程后,内核会在自己内部创建这个进程对应的进程控制块(Process Control Block)进程控制块也称为任务控制块,因为每一个进程可以认为是计算机的一个任务

(上图中就是一个放在内核的内存块(内核中)中PCB的模型)

1、进程状态:记录进程的状态

2、进程编号:进程的pid值,进程检索、跳转时使用

3、程序计数器:记录程序运行到哪个步。计数器本身是一个寄存器,但是和程序并行时维持顺序性有直接的关系,故被分离

4、寄存器:进程状态转移是保存现场使用

5、内存界限:内核为每一个进程划分独立内存,这里记录这个内存的开始和结束位置。操作系统利用内存界限的映射,对每一个进程独立出一个内存空间并映射在相同地址空间(程序运行中所用的实际空间地址对程序员透明

6、打开文件列表:程序中打开文件时,会将文件的资料存储在PCB当中

总结

本文到这里就结束啦~~这堂课的内容较为杂乱、复杂,但是学一学拓展一下知识是非常好的呀~~

如果觉得对你有帮助,辛苦友友点个赞哦~

知识来源:操作系统概念(黑宝书)、山东大学高晓程老师PPT及课上讲解。不要私下外传

相关文章
|
6月前
|
NoSQL 安全 Shell
操作系统(第二周 第二堂)
操作系统(第二周 第二堂)
|
6月前
|
Unix API
操作系统(第三周 第一堂)
操作系统(第三周 第一堂)
|
6月前
|
监控 NoSQL Unix
操作系统总结(第二周 第一堂)
操作系统总结(第二周 第一堂)
|
6月前
|
消息中间件 算法 调度
操作系统(第四周 第二堂)
操作系统(第四周 第二堂)
|
6月前
|
存储 程序员 调度
操作系统(第四周 第一堂)
操作系统(第四周 第一堂)
|
6月前
|
存储 缓存 前端开发
操作系统总结(第一周)
操作系统总结(第一周)
|
6月前
|
算法 调度
今年十八,期末速刷(操作系统篇1)
今年十八,期末速刷(操作系统篇1)
73 0
|
6月前
|
存储 算法 调度
【中级软件设计师】—(针对上午题)操作系统(三十)
【中级软件设计师】—(针对上午题)操作系统(三十)
聊聊身边的嵌入式,9块9包邮的电动牙刷是如何工作的?
聊聊身边的嵌入式,9块9包邮的电动牙刷是如何工作的?
|
Oracle 关系型数据库 Linux
操作系统的“冷板凳”要坐多久?万字长文解读16年开源老兵的坚持
想知道内核研发是怎样的体验?操作系统的“冷板凳”得坐多久才有春天?本文对话龙蜥社区理事长马涛,畅所欲言聊开源,一起来看看那些开源润物细无声背后的故事以及龙蜥社区运营的道法术。
操作系统的“冷板凳”要坐多久?万字长文解读16年开源老兵的坚持