冯 诺依曼体系结构
计算机体系就是由上面的硬件构成
不同计算机之间交互就是通过上述体系来实现的
中央处理器(CPU)只能对存储器(内存)上的进行读写,不能直接访问输入设备
操作系统
操作系统是什么?
是一款对计算机软硬件进行管理的软件
为什么需要操作系统?
1、管理好软硬件资源
2、为用户提供良好的运行环境
操作系统是如何做的?
因为操作系统不相信用户,为了保证数据的安全和为用户提供服务,操作系统以接口的方式给用户提供调用入口,来获取操作系统内部数据
接口是C语言实现的内部调用,也就是系统调用
操作系统内部的行为都是用系统调用实现的
操作系统是如何进行管理的
1、管理者跟被管理的人不需要见面
2、管理的本质是对数据进行管理
3、通过执行者拿去被管理者的数据
在操作系统中对任何对象的管理就可以转换为对数据结构的增删查改
这种方式就是先描述,再组织
进程
一个加载到内存中的程序叫做进程
进程=内核PCB数据结构对象(描述进程所有属性值)+数据和代码
在操作系统中可以运行多个进程,需要操作系统对每个进程进行管理
也就是对进程PCB数据结构对象,先描述,在组织
Linux是如何做的?
PCB:task_struct结构体里面包含进程的所有属性
Linux中用双链表形式组织task_struct
fork
一个函数为什么有两个返回值?
fork创建子进程,相当于两个进程在跑
为什么子进程返回0,父进程返回子进程pid?
区分不同的执行流,执行不同的代码块
fork做了什么?
fork之后,父子进程代码共享,但是父子进程数据可能会修改,所以不能共享
创建子进程就是为了执行不一样的代码,通过不同返回值来实现
僵尸进程
进程退出,父进程没有回收,子进程就会处于Z状态,相关资源就不会释放,造成资源泄漏问题
孤儿进程
父进程先退出,子进程就会变成孤儿进程
子进程会被1号进程(操作系统)领养
优先级
资源有限,进程是多个的,注定进程之间存在竞争关系
操作系统为了进程间良性竞争——确认优先级
并发
多个进程在一个CPU下采用进程切换的方式,一段时间内,让多个进程得以推进
进程切换
1、保存进程上下文
2、回复进程上下文
在寄存器中保存进程临时上下文