进程初识-操作系统发展史
程序: 应用软件,一堆代码文件
进程: 一个正在执行的程序/文件,抽象的概念
启动一个进程过程: 程序存在硬盘,磁盘中,双击(触发操作系统),操作系统将程序加载到内存,交给cpu来处理
来一个任务,先给操作系统,然后操作系统给cpu,cpu做这个任务才是一个进程
进程源于操作系统
操作系统
定义:操作系统就是一个软件,管理,协调,控制计算机硬件与软件之间的控制软件
作用:
1.将一些丑陋的与硬件的接口变成了漂亮的美丽的接口
2.出现同一时刻多个进程共同去抢占一个cpu资源的情况时,操作系统要合理有序的去安排不同进程的执行顺序问题
操作系统与软件的区别:
操作系统与用户程序的差异并不在于二者所处的地位 操作系统是一个大型的,特别的,长寿的软件
操作系统发展史
第一代计算机
二战期间哈佛大学创建第一台电子计算机 没有操作系统的概念,直接操作计算机硬件
工作流程:程序员拿着插件版(后期更新为穿孔技术),预约时间去计算机房研究
优点:一个程序员可以独享一个计算机
缺点:
1.浪费计算机资源,一个时间段内只有一个人能使用计算机
2.所有的程序都是串行的(一个一个按照顺序执行),效率低
第二代计算机
分为三个部分,两个机器
工作流程:程序员按照顺序将字节的穿孔卡片给第一个机器,转化成磁带,再交由第二个机器运行处结果,最终交由第一个机器打印出结果
优点:批处理,节省了计算机的时间
缺点:
1.效率低,中间传输还需要人员参与
2.所有程序还是串行处理
3.每个人不能独享计算机了,出现bug不能及时修复
第三代计算机
集成电路 多道程序技术
多道技术:
空间上的复用:内存可以加载很多个不同的任务
时间上的复用:可以同时处理多个进程,遇到IO阻塞就交换
初期还有缺陷:
1.内存级别各种进程间的数据没有进行物理隔离
2.没有达到个人独享的效果
后期出现分时系统,对内存级别的数据进行物理隔离,又出现的unix分账户概念,让人们认为自己在独享电脑
概念
串行: cpu将一些进程一个接一个的执行(之前所接触的代码都是串行)
并发: 一个cpu执行多个任务,看起来像是同时执行的
并行: 真正意义上的一对一服务
阻塞: 只有IO才能称为阻塞
非阻塞: 进程没有IO就是非阻塞
进程创建: 双击程序或者运行一个py文件,就是开启一个进程
开启多个进程:
发起一个命令,在主进程(父进程)的代码里面,通过导入模块或者执行一些操作,通过操作系统再开启一个子进程,把代码放进父进程中,这样就开启了两个进程
linux(unix,macos)和windows
开启进程的命令不同:
linux(unix,macos):fork
windows:CreatProcess
开启进程内部方式稍有不同:
linux(unix,macos):会将主进程的所有数据复制一份,放到进程空间中
windows:除了完全复制一份之外,还会在子进程空间创建一些额外的数据
进程的状态:
进程并发的实现:
进程遇到IO阻塞或者长时间运行,操作系统会将进程挂起,为此,操作系统维护一张表格,即进程表(process table),每个进程占用一个进程表项(这些表项也称为进程控制块)
该表存放了进程状态的重要信息:程序计数器、堆栈指针、内存分配状况、所有打开文件的状态、帐号和调度信息,以及其他在进程由运行态转为就绪态或阻塞态时,必须保存的信息,从而保证该进程在再次启动时,就像从未被中断过一样。