目录
秃头侠们好呀,今天来说 操作系统进程概念
冯诺依曼体系结构
我们常见的计算机,笔记本、服务器等,大多遵守冯诺依曼体系结构。
目前,我们认识的计算机都是由一个个硬件组成的。
- 输入单元:键盘、鼠标。
- 中央处理器cpu:包括运算器和控制器。
- 输出单元:显示器、打印机。
- 存储器:内存
我们不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备),外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。所有设备都只能直接和内存打交道。
内存是体系结构的核心设备!
输入设备和输出设备的读写速度是以毫秒、秒为单位,cpu是以纳秒为单位,如果cpu直接和输入输出设备打交道,他俩的速度差别极大,cpu早都干完活了,你的东西还没送来,而内存的速度在这之间,就很好的起到了连接作用。
所以有了内存,cpu就不用再和外设打交道了!
⭐举个例子从我们登录QQ开始,给某人发送消息,到那个人接收到消息,整个过程是怎样的?
任何外设,在数据层面,基本优先和内存打交道;
cpu,在数据层面也是直接和内存打交道。
操作系统需要启动起来才有意义,就像你想发送消息,你起码得打开QQ,接收消息的人也得打开QQ。启动操作系统,就可以将软件数据与代码加载到内存中了。
总结一下:
冯诺依曼体系结构计算机的基本原理是什么?
答:存储程序+程序控制!计算机就是为了完成指定数据处理,而通过指令按指定流程完成指定功能,指令的合集就是一段程序。
操作系统OS
概念
OS是什么?
:一款专门针对软硬件资源进行管理工作的软件!
任何计算机系统都包含一个基本的程序集合,称为操作系统OS。
简单理解,操作系统包括:
1、内核(进程管理、内存管理、文件管理、驱动管理)。
2、其他程序(函数库、shell程序等)。
为什么要有OS
通过,与硬件交互,管理所有的软硬件资源的方式,为用户程序(应用程序)提供一个稳定的、高效的、安全的良好执行环境。
OS的定位
在整个计算机软硬件架构中,操作系统的定位是:一款纯种的“搞管理”的软件!
如何理解管理
举例:
校长是管理者,学生是被管理者,老师是执行者。
校长并不和我们直接打交道,他只负责做决策,做决策要有依据,依据就是我们学生的属性信息数据,校长把决策告诉老师,让老师去执行,老师把决策告知学生。
那么站在校长的角度,怎么知道一个同学的信息呢?他肯定有这个学生的信息档案,档案上有这个学生的姓名、学号、电话、地址、事迹等等信息。
这个档案是不是就像一个结构体。
那有了一个学生的信息,全校几万学生,怎么让他们之间关联起来,是不是就像我们使用一个双向循环链表一样,将结构体结点关联起来。
所以怎么管理?
对目标的管理转换成对数据的管理,每个数据要先描述(使用一个结构体),
再组织起来每个数据对象(使用特性的数据结构)。
最后,对学生的管理工作,变成了对数据结构的增删查改!
那进程怎么管理?
同样:⭐先描述,再组织!
描述进程的结构体称为PCB(process control block)进程控制块!
为什么要有PCB?
因为管理需要先描述、再组织,而描述得用结构体,PCB就是一个结构体,来描述对象,描述进程相关属性信息!
系统调用和库函数概念
现在我们已经知道:
操作系统对下要管理好软硬件资源,对上要为用户提供良好的运行环境,为程序员也得提供各种基本功能。
那么如何提供?
答:OS是不相信任何用户的,在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。但是OS提供的系统调用接口较为复杂,所以大佬对部分系统调用进行适度封装,从而形成库,有了库,就便于更上层用户或者开发者进行二次开发。
- 系统调用把应用程序的请求传输给系统内核执行
- 系统调用函数的执行过程应该在用户端
- 利用系统调用能得到OS提供的多种服务
- 系统调用是OS提供给编程人员的接口
- 系统调用给用户屏蔽了设备访问的细节
- 系统调用保护了一些只能在内核模式执行的操作指令
- read是系统调用,不是库函数,库函数是用户对系统调用接口的进一步封装
进程!
概念
课本上说:加载到内存的程序,叫做进程。
内核的观点是:担当分配系统资源(cpu时间、内存)的实体。
如果管理进程:先描述、再组织!
PCB
OS层面,PCB是进程控制块,语言层面,PCB就是个结构体。
任何进程在形成之时,OS要为该进程创建PCB(进程控制块),进程信息就放在这里面,就是进程属性的集合。它会被装载到RAM(内存)里。
Linux下的PCB是:task_struct
。
为什么要有PCB前面已经说了。
ps axj | grep xxx
ps axj | head -1 && ps axj | grep xxx
看一下进程
曾经我们启动一个程序的过程,本质都是在系统上创建进程!
进程VS数据
程序是什么?
:程序就是你的.exe可执行程序文件,这个文件要加载到内存上,操作系统要创建PCB,task_struct去管理这个文件。
进程=程序(代码、数据)+相关的数据结构(PCB)!
task_struct包含了进程内部的所有属性信息!
- 程序是静态概念
- 进程是程序在处理机上一次执行的过程,是动态概念,一个程序可以作为多个进程的运行程序。
- 一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位
- 作业是用户需要计算机完成的某种任务,是要求计算机所做工作的集合,一个作业可由多个进程组成,且必须至少由一个进程组成。
- 系统感知进程的唯一实体是:进程控制块PCB