目录linux
1.程序程序员
一堆静态的代码文件编程
2.进程windows
一个正在运行的程序并发
由操做系统操控调用交由cpu运行 ,被cpu运行函数
1。管理控制协调计算机中硬件与软件的关系操作系统
2。操做系统的做用?unix
2.没有操做系统:大家在开发软件调试
第一层。对硬件(cpu,内存,磁盘)协调,调用blog
第二层 如何调用接口去编程
第一个做用:将一些对硬件操做的复杂丑陋的接口, 变成简单美丽的接口,open函数
第二个做用:多个进程抢占一个(cpu)资源时,操 做系统会将你的执行变得合理有序,雨露均沾(比较 快感觉不到)
阻塞:input read write sleep recv accept sendto recvfrom 。。。
百万级代码 写的系统
最先出现的计算机:算盘
电子类的计算机发展史
第一代计算机1940~1955(手工操做----穿孔卡片)
在大学里出现了机房,想使用计算机必须预定
先链接调配各个硬件,1.5小时,真空管,而后在插上程序调试,效率低
优势:我的独享整个计算机资源
缺点;1.硬件条件插线,耗时
2.全部人串行执行
优势程序员不用亲自对硬件进行插线操控,效率提升
能够进行批量处理代码
缺点:
1.程序员不能肚子使用计算机
2.你的全部程序仍是串行
1.集成电路:把所用的硬件变小,线路板
2.将两套不一样的生产线合并成一个生产线
技术上的更新:多道技术,操做系统的理念
空间上的复用
将一个内存能够同时加载多个进程
时间上的复用
实现将cpu在多个进程之间来回切换,而且保留状态,在切回来还能保持原样
几乎全部的程序都会有io阻塞
同时加载到内存 3个任务,3个进程,每一个进程都有阻塞状况,只要cpu运行一个进程时,遇到阻塞立马会切换,长时间占用cpu也会切换
提高效率,最大限度的使用cpu
若是是一个IO(阻塞)密集型进程,来回切换提高效率
若是在一个计算密集型,耗时来会切换下降效率
第三代计算机 普遍采用必须的保护硬件(程序之间的内存彼此隔离)以后,推进第三代计算机应用而生
每一个人占用计算机的时间有限的
多人(少于10个)共同使用一个计算机主机
第四代计算机:至今
面向字:大型的科学计算机
面向字符:商用计算机
串行:全部的任务一个一个完成
并发:一个cpu完成多个任务,看起来是同时完成的
并行:多个cpu执行多个任务,真正的同时完成
阻塞:cpu遇到io就是阻塞
非阻塞:没有IO叫非阻塞
程序:一堆静态文件
一个正在执行的程序任务,一个进程
一个程序可否同时开启多个进程?能够
一个子进程必须基于主进程
主进程是启动子进程的
一个主进程能够开启多个子进程。
unix:fork建立子进程
uninx(linux,mac):建立一个子进程会完彻底全复制一个主进程全部的资源,初始资源不变。
windows:操做系统调用CreateProcess处理进程的建立
windows:建立一个子进程,会copy主进程全部的资源,可是会改变一些资源
系统是最主进程
运行程序运行到io进行阻塞 程序进入阻塞状态
阻塞结束进入就绪态 须要在就绪态等待开始运行 等程序遇到io阻塞再进行运行