导入
(冯诺依曼结构)
冯诺依曼结构是我们大部分计算机都遵守的结构体系,我们所认识的计算机都有一个个硬件组成:
. 输入单元:键盘,鼠标,扫描仪等
. 中央处理器(CPU):含有运算器和控制器
. 输出单元:显示器,打印机等
注:这里的存储器指的是内存
不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
一句话,所有设备都只能直接和内存打交道。
基于冯诺依曼这一基本结构,让我们详细了解计算机在处理数据和返回数据的具体过程吧!
1.操作系统(0S)
总:OS本质上是一种进行软硬件资源管理的计算机软件
宏观来说OS包括两大部分:
(1)内核:用于进程/线程管理,文件系统,内存管理,驱动管理;
(2)其他程序:shell,glibc,原生函数库等
下图是程序在用户与底层间运行的模块图,该图具象化了用户与底层间的联系:
目的:
从该图我们可以看出OS处于一个承上启下的位置,所以设计OS的目的是:
(1)OS对下进行资源管理,使其稳定,高效,安全的工作;
(2)OS对上给用户提供稳定,高效的运行环境
系统调用和库函数概念
在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分 由操作系统提供的接口,叫做系统调用。
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统 调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
注:向上提供的接口只能是C语言的接口,所有软件的底层都必须和C直接或间接有关
下来我们针对OS的进程管理做展开:
计算机是如何进行进程管理的呢?
1. 描述起来,用struct结构体
2. 组织起来,用链表或其他高效的数据结构
让我们通过下面讲述再次理解“先描述在组织”这一管理的本质与方法
2.进程
总:进程 = 内核数据结构(结构体task_struct) + 程序代码数据
内核:(担当分配系统资源(CPU时间,内存)的实体)
概念:一般而言正在执行的程序我们称为进程
图示文件的运行:
解释:
描述进程:
(1)进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
(2)课本上称之为PCB(process control block),Linux操作系统下的PCB是: task_struct
task_struct-PCB的一种
(1)在Linux中描述进程的结构体叫做task_struct。
(2)task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息</