冯诺依曼体系结构
冯诺依曼体系结构

1.输入设备:键盘,磁盘(外设,读取文件(没读的时候就在磁盘)),网卡,显卡,话筒,摄像头(效率是s,ms级别) 2.输出设备:显示器,打印机,磁盘(写文件,就是把数据写到磁盘上),网卡,显卡,音箱等 3.存储器(内存):离cpu越近的设备存储效率越高也越贵,有了内存,cpu就不用直接和外设打交道,存储器的快慢决定快慢(内存是体系结构的核心设备) 4.运算器&&控制器(CPU):运算器(算术运算与逻辑运算) 控制器(读取指令,分析指令,执行指令)(效率ns级别)
如 a和b通过qq发消息 
任何的外设,在数据层面,基本都是有限和内存打交道!, cpu,在数据层面上,也直接和内存打交道
操作系统
启动的(将软件数据与代码,加载到内存中)操作系统,才有意义
是什么
OS 是一款软件,专门针对软硬件资源进行管理工作的软件 (核心工作就是做管理的)
为什么
对下:管理好软硬件资源。对上:给用户提供稳定高效安全的运行环境 方式 目的
怎么办
核心在管理,管理是对人的属性数据进行管理,描述属性结合的就是结构体,里面就有被管理者的全部数据,再加个联系指针连接起来(链表,哈希,树等),对学生的管理就变成了对链表的管理,对学生的褒奖工作就变成了对链表的增删查改
本质(先描述再组织)
管理理念:先描述,再组织, 可以转化成对目标的管理, 转化成对数据的管理

进程(软件)
加载到内存的程序就叫做进程 系统中可能存在大量的进程,操作系统要管理进程 如何管理进程?
先描述,再组织 任何进程在形成的时候,操作系统要为该进程创建PCB,进程控制块( 先描述,struct PCB 里面就是进程的所有属性,结构体描述),
PCB
OS 上面,PCB 进程控制块,就是一个结构体类型 在Linux系统中,PCB ->struct task_struct{ //进程的所有属性 }
类比shell和bash的关系 类比媒婆和王婆的关系
如
我们所有启动的程序的过程都是在系统上面创建进程
  把程序运行起来,就是把程序加载到内存,就是把程序由磁盘加载到内存中变成一个进程 进程的属性 程序运行结束进程就结束了 
进程vs程序
 
有了进程控制块,所有进程管理任务与进程对于的程序毫无关系!!! 与进程对应的内核创建的进程的 PCB 强相关
进程=程序+操作系统维护进程的相关数据结构(更多的数据结构)(进程控制块)
PCB的内部构成
 
结束进程 kill -9 pid  
- ppid:获得其父的pid(在命令行上运行的命令,基本上其父进程都是-bash)

-
状态:任务状态,退出代码,退出信号等。 0 输出离他最近执行命令的退出码  -
优先级:相对于其他进程的优先级,CPU 只有1个,进程有非常多个,确认先后的问题, -
程序计数器:程序中即将被执行的下一条指令的地址 -
内存指针:可以通过PCB 找到对应的代码和数据 -
IO状态信息:进程可能要进行的IO,(从输入设备读入)(输出设备读出),进程在进行IO, -
记账信息:进程被os调度器调度的信息(os为了较为均衡的调用每个进程(获得cpu的资源(进程被执行))),有处理器时间总和,使用的时间限制,记帐号 -
上下文数据:(进程执行时处理器的寄存器中的数据)寄存器(当前正在运行的进程的临时数据) 时间片(单次运行每个进程的最大时间10ms,没跑完,排到最后等待继续运行),在cpu情况下,用户感受到多个进程都在运行(靠cpu快速切换完成的),进程在运行期间是由切换的,进程可能存在大量的临时数据----》暂时在cpu的寄存器中保存,
保护上下文 恢复上下文 虽然寄存器硬件只有一份,但是寄存器里面的数据是你这个进程的,走的时候,把寄存器里面的数据返回pcb里面,进入下一个进程,等待下一次使用,再进入时,再把之前的临时数据放回cpu
通过上下文的保护和恢复,我们可以感受到进程被切换的
查看进程的方案
ls /proc   exe就是当前执行的文件路径 cwd就是当前工作路径

|