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

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



回顾

前一篇文章的重点在于操作系统的结构,从简单结构到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及课上讲解。不要私下外传

相关文章
|
3月前
|
安全 数据安全/隐私保护 Windows
ZyperWin++使用教程!让Windows更丝滑!c盘飘红一键搞定!ZyperWin++解决系统优化、Office安装和系统激活
ZyperWin++是一款仅5MB的开源免费Windows优化工具,支持快速优化、自定义设置与垃圾清理,兼具系统加速、隐私保护、Office安装等功能,轻便无广告,小白也能轻松上手,是提升电脑性能的全能管家。
1028 0
|
人工智能 Cloud Native 安全
从云原生到 AI 原生,网关的发展趋势和最佳实践
本文整理自阿里云智能集团资深技术专家,云原生产品线中间件负责人谢吉宝(唐三)在云栖大会的精彩分享。讲师深入浅出的分享了软件架构演进过程中,网关所扮演的各类角色,AI 应用的流量新特征对软件架构和网关所提出的新诉求,以及基于阿里自身实践所带来的开源贡献和商业能力。
874 102
|
10月前
|
大数据 Java 数据处理
《大数据时代“快刀”:Flink实时数据处理框架优势全解析》
Flink是一款开源分布式流处理框架,在数字化浪潮中崭露头角。它具备真正实时的毫秒级响应、卓越的高吞吐与低延迟性能、强大的容错机制确保数据一致性、灵活的窗口操作适配多样业务场景、丰富的API易于开发,以及批流一体的数据处理能力。Flink在金融交易、电商、物联网等领域广泛应用,助力企业实时处理海量数据,抢占先机,创造更大价值。
578 15
|
10月前
|
前端开发 安全 Java
Manland:开源即生产力!避免90%新手踩坑!这套租房系统“房东/租客/管理三端”开源方案提升开发效率300%
今天介绍一款基于SpringBoot的房屋租赁系统——Manland,涵盖管理员、房东、租客三大角色,提供房屋管理、订单处理、权限控制等功能。采用MyBatis、Shiro、Thymeleaf等技术,确保系统高效安全。
328 0
|
SQL 缓存 网络协议
C++实现MySQL数据库连接池
为了提升MySQL数据库(基于C/S设计(客户端-服务器))的访问瓶颈,除了在服务器端增加缓冲服务器缓存常用的数据之外
760 0
|
Linux 编译器 C语言
深入理解Linux中的`as`命令:汇编器之旅
`as`命令是Linux下的GNU汇编器,用于将汇编语言源码(.s或.S)转化为机器码目标文件(.o)。它是GNU Binutils的一部分,在编译流程中扮演重要角色,尤其在底层编程和硬件交互时。基本用法是`as -o outputfile inputfile`。选项如`-g`添加调试信息,`-I`指定包含文件路径。通常与编译器如`gcc`配合使用,提供对计算机工作原理和操作系统底层的深入理解。学习汇编语言能增强编程和系统理解能力。
|
Android开发
aTimeLogger--时间追踪工具
aTimeLogger--时间追踪工具
245 0
|
SQL Java 数据库
5、Mybatis-Plus 常用注解
这篇文章详细介绍了Mybatis-Plus中常用的注解,包括解决实体类与数据库表名不一致、字段不匹配的问题,主键生成策略的配置,以及逻辑删除的实现方法。
5、Mybatis-Plus 常用注解
|
Ubuntu Linux 虚拟化
【Linux】ubuntu安装samba服务器
【Linux】ubuntu安装samba服务器
398 1
QGS
|
缓存 前端开发 安全
浅谈HttpServlet之重写doGet、doPost
200表示请求响应成功,正常结束。 404表示访问资源不存在。 405表示前端发送的请求方式与后端请求的处理方式不一致。
QGS
359 0

热门文章

最新文章