1.冯诺依曼体系结构
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系结构
截至目前为止,我们所认识的计算机,都是由一个个硬件组件组成的:
- 输入单元:包括键盘, 鼠标,扫描仪, 写板等
- 中央处理器(CPU):含有运算器和控制器等
- 输出单元:显示器,打印机等
关于冯诺依曼,必须强调几点:
- 这里存储器指的是内存
- 不考虑缓存情况,CPU只能对内存进行读写,不能访问外设(输入与输出设备)
- 外设要输入或输出数据,也只能通过内存进行写入与读取
- 所有设备都只能和内存打交道
- 任何程序运行的时候,都先从(磁盘)加载到内存中;(代码->可执行程序->运行->内存)
数据在计算机内进行传输,从一个设备到另一个设备,本质上就是数据的拷贝,所以拷贝的效率决定计算机的整体效率;
当进行运算数据的时候,CPU直接从内存中进行读取,大大减少了数据直接从输入设备传入CPU的传输时间,如果没有了存储器,直接从输入设备传给CPU,而CPU的计算速度极快,运算效率远大于输入设备的传入效率,根据木桶定律,这样计算机的整体效率就会取决于数据的传输效率,这样速度就太慢了,所以当有存储器的出现,这里存储器(内存)就相当于巨大缓存区,数据都加载入缓存区,大大减少了数据直接传输给CPU的时间,大大提高了效率,这就是冯诺伊曼体系结构的优秀之处,伟大的发明。
2.操作系统(Operator System)
概念:任何计算机都包含一个基本的程序集合,称为操作系统(OS),操作系统包括:
- 内核(进程管理,文件管理,内存管理,驱动管理)
- 其他程序(例如数据库,shell程序等)
设计OS的目的:
- 与硬件交互,管理所有的软硬件资源
- 为用户程序(应用程序)提供一个稳定的,高效的,安全的运行环境
定位:
- 一款纯正的“搞管理”的软件
如何理解管理:
- 管理的例子
- 描述被管理的对象
- 组织被管理的对象
- 就是先描述再组织
操作系统对下进行硬件的管理,对上给用户提供各种所需的接口,对用户化繁为简。
操作系统如何对下进行硬件管理呢?
操作系统不能直接进行控制硬件设备,需要通过驱动程序来管理对应的底层硬件,那么如何通过驱动程序来管理的呢?其实就是依靠内存中的数据结构来进行管理,如下图:
定义一个struct结构体,代表一个设备,通过链表来进行链接起来,这样就可以很好的管理,就是对硬件的增加与减少相当于对链表的增删查改。就是先描述再组织。
总结:
- 描述起来,用struct结构体
- 组织起来,用链表或者更高效数据结构
系统调用和库函数概念:
- 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分 由操作系统提供的接口,叫做系统调用。
- 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统 调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
3.进程的概念
进程管理---先描述再组织(先把进程描述起来,再把进程组织起来)。
基本概念:
- 课本概念:程序的一个执行实例,一个正在执行的程序等;
- 内核观点:担当分配系统资源(CPU时间,内存)的实体;
描述进程PCB:
- 进程的信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合
- 这种数据结构被称为PCB,linux下PCB为:task_struct
Linux下task_struct被称作描述进程的数据结构。
如:
操作系统如何进行进程管理呢?
一个程序运行时,从磁盘中被拷贝进内存,同时在内存中形成负责管理该程序的task_struct结构体把进程属性数据进行集合在结构体中,当有多个运行程序时,就会分别形成对应的task_struct结构体,然后这些结构体通过高效的数据结构根据优先级进行链接起来,然后这些结构体就被很好并且有序的管理起来,然后进入缓冲队列依次被CPU处理。如下图所示:
进程=内核数据结构(task_struct)+程序的代码和数据
运行起来的程序-->会根据task_struct属性被OS调度器调度,运行
为什么会有PCB?因为OS要管理进程,先描述,后组织
标签:基本,struct,管理,内存,进程,CPU,操作系统 From: https://blog.csdn.net/2302_80652761/article/details/142568905