操作系统之进程(一)

一.一图分析操作系统

我们知道操作系统是对电脑的管理系统,那么其管理的是什么呢?

在这里,我们明确的告诉大家,真正的管理是对数据的管理,所以,操作系统本质上就是对系统软硬件数据的管理

观察上图,请问为啥要有操作系统,管理数据人不也可以做到吗?

首先,你要先明白这个问题是在问什么,题目其实在问:为啥要有操作系统来管理数据?

答案非常简单,因为我们人管理数据的效率低,而计算机效率则非常快

如果你仔细观察上图,你会发现用户是不能直接访问操作系统的,而是通过访问到system call来访问到操作系统,所以为啥用户就不能访问操作系统呢?

如果我们用户就可以直接访问操作系统,是不是就可以实现窃取他人信息了,如果你不理解,想象一下银行取钱:是不是通过窗口实现的,而不是直接用户去直接拿钱。操作系统不能直接访问也是一样的,保障用户信息安全,通过system call接口用户就只能访问到自己的信息了

补充:LInux中system call是通过C语言实现的函数调用接口!!!

所以,总的理解,操作系统是唯一连接上面用户操作和下面驱动程序、硬件的地方,用户可以通过直接system call来调用操作系统,也可以通过用户操作窗口来调用system call再调用操作系统,而硬件是通过相应的驱动程序来调用的

二.再次理解C语言的scanf、printf

当我们使用scanf输入时:在键盘上输入内容,就能向电脑输入信息,那么我们知道键盘是硬件,为啥我们可以用scanf来控制硬件呢?不符合我们上面讲的规则啊?不是说用户只能通过system call通过用户操作窗口来调用system call再调用操作系统吗?

如果你仔细观察,会发现在用户操作窗口中有一个lib,这其实是我们的标准库,当我们使用scanf时,就会调用标准库中scanf接口,而在该接口中有调用system call指令,所以我们调用了操作系统,从而控制硬件输入。

再仔细一想,我们平时写的那么多标准库中的接口是不是都是封装了system call调用的指令呢?

是的,在lib库中封装了system call相关的指令

此时相信你也大概能够理解什么是语言的跨平台性了?

语言的跨平台性,也叫可移植性,其实就是用户通过lib库调用不同的操作系统

如下图:

三.进程介绍

我们之前已经讲过了简单的操作系统,也讲了冯洛伊曼体系,现在就可以简单了解进程了。

如果你看过类似对进程的描述:

1.进程是指加载到内存的程序

2.进程是指正在运行的程序

我相信你如果不清楚进程的内容,可能对此会非常不解,那么该如何表述进程的概念呢?look down:

我们通过实例来带大家了解进程:

假如现在我的电脑要运行a.exe文件,首先会从磁盘中读取该文件到内存中,然后就会通过CPU处理得出结果输出,如下图:

是不是感觉就是这样子的?

如果我们有a.exe ,b.exe,c.exe三个文件读入内存中,我想问CPU会先处理那个文件呢?

这时候,你可能会说谁先进先处理谁,但是我咋知道在内存中那个是先进来的呢?

是不是就需要在内存中对文件有一些备注信息,通过备注信息就可以实现处理顺序了,是的,下面给大家介绍PCB这个概念:

PCB:进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合,该集合叫PCB,注意:PCB是统称,不同操作系统的实际名字是不一样的,例如:Linux中叫:task_struct
 

大家仔细观察会发现,PCB其实就是一个结构体,里面包含了如状态、优先级、内存指针等信息,现在我们的操作系统就可以通过管理PCB来管理多个文件程序了,这其实就是进程。

进程=PCB+可执行程序

PCB只是内核数据结构的一部分,更正确的说:进程=内核数据结构+可执行程序

重点知识:操作系统对进程的管理是对PCB的管理,不是对可执行程序的管理!!!

下面带大家看看task_struct内部内容:
标示符: 描述本进程的唯一标示符,用来区别其他进程。
状态: 任务状态,退出代码,退出信号等。
优先级: 相对于其他进程的优先级。
程序计数器: 程序中即将被执行的下一条指令的地址。
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
其他信息

 

后面我的博客会深入讲解,大家可以先看看即可。

四.CPU的操作

CPU通常只有三个操作:

取指令:CPU会按行一行一行的取出程序的内容,这就是取指令

分析指令:分析指令中的具体内容

执行指令:将指令内容进行执行操作

扩展知识:

pc指针:PC(program counter)是CPU中用于存放下一条指令地址的寄存器,SP为堆栈指针

当CPU执行到程序中的判断、循环或者函数跳转语句的时候,pc指针会提前保存接下来要跳转的地址,接下来程序执行到哪就取决于pc指针

判断、循环或者函数跳转语句本质上就是修改pc指针

最后,感谢大家的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiaofi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值