1.硬件:冯诺依曼体系结构:
单个分析:、
数据流向:数据必须先进入输入设备,再到存储器,然后由存储器给控制器,控制器收到以后进行相应的处理后,再传回存储器,存储器最终传给输出设备!
存储效率:一般情况下在存储的生态中,距离cpu越远的设备,它所对应的容量会越来越大,效率会越来越低!
存储器是冯诺依曼体系结构中的核心地位
问题:1.一个程序要运行,必须要先加载到内存中运行?为什么?
答:正是因为冯诺依曼体系结构规定!(所有软件设计都必须遵守硬件结构。硬件是计算机的底线和边界)
2.为什么写的进度条,默认显示的数据,是可能会缓存起来的?在哪里缓存?
答:缓存在内存,遵守了体系结构,缓存是正常的。
2.软件:操作系统:
操作系统是一款进行管理的软件!它管理着硬件和软件
问题:· 操作系统为什么管理?
计算机是一个层状结构,所有硬件要和软件配合的使用,要存在对应的驱动程序!
操作系统要帮助用户,管理好西面的软硬件资源!
给用户提供一个稳定、高效、安全的运行环境。
所以核心作用:操作系统通过管理好底层的软硬件资源(手段),为用户提供一个良好的执行环境(目的)
· 操作系统是什么?
作为一名用户平时用的都是程序员开发的客户端,并不是操作系统。但是用户并不可以直接绕过操作系统去使用其他app客户端。
操作系统里面,会有各种数据。可是,操作系统不相信任何的用户!因此操作系统为了保证自己的数据安全,也为了保证给用户能够提供服务,操作系统以接口的方式给用户提供调用的入口。来获取操作系统内部的数据。
这里提到的接口,其实就是操作系统提供的用“c语言”实现的,自己内部函数调用---系统调用!所有访问操作系统的行为,都只能通过系统调用完成!这种接口实现就叫系统编程!
·操作系统如何管理好软硬件资源?
先描述再组织!!!
3.进程:
一个已经加载到内存的程序就叫做进程(任务)--也可以说是正在运行的程序叫做进程。
下图可以看得出来,一个操作系统,不仅仅只能运行一个进程,可以同时运行多个进程。
这里的属性值:是进程编号、进程状态、优先级、相关指针信息....
各个pcb之间的连接用指针进行穿行的连接起来,所以可以形成一个单链表。一个进程如果是先后的,它在系统中进行排队是进程的PCB再进行排队,等排到了,PCB会调出相应的数据和代码。
Linux操作系统下的PCB是:task_struct
task_struct 内容分类
- 标识符:描述本进程的唯一标识符,用来区别其他进程。
- 状态:任务状态,退出代码,退出信号等。
- 优先级:相对于其他进程的优先级。
- 程序计数器:程序中即将被执行的下一条指令的地址。
- 内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针。
- 上下文数据:进程执行时处理器的寄存器中的数据 [休学例子,要加图 CPU,寄存器]。
- I/O 状态信息:包括显示的 I/O 请求,分配给进程的 I/O 设备和被进程使用的文件列表。
- 记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
- 其他信息
在Linux当中:用指令ls /proc可以看见会有很多的蓝色文件,这些都为目录,基本都是数字命名,这些数字其实就是属性里面的PID(标识符),这中目录里面包含着进程的基本所有属性
知识点:进程和线程的区别?
进程是程序执行活动,是资源分配和调度基本单位,有独立资源,调度开销大,多个进程可并发或并行执行。线程是进程内执行单元,是CPU调度基本单位,共享进程资源,调度开销小,同一进程的多个线程能并发或并行执行,协作更高效。
(未完结)