前言
接下来我们进入进程的学习。但是在学习之前,我们可以问一下自己几个问题,这是我们学习进程前必须储备的知识,这里博主的知识也是围绕这几个知识点展开来说的。
- 什么是冯诺依曼体系结构?
- 怎么描述QQ好友间收发信息?
- 什么是操作系统?
- 为什么要有操作系统OS?
- 怎么描述计算机体系结构?
- 什么是进程?
这些问题是本篇博客的主要内容,学完这篇博客的知识点,我们就会对于OS和进程有了一定的了解方便我们接下来的学习。
1.冯诺依曼体系结构
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。
看着上面的图片,我们来回答第一个问题, 什么是冯诺依曼体系结构?
答:冯·诺依曼体系结构的主要思想是将计算机的运算器、控制器、存储器和输入/输出设备等核心部件分离,并通过一个共享的存储器进行数据和指令的传输。
接着我们来思考一下,不考虑网络的传输过程,计算机程序QQ是如何进行收发信息的,来回答第二个问题。换句话形容,就是利用冯诺依曼体系结构来描述一下QQ收发信息过程中的数据流动过程?
这样就可以直接来描述,我们通过键盘输入我们要打的内容,然后通过存储器发送给CPU进行数据处理然后通过网卡发送到目的设备的网卡,目的设备的网卡作为新的输入设备,发送给存储器,存储器将数据传递给CPU进行数据处理,最后输出到我们的显示器上面,我们就看到了朋友发的信息。通过这个例子我们更加理解我们的计算机采用的冯诺依曼体系结构是怎么使用的在我们的日常生活中。
2.操作系统的概念和定位
操作系统的概念:任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。
操作系统主要包括
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
操作系统的定位是:一个对计算机软硬件进行管理的软件。这个回答同时也是我们的第三个问题的答案,什么是操作系统。
我们引入了管理的概念,管理是什么意思呢?是直接处理的意思吗?这里不全是嗷,这里的管理主要是先描述在组织,怎么理解这句话呢?
例如我们公司,有老板,经理和员工,老板就是操作系统的角色,经理就是驱动程序来组织员工开展工作,员工就是被管理的对象,类比于计算机中的软硬件。
接下来回答第四个问题为什么会有OS?
- 方便用户使用
- 对上给用户,开发人员,各种使用者一个良好的运行环境
- 对下管理好相关的软硬件资源
3.计算机体系结构
计算机体系结构是一种层状结构,任何访问软硬件的行为,必须通过OS接口,贯穿OS进行访问数据操作。
直接原因是:OS不信任任何用户!!!
举个栗子:
我们去银行取钱,我们再ATM机上选择自己的操作,然后执行相关的操作,而不是直接就能把钱拿走,供大家随便取用,这样是不安全的。这就引入一下计算机的体系结构。上面便回答了第五个问题的答案。
3.进程PCB
到了进程这个概念的时候,我们开始思考一个问题OS能不能跑起来多个程序呢?
答案当然是肯定的且必须可以,那跑起来那么多的程序,那他是怎么管理的呢?
提到管理我们又想起来了我们介绍操作系统的时候,介绍了管理这个词的概念。先描述再组织,那我们怎么描述进程,进程就是把代码和数据放在CPU中执行,怎么控制呢?这里就要介绍一下PCB了,
顾名思义,就是对进程的控制块,里面全是进程相关的属性信息。
所以我们来回答最后一个问题
什么是进程?
进程就是我们的程序代码和数据机上内核神奇的控制程序的数据结构PCB,就是我们的进程啦。
4.创建进程以及进程的状态
我们在Linux环境简单写一段循环语句,来查看一下我们的进程信息。
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
while(1)
{
printf("my proc:%d\n",getpid());
printf("my father proc:%d\n",getppid());
sleep(1);
}
return 0;
}
建立一个Makefile文件来方便调试
test2:test2.c
gcc -o $@ $^
.PHONY:clean
clean:
rm -f test2
到这里,进程相关的概念就介绍完了,我们接下来进入更加深入的学习......